androidboss 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +63 -2
- package/dist/THIRD-PARTY-LICENSES.txt +786 -0
- package/dist/androidboss.mjs +245 -0
- package/package.json +49 -4
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
|
|
3
|
+
var __defProp=Object.defineProperty;var __export=(target,all)=>{for(var name2 in all)__defProp(target,name2,{get:all[name2],enumerable:!0})};import{readFileSync}from"node:fs";var __create=Object.create,__defProp2=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__commonJSMin=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports),__exportAll=(all,symbols)=>{let target={};for(var name2 in all)__defProp2(target,name2,{get:all[name2],enumerable:!0});return symbols&&__defProp2(target,Symbol.toStringTag,{value:"Module"}),target},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(var keys=__getOwnPropNames(from),i=0,n2=keys.length,key;i<n2;i++)key=keys[i],!__hasOwnProp.call(to,key)&&key!==except&&__defProp2(to,key,{get:(k=>from[k]).bind(null,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp2(target,"default",{value:mod,enumerable:!0}):target,mod));var DRAFT_2020_12_URIS=new Set(["https://json-schema.org/draft/2020-12/schema","http://json-schema.org/draft/2020-12/schema"]),DRAFT_2019_09_URIS=new Set(["https://json-schema.org/draft/2019-09/schema","http://json-schema.org/draft/2019-09/schema"]),DRAFT_07_URIS=new Set(["https://json-schema.org/draft-07/schema","http://json-schema.org/draft-07/schema"]),DRAFT_06_URIS=new Set(["https://json-schema.org/draft-06/schema","http://json-schema.org/draft-06/schema"]);function declares2019Dialect($schema){return typeof $schema=="string"&&DRAFT_2019_09_URIS.has($schema.replace(/#$/,""))}function declaredDialect(schema,remedy){if(!("$schema"in schema)||typeof schema.$schema!="string")return"2020-12";let declared=schema.$schema.replace(/#$/,"");if(DRAFT_2020_12_URIS.has(declared))return"2020-12";if(DRAFT_2019_09_URIS.has(declared))return"2019-09";if(DRAFT_07_URIS.has(declared)||DRAFT_06_URIS.has(declared))return"draft-7";throw new Error(`JSON Schema declares an unsupported dialect ("$schema": "${schema.$schema.slice(0,200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${remedy}`)}var util_exports={};__export(util_exports,{BIGINT_FORMAT_RANGES:()=>BIGINT_FORMAT_RANGES,CONSTANT_CATCH:()=>CONSTANT_CATCH,Class:()=>Class,NUMBER_FORMAT_RANGES:()=>NUMBER_FORMAT_RANGES,aborted:()=>aborted,allowsEval:()=>allowsEval,assert:()=>assert,assertEqual:()=>assertEqual,assertIs:()=>assertIs,assertNever:()=>assertNever,assertNotEqual:()=>assertNotEqual,assignProp:()=>assignProp,attachSchema:()=>attachSchema,base64ToUint8Array:()=>base64ToUint8Array,base64urlToUint8Array:()=>base64urlToUint8Array,cached:()=>cached,captureStackTrace:()=>captureStackTrace,cleanEnum:()=>cleanEnum,cleanRegex:()=>cleanRegex,clone:()=>clone,cloneDef:()=>cloneDef,codePointLength:()=>codePointLength,constantCatch:()=>constantCatch,createTransparentProxy:()=>createTransparentProxy,defineLazy:()=>defineLazy,defineLazyInternal:()=>defineLazyInternal,derived:()=>derived,esc:()=>esc,escapeRegex:()=>escapeRegex,explicitlyAborted:()=>explicitlyAborted,extend:()=>extend,finalizeIssue:()=>finalizeIssue,floatSafeRemainder:()=>floatSafeRemainder,getElementAtPath:()=>getElementAtPath,getEnumValues:()=>getEnumValues,getLengthableOrigin:()=>getLengthableOrigin,getParsedType:()=>getParsedType,getSizableOrigin:()=>getSizableOrigin,hexToUint8Array:()=>hexToUint8Array,hide:()=>hide,installLazyProp:()=>installLazyProp,isObject:()=>isObject,isPlainObject:()=>isPlainObject,issue:()=>issue,joinValues:()=>joinValues,jsonStringifyReplacer:()=>jsonStringifyReplacer,members:()=>members,merge:()=>merge,mergeDefs:()=>mergeDefs,normalizeParams:()=>normalizeParams,nullish:()=>nullish,numKeys:()=>numKeys,objectClone:()=>objectClone,omit:()=>omit,optionalKeys:()=>optionalKeys,own:()=>own,parsedType:()=>parsedType,partial:()=>partial,pick:()=>pick,prefixIssues:()=>prefixIssues,primitiveTypes:()=>primitiveTypes,promiseAllObject:()=>promiseAllObject,propertyKeyTypes:()=>propertyKeyTypes,randomString:()=>randomString,rawShape:()=>rawShape,required:()=>required,safeExtend:()=>safeExtend,shallowClone:()=>shallowClone,sizeCaps:()=>sizeCaps,slugify:()=>slugify,stringifyPrimitive:()=>stringifyPrimitive,toZod:()=>toZod,uint8ArrayToBase64:()=>uint8ArrayToBase64,uint8ArrayToBase64url:()=>uint8ArrayToBase64url,uint8ArrayToHex:()=>uint8ArrayToHex,unwrapMessage:()=>unwrapMessage});function assertEqual(val){return val}function assertNotEqual(val){return val}function toZod(){return schema=>schema}function assertIs(_arg){}function assertNever(_x){throw new Error("Unexpected value in exhaustive check")}function assert(_){}function getEnumValues(entries){let numericValues=Object.values(entries).filter(v=>typeof v=="number");return Object.entries(entries).filter(([k,_])=>numericValues.indexOf(+k)===-1).map(([_,v])=>v)}function joinValues(array2,separator="|"){return array2.map(val=>stringifyPrimitive(val)).join(separator)}function jsonStringifyReplacer(_,value){return typeof value=="bigint"?value.toString():value}var Cached=class{constructor(getter){this._getter=getter,this._value=void 0}get value(){let getter=this._getter;return getter!==void 0&&(this._value=getter(),this._getter=void 0),this._value}};function cached(getter){return new Cached(getter)}function nullish(input){return input==null}function cleanRegex(source){let start=source.startsWith("^")?1:0,end=source.endsWith("$")?source.length-1:source.length;return source.slice(start,end)}function floatSafeRemainder(val,step){let ratio=val/step,roundedRatio=Math.round(ratio),tolerance=4*Number.EPSILON*Math.max(Math.abs(ratio),1);return Math.abs(ratio-roundedRatio)<tolerance?0:ratio-roundedRatio}var EVALUATING=Symbol("evaluating");function defineLazy(object2,key,getter){let value;Object.defineProperty(object2,key,{get(){if(value!==EVALUATING)return value===void 0&&(value=EVALUATING,value=getter()),value},set(v){Object.defineProperty(object2,key,{value:v})},configurable:!0})}function objectClone(obj){return Object.create(Object.getPrototypeOf(obj),Object.getOwnPropertyDescriptors(obj))}function assignProp(target,prop,value){Object.defineProperty(target,prop,{value,writable:!0,enumerable:!0,configurable:!0})}function rawShape(def){let desc=Object.getOwnPropertyDescriptor(def,"shape");return desc?.get?desc.get.raw:desc?.value}function sourceShape(schema){return rawShape(schema._zod.def)??schema._zod.def.shape}function deferProp(target,key,getter){Object.defineProperty(target,key,{get(){let value=getter();return assignProp(this,key,value),value},enumerable:!0,configurable:!0})}function putProp(target,key,value){key in target?assignProp(target,key,value):target[key]=value}function mirrorShape(target,source,keys,wrap2){let raw=sourceShape(source);for(let key of keys){let desc=Object.getOwnPropertyDescriptor(raw,key);desc.enumerable&&(desc.get?deferProp(target,key,()=>{let value=source._zod.def.shape[key];return wrap2?wrap2(value,key):value}):putProp(target,key,wrap2?wrap2(desc.value,key):desc.value))}}function mirrorProps(target,source){for(let key of Reflect.ownKeys(source)){let desc=Object.getOwnPropertyDescriptor(source,key);desc.enumerable&&(desc.get?deferProp(target,key,()=>source[key]):putProp(target,key,desc.value))}}function mergeDefs(...defs){let mergedDescriptors={};for(let def of defs){let descriptors=Object.getOwnPropertyDescriptors(def);Object.assign(mergedDescriptors,descriptors)}return Object.defineProperties({},mergedDescriptors)}function cloneDef(schema){return mergeDefs(schema._zod.def)}function getElementAtPath(obj,path){return path?path.reduce((acc,key)=>acc?.[key],obj):obj}function promiseAllObject(promisesObj){let keys=Object.keys(promisesObj),promises=keys.map(key=>promisesObj[key]);return Promise.all(promises).then(results=>{let resolvedObj={};for(let i=0;i<keys.length;i++)resolvedObj[keys[i]]=results[i];return resolvedObj})}function randomString(length2=10){let chars="abcdefghijklmnopqrstuvwxyz",str2="";for(let i=0;i<length2;i++)str2+=chars[Math.floor(Math.random()*chars.length)];return str2}function esc(str2){return JSON.stringify(str2)}function slugify(input){return input.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var captureStackTrace="captureStackTrace"in Error?Error.captureStackTrace:(..._args)=>{};function isObject(data){return typeof data=="object"&&data!==null&&!Array.isArray(data)}var allowsEval=cached(()=>{if(globalConfig.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let F=Function;return new F(""),!0}catch{return!1}});function isPlainObject(o){if(isObject(o)===!1)return!1;let ctor=o.constructor;if(ctor===void 0||typeof ctor!="function")return!0;let prot=ctor.prototype;return!(isObject(prot)===!1||Object.prototype.hasOwnProperty.call(prot,"isPrototypeOf")===!1)}function shallowClone(o){return isPlainObject(o)?{...o}:Array.isArray(o)?[...o]:o instanceof Map?new Map(o):o instanceof Set?new Set(o):o}function numKeys(data){let keyCount=0;for(let key in data)Object.prototype.hasOwnProperty.call(data,key)&&keyCount++;return keyCount}var getParsedType=data=>{let t=typeof data;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(data)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(data)?"array":data===null?"null":data.then&&typeof data.then=="function"&&data.catch&&typeof data.catch=="function"?"promise":typeof Map<"u"&&data instanceof Map?"map":typeof Set<"u"&&data instanceof Set?"set":typeof Date<"u"&&data instanceof Date?"date":typeof File<"u"&&data instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},propertyKeyTypes=new Set(["string","number","symbol"]),primitiveTypes=new Set(["string","number","bigint","boolean","symbol","undefined"]);function escapeRegex(str2){return str2.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function clone(inst,def,params){let cl=new inst._zod.constr(def??inst._zod.def);return(!def||params?.parent)&&(cl._zod.parent=inst),cl}function normalizeParams(_params){let params=_params;if(!params)return{};if(typeof params=="string")return{error:()=>params};if(params?.message!==void 0){if(params?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");params.error=params.message}return delete params.message,typeof params.error=="string"?{...params,error:()=>params.error}:params}function createTransparentProxy(getter){let target;return new Proxy({},{get(_,prop,receiver){return target??(target=getter()),Reflect.get(target,prop,receiver)},set(_,prop,value,receiver){return target??(target=getter()),Reflect.set(target,prop,value,receiver)},has(_,prop){return target??(target=getter()),Reflect.has(target,prop)},deleteProperty(_,prop){return target??(target=getter()),Reflect.deleteProperty(target,prop)},ownKeys(_){return target??(target=getter()),Reflect.ownKeys(target)},getOwnPropertyDescriptor(_,prop){return target??(target=getter()),Reflect.getOwnPropertyDescriptor(target,prop)},defineProperty(_,prop,descriptor){return target??(target=getter()),Reflect.defineProperty(target,prop,descriptor)}})}function stringifyPrimitive(value){return typeof value=="bigint"?value.toString()+"n":typeof value=="string"?`"${value}"`:`${value}`}function optionalKeys(shape){return Object.keys(shape).filter(k=>shape[k]._zod.optin!==void 0&&shape[k]._zod.optout==="optional")}var NUMBER_FORMAT_RANGES={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},BIGINT_FORMAT_RANGES={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function pick(schema,mask2){let currDef=schema._zod.def,checks=currDef.checks;if(checks&&checks.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let newShape={};return mirrorShape(newShape,schema,maskedKeys(schema,mask2)),clone(schema,mergeDefs(currDef,{shape:newShape,checks:[]}))}function maskedKeys(schema,mask2){let raw=sourceShape(schema),keys=[];for(let key of Reflect.ownKeys(mask2)){if(!Object.getOwnPropertyDescriptor(raw,key)?.enumerable)throw new Error(`Unrecognized key: "${String(key)}"`);mask2[key]&&keys.push(key)}return keys}function omit(schema,mask2){let currDef=schema._zod.def,checks=currDef.checks;if(checks&&checks.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let omitted=new Set(maskedKeys(schema,mask2)),newShape={};return mirrorShape(newShape,schema,Reflect.ownKeys(sourceShape(schema)).filter(key=>!omitted.has(key))),clone(schema,mergeDefs(currDef,{shape:newShape,checks:[]}))}function extend(schema,shape){if(!isPlainObject(shape))throw new Error("Invalid input to extend: expected a plain object");let checks=schema._zod.def.checks;if(checks&&checks.length>0){let existingShape=sourceShape(schema);for(let key of Reflect.ownKeys(shape))if(Object.getOwnPropertyDescriptor(existingShape,key)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return clone(schema,mergeDefs(schema._zod.def,{shape:extended(schema,shape)}))}function extended(schema,shape){let newShape={};return mirrorShape(newShape,schema,Reflect.ownKeys(sourceShape(schema))),mirrorProps(newShape,shape),newShape}function safeExtend(schema,shape){if(!isPlainObject(shape))throw new Error("Invalid input to safeExtend: expected a plain object");return clone(schema,mergeDefs(schema._zod.def,{shape:extended(schema,shape)}))}function merge(a,b){if(!b?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(a._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let newShape={};mirrorShape(newShape,a,Reflect.ownKeys(sourceShape(a))),mirrorShape(newShape,b,Reflect.ownKeys(sourceShape(b)));let def=mergeDefs(a._zod.def,{shape:newShape,get catchall(){return b._zod.def.catchall},checks:b._zod.def.checks??[]});return clone(a,def)}function partial(Class2,schema,mask2,name2="partial"){let checks=schema._zod.def.checks;if(checks&&checks.length>0)throw new Error(`.${name2}() cannot be used on object schemas containing refinements`);let selected=mask2?new Set(maskedKeys(schema,mask2)):void 0,newShape={};return mirrorShape(newShape,schema,Reflect.ownKeys(sourceShape(schema)),Class2&&((value,key)=>selected&&!selected.has(key)?value:new Class2({type:"optional",innerType:value}))),clone(schema,mergeDefs(schema._zod.def,{shape:newShape,checks:[]}))}function required(Class2,schema,mask2){let selected=mask2?new Set(maskedKeys(schema,mask2)):void 0,newShape={};return mirrorShape(newShape,schema,Reflect.ownKeys(sourceShape(schema)),(value,key)=>selected&&!selected.has(key)?value:new Class2({type:"nonoptional",innerType:value})),clone(schema,mergeDefs(schema._zod.def,{shape:newShape}))}function aborted(x,startIndex=0){if(x.aborted===!0)return!0;for(let i=startIndex;i<x.issues.length;i++)if(x.issues[i]?.continue!==!0)return!0;return!1}function explicitlyAborted(x,startIndex=0){if(x.aborted===!0)return!0;for(let i=startIndex;i<x.issues.length;i++)if(x.issues[i]?.continue===!1)return!0;return!1}function prefixIssues(path,issues){return issues.map(iss=>{var _a3;return(_a3=iss).path??(_a3.path=[]),iss.path.unshift(path),iss})}function unwrapMessage(message){return typeof message=="string"?message:message?.message}function sizeCaps(defChecks){let caps=[];for(let ch of defChecks??[]){let d=ch._zod.def;if(!/_(length|size)$|_equals$/.test(d.check))break;let max=d.maximum??d.length??d.size;max>=0&&caps.push([max,ch])}return caps}function attachSchema(issues,start,inst){var _a3;for(let i=start;i<issues.length;i++)(_a3=issues[i]).schema??(_a3.schema=inst)}function finalizeIssue(iss,ctx,config2){var _a3;let traits=iss.inst?._zod?.traits;traits?.has("$ZodType")&&(traits.has("$ZodCheck")?(_a3=iss).schema??(_a3.schema=iss.inst):iss.schema=iss.inst);let schemaError=iss.schema!==iss.inst?iss.schema?._zod.def?.error:void 0,message=iss.message?iss.message:unwrapMessage(iss.inst?._zod.def?.error?.(iss))??unwrapMessage(schemaError?.(iss))??unwrapMessage(ctx?.error?.(iss))??unwrapMessage(config2.customError?.(iss))??unwrapMessage(config2.localeError?.(iss))??"Invalid input",full={};for(let k of Object.keys(iss))k==="inst"||k==="schema"||k==="continue"||k==="input"||k==="__proto__"||(full[k]=iss[k]);return full.path??(full.path=[]),full.message=message,ctx?.reportInput&&(full.input=iss.input),full}function getSizableOrigin(input){return input instanceof Set?"set":input instanceof Map?"map":input instanceof File?"file":"unknown"}var highSurrogate=/[\uD800-\uDBFF]/;function codePointLength(str2){let units=str2.length;if(!highSurrogate.test(str2))return units;let count=units;for(let i=0;i<units-1;i++)(str2.charCodeAt(i)&64512)===55296&&(str2.charCodeAt(i+1)&64512)===56320&&(count--,i++);return count}function getLengthableOrigin(input){return Array.isArray(input)?"array":typeof input=="string"?"string":"unknown"}function parsedType(data){let t=typeof data;switch(t){case"number":return Number.isNaN(data)?"nan":"number";case"object":{if(data===null)return"null";if(Array.isArray(data))return"array";let obj=data;if(obj&&Object.getPrototypeOf(obj)!==Object.prototype&&"constructor"in obj&&obj.constructor)return obj.constructor.name}}return t}function issue(...args){let[iss,input,inst]=args;return typeof iss=="string"?{message:iss,code:"custom",input,inst}:{...iss}}function cleanEnum(obj){return Object.entries(obj).filter(([k,_])=>Number.isNaN(Number.parseInt(k,10))).map(el=>el[1])}function base64ToUint8Array(base642){let binaryString=atob(base642),bytes=new Uint8Array(binaryString.length);for(let i=0;i<binaryString.length;i++)bytes[i]=binaryString.charCodeAt(i);return bytes}function uint8ArrayToBase64(bytes){let binaryString="";for(let i=0;i<bytes.length;i++)binaryString+=String.fromCharCode(bytes[i]);return btoa(binaryString)}function base64urlToUint8Array(base64url2){let base642=base64url2.replace(/-/g,"+").replace(/_/g,"/"),padding="=".repeat((4-base642.length%4)%4);return base64ToUint8Array(base642+padding)}function uint8ArrayToBase64url(bytes){return uint8ArrayToBase64(bytes).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function hexToUint8Array(hex){let cleanHex=hex.replace(/^0x/,"");if(cleanHex.length%2!==0)throw new Error("Invalid hex string length");let bytes=new Uint8Array(cleanHex.length/2);for(let i=0;i<cleanHex.length;i+=2)bytes[i/2]=Number.parseInt(cleanHex.slice(i,i+2),16);return bytes}function uint8ArrayToHex(bytes){return Array.from(bytes).map(b=>b.toString(16).padStart(2,"0")).join("")}var Class=class{constructor(..._args){}};function members(proto,table2){for(let key in table2){let desc=Object.getOwnPropertyDescriptor(table2,key);desc.get?Object.defineProperty(proto,key,{...desc,enumerable:!1}):defineBound(proto,key,desc.value)}}function own(inst,key,value,enumerable=!0){return Object.defineProperty(inst,key,{configurable:!0,writable:!0,enumerable,value}),value}function hide(inst,key,value){return own(inst,key,value,!1)}function derived(computes,table2){for(let key in computes){let compute=computes[key];Object.defineProperty(table2,key,{configurable:!0,enumerable:!0,get(){return own(this,key,compute(this))},set(value){own(this,key,value)}})}return table2}function defineBound(proto,key,fn){Object.defineProperty(proto,key,{configurable:!0,get(){return this==null?fn:own(this,key,fn.bind(this))},set(value){own(this,key,value)}})}function claim(inst,sentinel){let proto=Object.getPrototypeOf(inst);return sentinel in proto?void 0:proto}var installing,broke=!1,breaker={configurable:!0,get(){broke=!0}};function defineLazyInternal(inst,key,compute){let proto=Object.getPrototypeOf(inst._zod);if(key in proto&&installing!==inst._zod){installing=void 0;return}installing=inst._zod,Object.defineProperty(proto,key,{configurable:!0,get(){Object.defineProperty(this,key,breaker);let outer=broke;broke=!1;try{let value=compute(this);return broke?delete this[key]:Object.defineProperty(this,key,{configurable:!0,writable:!0,value}),broke=broke||outer,value}catch(err){throw delete this[key],broke=broke||outer,err}},set(value){Object.defineProperty(this,key,{configurable:!0,writable:!0,value})}})}function installLazyProp(inst,key,make,enumerable){let proto=claim(inst,key);proto&&Object.defineProperty(proto,key,{configurable:!0,get(){let desc={configurable:!0,writable:!0,enumerable,value:void 0};return Object.defineProperty(this,key,desc),desc.value=make(this),Object.defineProperty(this,key,desc),desc.value},set(value){Object.defineProperty(this,key,{configurable:!0,writable:!0,enumerable,value})}})}var CONSTANT_CATCH="~constantCatch";function constantCatch(value){let fn=()=>value;return fn[CONSTANT_CATCH]=!0,fn}var _a,NEVER=Object.freeze({status:"aborted"}),_zodDesc={value:void 0,enumerable:!1},_E="captureStackTrace"in Error?Error:null;function newError(Definition){let E=_E;if(E){let saved=E.stackTraceLimit;if(typeof saved=="number"){try{E.stackTraceLimit=0}catch{return _E=null,new Definition}try{return new Definition}finally{E.stackTraceLimit=saved}}}return new Definition}function $constructor(name2,initializer3,proto,params){let zodProto={};function Internals(def){this.def=def,this.constr=_,this.traits=new Set}Internals.prototype=zodProto;let protoMembers=proto,initialized=protoMembers&&new WeakSet;function init(inst,def){if(inst._zod){if(inst._zod.traits.has(name2))return}else{_zodDesc.value=new Internals(def);try{Object.defineProperty(inst,"_zod",_zodDesc)}finally{_zodDesc.value=void 0}}if(inst._zod.traits.add(name2),initializer3(inst,def),initialized){let own2=Object.getPrototypeOf(inst),ctorProto=inst._zod.constr.prototype,up=own2;for(;up&&up!==ctorProto;)up=Object.getPrototypeOf(up);let target=up??own2;initialized.has(target)||(initialized.add(target),members(target,protoMembers))}let proto2=_.prototype;for(let k in proto2)Object.prototype.hasOwnProperty.call(proto2,k)&&(k in inst||(inst[k]=proto2[k].bind(inst)))}let Parent=params?.Parent??Object;class Definition extends Parent{}Object.defineProperty(Definition,"name",{value:name2});function _(def){let inst=params?.Parent?newError(Definition):this;init(inst,def);let deferred=inst._zod.deferred;if(deferred){for(let fn of deferred)fn();inst._zod.deferred=void 0}let pp=globalThis.__zod_globalConfig?.postProcessor;return pp&&pp(inst),inst}return Object.defineProperty(_,"init",{value:init}),Object.defineProperty(_,Symbol.hasInstance,{value:inst=>params?.Parent&&inst instanceof params.Parent?!0:inst?._zod?.traits?.has(name2)}),Object.defineProperty(_,"name",{value:name2}),_}var $ZodAsyncError=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},$ZodEncodeError=class extends Error{constructor(name2){super(`Encountered unidirectional transform during encode: ${name2}`),this.name="ZodEncodeError"}};(_a=globalThis).__zod_globalConfig??(_a.__zod_globalConfig={});var globalConfig=globalThis.__zod_globalConfig;function config(newConfig){return newConfig&&Object.assign(globalConfig,newConfig),globalConfig}function _getMessage(){let internals=this._zod;return internals.message??(internals.message=JSON.stringify(internals.def,jsonStringifyReplacer,2)),internals.message}function _setMessage(value){this._zod.message=value}var _messageDesc={get:_getMessage,set:_setMessage,enumerable:!0,configurable:!0},_issuesDesc={value:void 0,enumerable:!1},_installedToString=new WeakSet([Object.prototype,Error.prototype]),initializer=(inst,def)=>{inst.name="$ZodError",_issuesDesc.value=def,Object.defineProperty(inst,"issues",_issuesDesc),_issuesDesc.value=void 0,Object.defineProperty(inst,"message",_messageDesc);let proto=Object.getPrototypeOf(inst);_installedToString.has(proto)||(_installedToString.add(proto),Object.defineProperty(proto,"toString",{configurable:!0,enumerable:!1,get(){let value=()=>this.message;return Object.defineProperty(this,"toString",{value,configurable:!0,writable:!0}),value},set(value){Object.defineProperty(this,"toString",{value,configurable:!0,writable:!0})}}))},$ZodError=$constructor("$ZodError",initializer),$ZodRealError=$constructor("$ZodError",initializer,void 0,{Parent:Error});function node(obj,key,make){return Object.prototype.hasOwnProperty.call(obj,key)||(key==="__proto__"?Object.defineProperty(obj,key,{value:make(),writable:!0,enumerable:!0,configurable:!0}):obj[key]=make()),obj[key]}function flattenError(error2,mapper=issue2=>issue2.message){let fieldErrors={},formErrors=[];for(let sub of error2.issues)sub.path.length>0?node(fieldErrors,sub.path[0],()=>[]).push(mapper(sub)):formErrors.push(mapper(sub));return{formErrors,fieldErrors}}function formatError(error2,mapper=issue2=>issue2.message){let fieldErrors={_errors:[]},processError=(error3,path=[])=>{for(let issue2 of error3.issues)if(issue2.code==="invalid_union"&&issue2.errors.length)issue2.errors.map(issues=>processError({issues},[...path,...issue2.path]));else if(issue2.code==="invalid_key")processError({issues:issue2.issues},[...path,...issue2.path]);else if(issue2.code==="invalid_element")processError({issues:issue2.issues},[...path,...issue2.path]);else{let fullpath=[...path,...issue2.path];if(fullpath.length===0)fieldErrors._errors.push(mapper(issue2));else{let curr=fieldErrors,i=0;for(;i<fullpath.length;){let el=fullpath[i],terminal=i===fullpath.length-1;if(el==="_errors"){terminal&&curr._errors.push(mapper(issue2)),i++;continue}Object.prototype.hasOwnProperty.call(curr,el)||Object.defineProperty(curr,el,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let node2=curr[el];terminal&&node2._errors.push(mapper(issue2)),curr=node2,i++}}}};return processError(error2),fieldErrors}function finalizeParams(callee,params){return{callee:params?.callee??callee,Err:params?.Err}}var _parse=_Err=>{let fn=(schema,value,_ctx,_params)=>{let ctx=_ctx?{..._ctx,async:!1}:{async:!1},result2=schema._zod.run({value,issues:[]},ctx);if(result2 instanceof Promise)throw new $ZodAsyncError;if(result2.issues.length){let e=new(_params?.Err??_Err)(result2.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,_params?.callee??fn),e}return result2.value};return fn};var _parseAsync=_Err=>{let fn=async(schema,value,_ctx,params)=>{let ctx=_ctx?{..._ctx,async:!0}:{async:!0},result2=schema._zod.run({value,issues:[]},ctx);if(result2 instanceof Promise&&(result2=await result2),result2.issues.length){let e=new(params?.Err??_Err)(result2.issues.map(iss=>finalizeIssue(iss,ctx,config())));throw captureStackTrace(e,params?.callee??fn),e}return result2.value};return fn};var _safeParse=_Err=>(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,async:!1}:{async:!1},result2=schema._zod.run({value,issues:[]},ctx);if(result2 instanceof Promise)throw new $ZodAsyncError;return result2.issues.length?failure(_Err,result2.issues,ctx):{success:!0,data:result2.value}};function failure(Err,issues,ctx){let error2;return{success:!1,get error(){return error2||(error2=new Err(issues.map(iss=>finalizeIssue(iss,ctx,config()))),issues=void 0,ctx=void 0),error2},set error(e){error2=e,issues=void 0,ctx=void 0}}}var _safeParseAsync=_Err=>async(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,async:!0}:{async:!0},result2=schema._zod.run({value,issues:[]},ctx);return result2 instanceof Promise&&(result2=await result2),result2.issues.length?failure(_Err,result2.issues,ctx):{success:!0,data:result2.value}};var COMPILE_INVALID=Symbol.for("zod.compile.invalid"),COMPILE_FALLBACK=Symbol.for("zod.compile.fallback"),validate=((schema,value,_ctx)=>{let validator=schema._zod.bag.validator;if(validator!==void 0){if(validator(value)!==COMPILE_INVALID)return!0;if(validator.definite===!0&&_ctx===void 0)return!1}return validateFallback(schema,value,_ctx)});function validateFallback(schema,value,_ctx){let ctx=_ctx?{..._ctx,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},fallbackRun=schema._zod.bag.fallbackRun,result2;if(fallbackRun?(ctx[COMPILE_FALLBACK]=!0,result2=fallbackRun({value,issues:[]},ctx)):result2=schema._zod.run({value,issues:[]},ctx),result2 instanceof Promise)throw new $ZodAsyncError;return result2.issues.length===0}var validateAsync=async(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},result2=schema._zod.run({value,issues:[]},ctx);return result2 instanceof Promise&&(result2=await result2),result2.issues.length===0},_encode=_Err=>{let parse2=_parse(_Err),fn=(schema,value,_ctx,_params)=>{let ctx=_ctx?{..._ctx,direction:"backward"}:{direction:"backward"};return parse2(schema,value,ctx,finalizeParams(fn,_params))};return fn};var _decode=_Err=>{let parse2=_parse(_Err),fn=(schema,value,_ctx,_params)=>parse2(schema,value,_ctx,finalizeParams(fn,_params));return fn};var _encodeAsync=_Err=>{let parseAsync2=_parseAsync(_Err),fn=async(schema,value,_ctx,_params)=>{let ctx=_ctx?{..._ctx,direction:"backward"}:{direction:"backward"};return await parseAsync2(schema,value,ctx,finalizeParams(fn,_params))};return fn};var _decodeAsync=_Err=>{let parseAsync2=_parseAsync(_Err),fn=async(schema,value,_ctx,_params)=>await parseAsync2(schema,value,_ctx,finalizeParams(fn,_params));return fn};var _safeEncode=_Err=>(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,direction:"backward"}:{direction:"backward"};return _safeParse(_Err)(schema,value,ctx)};var _safeDecode=_Err=>(schema,value,_ctx)=>_safeParse(_Err)(schema,value,_ctx);var _safeEncodeAsync=_Err=>async(schema,value,_ctx)=>{let ctx=_ctx?{..._ctx,direction:"backward"}:{direction:"backward"};return _safeParseAsync(_Err)(schema,value,ctx)};var _safeDecodeAsync=_Err=>async(schema,value,_ctx)=>_safeParseAsync(_Err)(schema,value,_ctx);var cuid=/^[cC][0-9a-z]{6,}$/,cuid2=/^[0-9a-z]+$/,ulid=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,xid=/^[0-9a-vA-V]{20}$/,ksuid=/^[A-Za-z0-9]{27}$/,nanoid=/^[a-zA-Z0-9_-]{21}$/;function nanoidOfLength(length2){return new RegExp(`^[a-zA-Z0-9_-]{${length2}}$`)}var duration=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var guid=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,uuid=version2=>version2?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version2}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;var email=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var _emoji="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function emoji(){return new RegExp(_emoji,"u")}var ipv4=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;var cidrv4=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var httpProtocol=/^https?$/,e164=/^\+[1-9]\d{6,14}$/;var dateSource="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function anchor(source){return new RegExp(`^${source}$`)}var date=anchor(dateSource);function timeSource(args){let hhmm="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof args.precision=="number"?args.precision===-1?`${hhmm}`:args.precision===0?`${hhmm}:[0-5]\\d`:`${hhmm}:[0-5]\\d\\.\\d{${args.precision}}`:args.seconds?`${hhmm}:[0-5]\\d(?:\\.\\d+)?`:`${hhmm}(?::[0-5]\\d(?:\\.\\d+)?)?`}function time(args){return new RegExp(`^${timeSource(args)}$`)}function datetime(args){let opts=["Z"];args.offset&&opts.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let qualified=`${timeSource({precision:args.precision,seconds:!0})}(?:${opts.join("|")})`,timeRegex=args.local?`${qualified}|${timeSource({precision:args.precision})}`:qualified;return new RegExp(`^${dateSource}T(?:${timeRegex})$`)}var anyString=/^[\s\S]{0,}$/;var bigint=/^-?\d+n?$/,integer=/^-?\d+$/,number=/^-?\d+(?:\.\d+)?$/,boolean=/^(?:true|false)$/i,_null=/^null$/i;var lowercase=/^[^A-Z]*$/,uppercase=/^[^a-z]*$/;var $ZodCheck=$constructor("$ZodCheck",(inst,def)=>{var _a3;inst._zod??(inst._zod={}),inst._zod.def=def,(_a3=inst._zod).onattach??(_a3.onattach=[])});var _whenHasLength=payload=>{let val=payload.value;return!nullish(val)&&val.length!==void 0},numericOriginMap={number:"number",bigint:"bigint",object:"date"},$ZodCheckLessThan=$constructor("$ZodCheckLessThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.check=payload=>{(def.inclusive?payload.value<=def.value:payload.value<def.value)||payload.issues.push({origin:numericOriginMap[typeof payload.value]??origin,code:"too_big",maximum:typeof def.value=="object"?def.value.getTime():def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckGreaterThan=$constructor("$ZodCheckGreaterThan",(inst,def)=>{$ZodCheck.init(inst,def);let origin=numericOriginMap[typeof def.value];inst._zod.check=payload=>{(def.inclusive?payload.value>=def.value:payload.value>def.value)||payload.issues.push({origin:numericOriginMap[typeof payload.value]??origin,code:"too_small",minimum:typeof def.value=="object"?def.value.getTime():def.value,input:payload.value,inclusive:def.inclusive,inst,continue:!def.abort})}}),$ZodCheckMultipleOf=$constructor("$ZodCheckMultipleOf",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.check=payload=>{if(typeof payload.value!=typeof def.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof payload.value=="bigint"?def.value!==BigInt(0)&&payload.value%def.value===BigInt(0):floatSafeRemainder(payload.value,def.value)===0)||payload.issues.push({origin:typeof payload.value,code:"not_multiple_of",divisor:def.value,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckNumberFormat=$constructor("$ZodCheckNumberFormat",(inst,def)=>{$ZodCheck.init(inst,def),def.format=def.format||"float64";let isInt=def.format?.includes("int"),origin=isInt?"int":"number",[minimum,maximum]=NUMBER_FORMAT_RANGES[def.format];inst._zod.check=payload=>{let input=payload.value;if(isInt){if(!Number.isInteger(input)){payload.issues.push({expected:origin,format:def.format,code:"invalid_type",continue:!1,input,inst});return}if(!Number.isSafeInteger(input)){input>0?payload.issues.push({input,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,inclusive:!0,continue:!def.abort}):payload.issues.push({input,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst,origin,inclusive:!0,continue:!def.abort});return}}input<minimum&&payload.issues.push({origin:"number",input,code:"too_small",minimum,inclusive:!0,inst,continue:!def.abort}),input>maximum&&payload.issues.push({origin:"number",input,code:"too_big",maximum,inclusive:!0,inst,continue:!def.abort})}});var $ZodCheckMaxLength=$constructor("$ZodCheckMaxLength",(inst,def)=>{var _a3;$ZodCheck.init(inst,def),(_a3=inst._zod.def).when??(_a3.when=_whenHasLength),inst._zod.check=payload=>{let input=payload.value,units=input.length;if((typeof input=="string"&&units>def.maximum?codePointLength(input):units)<=def.maximum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_big",maximum:def.maximum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckMinLength=$constructor("$ZodCheckMinLength",(inst,def)=>{var _a3;$ZodCheck.init(inst,def),(_a3=inst._zod.def).when??(_a3.when=_whenHasLength),inst._zod.check=payload=>{let input=payload.value,units=input.length;if((typeof input=="string"&&units>=def.minimum&&units<def.minimum*2?codePointLength(input):units)>=def.minimum)return;let origin=getLengthableOrigin(input);payload.issues.push({origin,code:"too_small",minimum:def.minimum,inclusive:!0,input,inst,continue:!def.abort})}}),$ZodCheckLengthEquals=$constructor("$ZodCheckLengthEquals",(inst,def)=>{var _a3;$ZodCheck.init(inst,def),(_a3=inst._zod.def).when??(_a3.when=_whenHasLength),inst._zod.check=payload=>{let input=payload.value,units=input.length,length2=typeof input=="string"&&units>=def.length&&units<=def.length*2?codePointLength(input):units;if(length2===def.length)return;let origin=getLengthableOrigin(input),tooBig=length2>def.length;payload.issues.push({origin,...tooBig?{code:"too_big",maximum:def.length}:{code:"too_small",minimum:def.length},inclusive:!0,exact:!0,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStringFormat=$constructor("$ZodCheckStringFormat",(inst,def)=>{var _a3,_b;$ZodCheck.init(inst,def),def.pattern?(_a3=inst._zod).check??(_a3.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:def.format,input:payload.value,...def.pattern?{pattern:def.pattern.toString()}:{},inst,continue:!def.abort})}):(_b=inst._zod).check??(_b.check=()=>{})}),$ZodCheckRegex=$constructor("$ZodCheckRegex",(inst,def)=>{$ZodCheckStringFormat.init(inst,def),inst._zod.check=payload=>{def.pattern.lastIndex=0,!def.pattern.test(payload.value)&&payload.issues.push({origin:"string",code:"invalid_format",format:"regex",input:payload.value,pattern:def.pattern.toString(),inst,continue:!def.abort})}}),$ZodCheckLowerCase=$constructor("$ZodCheckLowerCase",(inst,def)=>{def.pattern??(def.pattern=lowercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckUpperCase=$constructor("$ZodCheckUpperCase",(inst,def)=>{def.pattern??(def.pattern=uppercase),$ZodCheckStringFormat.init(inst,def)}),$ZodCheckIncludes=$constructor("$ZodCheckIncludes",(inst,def)=>{$ZodCheck.init(inst,def);let escapedRegex=escapeRegex(def.includes),pattern=new RegExp(typeof def.position=="number"?`^.{${def.position},}${escapedRegex}`:escapedRegex);def.pattern=pattern,inst._zod.check=payload=>{payload.value.includes(def.includes,def.position)||payload.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:def.includes,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckStartsWith=$constructor("$ZodCheckStartsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`^${escapeRegex(def.prefix)}.*`);def.pattern??(def.pattern=pattern),inst._zod.check=payload=>{payload.value.startsWith(def.prefix)||payload.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:def.prefix,input:payload.value,inst,continue:!def.abort})}}),$ZodCheckEndsWith=$constructor("$ZodCheckEndsWith",(inst,def)=>{$ZodCheck.init(inst,def);let pattern=new RegExp(`.*${escapeRegex(def.suffix)}$`);def.pattern??(def.pattern=pattern),inst._zod.check=payload=>{payload.value.endsWith(def.suffix)||payload.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:def.suffix,input:payload.value,inst,continue:!def.abort})}});var $ZodCheckOverwrite=$constructor("$ZodCheckOverwrite",(inst,def)=>{$ZodCheck.init(inst,def),inst._zod.check=payload=>{payload.value=def.tx(payload.value)}});var Doc=class{constructor(args=[],closed={}){this.content=[],this.indent=0,this.args=args,this.closed=closed}indented(fn){this.indent+=1;try{fn(this)}finally{this.indent-=1}}write(arg){if(typeof arg=="function"){arg(this,{execution:"sync"}),arg(this,{execution:"async"});return}let lines2=arg.split(`
|
|
4
|
+
`).filter(x=>x),minIndent=Math.min(...lines2.map(x=>x.length-x.trimStart().length)),dedented=lines2.map(x=>x.slice(minIndent)).map(x=>" ".repeat(this.indent*2)+x);for(let line of dedented)this.content.push(line)}compile(){let F=Function,content=this?.content??[""];return new F(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
|
|
5
|
+
${content.join(`
|
|
6
|
+
`)}
|
|
7
|
+
};`)(...Object.values(this.closed))}};var version={major:4,minor:6,patch:7};var $ZodType=$constructor("$ZodType",(inst,def)=>{var _a3;inst??(inst={}),inst._zod.def=def,inst._zod.bag=inst._zod.bag||{},inst._zod.version=version;let defChecks=inst._zod.def.checks,checks=inst._zod.traits.has("$ZodCheck")?[inst,...defChecks??[]]:defChecks?.length?[...defChecks]:[];for(let ch of checks)for(let fn of ch._zod.onattach)fn(inst);if(checks.length===0)(_a3=inst._zod).deferred??(_a3.deferred=[]),inst._zod.deferred?.push(()=>{inst._zod.run=inst._zod.parse});else{let runChecks=(payload,checks2,ctx)=>{if(payload.memo)return payload;let isAborted=aborted(payload),asyncResult;for(let ch of checks2){if(ch._zod.def.when){if(explicitlyAborted(payload)||!ch._zod.def.when(payload))continue}else if(isAborted)continue;let currLen=payload.issues.length,_=ch._zod.check(payload);if(_ instanceof Promise&&ctx?.async===!1)throw new $ZodAsyncError;if(asyncResult||_ instanceof Promise)asyncResult=(asyncResult??Promise.resolve()).then(async()=>{await _,payload.issues.length!==currLen&&(attachSchema(payload.issues,currLen,inst),isAborted||(isAborted=aborted(payload,currLen)))});else{if(payload.issues.length===currLen)continue;attachSchema(payload.issues,currLen,inst),isAborted||(isAborted=aborted(payload,currLen))}}return asyncResult?asyncResult.then(()=>payload):payload},handleCanaryResult=(canary,payload,ctx)=>{if(aborted(canary))return canary.aborted=!0,canary;let checkResult=runChecks(payload,checks,ctx);if(checkResult instanceof Promise){if(ctx.async===!1)throw new $ZodAsyncError;return checkResult.then(checkResult2=>inst._zod.parse(checkResult2,ctx))}return inst._zod.parse(checkResult,ctx)};inst._zod.run=(payload,ctx)=>{if(ctx.skipChecks)return inst._zod.parse(payload,ctx);if(ctx.direction==="backward"){let canary=inst._zod.parse({value:payload.value,issues:[]},{...ctx,skipChecks:!0});return canary instanceof Promise?canary.then(canary2=>handleCanaryResult(canary2,payload,ctx)):handleCanaryResult(canary,payload,ctx)}let result2=inst._zod.parse(payload,ctx);if(result2 instanceof Promise){if(ctx.async===!1)throw new $ZodAsyncError;return result2.then(result3=>runChecks(result3,checks,ctx))}return runChecks(result2,checks,ctx)}}},{get"~standard"(){return hide(this,"~standard",standardProps(this))},set"~standard"(value){own(this,"~standard",value)}}),toStandardResult=(r,ctx)=>r.issues.length?{issues:r.issues.map(iss=>finalizeIssue(iss,ctx,config()))}:{value:r.value};async function validateAsync2(inst,value){let ctx={async:!0};return toStandardResult(await inst._zod.run({value,issues:[]},ctx),ctx)}function standardProps(inst){return{validate:value=>{let ctx={async:!1};try{let r=inst._zod.run({value,issues:[]},ctx);if(!(r instanceof Promise))return toStandardResult(r,ctx)}catch{}return validateAsync2(inst,value)},vendor:"zod",version:1}}var $ZodString=$constructor("$ZodString",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=def.pattern??anyString,inst._zod.parse=(payload,_)=>{if(def.coerce)try{payload.value=String(payload.value)}catch{}return typeof payload.value=="string"||payload.issues.push({expected:"string",code:"invalid_type",input:payload.value,inst}),payload}}),$ZodStringFormat=$constructor("$ZodStringFormat",(inst,def)=>{$ZodCheckStringFormat.init(inst,def),$ZodString.init(inst,def)}),$ZodGUID=$constructor("$ZodGUID",(inst,def)=>{def.pattern??(def.pattern=guid),$ZodStringFormat.init(inst,def)}),$ZodUUID=$constructor("$ZodUUID",(inst,def)=>{if(def.version){let v={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[def.version];if(v===void 0)throw new Error(`Invalid UUID version: "${def.version}"`);def.pattern??(def.pattern=uuid(v))}else def.pattern??(def.pattern=uuid());$ZodStringFormat.init(inst,def)}),$ZodEmail=$constructor("$ZodEmail",(inst,def)=>{def.pattern??(def.pattern=email),$ZodStringFormat.init(inst,def)}),URL_BAD_FORMAT=1,URL_UNPARSEABLE=2;function canParseURL(input){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(input):(new URL(input),!0)}catch{return!1}}function validateURL(trimmed,def){return!("normalize"in def)&&!("hostname"in def)&&!("protocol"in def)?canParseURL(trimmed)||URL_UNPARSEABLE:parseURLObject(trimmed,def)}function parseURLObject(trimmed,def){if(!def.normalize&&def.protocol?.source===httpProtocol.source&&!/^https?:\/\//i.test(trimmed))return URL_BAD_FORMAT;try{if(typeof URL<"u"){let URLStatic=URL;if(typeof URLStatic.parse=="function")return URLStatic.parse(trimmed)??URL_UNPARSEABLE}return new URL(trimmed)}catch{return URL_UNPARSEABLE}}var asciiTabOrNewline=/[\t\n\r]/g;function stripTabAndNewline(value){return value.replace(asciiTabOrNewline,"")}function urlHostnameOk(url2,hostname){return hostname.lastIndex=0,hostname.test(url2.hostname)}function urlProtocolOk(url2,protocol){return protocol.lastIndex=0,protocol.test(url2.protocol.endsWith(":")?url2.protocol.slice(0,-1):url2.protocol)}var $ZodURL=$constructor("$ZodURL",(inst,def)=>{$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{try{let trimmed=payload.value.trim(),url2=validateURL(trimmed,def);if(url2===URL_BAD_FORMAT){payload.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:payload.value,inst,continue:!def.abort});return}if(url2===URL_UNPARSEABLE){payload.issues.push({code:"invalid_format",format:"url",input:payload.value,inst,continue:!def.abort});return}if(url2===!0){payload.value=stripTabAndNewline(trimmed);return}def.hostname&&!urlHostnameOk(url2,def.hostname)&&payload.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:def.hostname.source,input:payload.value,inst,continue:!def.abort}),def.protocol&&!urlProtocolOk(url2,def.protocol)&&payload.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:def.protocol.source,input:payload.value,inst,continue:!def.abort}),payload.value=def.normalize?url2.href:stripTabAndNewline(trimmed);return}catch{payload.issues.push({code:"invalid_format",format:"url",input:payload.value,inst,continue:!def.abort})}}}),$ZodEmoji=$constructor("$ZodEmoji",(inst,def)=>{def.pattern??(def.pattern=emoji()),$ZodStringFormat.init(inst,def)}),$ZodNanoID=$constructor("$ZodNanoID",(inst,def)=>{if(def.length!==void 0&&(!Number.isInteger(def.length)||def.length<1))throw new Error(`Invalid nanoid length: ${def.length}`);def.pattern??(def.pattern=def.length===void 0?nanoid:nanoidOfLength(def.length)),$ZodStringFormat.init(inst,def)}),$ZodCUID=$constructor("$ZodCUID",(inst,def)=>{def.pattern??(def.pattern=cuid),$ZodStringFormat.init(inst,def)}),$ZodCUID2=$constructor("$ZodCUID2",(inst,def)=>{def.pattern??(def.pattern=cuid2),$ZodStringFormat.init(inst,def)}),$ZodULID=$constructor("$ZodULID",(inst,def)=>{def.pattern??(def.pattern=ulid),$ZodStringFormat.init(inst,def)}),$ZodXID=$constructor("$ZodXID",(inst,def)=>{def.pattern??(def.pattern=xid),$ZodStringFormat.init(inst,def)}),$ZodKSUID=$constructor("$ZodKSUID",(inst,def)=>{def.pattern??(def.pattern=ksuid),$ZodStringFormat.init(inst,def)}),$ZodISODateTime=$constructor("$ZodISODateTime",(inst,def)=>{def.pattern??(def.pattern=datetime(def)),$ZodStringFormat.init(inst,def)}),$ZodISODate=$constructor("$ZodISODate",(inst,def)=>{def.pattern??(def.pattern=date),$ZodStringFormat.init(inst,def)}),$ZodISOTime=$constructor("$ZodISOTime",(inst,def)=>{def.pattern??(def.pattern=time(def)),$ZodStringFormat.init(inst,def)}),$ZodISODuration=$constructor("$ZodISODuration",(inst,def)=>{def.pattern??(def.pattern=duration),$ZodStringFormat.init(inst,def)}),$ZodIPv4=$constructor("$ZodIPv4",(inst,def)=>{def.pattern??(def.pattern=ipv4),$ZodStringFormat.init(inst,def)}),ipv6Alphabet=/^[0-9a-fA-F:.]+$/;function isValidIPv6(value){return ipv6Alphabet.test(value)?canParseURL(`http://[${value}]`):!1}var $ZodIPv6=$constructor("$ZodIPv6",(inst,def)=>{def.pattern??(def.pattern=ipv6),$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidIPv6(payload.value)||payload.issues.push({code:"invalid_format",format:"ipv6",input:payload.value,inst,continue:!def.abort})}});var $ZodCIDRv4=$constructor("$ZodCIDRv4",(inst,def)=>{def.pattern??(def.pattern=cidrv4),$ZodStringFormat.init(inst,def)});function isValidCIDRv6(value){let parts=value.split("/");if(parts.length!==2)return!1;let[address,prefix]=parts;if(!prefix)return!1;let prefixNum=Number(prefix);return`${prefixNum}`!==prefix||prefixNum<0||prefixNum>128?!1:isValidIPv6(address)}var $ZodCIDRv6=$constructor("$ZodCIDRv6",(inst,def)=>{def.pattern??(def.pattern=cidrv6),$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidCIDRv6(payload.value)||payload.issues.push({code:"invalid_format",format:"cidrv6",input:payload.value,inst,continue:!def.abort})}});function isValidBase64(data){if(data==="")return!0;if(/\s/.test(data)||data.length%4!==0)return!1;try{return atob(data),!0}catch{return!1}}var base64Charset=/^[0-9a-zA-Z+/]*={0,2}$/,$ZodBase64=$constructor("$ZodBase64",(inst,def)=>{def.pattern??(def.pattern=base64Charset),$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidBase64(payload.value)||payload.issues.push({code:"invalid_format",format:"base64",input:payload.value,inst,continue:!def.abort})}}),base64urlCharset=/^[A-Za-z0-9_-]*$/;function isValidBase64URL(data){if(!base64urlCharset.test(data))return!1;let base642=data.replace(/[-_]/g,c=>c==="-"?"+":"/"),padded=base642.padEnd(Math.ceil(base642.length/4)*4,"=");return isValidBase64(padded)}var $ZodBase64URL=$constructor("$ZodBase64URL",(inst,def)=>{def.pattern??(def.pattern=base64urlCharset),$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidBase64URL(payload.value)||payload.issues.push({code:"invalid_format",format:"base64url",input:payload.value,inst,continue:!def.abort})}}),$ZodE164=$constructor("$ZodE164",(inst,def)=>{def.pattern??(def.pattern=e164),$ZodStringFormat.init(inst,def)});function isValidJWT(token,algorithm=null){try{let tokensParts=token.split(".");if(tokensParts.length!==3)return!1;let[header]=tokensParts;if(!header)return!1;let parsedHeader=JSON.parse(atob(header));return!("typ"in parsedHeader&&parsedHeader?.typ!=="JWT"||!parsedHeader.alg||algorithm&&(!("alg"in parsedHeader)||parsedHeader.alg!==algorithm))}catch{return!1}}var $ZodJWT=$constructor("$ZodJWT",(inst,def)=>{$ZodStringFormat.init(inst,def),inst._zod.check=payload=>{isValidJWT(payload.value,def.alg)||payload.issues.push({code:"invalid_format",format:"jwt",input:payload.value,inst,continue:!def.abort})}});var $ZodNumber=$constructor("$ZodNumber",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=number,inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=Number(payload.value)}catch{}let input=payload.value;if(typeof input=="number"&&!Number.isNaN(input)&&Number.isFinite(input))return payload;let received=typeof input=="number"?Number.isNaN(input)?"NaN":Number.isFinite(input)?void 0:String(input):void 0;return payload.issues.push({expected:"number",code:"invalid_type",input,inst,...received?{received}:{}}),payload}}),$ZodNumberFormat=$constructor("$ZodNumberFormat",(inst,def)=>{$ZodCheckNumberFormat.init(inst,def),$ZodNumber.init(inst,def)}),$ZodBoolean=$constructor("$ZodBoolean",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=boolean,inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=!!payload.value}catch{}let input=payload.value;return typeof input=="boolean"||payload.issues.push({expected:"boolean",code:"invalid_type",input,inst}),payload}}),$ZodBigInt=$constructor("$ZodBigInt",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=bigint,inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=BigInt(payload.value)}catch{}return typeof payload.value=="bigint"||payload.issues.push({expected:"bigint",code:"invalid_type",input:payload.value,inst}),payload}});var $ZodNull=$constructor("$ZodNull",(inst,def)=>{$ZodType.init(inst,def),inst._zod.pattern=_null,inst._zod.values=new Set([null]),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return input===null||payload.issues.push({expected:"null",code:"invalid_type",input,inst}),payload}}),$ZodAny=$constructor("$ZodAny",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=payload=>payload}),$ZodUnknown=$constructor("$ZodUnknown",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=payload=>payload}),$ZodNever=$constructor("$ZodNever",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>(payload.issues.push({expected:"never",code:"invalid_type",input:payload.value,inst}),payload)});var $ZodDate=$constructor("$ZodDate",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>{if(def.coerce)try{payload.value=new Date(payload.value)}catch{}let input=payload.value,isDate=input instanceof Date;return isDate&&!Number.isNaN(input.getTime())||payload.issues.push({expected:"date",code:"invalid_type",input,...isDate?{received:"Invalid Date"}:{},inst}),payload}});function capSize(inst,size){let caps=sizeCaps(inst._zod.def.checks);if(!caps.length)return;let cap3=Math.min(...caps.map(c=>c[0])),parse2=inst._zod.parse;inst._zod.parse=(payload,ctx)=>{let n2=size(payload.value);if(n2>cap3&&!ctx?.skipChecks&&ctx?.direction!=="backward"){for(let[max,ch]of sizeCaps(inst._zod.def.checks))if(n2>max&&ch._zod.def.when(payload)){let start=payload.issues.length;return ch._zod.check(payload),payload.issues[start].continue=!1,attachSchema(payload.issues,start,inst),payload}}return parse2(payload,ctx)}}var arraySize=input=>Array.isArray(input)?input.length:-1;function handleArrayResult(result2,final,index){result2.issues.length&&final.issues.push(...prefixIssues(index,result2.issues)),final.value[index]=result2.value}var $ZodArray=$constructor("$ZodArray",(inst,def)=>{$ZodType.init(inst,def);let memo4=globalConfig.memoizer;memo4?.attach(inst),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!Array.isArray(input))return payload.issues.push({expected:"array",code:"invalid_type",input,inst}),payload;payload.value=memo4?memo4.alloc(inst,payload,Array(input.length),ctx):Array(input.length);let proms=[],abortEarly=ctx?.abortEarly;for(let i=0;i<input.length;i++){let item=input[i],result2=def.element._zod.run({value:item,issues:[]},ctx);if(result2 instanceof Promise)proms.push(result2.then(result3=>handleArrayResult(result3,payload,i)));else if(handleArrayResult(result2,payload,i),abortEarly&&result2.issues.length!==0&&aborted(result2))break}return proms.length?Promise.all(proms).then(()=>payload):payload},capSize(inst,arraySize)});function handlePropertyResult(result2,final,key,input,optin,optout){let isPresent=key in input,isOptionalOut=optout==="optional";if(!(!isPresent&&isOptionalOut&&optin==="optional")){if(result2.issues.length){if(optin!==void 0&&isOptionalOut&&!isPresent)return;final.issues.push(...prefixIssues(key,result2.issues))}if(!isPresent&&optin===void 0){result2.issues.length||final.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[key]});return}result2.value===void 0?(isPresent||optin==="defaulted"&&!isOptionalOut)&&(final.value[key]=void 0):final.value[key]=result2.value}}var NO_SYMBOL_KEYS=[];function normalizeDef(def){let keys=Object.keys(def.shape),ownSymbols=Object.getOwnPropertySymbols(def.shape),symbolKeys=ownSymbols.length?ownSymbols:NO_SYMBOL_KEYS,allKeys=symbolKeys.length?[...keys,...symbolKeys]:keys;for(let k of allKeys)if(!def.shape?.[k]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(k)}": expected a Zod schema`);let okeys=optionalKeys(def.shape);return{...def,allKeys,symbolKeys,keySet:new Set(keys),numKeys:keys.length,optionalKeys:new Set(okeys)}}function handleCatchall(proms,input,payload,ctx,def,inst,abortEarly){let unrecognized=[],keySet=def.keySet,_catchall=def.catchall._zod,t=_catchall.def.type,optin=_catchall.optin,optout=_catchall.optout,seen=0;for(let key in input){if(abortEarly&&payload.issues.length!==seen){if(aborted(payload,seen))break;seen=payload.issues.length}if(keySet.has(key))continue;if(key==="__proto__"){t==="never"&&unrecognized.push(key);continue}if(t==="never"){unrecognized.push(key);continue}let r=_catchall.run({value:input[key],issues:[]},ctx);r instanceof Promise?proms.push(r.then(r2=>handlePropertyResult(r2,payload,key,input,optin,optout))):handlePropertyResult(r,payload,key,input,optin,optout)}return unrecognized.length&&payload.issues.push({code:"unrecognized_keys",keys:unrecognized,input,inst,continue:!0}),proms.length?Promise.all(proms).then(()=>payload):payload}var $ZodObject=$constructor("$ZodObject",(inst,def)=>{$ZodType.init(inst,def);let desc=Object.getOwnPropertyDescriptor(def,"shape"),sh=desc?.get?desc.get.raw:def.shape??{};if(sh){let get=()=>{let newSh={...sh};return Object.defineProperty(def,"shape",{value:newSh}),get.raw=newSh,newSh};get.raw=sh,Object.defineProperty(def,"shape",{get})}let _normalized=cached(()=>normalizeDef(def));defineLazyInternal(inst,"propValues",zod=>{let shape=zod.def.shape,propValues={};for(let key in shape){let field=shape[key]._zod;if(field.values){Object.prototype.hasOwnProperty.call(propValues,key)||assignProp(propValues,key,new Set);for(let v of field.values)propValues[key].add(v);field.optin!==void 0&&propValues[key].add(void 0)}}return propValues});let isObject2=isObject,catchall=def.catchall,value,memo4=globalConfig.memoizer;memo4?.attach(inst),inst._zod.parse=(payload,ctx)=>{value??(value=_normalized.value);let input=payload.value;if(!isObject2(input))return payload.issues.push({expected:"object",code:"invalid_type",input,inst}),payload;payload.value=memo4?memo4.alloc(inst,payload,{},ctx):{};let proms=[],shape=value.shape,abortEarly=ctx?.abortEarly,seen=payload.issues.length;for(let key of value.allKeys){if(abortEarly&&payload.issues.length!==seen){if(aborted(payload,seen))break;seen=payload.issues.length}if(key==="__proto__")continue;let el=shape[key],optin=el._zod.optin,optout=el._zod.optout,r=el._zod.run({value:input[key],issues:[]},ctx);r instanceof Promise?proms.push(r.then(r2=>handlePropertyResult(r2,payload,key,input,optin,optout))):handlePropertyResult(r,payload,key,input,optin,optout)}return catchall?handleCatchall(proms,input,payload,ctx,_normalized.value,inst,abortEarly===!0):proms.length?Promise.all(proms).then(()=>payload):payload}}),$ZodObjectJIT=$constructor("$ZodObjectJIT",(inst,def)=>{$ZodObject.init(inst,def);let superParse=inst._zod.parse,_normalized=cached(()=>normalizeDef(def)),memo4=globalConfig.memoizer,generateFastpass=shape=>{let normalized=_normalized.value,syms=normalized.symbolKeys,doc=new Doc(["payload","ctx"],{shape,inst,memo:memo4,syms}),parseStr=k=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,prefixStr=(id,k)=>`
|
|
8
|
+
let ${id}_ab = false;
|
|
9
|
+
for (let i = 0; i < ${id}.issues.length; i++) {
|
|
10
|
+
const iss = ${id}.issues[i];
|
|
11
|
+
iss.path = iss.path ? [${k}, ...iss.path] : [${k}];
|
|
12
|
+
payload.issues.push(iss);
|
|
13
|
+
if (iss.continue !== true) ${id}_ab = true;
|
|
14
|
+
}
|
|
15
|
+
if (${id}_ab && ctx && ctx.abortEarly) {
|
|
16
|
+
payload.value = newResult;
|
|
17
|
+
return payload;
|
|
18
|
+
}`;doc.write("const input = payload.value;");let ids=Object.create(null),counter=0;for(let key of normalized.allKeys)ids[key]=`key_${counter++}`;doc.write(memo4?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let key of normalized.allKeys){if(key==="__proto__")continue;let id=ids[key],k=typeof key=="symbol"?`syms[${syms.indexOf(key)}]`:esc(key),isPresent=`${k} in input`,schema=shape[key],optin=schema?._zod?.optin,isOptionalIn=optin!==void 0,isOptionalOut=schema?._zod?.optout==="optional";if(doc.write(`const ${id} = ${parseStr(k)};`),isOptionalIn&&isOptionalOut){let assign=optin==="optional"?`${id}_present`:`${id}.value !== undefined || ${id}_present`;doc.write(`
|
|
19
|
+
const ${id}_present = ${isPresent};
|
|
20
|
+
if (!${id}.issues.length || ${id}_present) {
|
|
21
|
+
if (${id}.issues.length) {${prefixStr(id,k)}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (${assign}) {
|
|
25
|
+
newResult[${k}] = ${id}.value;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
`)}else isOptionalIn?(doc.write(`
|
|
30
|
+
if (${id}.issues.length) {${prefixStr(id,k)}
|
|
31
|
+
}
|
|
32
|
+
`),optin==="defaulted"?doc.write(`newResult[${k}] = ${id}.value;`):doc.write(`
|
|
33
|
+
if (${id}.value !== undefined || ${isPresent}) {
|
|
34
|
+
newResult[${k}] = ${id}.value;
|
|
35
|
+
}
|
|
36
|
+
`)):doc.write(`
|
|
37
|
+
const ${id}_present = ${isPresent};
|
|
38
|
+
if (${id}.issues.length) {${prefixStr(id,k)}
|
|
39
|
+
}
|
|
40
|
+
if (!${id}_present && !${id}.issues.length) {
|
|
41
|
+
payload.issues.push({
|
|
42
|
+
code: "invalid_type",
|
|
43
|
+
expected: "nonoptional",
|
|
44
|
+
input: undefined,
|
|
45
|
+
path: [${k}]
|
|
46
|
+
});
|
|
47
|
+
if (ctx && ctx.abortEarly) {
|
|
48
|
+
payload.value = newResult;
|
|
49
|
+
return payload;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (${id}_present) {
|
|
54
|
+
newResult[${k}] = ${id}.value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
`)}return doc.write("payload.value = newResult;"),doc.write("return payload;"),doc.compile()},fastpass,isObject2=isObject,jit=!globalConfig.jitless,fastEnabled=jit&&allowsEval.value,catchall=def.catchall,value;inst._zod.parse=(payload,ctx)=>{value??(value=_normalized.value);let input=payload.value;return isObject2(input)?jit&&fastEnabled&&ctx?.async===!1&&ctx.jitless!==!0?(fastpass||(fastpass=generateFastpass(def.shape)),payload=fastpass(payload,ctx),catchall?handleCatchall([],input,payload,ctx,value,inst,ctx?.abortEarly===!0):payload):superParse(payload,ctx):(payload.issues.push({expected:"object",code:"invalid_type",input,inst}),payload)}});function handleUnionResults(results,final,inst,ctx){for(let result2 of results)if(result2.issues.length===0)return final.value=result2.value,final;let nonaborted=results.filter(r=>!aborted(r));return nonaborted.length===1?(final.value=nonaborted[0].value,nonaborted[0]):(final.issues.push({code:"invalid_union",input:final.value,inst,errors:results.map(result2=>result2.issues.map(iss=>finalizeIssue(iss,ctx,config())))}),final)}var $ZodUnion=$constructor("$ZodUnion",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"optin",zod=>zod.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":zod.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),defineLazyInternal(inst,"optout",zod=>zod.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),defineLazyInternal(inst,"values",zod=>{if(zod.def.options.every(o=>o._zod.values))return new Set(zod.def.options.flatMap(option=>Array.from(option._zod.values)))}),defineLazyInternal(inst,"pattern",zod=>{if(zod.def.options.every(o=>o._zod.pattern)){let patterns=zod.def.options.map(o=>o._zod.pattern);return new RegExp(`^(${patterns.map(p=>cleanRegex(p.source)).join("|")})$`)}});let first=def.options.length===1?def.options[0]._zod.run:null;inst._zod.parse=(payload,ctx)=>{if(first)return first(payload,ctx);let async=!1,results=[];for(let option of def.options){let result2=option._zod.run({value:payload.value,issues:[]},ctx);if(result2 instanceof Promise)results.push(result2),async=!0;else{if(result2.issues.length===0)return result2;results.push(result2)}}return async?Promise.all(results).then(results2=>handleUnionResults(results2,payload,inst,ctx)):handleUnionResults(results,payload,inst,ctx)}});function discriminatorMap(def){let map=new Map;for(let option of def.options){let values=option._zod.propValues?.[def.discriminator];if(!values||values.size===0)throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);for(let value of values)if(map.has(value)){if(value!==void 0)throw new Error(`Duplicate discriminator value "${String(value)}"`);map.set(value,null)}else map.set(value,option)}return map}var $ZodDiscriminatedUnion=$constructor("$ZodDiscriminatedUnion",(inst,def)=>{def.inclusive=!1,$ZodUnion.init(inst,def);let _super=inst._zod.parse;defineLazyInternal(inst,"propValues",zod=>{let propValues={},undefinedCount=0;for(let option of zod.def.options){let pv=option._zod.propValues;if(!pv||Object.keys(pv).length===0)throw new Error(`Invalid discriminated union option at index "${zod.def.options.indexOf(option)}"`);pv[zod.def.discriminator]?.has(void 0)&&undefinedCount++;for(let[k,v]of Object.entries(pv)){Object.prototype.hasOwnProperty.call(propValues,k)||assignProp(propValues,k,new Set);for(let val of v)propValues[k].add(val)}}return!zod.def.unionFallback&&undefinedCount>1&&propValues[zod.def.discriminator]?.delete(void 0),propValues}),def.options.forEach((option,i)=>{let propShape=rawShape(option._zod.def);if(propShape&&!Object.prototype.hasOwnProperty.call(propShape,def.discriminator))throw new Error(`Invalid discriminated union option at index "${i}"`)});let disc=cached(()=>discriminatorMap(def));inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!isObject(input))return payload.issues.push({code:"invalid_type",expected:"object",input,inst}),payload;let value=input?.[def.discriminator],opt2=disc.value.get(value);return opt2&&(value!==void 0||ctx.direction!=="backward")?opt2._zod.run(payload,ctx):def.unionFallback||ctx.direction==="backward"?_super(payload,ctx):(payload.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:def.discriminator,options:Array.from(disc.value.keys()).filter(value2=>disc.value.get(value2)!==null),input,path:[def.discriminator],inst}),payload)}}),$ZodIntersection=$constructor("$ZodIntersection",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value,left=def.left._zod.run({value:input,issues:[]},ctx),right=def.right._zod.run({value:input,issues:[]},ctx);return left instanceof Promise||right instanceof Promise?Promise.all([left,right]).then(([left2,right2])=>handleIntersectionResults(payload,left2,right2)):handleIntersectionResults(payload,left,right)}});function mergeValues(a,b){if(a===b)return{valid:!0,data:a};if(a instanceof Date&&b instanceof Date&&+a==+b)return{valid:!0,data:a};if(isPlainObject(a)&&isPlainObject(b)){let bKeys=Object.keys(b),sharedKeys=Object.keys(a).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a,...b};Object.prototype.hasOwnProperty.call(newObj,"__proto__")&&delete newObj.__proto__;for(let key of sharedKeys){if(key==="__proto__")continue;let sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid)return{valid:!1,mergeErrorPath:[key,...sharedValue.mergeErrorPath]};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return{valid:!1,mergeErrorPath:[]};let newArray=[];for(let index=0;index<a.length;index++){let itemA=a[index],itemB=b[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1,mergeErrorPath:[index,...sharedValue.mergeErrorPath]};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(result2,left,right){let unrecKeys=new Map,unrecIssue,keyIssues=new Map,collect=(iss,side)=>{let keys;if(iss.code==="unrecognized_keys"&&!iss.path?.length)unrecIssue??(unrecIssue=iss),keys=iss.keys;else if(iss.code==="invalid_key"&&iss.origin==="record"&&iss.path?.length===1){let k=String(iss.path[0]);keyIssues.has(k)||keyIssues.set(k,iss),keys=[k]}else return!1;for(let k of keys)unrecKeys.has(k)||unrecKeys.set(k,{}),unrecKeys.get(k)[side]=!0;return!0};for(let iss of left.issues)collect(iss,"l")||result2.issues.push(iss);for(let iss of right.issues)collect(iss,"r")||result2.issues.push(iss);let bothKeys=[...unrecKeys].filter(([,f2])=>f2.l&&f2.r).map(([k])=>k);if(bothKeys.length){let aggregated=unrecIssue?bothKeys.filter(k=>unrecIssue.keys.includes(k)):[];aggregated.length&&result2.issues.push({...unrecIssue,keys:aggregated});for(let k of bothKeys)!aggregated.includes(k)&&keyIssues.has(k)&&result2.issues.push(keyIssues.get(k))}let merged=mergeValues(left.value,right.value);if(!merged.valid){if(aborted(result2))return result2;throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`)}return result2.value=merged.data,result2}var $ZodRecord=$constructor("$ZodRecord",(inst,def)=>{$ZodType.init(inst,def);let memo4=globalConfig.memoizer;memo4?.attach(inst),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!isPlainObject(input))return payload.issues.push({expected:"record",code:"invalid_type",input,inst}),payload;let proms=[],values=def.keyType._zod.values;if(values&&!def.partial){payload.value=memo4?memo4.alloc(inst,payload,{},ctx):{};let recordKeys=new Set;for(let key of values)if(typeof key=="string"||typeof key=="number"||typeof key=="symbol"){if(recordKeys.add(typeof key=="number"?key.toString():key),key==="__proto__")continue;let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(keyResult.issues.length){payload.issues.push({code:"invalid_key",origin:"record",issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config())),input:key,path:[key],inst});continue}let outKey=keyResult.value;if(outKey==="__proto__")continue;let result2=def.valueType._zod.run({value:input[key],issues:[]},ctx);result2 instanceof Promise?proms.push(result2.then(result3=>{result3.issues.length&&payload.issues.push(...prefixIssues(key,result3.issues)),payload.value[outKey]=result3.value})):(result2.issues.length&&payload.issues.push(...prefixIssues(key,result2.issues)),payload.value[outKey]=result2.value)}let unrecognized;for(let key in input)if(!recordKeys.has(key))if(def.mode==="loose"){if(key==="__proto__")continue;payload.value[key]=input[key]}else unrecognized=unrecognized??[],unrecognized.push(key);unrecognized&&unrecognized.length>0&&payload.issues.push({code:"unrecognized_keys",input,inst,keys:unrecognized,continue:!0})}else{payload.value=memo4?memo4.alloc(inst,payload,{},ctx):{};let unrecognized;for(let key of Reflect.ownKeys(input)){if(key==="__proto__"||!Object.prototype.propertyIsEnumerable.call(input,key))continue;let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof key=="string"&&number.test(key)&&keyResult.issues.length){let retryResult=def.keyType._zod.run({value:Number(key),issues:[]},ctx);if(retryResult instanceof Promise)throw new Error("Async schemas not supported in object keys currently");retryResult.issues.length===0&&(keyResult=retryResult)}if(keyResult.issues.length){def.mode==="loose"?payload.value[key]=input[key]:values?(unrecognized=unrecognized??[],unrecognized.push(key)):payload.issues.push({code:"invalid_key",origin:"record",issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config())),input:key,path:[key],inst});continue}let outKey=keyResult.value;if(outKey==="__proto__")continue;let result2=def.valueType._zod.run({value:input[key],issues:[]},ctx);result2 instanceof Promise?proms.push(result2.then(result3=>{result3.issues.length&&payload.issues.push(...prefixIssues(key,result3.issues)),payload.value[outKey]=result3.value})):(result2.issues.length&&payload.issues.push(...prefixIssues(key,result2.issues)),payload.value[outKey]=result2.value)}unrecognized&&unrecognized.length>0&&payload.issues.push({code:"unrecognized_keys",input,inst,keys:unrecognized,continue:!0})}return proms.length?Promise.all(proms).then(()=>payload):payload}});var $ZodEnum=$constructor("$ZodEnum",(inst,def)=>{$ZodType.init(inst,def);let values=getEnumValues(def.entries),valuesSet=new Set(values);inst._zod.values=valuesSet,defineLazyInternal(inst,"pattern",zod=>{let patternValues=getEnumValues(zod.def.entries).filter(k=>propertyKeyTypes.has(typeof k));return new RegExp(patternValues.length?`^(${patternValues.map(o=>escapeRegex(o.toString())).join("|")})$`:"^[^\\s\\S]$")}),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return valuesSet.has(input)||payload.issues.push({code:"invalid_value",values,input,inst}),payload}}),$ZodLiteral=$constructor("$ZodLiteral",(inst,def)=>{$ZodType.init(inst,def);let values=new Set(def.values);inst._zod.values=values,defineLazyInternal(inst,"pattern",zod=>{let vals=zod.def.values;return new RegExp(vals.length?`^(${vals.map(o=>typeof o=="string"?escapeRegex(o):o?escapeRegex(o.toString()):String(o)).join("|")})$`:"^[^\\s\\S]$")}),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return values.has(input)||payload.issues.push({code:"invalid_value",values:def.values,input,inst}),payload}});var $ZodTransform=$constructor("$ZodTransform",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="optional",globalConfig.memoizer?.guard(inst),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")throw new $ZodEncodeError(inst.constructor.name);let _out=def.transform(payload.value,payload);if(ctx.async)return(_out instanceof Promise?_out:Promise.resolve(_out)).then(output2=>(payload.value=output2,payload));if(_out instanceof Promise)throw new $ZodAsyncError;return payload.value=_out,payload}});function handleOptionalResult(payload,result2){return payload.value=result2.issues.length?void 0:result2.value,payload}var $ZodOptional=$constructor("$ZodOptional",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"optin",zod=>zod.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),inst._zod.optout="optional",defineLazyInternal(inst,"values",zod=>{let values=zod.def.innerType._zod.values;return values?new Set([...values,void 0]):void 0}),defineLazyInternal(inst,"pattern",zod=>{let pattern=zod.def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)})?$`):void 0}),inst._zod.parse=(payload,ctx)=>{if(payload.value===void 0){if(def.innerType._zod.optin!=="defaulted")return payload;let result2=def.innerType._zod.run({value:payload.value,issues:[]},ctx);return result2 instanceof Promise?result2.then(result3=>handleOptionalResult(payload,result3)):handleOptionalResult(payload,result2)}return def.innerType._zod.run(payload,ctx)}}),$ZodExactOptional=$constructor("$ZodExactOptional",(inst,def)=>{$ZodOptional.init(inst,def),defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values),defineLazyInternal(inst,"pattern",zod=>zod.def.innerType._zod.pattern),inst._zod.parse=(payload,ctx)=>def.innerType._zod.run(payload,ctx)}),$ZodNullable=$constructor("$ZodNullable",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"optin",zod=>zod.def.innerType._zod.optin),defineLazyInternal(inst,"optout",zod=>zod.def.innerType._zod.optout),defineLazyInternal(inst,"pattern",zod=>{let pattern=zod.def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)}|null)$`):void 0}),defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values?new Set([...zod.def.innerType._zod.values,null]):void 0),inst._zod.parse=(payload,ctx)=>payload.value===null?payload:def.innerType._zod.run(payload,ctx)}),$ZodDefault=$constructor("$ZodDefault",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="defaulted",defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);if(payload.value===void 0)return payload.value=def.defaultValue,payload;let result2=def.innerType._zod.run(payload,ctx);return result2 instanceof Promise?result2.then(result3=>handleDefaultResult(result3,def)):handleDefaultResult(result2,def)}});function handleDefaultResult(payload,def){return payload.value===void 0&&(payload.value=def.defaultValue),payload}var $ZodPrefault=$constructor("$ZodPrefault",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="defaulted",defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>(ctx.direction==="backward"||payload.value===void 0&&(payload.value=def.defaultValue),def.innerType._zod.run(payload,ctx))}),$ZodNonOptional=$constructor("$ZodNonOptional",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"values",zod=>{let v=zod.def.innerType._zod.values;return v?new Set([...v].filter(x=>x!==void 0)):void 0}),inst._zod.parse=(payload,ctx)=>{let result2=def.innerType._zod.run(payload,ctx);return result2 instanceof Promise?result2.then(result3=>handleNonOptionalResult(result3,inst)):handleNonOptionalResult(result2,inst)}});function handleNonOptionalResult(payload,inst){return!payload.issues.length&&payload.value===void 0&&payload.issues.push({code:"invalid_type",expected:"nonoptional",input:payload.value,inst}),payload}function handleCatchResult(payload,result2,def,ctx){return result2.issues.length?(payload.value=def.catchValue({...result2,value:payload.value,error:{issues:result2.issues.map(iss=>finalizeIssue(iss,ctx,config()))},input:payload.value}),payload):(payload.value=result2.value,result2.memo&&(payload.memo=!0),payload)}var $ZodCatch=$constructor("$ZodCatch",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"optin",zod=>zod.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),defineLazyInternal(inst,"optout",zod=>zod.def.innerType._zod.optout),defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);let result2=def.innerType._zod.run({value:payload.value,issues:[]},ctx);return result2 instanceof Promise?result2.then(result3=>handleCatchResult(payload,result3,def,ctx)):handleCatchResult(payload,result2,def,ctx)}});var $ZodPipe=$constructor("$ZodPipe",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"values",zod=>zod.def.in._zod.values),defineLazyInternal(inst,"optin",zod=>zod.def.in._zod.optin),defineLazyInternal(inst,"optout",zod=>zod.def.out._zod.optout),defineLazyInternal(inst,"propValues",zod=>zod.def.in._zod.propValues),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){let right=def.out._zod.run(payload,ctx);return right instanceof Promise?right.then(right2=>handlePipeResult(right2,def.in,ctx)):handlePipeResult(right,def.in,ctx)}let left=def.in._zod.run(payload,ctx);return left instanceof Promise?left.then(left2=>handlePipeResult(left2,def.out,ctx)):handlePipeResult(left,def.out,ctx)}});function handlePipeResult(left,next,ctx){return left.issues.some(iss=>iss.code!=="unrecognized_keys")?(left.aborted=!0,left):next._zod.run({value:left.value,issues:left.issues},ctx)}var $ZodPreprocess=$constructor("$ZodPreprocess",(inst,def)=>{$ZodPipe.init(inst,def)}),$ZodReadonly=$constructor("$ZodReadonly",(inst,def)=>{$ZodType.init(inst,def),defineLazyInternal(inst,"propValues",zod=>zod.def.innerType._zod.propValues),defineLazyInternal(inst,"values",zod=>zod.def.innerType._zod.values),defineLazyInternal(inst,"optin",zod=>zod.def.innerType?._zod?.optin),defineLazyInternal(inst,"optout",zod=>zod.def.innerType?._zod?.optout),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);let result2=def.innerType._zod.run(payload,ctx);return result2 instanceof Promise?result2.then(handleReadonlyResult):handleReadonlyResult(result2)}});function handleReadonlyResult(payload){return payload.memo||(payload.value=Object.freeze(payload.value)),payload}var $ZodLazy=$constructor("$ZodLazy",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"innerType",()=>{let d=def;return d._cachedInner||(d._cachedInner=def.getter()),d._cachedInner}),defineLazyInternal(inst,"pattern",zod=>zod.innerType?._zod?.pattern),defineLazyInternal(inst,"propValues",zod=>zod.innerType?._zod?.propValues),defineLazyInternal(inst,"optin",zod=>zod.innerType?._zod?.optin??void 0),defineLazyInternal(inst,"optout",zod=>zod.innerType?._zod?.optout??void 0),inst._zod.parse=(payload,ctx)=>inst._zod.innerType._zod.run(payload,ctx)}),$ZodCustom=$constructor("$ZodCustom",(inst,def)=>{$ZodCheck.init(inst,def),$ZodType.init(inst,def),inst._zod.parse=(payload,_)=>payload,inst._zod.check=payload=>{let input=payload.value,r=def.fn(input);if(r instanceof Promise)return r.then(r2=>handleRefineResult(r2,payload,input,inst));handleRefineResult(r,payload,input,inst)}});function handleRefineResult(result2,payload,input,inst){if(!result2){let _iss={code:"custom",input,inst,path:[...inst._zod.def.path??[]],continue:!inst._zod.def.abort};inst._zod.def.params&&(_iss.params=inst._zod.def.params),payload.issues.push(issue(_iss))}}var $ZodCyclicError=class extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform"),this.name="ZodCyclicError"}},STATE="~memo",NO_ISSUES=[];function isRef(value){return value!==null&&typeof value=="object"}function cloneIssues(issues){return issues.map(iss=>iss.path?{...iss,path:iss.path.slice()}:{...iss})}var recursive=new WeakMap,NONE=0,ASSUMED=1,PROVEN=2;function isRecursive(inst,stack,resolve){let cached2=recursive.get(inst);if(cached2!==void 0)return cached2?PROVEN:NONE;if(stack.has(inst))return PROVEN;stack.add(inst);let result2=NONE,check=child=>{if(result2!==PROVEN&&child?._zod){let answer=isRecursive(child,stack,resolve);answer>result2&&(result2=answer)}},shape=(sh,spread)=>{let answer=NONE;for(let key of Reflect.ownKeys(sh)){let desc=Object.getOwnPropertyDescriptor(sh,key);if(spread&&!desc.enumerable)continue;let child=desc.get?ASSUMED:desc.value?._zod?isRecursive(desc.value,stack,resolve):NONE;child>answer&&(answer=child)}return answer},merge3=answer=>{answer>result2&&(result2=answer)},def=inst._zod.def,kind=def.type;switch(kind){case"object":{let raw=rawShape(def);merge3(raw?shape(raw,!0):ASSUMED),check(def.catchall);break}case"array":check(def.element);break;case"tuple":for(let el of def.items)check(el);check(def.rest);break;case"record":case"map":check(def.keyType),check(def.valueType);break;case"set":check(def.valueType);break;case"union":for(let el of def.options)check(el);break;case"intersection":check(def.left),check(def.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":check(def.innerType);break;case"pipe":check(def.in),check(def.out);break;case"function":check(def.input),check(def.output);break;case"lazy":{let inner=def._cachedInner??(resolve?inst._zod.innerType:void 0);merge3(inner?isRecursive(inner,stack,!1):ASSUMED);break}case"template_literal":case"string":case"number":case"int":case"boolean":case"bigint":case"symbol":case"undefined":case"null":case"void":case"never":case"any":case"unknown":case"date":case"nan":case"enum":case"literal":case"file":case"transform":case"custom":break;default:for(let key in def){let desc=Object.getOwnPropertyDescriptor(def,key);if(!desc||desc.get)continue;let value=desc.value;if(!(!value||typeof value!="object")){if(value._zod)check(value);else if(Array.isArray(value))for(let el of value)check(el)}}}return stack.delete(inst),settle(inst,result2)}function settle(inst,answer){return answer!==ASSUMED&&recursive.set(inst,answer===PROVEN),answer}function bucketFor(state,inst){let bucket=state.buckets.get(inst);return bucket||(bucket=new WeakMap,state.buckets.set(inst,bucket)),bucket}var handoff,open=[],memo={alloc(_inst,payload,empty){let bucket=handoff;if(!bucket)return empty;handoff=void 0;let entry={value:empty,issues:null};return bucket.set(payload.value,entry),open.push(entry),empty},guard(inst){var _a3;(_a3=inst._zod).deferred??(_a3.deferred=[]),inst._zod.deferred.push(()=>{let base=inst._zod.parse,wrapped=(payload,ctx)=>{if(ctx.direction!=="backward"&&isBackEdge(ctx,payload.value))throw new $ZodCyclicError;return base(payload,ctx)};inst._zod.parse=wrapped,inst._zod.run===base&&(inst._zod.run=wrapped)})},attach(inst){var _a3;let isRecursiveInst,rechecked=!1,lastCtx,lastBucket;(_a3=inst._zod).deferred??(_a3.deferred=[]),inst._zod.deferred.push(()=>{let base=inst._zod.parse,wrapped=(payload,ctx)=>{if(isRecursiveInst===void 0){let walked=isRecursive(inst,new Set,!1);if(walked===NONE)return inst._zod.parse=base,inst._zod.run===wrapped&&(inst._zod.run=base),base(payload,ctx);walked===PROVEN||rechecked?isRecursiveInst=!0:rechecked=!0}let input=payload.value;if(!isRef(input))return base(payload,ctx);let state=ctx[STATE];state||(state={buckets:new WeakMap,backEdges:void 0},ctx[STATE]=state);let bucket;lastCtx===ctx?bucket=lastBucket:(bucket=bucketFor(state,inst),lastCtx=ctx,lastBucket=bucket);let hit=bucket.get(input);if(hit)return payload.value=hit.value,hit.issues?hit.issues.length&&payload.issues.push(...cloneIssues(hit.issues)):(payload.memo=!0,state.backEdges??(state.backEdges=new WeakSet),state.backEdges.add(hit.value)),payload;handoff=bucket;let depth=open.length,result2=base(payload,ctx);handoff=void 0;let entry=open.length>depth?open.pop():void 0;return result2 instanceof Promise?result2.then(r=>(entry&&(entry.issues=r.issues.length?cloneIssues(r.issues):NO_ISSUES),r)):(entry&&(entry.issues=result2.issues.length?cloneIssues(result2.issues):NO_ISSUES),result2)};inst._zod.parse=wrapped,inst._zod.run===base&&(inst._zod.run=wrapped)})}};function memoizer(){return memo}function isBackEdge(ctx,value){let backEdges=ctx[STATE]?.backEdges;return backEdges!==void 0&&isRef(value)&&backEdges.has(value)}var error=()=>{let Sizable={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN"};function getTypeName(type,input){return type==="number"&&typeof input=="number"&&!Number.isFinite(input)?String(input):TypeDictionary[type]??type}return issue2=>{switch(issue2.code){case"invalid_type":{let expected=getTypeName(issue2.expected),receivedType=parsedType(issue2.input),received=getTypeName(receivedType,issue2.input);return`Invalid input: expected ${expected}, received ${received}`}case"invalid_value":return issue2.values.length===1?`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`:`Invalid option: expected one of ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.exact?"exactly ":issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Too big: expected ${issue2.origin??"value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"}`:`Too big: expected ${issue2.origin??"value"} to be ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.exact?"exactly ":issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Invalid string: must start with "${_issue.prefix}"`:_issue.format==="ends_with"?`Invalid string: must end with "${_issue.suffix}"`:_issue.format==="includes"?`Invalid string: must include "${_issue.includes}"`:_issue.format==="regex"?`Invalid string: must match pattern ${_issue.pattern}`:`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${issue2.divisor}`;case"unrecognized_keys":return`Unrecognized key${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Invalid key in ${issue2.origin}`;case"invalid_union":return issue2.options&&Array.isArray(issue2.options)&&issue2.options.length>0?`Invalid discriminator value. Expected ${issue2.options.map(o=>`'${o}'`).join(" | ")}`:issue2.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${issue2.origin}`;default:return"Invalid input"}}};function en_default(){return{localeError:error()}}var _a2;var $ZodRegistry=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(schema,..._meta){let meta2=_meta[0];return this._map.set(schema,meta2),meta2&&typeof meta2=="object"&&"id"in meta2&&this._idmap.set(meta2.id,schema),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(schema){let meta2=this._map.get(schema);return meta2&&typeof meta2=="object"&&"id"in meta2&&this._idmap.delete(meta2.id),this._map.delete(schema),this}get(schema){let p=schema._zod.parent;if(p){let pm={...this.get(p)??{}};delete pm.id;let f2={...pm,...this._map.get(schema)};return Object.keys(f2).length?f2:void 0}return this._map.get(schema)}has(schema){return this._map.has(schema)}};function registry(){return new $ZodRegistry}(_a2=globalThis).__zod_globalRegistry??(_a2.__zod_globalRegistry=registry());var globalRegistry=globalThis.__zod_globalRegistry;function snapshotChecks(def){return def.checks&&(def.checks=[...def.checks]),def}function _string(Class2,params){return new Class2(snapshotChecks({type:"string",...normalizeParams(params)}))}function _coercedString(Class2,params){return new Class2(snapshotChecks({type:"string",coerce:!0,...normalizeParams(params)}))}function _email(Class2,params){return new Class2({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(params)})}function _guid(Class2,params){return new Class2({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuid(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuidv4(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(params)})}function _uuidv6(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(params)})}function _uuidv7(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(params)})}function _url(Class2,params){return new Class2({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(params)})}function _emoji2(Class2,params){return new Class2({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(params)})}function _nanoid(Class2,params){return new Class2({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid(Class2,params){return new Class2({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid2(Class2,params){return new Class2({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(params)})}function _ulid(Class2,params){return new Class2({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(params)})}function _xid(Class2,params){return new Class2({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ksuid(Class2,params){return new Class2({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv4(Class2,params){return new Class2({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv6(Class2,params){return new Class2({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv4(Class2,params){return new Class2({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv6(Class2,params){return new Class2({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64(Class2,params){return new Class2({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64url(Class2,params){return new Class2({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(params)})}function _e164(Class2,params){return new Class2({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(params)})}function _jwt(Class2,params){return new Class2({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(params)})}function _isoDateTime(Class2,params){return new Class2({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(params)})}function _isoDate(Class2,params){return new Class2({type:"string",format:"date",check:"string_format",...normalizeParams(params)})}function _isoTime(Class2,params){return new Class2({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(params)})}function _isoDuration(Class2,params){return new Class2({type:"string",format:"duration",check:"string_format",...normalizeParams(params)})}function _number(Class2,params){return new Class2(snapshotChecks({type:"number",checks:[],...normalizeParams(params)}))}function _coercedNumber(Class2,params){return new Class2(snapshotChecks({type:"number",coerce:!0,checks:[],...normalizeParams(params)}))}function _int(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(params)})}function _boolean(Class2,params){return new Class2({type:"boolean",...normalizeParams(params)})}function _coercedBoolean(Class2,params){return new Class2({type:"boolean",coerce:!0,...normalizeParams(params)})}function _coercedBigint(Class2,params){return new Class2({type:"bigint",coerce:!0,...normalizeParams(params)})}function _null2(Class2,params){return new Class2({type:"null",...normalizeParams(params)})}function _any(Class2){return new Class2({type:"any"})}function _unknown(Class2){return new Class2({type:"unknown"})}function _never(Class2,params){return new Class2({type:"never",...normalizeParams(params)})}function _coercedDate(Class2,params){return new Class2({type:"date",coerce:!0,...normalizeParams(params)})}function _lt(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:!1})}function _lte(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:!0})}function _gt(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!1})}function _gte(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!0})}function _multipleOf(value,params){return new $ZodCheckMultipleOf({check:"multiple_of",...normalizeParams(params),value})}function _maxLength(maximum,params){return new $ZodCheckMaxLength({check:"max_length",...normalizeParams(params),maximum})}function _minLength(minimum,params){return new $ZodCheckMinLength({check:"min_length",...normalizeParams(params),minimum})}function _length(length2,params){return new $ZodCheckLengthEquals({check:"length_equals",...normalizeParams(params),length:length2})}function _regex(pattern,params){return new $ZodCheckRegex({check:"string_format",format:"regex",...normalizeParams(params),pattern})}function _lowercase(params){return new $ZodCheckLowerCase({check:"string_format",format:"lowercase",...normalizeParams(params)})}function _uppercase(params){return new $ZodCheckUpperCase({check:"string_format",format:"uppercase",...normalizeParams(params)})}function _includes(includes,params){return new $ZodCheckIncludes({check:"string_format",format:"includes",...normalizeParams(params),includes})}function _startsWith(prefix,params){return new $ZodCheckStartsWith({check:"string_format",format:"starts_with",...normalizeParams(params),prefix})}function _endsWith(suffix,params){return new $ZodCheckEndsWith({check:"string_format",format:"ends_with",...normalizeParams(params),suffix})}function _overwrite(tx){return new $ZodCheckOverwrite({check:"overwrite",tx})}function _normalize(form){return _overwrite(input=>input.normalize(form))}function _trim(){return _overwrite(input=>input.trim())}function _toLowerCase(){return _overwrite(input=>input.toLowerCase())}function _toUpperCase(){return _overwrite(input=>input.toUpperCase())}function _slugify(){return _overwrite(input=>slugify(input))}function _array(Class2,element,params){return new Class2({type:"array",element,...normalizeParams(params)})}function _refine(Class2,fn,_params){return new Class2({type:"custom",check:"custom",fn,...normalizeParams(_params)})}function _superRefine(fn,params){let ch=_check(payload=>(payload.addIssue=issue2=>{if(typeof issue2=="string")payload.issues.push(issue(issue2,payload.value,ch._zod.def));else{let _issue=issue2;_issue.fatal&&(_issue.continue=!1),_issue.code??(_issue.code="custom"),"input"in _issue||(_issue.input=payload.value),_issue.inst??(_issue.inst=ch),_issue.continue??(_issue.continue=!ch._zod.def.abort),payload.issues.push(issue(_issue))}},fn(payload.value,payload)),params);return ch}function _check(fn,params){let ch=new $ZodCheck({check:"custom",...normalizeParams(params)});return ch._zod.check=fn,ch}function assignProps(target,...sources){for(let source of sources)for(let key of Reflect.ownKeys(source))Object.prototype.propertyIsEnumerable.call(source,key)&&assignProp(target,key,source[key]);return target}function initializeContext(params){let target=params?.target??"draft-2020-12";return target==="draft-4"&&(target="draft-04"),target==="draft-7"&&(target="draft-07"),{processors:params.processors??{},metadataRegistry:params?.metadata??globalRegistry,target,unrepresentable:params?.unrepresentable??"throw",override:params?.override??(()=>{}),io:params?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:params?.cycles??"ref",reused:params?.reused??"inline",intersections:[],deferred:[],external:params?.external??void 0}}function handleUnrepresentable(schema,ctx,json,params,message){let result2=typeof ctx.unrepresentable=="function"?ctx.unrepresentable({zodSchema:schema,path:params.path,message}):ctx.unrepresentable;if(result2==="any")return!1;if(result2===void 0||result2==="throw")throw new Error(message);return Object.assign(json,result2),!0}function processSchema(schema,ctx,_params={path:[],schemaPath:[]}){var _a3;let def=schema._zod.def,seen=ctx.seen.get(schema);if(seen)return seen.count++,_params.schemaPath.includes(schema)&&(seen.cycle=_params.path),seen.schema;let result2={schema:{},count:1,cycle:void 0,path:_params.path};ctx.seen.set(schema,result2),ctx.sharedDefsExtractedFor=void 0,ctx.sharedEmitDoneFor=void 0;let overrideSchema=schema._zod.toJSONSchema?.();if(overrideSchema)result2.schema=overrideSchema;else{let params={..._params,schemaPath:[..._params.schemaPath,schema],path:_params.path};if(schema._zod.processJSONSchema)schema._zod.processJSONSchema(ctx,result2.schema,params);else{let _json=result2.schema,processor=ctx.processors[def.type];if(!processor)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);processor(schema,ctx,_json,params)}let parent=schema._zod.parent;parent&&(result2.ref||(result2.ref=parent),processSchema(parent,ctx,params),ctx.seen.get(parent).isParent=!0)}let meta2=ctx.metadataRegistry.get(schema);return meta2&&assignProps(result2.schema,meta2),ctx.io==="input"&&isTransforming(schema)&&(delete result2.schema.examples,delete result2.schema.default),ctx.io==="input"&&"_prefault"in result2.schema&&((_a3=result2.schema).default??(_a3.default=result2.schema._prefault)),delete result2.schema._prefault,ctx.seen.get(schema).schema}function encodeJSONPointerSegment(segment){return segment.replace(/~/g,"~0").replace(/\//g,"~1")}function extractDefs(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");if(ctx.external&&ctx.sharedDefsExtractedFor===ctx.external)return;let idToSchema=new Map;for(let entry of ctx.seen.entries()){let id=ctx.metadataRegistry.get(entry[0])?.id;if(id){let existing=idToSchema.get(id);if(existing&&existing!==entry[0])throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);idToSchema.set(id,entry[0])}}let makeURI=entry=>{let defsSegment=ctx.target==="draft-2020-12"?"$defs":"definitions";if(ctx.external){let externalId=ctx.external.registry.get(entry[0])?.id,uriGenerator=ctx.external.uri??(id2=>id2);if(externalId)return{ref:uriGenerator(externalId)};let id=entry[1].defId??entry[1].schema.id??`schema${ctx.counter++}`;return entry[1].defId=id,{defId:id,ref:`${uriGenerator("__shared")}#/${defsSegment}/${encodeJSONPointerSegment(id)}`}}let uriPrefix="#",defUriPrefix=`${uriPrefix}/${defsSegment}/`;if(entry[1]===root&&!entry[1].schema.id)return{ref:uriPrefix};let defId=entry[1].schema.id??`__schema${ctx.counter++}`;return{defId,ref:defUriPrefix+encodeJSONPointerSegment(defId)}},extractToDef=entry=>{if(entry[1].schema.$ref)return;let seen=entry[1],{ref,defId}=makeURI(entry);seen.def={...seen.schema},defId&&(seen.defId=defId);let schema2=seen.schema;for(let key in schema2)delete schema2[key];schema2.$ref=ref};if(ctx.cycles==="throw")for(let entry of ctx.seen.entries()){let seen=entry[1];if(seen.cycle)throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/<root>
|
|
58
|
+
|
|
59
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let entry of ctx.seen.entries()){let seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){let ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}if(ctx.metadataRegistry.get(entry[0])?.id){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}seen.count>1&&ctx.reused==="ref"&&extractToDef(entry)}ctx.external&&(ctx.sharedDefsExtractedFor=ctx.external)}function compactTypeUnion(schema){let options=schema.anyOf;if(!Array.isArray(options)||options.length===0||schema.type!==void 0)return;let types2=[];for(let option of options){if(!option||typeof option!="object")return;compactTypeUnion(option);let keys=Object.keys(option);if(keys.length!==1||keys[0]!=="type")return;let type=option.type;for(let member of Array.isArray(type)?type:[type]){if(typeof member!="string")return;types2.includes(member)||types2.push(member)}}delete schema.anyOf,schema.type=types2.length===1?types2[0]:types2}var FOLDABLE_KEYS=new Set(["type","properties","required","additionalProperties"]),UNION_KEYS=["oneOf","anyOf"];function undeclaredConstraint(member){let extra=member.additionalProperties;return extra===void 0||extra===!1||typeof extra!="object"||extra===null?null:Object.keys(extra).length?extra:null}function foldObjects(members2){let objects=[];for(let member of members2){if(typeof member!="object"||member.type!=="object")return null;for(let key in member)if(!FOLDABLE_KEYS.has(key))return null;objects.push(member)}let properties={},required2=new Set;for(let object2 of objects){for(let key in object2.properties){if(Object.prototype.hasOwnProperty.call(properties,key))continue;let parts=[];for(let other of objects){let part=other.properties?.[key]??undeclaredConstraint(other);part!=null&&(parts.some(seen=>JSON.stringify(seen)===JSON.stringify(part))||parts.push(part))}let merged=parts.length===1?parts[0]:foldObjects(parts)??{allOf:parts};assignProp(properties,key,merged)}for(let key of object2.required??[])required2.add(key)}let folded={type:"object",properties};if(required2.size&&(folded.required=[...required2]),objects.every(object2=>object2.additionalProperties===!1))folded.additionalProperties=!1;else{let constraints=[];for(let object2 of objects){let constraint=undeclaredConstraint(object2);constraint&&!constraints.some(seen=>JSON.stringify(seen)===JSON.stringify(constraint))&&constraints.push(constraint)}constraints.length===1?folded.additionalProperties=constraints[0]:constraints.length>1&&(folded.additionalProperties={allOf:constraints})}return folded}function foldIntersection(json){let allOf=json.allOf;if(!Array.isArray(allOf)||allOf.length<2)return;for(let key of FOLDABLE_KEYS)if(key in json)return;let unions=allOf.filter(m=>UNION_KEYS.some(k=>Array.isArray(m[k]))),folded=null;if(!unions.length)folded=foldObjects(allOf);else{let union2=unions[0],keyword=UNION_KEYS.find(k=>Array.isArray(union2[k]));if(Object.keys(union2).length!==1)return;let rest=allOf.filter(m=>m!==union2),branches=union2[keyword].map(branch=>foldObjects([...rest,branch]));if(branches.some(b=>!b))return;folded={[keyword]:branches}}folded&&(delete json.allOf,assignProps(json,folded))}function finalize(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");let flattenRef=zodSchema=>{let seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;let schema2=seen.def??seen.schema,_cached={...schema2},ref=seen.ref;if(seen.ref=null,ref){flattenRef(ref);let refSeen=ctx.seen.get(ref),refSchema=refSeen.schema;if(refSchema.$ref&&(ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0")?(schema2.allOf=schema2.allOf??[],schema2.allOf.push(refSchema)):assignProps(schema2,refSchema),assignProps(schema2,_cached),zodSchema._zod.parent===ref)for(let key in schema2)key==="$ref"||key==="allOf"||key in _cached||delete schema2[key];if(refSchema.$ref&&refSeen.def)for(let key in schema2)key==="$ref"||key==="allOf"||key in refSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(refSeen.def[key])&&delete schema2[key]}let parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);let parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref&&(schema2.$ref=parentSeen.schema.$ref,parentSeen.def))for(let key in schema2)key==="$ref"||key==="allOf"||key in parentSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(parentSeen.def[key])&&delete schema2[key]}ctx.override({zodSchema,jsonSchema:schema2,path:seen.path??[]})};if(!ctx.external||ctx.sharedEmitDoneFor!==ctx.external){for(let entry of[...ctx.seen.entries()].reverse())flattenRef(entry[0]);if(ctx.target!=="openapi-3.0")for(let entry of ctx.seen.entries())compactTypeUnion(entry[1].def??entry[1].schema);for(let rewrite of ctx.deferred)rewrite();if(ctx.intersections.length){let carriers=new Map;for(let seen of ctx.seen.values())for(let json of[seen.schema,seen.def]){let allOf=json?.allOf;if(!Array.isArray(allOf))continue;let existing=carriers.get(allOf);existing?existing.push(json):carriers.set(allOf,[json])}for(let allOf of ctx.intersections)for(let json of carriers.get(allOf)??[])foldIntersection(json)}}let result2={};if(ctx.target==="draft-2020-12"?result2.$schema="https://json-schema.org/draft/2020-12/schema":ctx.target==="draft-07"?result2.$schema="http://json-schema.org/draft-07/schema#":ctx.target==="draft-04"?result2.$schema="http://json-schema.org/draft-04/schema#":ctx.target,ctx.external?.uri){let id=ctx.external.registry.get(schema)?.id;if(!id)throw new Error("Schema is missing an `id` property");result2.$id=ctx.external.uri(id)}assignProps(result2,root.defId?root.schema:root.def??root.schema);let rootMetaId=ctx.metadataRegistry.get(schema)?.id;rootMetaId!==void 0&&result2.id===rootMetaId&&delete result2.id;let defs=ctx.external?.defs??{};if(!ctx.external||ctx.sharedEmitDoneFor!==ctx.external)for(let entry of ctx.seen.entries()){let seen=entry[1];seen.def&&seen.defId&&(seen.def.id===seen.defId&&delete seen.def.id,assignProp(defs,seen.defId,seen.def))}ctx.external&&(ctx.sharedEmitDoneFor=ctx.external),ctx.external||Object.keys(defs).length>0&&(ctx.target==="draft-2020-12"?result2.$defs=defs:result2.definitions=defs);try{let finalized=JSON.parse(JSON.stringify(result2));return Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:!1,writable:!1}),finalized}catch{throw new Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){let ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return!1;ctx.seen.add(_schema);let def=_schema._zod.def;if(def.type==="transform")return!0;if(def.type==="array")return isTransforming(def.element,ctx);if(def.type==="set")return isTransforming(def.valueType,ctx);if(def.type==="lazy")return isTransforming(def.getter(),ctx);if(def.type==="promise"||def.type==="optional"||def.type==="nonoptional"||def.type==="nullable"||def.type==="readonly"||def.type==="default"||def.type==="prefault"||def.type==="catch")return isTransforming(def.innerType,ctx);if(def.type==="intersection")return isTransforming(def.left,ctx)||isTransforming(def.right,ctx);if(def.type==="record"||def.type==="map")return isTransforming(def.keyType,ctx)||isTransforming(def.valueType,ctx);if(def.type==="pipe")return _schema._zod.traits.has("$ZodCodec")?!0:isTransforming(def.in,ctx)||isTransforming(def.out,ctx);if(def.type==="object"){for(let key in def.shape)if(isTransforming(def.shape[key],ctx))return!0;return!1}if(def.type==="union"){for(let option of def.options)if(isTransforming(option,ctx))return!0;return!1}if(def.type==="tuple"){for(let item of def.items)if(isTransforming(item,ctx))return!0;return!!(def.rest&&isTransforming(def.rest,ctx))}return!1}var createToJSONSchemaMethod=(schema,processors={})=>params=>{let ctx=initializeContext({...params,processors});return processSchema(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)},createStandardJSONSchemaMethod=(schema,io2,processors={})=>params=>{let{libraryOptions,target}=params??{},ctx=initializeContext({...libraryOptions??{},target,io:io2,processors});return processSchema(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)};var narrowMin=(agg,key,value)=>{(agg[key]===void 0||value>agg[key])&&(agg[key]=value)},narrowMax=(agg,key,value)=>{(agg[key]===void 0||value<agg[key])&&(agg[key]=value)},narrowBoth=(agg,value)=>{narrowMin(agg,"minimum",value),narrowMax(agg,"maximum",value)},addDivisor=(agg,value)=>{agg.multipleOf??(agg.multipleOf=[]),agg.multipleOf.includes(value)||agg.multipleOf.push(value)},addPattern=(agg,pattern)=>{agg.patterns??(agg.patterns=new Set),agg.patterns.add(pattern)},intersectMime=(agg,mime)=>{agg.mime=agg.mime?agg.mime.filter(m=>mime.includes(m)):[...mime]},setFormat=(agg,format)=>{agg.format=format,format.includes("int")&&(agg.isInt=!0)},minContributor=(agg,def)=>narrowMin(agg,"minimum",def.minimum),maxContributor=(agg,def)=>narrowMax(agg,"maximum",def.maximum),formatContributor=ranges=>(agg,def)=>{setFormat(agg,def.format);let[minimum,maximum]=ranges[def.format];narrowMin(agg,"minimum",minimum),narrowMax(agg,"maximum",maximum)},contributors={greater_than:(agg,def)=>narrowMin(agg,def.inclusive?"minimum":"exclusiveMinimum",def.value),less_than:(agg,def)=>narrowMax(agg,def.inclusive?"maximum":"exclusiveMaximum",def.value),multiple_of:(agg,def)=>addDivisor(agg,def.value),number_format:formatContributor(NUMBER_FORMAT_RANGES),bigint_format:formatContributor(BIGINT_FORMAT_RANGES),min_length:minContributor,max_length:maxContributor,length_equals:(agg,def)=>narrowBoth(agg,def.length),min_size:minContributor,max_size:maxContributor,size_equals:(agg,def)=>narrowBoth(agg,def.size),string_format:(agg,def)=>{setFormat(agg,def.format),def.pattern&&addPattern(agg,def.pattern),(def.format==="base64"||def.format==="base64url")&&(agg.contentEncoding=def.format),(def.local||def.precision===-1)&&(agg.laxFormat=!0)},mime_type:(agg,def)=>intersectMime(agg,def.mime)};function aggregateChecks(schema){let agg={},def=schema._zod.def,list=schema._zod.traits.has("$ZodCheck")?[schema,...def.checks??[]]:def.checks??[];for(let ch of list)contributors[ch._zod.def.check]?.(agg,ch._zod.def);let bag=schema._zod.bag;bag.minimum!==void 0&&narrowMin(agg,"minimum",bag.minimum),bag.exclusiveMinimum!==void 0&&narrowMin(agg,"exclusiveMinimum",bag.exclusiveMinimum),bag.maximum!==void 0&&narrowMax(agg,"maximum",bag.maximum),bag.exclusiveMaximum!==void 0&&narrowMax(agg,"exclusiveMaximum",bag.exclusiveMaximum),bag.multipleOf!==void 0&&addDivisor(agg,bag.multipleOf),bag.format!==void 0&&(agg.format??(agg.format=bag.format),bag.format.includes("int")&&(agg.isInt=!0)),bag.mime&&intersectMime(agg,bag.mime);for(let pattern of bag.patterns??[])addPattern(agg,pattern);return agg}var formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},exactPatterns=new Map([[base64Charset,base64],[base64urlCharset,base64url]]),exactPattern=p=>exactPatterns.get(p)??p,stringProcessor=(schema,ctx,_json,_params)=>{let json=_json;json.type="string";let{minimum,maximum,format,patterns,contentEncoding,laxFormat}=aggregateChecks(schema);if(typeof minimum=="number"&&(json.minLength=minimum),typeof maximum=="number"&&(json.maxLength=maximum),format&&(json.format=formatMap[format]??format,json.format===""&&delete json.format,(format==="time"||laxFormat)&&delete json.format),contentEncoding&&(json.contentEncoding=contentEncoding),patterns&&patterns.size>0){let patternList=[...patterns].map(exactPattern);patternList.length===1?json.pattern=patternList[0].source:patternList.length>1&&(json.allOf=[...patternList.map(regex=>({...ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0"?{type:"string"}:{},pattern:regex.source}))])}},numberProcessor=(schema,ctx,_json,params)=>{let json=_json,{minimum,maximum,multipleOf,exclusiveMaximum,exclusiveMinimum,isInt}=aggregateChecks(schema);json.type=isInt?"integer":"number";let exMin=typeof exclusiveMinimum=="number"&&exclusiveMinimum>=(minimum??Number.NEGATIVE_INFINITY),exMax=typeof exclusiveMaximum=="number"&&exclusiveMaximum<=(maximum??Number.POSITIVE_INFINITY),legacy=ctx.target==="draft-04"||ctx.target==="openapi-3.0";if(exMin?legacy?(json.minimum=exclusiveMinimum,json.exclusiveMinimum=!0):json.exclusiveMinimum=exclusiveMinimum:typeof minimum=="number"&&(json.minimum=minimum),exMax?legacy?(json.maximum=exclusiveMaximum,json.exclusiveMaximum=!0):json.exclusiveMaximum=exclusiveMaximum:typeof maximum=="number"&&(json.maximum=maximum),multipleOf){let divisors=new Set;for(let divisor of multipleOf)Number.isFinite(divisor)&&divisor!==0?divisors.add(Math.abs(divisor)):handleUnrepresentable(schema,ctx,json,params,`A multipleOf divisor of ${divisor} cannot be represented in JSON Schema`);let[first,...rest]=divisors;first!==void 0&&(json.multipleOf=first),rest.length&&(json.allOf=[...json.allOf??[],...rest.map(m=>({multipleOf:m}))])}},booleanProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},bigintProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"BigInt cannot be represented in JSON Schema")},symbolProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Symbols cannot be represented in JSON Schema")},nullProcessor=(_schema,ctx,json,_params)=>{ctx.target==="openapi-3.0"?(json.type="string",json.nullable=!0,json.enum=[null]):json.type="null"},undefinedProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Undefined cannot be represented in JSON Schema")},voidProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Void cannot be represented in JSON Schema")},neverProcessor=(_schema,_ctx,json,_params)=>{json.not={}},anyProcessor=(_schema,_ctx,_json,_params)=>{},unknownProcessor=(_schema,_ctx,_json,_params)=>{},dateProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Date cannot be represented in JSON Schema")},enumProcessor=(schema,_ctx,json,_params)=>{let def=schema._zod.def,values=getEnumValues(def.entries);if(values.length===0){json.not={};return}values.every(v=>typeof v=="number")&&(json.type="number"),values.every(v=>typeof v=="string")&&(json.type="string"),json.enum=values},literalProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;if(def.values.length===0){json.not={};return}let vals=[];for(let val of def.values)if(val===void 0){if(handleUnrepresentable(schema,ctx,json,params,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof val=="bigint"){if(handleUnrepresentable(schema,ctx,json,params,"BigInt literals cannot be represented in JSON Schema"))return;vals.push(Number(val))}else vals.push(val);if(vals.length!==0)if(vals.length===1){let val=vals[0];json.type=val===null?"null":typeof val,ctx.target==="draft-04"||ctx.target==="openapi-3.0"?json.enum=[val]:json.const=val}else vals.every(v=>typeof v=="number")&&(json.type="number"),vals.every(v=>typeof v=="string")&&(json.type="string"),vals.every(v=>typeof v=="boolean")&&(json.type="boolean"),vals.every(v=>v===null)&&(json.type="null"),json.enum=vals},nanProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"NaN cannot be represented in JSON Schema")},templateLiteralProcessor=(schema,_ctx,json,_params)=>{let _json=json,pattern=schema._zod.pattern;if(!pattern)throw new Error("Pattern not found in template literal");_json.type="string",_json.pattern=pattern.source},fileProcessor=(schema,_ctx,json,_params)=>{let _json=json;_json.type="string",_json.format="binary",_json.contentEncoding="binary";let{minimum,maximum,mime}=aggregateChecks(schema);minimum!==void 0&&(_json.minLength=minimum),maximum!==void 0&&(_json.maxLength=maximum),mime&&(mime.length===0?_json.not={}:mime.length===1?_json.contentMediaType=mime[0]:_json.anyOf=mime.map(m=>({contentMediaType:m})))},successProcessor=(_schema,_ctx,json,_params)=>{json.type="boolean"},customProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Custom types cannot be represented in JSON Schema")},functionProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Function types cannot be represented in JSON Schema")},transformProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Transforms cannot be represented in JSON Schema")},mapProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Map cannot be represented in JSON Schema")},setProcessor=(schema,ctx,json,params)=>{handleUnrepresentable(schema,ctx,json,params,"Set cannot be represented in JSON Schema")},arrayProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def,{minimum,maximum}=aggregateChecks(schema);typeof minimum=="number"&&(json.minItems=minimum),typeof maximum=="number"&&(json.maxItems=maximum),json.type="array",json.items=processSchema(def.element,ctx,{...params,path:[...params.path,"items"]})};function inputOptin(schema){let def=schema._zod.def;return def.type==="pipe"&&def.in._zod.traits.has("$ZodTransform")?inputOptin(def.out):def.type==="catch"?inputOptin(def.innerType):schema._zod.optin}var objectProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def,shape=def.shape;if(Object.getOwnPropertySymbols(shape).length&&handleUnrepresentable(schema,ctx,json,params,"Symbol keys cannot be represented in JSON Schema"))return;json.type="object",json.properties={};for(let key in shape)assignProp(json.properties,key,processSchema(shape[key],ctx,{...params,path:[...params.path,"properties",key]}));let requiredKeys=[];for(let key of Object.keys(shape)){let field=def.shape[key];(ctx.io==="input"?inputOptin(field)===void 0:field._zod.optout===void 0)&&requiredKeys.push(key)}requiredKeys.length>0&&(json.required=requiredKeys),def.catchall?._zod.def.type==="never"?json.additionalProperties=!1:def.catchall?def.catchall&&(json.additionalProperties=processSchema(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})):ctx.io==="output"&&(json.additionalProperties=!1)},unionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,isExclusive=def.inclusive===!1,options=def.options.map((x,i)=>processSchema(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));isExclusive?json.oneOf=options:json.anyOf=options},intersectionProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,a=processSchema(def.left,ctx,{...params,path:[...params.path,"allOf",0]}),b=processSchema(def.right,ctx,{...params,path:[...params.path,"allOf",1]}),isSimpleIntersection=val=>"allOf"in val&&Object.keys(val).length===1,allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json.allOf=allOf,ctx.intersections.push(allOf)},tupleProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="array";let prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items",restPath=ctx.target==="draft-2020-12"||ctx.target==="openapi-3.0"?"items":"additionalItems",prefixItems=def.items.map((x,i)=>processSchema(x,ctx,{...params,path:[...params.path,prefixPath,i]})),rest=def.rest?processSchema(def.rest,ctx,{...params,path:[...params.path,restPath,...ctx.target==="openapi-3.0"?[def.items.length]:[]]}):null,minItems=def.items.length;for(;minItems>0;){let item=def.items[minItems-1];if(!(ctx.io==="input"?inputOptin(item)!==void 0:item._zod.optout==="optional"))break;minItems--}let maxItems=def.items.length,isClosed=!def.rest;ctx.target==="draft-2020-12"?(json.prefixItems=prefixItems,isClosed?json.items=!1:rest&&(json.items=rest),minItems>0&&(json.minItems=minItems),isClosed&&(json.maxItems=maxItems)):ctx.target==="openapi-3.0"?(json.items={anyOf:prefixItems},rest&&json.items.anyOf.push(rest),minItems>0&&(json.minItems=minItems),isClosed&&(json.maxItems=maxItems)):(json.items=prefixItems,isClosed?json.additionalItems=!1:rest&&(json.additionalItems=rest),minItems>0&&(json.minItems=minItems),isClosed&&(json.maxItems=maxItems));let{minimum,maximum}=aggregateChecks(schema);typeof minimum=="number"&&(json.minItems=minimum),typeof maximum=="number"&&(json.maxItems=maximum)};function stringifyKeyNames(bySchema,json,visited){if(json.$ref){if(visited.has(json))return json;visited.add(json);let def=bySchema.get(json)?.def;if(!def)return json;let inlined=stringifyKeyNames(bySchema,def,visited);return inlined===def?json:inlined}for(let keyword of["anyOf","oneOf"]){let branches=json[keyword];if(!Array.isArray(branches))continue;let mapped=branches.map(branch=>stringifyKeyNames(bySchema,branch,visited));mapped.some((branch,i)=>branch!==branches[i])&&(json={...json,[keyword]:mapped})}let types2=Array.isArray(json.type)?json.type:[json.type],numericType=!types2.includes("string")&&types2.some(t=>t==="number"||t==="integer"),values=json.enum??(json.const!==void 0?[json.const]:void 0);if(!numericType&&!values?.some(v=>typeof v=="number"))return json;let{minimum,maximum,exclusiveMinimum,exclusiveMaximum,multipleOf,format,id,...rest}=json;return rest.enum?rest.enum=rest.enum.map(v=>typeof v=="number"?String(v):v):typeof rest.const=="number"&&(rest.const=String(rest.const)),numericType&&(rest.type="string",values||(rest.pattern=(types2.includes("number")?number:integer).source)),rest}var pendingRecords=new WeakMap;function rewriteKeyNames(ctx){let bySchema=new Map;for(let entry of ctx.seen.values())entry.def&&!bySchema.has(entry.schema)&&bySchema.set(entry.schema,entry);let rewrites=new Map;for(let record2 of pendingRecords.get(ctx)??[]){let seen=ctx.seen.get(record2),names2=(seen?.def??seen?.schema)?.propertyNames;if(!names2||names2===!0||rewrites.has(names2))continue;let rewritten=stringifyKeyNames(bySchema,names2,new Set);rewritten!==names2&&rewrites.set(names2,rewritten)}if(rewrites.size)for(let entry of ctx.seen.values())for(let carrier of[entry.schema,entry.def]){let rewritten=carrier&&rewrites.get(carrier.propertyNames);rewritten&&(carrier.propertyNames=rewritten)}}var recordProcessor=(schema,ctx,_json,params)=>{let json=_json,def=schema._zod.def;json.type="object";let keyType=def.keyType,patterns=aggregateChecks(keyType).patterns;if(def.mode==="loose"&&patterns&&patterns.size>0){let valueSchema=processSchema(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json.patternProperties={};for(let pattern of patterns)assignProp(json.patternProperties,exactPattern(pattern).source,valueSchema)}else{if(ctx.target==="draft-07"||ctx.target==="draft-2020-12"){json.propertyNames=processSchema(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]});let pending=pendingRecords.get(ctx);pending||(pending=[],pendingRecords.set(ctx,pending),ctx.deferred.push(()=>rewriteKeyNames(ctx))),pending.push(schema)}json.additionalProperties=processSchema(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]})}let keyValues=keyType._zod.values,omittableOnInput=ctx.io==="input"&&inputOptin(def.valueType)!==void 0;if(keyValues&&!def.partial&&!omittableOnInput){let validKeyValues=[...keyValues].filter(v=>typeof v=="string"||typeof v=="number");validKeyValues.length>0&&(json.required=validKeyValues.map(String))}},nullableProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def,inner=processSchema(def.innerType,ctx,params),seen=ctx.seen.get(schema);ctx.target==="openapi-3.0"?(seen.ref=def.innerType,json.nullable=!0):json.anyOf=[inner,{type:"null"}]},nonoptionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},UNREPRESENTABLE_DEFAULT=Symbol();function serializeDefaultValue(value,schema,ctx,json,params){let unrepresentable=!1,serialized=JSON.stringify(value,(_,val)=>typeof val!="bigint"?val:(unrepresentable=!0,null));return unrepresentable?(handleUnrepresentable(schema,ctx,json,params,"BigInt defaults cannot be represented in JSON Schema"),UNREPRESENTABLE_DEFAULT):JSON.parse(serialized)}var defaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let value=serializeDefaultValue(def.defaultValue,schema,ctx,json,params);value!==UNREPRESENTABLE_DEFAULT&&(json.default=value)},prefaultProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);if(seen.ref=def.innerType,ctx.io!=="input")return;let value=serializeDefaultValue(def.defaultValue,schema,ctx,json,params);value!==UNREPRESENTABLE_DEFAULT&&(json._prefault=value)},catchProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{handleUnrepresentable(schema,ctx,json,params,"Dynamic catch values are not supported in JSON Schema");return}json.default=catchValue},pipeProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def,inIsTransform=def.in._zod.traits.has("$ZodTransform"),innerType=ctx.io==="input"?inIsTransform?def.out:def.in:def.out;processSchema(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},readonlyProcessor=(schema,ctx,json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json.readOnly=!0},promiseProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},optionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;processSchema(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},lazyProcessor=(schema,ctx,_json,params)=>{let innerType=schema._zod.innerType;processSchema(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},allProcessors={string:stringProcessor,number:numberProcessor,boolean:booleanProcessor,bigint:bigintProcessor,symbol:symbolProcessor,null:nullProcessor,undefined:undefinedProcessor,void:voidProcessor,never:neverProcessor,any:anyProcessor,unknown:unknownProcessor,date:dateProcessor,enum:enumProcessor,literal:literalProcessor,nan:nanProcessor,template_literal:templateLiteralProcessor,file:fileProcessor,success:successProcessor,custom:customProcessor,function:functionProcessor,transform:transformProcessor,map:mapProcessor,set:setProcessor,array:arrayProcessor,object:objectProcessor,union:unionProcessor,intersection:intersectionProcessor,tuple:tupleProcessor,record:recordProcessor,nullable:nullableProcessor,nonoptional:nonoptionalProcessor,default:defaultProcessor,prefault:prefaultProcessor,catch:catchProcessor,pipe:pipeProcessor,readonly:readonlyProcessor,promise:promiseProcessor,optional:optionalProcessor,lazy:lazyProcessor};function toJSONSchema(input,params){if("_idmap"in input){let registry2=input,ctx2=initializeContext({...params,processors:allProcessors}),defs={};for(let entry of registry2._idmap.entries()){let[_,schema]=entry;processSchema(schema,ctx2)}let schemas={},external={registry:registry2,uri:params?.uri,defs};ctx2.external=external;for(let entry of registry2._idmap.entries()){let[key,schema]=entry;extractDefs(ctx2,schema),assignProp(schemas,key,finalize(ctx2,schema))}if(Object.keys(defs).length>0){let defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}let ctx=initializeContext({...params,processors:allProcessors});return processSchema(input,ctx),extractDefs(ctx,input),finalize(ctx,input)}var _installedErrorProtos=new WeakSet([Object.prototype,Error.prototype]);function _lazyMethod(proto,key,make){Object.defineProperty(proto,key,{configurable:!0,enumerable:!1,get(){let value=make(this);return Object.defineProperty(this,key,{value,configurable:!0,writable:!0}),value},set(value){Object.defineProperty(this,key,{value,configurable:!0,writable:!0})}})}var initializer2=(inst,issues)=>{$ZodError.init(inst,issues),inst.name="ZodError";let proto=Object.getPrototypeOf(inst);_installedErrorProtos.has(proto)||(_installedErrorProtos.add(proto),_lazyMethod(proto,"format",self=>mapper=>formatError(self,mapper)),_lazyMethod(proto,"flatten",self=>mapper=>flattenError(self,mapper)),_lazyMethod(proto,"addIssue",self=>issue2=>{self.issues.push(issue2),self.message=JSON.stringify(self.issues,jsonStringifyReplacer,2)}),_lazyMethod(proto,"addIssues",self=>issues2=>{self.issues.push(...issues2),self.message=JSON.stringify(self.issues,jsonStringifyReplacer,2)}),Object.defineProperty(proto,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))};var ZodRealError=$constructor("ZodError",initializer2,void 0,{Parent:Error});var parse=_parse(ZodRealError),parseAsync=_parseAsync(ZodRealError),safeParse=_safeParse(ZodRealError),safeParseAsync=_safeParseAsync(ZodRealError),encode=_encode(ZodRealError),decode=_decode(ZodRealError),encodeAsync=_encodeAsync(ZodRealError),decodeAsync=_decodeAsync(ZodRealError),safeEncode=_safeEncode(ZodRealError),safeDecode=_safeDecode(ZodRealError),safeEncodeAsync=_safeEncodeAsync(ZodRealError),safeDecodeAsync=_safeDecodeAsync(ZodRealError);function _ensureDefaultLocale(){globalConfig.localeError||config(en_default())}function _ensureDefaultMemoizer(){globalConfig.memoizer||config({memoizer:memoizer()})}var ZodType=$constructor("ZodType",(inst,def)=>(_ensureDefaultLocale(),$ZodType.init(inst,def),inst.def=def,inst.type=def.type,inst),{check(...chks){let def=this.def;return this.clone(util_exports.mergeDefs(def,{checks:[...def.checks??[],...chks.map(ch=>typeof ch=="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:!0})},with(...chks){return this.check(...chks)},clone(def,params){return clone(this,def,params)},brand(){return this},register(reg,meta2){return reg.add(this,meta2),this},refine(check,params){return this.check(refine(check,params))},superRefine(refinement,params){return this.check(superRefine(refinement,params))},overwrite(fn){return this.check(_overwrite(fn))},optional(){return optional(this)},exactOptional(){return exactOptional(this)},nullable(){return nullable(this)},nullish(){return optional(nullable(this))},nonoptional(params){return nonoptional(this,params)},array(){return array(this)},or(arg){return union([this,arg])},and(arg){return intersection(this,arg)},transform(tx){return pipe(this,transform(tx))},default(d){return _default(this,d)},prefault(d){return prefault(this,d)},catch(params){return _catch(this,params)},pipe(target){return pipe(this,target)},readonly(){return readonly(this)},describe(description){let cl=this.clone();return globalRegistry.add(cl,{description}),cl},meta(...args){if(args.length===0)return globalRegistry.get(this);let cl=this.clone();return globalRegistry.add(cl,args[0]),cl},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(fn,...args){return args.length===0?fn(this):fn(this,...args)},get"~standard"(){return util_exports.hide(this,"~standard",{...standardProps(this),jsonSchema:{input:createStandardJSONSchemaMethod(this,"input"),output:createStandardJSONSchemaMethod(this,"output")}})},set"~standard"(value){util_exports.own(this,"~standard",value)},parse:function _parse2(data,params){return parse(this,data,params,{callee:_parse2})},parseAsync:async function _parseAsync2(data,params){return await parseAsync(this,data,params,{callee:_parseAsync2})},safeParse(data,params){return safeParse(this,data,params)},async safeParseAsync(data,params){return safeParseAsync(this,data,params)},get spa(){return this?.safeParseAsync},set spa(value){util_exports.own(this,"spa",value)},validate(data,params){return validate(this,data,params)},validateAsync(data,params){return validateAsync(this,data,params)},encode:function _encode2(data,params){return encode(this,data,params,{callee:_encode2})},decode:function _decode2(data,params){return decode(this,data,params,{callee:_decode2})},encodeAsync:async function _encodeAsync2(data,params){return await encodeAsync(this,data,params,{callee:_encodeAsync2})},decodeAsync:async function _decodeAsync2(data,params){return await decodeAsync(this,data,params,{callee:_decodeAsync2})},safeEncode(data,params){return safeEncode(this,data,params)},safeDecode(data,params){return safeDecode(this,data,params)},async safeEncodeAsync(data,params){return safeEncodeAsync(this,data,params)},async safeDecodeAsync(data,params){return safeDecodeAsync(this,data,params)},toJSONSchema(params){return createToJSONSchemaMethod(this,{})(params)},get description(){return globalRegistry.get(this)?.description},get _def(){return this._zod.def}}),_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>stringProcessor(inst,ctx,json,params)},util_exports.derived({format:inst=>aggregateChecks(inst).format??null,minLength:inst=>aggregateChecks(inst).minimum??null,maxLength:inst=>aggregateChecks(inst).maximum??null},{regex(...args){return this.check(_regex(...args))},includes(...args){return this.check(_includes(...args))},startsWith(...args){return this.check(_startsWith(...args))},endsWith(...args){return this.check(_endsWith(...args))},min(...args){return this.check(_minLength(...args))},max(...args){return this.check(_maxLength(...args))},length(...args){return this.check(_length(...args))},nonempty(...args){return this.check(_minLength(1,...args))},lowercase(params){return this.check(_lowercase(params))},uppercase(params){return this.check(_uppercase(params))},trim(){return this.check(_trim())},normalize(...args){return this.check(_normalize(...args))},toLowerCase(){return this.check(_toLowerCase())},toUpperCase(){return this.check(_toUpperCase())},slugify(){return this.check(_slugify())}})),ZodString=$constructor("ZodString",(inst,def)=>{$ZodString.init(inst,def),_ZodString.init(inst,def)},{email(params){return this.check(_email(ZodEmail,params))},url(params){return this.check(_url(ZodURL,params))},jwt(params){return this.check(_jwt(ZodJWT,params))},emoji(params){return this.check(_emoji2(ZodEmoji,params))},guid(params){return this.check(_guid(ZodGUID,params))},uuid(params){return this.check(_uuid(ZodUUID,params))},uuidv4(params){return this.check(_uuidv4(ZodUUID,params))},uuidv6(params){return this.check(_uuidv6(ZodUUID,params))},uuidv7(params){return this.check(_uuidv7(ZodUUID,params))},nanoid(params){return this.check(_nanoid(ZodNanoID,params))},cuid(params){return this.check(_cuid(ZodCUID,params))},cuid2(params){return this.check(_cuid2(ZodCUID2,params))},ulid(params){return this.check(_ulid(ZodULID,params))},base64(params){return this.check(_base64(ZodBase64,params))},base64url(params){return this.check(_base64url(ZodBase64URL,params))},xid(params){return this.check(_xid(ZodXID,params))},ksuid(params){return this.check(_ksuid(ZodKSUID,params))},ipv4(params){return this.check(_ipv4(ZodIPv4,params))},ipv6(params){return this.check(_ipv6(ZodIPv6,params))},cidrv4(params){return this.check(_cidrv4(ZodCIDRv4,params))},cidrv6(params){return this.check(_cidrv6(ZodCIDRv6,params))},e164(params){return this.check(_e164(ZodE164,params))},datetime(params){return this.check(_isoDateTime(ZodISODateTime,params))},date(params){return this.check(_isoDate(ZodISODate,params))},time(params){return this.check(_isoTime(ZodISOTime,params))},duration(params){return this.check(_isoDuration(ZodISODuration,params))}});function string2(params){return _string(ZodString,params)}var ZodStringFormat=$constructor("ZodStringFormat",(inst,def)=>{$ZodStringFormat.init(inst,def),_ZodString.init(inst,def)}),ZodISODateTime=$constructor("ZodISODateTime",(inst,def)=>{$ZodISODateTime.init(inst,def),ZodStringFormat.init(inst,def)}),ZodISODate=$constructor("ZodISODate",(inst,def)=>{$ZodISODate.init(inst,def),ZodStringFormat.init(inst,def)}),ZodISOTime=$constructor("ZodISOTime",(inst,def)=>{$ZodISOTime.init(inst,def),ZodStringFormat.init(inst,def)}),ZodISODuration=$constructor("ZodISODuration",(inst,def)=>{$ZodISODuration.init(inst,def),ZodStringFormat.init(inst,def)}),ZodEmail=$constructor("ZodEmail",(inst,def)=>{$ZodEmail.init(inst,def),ZodStringFormat.init(inst,def)});function email2(params){return _email(ZodEmail,params)}var ZodGUID=$constructor("ZodGUID",(inst,def)=>{$ZodGUID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodUUID=$constructor("ZodUUID",(inst,def)=>{$ZodUUID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodURL=$constructor("ZodURL",(inst,def)=>{$ZodURL.init(inst,def),ZodStringFormat.init(inst,def)});function url(params){return _url(ZodURL,params)}var ZodEmoji=$constructor("ZodEmoji",(inst,def)=>{$ZodEmoji.init(inst,def),ZodStringFormat.init(inst,def)});var ZodNanoID=$constructor("ZodNanoID",(inst,def)=>{$ZodNanoID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodCUID=$constructor("ZodCUID",(inst,def)=>{$ZodCUID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodCUID2=$constructor("ZodCUID2",(inst,def)=>{$ZodCUID2.init(inst,def),ZodStringFormat.init(inst,def)});var ZodULID=$constructor("ZodULID",(inst,def)=>{$ZodULID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodXID=$constructor("ZodXID",(inst,def)=>{$ZodXID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodKSUID=$constructor("ZodKSUID",(inst,def)=>{$ZodKSUID.init(inst,def),ZodStringFormat.init(inst,def)});var ZodIPv4=$constructor("ZodIPv4",(inst,def)=>{$ZodIPv4.init(inst,def),ZodStringFormat.init(inst,def)});var ZodIPv6=$constructor("ZodIPv6",(inst,def)=>{$ZodIPv6.init(inst,def),ZodStringFormat.init(inst,def)});var ZodCIDRv4=$constructor("ZodCIDRv4",(inst,def)=>{$ZodCIDRv4.init(inst,def),ZodStringFormat.init(inst,def)});var ZodCIDRv6=$constructor("ZodCIDRv6",(inst,def)=>{$ZodCIDRv6.init(inst,def),ZodStringFormat.init(inst,def)});var ZodBase64=$constructor("ZodBase64",(inst,def)=>{$ZodBase64.init(inst,def),ZodStringFormat.init(inst,def)});var ZodBase64URL=$constructor("ZodBase64URL",(inst,def)=>{$ZodBase64URL.init(inst,def),ZodStringFormat.init(inst,def)});var ZodE164=$constructor("ZodE164",(inst,def)=>{$ZodE164.init(inst,def),ZodStringFormat.init(inst,def)});var ZodJWT=$constructor("ZodJWT",(inst,def)=>{$ZodJWT.init(inst,def),ZodStringFormat.init(inst,def)});var ZodNumber=$constructor("ZodNumber",(inst,def)=>{$ZodNumber.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>numberProcessor(inst,ctx,json,params),inst.isFinite=!0},util_exports.derived({minValue:inst=>{let{minimum,exclusiveMinimum}=aggregateChecks(inst);return Math.max(minimum??Number.NEGATIVE_INFINITY,exclusiveMinimum??Number.NEGATIVE_INFINITY)},maxValue:inst=>{let{maximum,exclusiveMaximum}=aggregateChecks(inst);return Math.min(maximum??Number.POSITIVE_INFINITY,exclusiveMaximum??Number.POSITIVE_INFINITY)},isInt:inst=>{let{isInt,multipleOf}=aggregateChecks(inst);return!!isInt||!!multipleOf?.some(Number.isSafeInteger)},format:inst=>aggregateChecks(inst).format??null},{gt(value,params){return this.check(_gt(value,params))},gte(value,params){return this.check(_gte(value,params))},min(value,params){return this.check(_gte(value,params))},lt(value,params){return this.check(_lt(value,params))},lte(value,params){return this.check(_lte(value,params))},max(value,params){return this.check(_lte(value,params))},int(params){return this.check(int(params))},safe(params){return this.check(int(params))},positive(params){return this.check(_gt(0,params))},nonnegative(params){return this.check(_gte(0,params))},negative(params){return this.check(_lt(0,params))},nonpositive(params){return this.check(_lte(0,params))},multipleOf(value,params){return this.check(_multipleOf(value,params))},step(value,params){return this.check(_multipleOf(value,params))},finite(){return this}}));function number2(params){return _number(ZodNumber,params)}var ZodNumberFormat=$constructor("ZodNumberFormat",(inst,def)=>{$ZodNumberFormat.init(inst,def),ZodNumber.init(inst,def)});function int(params){return _int(ZodNumberFormat,params)}var ZodBoolean=$constructor("ZodBoolean",(inst,def)=>{$ZodBoolean.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>booleanProcessor(inst,ctx,json,params)});function boolean2(params){return _boolean(ZodBoolean,params)}var ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>bigintProcessor(inst,ctx,json,params)},util_exports.derived({minValue:inst=>aggregateChecks(inst).minimum??null,maxValue:inst=>aggregateChecks(inst).maximum??null,format:inst=>aggregateChecks(inst).format??null},{gte(value,params){return this.check(_gte(value,params))},min(value,params){return this.check(_gte(value,params))},gt(value,params){return this.check(_gt(value,params))},lt(value,params){return this.check(_lt(value,params))},lte(value,params){return this.check(_lte(value,params))},max(value,params){return this.check(_lte(value,params))},positive(params){return this.check(_gt(BigInt(0),params))},negative(params){return this.check(_lt(BigInt(0),params))},nonpositive(params){return this.check(_lte(BigInt(0),params))},nonnegative(params){return this.check(_gte(BigInt(0),params))},multipleOf(value,params){return this.check(_multipleOf(value,params))}}));var ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullProcessor(inst,ctx,json,params)});function _null3(params){return _null2(ZodNull,params)}var ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>anyProcessor(inst,ctx,json,params)});function any(){return _any(ZodAny)}var ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unknownProcessor(inst,ctx,json,params)});function unknown(){return _unknown(ZodUnknown)}var ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>neverProcessor(inst,ctx,json,params)});function never(params){return _never(ZodNever,params)}var ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>dateProcessor(inst,ctx,json,params),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params))},util_exports.derived({minDate:inst=>{let{minimum}=aggregateChecks(inst);return minimum?new Date(minimum):null},maxDate:inst=>{let{maximum}=aggregateChecks(inst);return maximum?new Date(maximum):null}},{}));var ZodArray=$constructor("ZodArray",(inst,def)=>{_ensureDefaultMemoizer(),$ZodArray.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>arrayProcessor(inst,ctx,json,params),inst.element=def.element},{min(n2,params){return this.check(_minLength(n2,params))},nonempty(params){return this.check(_minLength(1,params))},max(n2,params){return this.check(_maxLength(n2,params))},length(n2,params){return this.check(_length(n2,params))},unwrap(){return this.element}});function array(element,params){return _array(ZodArray,element,params)}var ZodObject=$constructor("ZodObject",(inst,def)=>{_ensureDefaultMemoizer(),$ZodObjectJIT.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>objectProcessor(inst,ctx,json,params),util_exports.installLazyProp(inst,"shape",self=>self._zod.def.shape,!1)},{keyof(){return _enum(Object.keys(this._zod.def.shape))},catchall(catchall){return this.clone(util_exports.mergeDefs(this._zod.def,{catchall}))},passthrough(){return this.clone(util_exports.mergeDefs(this._zod.def,{catchall:unknown()}))},loose(){return this.clone(util_exports.mergeDefs(this._zod.def,{catchall:unknown()}))},strict(){return this.clone(util_exports.mergeDefs(this._zod.def,{catchall:never()}))},strip(){return this.clone(util_exports.mergeDefs(this._zod.def,{catchall:void 0}))},extend(incoming){return util_exports.extend(this,incoming)},safeExtend(incoming){return util_exports.safeExtend(this,incoming)},merge(other){return util_exports.merge(this,other)},pick(mask2){return util_exports.pick(this,mask2)},omit(mask2){return util_exports.omit(this,mask2)},partial(...args){return util_exports.partial(ZodOptional,this,args[0])},exactPartial(...args){return util_exports.partial(ZodExactOptional,this,args[0],"exactPartial")},required(...args){return util_exports.required(ZodNonOptional,this,args[0])}});function object(shape,params){let def={type:"object",shape:shape??{},...util_exports.normalizeParams(params)};return new ZodObject(def)}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...util_exports.normalizeParams(params)})}var ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>unionProcessor(inst,ctx,json,params),inst.options=def.options});function union(options,params){return new ZodUnion({type:"union",options,...util_exports.normalizeParams(params)})}var ZodDiscriminatedUnion=$constructor("ZodDiscriminatedUnion",(inst,def)=>{ZodUnion.init(inst,def),$ZodDiscriminatedUnion.init(inst,def)});function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...util_exports.normalizeParams(params)})}var ZodIntersection=$constructor("ZodIntersection",(inst,def)=>{$ZodIntersection.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>intersectionProcessor(inst,ctx,json,params)});function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}var ZodRecord=$constructor("ZodRecord",(inst,def)=>{_ensureDefaultMemoizer(),$ZodRecord.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>recordProcessor(inst,ctx,json,params),inst.keyType=def.keyType,inst.valueType=def.valueType});function record(keyType,valueType,params){return!valueType||!valueType._zod?new ZodRecord({type:"record",keyType:string2(),valueType:keyType,...util_exports.normalizeParams(valueType)}):new ZodRecord({type:"record",keyType,valueType,...util_exports.normalizeParams(params)})}var ZodEnum=$constructor("ZodEnum",(inst,def)=>{$ZodEnum.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>enumProcessor(inst,ctx,json,params),inst.enum=def.entries,inst.options=[...inst._zod.values];let keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{let newEntries={};for(let value of values)if(keys.has(value))newEntries[value]=def.entries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})},inst.exclude=(values,params)=>{let newEntries={...def.entries};for(let value of values)if(keys.has(value))delete newEntries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})}});function _enum(values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}var ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>literalProcessor(inst,ctx,json,params),inst.values=new Set(def.values),Object.defineProperty(inst,"value",{get(){if(def.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return def.values[0]}})});function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...util_exports.normalizeParams(params)})}var ZodTransform=$constructor("ZodTransform",(inst,def)=>{_ensureDefaultMemoizer(),$ZodTransform.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>transformProcessor(inst,ctx,json,params),inst._zod.parse=(payload,_ctx)=>{if(_ctx.direction==="backward")throw new $ZodEncodeError(inst.constructor.name);payload.addIssue=issue2=>{if(typeof issue2=="string")payload.issues.push(util_exports.issue(issue2,payload.value,def));else{let _issue=issue2;_issue.fatal&&(_issue.continue=!1),_issue.code??(_issue.code="custom"),"input"in _issue||(_issue.input=payload.value),_issue.inst??(_issue.inst=inst),payload.issues.push(util_exports.issue(_issue))}};let output=def.transform(payload.value,payload);return output instanceof Promise?output.then(output2=>(payload.value=output2,payload)):(payload.value=output,payload)}});function transform(fn){return new ZodTransform({type:"transform",transform:fn})}var ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function optional(innerType){return new ZodOptional({type:"optional",innerType})}var ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>optionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function exactOptional(innerType){return new ZodExactOptional({type:"optional",innerType})}var ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nullableProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function nullable(innerType){return new ZodNullable({type:"nullable",innerType})}var ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>defaultProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeDefault=inst.unwrap});function _default(innerType,defaultValue){return new ZodDefault({type:"default",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodPrefault=$constructor("ZodPrefault",(inst,def)=>{$ZodPrefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>prefaultProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>nonoptionalProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...util_exports.normalizeParams(params)})}var ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>catchProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeCatch=inst.unwrap});function _catch(innerType,catchValue){return new ZodCatch({type:"catch",innerType,catchValue:typeof catchValue=="function"?catchValue:util_exports.constantCatch(catchValue)})}var ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>pipeProcessor(inst,ctx,json,params),inst.in=def.in,inst.out=def.out});function pipe(in_,out){return new ZodPipe({type:"pipe",in:in_,out})}var ZodPreprocess=$constructor("ZodPreprocess",(inst,def)=>{ZodPipe.init(inst,def),$ZodPreprocess.init(inst,def)}),ZodReadonly=$constructor("ZodReadonly",(inst,def)=>{$ZodReadonly.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>readonlyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.innerType});function readonly(innerType){return new ZodReadonly({type:"readonly",innerType})}var ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>lazyProcessor(inst,ctx,json,params),inst.unwrap=()=>inst._zod.def.getter()});function lazy(getter){return new ZodLazy({type:"lazy",getter})}var ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json,params)=>customProcessor(inst,ctx,json,params)});function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn,params){return _superRefine(fn,params)}function preprocess(fn,schema){return new ZodPreprocess({type:"pipe",in:transform(fn),out:schema})}var ZodIssueCode={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};var ZodFirstPartyTypeKind;ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={});var iso_exports={};__export(iso_exports,{ZodISODate:()=>ZodISODate,ZodISODateTime:()=>ZodISODateTime,ZodISODuration:()=>ZodISODuration,ZodISOTime:()=>ZodISOTime,date:()=>date2,datetime:()=>datetime2,duration:()=>duration2,time:()=>time2});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}function date2(params){return _isoDate(ZodISODate,params)}function time2(params){return _isoTime(ZodISOTime,params)}function duration2(params){return _isoDuration(ZodISODuration,params)}var coerce_exports={};__export(coerce_exports,{bigint:()=>bigint2,boolean:()=>boolean3,date:()=>date3,number:()=>number3,string:()=>string3});function string3(params){return _coercedString(ZodString,params)}function number3(params){return _coercedNumber(ZodNumber,params)}function boolean3(params){return _coercedBoolean(ZodBoolean,params)}function bigint2(params){return _coercedBigint(ZodBigInt,params)}function date3(params){return _coercedDate(ZodDate,params)}var LATEST_PROTOCOL_VERSION="2025-11-25";var SUPPORTED_PROTOCOL_VERSIONS=[LATEST_PROTOCOL_VERSION,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],RELATED_TASK_META_KEY="io.modelcontextprotocol/related-task",PROTOCOL_VERSION_META_KEY="io.modelcontextprotocol/protocolVersion",CLIENT_INFO_META_KEY="io.modelcontextprotocol/clientInfo",SERVER_INFO_META_KEY="io.modelcontextprotocol/serverInfo",CLIENT_CAPABILITIES_META_KEY="io.modelcontextprotocol/clientCapabilities",SUBSCRIPTION_ID_META_KEY="io.modelcontextprotocol/subscriptionId",LOG_LEVEL_META_KEY="io.modelcontextprotocol/logLevel";var JSONRPC_VERSION="2.0";var JSONValueSchema=lazy(()=>union([string2(),number2(),boolean2(),_null3(),record(string2(),JSONValueSchema),array(JSONValueSchema)])),JSONObjectSchema=record(string2(),JSONValueSchema),JSONArraySchema=array(JSONValueSchema),ProgressTokenSchema=union([string2(),number2().int()]),CursorSchema=string2(),TaskMetadataSchema=object({ttl:number2().optional()}),RelatedTaskMetadataSchema=object({taskId:string2()}),RequestMetaSchema=looseObject({progressToken:ProgressTokenSchema.optional(),[RELATED_TASK_META_KEY]:RelatedTaskMetadataSchema.optional()}),BaseRequestParamsSchema=object({_meta:RequestMetaSchema.optional()}),TaskAugmentedRequestParamsSchema=BaseRequestParamsSchema.extend({task:TaskMetadataSchema.optional()}),RequestSchema=object({method:string2(),params:BaseRequestParamsSchema.loose().optional()}),NotificationsParamsSchema=object({_meta:RequestMetaSchema.optional()}),NotificationSchema=object({method:string2(),params:NotificationsParamsSchema.loose().optional()}),ResultMetaObjectSchema=looseObject({get[SERVER_INFO_META_KEY](){return ImplementationSchema.optional().catch(void 0)}}),ResultSchema=looseObject({_meta:ResultMetaObjectSchema.optional()}),RequestIdSchema=union([string2(),number2().int()]),JSONRPCRequestSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema,...RequestSchema.shape}).strict(),JSONRPCNotificationSchema=object({jsonrpc:literal(JSONRPC_VERSION),...NotificationSchema.shape}).strict(),JSONRPCResultResponseSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema,result:ResultSchema}).strict(),JSONRPCErrorResponseSchema=object({jsonrpc:literal(JSONRPC_VERSION),id:RequestIdSchema.optional(),error:object({code:number2().int(),message:string2(),data:unknown().optional()})}).strict(),JSONRPCMessageSchema=union([JSONRPCRequestSchema,JSONRPCNotificationSchema,JSONRPCResultResponseSchema,JSONRPCErrorResponseSchema]),JSONRPCResponseSchema=union([JSONRPCResultResponseSchema,JSONRPCErrorResponseSchema]),EmptyResultSchema=ResultSchema.strict(),CancelledNotificationParamsSchema=NotificationsParamsSchema.extend({requestId:RequestIdSchema.optional(),reason:string2().optional()}),CancelledNotificationSchema=NotificationSchema.extend({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema}),IconSchema=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum(["light","dark"]).optional()}),IconsSchema=object({icons:array(IconSchema).optional()}),BaseMetadataSchema=object({name:string2(),title:string2().optional()}),ImplementationSchema=BaseMetadataSchema.extend({...BaseMetadataSchema.shape,...IconsSchema.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()}),FormElicitationCapabilitySchema=intersection(object({applyDefaults:boolean2().optional()}),JSONObjectSchema),ElicitationCapabilitySchema=preprocess(value=>value&&typeof value=="object"&&!Array.isArray(value)&&Object.keys(value).length===0?{form:{}}:value,intersection(object({form:FormElicitationCapabilitySchema.optional(),url:JSONObjectSchema.optional()}),JSONObjectSchema.optional())),ClientTasksCapabilitySchema=looseObject({list:JSONObjectSchema.optional(),cancel:JSONObjectSchema.optional(),requests:looseObject({sampling:looseObject({createMessage:JSONObjectSchema.optional()}).optional(),elicitation:looseObject({create:JSONObjectSchema.optional()}).optional()}).optional()}),ServerTasksCapabilitySchema=looseObject({list:JSONObjectSchema.optional(),cancel:JSONObjectSchema.optional(),requests:looseObject({tools:looseObject({call:JSONObjectSchema.optional()}).optional()}).optional()}),ClientCapabilitiesSchema=object({experimental:record(string2(),JSONObjectSchema).optional(),sampling:object({context:JSONObjectSchema.optional(),tools:JSONObjectSchema.optional()}).optional(),elicitation:ElicitationCapabilitySchema.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema.optional(),extensions:record(string2(),JSONObjectSchema).optional()}),InitializeRequestParamsSchema=BaseRequestParamsSchema.extend({protocolVersion:string2(),capabilities:ClientCapabilitiesSchema,clientInfo:ImplementationSchema}),InitializeRequestSchema=RequestSchema.extend({method:literal("initialize"),params:InitializeRequestParamsSchema}),ServerCapabilitiesSchema=object({experimental:record(string2(),JSONObjectSchema).optional(),logging:JSONObjectSchema.optional(),completions:JSONObjectSchema.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema.optional(),extensions:record(string2(),JSONObjectSchema).optional()}),InitializeResultSchema=ResultSchema.extend({protocolVersion:string2(),capabilities:ServerCapabilitiesSchema,serverInfo:ImplementationSchema,instructions:string2().optional()}),InitializedNotificationSchema=NotificationSchema.extend({method:literal("notifications/initialized"),params:NotificationsParamsSchema.optional()}),DiscoverRequestSchema=RequestSchema.extend({method:literal("server/discover"),params:BaseRequestParamsSchema.optional()}),DiscoverResultSchema=ResultSchema.extend({supportedVersions:array(string2()),capabilities:ServerCapabilitiesSchema,instructions:string2().optional()}),PingRequestSchema=RequestSchema.extend({method:literal("ping"),params:BaseRequestParamsSchema.optional()}),ProgressSchema=object({progress:number2(),total:optional(number2()),message:optional(string2())}),ProgressNotificationParamsSchema=object({...NotificationsParamsSchema.shape,...ProgressSchema.shape,progressToken:ProgressTokenSchema}),ProgressNotificationSchema=NotificationSchema.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema}),PaginatedRequestParamsSchema=BaseRequestParamsSchema.extend({cursor:CursorSchema.optional()}),PaginatedRequestSchema=RequestSchema.extend({params:PaginatedRequestParamsSchema.optional()}),PaginatedResultSchema=ResultSchema.extend({nextCursor:CursorSchema.optional()}),ResourceContentsSchema=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()}),TextResourceContentsSchema=ResourceContentsSchema.extend({text:string2()}),Base64Schema=string2().refine(val=>{try{return atob(val),!0}catch{return!1}},{message:"Invalid Base64 string"}),BlobResourceContentsSchema=ResourceContentsSchema.extend({blob:Base64Schema}),RoleSchema=_enum(["user","assistant"]),AnnotationsSchema=object({audience:array(RoleSchema).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:!0}).optional()}),ResourceSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema.optional(),_meta:optional(looseObject({}))}),ResourceTemplateSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema.optional(),_meta:optional(looseObject({}))}),ListResourcesRequestSchema=PaginatedRequestSchema.extend({method:literal("resources/list")}),ListResourcesResultSchema=PaginatedResultSchema.extend({resources:array(ResourceSchema)}),ListResourceTemplatesRequestSchema=PaginatedRequestSchema.extend({method:literal("resources/templates/list")}),ListResourceTemplatesResultSchema=PaginatedResultSchema.extend({resourceTemplates:array(ResourceTemplateSchema)}),ResourceRequestParamsSchema=BaseRequestParamsSchema.extend({uri:string2()}),ReadResourceRequestParamsSchema=ResourceRequestParamsSchema,ReadResourceRequestSchema=RequestSchema.extend({method:literal("resources/read"),params:ReadResourceRequestParamsSchema}),ReadResourceResultSchema=ResultSchema.extend({contents:array(union([TextResourceContentsSchema,BlobResourceContentsSchema]))}),ResourceListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema.optional()}),SubscribeRequestParamsSchema=ResourceRequestParamsSchema,SubscribeRequestSchema=RequestSchema.extend({method:literal("resources/subscribe"),params:SubscribeRequestParamsSchema}),UnsubscribeRequestParamsSchema=ResourceRequestParamsSchema,UnsubscribeRequestSchema=RequestSchema.extend({method:literal("resources/unsubscribe"),params:UnsubscribeRequestParamsSchema}),SubscriptionFilterSchema=object({toolsListChanged:boolean2().optional(),promptsListChanged:boolean2().optional(),resourcesListChanged:boolean2().optional(),resourceSubscriptions:array(string2()).optional()}),SubscriptionsListenRequestParamsSchema=BaseRequestParamsSchema.extend({notifications:SubscriptionFilterSchema}),SubscriptionsListenRequestSchema=RequestSchema.extend({method:literal("subscriptions/listen"),params:SubscriptionsListenRequestParamsSchema}),SubscriptionsAcknowledgedNotificationParamsSchema=NotificationsParamsSchema.extend({notifications:SubscriptionFilterSchema}),SubscriptionsAcknowledgedNotificationSchema=NotificationSchema.extend({method:literal("notifications/subscriptions/acknowledged"),params:SubscriptionsAcknowledgedNotificationParamsSchema}),SubscriptionsListenResultMetaSchema=ResultMetaObjectSchema.extend({[SUBSCRIPTION_ID_META_KEY]:RequestIdSchema}),SubscriptionsListenResultSchema=ResultSchema.extend({_meta:SubscriptionsListenResultMetaSchema}),ResourceUpdatedNotificationParamsSchema=NotificationsParamsSchema.extend({uri:string2()}),ResourceUpdatedNotificationSchema=NotificationSchema.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema}),PromptArgumentSchema=object({name:string2(),description:optional(string2()),required:optional(boolean2())}),PromptSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema)),_meta:optional(looseObject({}))}),ListPromptsRequestSchema=PaginatedRequestSchema.extend({method:literal("prompts/list")}),ListPromptsResultSchema=PaginatedResultSchema.extend({prompts:array(PromptSchema)}),GetPromptRequestParamsSchema=BaseRequestParamsSchema.extend({name:string2(),arguments:record(string2(),string2()).optional()}),GetPromptRequestSchema=RequestSchema.extend({method:literal("prompts/get"),params:GetPromptRequestParamsSchema}),TextContentSchema=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()}),ImageContentSchema=object({type:literal("image"),data:Base64Schema,mimeType:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()}),AudioContentSchema=object({type:literal("audio"),data:Base64Schema,mimeType:string2(),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()}),ToolUseContentSchema=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()}),EmbeddedResourceSchema=object({type:literal("resource"),resource:union([TextResourceContentsSchema,BlobResourceContentsSchema]),annotations:AnnotationsSchema.optional(),_meta:record(string2(),unknown()).optional()}),ResourceLinkSchema=ResourceSchema.extend({type:literal("resource_link")}),ContentBlockSchema=union([TextContentSchema,ImageContentSchema,AudioContentSchema,ResourceLinkSchema,EmbeddedResourceSchema]),PromptMessageSchema=object({role:RoleSchema,content:ContentBlockSchema}),GetPromptResultSchema=ResultSchema.extend({description:string2().optional(),messages:array(PromptMessageSchema)}),PromptListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema.optional()}),ToolAnnotationsSchema=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()}),ToolExecutionSchema=object({taskSupport:_enum(["required","optional","forbidden"]).optional()}),ToolSchema=object({...BaseMetadataSchema.shape,...IconsSchema.shape,description:string2().optional(),inputSchema:object({type:literal("object"),properties:record(string2(),JSONValueSchema).optional(),required:array(string2()).optional()}).catchall(unknown()),outputSchema:looseObject({$schema:string2().optional()}).optional(),annotations:ToolAnnotationsSchema.optional(),execution:ToolExecutionSchema.optional(),_meta:record(string2(),unknown()).optional()}),ListToolsRequestSchema=PaginatedRequestSchema.extend({method:literal("tools/list")}),ListToolsResultSchema=PaginatedResultSchema.extend({tools:array(ToolSchema)}),CallToolResultSchema=ResultSchema.extend({content:array(ContentBlockSchema).default([]),structuredContent:unknown().optional(),isError:boolean2().optional()}),CompatibilityCallToolResultSchema=CallToolResultSchema.or(ResultSchema.extend({toolResult:unknown()})),CallToolRequestParamsSchema=TaskAugmentedRequestParamsSchema.extend({name:string2(),arguments:record(string2(),unknown()).optional()}),CallToolRequestSchema=RequestSchema.extend({method:literal("tools/call"),params:CallToolRequestParamsSchema}),ToolListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema.optional()}),ListChangedOptionsBaseSchema=object({autoRefresh:boolean2().default(!0),debounceMs:number2().int().nonnegative().default(300)}),LoggingLevelSchema=_enum(["debug","info","notice","warning","error","critical","alert","emergency"]),SetLevelRequestParamsSchema=BaseRequestParamsSchema.extend({level:LoggingLevelSchema}),SetLevelRequestSchema=RequestSchema.extend({method:literal("logging/setLevel"),params:SetLevelRequestParamsSchema}),LoggingMessageNotificationParamsSchema=NotificationsParamsSchema.extend({level:LoggingLevelSchema,logger:string2().optional(),data:unknown()}),LoggingMessageNotificationSchema=NotificationSchema.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema}),ModelHintSchema=object({name:string2().optional()}),ModelPreferencesSchema=object({hints:array(ModelHintSchema).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()}),ToolChoiceSchema=object({mode:_enum(["auto","required","none"]).optional()}),ToolResultContentSchema=object({type:literal("tool_result"),toolUseId:string2().describe("The unique identifier for the corresponding tool call."),content:array(ContentBlockSchema),structuredContent:unknown().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()}),SamplingContentSchema=discriminatedUnion("type",[TextContentSchema,ImageContentSchema,AudioContentSchema]),SamplingMessageContentBlockSchema=discriminatedUnion("type",[TextContentSchema,ImageContentSchema,AudioContentSchema,ToolUseContentSchema,ToolResultContentSchema]),SamplingMessageSchema=object({role:RoleSchema,content:union([SamplingMessageContentBlockSchema,array(SamplingMessageContentBlockSchema)]),_meta:record(string2(),unknown()).optional()}),CreateMessageRequestParamsSchema=TaskAugmentedRequestParamsSchema.extend({messages:array(SamplingMessageSchema),modelPreferences:ModelPreferencesSchema.optional(),systemPrompt:string2().optional(),includeContext:_enum(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:JSONObjectSchema.optional(),tools:array(ToolSchema).optional(),toolChoice:ToolChoiceSchema.optional()}),CreateMessageRequestSchema=RequestSchema.extend({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema}),CreateMessageResultSchema=ResultSchema.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens"]).or(string2())),role:RoleSchema,content:SamplingContentSchema}),CreateMessageResultWithToolsSchema=ResultSchema.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(string2())),role:RoleSchema,content:union([SamplingMessageContentBlockSchema,array(SamplingMessageContentBlockSchema)])}),BooleanSchemaSchema=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()}),StringSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum(["email","uri","date","date-time"]).optional(),default:string2().optional()}),NumberSchemaSchema=object({type:_enum(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()}),UntitledSingleSelectEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()}),TitledSingleSelectEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()}),LegacyTitledEnumSchemaSchema=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()}),SingleSelectEnumSchemaSchema=union([UntitledSingleSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema]),UntitledMultiSelectEnumSchemaSchema=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()}),TitledMultiSelectEnumSchemaSchema=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()}),MultiSelectEnumSchemaSchema=union([UntitledMultiSelectEnumSchemaSchema,TitledMultiSelectEnumSchemaSchema]),EnumSchemaSchema=union([LegacyTitledEnumSchemaSchema,SingleSelectEnumSchemaSchema,MultiSelectEnumSchemaSchema]),PrimitiveSchemaDefinitionSchema=union([EnumSchemaSchema,BooleanSchemaSchema,StringSchemaSchema,NumberSchemaSchema]),ElicitRequestFormParamsSchema=TaskAugmentedRequestParamsSchema.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema),required:array(string2()).optional()}).catchall(unknown())}),ElicitRequestURLParamsSchema=TaskAugmentedRequestParamsSchema.extend({mode:literal("url"),message:string2(),elicitationId:string2(),url:string2().url()}),ElicitRequestParamsSchema=union([ElicitRequestFormParamsSchema,ElicitRequestURLParamsSchema]),ElicitRequestSchema=RequestSchema.extend({method:literal("elicitation/create"),params:ElicitRequestParamsSchema}),ElicitationCompleteNotificationParamsSchema=NotificationsParamsSchema.extend({elicitationId:string2()}),ElicitationCompleteNotificationSchema=NotificationSchema.extend({method:literal("notifications/elicitation/complete"),params:ElicitationCompleteNotificationParamsSchema}),ElicitResultSchema=ResultSchema.extend({action:_enum(["accept","decline","cancel"]),content:preprocess(val=>val===null?void 0:val,record(string2(),union([string2(),number2(),boolean2(),array(string2())])).optional())}),ResourceTemplateReferenceSchema=object({type:literal("ref/resource"),uri:string2()}),PromptReferenceSchema=object({type:literal("ref/prompt"),name:string2()}),CompleteRequestParamsSchema=BaseRequestParamsSchema.extend({ref:union([PromptReferenceSchema,ResourceTemplateReferenceSchema]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()}),CompleteRequestSchema=RequestSchema.extend({method:literal("completion/complete"),params:CompleteRequestParamsSchema}),CompleteResultSchema=ResultSchema.extend({completion:looseObject({values:array(string2()).max(100),total:optional(number2().int()),hasMore:optional(boolean2())})}),RootSchema=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()}),ListRootsRequestSchema=RequestSchema.extend({method:literal("roots/list"),params:BaseRequestParamsSchema.optional()}),ListRootsResultSchema=ResultSchema.extend({roots:array(RootSchema)}),RootsListChangedNotificationSchema=NotificationSchema.extend({method:literal("notifications/roots/list_changed"),params:NotificationsParamsSchema.optional()}),TaskCreationParamsSchema=looseObject({ttl:number2().optional(),pollInterval:number2().optional()}),TaskStatusSchema=_enum(["working","input_required","completed","failed","cancelled"]),TaskSchema=object({taskId:string2(),status:TaskStatusSchema,ttl:union([number2(),_null3()]),createdAt:string2(),lastUpdatedAt:string2(),pollInterval:optional(number2()),statusMessage:optional(string2())}),CreateTaskResultSchema=ResultSchema.extend({task:TaskSchema}),TaskStatusNotificationParamsSchema=NotificationsParamsSchema.merge(TaskSchema),TaskStatusNotificationSchema=NotificationSchema.extend({method:literal("notifications/tasks/status"),params:TaskStatusNotificationParamsSchema}),GetTaskRequestSchema=RequestSchema.extend({method:literal("tasks/get"),params:BaseRequestParamsSchema.extend({taskId:string2()})}),GetTaskResultSchema=ResultSchema.merge(TaskSchema),GetTaskPayloadRequestSchema=RequestSchema.extend({method:literal("tasks/result"),params:BaseRequestParamsSchema.extend({taskId:string2()})}),GetTaskPayloadResultSchema=ResultSchema.loose(),ListTasksRequestSchema=PaginatedRequestSchema.extend({method:literal("tasks/list")}),ListTasksResultSchema=PaginatedResultSchema.extend({tasks:array(TaskSchema)}),CancelTaskRequestSchema=RequestSchema.extend({method:literal("tasks/cancel"),params:BaseRequestParamsSchema.extend({taskId:string2()})}),CancelTaskResultSchema=ResultSchema.merge(TaskSchema),ClientRequestSchema=union([PingRequestSchema,InitializeRequestSchema,DiscoverRequestSchema,CompleteRequestSchema,SetLevelRequestSchema,GetPromptRequestSchema,ListPromptsRequestSchema,ListResourcesRequestSchema,ListResourceTemplatesRequestSchema,ReadResourceRequestSchema,SubscribeRequestSchema,UnsubscribeRequestSchema,SubscriptionsListenRequestSchema,CallToolRequestSchema,ListToolsRequestSchema]),ClientNotificationSchema=union([CancelledNotificationSchema,ProgressNotificationSchema,InitializedNotificationSchema,RootsListChangedNotificationSchema]),ClientResultSchema=union([EmptyResultSchema,CreateMessageResultSchema,CreateMessageResultWithToolsSchema,ElicitResultSchema,ListRootsResultSchema]),ServerRequestSchema=union([PingRequestSchema,CreateMessageRequestSchema,ElicitRequestSchema,ListRootsRequestSchema]),ServerNotificationSchema=union([CancelledNotificationSchema,ProgressNotificationSchema,LoggingMessageNotificationSchema,ResourceUpdatedNotificationSchema,ResourceListChangedNotificationSchema,ToolListChangedNotificationSchema,PromptListChangedNotificationSchema,SubscriptionsAcknowledgedNotificationSchema,ElicitationCompleteNotificationSchema]),ServerResultSchema=union([EmptyResultSchema,InitializeResultSchema,DiscoverResultSchema,CompleteResultSchema,GetPromptResultSchema,ListPromptsResultSchema,ListResourcesResultSchema,ListResourceTemplatesResultSchema,ReadResourceResultSchema,CallToolResultSchema,ListToolsResultSchema,SubscriptionsListenResultSchema]);var SafeUrlSchema=url().superRefine((val,ctx)=>{if(!URL.canParse(val))return ctx.addIssue({code:ZodIssueCode.custom,message:"URL must be parseable",fatal:!0}),NEVER}).refine(url2=>{let u=new URL(url2);return u.protocol!=="javascript:"&&u.protocol!=="data:"&&u.protocol!=="vbscript:"},{message:"URL cannot use javascript:, data:, or vbscript: scheme"}),OAuthProtectedResourceMetadataSchema=looseObject({resource:string2().url(),authorization_servers:array(SafeUrlSchema).optional(),jwks_uri:string2().url().optional(),scopes_supported:array(string2()).optional(),bearer_methods_supported:array(string2()).optional(),resource_signing_alg_values_supported:array(string2()).optional(),resource_name:string2().optional(),resource_documentation:string2().optional(),resource_policy_uri:string2().url().optional(),resource_tos_uri:string2().url().optional(),tls_client_certificate_bound_access_tokens:boolean2().optional(),authorization_details_types_supported:array(string2()).optional(),dpop_signing_alg_values_supported:array(string2()).optional(),dpop_bound_access_tokens_required:boolean2().optional()}),OAuthMetadataSchema=looseObject({issuer:string2(),authorization_endpoint:SafeUrlSchema,token_endpoint:SafeUrlSchema,registration_endpoint:SafeUrlSchema.optional(),scopes_supported:array(string2()).optional(),response_types_supported:array(string2()),response_modes_supported:array(string2()).optional(),grant_types_supported:array(string2()).optional(),token_endpoint_auth_methods_supported:array(string2()).optional(),token_endpoint_auth_signing_alg_values_supported:array(string2()).optional(),service_documentation:SafeUrlSchema.optional(),revocation_endpoint:SafeUrlSchema.optional(),revocation_endpoint_auth_methods_supported:array(string2()).optional(),revocation_endpoint_auth_signing_alg_values_supported:array(string2()).optional(),introspection_endpoint:string2().optional(),introspection_endpoint_auth_methods_supported:array(string2()).optional(),introspection_endpoint_auth_signing_alg_values_supported:array(string2()).optional(),code_challenge_methods_supported:array(string2()).optional(),client_id_metadata_document_supported:boolean2().optional(),authorization_response_iss_parameter_supported:boolean2().optional().catch(void 0),dpop_signing_alg_values_supported:array(string2()).optional()}),OpenIdProviderMetadataSchema=looseObject({issuer:string2(),authorization_endpoint:SafeUrlSchema,token_endpoint:SafeUrlSchema,userinfo_endpoint:SafeUrlSchema.optional(),jwks_uri:SafeUrlSchema,registration_endpoint:SafeUrlSchema.optional(),scopes_supported:array(string2()).optional(),response_types_supported:array(string2()),response_modes_supported:array(string2()).optional(),grant_types_supported:array(string2()).optional(),acr_values_supported:array(string2()).optional(),subject_types_supported:array(string2()),id_token_signing_alg_values_supported:array(string2()),id_token_encryption_alg_values_supported:array(string2()).optional(),id_token_encryption_enc_values_supported:array(string2()).optional(),userinfo_signing_alg_values_supported:array(string2()).optional(),userinfo_encryption_alg_values_supported:array(string2()).optional(),userinfo_encryption_enc_values_supported:array(string2()).optional(),request_object_signing_alg_values_supported:array(string2()).optional(),request_object_encryption_alg_values_supported:array(string2()).optional(),request_object_encryption_enc_values_supported:array(string2()).optional(),token_endpoint_auth_methods_supported:array(string2()).optional(),token_endpoint_auth_signing_alg_values_supported:array(string2()).optional(),display_values_supported:array(string2()).optional(),claim_types_supported:array(string2()).optional(),claims_supported:array(string2()).optional(),service_documentation:string2().optional(),claims_locales_supported:array(string2()).optional(),ui_locales_supported:array(string2()).optional(),claims_parameter_supported:boolean2().optional(),request_parameter_supported:boolean2().optional(),request_uri_parameter_supported:boolean2().optional(),require_request_uri_registration:boolean2().optional(),op_policy_uri:SafeUrlSchema.optional(),op_tos_uri:SafeUrlSchema.optional(),client_id_metadata_document_supported:boolean2().optional(),authorization_response_iss_parameter_supported:boolean2().optional().catch(void 0)}),OpenIdProviderDiscoveryMetadataSchema=object({...OpenIdProviderMetadataSchema.shape,...OAuthMetadataSchema.pick({code_challenge_methods_supported:!0}).shape}),OAuthTokensSchema=object({access_token:string2(),id_token:string2().optional(),token_type:string2(),expires_in:coerce_exports.number().optional(),scope:string2().optional(),refresh_token:string2().optional(),issuer:string2().optional().catch(void 0)}).strip(),IdJagTokenExchangeResponseSchema=object({issued_token_type:literal("urn:ietf:params:oauth:token-type:id-jag"),access_token:string2(),token_type:string2().optional(),expires_in:number2().optional(),scope:string2().optional()}).strip(),OAuthErrorResponseSchema=object({error:string2(),error_description:string2().optional(),error_uri:string2().optional()}),OptionalSafeUrlSchema=SafeUrlSchema.optional().or(literal("").transform(()=>{})),OAuthClientMetadataSchema=object({redirect_uris:array(SafeUrlSchema),token_endpoint_auth_method:string2().optional(),grant_types:array(string2()).optional(),response_types:array(string2()).optional(),application_type:string2().optional(),client_name:string2().optional(),client_uri:SafeUrlSchema.optional(),logo_uri:OptionalSafeUrlSchema,scope:string2().optional(),contacts:array(string2()).optional(),tos_uri:OptionalSafeUrlSchema,policy_uri:string2().optional(),jwks_uri:SafeUrlSchema.optional(),jwks:any().optional(),software_id:string2().optional(),software_version:string2().optional(),software_statement:string2().optional()}).strip(),OAuthClientInformationSchema=object({client_id:string2(),client_secret:string2().optional(),client_id_issued_at:number2().optional(),client_secret_expires_at:number2().optional(),issuer:string2().optional().catch(void 0)}).strip(),OAuthClientInformationFullSchema=OAuthClientMetadataSchema.merge(OAuthClientInformationSchema),OAuthClientRegistrationErrorSchema=object({error:string2(),error_description:string2().optional()}).strip(),OAuthTokenRevocationRequestSchema=object({token:string2(),token_type_hint:string2().optional()}).strip();var BRANDS=Symbol.for("mcp.sdk.errorBrands");function stampErrorBrands(instance,ctor){let brands=new Set,current=ctor;for(;typeof current=="function";){let brand=current.mcpBrand;Object.prototype.hasOwnProperty.call(current,"mcpBrand")&&typeof brand=="string"&&brands.add(brand),current=Object.getPrototypeOf(current)}brands.size!==0&&Object.defineProperty(instance,BRANDS,{value:brands,enumerable:!1,configurable:!0})}function brandedHasInstance(cls,value){try{if(typeof value=="object"&&value!==null&&Object.prototype.hasOwnProperty.call(cls,"mcpBrand")&&typeof cls.mcpBrand=="string"&&Object.prototype.hasOwnProperty.call(value,BRANDS)){let carried=value[BRANDS];if(carried&&typeof carried.has=="function"&&carried.has(cls.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(cls,value)}var OAuthError=class OAuthError2 extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.OAuthError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(code2,message,errorUri){super(message),this.code=code2,this.errorUri=errorUri,this.name="OAuthError",stampErrorBrands(this,new.target)}toResponseObject(){let response={error:this.code,error_description:this.message};return this.errorUri&&(response.error_uri=this.errorUri),response}static fromResponse(response){return new OAuthError2(response.error,response.error_description??response.error,response.error_uri)}},SdkErrorCode=(function(SdkErrorCode$1){return SdkErrorCode$1.NotConnected="NOT_CONNECTED",SdkErrorCode$1.AlreadyConnected="ALREADY_CONNECTED",SdkErrorCode$1.NotInitialized="NOT_INITIALIZED",SdkErrorCode$1.CapabilityNotSupported="CAPABILITY_NOT_SUPPORTED",SdkErrorCode$1.RequestTimeout="REQUEST_TIMEOUT",SdkErrorCode$1.ConnectionClosed="CONNECTION_CLOSED",SdkErrorCode$1.SendFailed="SEND_FAILED",SdkErrorCode$1.InvalidResult="INVALID_RESULT",SdkErrorCode$1.UnsupportedResultType="UNSUPPORTED_RESULT_TYPE",SdkErrorCode$1.InputRequiredRoundsExceeded="INPUT_REQUIRED_ROUNDS_EXCEEDED",SdkErrorCode$1.ListPaginationExceeded="LIST_PAGINATION_EXCEEDED",SdkErrorCode$1.MethodNotSupportedByProtocolVersion="METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION",SdkErrorCode$1.EraNegotiationFailed="ERA_NEGOTIATION_FAILED",SdkErrorCode$1.ClientHttpNotImplemented="CLIENT_HTTP_NOT_IMPLEMENTED",SdkErrorCode$1.ClientHttpAuthentication="CLIENT_HTTP_AUTHENTICATION",SdkErrorCode$1.ClientHttpForbidden="CLIENT_HTTP_FORBIDDEN",SdkErrorCode$1.ClientHttpUnexpectedContent="CLIENT_HTTP_UNEXPECTED_CONTENT",SdkErrorCode$1.ClientHttpFailedToOpenStream="CLIENT_HTTP_FAILED_TO_OPEN_STREAM",SdkErrorCode$1.ClientHttpFailedToTerminateSession="CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION",SdkErrorCode$1})({}),SdkError=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.SdkError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(code2,message,data,options){super(message,options),this.code=code2,this.data=data,this.name="SdkError",stampErrorBrands(this,new.target)}},SdkHttpError=class extends SdkError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.SdkHttpError"})}constructor(code2,message,data,options){super(code2,message,data,options),this.name="SdkHttpError"}get status(){return this.data.status}get statusText(){return this.data.statusText}};var FIRST_MODERN_PROTOCOL_VERSION="2026-07-28",SUPPORTED_MODERN_PROTOCOL_VERSIONS=[FIRST_MODERN_PROTOCOL_VERSION];function isModernProtocolVersion(version2){return version2>=FIRST_MODERN_PROTOCOL_VERSION}function legacyProtocolVersions(versions){return versions.filter(version2=>!isModernProtocolVersion(version2))}function modernProtocolVersions(versions){return versions.filter(version2=>isModernProtocolVersion(version2))}function appendTextFallbackForNonObject(result2){let sc=result2.structuredContent;return sc===void 0||!(typeof sc!="object"||sc===null||Array.isArray(sc))||(result2.content?.some(c=>c.type==="text")??!1)?result2:{...result2,content:[...result2.content??[],{type:"text",text:JSON.stringify(sc)}]}}var TOOL_RESULT_FOREIGN_FAMILY_KEYS=["task","inputRequests","requestState"];function normalizeContentlessToolResult(value){return value===null||typeof value!="object"||Array.isArray(value)||value.content!==void 0||TOOL_RESULT_FOREIGN_FAMILY_KEYS.some(key=>key in value)?value:{...value,content:[]}}function build$1(){let JSONValueSchema$1=lazy(()=>union([string2(),number2(),boolean2(),_null3(),record(string2(),JSONValueSchema$1),array(JSONValueSchema$1)])),JSONObjectSchema$1=record(string2(),JSONValueSchema$1),ProgressTokenSchema$1=union([string2(),number2().int()]),CursorSchema$1=string2(),TaskMetadataSchema$1=object({ttl:number2().optional()}),RelatedTaskMetadataSchema$1=object({taskId:string2()}),RequestMetaSchema$1=looseObject({progressToken:ProgressTokenSchema$1.optional(),"io.modelcontextprotocol/related-task":RelatedTaskMetadataSchema$1.optional()}),BaseRequestParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),TaskAugmentedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({task:TaskMetadataSchema$1.optional()}),RequestSchema$1=object({method:string2(),params:BaseRequestParamsSchema$1.loose().optional()}),NotificationsParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),NotificationSchema$1=object({method:string2(),params:NotificationsParamsSchema$1.loose().optional()}),ResultSchema$1=looseObject({_meta:RequestMetaSchema$1.optional()}),RequestIdSchema$1=union([string2(),number2().int()]),EmptyResultSchema$1=ResultSchema$1.strict(),CancelledNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({requestId:RequestIdSchema$1.optional(),reason:string2().optional()}),CancelledNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema$1}),IconSchema$1=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum(["light","dark"]).optional()}),IconsSchema$1=object({icons:array(IconSchema$1).optional()}),BaseMetadataSchema$1=object({name:string2(),title:string2().optional()}),ImplementationSchema$1=BaseMetadataSchema$1.extend({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()}),FormElicitationCapabilitySchema2=intersection(object({applyDefaults:boolean2().optional()}),JSONObjectSchema$1),ElicitationCapabilitySchema2=preprocess(value=>value&&typeof value=="object"&&!Array.isArray(value)&&Object.keys(value).length===0?{form:{}}:value,intersection(object({form:FormElicitationCapabilitySchema2.optional(),url:JSONObjectSchema$1.optional()}),JSONObjectSchema$1.optional())),ClientTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({sampling:looseObject({createMessage:JSONObjectSchema$1.optional()}).optional(),elicitation:looseObject({create:JSONObjectSchema$1.optional()}).optional()}).optional()}),ServerTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({tools:looseObject({call:JSONObjectSchema$1.optional()}).optional()}).optional()}),ClientCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),sampling:object({context:JSONObjectSchema$1.optional(),tools:JSONObjectSchema$1.optional()}).optional(),elicitation:ElicitationCapabilitySchema2.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),InitializeRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({protocolVersion:string2(),capabilities:ClientCapabilitiesSchema$1,clientInfo:ImplementationSchema$1}),InitializeRequestSchema$1=RequestSchema$1.extend({method:literal("initialize"),params:InitializeRequestParamsSchema$1}),ServerCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),logging:JSONObjectSchema$1.optional(),completions:JSONObjectSchema$1.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),InitializeResultSchema$1=ResultSchema$1.extend({protocolVersion:string2(),capabilities:ServerCapabilitiesSchema$1,serverInfo:ImplementationSchema$1,instructions:string2().optional()}),InitializedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/initialized"),params:NotificationsParamsSchema$1.optional()}),PingRequestSchema$1=RequestSchema$1.extend({method:literal("ping"),params:BaseRequestParamsSchema$1.optional()}),ProgressSchema$1=object({progress:number2(),total:optional(number2()),message:optional(string2())}),ProgressNotificationParamsSchema$1=object({...NotificationsParamsSchema$1.shape,...ProgressSchema$1.shape,progressToken:ProgressTokenSchema$1}),ProgressNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema$1}),PaginatedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({cursor:CursorSchema$1.optional()}),PaginatedRequestSchema$1=RequestSchema$1.extend({params:PaginatedRequestParamsSchema$1.optional()}),PaginatedResultSchema$1=ResultSchema$1.extend({nextCursor:CursorSchema$1.optional()}),ResourceContentsSchema$1=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()}),TextResourceContentsSchema$1=ResourceContentsSchema$1.extend({text:string2()}),Base64Schema2=string2().refine(val=>{try{return atob(val),!0}catch{return!1}},{message:"Invalid Base64 string"}),BlobResourceContentsSchema$1=ResourceContentsSchema$1.extend({blob:Base64Schema2}),RoleSchema$1=_enum(["user","assistant"]),AnnotationsSchema$1=object({audience:array(RoleSchema$1).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:!0}).optional()}),ResourceSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceTemplateSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ListResourcesRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("resources/list")}),ListResourcesResultSchema$1=PaginatedResultSchema$1.extend({resources:array(ResourceSchema$1)}),ListResourceTemplatesRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("resources/templates/list")}),ListResourceTemplatesResultSchema$1=PaginatedResultSchema$1.extend({resourceTemplates:array(ResourceTemplateSchema$1)}),ResourceRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({uri:string2()}),ReadResourceRequestParamsSchema$1=ResourceRequestParamsSchema$1,ReadResourceRequestSchema$1=RequestSchema$1.extend({method:literal("resources/read"),params:ReadResourceRequestParamsSchema$1}),ReadResourceResultSchema$1=ResultSchema$1.extend({contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),ResourceListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema$1.optional()}),SubscribeRequestParamsSchema$1=ResourceRequestParamsSchema$1,SubscribeRequestSchema$1=RequestSchema$1.extend({method:literal("resources/subscribe"),params:SubscribeRequestParamsSchema$1}),UnsubscribeRequestParamsSchema$1=ResourceRequestParamsSchema$1,UnsubscribeRequestSchema$1=RequestSchema$1.extend({method:literal("resources/unsubscribe"),params:UnsubscribeRequestParamsSchema$1}),ResourceUpdatedNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({uri:string2()}),ResourceUpdatedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema$1}),PromptArgumentSchema$1=object({name:string2(),description:optional(string2()),required:optional(boolean2())}),PromptSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema$1)),_meta:optional(looseObject({}))}),ListPromptsRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("prompts/list")}),ListPromptsResultSchema$1=PaginatedResultSchema$1.extend({prompts:array(PromptSchema$1)}),GetPromptRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({name:string2(),arguments:record(string2(),string2()).optional()}),GetPromptRequestSchema$1=RequestSchema$1.extend({method:literal("prompts/get"),params:GetPromptRequestParamsSchema$1}),TextContentSchema$1=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ImageContentSchema$1=object({type:literal("image"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),AudioContentSchema$1=object({type:literal("audio"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolUseContentSchema$1=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()}),EmbeddedResourceSchema$1=object({type:literal("resource"),resource:union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ResourceLinkSchema$1=ResourceSchema$1.extend({type:literal("resource_link")}),ContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ResourceLinkSchema$1,EmbeddedResourceSchema$1]),PromptMessageSchema$1=object({role:RoleSchema$1,content:ContentBlockSchema$1}),GetPromptResultSchema$1=ResultSchema$1.extend({description:string2().optional(),messages:array(PromptMessageSchema$1)}),PromptListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema$1.optional()}),ToolAnnotationsSchema$1=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()}),ToolExecutionSchema$1=object({taskSupport:_enum(["required","optional","forbidden"]).optional()}),ToolSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:string2().optional(),inputSchema:object({type:literal("object"),properties:record(string2(),JSONValueSchema$1).optional(),required:array(string2()).optional()}).catchall(unknown()),outputSchema:object({type:literal("object"),properties:record(string2(),JSONValueSchema$1).optional(),required:array(string2()).optional()}).catchall(unknown()).optional(),annotations:ToolAnnotationsSchema$1.optional(),execution:ToolExecutionSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ListToolsRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("tools/list")}),ListToolsResultSchema$1=PaginatedResultSchema$1.extend({tools:array(ToolSchema$1)}),CallToolResultSchema$1=ResultSchema$1.extend({content:array(ContentBlockSchema$1),structuredContent:record(string2(),unknown()).optional(),isError:boolean2().optional()}),CallToolRequestParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({name:string2(),arguments:record(string2(),unknown()).optional()}),CallToolRequestSchema$1=RequestSchema$1.extend({method:literal("tools/call"),params:CallToolRequestParamsSchema$1}),ToolListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema$1.optional()}),LoggingLevelSchema$1=_enum(["debug","info","notice","warning","error","critical","alert","emergency"]),SetLevelRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({level:LoggingLevelSchema$1}),SetLevelRequestSchema$1=RequestSchema$1.extend({method:literal("logging/setLevel"),params:SetLevelRequestParamsSchema$1}),LoggingMessageNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({level:LoggingLevelSchema$1,logger:string2().optional(),data:unknown()}),LoggingMessageNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema$1}),ModelHintSchema$1=object({name:string2().optional()}),ModelPreferencesSchema$1=object({hints:array(ModelHintSchema$1).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()}),ToolChoiceSchema$1=object({mode:_enum(["auto","required","none"]).optional()}),ToolResultContentSchema$1=object({type:literal("tool_result"),toolUseId:string2().describe("The unique identifier for the corresponding tool call."),content:array(ContentBlockSchema$1),structuredContent:object({}).loose().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()}),SamplingContentSchema$1=discriminatedUnion("type",[TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1]),SamplingMessageContentBlockSchema$1=discriminatedUnion("type",[TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ToolUseContentSchema$1,ToolResultContentSchema$1]),SamplingMessageSchema$1=object({role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)]),_meta:record(string2(),unknown()).optional()}),CreateMessageRequestParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({messages:array(SamplingMessageSchema$1),modelPreferences:ModelPreferencesSchema$1.optional(),systemPrompt:string2().optional(),includeContext:_enum(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:JSONObjectSchema$1.optional(),tools:array(ToolSchema$1).optional(),toolChoice:ToolChoiceSchema$1.optional()}),CreateMessageRequestSchema$1=RequestSchema$1.extend({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema$1}),CreateMessageResultSchema$1=ResultSchema$1.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens"]).or(string2())),role:RoleSchema$1,content:SamplingContentSchema$1}),CreateMessageResultWithToolsSchema$1=ResultSchema$1.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(string2())),role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)])}),BooleanSchemaSchema$1=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()}),StringSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum(["email","uri","date","date-time"]).optional(),default:string2().optional()}),NumberSchemaSchema$1=object({type:_enum(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()}),UntitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()}),TitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()}),LegacyTitledEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()}),SingleSelectEnumSchemaSchema$1=union([UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema$1]),UntitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()}),TitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()}),MultiSelectEnumSchemaSchema$1=union([UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema$1]),EnumSchemaSchema$1=union([LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema$1]),PrimitiveSchemaDefinitionSchema$1=union([EnumSchemaSchema$1,BooleanSchemaSchema$1,StringSchemaSchema$1,NumberSchemaSchema$1]),ElicitRequestFormParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema$1),required:array(string2()).optional()}).catchall(unknown())}),ElicitRequestURLParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("url"),message:string2(),elicitationId:string2(),url:string2().url()}),ElicitRequestParamsSchema$1=union([ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema$1]),ElicitRequestSchema$1=RequestSchema$1.extend({method:literal("elicitation/create"),params:ElicitRequestParamsSchema$1}),ElicitationCompleteNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({elicitationId:string2()}),ElicitationCompleteNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/elicitation/complete"),params:ElicitationCompleteNotificationParamsSchema$1}),ElicitResultSchema$1=ResultSchema$1.extend({action:_enum(["accept","decline","cancel"]),content:preprocess(val=>val===null?void 0:val,record(string2(),union([string2(),number2(),boolean2(),array(string2())])).optional())}),ResourceTemplateReferenceSchema$1=object({type:literal("ref/resource"),uri:string2()}),PromptReferenceSchema$1=object({type:literal("ref/prompt"),name:string2()}),CompleteRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({ref:union([PromptReferenceSchema$1,ResourceTemplateReferenceSchema$1]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()}),CompleteRequestSchema$1=RequestSchema$1.extend({method:literal("completion/complete"),params:CompleteRequestParamsSchema$1}),CompleteResultSchema$1=ResultSchema$1.extend({completion:looseObject({values:array(string2()).max(100),total:optional(number2().int()),hasMore:optional(boolean2())})}),RootSchema$1=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()}),ListRootsRequestSchema$1=RequestSchema$1.extend({method:literal("roots/list"),params:BaseRequestParamsSchema$1.optional()}),ListRootsResultSchema$1=ResultSchema$1.extend({roots:array(RootSchema$1)}),RootsListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/roots/list_changed"),params:NotificationsParamsSchema$1.optional()}),TaskCreationParamsSchema$1=looseObject({ttl:number2().optional(),pollInterval:number2().optional()}),TaskStatusSchema$1=_enum(["working","input_required","completed","failed","cancelled"]),TaskSchema$1=object({taskId:string2(),status:TaskStatusSchema$1,ttl:union([number2(),_null3()]),createdAt:string2(),lastUpdatedAt:string2(),pollInterval:optional(number2()),statusMessage:optional(string2())}),CreateTaskResultSchema$1=ResultSchema$1.extend({task:TaskSchema$1}),TaskStatusNotificationParamsSchema$1=NotificationsParamsSchema$1.merge(TaskSchema$1),TaskStatusNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tasks/status"),params:TaskStatusNotificationParamsSchema$1}),GetTaskRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/get"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})}),GetTaskResultSchema$1=ResultSchema$1.merge(TaskSchema$1),GetTaskPayloadRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/result"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})}),GetTaskPayloadResultSchema$1=ResultSchema$1.loose(),ListTasksRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("tasks/list")}),ListTasksResultSchema$1=PaginatedResultSchema$1.extend({tasks:array(TaskSchema$1)}),CancelTaskRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/cancel"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})});return{JSONValueSchema:JSONValueSchema$1,JSONObjectSchema:JSONObjectSchema$1,ProgressTokenSchema:ProgressTokenSchema$1,CursorSchema:CursorSchema$1,TaskMetadataSchema:TaskMetadataSchema$1,RelatedTaskMetadataSchema:RelatedTaskMetadataSchema$1,RequestMetaSchema:RequestMetaSchema$1,BaseRequestParamsSchema:BaseRequestParamsSchema$1,TaskAugmentedRequestParamsSchema:TaskAugmentedRequestParamsSchema$1,RequestSchema:RequestSchema$1,NotificationsParamsSchema:NotificationsParamsSchema$1,NotificationSchema:NotificationSchema$1,ResultSchema:ResultSchema$1,RequestIdSchema:RequestIdSchema$1,EmptyResultSchema:EmptyResultSchema$1,CancelledNotificationParamsSchema:CancelledNotificationParamsSchema$1,CancelledNotificationSchema:CancelledNotificationSchema$1,IconSchema:IconSchema$1,IconsSchema:IconsSchema$1,BaseMetadataSchema:BaseMetadataSchema$1,ImplementationSchema:ImplementationSchema$1,ClientTasksCapabilitySchema:ClientTasksCapabilitySchema$1,ServerTasksCapabilitySchema:ServerTasksCapabilitySchema$1,ClientCapabilitiesSchema:ClientCapabilitiesSchema$1,InitializeRequestParamsSchema:InitializeRequestParamsSchema$1,InitializeRequestSchema:InitializeRequestSchema$1,ServerCapabilitiesSchema:ServerCapabilitiesSchema$1,InitializeResultSchema:InitializeResultSchema$1,InitializedNotificationSchema:InitializedNotificationSchema$1,PingRequestSchema:PingRequestSchema$1,ProgressSchema:ProgressSchema$1,ProgressNotificationParamsSchema:ProgressNotificationParamsSchema$1,ProgressNotificationSchema:ProgressNotificationSchema$1,PaginatedRequestParamsSchema:PaginatedRequestParamsSchema$1,PaginatedRequestSchema:PaginatedRequestSchema$1,PaginatedResultSchema:PaginatedResultSchema$1,ResourceContentsSchema:ResourceContentsSchema$1,TextResourceContentsSchema:TextResourceContentsSchema$1,BlobResourceContentsSchema:BlobResourceContentsSchema$1,RoleSchema:RoleSchema$1,AnnotationsSchema:AnnotationsSchema$1,ResourceSchema:ResourceSchema$1,ResourceTemplateSchema:ResourceTemplateSchema$1,ListResourcesRequestSchema:ListResourcesRequestSchema$1,ListResourcesResultSchema:ListResourcesResultSchema$1,ListResourceTemplatesRequestSchema:ListResourceTemplatesRequestSchema$1,ListResourceTemplatesResultSchema:ListResourceTemplatesResultSchema$1,ResourceRequestParamsSchema:ResourceRequestParamsSchema$1,ReadResourceRequestParamsSchema:ReadResourceRequestParamsSchema$1,ReadResourceRequestSchema:ReadResourceRequestSchema$1,ReadResourceResultSchema:ReadResourceResultSchema$1,ResourceListChangedNotificationSchema:ResourceListChangedNotificationSchema$1,SubscribeRequestParamsSchema:SubscribeRequestParamsSchema$1,SubscribeRequestSchema:SubscribeRequestSchema$1,UnsubscribeRequestParamsSchema:UnsubscribeRequestParamsSchema$1,UnsubscribeRequestSchema:UnsubscribeRequestSchema$1,ResourceUpdatedNotificationParamsSchema:ResourceUpdatedNotificationParamsSchema$1,ResourceUpdatedNotificationSchema:ResourceUpdatedNotificationSchema$1,PromptArgumentSchema:PromptArgumentSchema$1,PromptSchema:PromptSchema$1,ListPromptsRequestSchema:ListPromptsRequestSchema$1,ListPromptsResultSchema:ListPromptsResultSchema$1,GetPromptRequestParamsSchema:GetPromptRequestParamsSchema$1,GetPromptRequestSchema:GetPromptRequestSchema$1,TextContentSchema:TextContentSchema$1,ImageContentSchema:ImageContentSchema$1,AudioContentSchema:AudioContentSchema$1,ToolUseContentSchema:ToolUseContentSchema$1,EmbeddedResourceSchema:EmbeddedResourceSchema$1,ResourceLinkSchema:ResourceLinkSchema$1,ContentBlockSchema:ContentBlockSchema$1,PromptMessageSchema:PromptMessageSchema$1,GetPromptResultSchema:GetPromptResultSchema$1,PromptListChangedNotificationSchema:PromptListChangedNotificationSchema$1,ToolAnnotationsSchema:ToolAnnotationsSchema$1,ToolExecutionSchema:ToolExecutionSchema$1,ToolSchema:ToolSchema$1,ListToolsRequestSchema:ListToolsRequestSchema$1,ListToolsResultSchema:ListToolsResultSchema$1,CallToolResultSchema:CallToolResultSchema$1,CallToolRequestParamsSchema:CallToolRequestParamsSchema$1,CallToolRequestSchema:CallToolRequestSchema$1,ToolListChangedNotificationSchema:ToolListChangedNotificationSchema$1,LoggingLevelSchema:LoggingLevelSchema$1,SetLevelRequestParamsSchema:SetLevelRequestParamsSchema$1,SetLevelRequestSchema:SetLevelRequestSchema$1,LoggingMessageNotificationParamsSchema:LoggingMessageNotificationParamsSchema$1,LoggingMessageNotificationSchema:LoggingMessageNotificationSchema$1,ModelHintSchema:ModelHintSchema$1,ModelPreferencesSchema:ModelPreferencesSchema$1,ToolChoiceSchema:ToolChoiceSchema$1,ToolResultContentSchema:ToolResultContentSchema$1,SamplingContentSchema:SamplingContentSchema$1,SamplingMessageContentBlockSchema:SamplingMessageContentBlockSchema$1,SamplingMessageSchema:SamplingMessageSchema$1,CreateMessageRequestParamsSchema:CreateMessageRequestParamsSchema$1,CreateMessageRequestSchema:CreateMessageRequestSchema$1,CreateMessageResultSchema:CreateMessageResultSchema$1,CreateMessageResultWithToolsSchema:CreateMessageResultWithToolsSchema$1,BooleanSchemaSchema:BooleanSchemaSchema$1,StringSchemaSchema:StringSchemaSchema$1,NumberSchemaSchema:NumberSchemaSchema$1,UntitledSingleSelectEnumSchemaSchema:UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema:TitledSingleSelectEnumSchemaSchema$1,LegacyTitledEnumSchemaSchema:LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema:SingleSelectEnumSchemaSchema$1,UntitledMultiSelectEnumSchemaSchema:UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema:TitledMultiSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema:MultiSelectEnumSchemaSchema$1,EnumSchemaSchema:EnumSchemaSchema$1,PrimitiveSchemaDefinitionSchema:PrimitiveSchemaDefinitionSchema$1,ElicitRequestFormParamsSchema:ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema:ElicitRequestURLParamsSchema$1,ElicitRequestParamsSchema:ElicitRequestParamsSchema$1,ElicitRequestSchema:ElicitRequestSchema$1,ElicitationCompleteNotificationParamsSchema:ElicitationCompleteNotificationParamsSchema$1,ElicitationCompleteNotificationSchema:ElicitationCompleteNotificationSchema$1,ElicitResultSchema:ElicitResultSchema$1,ResourceTemplateReferenceSchema:ResourceTemplateReferenceSchema$1,PromptReferenceSchema:PromptReferenceSchema$1,CompleteRequestParamsSchema:CompleteRequestParamsSchema$1,CompleteRequestSchema:CompleteRequestSchema$1,CompleteResultSchema:CompleteResultSchema$1,RootSchema:RootSchema$1,ListRootsRequestSchema:ListRootsRequestSchema$1,ListRootsResultSchema:ListRootsResultSchema$1,RootsListChangedNotificationSchema:RootsListChangedNotificationSchema$1,TaskCreationParamsSchema:TaskCreationParamsSchema$1,TaskStatusSchema:TaskStatusSchema$1,TaskSchema:TaskSchema$1,CreateTaskResultSchema:CreateTaskResultSchema$1,TaskStatusNotificationParamsSchema:TaskStatusNotificationParamsSchema$1,TaskStatusNotificationSchema:TaskStatusNotificationSchema$1,GetTaskRequestSchema:GetTaskRequestSchema$1,GetTaskResultSchema:GetTaskResultSchema$1,GetTaskPayloadRequestSchema:GetTaskPayloadRequestSchema$1,GetTaskPayloadResultSchema:GetTaskPayloadResultSchema$1,ListTasksRequestSchema:ListTasksRequestSchema$1,ListTasksResultSchema:ListTasksResultSchema$1,CancelTaskRequestSchema:CancelTaskRequestSchema$1,CancelTaskResultSchema:ResultSchema$1.merge(TaskSchema$1),ClientRequestSchema:union([PingRequestSchema$1,InitializeRequestSchema$1,CompleteRequestSchema$1,SetLevelRequestSchema$1,GetPromptRequestSchema$1,ListPromptsRequestSchema$1,ListResourcesRequestSchema$1,ListResourceTemplatesRequestSchema$1,ReadResourceRequestSchema$1,SubscribeRequestSchema$1,UnsubscribeRequestSchema$1,CallToolRequestSchema$1,ListToolsRequestSchema$1,GetTaskRequestSchema$1,GetTaskPayloadRequestSchema$1,ListTasksRequestSchema$1,CancelTaskRequestSchema$1]),ClientNotificationSchema:union([CancelledNotificationSchema$1,ProgressNotificationSchema$1,InitializedNotificationSchema$1,RootsListChangedNotificationSchema$1,TaskStatusNotificationSchema$1]),ClientResultSchema:union([EmptyResultSchema$1,CreateMessageResultSchema$1,CreateMessageResultWithToolsSchema$1,ElicitResultSchema$1,ListRootsResultSchema$1,GetTaskResultSchema$1,ListTasksResultSchema$1,CreateTaskResultSchema$1]),ServerRequestSchema:union([PingRequestSchema$1,CreateMessageRequestSchema$1,ElicitRequestSchema$1,ListRootsRequestSchema$1,GetTaskRequestSchema$1,GetTaskPayloadRequestSchema$1,ListTasksRequestSchema$1,CancelTaskRequestSchema$1]),ServerNotificationSchema:union([CancelledNotificationSchema$1,ProgressNotificationSchema$1,LoggingMessageNotificationSchema$1,ResourceUpdatedNotificationSchema$1,ResourceListChangedNotificationSchema$1,ToolListChangedNotificationSchema$1,PromptListChangedNotificationSchema$1,TaskStatusNotificationSchema$1,ElicitationCompleteNotificationSchema$1]),ServerResultSchema:union([EmptyResultSchema$1,InitializeResultSchema$1,CompleteResultSchema$1,GetPromptResultSchema$1,ListPromptsResultSchema$1,ListResourcesResultSchema$1,ListResourceTemplatesResultSchema$1,ReadResourceResultSchema$1,CallToolResultSchema$1,ListToolsResultSchema$1,GetTaskResultSchema$1,ListTasksResultSchema$1,CreateTaskResultSchema$1]),CallToolResultWireSchema:unknown().superRefine((value,ctx)=>{if(!(typeof value!="object"||value===null||Array.isArray(value)||value.content!==void 0)){for(let key of TOOL_RESULT_FOREIGN_FAMILY_KEYS)if(key in value){ctx.addIssue({code:"custom",message:`content is required when the body carries '${key}' \u2014 another result family cannot default into an empty tools/call success`});return}}}).transform(normalizeContentlessToolResult).pipe(CallToolResultSchema$1)}}var memo$1;function buildSchemas2025(){return memo$1??=build$1()}function isNonObjectJsonSchemaRoot(json){return json.type!=="object"}var REF_REWRITE_DATA_POSITION_KEYS=new Set(["const","enum","default","examples"]),REF_REWRITE_NAME_MAP_KEYS=new Set(["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"]);function establishesNewBase(id){return id!==void 0&&!(typeof id=="string"&&id.startsWith("#"))}function wrapOutputSchemaForLegacy(natural){let $schema=typeof natural.$schema=="string"?natural.$schema:void 0;if(establishesNewBase(natural.$id))return{...$schema!==void 0&&{$schema},type:"object",properties:{result:natural},required:["result"]};let convertRecursiveRefs=declares2019Dialect(natural.$schema)&&natural.$recursiveAnchor!==!0,rewriteRefs=(node2,parentIsNameMap)=>{if(Array.isArray(node2))return node2.map(item=>rewriteRefs(item,!1));if(node2===null||typeof node2!="object"||!parentIsNameMap&&establishesNewBase(node2.$id))return node2;let out={},convertedRecursion=!1;for(let[k,v]of Object.entries(node2))parentIsNameMap?out[k]=rewriteRefs(v,!1):(k==="$ref"||k==="$dynamicRef")&&typeof v=="string"?out[k]=v==="#"?"#/properties/result":v.startsWith("#/")?`#/properties/result${v.slice(1)}`:v:k==="$recursiveRef"&&v==="#"&&convertRecursiveRefs?convertedRecursion=!0:REF_REWRITE_DATA_POSITION_KEYS.has(k)?out[k]=v:REF_REWRITE_NAME_MAP_KEYS.has(k)?out[k]=rewriteRefs(v,!0):out[k]=rewriteRefs(v,!1);return convertedRecursion&&("$ref"in out?out.allOf=[...Array.isArray(out.allOf)?out.allOf:[],{$ref:"#/properties/result"}]:out.$ref="#/properties/result"),out};return{...$schema!==void 0&&{$schema},type:"object",properties:{result:rewriteRefs(natural,!1)},required:["result"]}}var requestMethodKeys$1={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},notificationMethodKeys$1={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},resultMethodKeys={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},maps$1;function registryMaps(){if(maps$1)return maps$1;let s=buildSchemas2025();return maps$1={requestSchemas:{ping:s.PingRequestSchema,initialize:s.InitializeRequestSchema,"completion/complete":s.CompleteRequestSchema,"logging/setLevel":s.SetLevelRequestSchema,"prompts/get":s.GetPromptRequestSchema,"prompts/list":s.ListPromptsRequestSchema,"resources/list":s.ListResourcesRequestSchema,"resources/templates/list":s.ListResourceTemplatesRequestSchema,"resources/read":s.ReadResourceRequestSchema,"resources/subscribe":s.SubscribeRequestSchema,"resources/unsubscribe":s.UnsubscribeRequestSchema,"tools/call":s.CallToolRequestSchema,"tools/list":s.ListToolsRequestSchema,"tasks/get":s.GetTaskRequestSchema,"tasks/result":s.GetTaskPayloadRequestSchema,"tasks/list":s.ListTasksRequestSchema,"tasks/cancel":s.CancelTaskRequestSchema,"sampling/createMessage":s.CreateMessageRequestSchema,"elicitation/create":s.ElicitRequestSchema,"roots/list":s.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":s.CancelledNotificationSchema,"notifications/progress":s.ProgressNotificationSchema,"notifications/initialized":s.InitializedNotificationSchema,"notifications/roots/list_changed":s.RootsListChangedNotificationSchema,"notifications/tasks/status":s.TaskStatusNotificationSchema,"notifications/message":s.LoggingMessageNotificationSchema,"notifications/resources/updated":s.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":s.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":s.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":s.PromptListChangedNotificationSchema,"notifications/elicitation/complete":s.ElicitationCompleteNotificationSchema},resultSchemas:{ping:s.EmptyResultSchema,initialize:s.InitializeResultSchema,"completion/complete":s.CompleteResultSchema,"logging/setLevel":s.EmptyResultSchema,"prompts/get":s.GetPromptResultSchema,"prompts/list":s.ListPromptsResultSchema,"resources/list":s.ListResourcesResultSchema,"resources/templates/list":s.ListResourceTemplatesResultSchema,"resources/read":s.ReadResourceResultSchema,"resources/subscribe":s.EmptyResultSchema,"resources/unsubscribe":s.EmptyResultSchema,"tools/call":s.CallToolResultWireSchema,"tools/list":s.ListToolsResultSchema,"sampling/createMessage":s.CreateMessageResultWithToolsSchema,"elicitation/create":s.ElicitResultSchema,"roots/list":s.ListRootsResultSchema}},maps$1}function hasRequestMethod2025(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys$1,method)}function hasNotificationMethod2025(method){return Object.prototype.hasOwnProperty.call(notificationMethodKeys$1,method)}function hasResultMethod(method){return Object.prototype.hasOwnProperty.call(resultMethodKeys,method)}function getResultSchema(method){return hasResultMethod(method)?registryMaps().resultSchemas[method]:void 0}function getRequestSchema(method){return hasRequestMethod2025(method)?registryMaps().requestSchemas[method]:void 0}function getNotificationSchema(method){return hasNotificationMethod2025(method)?registryMaps().notificationSchemas[method]:void 0}var rev2025RequestMethods=Object.keys(requestMethodKeys$1),rev2025NotificationMethods=Object.keys(notificationMethodKeys$1);function isPlainObject$5(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function triState$1(schema,raw){if(schema===void 0)return{ok:!1,reason:"not-in-era"};let parsed=schema.safeParse(raw);return parsed.success?{ok:!0,value:parsed.data}:{ok:!1,reason:"invalid",message:String(parsed.error)}}var NOT_IN_ERA$1={ok:!1,reason:"not-in-era"};function toolNeedsLegacyWrap(t){return isPlainObject$5(t)&&isPlainObject$5(t.outputSchema)&&isNonObjectJsonSchemaRoot(t.outputSchema)}var rev2025Codec={era:"2025-11-25",hasRequestMethod:hasRequestMethod2025,hasNotificationMethod:hasNotificationMethod2025,validateRequest:(method,raw)=>triState$1(getRequestSchema(method),raw),validateResult:(method,raw)=>triState$1(getResultSchema(method),raw),validateNotification:(method,raw)=>triState$1(getNotificationSchema(method),raw),hasInputRequestMethod:()=>!1,validateInputRequest:()=>NOT_IN_ERA$1,validateInputResponse:()=>NOT_IN_ERA$1,samplingResultVariant:((hasTools,raw)=>{let s=buildSchemas2025();return triState$1(hasTools?s.CreateMessageResultWithToolsSchema:s.CreateMessageResultSchema,raw)}),outboundEnvelope:_material=>{},validateEnvelopeMeta:_meta=>[],projectCallToolResult(result2,advertisedOutputSchema){let withText=appendTextFallbackForNonObject(result2),sc=withText.structuredContent;if(sc===void 0)return withText;let valueIsNonObject=typeof sc!="object"||sc===null||Array.isArray(sc),schemaWrapped=advertisedOutputSchema!==void 0&&isNonObjectJsonSchemaRoot(advertisedOutputSchema);return!valueIsNonObject&&!schemaWrapped?withText:{...withText,structuredContent:{result:sc}}},decodeResult(_method,raw){if(isPlainObject$5(raw)&&"resultType"in raw){let stripped={...raw};return delete stripped.resultType,{kind:"complete",result:stripped}}return{kind:"complete",result:raw}},encodeResult(method,result2){if(method!=="tools/list")return result2;let tools=result2.tools;return!Array.isArray(tools)||!tools.some(t=>toolNeedsLegacyWrap(t))?result2:{...result2,tools:tools.map(t=>toolNeedsLegacyWrap(t)?{...t,outputSchema:wrapOutputSchemaForLegacy(t.outputSchema)}:t)}},encodeErrorCode:code2=>code2===-32002?-32602:code2,checkInboundEnvelope:_material=>{}};function build(){let JSONValueSchema$1=lazy(()=>union([string2(),number2(),boolean2(),_null3(),record(string2(),JSONValueSchema$1),array(JSONValueSchema$1)])),JSONObjectSchema$1=record(string2(),JSONValueSchema$1),ProgressTokenSchema$1=union([string2(),number2().int()]),CursorSchema$1=string2(),RequestIdSchema$1=union([string2(),number2().int()]),RoleSchema$1=_enum(["user","assistant"]),LoggingLevelSchema$1=_enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Base64Schema2=string2().refine(val=>{try{return atob(val),!0}catch{return!1}},{message:"Invalid Base64 string"}),TaskMetadataSchema$1=object({ttl:number2().optional()}),RelatedTaskMetadataSchema$1=object({taskId:string2()}),RequestMetaSchema$1=looseObject({progressToken:ProgressTokenSchema$1.optional(),"io.modelcontextprotocol/related-task":RelatedTaskMetadataSchema$1.optional()}),BaseRequestParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),TaskAugmentedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({task:TaskMetadataSchema$1.optional()}),NotificationsParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),NotificationSchema$1=object({method:string2(),params:NotificationsParamsSchema$1.loose().optional()}),IconSchema$1=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum(["light","dark"]).optional()}),IconsSchema$1=object({icons:array(IconSchema$1).optional()}),BaseMetadataSchema$1=object({name:string2(),title:string2().optional()}),ImplementationSchema$1=BaseMetadataSchema$1.extend({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()}),FormElicitationCapabilitySchema2=intersection(object({applyDefaults:boolean2().optional()}),JSONObjectSchema$1),ElicitationCapabilitySchema2=preprocess(value=>value&&typeof value=="object"&&!Array.isArray(value)&&Object.keys(value).length===0?{form:{}}:value,intersection(object({form:FormElicitationCapabilitySchema2.optional(),url:JSONObjectSchema$1.optional()}),JSONObjectSchema$1.optional())),ClientTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({sampling:looseObject({createMessage:JSONObjectSchema$1.optional()}).optional(),elicitation:looseObject({create:JSONObjectSchema$1.optional()}).optional()}).optional()}),ServerTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({tools:looseObject({call:JSONObjectSchema$1.optional()}).optional()}).optional()}),ClientCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),sampling:object({context:JSONObjectSchema$1.optional(),tools:JSONObjectSchema$1.optional()}).optional(),elicitation:ElicitationCapabilitySchema2.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),ServerCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),logging:JSONObjectSchema$1.optional(),completions:JSONObjectSchema$1.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),ProgressSchema$1=object({progress:number2(),total:optional(number2()),message:optional(string2())}),ProgressNotificationParamsSchema$1=object({...NotificationsParamsSchema$1.shape,...ProgressSchema$1.shape,progressToken:ProgressTokenSchema$1}),ProgressNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema$1}),LoggingMessageNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({level:LoggingLevelSchema$1,logger:string2().optional(),data:unknown()}),LoggingMessageNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema$1}),ResourceContentsSchema$1=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()}),TextResourceContentsSchema$1=ResourceContentsSchema$1.extend({text:string2()}),BlobResourceContentsSchema$1=ResourceContentsSchema$1.extend({blob:Base64Schema2}),AnnotationsSchema$1=object({audience:array(RoleSchema$1).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:!0}).optional()}),ResourceSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceTemplateSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema$1.optional()}),ResourceUpdatedNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({uri:string2()}),ResourceUpdatedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema$1}),PromptArgumentSchema$1=object({name:string2(),description:optional(string2()),required:optional(boolean2())}),PromptSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema$1)),_meta:optional(looseObject({}))}),PromptListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema$1.optional()}),TextContentSchema$1=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ImageContentSchema$1=object({type:literal("image"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),AudioContentSchema$1=object({type:literal("audio"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolUseContentSchema$1=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()}),EmbeddedResourceSchema$1=object({type:literal("resource"),resource:union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ResourceLinkSchema$1=ResourceSchema$1.extend({type:literal("resource_link")}),ContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ResourceLinkSchema$1,EmbeddedResourceSchema$1]),PromptMessageSchema$1=object({role:RoleSchema$1,content:ContentBlockSchema$1}),ToolAnnotationsSchema$1=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()}),ToolListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema$1.optional()}),ModelHintSchema$1=object({name:string2().optional()}),ModelPreferencesSchema$1=object({hints:array(ModelHintSchema$1).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()}),ToolChoiceSchema$1=object({mode:_enum(["auto","required","none"]).optional()}),BooleanSchemaSchema$1=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()}),StringSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum(["email","uri","date","date-time"]).optional(),default:string2().optional()}),NumberSchemaSchema$1=object({type:_enum(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()}),UntitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()}),TitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()}),LegacyTitledEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()}),SingleSelectEnumSchemaSchema$1=union([UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema$1]),UntitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()}),TitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()}),MultiSelectEnumSchemaSchema$1=union([UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema$1]),EnumSchemaSchema$1=union([LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema$1]),PrimitiveSchemaDefinitionSchema$1=union([EnumSchemaSchema$1,BooleanSchemaSchema$1,StringSchemaSchema$1,NumberSchemaSchema$1]),ElicitRequestFormParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema$1),required:array(string2()).optional()}).catchall(unknown())}),ResourceTemplateReferenceSchema$1=object({type:literal("ref/resource"),uri:string2()}),PromptReferenceSchema$1=object({type:literal("ref/prompt"),name:string2()}),RootSchema$1=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()}),sharedClientCapabilityShape=ClientCapabilitiesSchema$1.shape,ClientCapabilities2026Schema=object({experimental:sharedClientCapabilityShape.experimental,sampling:sharedClientCapabilityShape.sampling,elicitation:sharedClientCapabilityShape.elicitation,roots:sharedClientCapabilityShape.roots,extensions:sharedClientCapabilityShape.extensions}),sharedServerCapabilityShape=ServerCapabilitiesSchema$1.shape,ServerCapabilities2026Schema=object({experimental:sharedServerCapabilityShape.experimental,logging:sharedServerCapabilityShape.logging,completions:sharedServerCapabilityShape.completions,prompts:sharedServerCapabilityShape.prompts,resources:sharedServerCapabilityShape.resources,tools:sharedServerCapabilityShape.tools,extensions:sharedServerCapabilityShape.extensions}),RequestMetaEnvelopeSchema=looseObject({progressToken:ProgressTokenSchema$1.optional(),[PROTOCOL_VERSION_META_KEY]:string2(),[CLIENT_INFO_META_KEY]:ImplementationSchema$1.optional(),[CLIENT_CAPABILITIES_META_KEY]:ClientCapabilities2026Schema,[LOG_LEVEL_META_KEY]:LoggingLevelSchema$1.optional()}),ToolSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:string2().optional(),inputSchema:looseObject({$schema:string2().optional(),type:literal("object")}),outputSchema:looseObject({$schema:string2().optional()}).optional(),annotations:ToolAnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolResultContentSchema$1=object({type:literal("tool_result"),toolUseId:string2(),content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()}),SamplingMessageContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ToolUseContentSchema$1,ToolResultContentSchema$1]),SamplingMessageSchema$1=object({role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)]),_meta:record(string2(),unknown()).optional()}),ResultTypeSchema=string2(),ResultMetaSchema=looseObject({[SERVER_INFO_META_KEY]:ImplementationSchema$1.optional().catch(void 0)}),wireMeta=ResultMetaSchema.optional();function wireResult(shape){return looseObject({_meta:wireMeta,resultType:ResultTypeSchema.default("complete"),...shape})}let ResultSchema$1=wireResult({}),PaginatedResultSchema$1=wireResult({nextCursor:CursorSchema$1.optional()}),CallToolResultSchema$1=wireResult({content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional()}),ListToolsResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),tools:array(ToolSchema$1),nextCursor:CursorSchema$1.optional()}),ListPromptsResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),prompts:array(PromptSchema$1),nextCursor:CursorSchema$1.optional()}),GetPromptResultSchema$1=wireResult({description:string2().optional(),messages:array(PromptMessageSchema$1)}),ListResourcesResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resources:array(ResourceSchema$1),nextCursor:CursorSchema$1.optional()}),ListResourceTemplatesResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resourceTemplates:array(ResourceTemplateSchema$1),nextCursor:CursorSchema$1.optional()}),ReadResourceResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),CompleteResultSchema$1=wireResult({completion:object({values:array(string2()).max(100),total:number2().int().optional(),hasMore:boolean2().optional()}).loose()}),CacheableResultSchema=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"])}),DiscoverResultSchema$1=wireResult({ttlMs:number2().int().min(0).catch(0),cacheScope:_enum(["public","private"]).catch("private"),supportedVersions:array(string2()),capabilities:ServerCapabilities2026Schema,instructions:string2().optional()}),CreateMessageRequestParamsSchema$1=object({messages:array(SamplingMessageSchema$1),modelPreferences:ModelPreferencesSchema$1.optional(),systemPrompt:string2().optional(),includeContext:_enum(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:JSONObjectSchema$1.optional(),tools:array(ToolSchema$1).optional(),toolChoice:ToolChoiceSchema$1.optional()}),CreateMessageRequestSchema$1=object({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema$1}),ListRootsRequestSchema$1=object({method:literal("roots/list"),params:object({_meta:record(string2(),unknown()).optional()}).optional()}),CreateMessageResultSchema$1=object({...SamplingMessageSchema$1.shape,model:string2(),stopReason:string2().optional()}),ListRootsResultSchema$1=object({roots:array(RootSchema$1)}),ElicitResultSchema$1=object({action:_enum(["accept","decline","cancel"]),content:record(string2(),union([string2(),number2(),boolean2(),array(string2())])).optional()}),ElicitRequestURLParamsSchema$1=object({mode:literal("url"),message:string2(),url:string2().url()}),ElicitRequestParamsSchema$1=union([ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema$1]),ElicitRequestSchema$1=object({method:literal("elicitation/create"),params:ElicitRequestParamsSchema$1}),InputRequestSchema=union([CreateMessageRequestSchema$1,ListRootsRequestSchema$1,ElicitRequestSchema$1]),InputResponseSchema=union([CreateMessageResultSchema$1,ListRootsResultSchema$1,ElicitResultSchema$1]),InputRequestsSchema=record(string2(),InputRequestSchema),InputResponsesSchema=record(string2(),InputResponseSchema),InputRequiredResultSchema=wireResult({inputRequests:InputRequestsSchema.optional(),requestState:string2().optional()}),retryParamsShape={inputResponses:InputResponsesSchema.optional(),requestState:string2().optional()},InputResponseRequestParamsSchema=object({_meta:RequestMetaEnvelopeSchema,...retryParamsShape}),DispatchRequestMetaSchema=looseObject({progressToken:ProgressTokenSchema$1.optional()});function wireRequest(method,paramsShape){return object({method:literal(method),params:object({_meta:RequestMetaEnvelopeSchema,...paramsShape})})}function dispatchRequest(method,paramsShape){return object({method:literal(method),params:object({_meta:DispatchRequestMetaSchema.optional(),...paramsShape}).optional()})}let callToolParamsShape={name:string2(),arguments:record(string2(),unknown()).optional(),...retryParamsShape},paginatedParamsShape={cursor:CursorSchema$1.optional()},CallToolRequestSchema$1=wireRequest("tools/call",callToolParamsShape),ListToolsRequestSchema$1=wireRequest("tools/list",paginatedParamsShape),ListPromptsRequestSchema$1=wireRequest("prompts/list",paginatedParamsShape),GetPromptRequestSchema$1=wireRequest("prompts/get",{name:string2(),arguments:record(string2(),string2()).optional(),...retryParamsShape}),ListResourcesRequestSchema$1=wireRequest("resources/list",paginatedParamsShape),ListResourceTemplatesRequestSchema$1=wireRequest("resources/templates/list",paginatedParamsShape),ReadResourceRequestSchema$1=wireRequest("resources/read",{uri:string2(),...retryParamsShape}),completeParamsShape={ref:union([PromptReferenceSchema$1,ResourceTemplateReferenceSchema$1]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()},CompleteRequestSchema$1=wireRequest("completion/complete",completeParamsShape),DiscoverRequestSchema$1=wireRequest("server/discover",{}),SubscriptionFilterSchema$1=object({toolsListChanged:boolean2().optional(),promptsListChanged:boolean2().optional(),resourcesListChanged:boolean2().optional(),resourceSubscriptions:array(string2()).optional()}),subscriptionsListenParamsShape={notifications:SubscriptionFilterSchema$1},SubscriptionsListenRequestSchema$1=wireRequest("subscriptions/listen",subscriptionsListenParamsShape),SubscriptionsListenResultMetaSchema$1=ResultMetaSchema.extend({"io.modelcontextprotocol/subscriptionId":RequestIdSchema$1}),SubscriptionsListenResultSchema$1=looseObject({_meta:SubscriptionsListenResultMetaSchema$1,resultType:ResultTypeSchema.default("complete")}),dispatchRequestSchemas={"tools/call":dispatchRequest("tools/call",callToolParamsShape),"tools/list":dispatchRequest("tools/list",paginatedParamsShape),"prompts/get":dispatchRequest("prompts/get",{name:string2(),arguments:record(string2(),string2()).optional()}),"prompts/list":dispatchRequest("prompts/list",paginatedParamsShape),"resources/list":dispatchRequest("resources/list",paginatedParamsShape),"resources/templates/list":dispatchRequest("resources/templates/list",paginatedParamsShape),"resources/read":dispatchRequest("resources/read",{uri:string2()}),"completion/complete":dispatchRequest("completion/complete",completeParamsShape),"server/discover":dispatchRequest("server/discover",{}),"subscriptions/listen":dispatchRequest("subscriptions/listen",subscriptionsListenParamsShape)};function liftedResult(shape){return looseObject({_meta:wireMeta,...shape})}let dispatchResultSchemas={"tools/call":liftedResult({content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional()}),"tools/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),tools:array(ToolSchema$1),nextCursor:CursorSchema$1.optional()}),"prompts/get":liftedResult({description:string2().optional(),messages:array(PromptMessageSchema$1)}),"prompts/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),prompts:array(PromptSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resources:array(ResourceSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/templates/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resourceTemplates:array(ResourceTemplateSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/read":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),"completion/complete":liftedResult({completion:object({values:array(string2()).max(100),total:number2().int().optional(),hasMore:boolean2().optional()}).loose()}),"server/discover":liftedResult({ttlMs:number2().int().min(0).catch(0),cacheScope:_enum(["public","private"]).catch("private"),supportedVersions:array(string2()),capabilities:ServerCapabilities2026Schema,instructions:string2().optional()}),"subscriptions/listen":liftedResult({})},NotificationMetaSchema=looseObject({"io.modelcontextprotocol/subscriptionId":RequestIdSchema$1.optional()}),SubscriptionsAcknowledgedNotificationSchema$1=object({method:literal("notifications/subscriptions/acknowledged"),params:object({_meta:NotificationMetaSchema.optional(),notifications:SubscriptionFilterSchema$1})}),CancelledNotificationParamsSchema$1=object({_meta:NotificationMetaSchema.optional(),requestId:RequestIdSchema$1,reason:string2().optional()}),CancelledNotificationSchema$1=object({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema$1}),notificationSchemas2026={"notifications/cancelled":CancelledNotificationSchema$1,"notifications/progress":ProgressNotificationSchema$1,"notifications/message":LoggingMessageNotificationSchema$1,"notifications/resources/updated":ResourceUpdatedNotificationSchema$1,"notifications/resources/list_changed":ResourceListChangedNotificationSchema$1,"notifications/tools/list_changed":ToolListChangedNotificationSchema$1,"notifications/prompts/list_changed":PromptListChangedNotificationSchema$1,"notifications/subscriptions/acknowledged":SubscriptionsAcknowledgedNotificationSchema$1},wireResultResponse=result2=>object({jsonrpc:literal("2.0"),id:union([string2(),number2().int()]),result:result2}).strict();return{JSONValueSchema:JSONValueSchema$1,JSONObjectSchema:JSONObjectSchema$1,ProgressTokenSchema:ProgressTokenSchema$1,CursorSchema:CursorSchema$1,RequestIdSchema:RequestIdSchema$1,RoleSchema:RoleSchema$1,LoggingLevelSchema:LoggingLevelSchema$1,TaskMetadataSchema:TaskMetadataSchema$1,RelatedTaskMetadataSchema:RelatedTaskMetadataSchema$1,RequestMetaSchema:RequestMetaSchema$1,BaseRequestParamsSchema:BaseRequestParamsSchema$1,TaskAugmentedRequestParamsSchema:TaskAugmentedRequestParamsSchema$1,NotificationsParamsSchema:NotificationsParamsSchema$1,NotificationSchema:NotificationSchema$1,IconSchema:IconSchema$1,IconsSchema:IconsSchema$1,BaseMetadataSchema:BaseMetadataSchema$1,ImplementationSchema:ImplementationSchema$1,ClientTasksCapabilitySchema:ClientTasksCapabilitySchema$1,ServerTasksCapabilitySchema:ServerTasksCapabilitySchema$1,ClientCapabilitiesSchema:ClientCapabilitiesSchema$1,ServerCapabilitiesSchema:ServerCapabilitiesSchema$1,ProgressSchema:ProgressSchema$1,ProgressNotificationParamsSchema:ProgressNotificationParamsSchema$1,ProgressNotificationSchema:ProgressNotificationSchema$1,LoggingMessageNotificationParamsSchema:LoggingMessageNotificationParamsSchema$1,LoggingMessageNotificationSchema:LoggingMessageNotificationSchema$1,ResourceContentsSchema:ResourceContentsSchema$1,TextResourceContentsSchema:TextResourceContentsSchema$1,BlobResourceContentsSchema:BlobResourceContentsSchema$1,AnnotationsSchema:AnnotationsSchema$1,ResourceSchema:ResourceSchema$1,ResourceTemplateSchema:ResourceTemplateSchema$1,ResourceListChangedNotificationSchema:ResourceListChangedNotificationSchema$1,ResourceUpdatedNotificationParamsSchema:ResourceUpdatedNotificationParamsSchema$1,ResourceUpdatedNotificationSchema:ResourceUpdatedNotificationSchema$1,PromptArgumentSchema:PromptArgumentSchema$1,PromptSchema:PromptSchema$1,PromptListChangedNotificationSchema:PromptListChangedNotificationSchema$1,TextContentSchema:TextContentSchema$1,ImageContentSchema:ImageContentSchema$1,AudioContentSchema:AudioContentSchema$1,ToolUseContentSchema:ToolUseContentSchema$1,EmbeddedResourceSchema:EmbeddedResourceSchema$1,ResourceLinkSchema:ResourceLinkSchema$1,ContentBlockSchema:ContentBlockSchema$1,PromptMessageSchema:PromptMessageSchema$1,ToolAnnotationsSchema:ToolAnnotationsSchema$1,ToolListChangedNotificationSchema:ToolListChangedNotificationSchema$1,ModelHintSchema:ModelHintSchema$1,ModelPreferencesSchema:ModelPreferencesSchema$1,ToolChoiceSchema:ToolChoiceSchema$1,BooleanSchemaSchema:BooleanSchemaSchema$1,StringSchemaSchema:StringSchemaSchema$1,NumberSchemaSchema:NumberSchemaSchema$1,UntitledSingleSelectEnumSchemaSchema:UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema:TitledSingleSelectEnumSchemaSchema$1,LegacyTitledEnumSchemaSchema:LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema:SingleSelectEnumSchemaSchema$1,UntitledMultiSelectEnumSchemaSchema:UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema:TitledMultiSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema:MultiSelectEnumSchemaSchema$1,EnumSchemaSchema:EnumSchemaSchema$1,PrimitiveSchemaDefinitionSchema:PrimitiveSchemaDefinitionSchema$1,ElicitRequestFormParamsSchema:ElicitRequestFormParamsSchema$1,ResourceTemplateReferenceSchema:ResourceTemplateReferenceSchema$1,PromptReferenceSchema:PromptReferenceSchema$1,RootSchema:RootSchema$1,ClientCapabilities2026Schema,ServerCapabilities2026Schema,RequestMetaEnvelopeSchema,ToolSchema:ToolSchema$1,ToolResultContentSchema:ToolResultContentSchema$1,SamplingMessageContentBlockSchema:SamplingMessageContentBlockSchema$1,SamplingMessageSchema:SamplingMessageSchema$1,ResultTypeSchema,ResultMetaSchema,ResultSchema:ResultSchema$1,PaginatedResultSchema:PaginatedResultSchema$1,CallToolResultSchema:CallToolResultSchema$1,ListToolsResultSchema:ListToolsResultSchema$1,ListPromptsResultSchema:ListPromptsResultSchema$1,GetPromptResultSchema:GetPromptResultSchema$1,ListResourcesResultSchema:ListResourcesResultSchema$1,ListResourceTemplatesResultSchema:ListResourceTemplatesResultSchema$1,ReadResourceResultSchema:ReadResourceResultSchema$1,CompleteResultSchema:CompleteResultSchema$1,CacheableResultSchema,DiscoverResultSchema:DiscoverResultSchema$1,CreateMessageRequestParamsSchema:CreateMessageRequestParamsSchema$1,CreateMessageRequestSchema:CreateMessageRequestSchema$1,ListRootsRequestSchema:ListRootsRequestSchema$1,CreateMessageResultSchema:CreateMessageResultSchema$1,ListRootsResultSchema:ListRootsResultSchema$1,ElicitResultSchema:ElicitResultSchema$1,ElicitRequestURLParamsSchema:ElicitRequestURLParamsSchema$1,ElicitRequestParamsSchema:ElicitRequestParamsSchema$1,ElicitRequestSchema:ElicitRequestSchema$1,InputRequestSchema,InputResponseSchema,InputRequestsSchema,InputResponsesSchema,InputRequiredResultSchema,InputResponseRequestParamsSchema,CallToolRequestSchema:CallToolRequestSchema$1,ListToolsRequestSchema:ListToolsRequestSchema$1,ListPromptsRequestSchema:ListPromptsRequestSchema$1,GetPromptRequestSchema:GetPromptRequestSchema$1,ListResourcesRequestSchema:ListResourcesRequestSchema$1,ListResourceTemplatesRequestSchema:ListResourceTemplatesRequestSchema$1,ReadResourceRequestSchema:ReadResourceRequestSchema$1,CompleteRequestSchema:CompleteRequestSchema$1,DiscoverRequestSchema:DiscoverRequestSchema$1,SubscriptionFilterSchema:SubscriptionFilterSchema$1,SubscriptionsListenRequestSchema:SubscriptionsListenRequestSchema$1,SubscriptionsListenResultMetaSchema:SubscriptionsListenResultMetaSchema$1,SubscriptionsListenResultSchema:SubscriptionsListenResultSchema$1,dispatchRequestSchemas,dispatchResultSchemas,NotificationMetaSchema,SubscriptionsAcknowledgedNotificationSchema:SubscriptionsAcknowledgedNotificationSchema$1,CancelledNotificationParamsSchema:CancelledNotificationParamsSchema$1,CancelledNotificationSchema:CancelledNotificationSchema$1,notificationSchemas2026,JSONRPCResultResponseSchema:wireResultResponse(ResultSchema$1),CallToolResultResponseSchema:wireResultResponse(union([CallToolResultSchema$1,InputRequiredResultSchema])),ListToolsResultResponseSchema:wireResultResponse(ListToolsResultSchema$1),ListPromptsResultResponseSchema:wireResultResponse(ListPromptsResultSchema$1),GetPromptResultResponseSchema:wireResultResponse(union([GetPromptResultSchema$1,InputRequiredResultSchema])),ListResourcesResultResponseSchema:wireResultResponse(ListResourcesResultSchema$1),ListResourceTemplatesResultResponseSchema:wireResultResponse(ListResourceTemplatesResultSchema$1),ReadResourceResultResponseSchema:wireResultResponse(union([ReadResourceResultSchema$1,InputRequiredResultSchema])),CompleteResultResponseSchema:wireResultResponse(CompleteResultSchema$1),DiscoverResultResponseSchema:wireResultResponse(DiscoverResultSchema$1),SubscriptionsListenResultResponseSchema:wireResultResponse(SubscriptionsListenResultSchema$1)}}var memo2;function buildSchemas2026(){return memo2??=build()}var CACHEABLE_RESULT_METHODS=["tools/list","prompts/list","resources/list","resources/templates/list","resources/read","server/discover"];function isCacheableResultMethod(method){return CACHEABLE_RESULT_METHODS.includes(method)}var RESULT_CACHE_HINT_FALLBACK=Symbol("modelcontextprotocol.resultCacheHintFallback");function cacheHintFallbackOf(result2){return result2[RESULT_CACHE_HINT_FALLBACK]}function isValidCacheTtlMs(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0}function isValidCacheScope(value){return value==="public"||value==="private"}var ProtocolErrorCode=(function(ProtocolErrorCode$1){return ProtocolErrorCode$1[ProtocolErrorCode$1.ParseError=-32700]="ParseError",ProtocolErrorCode$1[ProtocolErrorCode$1.InvalidRequest=-32600]="InvalidRequest",ProtocolErrorCode$1[ProtocolErrorCode$1.MethodNotFound=-32601]="MethodNotFound",ProtocolErrorCode$1[ProtocolErrorCode$1.InvalidParams=-32602]="InvalidParams",ProtocolErrorCode$1[ProtocolErrorCode$1.InternalError=-32603]="InternalError",ProtocolErrorCode$1[ProtocolErrorCode$1.ResourceNotFound=-32002]="ResourceNotFound",ProtocolErrorCode$1[ProtocolErrorCode$1.MissingRequiredClientCapability=-32021]="MissingRequiredClientCapability",ProtocolErrorCode$1[ProtocolErrorCode$1.UnsupportedProtocolVersion=-32022]="UnsupportedProtocolVersion",ProtocolErrorCode$1[ProtocolErrorCode$1.UrlElicitationRequired=-32042]="UrlElicitationRequired",ProtocolErrorCode$1})({}),ProtocolError=class ProtocolError2 extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.ProtocolError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(code2,message,data){super(message),this.code=code2,this.data=data,this.name="ProtocolError",stampErrorBrands(this,new.target)}static fromError(code2,message,data){if(code2===ProtocolErrorCode.UrlElicitationRequired&&data){let errorData=data;if(errorData.elicitations)return new UrlElicitationRequiredError(errorData.elicitations,message)}if(code2===ProtocolErrorCode.UnsupportedProtocolVersion&&data){let errorData=data;if(Array.isArray(errorData.supported)&&typeof errorData.requested=="string")return new UnsupportedProtocolVersionError({supported:errorData.supported,requested:errorData.requested},message)}if(code2===ProtocolErrorCode.InvalidParams||code2===ProtocolErrorCode.ResourceNotFound){let errorData=data;if(typeof errorData?.uri=="string"&&(code2===ProtocolErrorCode.ResourceNotFound||Object.keys(errorData).length===1))return new ResourceNotFoundError(errorData.uri,message)}if(code2===ProtocolErrorCode.MissingRequiredClientCapability&&data){let errorData=data;if(errorData.requiredCapabilities!==null&&typeof errorData.requiredCapabilities=="object"&&!Array.isArray(errorData.requiredCapabilities))return new MissingRequiredClientCapabilityError({requiredCapabilities:errorData.requiredCapabilities},message)}return new ProtocolError2(code2,message,data)}},ResourceNotFoundError=class extends ProtocolError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.ResourceNotFoundError"})}constructor(uri,message=`Resource not found: ${uri}`){super(ProtocolErrorCode.InvalidParams,message,{uri})}get uri(){return this.data.uri}},UrlElicitationRequiredError=class extends ProtocolError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.UrlElicitationRequiredError"})}constructor(elicitations,message=`URL elicitation${elicitations.length>1?"s":""} required`){super(ProtocolErrorCode.UrlElicitationRequired,message,{elicitations})}get elicitations(){return this.data?.elicitations??[]}},UnsupportedProtocolVersionError=class extends ProtocolError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.UnsupportedProtocolVersionError"})}constructor(data,message=`Unsupported protocol version: ${data.requested}`){super(ProtocolErrorCode.UnsupportedProtocolVersion,message,data)}get supported(){return this.data.supported}get requested(){return this.data.requested}},MissingRequiredClientCapabilityError=class extends ProtocolError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.MissingRequiredClientCapabilityError"})}constructor(data,message=`Missing required client capabilities: ${Object.keys(data.requiredCapabilities).join(", ")}`){super(ProtocolErrorCode.MissingRequiredClientCapability,message,data)}get requiredCapabilities(){return this.data.requiredCapabilities}},DEFAULT_CACHE_TTL_MS=0,DEFAULT_CACHE_SCOPE="private",EXTENDED_RESULT_TYPE_METHODS=["tools/call","prompts/get","resources/read"];function stampResultType(method,result2){let provided=result2.resultType;if(provided===void 0)return{...result2,resultType:"complete"};if(provided==="complete"||EXTENDED_RESULT_TYPE_METHODS.includes(method))return result2;throw new ProtocolError(ProtocolErrorCode.InternalError,`Handler for ${method} returned resultType '${String(provided)}', but results of ${method} only support 'complete' on protocol revision 2026-07-28`)}function fillCacheFields(method,result2){let fallback=cacheHintFallbackOf(result2);if(result2.resultType!=="complete"||!isCacheableResultMethod(method))return fallback===void 0?result2:stripCacheHintFallback(result2);let provided=result2,ttlMs=isValidCacheTtlMs(provided.ttlMs)?provided.ttlMs:resolveTtlMs(fallback),cacheScope=isValidCacheScope(provided.cacheScope)?provided.cacheScope:resolveCacheScope(fallback),filled={...provided,ttlMs,cacheScope};return delete filled[RESULT_CACHE_HINT_FALLBACK],filled}function isPlainObject$4(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function stampServerInfoMeta(result2,serverInfo){if(serverInfo===void 0)return result2;let meta2=result2._meta;return meta2===void 0?{...result2,_meta:{[SERVER_INFO_META_KEY]:serverInfo}}:!isPlainObject$4(meta2)||meta2[SERVER_INFO_META_KEY]!==void 0?result2:{...result2,_meta:{...meta2,[SERVER_INFO_META_KEY]:serverInfo}}}function resolveTtlMs(fallback){return fallback!==void 0&&isValidCacheTtlMs(fallback.ttlMs)?fallback.ttlMs:DEFAULT_CACHE_TTL_MS}function resolveCacheScope(fallback){return fallback!==void 0&&isValidCacheScope(fallback.cacheScope)?fallback.cacheScope:DEFAULT_CACHE_SCOPE}function stripCacheHintFallback(result2){let copy={...result2};return delete copy[RESULT_CACHE_HINT_FALLBACK],copy}var INPUT_REQUEST_METHODS_2026=["elicitation/create","sampling/createMessage","roots/list"],maps;function inputSchemaMaps(){if(maps)return maps;let s=buildSchemas2026();return maps={request:{"elicitation/create":object({method:literal("elicitation/create"),params:s.ElicitRequestParamsSchema}),"sampling/createMessage":object({method:literal("sampling/createMessage"),params:s.CreateMessageRequestParamsSchema}),"roots/list":object({method:literal("roots/list"),params:looseObject({}).optional()})},response:{"elicitation/create":s.ElicitResultSchema,"sampling/createMessage":s.CreateMessageResultSchema,"roots/list":s.ListRootsResultSchema}},maps}function isInputRequestMethod2026(method){return INPUT_REQUEST_METHODS_2026.includes(method)}function getInputRequestSchema2026(method){return isInputRequestMethod2026(method)?inputSchemaMaps().request[method]:void 0}function getInputResponseSchema2026(method){return isInputRequestMethod2026(method)?inputSchemaMaps().response[method]:void 0}var requestMethodKeys={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},notificationMethodKeys={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function hasRequestMethod2026(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys,method)}function hasNotificationMethod2026(method){return Object.prototype.hasOwnProperty.call(notificationMethodKeys,method)}function hasResultMethod2026(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys,method)}function getRequestSchema2026(method){return hasRequestMethod2026(method)?buildSchemas2026().dispatchRequestSchemas[method]:void 0}function getResultSchema2026(method){return hasResultMethod2026(method)?buildSchemas2026().dispatchResultSchemas[method]:void 0}function getNotificationSchema2026(method){return hasNotificationMethod2026(method)?buildSchemas2026().notificationSchemas2026[method]:void 0}var rev2026RequestMethods=Object.keys(requestMethodKeys),rev2026NotificationMethods=Object.keys(notificationMethodKeys);function isPlainObject$3(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function triState(schema,raw){if(schema===void 0)return{ok:!1,reason:"not-in-era"};let parsed=schema.safeParse(raw);return parsed.success?{ok:!0,value:parsed.data}:{ok:!1,reason:"invalid",message:String(parsed.error)}}var NOT_IN_ERA={ok:!1,reason:"not-in-era"},REQUIRED_ENVELOPE_KEYS=[PROTOCOL_VERSION_META_KEY,CLIENT_CAPABILITIES_META_KEY];function enforceDeletedFields(method,result2){let next=result2,copied=!1,copy=()=>(copied||(next={...next},copied=!0),next),tools=result2.tools;method==="tools/list"&&Array.isArray(tools)&&tools.some(tool=>isPlainObject$3(tool)&&"execution"in tool)&&(copy().tools=tools.map(tool=>{if(!isPlainObject$3(tool)||!("execution"in tool))return tool;let rest={...tool};return delete rest.execution,rest}));let capabilities=result2.capabilities;if(isPlainObject$3(capabilities)&&"tasks"in capabilities){let rest={...capabilities};delete rest.tasks,copy().capabilities=rest}return next}var rev2026Codec={era:"2026-07-28",hasRequestMethod:hasRequestMethod2026,hasNotificationMethod:hasNotificationMethod2026,hasInputRequestMethod:method=>getInputRequestSchema2026(method)!==void 0,validateRequest:(method,raw)=>triState(getRequestSchema2026(method),raw),validateResult:(method,raw)=>triState(getResultSchema2026(method),raw),validateNotification:(method,raw)=>triState(getNotificationSchema2026(method),raw),validateInputRequest:(method,raw)=>triState(getInputRequestSchema2026(method),raw),validateInputResponse:(method,raw)=>triState(getInputResponseSchema2026(method),raw),samplingResultVariant:()=>NOT_IN_ERA,outboundEnvelope(material){return{[PROTOCOL_VERSION_META_KEY]:material.protocolVersion,[CLIENT_INFO_META_KEY]:material.clientInfo,[CLIENT_CAPABILITIES_META_KEY]:material.clientCapabilities,...material.logLevel!==void 0&&{[LOG_LEVEL_META_KEY]:material.logLevel}}},validateEnvelopeMeta(meta2){let issues=[];for(let key of REQUIRED_ENVELOPE_KEYS)key in meta2||issues.push({key,problem:"missing"});let parsed=buildSchemas2026().RequestMetaEnvelopeSchema.safeParse(meta2);if(!parsed.success)for(let issue2 of parsed.error.issues){let path=issue2.path.map(String),key=path.length>0?path.join("."):"_meta";path.length===1&&issues.some(existing=>existing.key===key&&existing.problem==="missing")||issues.push({key,problem:issue2.message})}return issues},projectCallToolResult:result2=>appendTextFallbackForNonObject(result2),inputRequestSchema:getInputRequestSchema2026,decodeResult(method,raw){if(!isPlainObject$3(raw))return{kind:"invalid",error:new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${method}: not an object`,{method})};let rawResultType=raw.resultType;if(rawResultType===void 0)return{kind:"invalid",error:new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${method}: missing required resultType \u2014 servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method,violation:"missing-resultType"})};if(typeof rawResultType!="string")return{kind:"invalid",error:new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${method}: non-string resultType`,{method,resultType:rawResultType})};if(rawResultType==="input_required"){let rawInputRequests=raw.inputRequests,inputRequests=isPlainObject$3(rawInputRequests)?rawInputRequests:{},requestState=raw.requestState,metaParse=raw._meta===void 0?void 0:buildSchemas2026().ResultMetaSchema.safeParse(raw._meta),meta2=metaParse?.success?metaParse.data:void 0;return Object.keys(inputRequests).length===0&&typeof requestState!="string"?{kind:"invalid",error:new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${method}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method,violation:"input-required-missing-both"})}:{kind:"input_required",inputRequests,...typeof requestState=="string"&&{requestState},...meta2!==void 0&&{_meta:meta2}}}if(rawResultType!=="complete")return{kind:"invalid",error:new SdkError(SdkErrorCode.UnsupportedResultType,`Unsupported result type '${rawResultType}' for ${method}`,{resultType:rawResultType,method})};let wireResultSchemas=getWireResultSchemas(),wireSchema=Object.hasOwn(wireResultSchemas,method)?wireResultSchemas[method]:void 0;if(wireSchema!==void 0){let parsed=wireSchema.safeParse(raw);if(!parsed.success)return{kind:"invalid",error:new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${method}: ${parsed.error}`,{method})}}let lifted={...raw};return delete lifted.resultType,{kind:"complete",result:lifted}},encodeResult(method,result2,serverInfo){return stampServerInfoMeta(fillCacheFields(method,stampResultType(method,enforceDeletedFields(method,result2))),serverInfo)},encodeErrorCode:code2=>code2===-32002?-32602:code2,checkInboundEnvelope(material){if(material.envelope===void 0)return"Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)";let parsed=buildSchemas2026().RequestMetaEnvelopeSchema.safeParse(material.envelope);if(!parsed.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${parsed.error.issues.map(issue2=>issue2.message).join("; ")}`}},wireResultSchemasMemo;function getWireResultSchemas(){if(wireResultSchemasMemo)return wireResultSchemasMemo;let s=buildSchemas2026();return wireResultSchemasMemo={"tools/call":s.CallToolResultSchema,"tools/list":s.ListToolsResultSchema,"prompts/get":s.GetPromptResultSchema,"prompts/list":s.ListPromptsResultSchema,"resources/list":s.ListResourcesResultSchema,"resources/templates/list":s.ListResourceTemplatesResultSchema,"resources/read":s.ReadResourceResultSchema,"completion/complete":s.CompleteResultSchema,"server/discover":s.DiscoverResultSchema},wireResultSchemasMemo}var MODERN_WIRE_REVISION="2026-07-28";function codecForVersion(version2){return version2!==void 0&&isModernProtocolVersion(version2)?rev2026Codec:rev2025Codec}function classifiedWireEra(classification){return classification.revision!==void 0?codecForVersion(classification.revision).era:classification.era==="modern"?rev2026Codec.era:rev2025Codec.era}function isSpecRequestMethod(method){return ALL_CODECS.some(codec=>codec.hasRequestMethod(method))}function isSpecNotificationMethod(method){return ALL_CODECS.some(codec=>codec.hasNotificationMethod(method))}function isExtensionReusedRequestMethod(method){return method==="tasks/get"||method==="tasks/cancel"}var ALL_CODECS=[rev2025Codec,rev2026Codec],schemas_exports2=__exportAll({AnnotationsSchema:()=>AnnotationsSchema,AudioContentSchema:()=>AudioContentSchema,BaseMetadataSchema:()=>BaseMetadataSchema,BaseRequestParamsSchema:()=>BaseRequestParamsSchema,BlobResourceContentsSchema:()=>BlobResourceContentsSchema,BooleanSchemaSchema:()=>BooleanSchemaSchema,CallToolRequestParamsSchema:()=>CallToolRequestParamsSchema,CallToolRequestSchema:()=>CallToolRequestSchema,CallToolResultSchema:()=>CallToolResultSchema,CancelTaskRequestSchema:()=>CancelTaskRequestSchema,CancelTaskResultSchema:()=>CancelTaskResultSchema,CancelledNotificationParamsSchema:()=>CancelledNotificationParamsSchema,CancelledNotificationSchema:()=>CancelledNotificationSchema,ClientCapabilitiesSchema:()=>ClientCapabilitiesSchema,ClientNotificationSchema:()=>ClientNotificationSchema,ClientRequestSchema:()=>ClientRequestSchema,ClientResultSchema:()=>ClientResultSchema,ClientTasksCapabilitySchema:()=>ClientTasksCapabilitySchema,CompatibilityCallToolResultSchema:()=>CompatibilityCallToolResultSchema,CompleteRequestParamsSchema:()=>CompleteRequestParamsSchema,CompleteRequestSchema:()=>CompleteRequestSchema,CompleteResultSchema:()=>CompleteResultSchema,ContentBlockSchema:()=>ContentBlockSchema,CreateMessageRequestParamsSchema:()=>CreateMessageRequestParamsSchema,CreateMessageRequestSchema:()=>CreateMessageRequestSchema,CreateMessageResultSchema:()=>CreateMessageResultSchema,CreateMessageResultWithToolsSchema:()=>CreateMessageResultWithToolsSchema,CreateTaskResultSchema:()=>CreateTaskResultSchema,CursorSchema:()=>CursorSchema,DiscoverRequestSchema:()=>DiscoverRequestSchema,DiscoverResultSchema:()=>DiscoverResultSchema,ElicitRequestFormParamsSchema:()=>ElicitRequestFormParamsSchema,ElicitRequestParamsSchema:()=>ElicitRequestParamsSchema,ElicitRequestSchema:()=>ElicitRequestSchema,ElicitRequestURLParamsSchema:()=>ElicitRequestURLParamsSchema,ElicitResultSchema:()=>ElicitResultSchema,ElicitationCompleteNotificationParamsSchema:()=>ElicitationCompleteNotificationParamsSchema,ElicitationCompleteNotificationSchema:()=>ElicitationCompleteNotificationSchema,EmbeddedResourceSchema:()=>EmbeddedResourceSchema,EmptyResultSchema:()=>EmptyResultSchema,EnumSchemaSchema:()=>EnumSchemaSchema,GetPromptRequestParamsSchema:()=>GetPromptRequestParamsSchema,GetPromptRequestSchema:()=>GetPromptRequestSchema,GetPromptResultSchema:()=>GetPromptResultSchema,GetTaskPayloadRequestSchema:()=>GetTaskPayloadRequestSchema,GetTaskPayloadResultSchema:()=>GetTaskPayloadResultSchema,GetTaskRequestSchema:()=>GetTaskRequestSchema,GetTaskResultSchema:()=>GetTaskResultSchema,IconSchema:()=>IconSchema,IconsSchema:()=>IconsSchema,ImageContentSchema:()=>ImageContentSchema,ImplementationSchema:()=>ImplementationSchema,InitializeRequestParamsSchema:()=>InitializeRequestParamsSchema,InitializeRequestSchema:()=>InitializeRequestSchema,InitializeResultSchema:()=>InitializeResultSchema,InitializedNotificationSchema:()=>InitializedNotificationSchema,JSONArraySchema:()=>JSONArraySchema,JSONObjectSchema:()=>JSONObjectSchema,JSONRPCErrorResponseSchema:()=>JSONRPCErrorResponseSchema,JSONRPCMessageSchema:()=>JSONRPCMessageSchema,JSONRPCNotificationSchema:()=>JSONRPCNotificationSchema,JSONRPCRequestSchema:()=>JSONRPCRequestSchema,JSONRPCResponseSchema:()=>JSONRPCResponseSchema,JSONRPCResultResponseSchema:()=>JSONRPCResultResponseSchema,JSONValueSchema:()=>JSONValueSchema,LegacyTitledEnumSchemaSchema:()=>LegacyTitledEnumSchemaSchema,ListChangedOptionsBaseSchema:()=>ListChangedOptionsBaseSchema,ListPromptsRequestSchema:()=>ListPromptsRequestSchema,ListPromptsResultSchema:()=>ListPromptsResultSchema,ListResourceTemplatesRequestSchema:()=>ListResourceTemplatesRequestSchema,ListResourceTemplatesResultSchema:()=>ListResourceTemplatesResultSchema,ListResourcesRequestSchema:()=>ListResourcesRequestSchema,ListResourcesResultSchema:()=>ListResourcesResultSchema,ListRootsRequestSchema:()=>ListRootsRequestSchema,ListRootsResultSchema:()=>ListRootsResultSchema,ListTasksRequestSchema:()=>ListTasksRequestSchema,ListTasksResultSchema:()=>ListTasksResultSchema,ListToolsRequestSchema:()=>ListToolsRequestSchema,ListToolsResultSchema:()=>ListToolsResultSchema,LoggingLevelSchema:()=>LoggingLevelSchema,LoggingMessageNotificationParamsSchema:()=>LoggingMessageNotificationParamsSchema,LoggingMessageNotificationSchema:()=>LoggingMessageNotificationSchema,ModelHintSchema:()=>ModelHintSchema,ModelPreferencesSchema:()=>ModelPreferencesSchema,MultiSelectEnumSchemaSchema:()=>MultiSelectEnumSchemaSchema,NotificationSchema:()=>NotificationSchema,NotificationsParamsSchema:()=>NotificationsParamsSchema,NumberSchemaSchema:()=>NumberSchemaSchema,PaginatedRequestParamsSchema:()=>PaginatedRequestParamsSchema,PaginatedRequestSchema:()=>PaginatedRequestSchema,PaginatedResultSchema:()=>PaginatedResultSchema,PingRequestSchema:()=>PingRequestSchema,PrimitiveSchemaDefinitionSchema:()=>PrimitiveSchemaDefinitionSchema,ProgressNotificationParamsSchema:()=>ProgressNotificationParamsSchema,ProgressNotificationSchema:()=>ProgressNotificationSchema,ProgressSchema:()=>ProgressSchema,ProgressTokenSchema:()=>ProgressTokenSchema,PromptArgumentSchema:()=>PromptArgumentSchema,PromptListChangedNotificationSchema:()=>PromptListChangedNotificationSchema,PromptMessageSchema:()=>PromptMessageSchema,PromptReferenceSchema:()=>PromptReferenceSchema,PromptSchema:()=>PromptSchema,ReadResourceRequestParamsSchema:()=>ReadResourceRequestParamsSchema,ReadResourceRequestSchema:()=>ReadResourceRequestSchema,ReadResourceResultSchema:()=>ReadResourceResultSchema,RelatedTaskMetadataSchema:()=>RelatedTaskMetadataSchema,RequestIdSchema:()=>RequestIdSchema,RequestMetaSchema:()=>RequestMetaSchema,RequestSchema:()=>RequestSchema,ResourceContentsSchema:()=>ResourceContentsSchema,ResourceLinkSchema:()=>ResourceLinkSchema,ResourceListChangedNotificationSchema:()=>ResourceListChangedNotificationSchema,ResourceRequestParamsSchema:()=>ResourceRequestParamsSchema,ResourceSchema:()=>ResourceSchema,ResourceTemplateReferenceSchema:()=>ResourceTemplateReferenceSchema,ResourceTemplateSchema:()=>ResourceTemplateSchema,ResourceUpdatedNotificationParamsSchema:()=>ResourceUpdatedNotificationParamsSchema,ResourceUpdatedNotificationSchema:()=>ResourceUpdatedNotificationSchema,ResultMetaObjectSchema:()=>ResultMetaObjectSchema,ResultSchema:()=>ResultSchema,RoleSchema:()=>RoleSchema,RootSchema:()=>RootSchema,RootsListChangedNotificationSchema:()=>RootsListChangedNotificationSchema,SamplingContentSchema:()=>SamplingContentSchema,SamplingMessageContentBlockSchema:()=>SamplingMessageContentBlockSchema,SamplingMessageSchema:()=>SamplingMessageSchema,ServerCapabilitiesSchema:()=>ServerCapabilitiesSchema,ServerNotificationSchema:()=>ServerNotificationSchema,ServerRequestSchema:()=>ServerRequestSchema,ServerResultSchema:()=>ServerResultSchema,ServerTasksCapabilitySchema:()=>ServerTasksCapabilitySchema,SetLevelRequestParamsSchema:()=>SetLevelRequestParamsSchema,SetLevelRequestSchema:()=>SetLevelRequestSchema,SingleSelectEnumSchemaSchema:()=>SingleSelectEnumSchemaSchema,StringSchemaSchema:()=>StringSchemaSchema,SubscribeRequestParamsSchema:()=>SubscribeRequestParamsSchema,SubscribeRequestSchema:()=>SubscribeRequestSchema,SubscriptionFilterSchema:()=>SubscriptionFilterSchema,SubscriptionsAcknowledgedNotificationParamsSchema:()=>SubscriptionsAcknowledgedNotificationParamsSchema,SubscriptionsAcknowledgedNotificationSchema:()=>SubscriptionsAcknowledgedNotificationSchema,SubscriptionsListenRequestParamsSchema:()=>SubscriptionsListenRequestParamsSchema,SubscriptionsListenRequestSchema:()=>SubscriptionsListenRequestSchema,SubscriptionsListenResultMetaSchema:()=>SubscriptionsListenResultMetaSchema,SubscriptionsListenResultSchema:()=>SubscriptionsListenResultSchema,TaskAugmentedRequestParamsSchema:()=>TaskAugmentedRequestParamsSchema,TaskCreationParamsSchema:()=>TaskCreationParamsSchema,TaskMetadataSchema:()=>TaskMetadataSchema,TaskSchema:()=>TaskSchema,TaskStatusNotificationParamsSchema:()=>TaskStatusNotificationParamsSchema,TaskStatusNotificationSchema:()=>TaskStatusNotificationSchema,TaskStatusSchema:()=>TaskStatusSchema,TextContentSchema:()=>TextContentSchema,TextResourceContentsSchema:()=>TextResourceContentsSchema,TitledMultiSelectEnumSchemaSchema:()=>TitledMultiSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema:()=>TitledSingleSelectEnumSchemaSchema,ToolAnnotationsSchema:()=>ToolAnnotationsSchema,ToolChoiceSchema:()=>ToolChoiceSchema,ToolExecutionSchema:()=>ToolExecutionSchema,ToolListChangedNotificationSchema:()=>ToolListChangedNotificationSchema,ToolResultContentSchema:()=>ToolResultContentSchema,ToolSchema:()=>ToolSchema,ToolUseContentSchema:()=>ToolUseContentSchema,UnsubscribeRequestParamsSchema:()=>UnsubscribeRequestParamsSchema,UnsubscribeRequestSchema:()=>UnsubscribeRequestSchema,UntitledMultiSelectEnumSchemaSchema:()=>UntitledMultiSelectEnumSchemaSchema,UntitledSingleSelectEnumSchemaSchema:()=>UntitledSingleSelectEnumSchemaSchema});var isJSONRPCRequest=value=>JSONRPCRequestSchema.safeParse(value).success,isJSONRPCNotification=value=>JSONRPCNotificationSchema.safeParse(value).success,isJSONRPCResultResponse=value=>JSONRPCResultResponseSchema.safeParse(value).success,isJSONRPCErrorResponse=value=>JSONRPCErrorResponseSchema.safeParse(value).success;var isInputRequiredResult=value=>typeof value=="object"&&value!==null&&!Array.isArray(value)&&value.resultType==="input_required";var MCP_PARAM_HEADER_PREFIX="Mcp-Param-",X_MCP_HEADER_KEY="x-mcp-header",RFC9110_TOKEN=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,PERMITTED_X_MCP_HEADER_TYPES=new Set(["string","integer","boolean"]);function scanXMcpHeaderDeclarations(inputSchema){let declarations=[],seenLower=new Map,numberFault,visit=(node2,path,reachable)=>{if(node2===null||typeof node2!="object")return;let schema=node2;if(X_MCP_HEADER_KEY in schema){if(!reachable||path.length===0)return`${pathName(path)}: x-mcp-header is only permitted on properties statically reachable via a chain of 'properties' keys (not under items, additionalProperties, oneOf/anyOf/allOf/not, if/then/else, or $ref)`;let raw=schema[X_MCP_HEADER_KEY];if(typeof raw!="string"||raw.length===0)return`${pathName(path)}: x-mcp-header MUST be a non-empty string`;if(!RFC9110_TOKEN.test(raw))return`${pathName(path)}: x-mcp-header '${raw}' is not a valid RFC 9110 token (no spaces, control characters or HTTP delimiters)`;let type=typeof schema.type=="string"?schema.type:void 0;if(type===void 0||!PERMITTED_X_MCP_HEADER_TYPES.has(type)){let fault$1=`${pathName(path)}: x-mcp-header is only permitted on primitive-typed properties (string, integer, boolean); got ${type??"<none>"}`;if(type!=="number")return fault$1;numberFault??=fault$1}let lower=raw.toLowerCase(),prior=seenLower.get(lower);if(prior!==void 0)return`x-mcp-header '${raw}' is not case-insensitively unique (also declared as '${prior}')`;seenLower.set(lower,raw),declarations.push({path,headerName:raw,type})}let properties=schema.properties;if(properties!==null&&typeof properties=="object")for(let[key,child]of Object.entries(properties)){let fault$1=visit(child,[...path,key],reachable);if(fault$1!==void 0)return fault$1}for(let k of NON_REACHABLE_SUBSCHEMA_KEYWORDS){let sub=schema[k];if(sub===void 0)continue;let branches=Array.isArray(sub)?sub:sub!==null&&typeof sub=="object"&&OBJECT_VALUED_SUBSCHEMA_KEYWORDS.has(k)?Object.values(sub):[sub];for(let branch of branches){let fault$1=visit(branch,[...path,`<${k}>`],!1);if(fault$1!==void 0)return fault$1}}},fault=visit(inputSchema,[],!0);return fault!==void 0?{valid:!1,reason:numberFault??fault}:numberFault===void 0?{valid:!0,declarations}:{valid:!1,reason:numberFault,declarations}}var NON_REACHABLE_SUBSCHEMA_KEYWORDS=["items","prefixItems","contains","additionalProperties","unevaluatedProperties","unevaluatedItems","propertyNames","patternProperties","dependentSchemas","oneOf","anyOf","allOf","not","if","then","else","$defs","definitions"],OBJECT_VALUED_SUBSCHEMA_KEYWORDS=new Set(["patternProperties","dependentSchemas","$defs","definitions"]);function pathName(path){return path.length===0?"<root>":path.join(".")}var BASE64_SENTINEL_PREFIX="=?base64?",BASE64_SENTINEL_SUFFIX="?=";function mcpParamPrimitiveToString(value){if(typeof value=="string")return value;if(typeof value=="boolean")return value?"true":"false";if(typeof value=="number")return!Number.isFinite(value)||Number.isInteger(value)&&!Number.isSafeInteger(value)?void 0:String(value)}function needsBase64(s){if(s.length===0||s.startsWith(BASE64_SENTINEL_PREFIX)&&s.endsWith(BASE64_SENTINEL_SUFFIX)||s!==s.trim())return!0;for(let i=0;i<s.length;i++){let c=s.codePointAt(i);if(!(c===9||c>=32&&c<=126))return!0}return!1}function utf8ToBase64(s){let bytes=new TextEncoder().encode(s),bin="";for(let b of bytes)bin+=String.fromCodePoint(b);return btoa(bin)}function encodeMcpParamValue(value){return needsBase64(value)?`${BASE64_SENTINEL_PREFIX}${utf8ToBase64(value)}${BASE64_SENTINEL_SUFFIX}`:value}function valueAtPath(root,path){let node2=root;for(let key of path){if(node2===null||typeof node2!="object")return;node2=node2[key]}return node2}function buildMcpParamHeaders(declarations,args){let out={};for(let decl of declarations){let raw=valueAtPath(args,decl.path);if(raw==null)continue;let stringValue=mcpParamPrimitiveToString(raw);stringValue!==void 0&&(out[`${MCP_PARAM_HEADER_PREFIX}${decl.headerName}`]=encodeMcpParamValue(stringValue))}return out}var HEADER_MISMATCH_ERROR_CODE=-32020,INBOUND_VALIDATION_LADDER=[{rung:"http-method",order:1,evaluatedAt:"edge",codes:[-32e3],conformance:[],rationale:"The modern era is POST-only; GET/DELETE are body-less 2025-era session operations and are method-routed to legacy serving (405 when legacy serving is not configured), before any body is read."},{rung:"jsonrpc-shape",order:2,evaluatedAt:"edge",codes:[ProtocolErrorCode.InvalidRequest],conformance:["server-stateless"],rationale:"The body must be a JSON-RPC request or notification: posted responses and batch arrays containing a modern or invalid element are rejected before classification (element-wise batch rule); all-legacy arrays stay legacy traffic."},{rung:"era-classification",order:3,evaluatedAt:"edge",codes:[HEADER_MISMATCH_ERROR_CODE,ProtocolErrorCode.UnsupportedProtocolVersion],conformance:["server-stateless","http-header-validation","http-custom-header-server-validation"],rationale:"Body-primary era classification with the protocol-version header as a cross-check; a header/body disagreement is rejected with -32020 (HeaderMismatch), and an envelope-less request on a modern-only endpoint is answered with the unsupported-protocol-version error naming the supported revisions."},{rung:"envelope",order:4,evaluatedAt:"edge",codes:[ProtocolErrorCode.InvalidParams],conformance:["server-stateless"],rationale:"A present envelope claim with a malformed envelope \u2014 and a missing envelope on a request whose protocol-version header names a modern revision \u2014 is an invalid-params rejection naming the offending or missing key(s); never a silent fall back to legacy handling. This is the only place an invalid-params rejection maps to HTTP 400."},{rung:"method-registry",order:5,evaluatedAt:"dispatch",codes:[ProtocolErrorCode.MethodNotFound],conformance:["server-stateless"],rationale:"Method existence outranks parameter validity: a method absent from the negotiated revision\u2019s registry (or with no handler installed) answers method-not-found before params or capabilities are looked at."},{rung:"request-params",order:6,evaluatedAt:"dispatch",codes:[ProtocolErrorCode.InvalidParams],conformance:[],rationale:"Per-method params validation; emitted in-band by the dispatch layer (HTTP 200), never via the ladder status table."},{rung:"standard-header-validation",order:7,evaluatedAt:"pre-dispatch",codes:[HEADER_MISMATCH_ERROR_CODE],conformance:["http-header-validation"],rationale:"SEP-2243 standard `MCP-Protocol-Version` / `Mcp-Method` / `Mcp-Name` headers \u2014 presence, sentinel decoding, and `Mcp-Name` \u2194 body cross-check \u2014 are validated by the HTTP entry on a modern-classified request after the supported-revision gate and before dispatch. The spec requires `MCP-Protocol-Version` and `Mcp-Method` on every modern *request* POST (`Mcp-Name` only for the methods that mirror `params.name` / `params.uri` / `params.taskId`, see `MCP_NAME_HEADER_SOURCE`) and names them in that order, so a request missing several is answered by the earliest. Notification POSTs are exempt: the presence half runs on requests only, so a modern-enveloped notification is dispatched even with no standard headers at all. The classifier\u2019s own header-mismatch cells (protocol-version, `Mcp-Method` mismatch) stay on the edge `era-classification` rung; this rung carries the entry-layer presence/`Mcp-Name` half \u2014 including the missing `MCP-Protocol-Version` cell, which cannot live on the edge rung without breaking body-primary classification. Evaluated before the capability gate, the factory call, and the `Mcp-Param-*` rung so a request that fails several rungs is answered by the standard-header rung first. The documented order (after method-registry 5 and request-params 6) is NOT the observed precedence: serveModern evaluates this rung immediately after the supported-revision gate, so a request that also fails a dispatch rung is answered here before the dispatch rungs (5\u20136) are consulted."},{rung:"client-capabilities",order:8,evaluatedAt:"pre-dispatch",codes:[ProtocolErrorCode.MissingRequiredClientCapability],conformance:["server-stateless"],rationale:"The capability requirement is checked by the HTTP entry, pre-dispatch, against the validated envelope the classifier produced \u2014 pinning the spec-mandated HTTP 400 independently of how dispatch- and handler-produced errors are mapped. The documented order (after method resolution and params validation) is preserved observably only while the requirement table is empty: once a served method gains a requirement entry, a request that is missing the capability and would also fail a dispatch rung is answered by this gate first, so the entry must consult the method registry before the gate if the documented precedence is to stay observable."},{rung:"param-header-validation",order:9,evaluatedAt:"pre-dispatch",codes:[HEADER_MISMATCH_ERROR_CODE],conformance:["http-custom-header-server-validation"],rationale:"SEP-2243 `Mcp-Param-*` headers are validated against the named tool\u2019s `x-mcp-header` declarations and the body `arguments` after the tool registry is known and before dispatch reaches the handler; a missing/disagreeing/malformed header is rejected 400 / -32020 with the same shape as the standard-header cross-checks. The documented order (after method resolution and params validation) is preserved observably only when the body `arguments` would otherwise validate: the check runs pre-dispatch, so a `tools/call` that fails BOTH this rung and a dispatch-time rung (e.g. order-6 `request-params`, -32602) is answered by this gate first with 400 / -32020, not by the earlier-ordered rung."}],LADDER_ERROR_HTTP_STATUS={[ProtocolErrorCode.ParseError]:400,[ProtocolErrorCode.InvalidRequest]:400,[ProtocolErrorCode.MethodNotFound]:404,[ProtocolErrorCode.UnsupportedProtocolVersion]:400,[ProtocolErrorCode.MissingRequiredClientCapability]:400,[HEADER_MISMATCH_ERROR_CODE]:400};function parseSchema(schema,data){return safeParse(schema,data)}function shapeKeys(schemas){return new Set(schemas.flatMap(schema=>Object.keys(schema.shape)))}function isStandardSchema(schema){if(schema==null)return!1;let schemaType=typeof schema;return schemaType!=="object"&&schemaType!=="function"||!("~standard"in schema)?!1:typeof schema["~standard"]?.validate=="function"}var warnedZodFallback=!1,JSON_SCHEMA_CONVERSION_TARGET="draft-2020-12";function standardSchemaToJsonSchema(schema,io2="input"){let std=schema["~standard"],result2;if(std.jsonSchema)result2=std.jsonSchema[io2]({target:JSON_SCHEMA_CONVERSION_TARGET});else if(std.vendor==="zod"){if(!("_zod"in schema))throw new Error("Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().");warnedZodFallback||(warnedZodFallback=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),result2=toJSONSchema(schema,{target:JSON_SCHEMA_CONVERSION_TARGET,io:io2})}else throw new Error(`Schema library "${std.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(io2==="output")return result2.type!==void 0?result2:isProvablyObjectShapedRoot(result2)?{type:"object",...result2}:result2;if(result2.type!==void 0&&result2.type!=="object")throw new Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(result2.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:"object",...result2}}var LOCAL_DEFINITION_REF=/^#\/(\$defs|definitions)\/([^/~%]+)$/;function isProvablyObjectShapedRoot(schema,root=schema){if("properties"in schema||"patternProperties"in schema||"additionalProperties"in schema||"required"in schema)return!0;let ref=typeof schema.$ref=="string"&&LOCAL_DEFINITION_REF.exec(schema.$ref);if(ref&&root[ref[1]]?.[ref[2]]?.type==="object")return!0;for(let key of["oneOf","anyOf","allOf"]){let members2=schema[key];if(Array.isArray(members2)&&members2.length>0)return members2.every(m=>m!==null&&typeof m=="object"&&(m.type==="object"||isProvablyObjectShapedRoot(m,"$id"in m?{}:root)))}return!1}function formatIssue(issue2){return issue2.path?.length?`${issue2.path.map(p=>String(typeof p=="object"?p.key:p)).join(".")}: ${issue2.message}`:issue2.message}async function validateStandardSchema(schema,data){let result2=await schema["~standard"].validate(data);return result2.issues&&result2.issues.length>0?{success:!1,error:result2.issues.map(i=>formatIssue(i)).join(", ")}:{success:!0,data:result2.value}}function zodEmittedPattern(schema){let jsonSchema=toJSONSchema(schema,{target:JSON_SCHEMA_CONVERSION_TARGET,io:"input"});return typeof jsonSchema.pattern=="string"?jsonSchema.pattern:void 0}var DATETIME_FRACTION_DIGITS=/\\\.\\d\{(\d+)\}/;function datetimeReferenceSchemas(pattern){let fractionDigits=DATETIME_FRACTION_DIGITS.exec(pattern),precisions=[void 0,-1,0];return fractionDigits&&precisions.push(Number(fractionDigits[1])),[!1,!0].flatMap(local=>[!1,!0].flatMap(offset=>precisions.map(precision=>iso_exports.datetime({local,offset,precision}))))}function referencePatternsForFormat(format,pattern){let referenceSchemas;switch(format){case"email":referenceSchemas=[email2()];break;case"uri":referenceSchemas=[url()];break;case"date":referenceSchemas=[iso_exports.date()];break;case"date-time":referenceSchemas=datetimeReferenceSchemas(pattern);break}return new Set(referenceSchemas.map(schema=>zodEmittedPattern(schema)).filter(emitted=>emitted!==void 0))}function isLibraryFormatPattern(format,pattern,vendor){return vendor!=="zod"?!0:referencePatternsForFormat(format,pattern).has(pattern)}function isJsonObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function convertStandardElicitationSchema(schema){try{return standardSchemaToJsonSchema(schema,"input")}catch(error2){let detail=error2 instanceof Error?error2.message:String(error2);throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${detail}`)}}var ANNOTATION_ONLY_JSON_SCHEMA_KEYWORDS=new Set(["$comment","deprecated","description","examples","readOnly","title","writeOnly"]);function isAnnotationOnlyJsonSchemaKeyword(key){return ANNOTATION_ONLY_JSON_SCHEMA_KEYWORDS.has(key)||key.startsWith("x-")}var ROOT_KEYS=new Set(["$schema",...Object.keys(ElicitRequestFormParamsSchema.shape.requestedSchema.shape)]),PROPERTY_KEYS_BY_TYPE={string:shapeKeys([StringSchemaSchema,UntitledSingleSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema,LegacyTitledEnumSchemaSchema]),number:shapeKeys([NumberSchemaSchema]),integer:shapeKeys([NumberSchemaSchema]),boolean:shapeKeys([BooleanSchemaSchema]),array:shapeKeys([UntitledMultiSelectEnumSchemaSchema,TitledMultiSelectEnumSchemaSchema])},SUPPORTED_STRING_FORMATS=new Set(StringSchemaSchema.shape.format.unwrap().options);function walkProperty(node2,path,vendor,unsupported){if(!isJsonObject(node2))return node2;let allowedKeys=typeof node2.type=="string"&&Object.hasOwn(PROPERTY_KEYS_BY_TYPE,node2.type)?PROPERTY_KEYS_BY_TYPE[node2.type]:void 0;if(allowedKeys===void 0)return node2;let pruned={};for(let[key,value]of Object.entries(node2))allowedKeys.has(key)||isAnnotationOnlyJsonSchemaKeyword(key)?pruned[key]=value:key==="pattern"&&node2.type==="string"&&typeof node2.format=="string"?SUPPORTED_STRING_FORMATS.has(node2.format)?(typeof value!="string"||!isLibraryFormatPattern(node2.format,value,vendor))&&unsupported.push(`${path}.${key}`):pruned[key]=value:unsupported.push(`${path}.${key}`);return pruned}function walkRequestedSchema(converted,vendor){let pruned={},unsupported=[];for(let[key,value]of Object.entries(converted))key==="properties"&&isJsonObject(value)?pruned[key]=Object.fromEntries(Object.entries(value).map(([name2,node2])=>[name2,walkProperty(node2,`properties.${name2}`,vendor,unsupported)])):ROOT_KEYS.has(key)?pruned[key]=value:isAnnotationOnlyJsonSchemaKeyword(key)||unsupported.push(key);if(unsupported.length>0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${unsupported.join(", ")}`);return pruned}function describeUnsupportedProperties(pruned,fallback){if(!isJsonObject(pruned.properties))return fallback;let offenders=Object.entries(pruned.properties).filter(([,node2])=>!parseSchema(PrimitiveSchemaDefinitionSchema,node2).success).map(([name2])=>`properties.${name2}`);return offenders.length>0?offenders.join(", "):fallback}function findDroppedConstraintPaths(original,parsed,path=""){return Array.isArray(original)&&Array.isArray(parsed)?original.flatMap((item,index)=>findDroppedConstraintPaths(item,parsed[index],`${path}[${index}]`)):!isJsonObject(original)||!isJsonObject(parsed)?[]:Object.entries(original).flatMap(([key,value])=>{let childPath=path?`${path}.${key}`:key;return Object.prototype.hasOwnProperty.call(parsed,key)?findDroppedConstraintPaths(value,parsed[key],childPath):isAnnotationOnlyJsonSchemaKeyword(key)?[]:[childPath]})}function normalizeElicitInputParams(input){if(!isStandardSchema(input.requestedSchema))return{...input,mode:"form",requestedSchema:input.requestedSchema};let vendor=input.requestedSchema["~standard"].vendor,pruned=walkRequestedSchema(convertStandardElicitationSchema(input.requestedSchema),vendor),parsed=parseSchema(ElicitRequestFormParamsSchema.shape.requestedSchema,pruned);if(!parsed.success)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${describeUnsupportedProperties(pruned,parsed.error.message)}`);let droppedConstraints=findDroppedConstraintPaths(pruned,parsed.data);if(droppedConstraints.length>0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${droppedConstraints.join(", ")}`);let danglingRequired=(parsed.data.required??[]).filter(key=>!Object.prototype.hasOwnProperty.call(parsed.data.properties,key));if(danglingRequired.length>0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${danglingRequired.join(", ")}`);return{...input,mode:"form",requestedSchema:parsed.data}}function buildInputRequired(spec){let hasInputRequests=spec.inputRequests!==void 0&&Object.keys(spec.inputRequests).length>0,hasRequestState=typeof spec.requestState=="string";if(!hasInputRequests&&!hasRequestState)throw new TypeError("inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)");return{resultType:"input_required",...spec.inputRequests!==void 0&&{inputRequests:spec.inputRequests},...spec.requestState!==void 0&&{requestState:spec.requestState}}}var inputRequired=Object.assign(buildInputRequired,{elicit(params){try{return{method:"elicitation/create",params:normalizeElicitInputParams(params)}}catch(error2){throw error2 instanceof ProtocolError?new TypeError(error2.message,{cause:error2}):error2}},elicitUrl(params){return{method:"elicitation/create",params:{...params,mode:"url"}}},createMessage(params){return{method:"sampling/createMessage",params}},listRoots(){return{method:"roots/list"}}});var DEFAULT_INPUT_REQUIRED_AUTO_FULFILL=!0,DEFAULT_INPUT_REQUIRED_MAX_ROUNDS=10,REQUEST_STATE_ONLY_LEG_PACING_MS=250;function resolveInputRequiredDriverConfig(options){return{autoFulfill:options?.autoFulfill??DEFAULT_INPUT_REQUIRED_AUTO_FULFILL,maxRounds:options?.maxRounds??DEFAULT_INPUT_REQUIRED_MAX_ROUNDS}}function buildInputRequiredRetryParams(originalParams,responses,requestState){let hasResponses=responses!==void 0&&Object.keys(responses).length>0;return!hasResponses&&requestState===void 0?originalParams:{...originalParams,...hasResponses&&{inputResponses:responses},...requestState!==void 0&&{requestState}}}function inputRequiredRoundsExceededMessage(method,maxRounds){return`Multi-round-trip request '${method}' still required input after ${maxRounds} rounds (inputRequired.maxRounds)`}function sleep(ms,signal){return new Promise((resolve,reject)=>{if(signal?.aborted){reject(signal.reason instanceof SdkError?signal.reason:new SdkError(SdkErrorCode.RequestTimeout,String(signal.reason)));return}let timer=setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{clearTimeout(timer),reject(signal?.reason instanceof SdkError?signal.reason:new SdkError(SdkErrorCode.RequestTimeout,String(signal?.reason)))};signal?.addEventListener("abort",onAbort,{once:!0})})}function linkedRoundAbort(outer){let controller=new AbortController,onOuterAbort=()=>controller.abort(outer?.reason);return outer?.addEventListener("abort",onOuterAbort,{once:!0}),outer?.aborted&&controller.abort(outer.reason),{signal:controller.signal,abort:reason=>controller.abort(reason),dispose:()=>outer?.removeEventListener("abort",onOuterAbort)}}async function runInputRequiredDriver(args){let{config:config2,method,originalParams,requestOptions,hooks,signal}=args,startedAt=args.flowStartedAt??Date.now(),payload=args.firstPayload,round=0;for(;;){if(round+=1,round>config2.maxRounds)throw new SdkError(SdkErrorCode.InputRequiredRoundsExceeded,inputRequiredRoundsExceededMessage(method,config2.maxRounds),{rounds:config2.maxRounds,lastResult:{inputRequests:payload.inputRequests,...payload.requestState!==void 0&&{requestState:payload.requestState}}});requestOptions.onprogress?.({progress:round,message:`Fulfilling input required by '${method}' (round ${round})`});let entries=Object.entries(payload.inputRequests??{}),responses;if(entries.length>0){let round$1=linkedRoundAbort(signal);try{let fulfilled=await Promise.all(entries.map(async([key,entry])=>{try{return[key,await hooks.dispatchInputRequest(key,entry,round$1.signal)]}catch(error2){throw round$1.abort(error2),error2}}));responses=Object.fromEntries(fulfilled)}finally{round$1.dispose()}}else await sleep(REQUEST_STATE_ONLY_LEG_PACING_MS,signal);let legOptions={...requestOptions.timeout!==void 0&&{timeout:requestOptions.timeout}};if(requestOptions.maxTotalTimeout!==void 0){let totalElapsed=Date.now()-startedAt,remaining=requestOptions.maxTotalTimeout-totalElapsed;if(remaining<=0)throw new SdkError(SdkErrorCode.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:requestOptions.maxTotalTimeout,totalElapsed});legOptions.maxTotalTimeout=remaining}let result2=await hooks.retry(buildInputRequiredRetryParams(originalParams,responses,payload.requestState),legOptions);if(isInputRequiredResult(result2)){payload={inputRequests:result2.inputRequests??{},...result2.requestState!==void 0&&{requestState:result2.requestState}};continue}return result2}}var SPEC_SCHEMA_KEYS=["AnnotationsSchema","AudioContentSchema","BaseMetadataSchema","BlobResourceContentsSchema","BooleanSchemaSchema","CallToolRequestSchema","CallToolRequestParamsSchema","CallToolResultSchema","CancelledNotificationSchema","CancelledNotificationParamsSchema","CancelTaskRequestSchema","CancelTaskResultSchema","ClientCapabilitiesSchema","ClientNotificationSchema","ClientRequestSchema","ClientResultSchema","CompatibilityCallToolResultSchema","CompleteRequestSchema","CompleteRequestParamsSchema","CompleteResultSchema","ContentBlockSchema","CreateMessageRequestSchema","CreateMessageRequestParamsSchema","CreateMessageResultSchema","CreateMessageResultWithToolsSchema","CreateTaskResultSchema","CursorSchema","DiscoverRequestSchema","DiscoverResultSchema","ElicitationCompleteNotificationSchema","ElicitationCompleteNotificationParamsSchema","ElicitRequestSchema","ElicitRequestFormParamsSchema","ElicitRequestParamsSchema","ElicitRequestURLParamsSchema","ElicitResultSchema","EmbeddedResourceSchema","EmptyResultSchema","EnumSchemaSchema","GetPromptRequestSchema","GetPromptRequestParamsSchema","GetPromptResultSchema","GetTaskPayloadRequestSchema","GetTaskPayloadResultSchema","GetTaskRequestSchema","GetTaskResultSchema","IconSchema","IconsSchema","ImageContentSchema","ImplementationSchema","InitializedNotificationSchema","InitializeRequestSchema","InitializeRequestParamsSchema","InitializeResultSchema","JSONArraySchema","JSONObjectSchema","JSONRPCErrorResponseSchema","JSONRPCMessageSchema","JSONRPCNotificationSchema","JSONRPCRequestSchema","JSONRPCResponseSchema","JSONRPCResultResponseSchema","JSONValueSchema","LegacyTitledEnumSchemaSchema","ListPromptsRequestSchema","ListPromptsResultSchema","ListResourcesRequestSchema","ListResourcesResultSchema","ListResourceTemplatesRequestSchema","ListResourceTemplatesResultSchema","ListRootsRequestSchema","ListRootsResultSchema","ListTasksRequestSchema","ListTasksResultSchema","ListToolsRequestSchema","ListToolsResultSchema","LoggingLevelSchema","LoggingMessageNotificationSchema","LoggingMessageNotificationParamsSchema","ModelHintSchema","ModelPreferencesSchema","MultiSelectEnumSchemaSchema","NotificationSchema","NumberSchemaSchema","PaginatedRequestSchema","PaginatedRequestParamsSchema","PaginatedResultSchema","PingRequestSchema","PrimitiveSchemaDefinitionSchema","ProgressSchema","ProgressNotificationSchema","ProgressNotificationParamsSchema","ProgressTokenSchema","PromptSchema","PromptArgumentSchema","PromptListChangedNotificationSchema","PromptMessageSchema","PromptReferenceSchema","ReadResourceRequestSchema","ReadResourceRequestParamsSchema","ReadResourceResultSchema","RelatedTaskMetadataSchema","RequestSchema","RequestIdSchema","RequestMetaSchema","ResourceSchema","ResourceContentsSchema","ResourceLinkSchema","ResourceListChangedNotificationSchema","ResourceRequestParamsSchema","ResourceTemplateSchema","ResourceTemplateReferenceSchema","ResourceUpdatedNotificationSchema","ResourceUpdatedNotificationParamsSchema","ResultMetaObjectSchema","ResultSchema","RoleSchema","RootSchema","RootsListChangedNotificationSchema","SamplingContentSchema","SamplingMessageSchema","SamplingMessageContentBlockSchema","ServerCapabilitiesSchema","ServerNotificationSchema","ServerRequestSchema","ServerResultSchema","SetLevelRequestSchema","SetLevelRequestParamsSchema","SingleSelectEnumSchemaSchema","StringSchemaSchema","SubscribeRequestSchema","SubscribeRequestParamsSchema","SubscriptionFilterSchema","SubscriptionsAcknowledgedNotificationSchema","SubscriptionsAcknowledgedNotificationParamsSchema","SubscriptionsListenRequestSchema","SubscriptionsListenRequestParamsSchema","SubscriptionsListenResultSchema","SubscriptionsListenResultMetaSchema","TaskAugmentedRequestParamsSchema","TaskCreationParamsSchema","TaskMetadataSchema","TaskSchema","TaskStatusSchema","TaskStatusNotificationSchema","TaskStatusNotificationParamsSchema","TextContentSchema","TextResourceContentsSchema","TitledMultiSelectEnumSchemaSchema","TitledSingleSelectEnumSchemaSchema","ToolSchema","ToolAnnotationsSchema","ToolChoiceSchema","ToolExecutionSchema","ToolListChangedNotificationSchema","ToolResultContentSchema","ToolUseContentSchema","UnsubscribeRequestSchema","UnsubscribeRequestParamsSchema","UntitledMultiSelectEnumSchemaSchema","UntitledSingleSelectEnumSchemaSchema"],authSchemas={IdJagTokenExchangeResponseSchema,OAuthClientInformationFullSchema,OAuthClientInformationSchema,OAuthClientMetadataSchema,OAuthClientRegistrationErrorSchema,OAuthErrorResponseSchema,OAuthMetadataSchema,OAuthProtectedResourceMetadataSchema,OAuthTokenRevocationRequestSchema,OAuthTokensSchema,OpenIdProviderDiscoveryMetadataSchema,OpenIdProviderMetadataSchema},_specTypeSchemas={},_isSpecType={};function register(key,schema){let name2=key.slice(0,-6);_specTypeSchemas[name2]=schema,_isSpecType[name2]=v=>schema.safeParse(v).success}for(let key of SPEC_SCHEMA_KEYS)register(key,schemas_exports2[key]);for(let[key,schema]of Object.entries(authSchemas))register(key,schema);var specTypeSchemas=Object.freeze(_specTypeSchemas),isSpecType=Object.freeze(_isSpecType);function bootstrapOutboundCodec(method){switch(method){case"initialize":case"notifications/initialized":return codecForVersion(void 0);case"server/discover":return codecForVersion(MODERN_WIRE_REVISION);default:return}}var DEFAULT_REQUEST_TIMEOUT_MSEC=6e4,RESERVED_ENVELOPE_META_KEYS=[PROTOCOL_VERSION_META_KEY,CLIENT_INFO_META_KEY,CLIENT_CAPABILITIES_META_KEY,LOG_LEVEL_META_KEY],RETRY_PARAMS_KEYS=["inputResponses","requestState"];function liftWireOnlyMaterial(message,kind){let params=message.params;if(!isPlainObject$1(params))return{message,lifted:{}};let meta2=params._meta,envelopeKeys=isPlainObject$1(meta2)?RESERVED_ENVELOPE_META_KEYS.filter(key=>key in meta2):[],retryKeys=kind==="request"?RETRY_PARAMS_KEYS.filter(key=>key in params):[];if(envelopeKeys.length===0&&retryKeys.length===0)return{message,lifted:{}};let lifted={},nextParams={...params};if(envelopeKeys.length>0&&isPlainObject$1(meta2)){let envelope={},nextMeta={...meta2};for(let key of envelopeKeys)envelope[key]=meta2[key],delete nextMeta[key];lifted.envelope=envelope,Object.keys(nextMeta).length>0?nextParams._meta=nextMeta:delete nextParams._meta}for(let key of retryKeys)key==="inputResponses"&&(lifted.inputResponses=nextParams[key]),key==="requestState"&&(lifted.requestState=nextParams[key]),delete nextParams[key];return{message:{...message,params:nextParams},lifted}}function codecResultValidator(codec,method){let probe=codec.validateResult(method,void 0);if(!(!probe.ok&&probe.reason==="not-in-era"))return{"~standard":{version:1,vendor:"mcp-wire-codec",validate(value){let outcome=codec.validateResult(method,value);return outcome.ok?{value:outcome.value}:{issues:[{message:outcome.reason==="invalid"?outcome.message:`not-in-era: ${method}`}]}}}}}function requestStateAccessor(value){return()=>value}var NO_REQUEST_STATE=requestStateAccessor(void 0),writeNegotiatedProtocolVersion,Protocol=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_customSchemaRequestMethods=new Set;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;static{writeNegotiatedProtocolVersion=(instance,version2)=>{instance._negotiatedProtocolVersion=version2}}_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(_options){this._options=_options,this._supportedProtocolVersions=_options?.supportedProtocolVersions??SUPPORTED_PROTOCOL_VERSIONS,this.setNotificationHandler("notifications/cancelled",notification=>{this._oncancel(notification)}),this.setNotificationHandler("notifications/progress",notification=>{this._onprogress(notification)}),this.setRequestHandler("ping",_request=>({}))}_shouldDropInbound(_message){}_outboundMetaEnvelope(){}_envelopeOutbound(message){let envelope=this._outboundMetaEnvelope();if(envelope===void 0)return message;let params=message.params??{};return{...message,params:{...params,_meta:{...envelope,...params._meta}}}}_resolveNonCompleteResult(decoded,flow){return Promise.reject(new SdkError(SdkErrorCode.UnsupportedResultType,`Unsupported result type '${decoded.kind}' for ${flow.request.method}`,{resultType:decoded.kind,method:flow.request.method}))}_getRequestHandler(method){return this._requestHandlers.get(method)}async _oncancel(notification){notification.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(notification.params.requestId)?.abort(notification.params.reason)}_setupTimeout(messageId,timeout,maxTotalTimeout,onTimeout,resetTimeoutOnProgress=!1){this._timeoutInfo.set(messageId,{timeoutId:setTimeout(onTimeout,timeout),startTime:Date.now(),timeout,maxTotalTimeout,resetTimeoutOnProgress,onTimeout})}_resetTimeout(messageId){let info=this._timeoutInfo.get(messageId);if(!info)return!1;let totalElapsed=Date.now()-info.startTime;if(info.maxTotalTimeout&&totalElapsed>=info.maxTotalTimeout)throw this._timeoutInfo.delete(messageId),new SdkError(SdkErrorCode.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:info.maxTotalTimeout,totalElapsed});return clearTimeout(info.timeoutId),info.timeoutId=setTimeout(info.onTimeout,info.timeout),!0}_cleanupTimeout(messageId){let info=this._timeoutInfo.get(messageId);info&&(clearTimeout(info.timeoutId),this._timeoutInfo.delete(messageId))}async connect(transport){this._transport=transport;let _onclose=this.transport?.onclose;this._transport.onclose=()=>{try{_onclose?.()}finally{this._onclose()}};let _onerror=this.transport?.onerror;this._transport.onerror=error2=>{_onerror?.(error2),this._onerror(error2)};let _onmessage=this._transport?.onmessage;this._transport.onmessage=(message,extra)=>{_onmessage?.(message,extra),isJSONRPCResultResponse(message)||isJSONRPCErrorResponse(message)?this._onresponse(message):isJSONRPCRequest(message)?this._onrequest(message,extra):isJSONRPCNotification(message)?this._onnotification(message,extra):this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`))},transport.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let responseHandlers=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let info of this._timeoutInfo.values())clearTimeout(info.timeoutId);this._timeoutInfo.clear();let requestHandlerAbortControllers=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let error2=new SdkError(SdkErrorCode.ConnectionClosed,"Connection closed");this._transport=void 0;try{this.onclose?.()}finally{for(let handler of responseHandlers.values())handler(error2);for(let controller of requestHandlerAbortControllers.values())controller.abort(error2)}}_onerror(error2){this.onerror?.(error2)}_onnotification(rawNotification,extra){let{message:notification}=liftWireOnlyMaterial(rawNotification,"notification"),codec=this._negotiatedWireCodec();if(extra?.classification===void 0&&this._shouldDropInbound(rawNotification)==="drop")return;if(extra?.classification!==void 0){let classified=classifiedWireEra(extra.classification);if(classified!==codec.era){this._onerror(new Error(`Era mismatch on inbound notification '${notification.method}': classified as ${classified} but this instance serves ${codec.era}`));return}}if(isSpecNotificationMethod(notification.method)&&!codec.hasNotificationMethod(notification.method))return;let handler=this._notificationHandlers.get(notification.method),fallback=this.fallbackNotificationHandler;handler===void 0&&fallback===void 0||Promise.resolve().then(()=>handler===void 0?fallback(notification):handler(notification,codec)).catch(error2=>this._onerror(new Error(`Uncaught error in notification handler: ${error2}`)))}_onrequest(rawRequest,extra){let{message:request,lifted}=liftWireOnlyMaterial(rawRequest,"request"),codec=this._negotiatedWireCodec();if(extra?.classification===void 0&&this._shouldDropInbound(rawRequest)==="drop"){this._onerror(new Error(`Dropped inbound request '${rawRequest.method}': not servable on this connection's protocol era`));return}let capturedTransport=this._transport,sendErrorResponse=(code2,message,data)=>{let errorResponse={jsonrpc:"2.0",id:request.id,error:{code:code2,message,...data!==void 0&&{data}}};capturedTransport?.send(errorResponse).catch(error2=>this._onerror(new Error(`Failed to send an error response: ${error2}`)))};if(extra?.classification!==void 0){let classified=classifiedWireEra(extra.classification);if(classified!==codec.era){this._onerror(new Error(`Era mismatch on inbound request '${request.method}': classified as ${classified} but this instance serves ${codec.era}`));let requested=extra.classification.revision??classified;sendErrorResponse(ProtocolErrorCode.UnsupportedProtocolVersion,`Unsupported protocol version: ${requested}`,{supported:this._supportedProtocolVersions,requested});return}}if(isSpecRequestMethod(request.method)&&!codec.hasRequestMethod(request.method)&&!(isExtensionReusedRequestMethod(request.method)&&this._customSchemaRequestMethods.has(request.method))){sendErrorResponse(ProtocolErrorCode.MethodNotFound,"Method not found");return}let handler=this._requestHandlers.get(request.method)??this.fallbackRequestHandler;if(handler===void 0){sendErrorResponse(ProtocolErrorCode.MethodNotFound,"Method not found");return}let envelopeError=codec.checkInboundEnvelope(lifted);if(envelopeError!==void 0){sendErrorResponse(ProtocolErrorCode.InvalidParams,envelopeError);return}let sendNotification=(notification,options)=>this._notificationViaCodec(this._resolveOutboundCodec(notification.method),notification,{...options,relatedRequestId:request.id}),sendRequest=(r,resultSchema,options)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(r.method),r,resultSchema,{...options,relatedRequestId:request.id}),abortController=new AbortController;this._requestHandlerAbortControllers.set(request.id,abortController);let partitionedInputResponses=lifted.inputResponses===void 0?void 0:partitionInputResponses(lifted.inputResponses),baseCtx={sessionId:capturedTransport?.sessionId,mcpReq:{id:request.id,method:request.method,_meta:request.params?._meta,...lifted.envelope!==void 0&&{envelope:lifted.envelope},...partitionedInputResponses!==void 0&&{inputResponses:partitionedInputResponses.accepted},...partitionedInputResponses!==void 0&&partitionedInputResponses.droppedKeys.length>0&&{droppedInputResponseKeys:partitionedInputResponses.droppedKeys},requestState:lifted.requestState===void 0?NO_REQUEST_STATE:requestStateAccessor(lifted.requestState),signal:abortController.signal,send:((r,schemaOrOptions,maybeOptions)=>{let sendCodec=this._resolveOutboundCodec(r.method);if(this._assertOutboundRequestInEra(sendCodec,r.method),isStandardSchema(schemaOrOptions))return sendRequest(r,schemaOrOptions,maybeOptions);let validate2=codecResultValidator(sendCodec,r.method);if(validate2===void 0)throw new TypeError(`'${r.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return sendRequest(r,validate2,schemaOrOptions)}),notify:sendNotification},http:extra?.authInfo?{authInfo:extra.authInfo}:void 0},ctx=this.buildContext(baseCtx,extra);Promise.resolve().then(()=>handler(request,ctx)).then(async result2=>{if(abortController.signal.aborted)return;let encoded;try{encoded=codec.encodeResult(request.method,result2,this._outboundServerInfo())}catch(error2){this._onerror(new Error(`Failed to encode result for ${request.method}: ${error2}`)),sendErrorResponse(ProtocolErrorCode.InternalError,"Internal error");return}let response={result:encoded,jsonrpc:"2.0",id:request.id};await capturedTransport?.send(response)},async error2=>{if(abortController.signal.aborted)return;let thrownCode=Number.isSafeInteger(error2.code)?error2.code:ProtocolErrorCode.InternalError,errorResponse={jsonrpc:"2.0",id:request.id,error:{code:codec.encodeErrorCode(thrownCode),message:error2.message??"Internal error",...error2.data!==void 0&&{data:error2.data}}};await capturedTransport?.send(errorResponse)}).catch(error2=>this._onerror(new Error(`Failed to send response: ${error2}`))).finally(()=>{this._requestHandlerAbortControllers.get(request.id)===abortController&&this._requestHandlerAbortControllers.delete(request.id)})}_onprogress(notification){let{progressToken,...params}=notification.params,messageId=Number(progressToken),handler=this._progressHandlers.get(messageId);if(!handler){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`));return}let responseHandler=this._responseHandlers.get(messageId),timeoutInfo=this._timeoutInfo.get(messageId);if(timeoutInfo&&responseHandler&&timeoutInfo.resetTimeoutOnProgress)try{this._resetTimeout(messageId)}catch(error2){this._responseHandlers.delete(messageId),this._progressHandlers.delete(messageId),this._cleanupTimeout(messageId),responseHandler(error2);return}handler(params)}_onresponse(response){let messageId=Number(response.id),handler=this._responseHandlers.get(messageId);if(handler===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`));return}this._responseHandlers.delete(messageId),this._cleanupTimeout(messageId),this._progressHandlers.delete(messageId),isJSONRPCResultResponse(response)?handler(response):handler(ProtocolError.fromError(response.error.code,response.error.message,response.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(request,schemaOrOptions,maybeOptions){let codec=this._resolveOutboundCodec(request.method);if(isStandardSchema(schemaOrOptions))return isExtensionReusedRequestMethod(request.method)||this._assertOutboundRequestInEra(codec,request.method),this._requestWithSchemaViaCodec(codec,request,schemaOrOptions,maybeOptions);this._assertOutboundRequestInEra(codec,request.method);let validate2=codecResultValidator(codec,request.method);if(validate2===void 0)throw new TypeError(`'${request.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(codec,request,validate2,schemaOrOptions)}_negotiatedWireCodec(){return codecForVersion(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(method){if(this._negotiatedProtocolVersion===void 0){let pinned=bootstrapOutboundCodec(method);if(pinned)return pinned}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(codec,method){if(isSpecRequestMethod(method)&&!codec.hasRequestMethod(method))throw new SdkError(SdkErrorCode.MethodNotSupportedByProtocolVersion,`Method '${method}' is not supported by the negotiated protocol version (wire era ${codec.era})`,{method,era:codec.era})}_requestWithSchema(request,resultSchema,options){let codec=this._resolveOutboundCodec(request.method);return this._assertOutboundRequestInEra(codec,request.method),this._requestWithSchemaViaCodec(codec,request,resultSchema,options)}_requestWithSchemaViaCodec(codec,request,resultSchema,options){let{relatedRequestId,resumptionToken,onresumptiontoken,headers}=options??{},flowStartedAt=Date.now(),onAbort,cleanupMessageId;return new Promise((resolve,reject)=>{let earlyReject=error2=>{reject(error2)};if(!this._transport){earlyReject(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(request.method)}catch(error2){earlyReject(error2);return}if(options?.signal?.aborted){let reason=options.signal.reason;throw reason instanceof SdkError?reason:new SdkError(SdkErrorCode.RequestTimeout,String(reason))}let requestAbort=codec.era===MODERN_WIRE_REVISION&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,messageId=this._requestMessageId++;cleanupMessageId=messageId;let jsonrpcRequest={...request,jsonrpc:"2.0",id:messageId};options?.onprogress&&(this._progressHandlers.set(messageId,options.onprogress),jsonrpcRequest.params={...request.params,_meta:{...request.params?._meta,progressToken:messageId}});let outbound=this._envelopeOutbound(jsonrpcRequest),responseReceived=!1,cancel=reason=>{responseReceived||(this._progressHandlers.delete(messageId),requestAbort===void 0?request.method!=="initialize"&&this._transport?.send(this._envelopeOutbound({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:messageId,reason:String(reason)}}),{relatedRequestId,resumptionToken,onresumptiontoken}).catch(error2=>this._onerror(new Error(`Failed to send cancellation: ${error2}`))):requestAbort.abort(),reject(reason instanceof SdkError?reason:new SdkError(SdkErrorCode.RequestTimeout,String(reason))))};this._responseHandlers.set(messageId,response=>{if(options?.signal?.aborted)return;if(responseReceived=!0,response instanceof Error)return reject(response);let decoded;try{decoded=codec.decodeResult(request.method,response.result)}catch(error2){return reject(error2 instanceof Error?error2:new Error(String(error2)))}if(decoded.kind==="invalid")return reject(decoded.error);if(decoded.kind==="input_required"){if(options?.allowInputRequired===!0)return resolve(manualInputRequiredValue(decoded));let flow={codec,request,resultSchema,options,flowStartedAt,retry:(params,legOptions)=>this._requestWithSchemaViaCodec(codec,params===void 0?{method:request.method}:{method:request.method,params},resultSchema,legOptions)};return resolve(this._resolveNonCompleteResult(decoded,flow))}let result2=decoded.result;validateStandardSchema(resultSchema,result2).then(parseResult=>{parseResult.success?resolve(parseResult.data):reject(new SdkError(SdkErrorCode.InvalidResult,`Invalid result for ${request.method}: ${parseResult.error}`))},reject)}),onAbort=()=>cancel(options?.signal?.reason),options?.signal?.addEventListener("abort",onAbort,{once:!0});let timeout=options?.timeout??DEFAULT_REQUEST_TIMEOUT_MSEC,timeoutHandler=()=>cancel(new SdkError(SdkErrorCode.RequestTimeout,"Request timed out",{timeout}));this._setupTimeout(messageId,timeout,options?.maxTotalTimeout,timeoutHandler,options?.resetTimeoutOnProgress??!1),this._transport.send(outbound,{relatedRequestId,resumptionToken,onresumptiontoken,headers,requestSignal:requestAbort?.signal}).catch(error2=>{this._progressHandlers.delete(messageId),reject(error2)})}).finally(()=>{onAbort&&options?.signal?.removeEventListener("abort",onAbort),cleanupMessageId!==void 0&&(this._responseHandlers.delete(cleanupMessageId),this._cleanupTimeout(cleanupMessageId))})}async notification(notification,options){return await this._notificationViaCodec(this._resolveOutboundCodec(notification.method),notification,options)}async _notificationViaCodec(codec,notification,options){if(!this._transport)throw new SdkError(SdkErrorCode.NotConnected,"Not connected");if(isSpecNotificationMethod(notification.method)&&!codec.hasNotificationMethod(notification.method))throw new SdkError(SdkErrorCode.MethodNotSupportedByProtocolVersion,`Notification '${notification.method}' is not supported by the negotiated protocol version (wire era ${codec.era})`,{method:notification.method,era:codec.era});this.assertNotificationCapability(notification.method);let jsonrpcNotification=this._envelopeOutbound({jsonrpc:"2.0",...notification});if((this._options?.debouncedNotificationMethods??[]).includes(notification.method)&&!notification.params&&options?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(notification.method))return;this._pendingDebouncedNotifications.add(notification.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(notification.method),this._transport&&this._transport?.send(jsonrpcNotification,options).catch(error2=>this._onerror(error2))});return}await this._transport.send(jsonrpcNotification,options)}setRequestHandler(method,schemasOrHandler,maybeHandler){this.assertRequestHandlerCapability(method);let stored;if(typeof schemasOrHandler=="function"){if(!isSpecRequestMethod(method))throw new TypeError(`'${method}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);stored=(request,ctx)=>{let dispatchCodec=this._negotiatedWireCodec(),outcome=dispatchCodec.validateRequest(method,request);if(!outcome.ok&&outcome.reason==="not-in-era"&&(outcome=dispatchCodec.validateInputRequest(method,request)),!outcome.ok)throw outcome.reason==="not-in-era"?new ProtocolError(ProtocolErrorCode.InternalError,`No wire schema for ${method} in the resolved era`):new Error(outcome.message);return Promise.resolve(schemasOrHandler(outcome.value,ctx))}}else if(maybeHandler)stored=async(request,ctx)=>{let parsed=await validateStandardSchema(schemasOrHandler.params,{...request.params});if(!parsed.success)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Invalid params for ${method}: ${parsed.error}`);return maybeHandler(parsed.data,ctx)};else throw new TypeError("setRequestHandler: handler is required");typeof schemasOrHandler=="function"?this._customSchemaRequestMethods.delete(method):this._customSchemaRequestMethods.add(method),this._requestHandlers.set(method,this._wrapHandler(method,stored))}_wrapHandler(_method,handler){return handler}_outboundServerInfo(){}removeRequestHandler(method){this._requestHandlers.delete(method),this._customSchemaRequestMethods.delete(method)}assertCanSetRequestHandler(method){if(this._requestHandlers.has(method))throw new Error(`A request handler for ${method} already exists, which would be overridden`)}setNotificationHandler(method,schemasOrHandler,maybeHandler){if(typeof schemasOrHandler=="function"){if(!isSpecNotificationMethod(method))throw new TypeError(`'${method}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(method,(notification,codec)=>{let outcome=codec.validateNotification(method,notification);if(!outcome.ok)throw outcome.reason==="not-in-era"?new ProtocolError(ProtocolErrorCode.InternalError,`No wire schema for ${method} in the resolved era`):new Error(outcome.message);return Promise.resolve(schemasOrHandler(outcome.value))});return}if(!maybeHandler)throw new TypeError("setNotificationHandler: handler is required");this._notificationHandlers.set(method,async notification=>{let parsed=await validateStandardSchema(schemasOrHandler.params,{...notification.params});if(!parsed.success)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Invalid params for notification ${method}: ${parsed.error}`);await maybeHandler(parsed.data,notification)})}removeNotificationHandler(method){this._notificationHandlers.delete(method)}};function isPlainObject$1(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function mergeCapabilities(base,additional){let result2={...base};for(let key in additional){let k=key,addValue=additional[k];if(addValue===void 0)continue;let baseValue=result2[k];result2[k]=isPlainObject$1(baseValue)&&isPlainObject$1(addValue)?{...baseValue,...addValue}:addValue}return result2}function isPlainObject2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function partitionInputResponses(inputResponses){let accepted={},droppedKeys=[];if(!isPlainObject2(inputResponses))return{accepted,droppedKeys};for(let[key,entry]of Object.entries(inputResponses)){if(!isPlainObject2(entry)||"method"in entry||"result"in entry){droppedKeys.push(key);continue}accepted[key]=entry}return{accepted,droppedKeys}}function relatedMessagingUnavailable(member){throw new SdkError(SdkErrorCode.SendFailed,`ctx.mcpReq.${member} is not available while fulfilling an embedded input request: the request is fulfilled locally and has no related peer request`)}function synthesizeInputRequestContext(key,method,params,signal,sessionId){return{sessionId,mcpReq:{id:key,method,_meta:params?._meta,requestState:requestStateAccessor(void 0),signal,send:(()=>relatedMessagingUnavailable("send")),notify:()=>relatedMessagingUnavailable("notify")}}}async function dispatchInputRequest(host,codec,key,entry,signal){if(!isPlainObject2(entry)||typeof entry.method!="string")throw new SdkError(SdkErrorCode.InvalidResult,`Invalid input request '${key}': each inputRequests entry must be an embedded request object with a method`,{key});let method=entry.method;if(!codec.hasInputRequestMethod(method))throw new SdkError(SdkErrorCode.InvalidResult,`Invalid input request '${key}': '${method}' is not an embedded request the ${codec.era} revision defines (expected elicitation/create, sampling/createMessage, or roots/list)`,{key,method});let handler=host.getRequestHandler(method);if(handler===void 0)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Cannot fulfil input request '${key}': no handler is registered for '${method}' on this client. Declare the corresponding capability and register a handler, or handle input_required results manually.`,{key,method});let params=isPlainObject2(entry.params)?entry.params:void 0;return await handler({jsonrpc:"2.0",id:key,method,...params!==void 0&&{params}},host.buildContext(synthesizeInputRequestContext(key,method,params,signal,host.sessionId)))}function buildRetryLegRequestOptions(options,legOptions){return{...options?.signal!==void 0&&{signal:options.signal},...options?.onprogress!==void 0&&{onprogress:options.onprogress},...options?.resetTimeoutOnProgress!==void 0&&{resetTimeoutOnProgress:options.resetTimeoutOnProgress},...options?.headers!==void 0&&{headers:options.headers},...legOptions.timeout!==void 0&&{timeout:legOptions.timeout},...legOptions.maxTotalTimeout!==void 0&&{maxTotalTimeout:legOptions.maxTotalTimeout},allowInputRequired:!0}}function runInputRequiredFlow(host,config2,decoded,flow){let{codec,request,options,flowStartedAt}=flow,firstPayload={inputRequests:decoded.inputRequests,...decoded.requestState!==void 0&&{requestState:decoded.requestState}},hooks={dispatchInputRequest:(key,entry,signal)=>dispatchInputRequest(host,codec,key,entry,signal),retry:(params,legOptions)=>flow.retry(params,buildRetryLegRequestOptions(options,legOptions))};return runInputRequiredDriver({config:config2,method:request.method,originalParams:request.params,firstPayload,flowStartedAt,signal:options?.signal,requestOptions:{...options?.timeout!==void 0&&{timeout:options.timeout},...options?.maxTotalTimeout!==void 0&&{maxTotalTimeout:options.maxTotalTimeout},...options?.onprogress!==void 0&&{onprogress:options.onprogress}},hooks})}function manualInputRequiredValue(decoded){return{resultType:"input_required",inputRequests:decoded.inputRequests,...decoded.requestState!==void 0&&{requestState:decoded.requestState},...decoded._meta!==void 0&&{_meta:decoded._meta}}}var require_content_type=__commonJSMin((exports=>{var PARAM_REGEXP=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,QESC_REGEXP=/\\([\u000b\u0020-\u00ff])/g,TYPE_REGEXP=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;exports.parse=parse2;function parse2(string4){if(!string4)throw new TypeError("argument string is required");var header=typeof string4=="object"?getcontenttype(string4):string4;if(typeof header!="string")throw new TypeError("argument string is required to be a string");var index=header.indexOf(";"),type=index!==-1?header.slice(0,index).trim():header.trim();if(!TYPE_REGEXP.test(type))throw new TypeError("invalid media type");var obj=new ContentType(type.toLowerCase());if(index!==-1){var key,match,value;for(PARAM_REGEXP.lastIndex=index;match=PARAM_REGEXP.exec(header);){if(match.index!==index)throw new TypeError("invalid parameter format");index+=match[0].length,key=match[1].toLowerCase(),value=match[2],value.charCodeAt(0)===34&&(value=value.slice(1,-1),value.indexOf("\\")!==-1&&(value=value.replace(QESC_REGEXP,"$1"))),obj.parameters[key]=value}if(index!==header.length)throw new TypeError("invalid parameter format")}return obj}function getcontenttype(obj){var header;if(typeof obj.getHeader=="function"?header=obj.getHeader("content-type"):typeof obj.headers=="object"&&(header=obj.headers&&obj.headers["content-type"]),typeof header!="string")throw new TypeError("content-type header is missing from object");return header}function ContentType(type){this.parameters=Object.create(null),this.type=type}})),import_content_type=__toESM(require_content_type(),1);var STDIO_DEFAULT_MAX_BUFFER_SIZE=10*1024*1024;var require_code$1=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.regexpCode=exports.getEsmExportName=exports.getProperty=exports.safeStringify=exports.stringify=exports.strConcat=exports.addCodeArg=exports.str=exports._=exports.nil=exports._Code=exports.Name=exports.IDENTIFIER=exports._CodeOrName=void 0;var _CodeOrName=class{};exports._CodeOrName=_CodeOrName,exports.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Name=class extends _CodeOrName{constructor(s){if(super(),!exports.IDENTIFIER.test(s))throw new Error("CodeGen: name must be a valid identifier");this.str=s}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};exports.Name=Name;var _Code=class extends _CodeOrName{constructor(code2){super(),this._items=typeof code2=="string"?[code2]:code2}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let item=this._items[0];return item===""||item==='""'}get str(){var _a3;return(_a3=this._str)!==null&&_a3!==void 0?_a3:this._str=this._items.reduce((s,c)=>`${s}${c}`,"")}get names(){var _a3;return(_a3=this._names)!==null&&_a3!==void 0?_a3:this._names=this._items.reduce((names2,c)=>(c instanceof Name&&(names2[c.str]=(names2[c.str]||0)+1),names2),{})}};exports._Code=_Code,exports.nil=new _Code("");function _(strs,...args){let code2=[strs[0]],i=0;for(;i<args.length;)addCodeArg(code2,args[i]),code2.push(strs[++i]);return new _Code(code2)}exports._=_;let plus=new _Code("+");function str2(strs,...args){let expr=[safeStringify(strs[0])],i=0;for(;i<args.length;)expr.push(plus),addCodeArg(expr,args[i]),expr.push(plus,safeStringify(strs[++i]));return optimize(expr),new _Code(expr)}exports.str=str2;function addCodeArg(code2,arg){arg instanceof _Code?code2.push(...arg._items):arg instanceof Name?code2.push(arg):code2.push(interpolate(arg))}exports.addCodeArg=addCodeArg;function optimize(expr){let i=1;for(;i<expr.length-1;){if(expr[i]===plus){let res=mergeExprItems(expr[i-1],expr[i+1]);if(res!==void 0){expr.splice(i-1,3,res);continue}expr[i++]="+"}i++}}function mergeExprItems(a,b){if(b==='""')return a;if(a==='""')return b;if(typeof a=="string")return b instanceof Name||a[a.length-1]!=='"'?void 0:typeof b!="string"?`${a.slice(0,-1)}${b}"`:b[0]==='"'?a.slice(0,-1)+b.slice(1):void 0;if(typeof b=="string"&&b[0]==='"'&&!(a instanceof Name))return`"${a}${b.slice(1)}`}function strConcat(c1,c2){return c2.emptyStr()?c1:c1.emptyStr()?c2:str2`${c1}${c2}`}exports.strConcat=strConcat;function interpolate(x){return typeof x=="number"||typeof x=="boolean"||x===null?x:safeStringify(Array.isArray(x)?x.join(","):x)}function stringify(x){return new _Code(safeStringify(x))}exports.stringify=stringify;function safeStringify(x){return JSON.stringify(x).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}exports.safeStringify=safeStringify;function getProperty(key){return typeof key=="string"&&exports.IDENTIFIER.test(key)?new _Code(`.${key}`):_`[${key}]`}exports.getProperty=getProperty;function getEsmExportName(key){if(typeof key=="string"&&exports.IDENTIFIER.test(key))return new _Code(`${key}`);throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)}exports.getEsmExportName=getEsmExportName;function regexpCode(rx){return new _Code(rx.toString())}exports.regexpCode=regexpCode})),require_scope=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ValueScope=exports.ValueScopeName=exports.Scope=exports.varKinds=exports.UsedValueState=void 0;let code_1=require_code$1();var ValueError=class extends Error{constructor(name2){super(`CodeGen: "code" for ${name2} not defined`),this.value=name2.value}},UsedValueState;(function(UsedValueState2){UsedValueState2[UsedValueState2.Started=0]="Started",UsedValueState2[UsedValueState2.Completed=1]="Completed"})(UsedValueState||(exports.UsedValueState=UsedValueState={})),exports.varKinds={const:new code_1.Name("const"),let:new code_1.Name("let"),var:new code_1.Name("var")};var Scope=class{constructor({prefixes,parent}={}){this._names={},this._prefixes=prefixes,this._parent=parent}toName(nameOrPrefix){return nameOrPrefix instanceof code_1.Name?nameOrPrefix:this.name(nameOrPrefix)}name(prefix){return new code_1.Name(this._newName(prefix))}_newName(prefix){let ng=this._names[prefix]||this._nameGroup(prefix);return`${prefix}${ng.index++}`}_nameGroup(prefix){var _a3,_b;if(!((_b=(_a3=this._parent)===null||_a3===void 0?void 0:_a3._prefixes)===null||_b===void 0)&&_b.has(prefix)||this._prefixes&&!this._prefixes.has(prefix))throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);return this._names[prefix]={prefix,index:0}}};exports.Scope=Scope;var ValueScopeName=class extends code_1.Name{constructor(prefix,nameStr){super(nameStr),this.prefix=prefix}setValue(value,{property,itemIndex}){this.value=value,this.scopePath=(0,code_1._)`.${new code_1.Name(property)}[${itemIndex}]`}};exports.ValueScopeName=ValueScopeName;let line=(0,code_1._)`\n`;var ValueScope=class extends Scope{constructor(opts){super(opts),this._values={},this._scope=opts.scope,this.opts={...opts,_n:opts.lines?line:code_1.nil}}get(){return this._scope}name(prefix){return new ValueScopeName(prefix,this._newName(prefix))}value(nameOrPrefix,value){var _a3;if(value.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let name2=this.toName(nameOrPrefix),{prefix}=name2,valueKey=(_a3=value.key)!==null&&_a3!==void 0?_a3:value.ref,vs=this._values[prefix];if(vs){let _name=vs.get(valueKey);if(_name)return _name}else vs=this._values[prefix]=new Map;vs.set(valueKey,name2);let s=this._scope[prefix]||(this._scope[prefix]=[]),itemIndex=s.length;return s[itemIndex]=value.ref,name2.setValue(value,{property:prefix,itemIndex}),name2}getValue(prefix,keyOrRef){let vs=this._values[prefix];if(vs)return vs.get(keyOrRef)}scopeRefs(scopeName,values=this._values){return this._reduceValues(values,name2=>{if(name2.scopePath===void 0)throw new Error(`CodeGen: name "${name2}" has no value`);return(0,code_1._)`${scopeName}${name2.scopePath}`})}scopeCode(values=this._values,usedValues,getCode){return this._reduceValues(values,name2=>{if(name2.value===void 0)throw new Error(`CodeGen: name "${name2}" has no value`);return name2.value.code},usedValues,getCode)}_reduceValues(values,valueCode,usedValues={},getCode){let code2=code_1.nil;for(let prefix in values){let vs=values[prefix];if(!vs)continue;let nameSet=usedValues[prefix]=usedValues[prefix]||new Map;vs.forEach(name2=>{if(nameSet.has(name2))return;nameSet.set(name2,UsedValueState.Started);let c=valueCode(name2);if(c){let def=this.opts.es5?exports.varKinds.var:exports.varKinds.const;code2=(0,code_1._)`${code2}${def} ${name2} = ${c};${this.opts._n}`}else if(c=getCode?.(name2))code2=(0,code_1._)`${code2}${c}${this.opts._n}`;else throw new ValueError(name2);nameSet.set(name2,UsedValueState.Completed)})}return code2}};exports.ValueScope=ValueScope})),require_codegen=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.or=exports.and=exports.not=exports.CodeGen=exports.operators=exports.varKinds=exports.ValueScopeName=exports.ValueScope=exports.Scope=exports.Name=exports.regexpCode=exports.stringify=exports.getProperty=exports.nil=exports.strConcat=exports.str=exports._=void 0;let code_1=require_code$1(),scope_1=require_scope();var code_2=require_code$1();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return code_2._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return code_2.str}}),Object.defineProperty(exports,"strConcat",{enumerable:!0,get:function(){return code_2.strConcat}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return code_2.nil}}),Object.defineProperty(exports,"getProperty",{enumerable:!0,get:function(){return code_2.getProperty}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return code_2.stringify}}),Object.defineProperty(exports,"regexpCode",{enumerable:!0,get:function(){return code_2.regexpCode}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return code_2.Name}});var scope_2=require_scope();Object.defineProperty(exports,"Scope",{enumerable:!0,get:function(){return scope_2.Scope}}),Object.defineProperty(exports,"ValueScope",{enumerable:!0,get:function(){return scope_2.ValueScope}}),Object.defineProperty(exports,"ValueScopeName",{enumerable:!0,get:function(){return scope_2.ValueScopeName}}),Object.defineProperty(exports,"varKinds",{enumerable:!0,get:function(){return scope_2.varKinds}}),exports.operators={GT:new code_1._Code(">"),GTE:new code_1._Code(">="),LT:new code_1._Code("<"),LTE:new code_1._Code("<="),EQ:new code_1._Code("==="),NEQ:new code_1._Code("!=="),NOT:new code_1._Code("!"),OR:new code_1._Code("||"),AND:new code_1._Code("&&"),ADD:new code_1._Code("+")};var Node=class{optimizeNodes(){return this}optimizeNames(_names,_constants){return this}},Def=class extends Node{constructor(varKind,name2,rhs){super(),this.varKind=varKind,this.name=name2,this.rhs=rhs}render({es5,_n}){let varKind=es5?scope_1.varKinds.var:this.varKind,rhs=this.rhs===void 0?"":` = ${this.rhs}`;return`${varKind} ${this.name}${rhs};`+_n}optimizeNames(names2,constants){if(names2[this.name.str])return this.rhs&&(this.rhs=optimizeExpr(this.rhs,names2,constants)),this}get names(){return this.rhs instanceof code_1._CodeOrName?this.rhs.names:{}}},Assign=class extends Node{constructor(lhs,rhs,sideEffects){super(),this.lhs=lhs,this.rhs=rhs,this.sideEffects=sideEffects}render({_n}){return`${this.lhs} = ${this.rhs};`+_n}optimizeNames(names2,constants){if(!(this.lhs instanceof code_1.Name&&!names2[this.lhs.str]&&!this.sideEffects))return this.rhs=optimizeExpr(this.rhs,names2,constants),this}get names(){return addExprNames(this.lhs instanceof code_1.Name?{}:{...this.lhs.names},this.rhs)}},AssignOp=class extends Assign{constructor(lhs,op,rhs,sideEffects){super(lhs,rhs,sideEffects),this.op=op}render({_n}){return`${this.lhs} ${this.op}= ${this.rhs};`+_n}},Label=class extends Node{constructor(label){super(),this.label=label,this.names={}}render({_n}){return`${this.label}:`+_n}},Break=class extends Node{constructor(label){super(),this.label=label,this.names={}}render({_n}){return`break${this.label?` ${this.label}`:""};`+_n}},Throw=class extends Node{constructor(error2){super(),this.error=error2}render({_n}){return`throw ${this.error};`+_n}get names(){return this.error.names}},AnyCode=class extends Node{constructor(code2){super(),this.code=code2}render({_n}){return`${this.code};`+_n}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(names2,constants){return this.code=optimizeExpr(this.code,names2,constants),this}get names(){return this.code instanceof code_1._CodeOrName?this.code.names:{}}},ParentNode=class extends Node{constructor(nodes=[]){super(),this.nodes=nodes}render(opts){return this.nodes.reduce((code2,n2)=>code2+n2.render(opts),"")}optimizeNodes(){let{nodes}=this,i=nodes.length;for(;i--;){let n2=nodes[i].optimizeNodes();Array.isArray(n2)?nodes.splice(i,1,...n2):n2?nodes[i]=n2:nodes.splice(i,1)}return nodes.length>0?this:void 0}optimizeNames(names2,constants){let{nodes}=this,i=nodes.length;for(;i--;){let n2=nodes[i];n2.optimizeNames(names2,constants)||(subtractNames(names2,n2.names),nodes.splice(i,1))}return nodes.length>0?this:void 0}get names(){return this.nodes.reduce((names2,n2)=>addNames(names2,n2.names),{})}},BlockNode=class extends ParentNode{render(opts){return"{"+opts._n+super.render(opts)+"}"+opts._n}},Root=class extends ParentNode{},Else=class extends BlockNode{};Else.kind="else";var If=class If2 extends BlockNode{constructor(condition,nodes){super(nodes),this.condition=condition}render(opts){let code2=`if(${this.condition})`+super.render(opts);return this.else&&(code2+="else "+this.else.render(opts)),code2}optimizeNodes(){super.optimizeNodes();let cond=this.condition;if(cond===!0)return this.nodes;let e=this.else;if(e){let ns=e.optimizeNodes();e=this.else=Array.isArray(ns)?new Else(ns):ns}if(e)return cond===!1?e instanceof If2?e:e.nodes:this.nodes.length?this:new If2(not(cond),e instanceof If2?[e]:e.nodes);if(!(cond===!1||!this.nodes.length))return this}optimizeNames(names2,constants){var _a3;if(this.else=(_a3=this.else)===null||_a3===void 0?void 0:_a3.optimizeNames(names2,constants),!!(super.optimizeNames(names2,constants)||this.else))return this.condition=optimizeExpr(this.condition,names2,constants),this}get names(){let names2=super.names;return addExprNames(names2,this.condition),this.else&&addNames(names2,this.else.names),names2}};If.kind="if";var For=class extends BlockNode{};For.kind="for";var ForLoop=class extends For{constructor(iteration){super(),this.iteration=iteration}render(opts){return`for(${this.iteration})`+super.render(opts)}optimizeNames(names2,constants){if(super.optimizeNames(names2,constants))return this.iteration=optimizeExpr(this.iteration,names2,constants),this}get names(){return addNames(super.names,this.iteration.names)}},ForRange=class extends For{constructor(varKind,name2,from,to){super(),this.varKind=varKind,this.name=name2,this.from=from,this.to=to}render(opts){let varKind=opts.es5?scope_1.varKinds.var:this.varKind,{name:name2,from,to}=this;return`for(${varKind} ${name2}=${from}; ${name2}<${to}; ${name2}++)`+super.render(opts)}get names(){return addExprNames(addExprNames(super.names,this.from),this.to)}},ForIter=class extends For{constructor(loop,varKind,name2,iterable){super(),this.loop=loop,this.varKind=varKind,this.name=name2,this.iterable=iterable}render(opts){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(opts)}optimizeNames(names2,constants){if(super.optimizeNames(names2,constants))return this.iterable=optimizeExpr(this.iterable,names2,constants),this}get names(){return addNames(super.names,this.iterable.names)}},Func=class extends BlockNode{constructor(name2,args,async){super(),this.name=name2,this.args=args,this.async=async}render(opts){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(opts)}};Func.kind="func";var Return=class extends ParentNode{render(opts){return"return "+super.render(opts)}};Return.kind="return";var Try=class extends BlockNode{render(opts){let code2="try"+super.render(opts);return this.catch&&(code2+=this.catch.render(opts)),this.finally&&(code2+=this.finally.render(opts)),code2}optimizeNodes(){var _a3,_b;return super.optimizeNodes(),(_a3=this.catch)===null||_a3===void 0||_a3.optimizeNodes(),(_b=this.finally)===null||_b===void 0||_b.optimizeNodes(),this}optimizeNames(names2,constants){var _a3,_b;return super.optimizeNames(names2,constants),(_a3=this.catch)===null||_a3===void 0||_a3.optimizeNames(names2,constants),(_b=this.finally)===null||_b===void 0||_b.optimizeNames(names2,constants),this}get names(){let names2=super.names;return this.catch&&addNames(names2,this.catch.names),this.finally&&addNames(names2,this.finally.names),names2}},Catch=class extends BlockNode{constructor(error2){super(),this.error=error2}render(opts){return`catch(${this.error})`+super.render(opts)}};Catch.kind="catch";var Finally=class extends BlockNode{render(opts){return"finally"+super.render(opts)}};Finally.kind="finally";var CodeGen=class{constructor(extScope,opts={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...opts,_n:opts.lines?`
|
|
60
|
+
`:""},this._extScope=extScope,this._scope=new scope_1.Scope({parent:extScope}),this._nodes=[new Root]}toString(){return this._root.render(this.opts)}name(prefix){return this._scope.name(prefix)}scopeName(prefix){return this._extScope.name(prefix)}scopeValue(prefixOrName,value){let name2=this._extScope.value(prefixOrName,value);return(this._values[name2.prefix]||(this._values[name2.prefix]=new Set)).add(name2),name2}getScopeValue(prefix,keyOrRef){return this._extScope.getValue(prefix,keyOrRef)}scopeRefs(scopeName){return this._extScope.scopeRefs(scopeName,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(varKind,nameOrPrefix,rhs,constant){let name2=this._scope.toName(nameOrPrefix);return rhs!==void 0&&constant&&(this._constants[name2.str]=rhs),this._leafNode(new Def(varKind,name2,rhs)),name2}const(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.const,nameOrPrefix,rhs,_constant)}let(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.let,nameOrPrefix,rhs,_constant)}var(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.var,nameOrPrefix,rhs,_constant)}assign(lhs,rhs,sideEffects){return this._leafNode(new Assign(lhs,rhs,sideEffects))}add(lhs,rhs){return this._leafNode(new AssignOp(lhs,exports.operators.ADD,rhs))}code(c){return typeof c=="function"?c():c!==code_1.nil&&this._leafNode(new AnyCode(c)),this}object(...keyValues){let code2=["{"];for(let[key,value]of keyValues)code2.length>1&&code2.push(","),code2.push(key),(key!==value||this.opts.es5)&&(code2.push(":"),(0,code_1.addCodeArg)(code2,value));return code2.push("}"),new code_1._Code(code2)}if(condition,thenBody,elseBody){if(this._blockNode(new If(condition)),thenBody&&elseBody)this.code(thenBody).else().code(elseBody).endIf();else if(thenBody)this.code(thenBody).endIf();else if(elseBody)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(condition){return this._elseNode(new If(condition))}else(){return this._elseNode(new Else)}endIf(){return this._endBlockNode(If,Else)}_for(node2,forBody){return this._blockNode(node2),forBody&&this.code(forBody).endFor(),this}for(iteration,forBody){return this._for(new ForLoop(iteration),forBody)}forRange(nameOrPrefix,from,to,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.let){let name2=this._scope.toName(nameOrPrefix);return this._for(new ForRange(varKind,name2,from,to),()=>forBody(name2))}forOf(nameOrPrefix,iterable,forBody,varKind=scope_1.varKinds.const){let name2=this._scope.toName(nameOrPrefix);if(this.opts.es5){let arr=iterable instanceof code_1.Name?iterable:this.var("_arr",iterable);return this.forRange("_i",0,(0,code_1._)`${arr}.length`,i=>{this.var(name2,(0,code_1._)`${arr}[${i}]`),forBody(name2)})}return this._for(new ForIter("of",varKind,name2,iterable),()=>forBody(name2))}forIn(nameOrPrefix,obj,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.const){if(this.opts.ownProperties)return this.forOf(nameOrPrefix,(0,code_1._)`Object.keys(${obj})`,forBody);let name2=this._scope.toName(nameOrPrefix);return this._for(new ForIter("in",varKind,name2,obj),()=>forBody(name2))}endFor(){return this._endBlockNode(For)}label(label){return this._leafNode(new Label(label))}break(label){return this._leafNode(new Break(label))}return(value){let node2=new Return;if(this._blockNode(node2),this.code(value),node2.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Return)}try(tryBody,catchCode,finallyCode){if(!catchCode&&!finallyCode)throw new Error('CodeGen: "try" without "catch" and "finally"');let node2=new Try;if(this._blockNode(node2),this.code(tryBody),catchCode){let error2=this.name("e");this._currNode=node2.catch=new Catch(error2),catchCode(error2)}return finallyCode&&(this._currNode=node2.finally=new Finally,this.code(finallyCode)),this._endBlockNode(Catch,Finally)}throw(error2){return this._leafNode(new Throw(error2))}block(body,nodeCount){return this._blockStarts.push(this._nodes.length),body&&this.code(body).endBlock(nodeCount),this}endBlock(nodeCount){let len=this._blockStarts.pop();if(len===void 0)throw new Error("CodeGen: not in self-balancing block");let toClose=this._nodes.length-len;if(toClose<0||nodeCount!==void 0&&toClose!==nodeCount)throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);return this._nodes.length=len,this}func(name2,args=code_1.nil,async,funcBody){return this._blockNode(new Func(name2,args,async)),funcBody&&this.code(funcBody).endFunc(),this}endFunc(){return this._endBlockNode(Func)}optimize(n2=1){for(;n2-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(node2){return this._currNode.nodes.push(node2),this}_blockNode(node2){this._currNode.nodes.push(node2),this._nodes.push(node2)}_endBlockNode(N1,N2){let n2=this._currNode;if(n2 instanceof N1||N2&&n2 instanceof N2)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${N2?`${N1.kind}/${N2.kind}`:N1.kind}"`)}_elseNode(node2){let n2=this._currNode;if(!(n2 instanceof If))throw new Error('CodeGen: "else" without "if"');return this._currNode=n2.else=node2,this}get _root(){return this._nodes[0]}get _currNode(){let ns=this._nodes;return ns[ns.length-1]}set _currNode(node2){let ns=this._nodes;ns[ns.length-1]=node2}};exports.CodeGen=CodeGen;function addNames(names2,from){for(let n2 in from)names2[n2]=(names2[n2]||0)+(from[n2]||0);return names2}function addExprNames(names2,from){return from instanceof code_1._CodeOrName?addNames(names2,from.names):names2}function optimizeExpr(expr,names2,constants){if(expr instanceof code_1.Name)return replaceName(expr);if(!canOptimize(expr))return expr;return new code_1._Code(expr._items.reduce((items,c)=>(c instanceof code_1.Name&&(c=replaceName(c)),c instanceof code_1._Code?items.push(...c._items):items.push(c),items),[]));function replaceName(n2){let c=constants[n2.str];return c===void 0||names2[n2.str]!==1?n2:(delete names2[n2.str],c)}function canOptimize(e){return e instanceof code_1._Code&&e._items.some(c=>c instanceof code_1.Name&&names2[c.str]===1&&constants[c.str]!==void 0)}}function subtractNames(names2,from){for(let n2 in from)names2[n2]=(names2[n2]||0)-(from[n2]||0)}function not(x){return typeof x=="boolean"||typeof x=="number"||x===null?!x:(0,code_1._)`!${par(x)}`}exports.not=not;let andCode=mappend(exports.operators.AND);function and(...args){return args.reduce(andCode)}exports.and=and;let orCode=mappend(exports.operators.OR);function or(...args){return args.reduce(orCode)}exports.or=or;function mappend(op){return(x,y)=>x===code_1.nil?y:y===code_1.nil?x:(0,code_1._)`${par(x)} ${op} ${par(y)}`}function par(x){return x instanceof code_1.Name?x:(0,code_1._)`(${x})`}})),require_util=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkStrictMode=exports.getErrorPath=exports.Type=exports.useFunc=exports.setEvaluated=exports.evaluatedPropsToName=exports.mergeEvaluated=exports.eachItem=exports.unescapeJsonPointer=exports.escapeJsonPointer=exports.escapeFragment=exports.unescapeFragment=exports.schemaRefOrVal=exports.schemaHasRulesButRef=exports.schemaHasRules=exports.checkUnknownRules=exports.alwaysValidSchema=exports.toHash=void 0;let codegen_1=require_codegen(),code_1=require_code$1();function toHash(arr){let hash={};for(let item of arr)hash[item]=!0;return hash}exports.toHash=toHash;function alwaysValidSchema(it,schema){return typeof schema=="boolean"?schema:Object.keys(schema).length===0?!0:(checkUnknownRules(it,schema),!schemaHasRules(schema,it.self.RULES.all))}exports.alwaysValidSchema=alwaysValidSchema;function checkUnknownRules(it,schema=it.schema){let{opts,self}=it;if(!opts.strictSchema||typeof schema=="boolean")return;let rules=self.RULES.keywords;for(let key in schema)rules[key]||checkStrictMode(it,`unknown keyword: "${key}"`)}exports.checkUnknownRules=checkUnknownRules;function schemaHasRules(schema,rules){if(typeof schema=="boolean")return!schema;for(let key in schema)if(rules[key])return!0;return!1}exports.schemaHasRules=schemaHasRules;function schemaHasRulesButRef(schema,RULES2){if(typeof schema=="boolean")return!schema;for(let key in schema)if(key!=="$ref"&&RULES2.all[key])return!0;return!1}exports.schemaHasRulesButRef=schemaHasRulesButRef;function schemaRefOrVal({topSchemaRef,schemaPath},schema,keyword,$data){if(!$data){if(typeof schema=="number"||typeof schema=="boolean")return schema;if(typeof schema=="string")return(0,codegen_1._)`${schema}`}return(0,codegen_1._)`${topSchemaRef}${schemaPath}${(0,codegen_1.getProperty)(keyword)}`}exports.schemaRefOrVal=schemaRefOrVal;function unescapeFragment(str2){return unescapeJsonPointer(decodeURIComponent(str2))}exports.unescapeFragment=unescapeFragment;function escapeFragment(str2){return encodeURIComponent(escapeJsonPointer(str2))}exports.escapeFragment=escapeFragment;function escapeJsonPointer(str2){return typeof str2=="number"?`${str2}`:str2.replace(/~/g,"~0").replace(/\//g,"~1")}exports.escapeJsonPointer=escapeJsonPointer;function unescapeJsonPointer(str2){return str2.replace(/~1/g,"/").replace(/~0/g,"~")}exports.unescapeJsonPointer=unescapeJsonPointer;function eachItem(xs,f2){if(Array.isArray(xs))for(let x of xs)f2(x);else f2(xs)}exports.eachItem=eachItem;function makeMergeEvaluated({mergeNames,mergeToName,mergeValues:mergeValues2,resultToName}){return(gen,from,to,toName)=>{let res=to===void 0?from:to instanceof codegen_1.Name?(from instanceof codegen_1.Name?mergeNames(gen,from,to):mergeToName(gen,from,to),to):from instanceof codegen_1.Name?(mergeToName(gen,to,from),from):mergeValues2(from,to);return toName===codegen_1.Name&&!(res instanceof codegen_1.Name)?resultToName(gen,res):res}}exports.mergeEvaluated={props:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true && ${from} !== undefined`,()=>{gen.if((0,codegen_1._)`${from} === true`,()=>gen.assign(to,!0),()=>gen.assign(to,(0,codegen_1._)`${to} || {}`).code((0,codegen_1._)`Object.assign(${to}, ${from})`))}),mergeToName:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true`,()=>{from===!0?gen.assign(to,!0):(gen.assign(to,(0,codegen_1._)`${to} || {}`),setEvaluated(gen,to,from))}),mergeValues:(from,to)=>from===!0?!0:{...from,...to},resultToName:evaluatedPropsToName}),items:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true && ${from} !== undefined`,()=>gen.assign(to,(0,codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),mergeToName:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true`,()=>gen.assign(to,from===!0?!0:(0,codegen_1._)`${to} > ${from} ? ${to} : ${from}`)),mergeValues:(from,to)=>from===!0?!0:Math.max(from,to),resultToName:(gen,items)=>gen.var("items",items)})};function evaluatedPropsToName(gen,ps){if(ps===!0)return gen.var("props",!0);let props=gen.var("props",(0,codegen_1._)`{}`);return ps!==void 0&&setEvaluated(gen,props,ps),props}exports.evaluatedPropsToName=evaluatedPropsToName;function setEvaluated(gen,props,ps){Object.keys(ps).forEach(p=>gen.assign((0,codegen_1._)`${props}${(0,codegen_1.getProperty)(p)}`,!0))}exports.setEvaluated=setEvaluated;let snippets={};function useFunc(gen,f2){return gen.scopeValue("func",{ref:f2,code:snippets[f2.code]||(snippets[f2.code]=new code_1._Code(f2.code))})}exports.useFunc=useFunc;var Type;(function(Type2){Type2[Type2.Num=0]="Num",Type2[Type2.Str=1]="Str"})(Type||(exports.Type=Type={}));function getErrorPath(dataProp,dataPropType,jsPropertySyntax){if(dataProp instanceof codegen_1.Name){let isNumber=dataPropType===Type.Num;return jsPropertySyntax?isNumber?(0,codegen_1._)`"[" + ${dataProp} + "]"`:(0,codegen_1._)`"['" + ${dataProp} + "']"`:isNumber?(0,codegen_1._)`"/" + ${dataProp}`:(0,codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return jsPropertySyntax?(0,codegen_1.getProperty)(dataProp).toString():"/"+escapeJsonPointer(dataProp)}exports.getErrorPath=getErrorPath;function checkStrictMode(it,msg,mode=it.opts.strictSchema){if(mode){if(msg=`strict mode: ${msg}`,mode===!0)throw new Error(msg);it.self.logger.warn(msg)}}exports.checkStrictMode=checkStrictMode})),require_names=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),names2={data:new codegen_1.Name("data"),valCxt:new codegen_1.Name("valCxt"),instancePath:new codegen_1.Name("instancePath"),parentData:new codegen_1.Name("parentData"),parentDataProperty:new codegen_1.Name("parentDataProperty"),rootData:new codegen_1.Name("rootData"),dynamicAnchors:new codegen_1.Name("dynamicAnchors"),vErrors:new codegen_1.Name("vErrors"),errors:new codegen_1.Name("errors"),this:new codegen_1.Name("this"),self:new codegen_1.Name("self"),scope:new codegen_1.Name("scope"),json:new codegen_1.Name("json"),jsonPos:new codegen_1.Name("jsonPos"),jsonLen:new codegen_1.Name("jsonLen"),jsonPart:new codegen_1.Name("jsonPart")};exports.default=names2})),require_errors=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.extendErrors=exports.resetErrorsCount=exports.reportExtraError=exports.reportError=exports.keyword$DataError=exports.keywordError=void 0;let codegen_1=require_codegen(),util_1=require_util(),names_1=require_names();exports.keywordError={message:({keyword})=>(0,codegen_1.str)`must pass "${keyword}" keyword validation`},exports.keyword$DataError={message:({keyword,schemaType})=>schemaType?(0,codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)`:(0,codegen_1.str)`"${keyword}" keyword is invalid ($data)`};function reportError(cxt,error2=exports.keywordError,errorPaths,overrideAllErrors){let{it}=cxt,{gen,compositeRule,allErrors}=it,errObj=errorObjectCode(cxt,error2,errorPaths);overrideAllErrors??(compositeRule||allErrors)?addError(gen,errObj):returnErrors(it,(0,codegen_1._)`[${errObj}]`)}exports.reportError=reportError;function reportExtraError(cxt,error2=exports.keywordError,errorPaths){let{it}=cxt,{gen,compositeRule,allErrors}=it;addError(gen,errorObjectCode(cxt,error2,errorPaths)),compositeRule||allErrors||returnErrors(it,names_1.default.vErrors)}exports.reportExtraError=reportExtraError;function resetErrorsCount(gen,errsCount){gen.assign(names_1.default.errors,errsCount),gen.if((0,codegen_1._)`${names_1.default.vErrors} !== null`,()=>gen.if(errsCount,()=>gen.assign((0,codegen_1._)`${names_1.default.vErrors}.length`,errsCount),()=>gen.assign(names_1.default.vErrors,null)))}exports.resetErrorsCount=resetErrorsCount;function extendErrors({gen,keyword,schemaValue,data,errsCount,it}){if(errsCount===void 0)throw new Error("ajv implementation error");let err=gen.name("err");gen.forRange("i",errsCount,names_1.default.errors,i=>{gen.const(err,(0,codegen_1._)`${names_1.default.vErrors}[${i}]`),gen.if((0,codegen_1._)`${err}.instancePath === undefined`,()=>gen.assign((0,codegen_1._)`${err}.instancePath`,(0,codegen_1.strConcat)(names_1.default.instancePath,it.errorPath))),gen.assign((0,codegen_1._)`${err}.schemaPath`,(0,codegen_1.str)`${it.errSchemaPath}/${keyword}`),it.opts.verbose&&(gen.assign((0,codegen_1._)`${err}.schema`,schemaValue),gen.assign((0,codegen_1._)`${err}.data`,data))})}exports.extendErrors=extendErrors;function addError(gen,errObj){let err=gen.const("err",errObj);gen.if((0,codegen_1._)`${names_1.default.vErrors} === null`,()=>gen.assign(names_1.default.vErrors,(0,codegen_1._)`[${err}]`),(0,codegen_1._)`${names_1.default.vErrors}.push(${err})`),gen.code((0,codegen_1._)`${names_1.default.errors}++`)}function returnErrors(it,errs){let{gen,validateName,schemaEnv}=it;schemaEnv.$async?gen.throw((0,codegen_1._)`new ${it.ValidationError}(${errs})`):(gen.assign((0,codegen_1._)`${validateName}.errors`,errs),gen.return(!1))}let E={keyword:new codegen_1.Name("keyword"),schemaPath:new codegen_1.Name("schemaPath"),params:new codegen_1.Name("params"),propertyName:new codegen_1.Name("propertyName"),message:new codegen_1.Name("message"),schema:new codegen_1.Name("schema"),parentSchema:new codegen_1.Name("parentSchema")};function errorObjectCode(cxt,error2,errorPaths){let{createErrors}=cxt.it;return createErrors===!1?(0,codegen_1._)`{}`:errorObject(cxt,error2,errorPaths)}function errorObject(cxt,error2,errorPaths={}){let{gen,it}=cxt,keyValues=[errorInstancePath(it,errorPaths),errorSchemaPath(cxt,errorPaths)];return extraErrorProps(cxt,error2,keyValues),gen.object(...keyValues)}function errorInstancePath({errorPath},{instancePath}){let instPath=instancePath?(0,codegen_1.str)`${errorPath}${(0,util_1.getErrorPath)(instancePath,util_1.Type.Str)}`:errorPath;return[names_1.default.instancePath,(0,codegen_1.strConcat)(names_1.default.instancePath,instPath)]}function errorSchemaPath({keyword,it:{errSchemaPath}},{schemaPath,parentSchema}){let schPath=parentSchema?errSchemaPath:(0,codegen_1.str)`${errSchemaPath}/${keyword}`;return schemaPath&&(schPath=(0,codegen_1.str)`${schPath}${(0,util_1.getErrorPath)(schemaPath,util_1.Type.Str)}`),[E.schemaPath,schPath]}function extraErrorProps(cxt,{params,message},keyValues){let{keyword,data,schemaValue,it}=cxt,{opts,propertyName:propertyName2,topSchemaRef,schemaPath}=it;keyValues.push([E.keyword,keyword],[E.params,typeof params=="function"?params(cxt):params||(0,codegen_1._)`{}`]),opts.messages&&keyValues.push([E.message,typeof message=="function"?message(cxt):message]),opts.verbose&&keyValues.push([E.schema,schemaValue],[E.parentSchema,(0,codegen_1._)`${topSchemaRef}${schemaPath}`],[names_1.default.data,data]),propertyName2&&keyValues.push([E.propertyName,propertyName2])}})),require_boolSchema=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.boolOrEmptySchema=exports.topBoolOrEmptySchema=void 0;let errors_1=require_errors(),codegen_1=require_codegen(),names_1=require_names(),boolError={message:"boolean schema is false"};function topBoolOrEmptySchema(it){let{gen,schema,validateName}=it;schema===!1?falseSchemaError(it,!1):typeof schema=="object"&&schema.$async===!0?gen.return(names_1.default.data):(gen.assign((0,codegen_1._)`${validateName}.errors`,null),gen.return(!0))}exports.topBoolOrEmptySchema=topBoolOrEmptySchema;function boolOrEmptySchema(it,valid){let{gen,schema}=it;schema===!1?(gen.var(valid,!1),falseSchemaError(it)):gen.var(valid,!0)}exports.boolOrEmptySchema=boolOrEmptySchema;function falseSchemaError(it,overrideAllErrors){let{gen,data}=it,cxt={gen,keyword:"false schema",data,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it};(0,errors_1.reportError)(cxt,boolError,void 0,overrideAllErrors)}})),require_rules=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRules=exports.isJSONType=void 0;let jsonTypes=new Set(["string","number","integer","boolean","null","object","array"]);function isJSONType(x){return typeof x=="string"&&jsonTypes.has(x)}exports.isJSONType=isJSONType;function getRules(){let groups={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...groups,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},groups.number,groups.string,groups.array,groups.object],post:{rules:[]},all:{},keywords:{}}}exports.getRules=getRules})),require_applicability=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.shouldUseRule=exports.shouldUseGroup=exports.schemaHasRulesForType=void 0;function schemaHasRulesForType({schema,self},type){let group=self.RULES.types[type];return group&&group!==!0&&shouldUseGroup(schema,group)}exports.schemaHasRulesForType=schemaHasRulesForType;function shouldUseGroup(schema,group){return group.rules.some(rule2=>shouldUseRule(schema,rule2))}exports.shouldUseGroup=shouldUseGroup;function shouldUseRule(schema,rule2){var _a3;return schema[rule2.keyword]!==void 0||((_a3=rule2.definition.implements)===null||_a3===void 0?void 0:_a3.some(kwd=>schema[kwd]!==void 0))}exports.shouldUseRule=shouldUseRule})),require_dataType=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.reportTypeError=exports.checkDataTypes=exports.checkDataType=exports.coerceAndCheckDataType=exports.getJSONTypes=exports.getSchemaTypes=exports.DataType=void 0;let rules_1=require_rules(),applicability_1=require_applicability(),errors_1=require_errors(),codegen_1=require_codegen(),util_1=require_util();var DataType;(function(DataType2){DataType2[DataType2.Correct=0]="Correct",DataType2[DataType2.Wrong=1]="Wrong"})(DataType||(exports.DataType=DataType={}));function getSchemaTypes(schema){let types2=getJSONTypes(schema.type);if(types2.includes("null")){if(schema.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!types2.length&&schema.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');schema.nullable===!0&&types2.push("null")}return types2}exports.getSchemaTypes=getSchemaTypes;function getJSONTypes(ts){let types2=Array.isArray(ts)?ts:ts?[ts]:[];if(types2.every(rules_1.isJSONType))return types2;throw new Error("type must be JSONType or JSONType[]: "+types2.join(","))}exports.getJSONTypes=getJSONTypes;function coerceAndCheckDataType(it,types2){let{gen,data,opts}=it,coerceTo=coerceToTypes(types2,opts.coerceTypes),checkTypes=types2.length>0&&!(coerceTo.length===0&&types2.length===1&&(0,applicability_1.schemaHasRulesForType)(it,types2[0]));if(checkTypes){let wrongType=checkDataTypes(types2,data,opts.strictNumbers,DataType.Wrong);gen.if(wrongType,()=>{coerceTo.length?coerceData(it,types2,coerceTo):reportTypeError(it)})}return checkTypes}exports.coerceAndCheckDataType=coerceAndCheckDataType;let COERCIBLE=new Set(["string","number","integer","boolean","null"]);function coerceToTypes(types2,coerceTypes){return coerceTypes?types2.filter(t=>COERCIBLE.has(t)||coerceTypes==="array"&&t==="array"):[]}function coerceData(it,types2,coerceTo){let{gen,data,opts}=it,dataType=gen.let("dataType",(0,codegen_1._)`typeof ${data}`),coerced=gen.let("coerced",(0,codegen_1._)`undefined`);opts.coerceTypes==="array"&&gen.if((0,codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`,()=>gen.assign(data,(0,codegen_1._)`${data}[0]`).assign(dataType,(0,codegen_1._)`typeof ${data}`).if(checkDataTypes(types2,data,opts.strictNumbers),()=>gen.assign(coerced,data))),gen.if((0,codegen_1._)`${coerced} !== undefined`);for(let t of coerceTo)(COERCIBLE.has(t)||t==="array"&&opts.coerceTypes==="array")&&coerceSpecificType(t);gen.else(),reportTypeError(it),gen.endIf(),gen.if((0,codegen_1._)`${coerced} !== undefined`,()=>{gen.assign(data,coerced),assignParentData(it,coerced)});function coerceSpecificType(t){switch(t){case"string":gen.elseIf((0,codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced,(0,codegen_1._)`"" + ${data}`).elseIf((0,codegen_1._)`${data} === null`).assign(coerced,(0,codegen_1._)`""`);return;case"number":gen.elseIf((0,codegen_1._)`${dataType} == "boolean" || ${data} === null
|
|
61
|
+
|| (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced,(0,codegen_1._)`+${data}`);return;case"integer":gen.elseIf((0,codegen_1._)`${dataType} === "boolean" || ${data} === null
|
|
62
|
+
|| (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced,(0,codegen_1._)`+${data}`);return;case"boolean":gen.elseIf((0,codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced,!1).elseIf((0,codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced,!0);return;case"null":gen.elseIf((0,codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`),gen.assign(coerced,null);return;case"array":gen.elseIf((0,codegen_1._)`${dataType} === "string" || ${dataType} === "number"
|
|
63
|
+
|| ${dataType} === "boolean" || ${data} === null`).assign(coerced,(0,codegen_1._)`[${data}]`)}}}function assignParentData({gen,parentData,parentDataProperty},expr){gen.if((0,codegen_1._)`${parentData} !== undefined`,()=>gen.assign((0,codegen_1._)`${parentData}[${parentDataProperty}]`,expr))}function checkDataType(dataType,data,strictNums,correct=DataType.Correct){let EQ=correct===DataType.Correct?codegen_1.operators.EQ:codegen_1.operators.NEQ,cond;switch(dataType){case"null":return(0,codegen_1._)`${data} ${EQ} null`;case"array":cond=(0,codegen_1._)`Array.isArray(${data})`;break;case"object":cond=(0,codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`;break;case"integer":cond=numCond((0,codegen_1._)`!(${data} % 1) && !isNaN(${data})`);break;case"number":cond=numCond();break;default:return(0,codegen_1._)`typeof ${data} ${EQ} ${dataType}`}return correct===DataType.Correct?cond:(0,codegen_1.not)(cond);function numCond(_cond=codegen_1.nil){return(0,codegen_1.and)((0,codegen_1._)`typeof ${data} == "number"`,_cond,strictNums?(0,codegen_1._)`isFinite(${data})`:codegen_1.nil)}}exports.checkDataType=checkDataType;function checkDataTypes(dataTypes,data,strictNums,correct){if(dataTypes.length===1)return checkDataType(dataTypes[0],data,strictNums,correct);let cond,types2=(0,util_1.toHash)(dataTypes);if(types2.array&&types2.object){let notObj=(0,codegen_1._)`typeof ${data} != "object"`;cond=types2.null?notObj:(0,codegen_1._)`!${data} || ${notObj}`,delete types2.null,delete types2.array,delete types2.object}else cond=codegen_1.nil;types2.number&&delete types2.integer;for(let t in types2)cond=(0,codegen_1.and)(cond,checkDataType(t,data,strictNums,correct));return cond}exports.checkDataTypes=checkDataTypes;let typeError={message:({schema})=>`must be ${schema}`,params:({schema,schemaValue})=>typeof schema=="string"?(0,codegen_1._)`{type: ${schema}}`:(0,codegen_1._)`{type: ${schemaValue}}`};function reportTypeError(it){let cxt=getTypeErrorContext(it);(0,errors_1.reportError)(cxt,typeError)}exports.reportTypeError=reportTypeError;function getTypeErrorContext(it){let{gen,data,schema}=it,schemaCode=(0,util_1.schemaRefOrVal)(it,schema,"type");return{gen,keyword:"type",data,schema:schema.type,schemaCode,schemaValue:schemaCode,parentSchema:schema,params:{},it}}})),require_defaults=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.assignDefaults=void 0;let codegen_1=require_codegen(),util_1=require_util();function assignDefaults(it,ty){let{properties,items}=it.schema;if(ty==="object"&&properties)for(let key in properties)assignDefault(it,key,properties[key].default);else ty==="array"&&Array.isArray(items)&&items.forEach((sch,i)=>assignDefault(it,i,sch.default))}exports.assignDefaults=assignDefaults;function assignDefault(it,prop,defaultValue){let{gen,compositeRule,data,opts}=it;if(defaultValue===void 0)return;let childData=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(prop)}`;if(compositeRule){(0,util_1.checkStrictMode)(it,`default is ignored for: ${childData}`);return}let condition=(0,codegen_1._)`${childData} === undefined`;opts.useDefaults==="empty"&&(condition=(0,codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`),gen.if(condition,(0,codegen_1._)`${childData} = ${(0,codegen_1.stringify)(defaultValue)}`)}})),require_code=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateUnion=exports.validateArray=exports.usePattern=exports.callValidateCode=exports.schemaProperties=exports.allSchemaProperties=exports.noPropertyInData=exports.propertyInData=exports.isOwnProperty=exports.hasPropFunc=exports.reportMissingProp=exports.checkMissingProp=exports.checkReportMissingProp=void 0;let codegen_1=require_codegen(),util_1=require_util(),names_1=require_names(),util_2=require_util();function checkReportMissingProp(cxt,prop){let{gen,data,it}=cxt;gen.if(noPropertyInData(gen,data,prop,it.opts.ownProperties),()=>{cxt.setParams({missingProperty:(0,codegen_1._)`${prop}`},!0),cxt.error()})}exports.checkReportMissingProp=checkReportMissingProp;function checkMissingProp({gen,data,it:{opts}},properties,missing){return(0,codegen_1.or)(...properties.map(prop=>(0,codegen_1.and)(noPropertyInData(gen,data,prop,opts.ownProperties),(0,codegen_1._)`${missing} = ${prop}`)))}exports.checkMissingProp=checkMissingProp;function reportMissingProp(cxt,missing){cxt.setParams({missingProperty:missing},!0),cxt.error()}exports.reportMissingProp=reportMissingProp;function hasPropFunc(gen){return gen.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,codegen_1._)`Object.prototype.hasOwnProperty`})}exports.hasPropFunc=hasPropFunc;function isOwnProperty(gen,data,property){return(0,codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`}exports.isOwnProperty=isOwnProperty;function propertyInData(gen,data,property,ownProperties){let cond=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(property)} !== undefined`;return ownProperties?(0,codegen_1._)`${cond} && ${isOwnProperty(gen,data,property)}`:cond}exports.propertyInData=propertyInData;function noPropertyInData(gen,data,property,ownProperties){let cond=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(property)} === undefined`;return ownProperties?(0,codegen_1.or)(cond,(0,codegen_1.not)(isOwnProperty(gen,data,property))):cond}exports.noPropertyInData=noPropertyInData;function allSchemaProperties(schemaMap){return schemaMap?Object.keys(schemaMap).filter(p=>p!=="__proto__"):[]}exports.allSchemaProperties=allSchemaProperties;function schemaProperties(it,schemaMap){return allSchemaProperties(schemaMap).filter(p=>!(0,util_1.alwaysValidSchema)(it,schemaMap[p]))}exports.schemaProperties=schemaProperties;function callValidateCode({schemaCode,data,it:{gen,topSchemaRef,schemaPath,errorPath},it},func,context,passSchema){let dataAndSchema=passSchema?(0,codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}`:data,valCxt=[[names_1.default.instancePath,(0,codegen_1.strConcat)(names_1.default.instancePath,errorPath)],[names_1.default.parentData,it.parentData],[names_1.default.parentDataProperty,it.parentDataProperty],[names_1.default.rootData,names_1.default.rootData]];it.opts.dynamicRef&&valCxt.push([names_1.default.dynamicAnchors,names_1.default.dynamicAnchors]);let args=(0,codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`;return context!==codegen_1.nil?(0,codegen_1._)`${func}.call(${context}, ${args})`:(0,codegen_1._)`${func}(${args})`}exports.callValidateCode=callValidateCode;let newRegExp=(0,codegen_1._)`new RegExp`;function usePattern({gen,it:{opts}},pattern){let u=opts.unicodeRegExp?"u":"",{regExp}=opts.code,rx=regExp(pattern,u);return gen.scopeValue("pattern",{key:rx.toString(),ref:rx,code:(0,codegen_1._)`${regExp.code==="new RegExp"?newRegExp:(0,util_2.useFunc)(gen,regExp)}(${pattern}, ${u})`})}exports.usePattern=usePattern;function validateArray(cxt){let{gen,data,keyword,it}=cxt,valid=gen.name("valid");if(it.allErrors){let validArr=gen.let("valid",!0);return validateItems(()=>gen.assign(validArr,!1)),validArr}return gen.var(valid,!0),validateItems(()=>gen.break()),valid;function validateItems(notValid){let len=gen.const("len",(0,codegen_1._)`${data}.length`);gen.forRange("i",0,len,i=>{cxt.subschema({keyword,dataProp:i,dataPropType:util_1.Type.Num},valid),gen.if((0,codegen_1.not)(valid),notValid)})}}exports.validateArray=validateArray;function validateUnion(cxt){let{gen,schema,keyword,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");if(schema.some(sch=>(0,util_1.alwaysValidSchema)(it,sch))&&!it.opts.unevaluated)return;let valid=gen.let("valid",!1),schValid=gen.name("_valid");gen.block(()=>schema.forEach((_sch,i)=>{let schCxt=cxt.subschema({keyword,schemaProp:i,compositeRule:!0},schValid);gen.assign(valid,(0,codegen_1._)`${valid} || ${schValid}`),cxt.mergeValidEvaluated(schCxt,schValid)||gen.if((0,codegen_1.not)(valid))})),cxt.result(valid,()=>cxt.reset(),()=>cxt.error(!0))}exports.validateUnion=validateUnion})),require_keyword=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateKeywordUsage=exports.validSchemaType=exports.funcKeywordCode=exports.macroKeywordCode=void 0;let codegen_1=require_codegen(),names_1=require_names(),code_1=require_code(),errors_1=require_errors();function macroKeywordCode(cxt,def){let{gen,keyword,schema,parentSchema,it}=cxt,macroSchema=def.macro.call(it.self,schema,parentSchema,it),schemaRef=useKeyword(gen,keyword,macroSchema);it.opts.validateSchema!==!1&&it.self.validateSchema(macroSchema,!0);let valid=gen.name("valid");cxt.subschema({schema:macroSchema,schemaPath:codegen_1.nil,errSchemaPath:`${it.errSchemaPath}/${keyword}`,topSchemaRef:schemaRef,compositeRule:!0},valid),cxt.pass(valid,()=>cxt.error(!0))}exports.macroKeywordCode=macroKeywordCode;function funcKeywordCode(cxt,def){var _a3;let{gen,keyword,schema,parentSchema,$data,it}=cxt;checkAsyncKeyword(it,def);let validateRef=useKeyword(gen,keyword,!$data&&def.compile?def.compile.call(it.self,schema,parentSchema,it):def.validate),valid=gen.let("valid");cxt.block$data(valid,validateKeyword),cxt.ok((_a3=def.valid)!==null&&_a3!==void 0?_a3:valid);function validateKeyword(){if(def.errors===!1)assignValid(),def.modifying&&modifyData(cxt),reportErrs(()=>cxt.error());else{let ruleErrs=def.async?validateAsync3():validateSync();def.modifying&&modifyData(cxt),reportErrs(()=>addErrs(cxt,ruleErrs))}}function validateAsync3(){let ruleErrs=gen.let("ruleErrs",null);return gen.try(()=>assignValid((0,codegen_1._)`await `),e=>gen.assign(valid,!1).if((0,codegen_1._)`${e} instanceof ${it.ValidationError}`,()=>gen.assign(ruleErrs,(0,codegen_1._)`${e}.errors`),()=>gen.throw(e))),ruleErrs}function validateSync(){let validateErrs=(0,codegen_1._)`${validateRef}.errors`;return gen.assign(validateErrs,null),assignValid(codegen_1.nil),validateErrs}function assignValid(_await=def.async?(0,codegen_1._)`await `:codegen_1.nil){let passCxt=it.opts.passContext?names_1.default.this:names_1.default.self,passSchema=!("compile"in def&&!$data||def.schema===!1);gen.assign(valid,(0,codegen_1._)`${_await}${(0,code_1.callValidateCode)(cxt,validateRef,passCxt,passSchema)}`,def.modifying)}function reportErrs(errors){var _a$1;gen.if((0,codegen_1.not)((_a$1=def.valid)!==null&&_a$1!==void 0?_a$1:valid),errors)}}exports.funcKeywordCode=funcKeywordCode;function modifyData(cxt){let{gen,data,it}=cxt;gen.if(it.parentData,()=>gen.assign(data,(0,codegen_1._)`${it.parentData}[${it.parentDataProperty}]`))}function addErrs(cxt,errs){let{gen}=cxt;gen.if((0,codegen_1._)`Array.isArray(${errs})`,()=>{gen.assign(names_1.default.vErrors,(0,codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors,(0,codegen_1._)`${names_1.default.vErrors}.length`),(0,errors_1.extendErrors)(cxt)},()=>cxt.error())}function checkAsyncKeyword({schemaEnv},def){if(def.async&&!schemaEnv.$async)throw new Error("async keyword in sync schema")}function useKeyword(gen,keyword,result2){if(result2===void 0)throw new Error(`keyword "${keyword}" failed to compile`);return gen.scopeValue("keyword",typeof result2=="function"?{ref:result2}:{ref:result2,code:(0,codegen_1.stringify)(result2)})}function validSchemaType(schema,schemaType,allowUndefined=!1){return!schemaType.length||schemaType.some(st=>st==="array"?Array.isArray(schema):st==="object"?schema&&typeof schema=="object"&&!Array.isArray(schema):typeof schema==st||allowUndefined&&typeof schema>"u")}exports.validSchemaType=validSchemaType;function validateKeywordUsage({schema,opts,self,errSchemaPath},def,keyword){if(Array.isArray(def.keyword)?!def.keyword.includes(keyword):def.keyword!==keyword)throw new Error("ajv implementation error");let deps=def.dependencies;if(deps?.some(kwd=>!Object.prototype.hasOwnProperty.call(schema,kwd)))throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);if(def.validateSchema&&!def.validateSchema(schema[keyword])){let msg=`keyword "${keyword}" value is invalid at path "${errSchemaPath}": `+self.errorsText(def.validateSchema.errors);if(opts.validateSchema==="log")self.logger.error(msg);else throw new Error(msg)}}exports.validateKeywordUsage=validateKeywordUsage})),require_subschema=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.extendSubschemaMode=exports.extendSubschemaData=exports.getSubschema=void 0;let codegen_1=require_codegen(),util_1=require_util();function getSubschema(it,{keyword,schemaProp,schema,schemaPath,errSchemaPath,topSchemaRef}){if(keyword!==void 0&&schema!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(keyword!==void 0){let sch=it.schema[keyword];return schemaProp===void 0?{schema:sch,schemaPath:(0,codegen_1._)`${it.schemaPath}${(0,codegen_1.getProperty)(keyword)}`,errSchemaPath:`${it.errSchemaPath}/${keyword}`}:{schema:sch[schemaProp],schemaPath:(0,codegen_1._)`${it.schemaPath}${(0,codegen_1.getProperty)(keyword)}${(0,codegen_1.getProperty)(schemaProp)}`,errSchemaPath:`${it.errSchemaPath}/${keyword}/${(0,util_1.escapeFragment)(schemaProp)}`}}if(schema!==void 0){if(schemaPath===void 0||errSchemaPath===void 0||topSchemaRef===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema,schemaPath,topSchemaRef,errSchemaPath}}throw new Error('either "keyword" or "schema" must be passed')}exports.getSubschema=getSubschema;function extendSubschemaData(subschema,it,{dataProp,dataPropType:dpType,data,dataTypes,propertyName:propertyName2}){if(data!==void 0&&dataProp!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen}=it;if(dataProp!==void 0){let{errorPath,dataPathArr,opts}=it;dataContextProps(gen.let("data",(0,codegen_1._)`${it.data}${(0,codegen_1.getProperty)(dataProp)}`,!0)),subschema.errorPath=(0,codegen_1.str)`${errorPath}${(0,util_1.getErrorPath)(dataProp,dpType,opts.jsPropertySyntax)}`,subschema.parentDataProperty=(0,codegen_1._)`${dataProp}`,subschema.dataPathArr=[...dataPathArr,subschema.parentDataProperty]}data!==void 0&&(dataContextProps(data instanceof codegen_1.Name?data:gen.let("data",data,!0)),propertyName2!==void 0&&(subschema.propertyName=propertyName2)),dataTypes&&(subschema.dataTypes=dataTypes);function dataContextProps(_nextData){subschema.data=_nextData,subschema.dataLevel=it.dataLevel+1,subschema.dataTypes=[],it.definedProperties=new Set,subschema.parentData=it.data,subschema.dataNames=[...it.dataNames,_nextData]}}exports.extendSubschemaData=extendSubschemaData;function extendSubschemaMode(subschema,{jtdDiscriminator,jtdMetadata,compositeRule,createErrors,allErrors}){compositeRule!==void 0&&(subschema.compositeRule=compositeRule),createErrors!==void 0&&(subschema.createErrors=createErrors),allErrors!==void 0&&(subschema.allErrors=allErrors),subschema.jtdDiscriminator=jtdDiscriminator,subschema.jtdMetadata=jtdMetadata}exports.extendSubschemaMode=extendSubschemaMode})),require_fast_deep_equal=__commonJSMin(((exports,module)=>{module.exports=function equal(a,b){if(a===b)return!0;if(a&&b&&typeof a=="object"&&typeof b=="object"){if(a.constructor!==b.constructor)return!1;var length2,i,keys;if(Array.isArray(a)){if(length2=a.length,length2!=b.length)return!1;for(i=length2;i--!==0;)if(!equal(a[i],b[i]))return!1;return!0}if(a.constructor===RegExp)return a.source===b.source&&a.flags===b.flags;if(a.valueOf!==Object.prototype.valueOf)return a.valueOf()===b.valueOf();if(a.toString!==Object.prototype.toString)return a.toString()===b.toString();if(keys=Object.keys(a),length2=keys.length,length2!==Object.keys(b).length)return!1;for(i=length2;i--!==0;)if(!Object.prototype.hasOwnProperty.call(b,keys[i]))return!1;for(i=length2;i--!==0;){var key=keys[i];if(!equal(a[key],b[key]))return!1}return!0}return a!==a&&b!==b}})),require_json_schema_traverse=__commonJSMin(((exports,module)=>{var traverse=module.exports=function(schema,opts,cb){typeof opts=="function"&&(cb=opts,opts={}),cb=opts.cb||cb;var pre=typeof cb=="function"?cb:cb.pre||function(){},post=cb.post||function(){};_traverse(opts,pre,post,schema,"",schema)};traverse.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},traverse.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},traverse.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},traverse.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function _traverse(opts,pre,post,schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex){if(schema&&typeof schema=="object"&&!Array.isArray(schema)){pre(schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex);for(var key in schema){var sch=schema[key];if(Array.isArray(sch)){if(key in traverse.arrayKeywords)for(var i=0;i<sch.length;i++)_traverse(opts,pre,post,sch[i],jsonPtr+"/"+key+"/"+i,rootSchema,jsonPtr,key,schema,i)}else if(key in traverse.propsKeywords){if(sch&&typeof sch=="object")for(var prop in sch)_traverse(opts,pre,post,sch[prop],jsonPtr+"/"+key+"/"+escapeJsonPtr(prop),rootSchema,jsonPtr,key,schema,prop)}else(key in traverse.keywords||opts.allKeys&&!(key in traverse.skipKeywords))&&_traverse(opts,pre,post,sch,jsonPtr+"/"+key,rootSchema,jsonPtr,key,schema)}post(schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex)}}function escapeJsonPtr(str2){return str2.replace(/~/g,"~0").replace(/\//g,"~1")}})),require_resolve=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSchemaRefs=exports.resolveUrl=exports.normalizeId=exports._getFullPath=exports.getFullPath=exports.inlineRef=void 0;let util_1=require_util(),equal=require_fast_deep_equal(),traverse=require_json_schema_traverse(),SIMPLE_INLINED=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function inlineRef(schema,limit=!0){return typeof schema=="boolean"?!0:limit===!0?!hasRef(schema):limit?countKeys(schema)<=limit:!1}exports.inlineRef=inlineRef;let REF_KEYWORDS=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function hasRef(schema){for(let key in schema){if(REF_KEYWORDS.has(key))return!0;let sch=schema[key];if(Array.isArray(sch)&&sch.some(hasRef)||typeof sch=="object"&&hasRef(sch))return!0}return!1}function countKeys(schema){let count=0;for(let key in schema){if(key==="$ref")return 1/0;if(count++,!SIMPLE_INLINED.has(key)&&(typeof schema[key]=="object"&&(0,util_1.eachItem)(schema[key],sch=>count+=countKeys(sch)),count===1/0))return 1/0}return count}function getFullPath(resolver,id="",normalize){return normalize!==!1&&(id=normalizeId(id)),_getFullPath(resolver,resolver.parse(id))}exports.getFullPath=getFullPath;function _getFullPath(resolver,p){return resolver.serialize(p).split("#")[0]+"#"}exports._getFullPath=_getFullPath;let TRAILING_SLASH_HASH=/#\/?$/;function normalizeId(id){return id?id.replace(TRAILING_SLASH_HASH,""):""}exports.normalizeId=normalizeId;function resolveUrl(resolver,baseId,id){return id=normalizeId(id),resolver.resolve(baseId,id)}exports.resolveUrl=resolveUrl;let ANCHOR=/^[a-z_][-a-z0-9._]*$/i;function getSchemaRefs(schema,baseId){if(typeof schema=="boolean")return{};let{schemaId,uriResolver}=this.opts,schId=normalizeId(schema[schemaId]||baseId),baseIds={"":schId},pathPrefix=getFullPath(uriResolver,schId,!1),localRefs={},schemaRefs=new Set;return traverse(schema,{allKeys:!0},(sch,jsonPtr,_,parentJsonPtr)=>{if(parentJsonPtr===void 0)return;let fullPath=pathPrefix+jsonPtr,innerBaseId=baseIds[parentJsonPtr];typeof sch[schemaId]=="string"&&(innerBaseId=addRef.call(this,sch[schemaId])),addAnchor.call(this,sch.$anchor),addAnchor.call(this,sch.$dynamicAnchor),baseIds[jsonPtr]=innerBaseId;function addRef(ref){let _resolve=this.opts.uriResolver.resolve;if(ref=normalizeId(innerBaseId?_resolve(innerBaseId,ref):ref),schemaRefs.has(ref))throw ambiguos(ref);schemaRefs.add(ref);let schOrRef=this.refs[ref];return typeof schOrRef=="string"&&(schOrRef=this.refs[schOrRef]),typeof schOrRef=="object"?checkAmbiguosRef(sch,schOrRef.schema,ref):ref!==normalizeId(fullPath)&&(ref[0]==="#"?(checkAmbiguosRef(sch,localRefs[ref],ref),localRefs[ref]=sch):this.refs[ref]=fullPath),ref}function addAnchor(anchor2){if(typeof anchor2=="string"){if(!ANCHOR.test(anchor2))throw new Error(`invalid anchor "${anchor2}"`);addRef.call(this,`#${anchor2}`)}}}),localRefs;function checkAmbiguosRef(sch1,sch2,ref){if(sch2!==void 0&&!equal(sch1,sch2))throw ambiguos(ref)}function ambiguos(ref){return new Error(`reference "${ref}" resolves to more than one schema`)}}exports.getSchemaRefs=getSchemaRefs})),require_validate=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getData=exports.KeywordCxt=exports.validateFunctionCode=void 0;let boolSchema_1=require_boolSchema(),dataType_1=require_dataType(),applicability_1=require_applicability(),dataType_2=require_dataType(),defaults_1=require_defaults(),keyword_1=require_keyword(),subschema_1=require_subschema(),codegen_1=require_codegen(),names_1=require_names(),resolve_1=require_resolve(),util_1=require_util(),errors_1=require_errors();function validateFunctionCode(it){if(isSchemaObj(it)&&(checkKeywords(it),schemaCxtHasRules(it))){topSchemaObjCode(it);return}validateFunction(it,()=>(0,boolSchema_1.topBoolOrEmptySchema)(it))}exports.validateFunctionCode=validateFunctionCode;function validateFunction({gen,validateName,schema,schemaEnv,opts},body){opts.code.es5?gen.func(validateName,(0,codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`,schemaEnv.$async,()=>{gen.code((0,codegen_1._)`"use strict"; ${funcSourceUrl(schema,opts)}`),destructureValCxtES5(gen,opts),gen.code(body)}):gen.func(validateName,(0,codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`,schemaEnv.$async,()=>gen.code(funcSourceUrl(schema,opts)).code(body))}function destructureValCxt(opts){return(0,codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef?(0,codegen_1._)`, ${names_1.default.dynamicAnchors}={}`:codegen_1.nil}}={}`}function destructureValCxtES5(gen,opts){gen.if(names_1.default.valCxt,()=>{gen.var(names_1.default.instancePath,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`),gen.var(names_1.default.parentData,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`),gen.var(names_1.default.parentDataProperty,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`),gen.var(names_1.default.rootData,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`),opts.dynamicRef&&gen.var(names_1.default.dynamicAnchors,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`)},()=>{gen.var(names_1.default.instancePath,(0,codegen_1._)`""`),gen.var(names_1.default.parentData,(0,codegen_1._)`undefined`),gen.var(names_1.default.parentDataProperty,(0,codegen_1._)`undefined`),gen.var(names_1.default.rootData,names_1.default.data),opts.dynamicRef&&gen.var(names_1.default.dynamicAnchors,(0,codegen_1._)`{}`)})}function topSchemaObjCode(it){let{schema,opts,gen}=it;validateFunction(it,()=>{opts.$comment&&schema.$comment&&commentKeyword(it),checkNoDefault(it),gen.let(names_1.default.vErrors,null),gen.let(names_1.default.errors,0),opts.unevaluated&&resetEvaluated(it),typeAndKeywords(it),returnResults(it)})}function resetEvaluated(it){let{gen,validateName}=it;it.evaluated=gen.const("evaluated",(0,codegen_1._)`${validateName}.evaluated`),gen.if((0,codegen_1._)`${it.evaluated}.dynamicProps`,()=>gen.assign((0,codegen_1._)`${it.evaluated}.props`,(0,codegen_1._)`undefined`)),gen.if((0,codegen_1._)`${it.evaluated}.dynamicItems`,()=>gen.assign((0,codegen_1._)`${it.evaluated}.items`,(0,codegen_1._)`undefined`))}function funcSourceUrl(schema,opts){let schId=typeof schema=="object"&&schema[opts.schemaId];return schId&&(opts.code.source||opts.code.process)?(0,codegen_1._)`/*# sourceURL=${schId} */`:codegen_1.nil}function subschemaCode(it,valid){if(isSchemaObj(it)&&(checkKeywords(it),schemaCxtHasRules(it))){subSchemaObjCode(it,valid);return}(0,boolSchema_1.boolOrEmptySchema)(it,valid)}function schemaCxtHasRules({schema,self}){if(typeof schema=="boolean")return!schema;for(let key in schema)if(self.RULES.all[key])return!0;return!1}function isSchemaObj(it){return typeof it.schema!="boolean"}function subSchemaObjCode(it,valid){let{schema,gen,opts}=it;opts.$comment&&schema.$comment&&commentKeyword(it),updateContext(it),checkAsyncSchema(it);let errsCount=gen.const("_errs",names_1.default.errors);typeAndKeywords(it,errsCount),gen.var(valid,(0,codegen_1._)`${errsCount} === ${names_1.default.errors}`)}function checkKeywords(it){(0,util_1.checkUnknownRules)(it),checkRefsAndKeywords(it)}function typeAndKeywords(it,errsCount){if(it.opts.jtd)return schemaKeywords(it,[],!1,errsCount);let types2=(0,dataType_1.getSchemaTypes)(it.schema);schemaKeywords(it,types2,!(0,dataType_1.coerceAndCheckDataType)(it,types2),errsCount)}function checkRefsAndKeywords(it){let{schema,errSchemaPath,opts,self}=it;schema.$ref&&opts.ignoreKeywordsWithRef&&(0,util_1.schemaHasRulesButRef)(schema,self.RULES)&&self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`)}function checkNoDefault(it){let{schema,opts}=it;schema.default!==void 0&&opts.useDefaults&&opts.strictSchema&&(0,util_1.checkStrictMode)(it,"default is ignored in the schema root")}function updateContext(it){let schId=it.schema[it.opts.schemaId];schId&&(it.baseId=(0,resolve_1.resolveUrl)(it.opts.uriResolver,it.baseId,schId))}function checkAsyncSchema(it){if(it.schema.$async&&!it.schemaEnv.$async)throw new Error("async schema in sync schema")}function commentKeyword({gen,schemaEnv,schema,errSchemaPath,opts}){let msg=schema.$comment;if(opts.$comment===!0)gen.code((0,codegen_1._)`${names_1.default.self}.logger.log(${msg})`);else if(typeof opts.$comment=="function"){let schemaPath=(0,codegen_1.str)`${errSchemaPath}/$comment`,rootName=gen.scopeValue("root",{ref:schemaEnv.root});gen.code((0,codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)}}function returnResults(it){let{gen,schemaEnv,validateName,ValidationError,opts}=it;schemaEnv.$async?gen.if((0,codegen_1._)`${names_1.default.errors} === 0`,()=>gen.return(names_1.default.data),()=>gen.throw((0,codegen_1._)`new ${ValidationError}(${names_1.default.vErrors})`)):(gen.assign((0,codegen_1._)`${validateName}.errors`,names_1.default.vErrors),opts.unevaluated&&assignEvaluated(it),gen.return((0,codegen_1._)`${names_1.default.errors} === 0`))}function assignEvaluated({gen,evaluated,props,items}){props instanceof codegen_1.Name&&gen.assign((0,codegen_1._)`${evaluated}.props`,props),items instanceof codegen_1.Name&&gen.assign((0,codegen_1._)`${evaluated}.items`,items)}function schemaKeywords(it,types2,typeErrors,errsCount){let{gen,schema,data,allErrors,opts,self}=it,{RULES:RULES2}=self;if(schema.$ref&&(opts.ignoreKeywordsWithRef||!(0,util_1.schemaHasRulesButRef)(schema,RULES2))){gen.block(()=>keywordCode(it,"$ref",RULES2.all.$ref.definition));return}opts.jtd||checkStrictTypes(it,types2),gen.block(()=>{for(let group of RULES2.rules)groupKeywords(group);groupKeywords(RULES2.post)});function groupKeywords(group){(0,applicability_1.shouldUseGroup)(schema,group)&&(group.type?(gen.if((0,dataType_2.checkDataType)(group.type,data,opts.strictNumbers)),iterateKeywords(it,group),types2.length===1&&types2[0]===group.type&&typeErrors&&(gen.else(),(0,dataType_2.reportTypeError)(it)),gen.endIf()):iterateKeywords(it,group),allErrors||gen.if((0,codegen_1._)`${names_1.default.errors} === ${errsCount||0}`))}}function iterateKeywords(it,group){let{gen,schema,opts:{useDefaults}}=it;useDefaults&&(0,defaults_1.assignDefaults)(it,group.type),gen.block(()=>{for(let rule2 of group.rules)(0,applicability_1.shouldUseRule)(schema,rule2)&&keywordCode(it,rule2.keyword,rule2.definition,group.type)})}function checkStrictTypes(it,types2){it.schemaEnv.meta||!it.opts.strictTypes||(checkContextTypes(it,types2),it.opts.allowUnionTypes||checkMultipleTypes(it,types2),checkKeywordTypes(it,it.dataTypes))}function checkContextTypes(it,types2){if(types2.length){if(!it.dataTypes.length){it.dataTypes=types2;return}types2.forEach(t=>{includesType(it.dataTypes,t)||strictTypesError(it,`type "${t}" not allowed by context "${it.dataTypes.join(",")}"`)}),narrowSchemaTypes(it,types2)}}function checkMultipleTypes(it,ts){ts.length>1&&!(ts.length===2&&ts.includes("null"))&&strictTypesError(it,"use allowUnionTypes to allow union type keyword")}function checkKeywordTypes(it,ts){let rules=it.self.RULES.all;for(let keyword in rules){let rule2=rules[keyword];if(typeof rule2=="object"&&(0,applicability_1.shouldUseRule)(it.schema,rule2)){let{type}=rule2.definition;type.length&&!type.some(t=>hasApplicableType(ts,t))&&strictTypesError(it,`missing type "${type.join(",")}" for keyword "${keyword}"`)}}}function hasApplicableType(schTs,kwdT){return schTs.includes(kwdT)||kwdT==="number"&&schTs.includes("integer")}function includesType(ts,t){return ts.includes(t)||t==="integer"&&ts.includes("number")}function narrowSchemaTypes(it,withTypes){let ts=[];for(let t of it.dataTypes)includesType(withTypes,t)?ts.push(t):withTypes.includes("integer")&&t==="number"&&ts.push("integer");it.dataTypes=ts}function strictTypesError(it,msg){let schemaPath=it.schemaEnv.baseId+it.errSchemaPath;msg+=` at "${schemaPath}" (strictTypes)`,(0,util_1.checkStrictMode)(it,msg,it.opts.strictTypes)}var KeywordCxt=class{constructor(it,def,keyword){if((0,keyword_1.validateKeywordUsage)(it,def,keyword),this.gen=it.gen,this.allErrors=it.allErrors,this.keyword=keyword,this.data=it.data,this.schema=it.schema[keyword],this.$data=def.$data&&it.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,util_1.schemaRefOrVal)(it,this.schema,keyword,this.$data),this.schemaType=def.schemaType,this.parentSchema=it.schema,this.params={},this.it=it,this.def=def,this.$data)this.schemaCode=it.gen.const("vSchema",getData(this.$data,it));else if(this.schemaCode=this.schemaValue,!(0,keyword_1.validSchemaType)(this.schema,def.schemaType,def.allowUndefined))throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);("code"in def?def.trackErrors:def.errors!==!1)&&(this.errsCount=it.gen.const("_errs",names_1.default.errors))}result(condition,successAction,failAction){this.failResult((0,codegen_1.not)(condition),successAction,failAction)}failResult(condition,successAction,failAction){this.gen.if(condition),failAction?failAction():this.error(),successAction?(this.gen.else(),successAction(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(condition,failAction){this.failResult((0,codegen_1.not)(condition),void 0,failAction)}fail(condition){if(condition===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(condition),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(condition){if(!this.$data)return this.fail(condition);let{schemaCode}=this;this.fail((0,codegen_1._)`${schemaCode} !== undefined && (${(0,codegen_1.or)(this.invalid$data(),condition)})`)}error(append,errorParams,errorPaths){if(errorParams){this.setParams(errorParams),this._error(append,errorPaths),this.setParams({});return}this._error(append,errorPaths)}_error(append,errorPaths){(append?errors_1.reportExtraError:errors_1.reportError)(this,this.def.error,errorPaths)}$dataError(){(0,errors_1.reportError)(this,this.def.$dataError||errors_1.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,errors_1.resetErrorsCount)(this.gen,this.errsCount)}ok(cond){this.allErrors||this.gen.if(cond)}setParams(obj,assign){assign?Object.assign(this.params,obj):this.params=obj}block$data(valid,codeBlock,$dataValid=codegen_1.nil){this.gen.block(()=>{this.check$data(valid,$dataValid),codeBlock()})}check$data(valid=codegen_1.nil,$dataValid=codegen_1.nil){if(!this.$data)return;let{gen,schemaCode,schemaType,def}=this;gen.if((0,codegen_1.or)((0,codegen_1._)`${schemaCode} === undefined`,$dataValid)),valid!==codegen_1.nil&&gen.assign(valid,!0),(schemaType.length||def.validateSchema)&&(gen.elseIf(this.invalid$data()),this.$dataError(),valid!==codegen_1.nil&&gen.assign(valid,!1)),gen.else()}invalid$data(){let{gen,schemaCode,schemaType,def,it}=this;return(0,codegen_1.or)(wrong$DataType(),invalid$DataSchema());function wrong$DataType(){if(schemaType.length){if(!(schemaCode instanceof codegen_1.Name))throw new Error("ajv implementation error");let st=Array.isArray(schemaType)?schemaType:[schemaType];return(0,codegen_1._)`${(0,dataType_2.checkDataTypes)(st,schemaCode,it.opts.strictNumbers,dataType_2.DataType.Wrong)}`}return codegen_1.nil}function invalid$DataSchema(){if(def.validateSchema){let validateSchemaRef=gen.scopeValue("validate$data",{ref:def.validateSchema});return(0,codegen_1._)`!${validateSchemaRef}(${schemaCode})`}return codegen_1.nil}}subschema(appl,valid){let subschema=(0,subschema_1.getSubschema)(this.it,appl);(0,subschema_1.extendSubschemaData)(subschema,this.it,appl),(0,subschema_1.extendSubschemaMode)(subschema,appl);let nextContext={...this.it,...subschema,items:void 0,props:void 0};return subschemaCode(nextContext,valid),nextContext}mergeEvaluated(schemaCxt,toName){let{it,gen}=this;it.opts.unevaluated&&(it.props!==!0&&schemaCxt.props!==void 0&&(it.props=util_1.mergeEvaluated.props(gen,schemaCxt.props,it.props,toName)),it.items!==!0&&schemaCxt.items!==void 0&&(it.items=util_1.mergeEvaluated.items(gen,schemaCxt.items,it.items,toName)))}mergeValidEvaluated(schemaCxt,valid){let{it,gen}=this;if(it.opts.unevaluated&&(it.props!==!0||it.items!==!0))return gen.if(valid,()=>this.mergeEvaluated(schemaCxt,codegen_1.Name)),!0}};exports.KeywordCxt=KeywordCxt;function keywordCode(it,keyword,def,ruleType){let cxt=new KeywordCxt(it,def,keyword);"code"in def?def.code(cxt,ruleType):cxt.$data&&def.validate?(0,keyword_1.funcKeywordCode)(cxt,def):"macro"in def?(0,keyword_1.macroKeywordCode)(cxt,def):(def.compile||def.validate)&&(0,keyword_1.funcKeywordCode)(cxt,def)}let JSON_POINTER=/^\/(?:[^~]|~0|~1)*$/,RELATIVE_JSON_POINTER=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function getData($data,{dataLevel,dataNames,dataPathArr}){let jsonPointer,data;if($data==="")return names_1.default.rootData;if($data[0]==="/"){if(!JSON_POINTER.test($data))throw new Error(`Invalid JSON-pointer: ${$data}`);jsonPointer=$data,data=names_1.default.rootData}else{let matches=RELATIVE_JSON_POINTER.exec($data);if(!matches)throw new Error(`Invalid JSON-pointer: ${$data}`);let up=+matches[1];if(jsonPointer=matches[2],jsonPointer==="#"){if(up>=dataLevel)throw new Error(errorMsg("property/index",up));return dataPathArr[dataLevel-up]}if(up>dataLevel)throw new Error(errorMsg("data",up));if(data=dataNames[dataLevel-up],!jsonPointer)return data}let expr=data,segments=jsonPointer.split("/");for(let segment of segments)segment&&(data=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)((0,util_1.unescapeJsonPointer)(segment))}`,expr=(0,codegen_1._)`${expr} && ${data}`);return expr;function errorMsg(pointerType,up){return`Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`}}exports.getData=getData})),require_validation_error=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});var ValidationError=class extends Error{constructor(errors){super("validation failed"),this.errors=errors,this.ajv=this.validation=!0}};exports.default=ValidationError})),require_ref_error=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let resolve_1=require_resolve();var MissingRefError=class extends Error{constructor(resolver,baseId,ref,msg){super(msg||`can't resolve reference ${ref} from id ${baseId}`),this.missingRef=(0,resolve_1.resolveUrl)(resolver,baseId,ref),this.missingSchema=(0,resolve_1.normalizeId)((0,resolve_1.getFullPath)(resolver,this.missingRef))}};exports.default=MissingRefError})),require_compile=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveSchema=exports.getCompilingSchema=exports.resolveRef=exports.compileSchema=exports.SchemaEnv=void 0;let codegen_1=require_codegen(),validation_error_1=require_validation_error(),names_1=require_names(),resolve_1=require_resolve(),util_1=require_util(),validate_1=require_validate();var SchemaEnv=class{constructor(env){var _a3;this.refs={},this.dynamicAnchors={};let schema;typeof env.schema=="object"&&(schema=env.schema),this.schema=env.schema,this.schemaId=env.schemaId,this.root=env.root||this,this.baseId=(_a3=env.baseId)!==null&&_a3!==void 0?_a3:(0,resolve_1.normalizeId)(schema?.[env.schemaId||"$id"]),this.schemaPath=env.schemaPath,this.localRefs=env.localRefs,this.meta=env.meta,this.$async=schema?.$async,this.refs={}}};exports.SchemaEnv=SchemaEnv;function compileSchema(sch){let _sch=getCompilingSchema.call(this,sch);if(_sch)return _sch;let rootId=(0,resolve_1.getFullPath)(this.opts.uriResolver,sch.root.baseId),{es5,lines:lines2}=this.opts.code,{ownProperties}=this.opts,gen=new codegen_1.CodeGen(this.scope,{es5,lines:lines2,ownProperties}),_ValidationError;sch.$async&&(_ValidationError=gen.scopeValue("Error",{ref:validation_error_1.default,code:(0,codegen_1._)`require("ajv/dist/runtime/validation_error").default`}));let validateName=gen.scopeName("validate");sch.validateName=validateName;let schemaCxt={gen,allErrors:this.opts.allErrors,data:names_1.default.data,parentData:names_1.default.parentData,parentDataProperty:names_1.default.parentDataProperty,dataNames:[names_1.default.data],dataPathArr:[codegen_1.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:gen.scopeValue("schema",this.opts.code.source===!0?{ref:sch.schema,code:(0,codegen_1.stringify)(sch.schema)}:{ref:sch.schema}),validateName,ValidationError:_ValidationError,schema:sch.schema,schemaEnv:sch,rootId,baseId:sch.baseId||rootId,schemaPath:codegen_1.nil,errSchemaPath:sch.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,codegen_1._)`""`,opts:this.opts,self:this},sourceCode;try{this._compilations.add(sch),(0,validate_1.validateFunctionCode)(schemaCxt),gen.optimize(this.opts.code.optimize);let validateCode=gen.toString();sourceCode=`${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`,this.opts.code.process&&(sourceCode=this.opts.code.process(sourceCode,sch));let validate2=new Function(`${names_1.default.self}`,`${names_1.default.scope}`,sourceCode)(this,this.scope.get());if(this.scope.value(validateName,{ref:validate2}),validate2.errors=null,validate2.schema=sch.schema,validate2.schemaEnv=sch,sch.$async&&(validate2.$async=!0),this.opts.code.source===!0&&(validate2.source={validateName,validateCode,scopeValues:gen._values}),this.opts.unevaluated){let{props,items}=schemaCxt;validate2.evaluated={props:props instanceof codegen_1.Name?void 0:props,items:items instanceof codegen_1.Name?void 0:items,dynamicProps:props instanceof codegen_1.Name,dynamicItems:items instanceof codegen_1.Name},validate2.source&&(validate2.source.evaluated=(0,codegen_1.stringify)(validate2.evaluated))}return sch.validate=validate2,sch}catch(e){throw delete sch.validate,delete sch.validateName,sourceCode&&this.logger.error("Error compiling schema, function code:",sourceCode),e}finally{this._compilations.delete(sch)}}exports.compileSchema=compileSchema;function resolveRef(root,baseId,ref){var _a3;ref=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,ref);let schOrFunc=root.refs[ref];if(schOrFunc)return schOrFunc;let _sch=resolve.call(this,root,ref);if(_sch===void 0){let schema=(_a3=root.localRefs)===null||_a3===void 0?void 0:_a3[ref],{schemaId}=this.opts;schema&&(_sch=new SchemaEnv({schema,schemaId,root,baseId}))}if(_sch!==void 0)return root.refs[ref]=inlineOrCompile.call(this,_sch)}exports.resolveRef=resolveRef;function inlineOrCompile(sch){return(0,resolve_1.inlineRef)(sch.schema,this.opts.inlineRefs)?sch.schema:sch.validate?sch:compileSchema.call(this,sch)}function getCompilingSchema(schEnv){for(let sch of this._compilations)if(sameSchemaEnv(sch,schEnv))return sch}exports.getCompilingSchema=getCompilingSchema;function sameSchemaEnv(s1,s2){return s1.schema===s2.schema&&s1.root===s2.root&&s1.baseId===s2.baseId}function resolve(root,ref){let sch;for(;typeof(sch=this.refs[ref])=="string";)ref=sch;return sch||this.schemas[ref]||resolveSchema.call(this,root,ref)}function resolveSchema(root,ref){let p=this.opts.uriResolver.parse(ref),refPath=(0,resolve_1._getFullPath)(this.opts.uriResolver,p),baseId=(0,resolve_1.getFullPath)(this.opts.uriResolver,root.baseId,void 0);if(Object.keys(root.schema).length>0&&refPath===baseId)return getJsonPointer.call(this,p,root);let id=(0,resolve_1.normalizeId)(refPath),schOrRef=this.refs[id]||this.schemas[id];if(typeof schOrRef=="string"){let sch=resolveSchema.call(this,root,schOrRef);return typeof sch?.schema!="object"?void 0:getJsonPointer.call(this,p,sch)}if(typeof schOrRef?.schema=="object"){if(schOrRef.validate||compileSchema.call(this,schOrRef),id===(0,resolve_1.normalizeId)(ref)){let{schema}=schOrRef,{schemaId}=this.opts,schId=schema[schemaId];return schId&&(baseId=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schId)),new SchemaEnv({schema,schemaId,root,baseId})}return getJsonPointer.call(this,p,schOrRef)}}exports.resolveSchema=resolveSchema;let PREVENT_SCOPE_CHANGE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function getJsonPointer(parsedRef,{baseId,schema,root}){var _a3;if(((_a3=parsedRef.fragment)===null||_a3===void 0?void 0:_a3[0])!=="/")return;for(let part of parsedRef.fragment.slice(1).split("/")){if(typeof schema=="boolean")return;let partSchema=schema[(0,util_1.unescapeFragment)(part)];if(partSchema===void 0)return;schema=partSchema;let schId=typeof schema=="object"&&schema[this.opts.schemaId];!PREVENT_SCOPE_CHANGE.has(part)&&schId&&(baseId=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schId))}let env;if(typeof schema!="boolean"&&schema.$ref&&!(0,util_1.schemaHasRulesButRef)(schema,this.RULES)){let $ref=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schema.$ref);env=resolveSchema.call(this,root,$ref)}let{schemaId}=this.opts;if(env=env||new SchemaEnv({schema,schemaId,root,baseId}),env.schema!==env.root.schema)return env}})),require_data=__commonJSMin(((exports,module)=>{module.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}})),require_utils=__commonJSMin(((exports,module)=>{let isUUID=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),isIPv4=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),isPort=RegExp.prototype.test.bind(/^\d*$/u),isHexPair=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),isUnreserved=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),isPathCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),isQueryFragmentCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),isUserinfoCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),BYTE_HEX=new Array(256);{let HEX_DIGITS="0123456789ABCDEF";for(let i=0;i<256;i++)BYTE_HEX[i]="%"+HEX_DIGITS[i>>4]+HEX_DIGITS[i&15]}function percentEncodeNonAscii(cp){return cp<2048?BYTE_HEX[192|cp>>6]+BYTE_HEX[128|cp&63]:cp<65536?BYTE_HEX[224|cp>>12]+BYTE_HEX[128|cp>>6&63]+BYTE_HEX[128|cp&63]:BYTE_HEX[240|cp>>18]+BYTE_HEX[128|cp>>12&63]+BYTE_HEX[128|cp>>6&63]+BYTE_HEX[128|cp&63]}function stringArrayToHexStripped(input){let acc="",code2=0,i=0;for(i=0;i<input.length;i++)if(code2=input[i].charCodeAt(0),code2!==48){if(!(code2>=48&&code2<=57||code2>=65&&code2<=70||code2>=97&&code2<=102))return"";acc+=input[i];break}for(i+=1;i<input.length;i++){if(code2=input[i].charCodeAt(0),!(code2>=48&&code2<=57||code2>=65&&code2<=70||code2>=97&&code2<=102))return"";acc+=input[i]}return acc}let isHextet=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),isIPvFuture=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),isZoneCharacter=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),nonSimpleDomain=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function isZoneIdentifier(zone){if(zone.length===0)return!1;for(let i=0;i<zone.length;i++)if(!isZoneCharacter(zone[i])){if(zone[i]==="%"&&i+2<zone.length&&isHexPair(zone.slice(i+1,i+3))){i+=2;continue}return!1}return!0}function compressIPv6ZeroRun(hextets){let bestStart=-1,bestLength=0,runStart=-1,runLength=0;for(let i=0;i<hextets.length;i++)hextets[i]==="0"?(runStart===-1&&(runStart=i),runLength++,runLength>bestLength&&(bestLength=runLength,bestStart=runStart)):(runStart=-1,runLength=0);if(bestLength<2)return hextets.join(":");let head=hextets.slice(0,bestStart).join(":"),tail=hextets.slice(bestStart+bestLength).join(":");return head+"::"+tail}function normalizeIPv6Address(input){let compression=input.indexOf("::");if(compression!==-1&&input.indexOf("::",compression+1)!==-1)return;let left=compression===-1?input.split(":"):input.slice(0,compression).split(":"),right=compression===-1?[]:input.slice(compression+2).split(":");compression!==-1&&(left.length===1&&left[0]===""&&(left.length=0),right.length===1&&right[0]===""&&(right.length=0));let parts=left.concat(right),hextetCount=0;for(let i=0;i<parts.length;i++){let part=parts[i];if(part==="")return;if(part.indexOf(".")!==-1){if(i!==parts.length-1||compression!==-1&&right.length===0||!isIPv4(part))return;hextetCount+=2;continue}if(!isHextet(part))return;parts[i]=parseInt(part,16).toString(16),hextetCount++}if(compression===-1)return hextetCount!==8?void 0:compressIPv6ZeroRun(parts);if(hextetCount>=8)return;let expanded=parts.slice(0,left.length);for(let i=hextetCount;i<8;i++)expanded.push("0");for(let i=left.length;i<parts.length;i++)expanded.push(parts[i]);return compressIPv6ZeroRun(expanded)}function normalizeIPv6(host){let bracketed=host[0]==="["&&host[host.length-1]==="]";if((host[0]==="["||host[host.length-1]==="]")&&!bracketed)return{host,isIPV6:!1,error:!0};let input=bracketed?host.slice(1,-1):host;if(bracketed&&isIPvFuture(input))return input=input.toLowerCase(),{host:`[${input}]`,escapedHost:input,isIPV6:!1,isIPVFuture:!0};if(findToken(input,":")<2)return{host,isIPV6:!1,error:bracketed};let zoneIdentifier="",zoneSeparator=input.indexOf("%");if(zoneSeparator!==-1){let separatorLength=input.slice(zoneSeparator,zoneSeparator+3).toLowerCase()==="%25"?3:1;if(zoneIdentifier=input.slice(zoneSeparator+separatorLength),!isZoneIdentifier(zoneIdentifier))return{host,isIPV6:!1,error:!0};input=input.slice(0,zoneSeparator)}let address=normalizeIPv6Address(input);return address===void 0?{host,isIPV6:!1,error:!0}:{host:address+(zoneIdentifier?"%"+zoneIdentifier:""),escapedHost:address+(zoneIdentifier?"%25"+zoneIdentifier:""),isIPV6:!0}}function findToken(str2,token){let ind=0;for(let i=0;i<str2.length;i++)str2[i]===token&&ind++;return ind}function removeDotSegments(path){let input=path,output=[],nextSlash=-1,len=0;for(;len=input.length;){if(len===1){if(input===".")break;if(input==="/"){output.push("/");break}else{output.push(input);break}}else if(len===2){if(input[0]==="."){if(input[1]===".")break;if(input[1]==="/"){input=input.slice(2);continue}}else if(input[0]==="/"&&(input[1]==="."||input[1]==="/")){output.push("/");break}}else if(len===3&&input==="/.."){output.length!==0&&output.pop(),output.push("/");break}if(input[0]==="."){if(input[1]==="."){if(input[2]==="/"){input=input.slice(3);continue}}else if(input[1]==="/"){input=input.slice(2);continue}}else if(input[0]==="/"&&input[1]==="."){if(input[2]==="/"){input=input.slice(2);continue}else if(input[2]==="."&&input[3]==="/"){input=input.slice(3),output.length!==0&&output.pop();continue}}if((nextSlash=input.indexOf("/",1))===-1){output.push(input);break}else output.push(input.slice(0,nextSlash)),input=input.slice(nextSlash)}return output.join("")}let HOST_DELIMS={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},HOST_DELIM_RE=/[@/?#:]/g,HOST_DELIM_NO_COLON_RE=/[@/?#]/g;function reescapeHostDelimiters(host,isIP){let re=isIP?HOST_DELIM_NO_COLON_RE:HOST_DELIM_RE;return re.lastIndex=0,host.replace(re,ch=>HOST_DELIMS[ch])}function normalizePercentEncoding(input,decodeUnreserved=!1){if(input.indexOf("%")===-1)return input;let output="";for(let i=0;i<input.length;i++){if(input[i]==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));decodeUnreserved&&isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}output+=input[i]}return output}function normalizePathEncoding(input){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));decoded!=="."&&isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}if(isPathCharacter(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=isEscapeSafe(code2)?ch:BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function serializePathEncoding(input,pathNoScheme=!1){let output="",firstSegment=pathNoScheme&&input[0]!=="/";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}if(ch==="/"&&(firstSegment=!1),isPathCharacter(ch)&&(ch!==":"||!firstSegment))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function encodeComponent(input,isAllowed){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}if(isAllowed(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function encodeUserinfo(input){return encodeComponent(input,isUserinfoCharacter)}function encodeQuery(input){return encodeComponent(input,isQueryFragmentCharacter)}function encodeFragment(input){return encodeComponent(input,isQueryFragmentCharacter)}function isEscapeSafe(cp){return cp>=48&&cp<=57||cp>=65&&cp<=90||cp>=97&&cp<=122||cp===42||cp===43||cp===45||cp===46||cp===47||cp===64||cp===95}function normalizeQueryFragmentEncoding(input){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}if(isQueryFragmentCharacter(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=isEscapeSafe(code2)?ch:BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function escapePreservingEscapes(input){let output="";for(let i=0;i<input.length;i++){if(input[i]==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}output+=escape(input[i])}return output}function recomposeAuthority(component){let uriTokens=[];if(component.userinfo!==void 0&&(uriTokens.push(encodeUserinfo(component.userinfo)),uriTokens.push("@")),component.host!==void 0){let host=component.host;if(!isIPv4(host)){let ipV6res=normalizeIPv6(host);ipV6res.isIPV6!==!0&&ipV6res.isIPVFuture!==!0&&(host=normalizePercentEncoding(host,!0),ipV6res=normalizeIPv6(host)),ipV6res.isIPV6===!0||ipV6res.isIPVFuture===!0?host=`[${ipV6res.escapedHost}]`:host=reescapeHostDelimiters(host,!1)}uriTokens.push(host)}if(typeof component.port=="number"||typeof component.port=="string"){let port=String(component.port);if(!isPort(port))throw new TypeError("URI port is malformed.");uriTokens.push(":"),uriTokens.push(port)}return uriTokens.length?uriTokens.join(""):void 0}module.exports={nonSimpleDomain,recomposeAuthority,reescapeHostDelimiters,normalizePercentEncoding,normalizePathEncoding,serializePathEncoding,normalizeQueryFragmentEncoding,encodeUserinfo,encodeQuery,encodeFragment,escapePreservingEscapes,removeDotSegments,isIPv4,isUUID,normalizeIPv6,stringArrayToHexStripped}})),require_schemes=__commonJSMin(((exports,module)=>{let{isUUID}=require_utils(),URN_REG=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,supportedSchemeNames=["http","https","ws","wss","urn","urn:uuid"];function isValidSchemeName(name2){return supportedSchemeNames.indexOf(name2)!==-1}function wsIsSecure(wsComponent){return wsComponent.secure===!0?!0:wsComponent.secure===!1?!1:wsComponent.scheme?wsComponent.scheme.length===3&&(wsComponent.scheme[0]==="w"||wsComponent.scheme[0]==="W")&&(wsComponent.scheme[1]==="s"||wsComponent.scheme[1]==="S")&&(wsComponent.scheme[2]==="s"||wsComponent.scheme[2]==="S"):!1}function httpParse(component){return component.host||(component.error=component.error||"HTTP URIs must have a host."),component}function httpSerialize(component){let secure=String(component.scheme).toLowerCase()==="https";return(component.port===(secure?443:80)||component.port==="")&&(component.port=void 0),component.path||(component.path="/"),component}function wsParse(wsComponent){return wsComponent.secure=wsIsSecure(wsComponent),wsComponent.resourceName=(wsComponent.path||"/")+(wsComponent.query?"?"+wsComponent.query:""),wsComponent.path=void 0,wsComponent.query=void 0,wsComponent}function wsSerialize(wsComponent){if((wsComponent.port===(wsIsSecure(wsComponent)?443:80)||wsComponent.port==="")&&(wsComponent.port=void 0),typeof wsComponent.secure=="boolean"&&(wsComponent.scheme=wsComponent.secure?"wss":"ws",wsComponent.secure=void 0),wsComponent.resourceName){let queryIndex=wsComponent.resourceName.indexOf("?"),path=queryIndex===-1?wsComponent.resourceName:wsComponent.resourceName.slice(0,queryIndex);wsComponent.path=path&&path!=="/"?path:void 0,wsComponent.query=queryIndex===-1?void 0:wsComponent.resourceName.slice(queryIndex+1),wsComponent.resourceName=void 0}return wsComponent.fragment=void 0,wsComponent}function urnParse(urnComponent,options){if(!urnComponent.path)return urnComponent.error="URN can not be parsed",urnComponent;let matches=urnComponent.path.match(URN_REG);if(matches&&matches[0]===urnComponent.path){let scheme=options.scheme||urnComponent.scheme||"urn";urnComponent.nid=matches[1].toLowerCase(),urnComponent.nss=matches[2];let schemeHandler=getSchemeHandler(`${scheme}:${options.nid||urnComponent.nid}`);urnComponent.path=void 0,schemeHandler&&(urnComponent=schemeHandler.parse(urnComponent,options))}else urnComponent.error=urnComponent.error||"URN can not be parsed.";return urnComponent}function urnSerialize(urnComponent,options){if(urnComponent.nid===void 0)throw new Error("URN without nid cannot be serialized");let scheme=options.scheme||urnComponent.scheme||"urn",nid=urnComponent.nid.toLowerCase(),schemeHandler=getSchemeHandler(`${scheme}:${options.nid||nid}`);schemeHandler&&(urnComponent=schemeHandler.serialize(urnComponent,options));let uriComponent=urnComponent,nss=urnComponent.nss;return uriComponent.path=`${nid||options.nid}:${nss}`,options.skipEscape=!0,uriComponent}function urnuuidParse(urnComponent,options){let uuidComponent=urnComponent;return uuidComponent.uuid=uuidComponent.nss,uuidComponent.nss=void 0,!options.tolerant&&(!uuidComponent.uuid||!isUUID(uuidComponent.uuid))&&(uuidComponent.error=uuidComponent.error||"UUID is not valid."),uuidComponent}function urnuuidSerialize(uuidComponent){let urnComponent=uuidComponent;return urnComponent.nss=(uuidComponent.uuid||"").toLowerCase(),urnComponent}let http={scheme:"http",domainHost:!0,parse:httpParse,serialize:httpSerialize},https={scheme:"https",domainHost:http.domainHost,parse:httpParse,serialize:httpSerialize},ws={scheme:"ws",domainHost:!0,parse:wsParse,serialize:wsSerialize},wss={scheme:"wss",domainHost:ws.domainHost,parse:ws.parse,serialize:ws.serialize},SCHEMES={http,https,ws,wss,urn:{scheme:"urn",parse:urnParse,serialize:urnSerialize,skipNormalize:!0},"urn:uuid":{scheme:"urn:uuid",parse:urnuuidParse,serialize:urnuuidSerialize,skipNormalize:!0}};Object.setPrototypeOf(SCHEMES,null);function getSchemeHandler(scheme){return scheme&&(SCHEMES[scheme]||SCHEMES[scheme.toLowerCase()])||void 0}module.exports={wsIsSecure,SCHEMES,isValidSchemeName,getSchemeHandler}})),require_fast_uri=__commonJSMin(((exports,module)=>{let{normalizeIPv6,removeDotSegments,recomposeAuthority,normalizePercentEncoding,normalizePathEncoding,serializePathEncoding,normalizeQueryFragmentEncoding,encodeQuery,encodeFragment,reescapeHostDelimiters,isIPv4,nonSimpleDomain}=require_utils(),{SCHEMES,getSchemeHandler}=require_schemes(),VALID_SCHEME=/^[A-Za-z][A-Za-z0-9+.-]*$/u,MALFORMED_SCHEME_ERROR="URI scheme is malformed.";function decodeValidScheme(scheme){let decodedScheme=unescape(String(scheme));if(!VALID_SCHEME.test(decodedScheme))throw new TypeError(MALFORMED_SCHEME_ERROR);return decodedScheme}function normalize(uri,options){return typeof uri=="string"?uri=normalizeString(uri,options):typeof uri=="object"&&(uri=parse2(serialize(uri,options),options)),uri}function resolve(baseURI,relativeURI,options){let schemelessOptions=options?Object.assign({scheme:"null"},options):{scheme:"null"},{parsed:baseParsed,malformedAuthorityOrPort:baseMalformed,malformedPercentEncoding:baseMalformedPercentEncoding,malformedSchemeSpecific:baseMalformedSchemeSpecific,malformedHost:baseMalformedHost,malformedScheme:baseMalformedScheme}=parseWithStatus(baseURI,schemelessOptions),{parsed:relativeParsed,malformedAuthorityOrPort:relativeMalformed,malformedPercentEncoding:relativeMalformedPercentEncoding,malformedSchemeSpecific:relativeMalformedSchemeSpecific,malformedHost:relativeMalformedHost,malformedScheme:relativeMalformedScheme}=parseWithStatus(relativeURI,schemelessOptions);if(baseMalformed||relativeMalformed||baseMalformedPercentEncoding||relativeMalformedPercentEncoding||baseMalformedSchemeSpecific||relativeMalformedSchemeSpecific||baseMalformedHost||relativeMalformedHost||baseMalformedScheme||relativeMalformedScheme)throw new Error(baseParsed.error||relativeParsed.error||"URI is malformed.");let resolved=resolveComponent(baseParsed,relativeParsed,schemelessOptions,!0),resolvedSchemeHandler=getSchemeHandler(options&&options.scheme||resolved.scheme),resolvedHost=resolved.host,resolvedHostIsIP=resolvedHost!==void 0&&resolvedHost!==""&&(isIPv4(resolvedHost)||normalizeIPv6(resolvedHost).isIPV6);canonicalizeHost(resolved,options||{},resolvedSchemeHandler,resolvedHostIsIP);let encodedASCIIHost=resolvedHost&&resolvedHost.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(resolvedHost);if(resolved.error&&!encodedASCIIHost)throw new Error(resolved.error);return schemelessOptions.skipEscape=!0,serialize(resolved,schemelessOptions)}function resolveComponent(base,relative,options,skipNormalization){let target={};return skipNormalization||(base=parse2(serialize(base,options),options),relative=parse2(serialize(relative,options),options)),options=options||{},!options.tolerant&&relative.scheme?(target.scheme=relative.scheme,target.userinfo=relative.userinfo,target.host=relative.host,target.port=relative.port,target.path=removeDotSegments(relative.path||""),target.query=relative.query):(relative.userinfo!==void 0||relative.host!==void 0||relative.port!==void 0?(target.userinfo=relative.userinfo,target.host=relative.host,target.port=relative.port,target.path=removeDotSegments(relative.path||""),target.query=relative.query):(relative.path?(relative.path[0]==="/"?target.path=removeDotSegments(relative.path):((base.userinfo!==void 0||base.host!==void 0||base.port!==void 0)&&!base.path?target.path="/"+relative.path:base.path?target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path:target.path=relative.path,target.path=removeDotSegments(target.path)),target.query=relative.query):(target.path=base.path,relative.query!==void 0?target.query=relative.query:target.query=base.query),target.userinfo=base.userinfo,target.host=base.host,target.port=base.port),target.scheme=base.scheme),target.fragment=relative.fragment,target}function equal(uriA,uriB,options){let normalizedA=normalizeComparableURI(uriA,options),normalizedB=normalizeComparableURI(uriB,options);return normalizedA!==void 0&&normalizedB!==void 0&&normalizedA===normalizedB}function serialize(cmpts,opts){let component={host:cmpts.host,scheme:cmpts.scheme,userinfo:cmpts.userinfo,port:cmpts.port,path:cmpts.path,query:cmpts.query,nid:cmpts.nid,nss:cmpts.nss,uuid:cmpts.uuid,fragment:cmpts.fragment,reference:cmpts.reference,resourceName:cmpts.resourceName,secure:cmpts.secure,error:""},options=Object.assign({},opts),uriTokens=[];component.scheme&&(component.scheme=decodeValidScheme(component.scheme));let schemeHandler=getSchemeHandler(options.scheme||component.scheme);schemeHandler&&schemeHandler.serialize&&schemeHandler.serialize(component,options);let hasAuthority=component.userinfo!==void 0||component.host!==void 0||component.port!==void 0,pathNoScheme=!options.skipEscape&&component.scheme===void 0&&!hasAuthority;component.path!==void 0&&(options.skipEscape?component.path=normalizePercentEncoding(component.path):component.path=serializePathEncoding(component.path,pathNoScheme)),options.reference!=="suffix"&&component.scheme&&(component.scheme=decodeValidScheme(component.scheme),uriTokens.push(component.scheme,":"));let authority=recomposeAuthority(component);if(authority!==void 0&&(options.reference!=="suffix"&&uriTokens.push("//"),uriTokens.push(authority),component.path&&component.path[0]!=="/"&&uriTokens.push("/")),component.path!==void 0){let s=component.path;!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)&&(s=removeDotSegments(s)),pathNoScheme&&(s=serializePathEncoding(s,!0)),authority===void 0&&s[0]==="/"&&s[1]==="/"&&(s="/%2F"+s.slice(2)),uriTokens.push(s)}return component.query!==void 0&&uriTokens.push("?",encodeQuery(component.query)),component.fragment!==void 0&&uriTokens.push("#",encodeFragment(component.fragment)),uriTokens.join("")}let URI_PARSE=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,AUTHORITY_PREFIX=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,AUTHORITY_INTRODUCER_REGION=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function getParseError(parsed,matches){if(matches[2]!==void 0&&parsed.path&&parsed.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof parsed.port=="number"&&(parsed.port<0||parsed.port>65535))return"URI port is malformed."}function hasMalformedPercentEncoding(component){if(component===void 0)return!1;let percent=component.indexOf("%");for(;percent!==-1;){if(percent+2>=component.length||!/^[\da-f]{2}$/iu.test(component.slice(percent+1,percent+3)))return!0;percent=component.indexOf("%",percent+3)}return!1}function isIPLiteral(host){return host[0]==="["&&host[host.length-1]==="]"}function hasMalformedComponentPercentEncoding(matches){let host=matches[4];return hasMalformedPercentEncoding(matches[3])||host!==void 0&&!isIPLiteral(host)&&hasMalformedPercentEncoding(host)||hasMalformedPercentEncoding(matches[6])||hasMalformedPercentEncoding(matches[7])||hasMalformedPercentEncoding(matches[8])}function canonicalizeHost(parsed,options,schemeHandler,isIP){if(!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)&&parsed.host&&!isIPLiteral(parsed.host)&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)&&isIP===!1&&nonSimpleDomain(parsed.host))try{parsed.host=new URL("http://"+parsed.host).hostname}catch(e){return parsed.error=parsed.error||"Host's domain name can not be converted to ASCII: "+e,!0}return!1}function parseWithStatus(uri,opts){let options=Object.assign({},opts),parsed={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},malformedAuthorityOrPort=!1,malformedPercentEncoding=!1,malformedSchemeSpecific=!1,malformedHost=!1,malformedIPLiteral=!1,malformedScheme=!1,isIP=!1;options.reference==="suffix"&&(options.scheme?uri=options.scheme+":"+uri:uri="//"+uri);let authorityMatch=uri.match(AUTHORITY_PREFIX);authorityMatch!==null&&authorityMatch[1].indexOf("\\")!==-1&&(parsed.error="URI authority must not contain a literal backslash.",malformedAuthorityOrPort=!0);let introducerMatch=uri.match(AUTHORITY_INTRODUCER_REGION);if(introducerMatch!==null){let region=introducerMatch[1],normalizedRegion=region.replace(/[\t\n\r]/g,"");normalizedRegion.length>=2&&(normalizedRegion.slice(0,2)!=="//"?(parsed.error=parsed.error||"URI authority must not contain a literal backslash.",malformedAuthorityOrPort=!0):region.length!==normalizedRegion.length&&(parsed.error=parsed.error||"URI authority introducer must not contain whitespace.",malformedAuthorityOrPort=!0))}let matches=uri.match(URI_PARSE);if(matches){if(parsed.scheme=matches[1],parsed.userinfo=matches[3],parsed.host=matches[4],parsed.port=parseInt(matches[5],10),parsed.path=matches[6]||"",parsed.query=matches[7],parsed.fragment=matches[8],parsed.scheme!==void 0){let decodedScheme=unescape(parsed.scheme);VALID_SCHEME.test(decodedScheme)?parsed.scheme=decodedScheme.toLowerCase():(parsed.error=parsed.error||MALFORMED_SCHEME_ERROR,malformedScheme=!0)}malformedPercentEncoding=hasMalformedComponentPercentEncoding(matches),malformedPercentEncoding&&(parsed.error=parsed.error||"URI contains malformed percent-encoding."),isNaN(parsed.port)&&(parsed.port=matches[5]);let parseError=getParseError(parsed,matches);if(parseError!==void 0&&(parsed.error=parsed.error||parseError,malformedAuthorityOrPort=!0),parsed.host)if(isIPv4(parsed.host)===!1){let bracketedIPLiteral=isIPLiteral(parsed.host),hasIPLiteralBracket=parsed.host.indexOf("[")!==-1||parsed.host.indexOf("]")!==-1,ipv6result=normalizeIPv6(parsed.host);isIP=ipv6result.isIPV6||ipv6result.isIPVFuture===!0,malformedIPLiteral=hasIPLiteralBracket&&(!bracketedIPLiteral||ipv6result.error===!0),parsed.host=isIP?ipv6result.host:ipv6result.host.toLowerCase(),malformedIPLiteral&&(parsed.error=parsed.error||"URI host is malformed.",malformedAuthorityOrPort=!0)}else isIP=!0;parsed.scheme===void 0&&parsed.userinfo===void 0&&parsed.host===void 0&&parsed.port===void 0&&parsed.query===void 0&&!parsed.path?parsed.reference="same-document":parsed.scheme===void 0?parsed.reference="relative":parsed.fragment===void 0?parsed.reference="absolute":parsed.reference="uri",options.reference&&options.reference!=="suffix"&&options.reference!==parsed.reference&&(parsed.error=parsed.error||"URI is not a "+options.reference+" reference.");let schemeHandler=getSchemeHandler(options.scheme||parsed.scheme);if(malformedIPLiteral||(malformedHost=canonicalizeHost(parsed,options,schemeHandler,isIP)),uri.indexOf("%")!==-1&&parsed.host!==void 0&&!malformedIPLiteral){let host=isIP?parsed.host:normalizePercentEncoding(parsed.host,!0);isIP||(host=normalizePercentEncoding(host.toLowerCase())),parsed.host=reescapeHostDelimiters(host,isIP)}(!schemeHandler||schemeHandler&&!schemeHandler.skipNormalize)&&(parsed.path&&(parsed.path=normalizePathEncoding(parsed.path)),parsed.query&&(parsed.query=normalizeQueryFragmentEncoding(parsed.query)),parsed.fragment&&(parsed.fragment=normalizeQueryFragmentEncoding(parsed.fragment))),schemeHandler&&schemeHandler.parse&&(schemeHandler.parse(parsed,options),schemeHandler===SCHEMES.urn&&parsed.nid===void 0&&(malformedSchemeSpecific=!0))}else parsed.error=parsed.error||"URI can not be parsed.";return{parsed,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}}function parse2(uri,opts){return parseWithStatus(uri,opts).parsed}function normalizeString(uri,opts){return normalizeStringWithStatus(uri,opts).normalized}function normalizeStringWithStatus(uri,opts){let{parsed,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}=parseWithStatus(uri,opts);return{normalized:malformedAuthorityOrPort||malformedPercentEncoding||malformedSchemeSpecific||malformedHost||malformedScheme?uri:serialize(parsed,opts),malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}}function normalizeComparableURI(uri,opts){if(typeof uri!="string"&&typeof uri!="object")return;let value;try{value=typeof uri=="string"?uri:serialize(uri,opts)}catch{return}let{normalized,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}=normalizeStringWithStatus(value,opts);return malformedAuthorityOrPort||malformedPercentEncoding||malformedSchemeSpecific||malformedHost||malformedScheme?void 0:normalized}let fastUri={SCHEMES,normalize,resolve,resolveComponent,equal,serialize,parse:parse2};module.exports=fastUri,module.exports.default=fastUri,module.exports.fastUri=fastUri})),require_uri=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let uri=require_fast_uri();uri.code='require("ajv/dist/runtime/uri").default',exports.default=uri})),require_core$3=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=void 0;var validate_1=require_validate();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});let validation_error_1=require_validation_error(),ref_error_1=require_ref_error(),rules_1=require_rules(),compile_1=require_compile(),codegen_2=require_codegen(),resolve_1=require_resolve(),dataType_1=require_dataType(),util_1=require_util(),$dataRefSchema=require_data(),uri_1=require_uri(),defaultRegExp=(str2,flags)=>new RegExp(str2,flags);defaultRegExp.code="new RegExp";let META_IGNORE_OPTIONS=["removeAdditional","useDefaults","coerceTypes"],EXT_SCOPE_NAMES=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),removedOptions={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},deprecatedOptions={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},MAX_EXPRESSION=200;function requiredOptions(o){var _a3,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l,_m,_o,_p,_q,_r,_s,_t,_u,_v,_w,_x,_y,_z,_0;let s=o.strict,_optz=(_a3=o.code)===null||_a3===void 0?void 0:_a3.optimize,optimize=_optz===!0||_optz===void 0?1:_optz||0,regExp=(_c=(_b=o.code)===null||_b===void 0?void 0:_b.regExp)!==null&&_c!==void 0?_c:defaultRegExp,uriResolver=(_d=o.uriResolver)!==null&&_d!==void 0?_d:uri_1.default;return{strictSchema:(_f=(_e=o.strictSchema)!==null&&_e!==void 0?_e:s)!==null&&_f!==void 0?_f:!0,strictNumbers:(_h=(_g=o.strictNumbers)!==null&&_g!==void 0?_g:s)!==null&&_h!==void 0?_h:!0,strictTypes:(_k=(_j=o.strictTypes)!==null&&_j!==void 0?_j:s)!==null&&_k!==void 0?_k:"log",strictTuples:(_m=(_l=o.strictTuples)!==null&&_l!==void 0?_l:s)!==null&&_m!==void 0?_m:"log",strictRequired:(_p=(_o=o.strictRequired)!==null&&_o!==void 0?_o:s)!==null&&_p!==void 0?_p:!1,code:o.code?{...o.code,optimize,regExp}:{optimize,regExp},loopRequired:(_q=o.loopRequired)!==null&&_q!==void 0?_q:MAX_EXPRESSION,loopEnum:(_r=o.loopEnum)!==null&&_r!==void 0?_r:MAX_EXPRESSION,meta:(_s=o.meta)!==null&&_s!==void 0?_s:!0,messages:(_t=o.messages)!==null&&_t!==void 0?_t:!0,inlineRefs:(_u=o.inlineRefs)!==null&&_u!==void 0?_u:!0,schemaId:(_v=o.schemaId)!==null&&_v!==void 0?_v:"$id",addUsedSchema:(_w=o.addUsedSchema)!==null&&_w!==void 0?_w:!0,validateSchema:(_x=o.validateSchema)!==null&&_x!==void 0?_x:!0,validateFormats:(_y=o.validateFormats)!==null&&_y!==void 0?_y:!0,unicodeRegExp:(_z=o.unicodeRegExp)!==null&&_z!==void 0?_z:!0,int32range:(_0=o.int32range)!==null&&_0!==void 0?_0:!0,uriResolver}}var Ajv3=class{constructor(opts={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,opts=this.opts={...opts,...requiredOptions(opts)};let{es5,lines:lines2}=this.opts.code;this.scope=new codegen_2.ValueScope({scope:{},prefixes:EXT_SCOPE_NAMES,es5,lines:lines2}),this.logger=getLogger(opts.logger);let formatOpt=opts.validateFormats;opts.validateFormats=!1,this.RULES=(0,rules_1.getRules)(),checkOptions.call(this,removedOptions,opts,"NOT SUPPORTED"),checkOptions.call(this,deprecatedOptions,opts,"DEPRECATED","warn"),this._metaOpts=getMetaSchemaOptions.call(this),opts.formats&&addInitialFormats.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),opts.keywords&&addInitialKeywords.call(this,opts.keywords),typeof opts.meta=="object"&&this.addMetaSchema(opts.meta),addInitialSchemas.call(this),opts.validateFormats=formatOpt}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data,meta:meta2,schemaId}=this.opts,_dataRefSchema=$dataRefSchema;schemaId==="id"&&(_dataRefSchema={...$dataRefSchema},_dataRefSchema.id=_dataRefSchema.$id,delete _dataRefSchema.$id),meta2&&$data&&this.addMetaSchema(_dataRefSchema,_dataRefSchema[schemaId],!1)}defaultMeta(){let{meta:meta2,schemaId}=this.opts;return this.opts.defaultMeta=typeof meta2=="object"?meta2[schemaId]||meta2:void 0}validate(schemaKeyRef,data){let v;if(typeof schemaKeyRef=="string"){if(v=this.getSchema(schemaKeyRef),!v)throw new Error(`no schema with key or ref "${schemaKeyRef}"`)}else v=this.compile(schemaKeyRef);let valid=v(data);return"$async"in v||(this.errors=v.errors),valid}compile(schema,_meta){let sch=this._addSchema(schema,_meta);return sch.validate||this._compileSchemaEnv(sch)}compileAsync(schema,meta2){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema}=this.opts;return runCompileAsync.call(this,schema,meta2);async function runCompileAsync(_schema,_meta){await loadMetaSchema.call(this,_schema.$schema);let sch=this._addSchema(_schema,_meta);return sch.validate||_compileAsync.call(this,sch)}async function loadMetaSchema($ref){$ref&&!this.getSchema($ref)&&await runCompileAsync.call(this,{$ref},!0)}async function _compileAsync(sch){try{return this._compileSchemaEnv(sch)}catch(e){if(!(e instanceof ref_error_1.default))throw e;return checkLoaded.call(this,e),await loadMissingSchema.call(this,e.missingSchema),_compileAsync.call(this,sch)}}function checkLoaded({missingSchema:ref,missingRef}){if(this.refs[ref])throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)}async function loadMissingSchema(ref){let _schema=await _loadSchema.call(this,ref);this.refs[ref]||await loadMetaSchema.call(this,_schema.$schema),this.refs[ref]||this.addSchema(_schema,ref,meta2)}async function _loadSchema(ref){let p=this._loading[ref];if(p)return p;try{return await(this._loading[ref]=loadSchema(ref))}finally{delete this._loading[ref]}}}addSchema(schema,key,_meta,_validateSchema=this.opts.validateSchema){if(Array.isArray(schema)){for(let sch of schema)this.addSchema(sch,void 0,_meta,_validateSchema);return this}let id;if(typeof schema=="object"){let{schemaId}=this.opts;if(id=schema[schemaId],id!==void 0&&typeof id!="string")throw new Error(`schema ${schemaId} must be string`)}return key=(0,resolve_1.normalizeId)(key||id),this._checkUnique(key),this.schemas[key]=this._addSchema(schema,_meta,key,_validateSchema,!0),this}addMetaSchema(schema,key,_validateSchema=this.opts.validateSchema){return this.addSchema(schema,key,!0,_validateSchema),this}validateSchema(schema,throwOrLogError){if(typeof schema=="boolean")return!0;let $schema;if($schema=schema.$schema,$schema!==void 0&&typeof $schema!="string")throw new Error("$schema must be a string");if($schema=$schema||this.opts.defaultMeta||this.defaultMeta(),!$schema)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let valid=this.validate($schema,schema);if(!valid&&throwOrLogError){let message="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(message);else throw new Error(message)}return valid}getSchema(keyRef){let sch;for(;typeof(sch=getSchEnv.call(this,keyRef))=="string";)keyRef=sch;if(sch===void 0){let{schemaId}=this.opts,root=new compile_1.SchemaEnv({schema:{},schemaId});if(sch=compile_1.resolveSchema.call(this,root,keyRef),!sch)return;this.refs[keyRef]=sch}return sch.validate||this._compileSchemaEnv(sch)}removeSchema(schemaKeyRef){if(schemaKeyRef instanceof RegExp)return this._removeAllSchemas(this.schemas,schemaKeyRef),this._removeAllSchemas(this.refs,schemaKeyRef),this;switch(typeof schemaKeyRef){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let sch=getSchEnv.call(this,schemaKeyRef);return typeof sch=="object"&&this._cache.delete(sch.schema),delete this.schemas[schemaKeyRef],delete this.refs[schemaKeyRef],this}case"object":{let cacheKey=schemaKeyRef;this._cache.delete(cacheKey);let id=schemaKeyRef[this.opts.schemaId];return id&&(id=(0,resolve_1.normalizeId)(id),delete this.schemas[id],delete this.refs[id]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(definitions){for(let def of definitions)this.addKeyword(def);return this}addKeyword(kwdOrDef,def){let keyword;if(typeof kwdOrDef=="string")keyword=kwdOrDef,typeof def=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),def.keyword=keyword);else if(typeof kwdOrDef=="object"&&def===void 0){if(def=kwdOrDef,keyword=def.keyword,Array.isArray(keyword)&&!keyword.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(checkKeyword.call(this,keyword,def),!def)return(0,util_1.eachItem)(keyword,kwd=>addRule.call(this,kwd)),this;keywordMetaschema.call(this,def);let definition={...def,type:(0,dataType_1.getJSONTypes)(def.type),schemaType:(0,dataType_1.getJSONTypes)(def.schemaType)};return(0,util_1.eachItem)(keyword,definition.type.length===0?k=>addRule.call(this,k,definition):k=>definition.type.forEach(t=>addRule.call(this,k,definition,t))),this}getKeyword(keyword){let rule2=this.RULES.all[keyword];return typeof rule2=="object"?rule2.definition:!!rule2}removeKeyword(keyword){let{RULES:RULES2}=this;delete RULES2.keywords[keyword],delete RULES2.all[keyword];for(let group of RULES2.rules){let i=group.rules.findIndex(rule2=>rule2.keyword===keyword);i>=0&&group.rules.splice(i,1)}return this}addFormat(name2,format){return typeof format=="string"&&(format=new RegExp(format)),this.formats[name2]=format,this}errorsText(errors=this.errors,{separator=", ",dataVar="data"}={}){return!errors||errors.length===0?"No errors":errors.map(e=>`${dataVar}${e.instancePath} ${e.message}`).reduce((text2,msg)=>text2+separator+msg)}$dataMetaSchema(metaSchema,keywordsJsonPointers){let rules=this.RULES.all;metaSchema=JSON.parse(JSON.stringify(metaSchema));for(let jsonPointer of keywordsJsonPointers){let segments=jsonPointer.split("/").slice(1),keywords=metaSchema;for(let seg of segments)keywords=keywords[seg];for(let key in rules){let rule2=rules[key];if(typeof rule2!="object")continue;let{$data}=rule2.definition,schema=keywords[key];$data&&schema&&(keywords[key]=schemaOrData(schema))}}return metaSchema}_removeAllSchemas(schemas,regex){for(let keyRef in schemas){let sch=schemas[keyRef];(!regex||regex.test(keyRef))&&(typeof sch=="string"?delete schemas[keyRef]:sch&&!sch.meta&&(this._cache.delete(sch.schema),delete schemas[keyRef]))}}_addSchema(schema,meta2,baseId,validateSchema=this.opts.validateSchema,addSchema=this.opts.addUsedSchema){let id,{schemaId}=this.opts;if(typeof schema=="object")id=schema[schemaId];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof schema!="boolean")throw new Error("schema must be object or boolean")}let sch=this._cache.get(schema);if(sch!==void 0)return sch;baseId=(0,resolve_1.normalizeId)(id||baseId);let localRefs=resolve_1.getSchemaRefs.call(this,schema,baseId);return sch=new compile_1.SchemaEnv({schema,schemaId,meta:meta2,baseId,localRefs}),this._cache.set(sch.schema,sch),addSchema&&!baseId.startsWith("#")&&(baseId&&this._checkUnique(baseId),this.refs[baseId]=sch),validateSchema&&this.validateSchema(schema,!0),sch}_checkUnique(id){if(this.schemas[id]||this.refs[id])throw new Error(`schema with key or id "${id}" already exists`)}_compileSchemaEnv(sch){if(sch.meta?this._compileMetaSchema(sch):compile_1.compileSchema.call(this,sch),!sch.validate)throw new Error("ajv implementation error");return sch.validate}_compileMetaSchema(sch){let currentOpts=this.opts;this.opts=this._metaOpts;try{compile_1.compileSchema.call(this,sch)}finally{this.opts=currentOpts}}};Ajv3.ValidationError=validation_error_1.default,Ajv3.MissingRefError=ref_error_1.default,exports.default=Ajv3;function checkOptions(checkOpts,options,msg,log="error"){for(let key in checkOpts){let opt2=key;opt2 in options&&this.logger[log](`${msg}: option ${key}. ${checkOpts[opt2]}`)}}function getSchEnv(keyRef){return keyRef=(0,resolve_1.normalizeId)(keyRef),this.schemas[keyRef]||this.refs[keyRef]}function addInitialSchemas(){let optsSchemas=this.opts.schemas;if(optsSchemas)if(Array.isArray(optsSchemas))this.addSchema(optsSchemas);else for(let key in optsSchemas)this.addSchema(optsSchemas[key],key)}function addInitialFormats(){for(let name2 in this.opts.formats){let format=this.opts.formats[name2];format&&this.addFormat(name2,format)}}function addInitialKeywords(defs){if(Array.isArray(defs)){this.addVocabulary(defs);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let keyword in defs){let def=defs[keyword];def.keyword||(def.keyword=keyword),this.addKeyword(def)}}function getMetaSchemaOptions(){let metaOpts={...this.opts};for(let opt2 of META_IGNORE_OPTIONS)delete metaOpts[opt2];return metaOpts}let noLogs={log(){},warn(){},error(){}};function getLogger(logger){if(logger===!1)return noLogs;if(logger===void 0)return console;if(logger.log&&logger.warn&&logger.error)return logger;throw new Error("logger must implement log, warn and error methods")}let KEYWORD_NAME=/^[a-z_$][a-z0-9_$:-]*$/i;function checkKeyword(keyword,def){let{RULES:RULES2}=this;if((0,util_1.eachItem)(keyword,kwd=>{if(RULES2.keywords[kwd])throw new Error(`Keyword ${kwd} is already defined`);if(!KEYWORD_NAME.test(kwd))throw new Error(`Keyword ${kwd} has invalid name`)}),!!def&&def.$data&&!("code"in def||"validate"in def))throw new Error('$data keyword must have "code" or "validate" function')}function addRule(keyword,definition,dataType){var _a3;let post=definition?.post;if(dataType&&post)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:RULES2}=this,ruleGroup=post?RULES2.post:RULES2.rules.find(({type:t})=>t===dataType);if(ruleGroup||(ruleGroup={type:dataType,rules:[]},RULES2.rules.push(ruleGroup)),RULES2.keywords[keyword]=!0,!definition)return;let rule2={keyword,definition:{...definition,type:(0,dataType_1.getJSONTypes)(definition.type),schemaType:(0,dataType_1.getJSONTypes)(definition.schemaType)}};definition.before?addBeforeRule.call(this,ruleGroup,rule2,definition.before):ruleGroup.rules.push(rule2),RULES2.all[keyword]=rule2,(_a3=definition.implements)===null||_a3===void 0||_a3.forEach(kwd=>this.addKeyword(kwd))}function addBeforeRule(ruleGroup,rule2,before){let i=ruleGroup.rules.findIndex(_rule=>_rule.keyword===before);i>=0?ruleGroup.rules.splice(i,0,rule2):(ruleGroup.rules.push(rule2),this.logger.warn(`rule ${before} is not defined`))}function keywordMetaschema(def){let{metaSchema}=def;metaSchema!==void 0&&(def.$data&&this.opts.$data&&(metaSchema=schemaOrData(metaSchema)),def.validateSchema=this.compile(metaSchema,!0))}let $dataRef={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function schemaOrData(schema){return{anyOf:[schema,$dataRef]}}})),require_id=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let def={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};exports.default=def})),require_ref=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.callRef=exports.getValidate=void 0;let ref_error_1=require_ref_error(),code_1=require_code(),codegen_1=require_codegen(),names_1=require_names(),compile_1=require_compile(),util_1=require_util(),def={keyword:"$ref",schemaType:"string",code(cxt){let{gen,schema:$ref,it}=cxt,{baseId,schemaEnv:env,validateName,opts,self}=it,{root}=env;if(($ref==="#"||$ref==="#/")&&baseId===root.baseId)return callRootRef();let schOrEnv=compile_1.resolveRef.call(self,root,baseId,$ref);if(schOrEnv===void 0)throw new ref_error_1.default(it.opts.uriResolver,baseId,$ref);if(schOrEnv instanceof compile_1.SchemaEnv)return callValidate(schOrEnv);return inlineRefSchema(schOrEnv);function callRootRef(){if(env===root)return callRef(cxt,validateName,env,env.$async);let rootName=gen.scopeValue("root",{ref:root});return callRef(cxt,(0,codegen_1._)`${rootName}.validate`,root,root.$async)}function callValidate(sch){callRef(cxt,getValidate(cxt,sch),sch,sch.$async)}function inlineRefSchema(sch){let schName=gen.scopeValue("schema",opts.code.source===!0?{ref:sch,code:(0,codegen_1.stringify)(sch)}:{ref:sch}),valid=gen.name("valid"),schCxt=cxt.subschema({schema:sch,dataTypes:[],schemaPath:codegen_1.nil,topSchemaRef:schName,errSchemaPath:$ref},valid);cxt.mergeEvaluated(schCxt),cxt.ok(valid)}}};function getValidate(cxt,sch){let{gen}=cxt;return sch.validate?gen.scopeValue("validate",{ref:sch.validate}):(0,codegen_1._)`${gen.scopeValue("wrapper",{ref:sch})}.validate`}exports.getValidate=getValidate;function callRef(cxt,v,sch,$async){let{gen,it}=cxt,{allErrors,schemaEnv:env,opts}=it,passCxt=opts.passContext?names_1.default.this:codegen_1.nil;$async?callAsyncRef():callSyncRef();function callAsyncRef(){if(!env.$async)throw new Error("async schema referenced by sync schema");let valid=gen.let("valid");gen.try(()=>{gen.code((0,codegen_1._)`await ${(0,code_1.callValidateCode)(cxt,v,passCxt)}`),addEvaluatedFrom(v),allErrors||gen.assign(valid,!0)},e=>{gen.if((0,codegen_1._)`!(${e} instanceof ${it.ValidationError})`,()=>gen.throw(e)),addErrorsFrom(e),allErrors||gen.assign(valid,!1)}),cxt.ok(valid)}function callSyncRef(){cxt.result((0,code_1.callValidateCode)(cxt,v,passCxt),()=>addEvaluatedFrom(v),()=>addErrorsFrom(v))}function addErrorsFrom(source){let errs=(0,codegen_1._)`${source}.errors`;gen.assign(names_1.default.vErrors,(0,codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`),gen.assign(names_1.default.errors,(0,codegen_1._)`${names_1.default.vErrors}.length`)}function addEvaluatedFrom(source){var _a3;if(!it.opts.unevaluated)return;let schEvaluated=(_a3=sch?.validate)===null||_a3===void 0?void 0:_a3.evaluated;if(it.props!==!0)if(schEvaluated&&!schEvaluated.dynamicProps)schEvaluated.props!==void 0&&(it.props=util_1.mergeEvaluated.props(gen,schEvaluated.props,it.props));else{let props=gen.var("props",(0,codegen_1._)`${source}.evaluated.props`);it.props=util_1.mergeEvaluated.props(gen,props,it.props,codegen_1.Name)}if(it.items!==!0)if(schEvaluated&&!schEvaluated.dynamicItems)schEvaluated.items!==void 0&&(it.items=util_1.mergeEvaluated.items(gen,schEvaluated.items,it.items));else{let items=gen.var("items",(0,codegen_1._)`${source}.evaluated.items`);it.items=util_1.mergeEvaluated.items(gen,items,it.items,codegen_1.Name)}}}exports.callRef=callRef,exports.default=def})),require_core$2=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let id_1=require_id(),ref_1=require_ref(),core=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",id_1.default,ref_1.default];exports.default=core})),require_limitNumber=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),ops=codegen_1.operators,KWDs={maximum:{okStr:"<=",ok:ops.LTE,fail:ops.GT},minimum:{okStr:">=",ok:ops.GTE,fail:ops.LT},exclusiveMaximum:{okStr:"<",ok:ops.LT,fail:ops.GTE},exclusiveMinimum:{okStr:">",ok:ops.GT,fail:ops.LTE}},def={keyword:Object.keys(KWDs),type:"number",schemaType:"number",$data:!0,error:{message:({keyword,schemaCode})=>(0,codegen_1.str)`must be ${KWDs[keyword].okStr} ${schemaCode}`,params:({keyword,schemaCode})=>(0,codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt;cxt.fail$data((0,codegen_1._)`${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`)}};exports.default=def})),require_multipleOf=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),def={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must be multiple of ${schemaCode}`,params:({schemaCode})=>(0,codegen_1._)`{multipleOf: ${schemaCode}}`},code(cxt){let{gen,data,schemaCode,it}=cxt,prec=it.opts.multipleOfPrecision,res=gen.let("res"),invalid=prec?(0,codegen_1._)`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`:(0,codegen_1._)`${res} !== parseInt(${res})`;cxt.fail$data((0,codegen_1._)`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)}};exports.default=def})),require_ucs2length=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});function ucs2length(str2){let len=str2.length,length2=0,pos=0,value;for(;pos<len;)length2++,value=str2.charCodeAt(pos++),value>=55296&&value<=56319&&pos<len&&(value=str2.charCodeAt(pos),(value&64512)===56320&&pos++);return length2}exports.default=ucs2length,ucs2length.code='require("ajv/dist/runtime/ucs2length").default'})),require_limitLength=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),ucs2length_1=require_ucs2length(),def={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxLength"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} characters`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode,it}=cxt,op=keyword==="maxLength"?codegen_1.operators.GT:codegen_1.operators.LT,len=it.opts.unicode===!1?(0,codegen_1._)`${data}.length`:(0,codegen_1._)`${(0,util_1.useFunc)(cxt.gen,ucs2length_1.default)}(${data})`;cxt.fail$data((0,codegen_1._)`${len} ${op} ${schemaCode}`)}};exports.default=def})),require_pattern=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code(),util_1=require_util(),codegen_1=require_codegen(),def={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must match pattern "${schemaCode}"`,params:({schemaCode})=>(0,codegen_1._)`{pattern: ${schemaCode}}`},code(cxt){let{gen,data,$data,schema,schemaCode,it}=cxt,u=it.opts.unicodeRegExp?"u":"";if($data){let{regExp}=it.opts.code,regExpCode=regExp.code==="new RegExp"?(0,codegen_1._)`new RegExp`:(0,util_1.useFunc)(gen,regExp),valid=gen.let("valid");gen.try(()=>gen.assign(valid,(0,codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`),()=>gen.assign(valid,!1)),cxt.fail$data((0,codegen_1._)`!${valid}`)}else{let regExp=(0,code_1.usePattern)(cxt,schema);cxt.fail$data((0,codegen_1._)`!${regExp}.test(${data})`)}}};exports.default=def})),require_limitProperties=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),def={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxProperties"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} properties`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt,op=keyword==="maxProperties"?codegen_1.operators.GT:codegen_1.operators.LT;cxt.fail$data((0,codegen_1._)`Object.keys(${data}).length ${op} ${schemaCode}`)}};exports.default=def})),require_required=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code(),codegen_1=require_codegen(),util_1=require_util(),def={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty}})=>(0,codegen_1.str)`must have required property '${missingProperty}'`,params:({params:{missingProperty}})=>(0,codegen_1._)`{missingProperty: ${missingProperty}}`},code(cxt){let{gen,schema,schemaCode,data,$data,it}=cxt,{opts}=it;if(!$data&&schema.length===0)return;let useLoop=schema.length>=opts.loopRequired;if(it.allErrors?allErrorsMode():exitOnErrorMode(),opts.strictRequired){let props=cxt.parentSchema.properties,{definedProperties}=cxt.it;for(let requiredKey of schema)if(props?.[requiredKey]===void 0&&!definedProperties.has(requiredKey)){let msg=`required property "${requiredKey}" is not defined at "${it.schemaEnv.baseId+it.errSchemaPath}" (strictRequired)`;(0,util_1.checkStrictMode)(it,msg,it.opts.strictRequired)}}function allErrorsMode(){if(useLoop||$data)cxt.block$data(codegen_1.nil,loopAllRequired);else for(let prop of schema)(0,code_1.checkReportMissingProp)(cxt,prop)}function exitOnErrorMode(){let missing=gen.let("missing");if(useLoop||$data){let valid=gen.let("valid",!0);cxt.block$data(valid,()=>loopUntilMissing(missing,valid)),cxt.ok(valid)}else gen.if((0,code_1.checkMissingProp)(cxt,schema,missing)),(0,code_1.reportMissingProp)(cxt,missing),gen.else()}function loopAllRequired(){gen.forOf("prop",schemaCode,prop=>{cxt.setParams({missingProperty:prop}),gen.if((0,code_1.noPropertyInData)(gen,data,prop,opts.ownProperties),()=>cxt.error())})}function loopUntilMissing(missing,valid){cxt.setParams({missingProperty:missing}),gen.forOf(missing,schemaCode,()=>{gen.assign(valid,(0,code_1.propertyInData)(gen,data,missing,opts.ownProperties)),gen.if((0,codegen_1.not)(valid),()=>{cxt.error(),gen.break()})},codegen_1.nil)}}};exports.default=def})),require_limitItems=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),def={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxItems"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} items`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt,op=keyword==="maxItems"?codegen_1.operators.GT:codegen_1.operators.LT;cxt.fail$data((0,codegen_1._)`${data}.length ${op} ${schemaCode}`)}};exports.default=def})),require_equal=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let equal=require_fast_deep_equal();equal.code='require("ajv/dist/runtime/equal").default',exports.default=equal})),require_uniqueItems=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dataType_1=require_dataType(),codegen_1=require_codegen(),util_1=require_util(),equal_1=require_equal(),def={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i,j}})=>(0,codegen_1.str)`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,params:({params:{i,j}})=>(0,codegen_1._)`{i: ${i}, j: ${j}}`},code(cxt){let{gen,data,$data,schema,parentSchema,schemaCode,it}=cxt;if(!$data&&!schema)return;let valid=gen.let("valid"),itemTypes=parentSchema.items?(0,dataType_1.getSchemaTypes)(parentSchema.items):[];cxt.block$data(valid,validateUniqueItems,(0,codegen_1._)`${schemaCode} === false`),cxt.ok(valid);function validateUniqueItems(){let i=gen.let("i",(0,codegen_1._)`${data}.length`),j=gen.let("j");cxt.setParams({i,j}),gen.assign(valid,!0),gen.if((0,codegen_1._)`${i} > 1`,()=>(canOptimize()?loopN:loopN2)(i,j))}function canOptimize(){return itemTypes.length>0&&!itemTypes.some(t=>t==="object"||t==="array")}function loopN(i,j){let item=gen.name("item"),wrongType=(0,dataType_1.checkDataTypes)(itemTypes,item,it.opts.strictNumbers,dataType_1.DataType.Wrong),indices=gen.const("indices",(0,codegen_1._)`{}`);gen.for((0,codegen_1._)`;${i}--;`,()=>{gen.let(item,(0,codegen_1._)`${data}[${i}]`),gen.if(wrongType,(0,codegen_1._)`continue`),itemTypes.length>1&&gen.if((0,codegen_1._)`typeof ${item} == "string"`,(0,codegen_1._)`${item} += "_"`),gen.if((0,codegen_1._)`typeof ${indices}[${item}] == "number"`,()=>{gen.assign(j,(0,codegen_1._)`${indices}[${item}]`),cxt.error(),gen.assign(valid,!1).break()}).code((0,codegen_1._)`${indices}[${item}] = ${i}`)})}function loopN2(i,j){let eql=(0,util_1.useFunc)(gen,equal_1.default),outer=gen.name("outer");gen.label(outer).for((0,codegen_1._)`;${i}--;`,()=>gen.for((0,codegen_1._)`${j} = ${i}; ${j}--;`,()=>gen.if((0,codegen_1._)`${eql}(${data}[${i}], ${data}[${j}])`,()=>{cxt.error(),gen.assign(valid,!1).break(outer)})))}}};exports.default=def})),require_const=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),equal_1=require_equal(),def={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode})=>(0,codegen_1._)`{allowedValue: ${schemaCode}}`},code(cxt){let{gen,data,$data,schemaCode,schema}=cxt;$data||schema&&typeof schema=="object"?cxt.fail$data((0,codegen_1._)`!${(0,util_1.useFunc)(gen,equal_1.default)}(${data}, ${schemaCode})`):cxt.fail((0,codegen_1._)`${schema} !== ${data}`)}};exports.default=def})),require_enum=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),equal_1=require_equal(),def={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode})=>(0,codegen_1._)`{allowedValues: ${schemaCode}}`},code(cxt){let{gen,data,$data,schema,schemaCode,it}=cxt;if(!$data&&schema.length===0)throw new Error("enum must have non-empty array");let useLoop=schema.length>=it.opts.loopEnum,eql,getEql=()=>eql??(eql=(0,util_1.useFunc)(gen,equal_1.default)),valid;if(useLoop||$data)valid=gen.let("valid"),cxt.block$data(valid,loopEnum);else{if(!Array.isArray(schema))throw new Error("ajv implementation error");let vSchema=gen.const("vSchema",schemaCode);valid=(0,codegen_1.or)(...schema.map((_x,i)=>equalCode(vSchema,i)))}cxt.pass(valid);function loopEnum(){gen.assign(valid,!1),gen.forOf("v",schemaCode,v=>gen.if((0,codegen_1._)`${getEql()}(${data}, ${v})`,()=>gen.assign(valid,!0).break()))}function equalCode(vSchema,i){let sch=schema[i];return typeof sch=="object"&&sch!==null?(0,codegen_1._)`${getEql()}(${data}, ${vSchema}[${i}])`:(0,codegen_1._)`${data} === ${sch}`}}};exports.default=def})),require_validation$2=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let limitNumber_1=require_limitNumber(),multipleOf_1=require_multipleOf(),limitLength_1=require_limitLength(),pattern_1=require_pattern(),limitProperties_1=require_limitProperties(),required_1=require_required(),limitItems_1=require_limitItems(),uniqueItems_1=require_uniqueItems(),const_1=require_const(),enum_1=require_enum(),validation=[limitNumber_1.default,multipleOf_1.default,limitLength_1.default,pattern_1.default,limitProperties_1.default,required_1.default,limitItems_1.default,uniqueItems_1.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},const_1.default,enum_1.default];exports.default=validation})),require_additionalItems=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateAdditionalItems=void 0;let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{parentSchema,it}=cxt,{items}=parentSchema;if(!Array.isArray(items)){(0,util_1.checkStrictMode)(it,'"additionalItems" is ignored when "items" is not an array of schemas');return}validateAdditionalItems(cxt,items)}};function validateAdditionalItems(cxt,items){let{gen,schema,data,keyword,it}=cxt;it.items=!0;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(schema===!1)cxt.setParams({len:items.length}),cxt.pass((0,codegen_1._)`${len} <= ${items.length}`);else if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.var("valid",(0,codegen_1._)`${len} <= ${items.length}`);gen.if((0,codegen_1.not)(valid),()=>validateItems(valid)),cxt.ok(valid)}function validateItems(valid){gen.forRange("i",items.length,len,i=>{cxt.subschema({keyword,dataProp:i,dataPropType:util_1.Type.Num},valid),it.allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())})}}exports.validateAdditionalItems=validateAdditionalItems,exports.default=def})),require_items=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateTuple=void 0;let codegen_1=require_codegen(),util_1=require_util(),code_1=require_code(),def={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(cxt){let{schema,it}=cxt;if(Array.isArray(schema))return validateTuple(cxt,"additionalItems",schema);it.items=!0,!(0,util_1.alwaysValidSchema)(it,schema)&&cxt.ok((0,code_1.validateArray)(cxt))}};function validateTuple(cxt,extraItems,schArr=cxt.schema){let{gen,parentSchema,data,keyword,it}=cxt;checkStrictTuple(parentSchema),it.opts.unevaluated&&schArr.length&&it.items!==!0&&(it.items=util_1.mergeEvaluated.items(gen,schArr.length,it.items));let valid=gen.name("valid"),len=gen.const("len",(0,codegen_1._)`${data}.length`);schArr.forEach((sch,i)=>{(0,util_1.alwaysValidSchema)(it,sch)||(gen.if((0,codegen_1._)`${len} > ${i}`,()=>cxt.subschema({keyword,schemaProp:i,dataProp:i},valid)),cxt.ok(valid))});function checkStrictTuple(sch){let{opts,errSchemaPath}=it,l=schArr.length,fullTuple=l===sch.minItems&&(l===sch.maxItems||sch[extraItems]===!1);if(opts.strictTuples&&!fullTuple){let msg=`"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`;(0,util_1.checkStrictMode)(it,msg,opts.strictTuples)}}}exports.validateTuple=validateTuple,exports.default=def})),require_prefixItems=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let items_1=require_items(),def={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:cxt=>(0,items_1.validateTuple)(cxt,"items")};exports.default=def})),require_items2020=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),code_1=require_code(),additionalItems_1=require_additionalItems(),def={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{schema,parentSchema,it}=cxt,{prefixItems}=parentSchema;it.items=!0,!(0,util_1.alwaysValidSchema)(it,schema)&&(prefixItems?(0,additionalItems_1.validateAdditionalItems)(cxt,prefixItems):cxt.ok((0,code_1.validateArray)(cxt)))}};exports.default=def})),require_contains=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min,max}})=>max===void 0?(0,codegen_1.str)`must contain at least ${min} valid item(s)`:(0,codegen_1.str)`must contain at least ${min} and no more than ${max} valid item(s)`,params:({params:{min,max}})=>max===void 0?(0,codegen_1._)`{minContains: ${min}}`:(0,codegen_1._)`{minContains: ${min}, maxContains: ${max}}`},code(cxt){let{gen,schema,parentSchema,data,it}=cxt,min,max,{minContains,maxContains}=parentSchema;it.opts.next?(min=minContains===void 0?1:minContains,max=maxContains):min=1;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(cxt.setParams({min,max}),max===void 0&&min===0){(0,util_1.checkStrictMode)(it,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(max!==void 0&&min>max){(0,util_1.checkStrictMode)(it,'"minContains" > "maxContains" is always invalid'),cxt.fail();return}if((0,util_1.alwaysValidSchema)(it,schema)){let cond=(0,codegen_1._)`${len} >= ${min}`;max!==void 0&&(cond=(0,codegen_1._)`${cond} && ${len} <= ${max}`),cxt.pass(cond);return}it.items=!0;let valid=gen.name("valid");max===void 0&&min===1?validateItems(valid,()=>gen.if(valid,()=>gen.break())):min===0?(gen.let(valid,!0),max!==void 0&&gen.if((0,codegen_1._)`${data}.length > 0`,validateItemsWithCount)):(gen.let(valid,!1),validateItemsWithCount()),cxt.result(valid,()=>cxt.reset());function validateItemsWithCount(){let schValid=gen.name("_valid"),count=gen.let("count",0);validateItems(schValid,()=>gen.if(schValid,()=>checkLimits(count)))}function validateItems(_valid,block){gen.forRange("i",0,len,i=>{cxt.subschema({keyword:"contains",dataProp:i,dataPropType:util_1.Type.Num,compositeRule:!0},_valid),block()})}function checkLimits(count){gen.code((0,codegen_1._)`${count}++`),max===void 0?gen.if((0,codegen_1._)`${count} >= ${min}`,()=>gen.assign(valid,!0).break()):(gen.if((0,codegen_1._)`${count} > ${max}`,()=>gen.assign(valid,!1).break()),min===1?gen.assign(valid,!0):gen.if((0,codegen_1._)`${count} >= ${min}`,()=>gen.assign(valid,!0)))}}};exports.default=def})),require_dependencies=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSchemaDeps=exports.validatePropertyDeps=exports.error=void 0;let codegen_1=require_codegen(),util_1=require_util(),code_1=require_code();exports.error={message:({params:{property,depsCount,deps}})=>{let property_ies=depsCount===1?"property":"properties";return(0,codegen_1.str)`must have ${property_ies} ${deps} when property ${property} is present`},params:({params:{property,depsCount,deps,missingProperty}})=>(0,codegen_1._)`{property: ${property},
|
|
64
|
+
missingProperty: ${missingProperty},
|
|
65
|
+
depsCount: ${depsCount},
|
|
66
|
+
deps: ${deps}}`};let def={keyword:"dependencies",type:"object",schemaType:"object",error:exports.error,code(cxt){let[propDeps,schDeps]=splitDependencies(cxt);validatePropertyDeps(cxt,propDeps),validateSchemaDeps(cxt,schDeps)}};function splitDependencies({schema}){let propertyDeps={},schemaDeps={};for(let key in schema){if(key==="__proto__")continue;let deps=Array.isArray(schema[key])?propertyDeps:schemaDeps;deps[key]=schema[key]}return[propertyDeps,schemaDeps]}function validatePropertyDeps(cxt,propertyDeps=cxt.schema){let{gen,data,it}=cxt;if(Object.keys(propertyDeps).length===0)return;let missing=gen.let("missing");for(let prop in propertyDeps){let deps=propertyDeps[prop];if(deps.length===0)continue;let hasProperty=(0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties);cxt.setParams({property:prop,depsCount:deps.length,deps:deps.join(", ")}),it.allErrors?gen.if(hasProperty,()=>{for(let depProp of deps)(0,code_1.checkReportMissingProp)(cxt,depProp)}):(gen.if((0,codegen_1._)`${hasProperty} && (${(0,code_1.checkMissingProp)(cxt,deps,missing)})`),(0,code_1.reportMissingProp)(cxt,missing),gen.else())}}exports.validatePropertyDeps=validatePropertyDeps;function validateSchemaDeps(cxt,schemaDeps=cxt.schema){let{gen,data,keyword,it}=cxt,valid=gen.name("valid");for(let prop in schemaDeps)(0,util_1.alwaysValidSchema)(it,schemaDeps[prop])||(gen.if((0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties),()=>{let schCxt=cxt.subschema({keyword,schemaProp:prop},valid);cxt.mergeValidEvaluated(schCxt,valid)},()=>gen.var(valid,!0)),cxt.ok(valid))}exports.validateSchemaDeps=validateSchemaDeps,exports.default=def})),require_propertyNames=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params})=>(0,codegen_1._)`{propertyName: ${params.propertyName}}`},code(cxt){let{gen,schema,data,it}=cxt;if((0,util_1.alwaysValidSchema)(it,schema))return;let valid=gen.name("valid");gen.forIn("key",data,key=>{cxt.setParams({propertyName:key}),cxt.subschema({keyword:"propertyNames",data:key,dataTypes:["string"],propertyName:key,compositeRule:!0},valid),gen.if((0,codegen_1.not)(valid),()=>{cxt.error(!0),it.allErrors||gen.break()})}),cxt.ok(valid)}};exports.default=def})),require_additionalProperties=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code(),codegen_1=require_codegen(),names_1=require_names(),util_1=require_util(),def={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params})=>(0,codegen_1._)`{additionalProperty: ${params.additionalProperty}}`},code(cxt){let{gen,schema,parentSchema,data,errsCount,it}=cxt;if(!errsCount)throw new Error("ajv implementation error");let{allErrors,opts}=it;if(it.props=!0,opts.removeAdditional!=="all"&&(0,util_1.alwaysValidSchema)(it,schema))return;let props=(0,code_1.allSchemaProperties)(parentSchema.properties),patProps=(0,code_1.allSchemaProperties)(parentSchema.patternProperties);checkAdditionalProperties(),cxt.ok((0,codegen_1._)`${errsCount} === ${names_1.default.errors}`);function checkAdditionalProperties(){gen.forIn("key",data,key=>{!props.length&&!patProps.length?additionalPropertyCode(key):gen.if(isAdditional(key),()=>additionalPropertyCode(key))})}function isAdditional(key){let definedProp;if(props.length>8){let propsSchema=(0,util_1.schemaRefOrVal)(it,parentSchema.properties,"properties");definedProp=(0,code_1.isOwnProperty)(gen,propsSchema,key)}else props.length?definedProp=(0,codegen_1.or)(...props.map(p=>(0,codegen_1._)`${key} === ${p}`)):definedProp=codegen_1.nil;return patProps.length&&(definedProp=(0,codegen_1.or)(definedProp,...patProps.map(p=>(0,codegen_1._)`${(0,code_1.usePattern)(cxt,p)}.test(${key})`))),(0,codegen_1.not)(definedProp)}function deleteAdditional(key){gen.code((0,codegen_1._)`delete ${data}[${key}]`)}function additionalPropertyCode(key){if(opts.removeAdditional==="all"||opts.removeAdditional&&schema===!1){deleteAdditional(key);return}if(schema===!1){cxt.setParams({additionalProperty:key}),cxt.error(),allErrors||gen.break();return}if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.name("valid");opts.removeAdditional==="failing"?(applyAdditionalSchema(key,valid,!1),gen.if((0,codegen_1.not)(valid),()=>{cxt.reset(),deleteAdditional(key)})):(applyAdditionalSchema(key,valid),allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break()))}}function applyAdditionalSchema(key,valid,errors){let subschema={keyword:"additionalProperties",dataProp:key,dataPropType:util_1.Type.Str};errors===!1&&Object.assign(subschema,{compositeRule:!0,createErrors:!1,allErrors:!1}),cxt.subschema(subschema,valid)}}};exports.default=def})),require_properties=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let validate_1=require_validate(),code_1=require_code(),util_1=require_util(),additionalProperties_1=require_additionalProperties(),def={keyword:"properties",type:"object",schemaType:"object",code(cxt){let{gen,schema,parentSchema,data,it}=cxt;it.opts.removeAdditional==="all"&&parentSchema.additionalProperties===void 0&&additionalProperties_1.default.code(new validate_1.KeywordCxt(it,additionalProperties_1.default,"additionalProperties"));let allProps=(0,code_1.allSchemaProperties)(schema);for(let prop of allProps)it.definedProperties.add(prop);it.opts.unevaluated&&allProps.length&&it.props!==!0&&(it.props=util_1.mergeEvaluated.props(gen,(0,util_1.toHash)(allProps),it.props));let properties=allProps.filter(p=>!(0,util_1.alwaysValidSchema)(it,schema[p]));if(properties.length===0)return;let valid=gen.name("valid");for(let prop of properties)hasDefault(prop)?applyPropertySchema(prop):(gen.if((0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties)),applyPropertySchema(prop),it.allErrors||gen.else().var(valid,!0),gen.endIf()),cxt.it.definedProperties.add(prop),cxt.ok(valid);function hasDefault(prop){return it.opts.useDefaults&&!it.compositeRule&&schema[prop].default!==void 0}function applyPropertySchema(prop){cxt.subschema({keyword:"properties",schemaProp:prop,dataProp:prop},valid)}}};exports.default=def})),require_patternProperties=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code(),codegen_1=require_codegen(),util_1=require_util(),util_2=require_util(),def={keyword:"patternProperties",type:"object",schemaType:"object",code(cxt){let{gen,schema,data,parentSchema,it}=cxt,{opts}=it,patterns=(0,code_1.allSchemaProperties)(schema),alwaysValidPatterns=patterns.filter(p=>(0,util_1.alwaysValidSchema)(it,schema[p]));if(patterns.length===0||alwaysValidPatterns.length===patterns.length&&(!it.opts.unevaluated||it.props===!0))return;let checkProperties=opts.strictSchema&&!opts.allowMatchingProperties&&parentSchema.properties,valid=gen.name("valid");it.props!==!0&&!(it.props instanceof codegen_1.Name)&&(it.props=(0,util_2.evaluatedPropsToName)(gen,it.props));let{props}=it;validatePatternProperties();function validatePatternProperties(){for(let pat of patterns)checkProperties&&checkMatchingProperties(pat),it.allErrors?validateProperties(pat):(gen.var(valid,!0),validateProperties(pat),gen.if(valid))}function checkMatchingProperties(pat){for(let prop in checkProperties)new RegExp(pat).test(prop)&&(0,util_1.checkStrictMode)(it,`property ${prop} matches pattern ${pat} (use allowMatchingProperties)`)}function validateProperties(pat){gen.forIn("key",data,key=>{gen.if((0,codegen_1._)`${(0,code_1.usePattern)(cxt,pat)}.test(${key})`,()=>{let alwaysValid=alwaysValidPatterns.includes(pat);alwaysValid||cxt.subschema({keyword:"patternProperties",schemaProp:pat,dataProp:key,dataPropType:util_2.Type.Str},valid),it.opts.unevaluated&&props!==!0?gen.assign((0,codegen_1._)`${props}[${key}]`,!0):!alwaysValid&&!it.allErrors&&gen.if((0,codegen_1.not)(valid),()=>gen.break())})})}}};exports.default=def})),require_not=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util(),def={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(cxt){let{gen,schema,it}=cxt;if((0,util_1.alwaysValidSchema)(it,schema)){cxt.fail();return}let valid=gen.name("valid");cxt.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},valid),cxt.failResult(valid,()=>cxt.reset(),()=>cxt.error())},error:{message:"must NOT be valid"}};exports.default=def})),require_anyOf=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let def={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:require_code().validateUnion,error:{message:"must match a schema in anyOf"}};exports.default=def})),require_oneOf=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params})=>(0,codegen_1._)`{passingSchemas: ${params.passing}}`},code(cxt){let{gen,schema,parentSchema,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");if(it.opts.discriminator&&parentSchema.discriminator)return;let schArr=schema,valid=gen.let("valid",!1),passing=gen.let("passing",null),schValid=gen.name("_valid");cxt.setParams({passing}),gen.block(validateOneOf),cxt.result(valid,()=>cxt.reset(),()=>cxt.error(!0));function validateOneOf(){schArr.forEach((sch,i)=>{let schCxt;(0,util_1.alwaysValidSchema)(it,sch)?gen.var(schValid,!0):schCxt=cxt.subschema({keyword:"oneOf",schemaProp:i,compositeRule:!0},schValid),i>0&&gen.if((0,codegen_1._)`${schValid} && ${valid}`).assign(valid,!1).assign(passing,(0,codegen_1._)`[${passing}, ${i}]`).else(),gen.if(schValid,()=>{gen.assign(valid,!0),gen.assign(passing,i),schCxt&&cxt.mergeEvaluated(schCxt,codegen_1.Name)})})}}};exports.default=def})),require_allOf=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util(),def={keyword:"allOf",schemaType:"array",code(cxt){let{gen,schema,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");let valid=gen.name("valid");schema.forEach((sch,i)=>{if((0,util_1.alwaysValidSchema)(it,sch))return;let schCxt=cxt.subschema({keyword:"allOf",schemaProp:i},valid);cxt.ok(valid),cxt.mergeEvaluated(schCxt)})}};exports.default=def})),require_if=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params})=>(0,codegen_1.str)`must match "${params.ifClause}" schema`,params:({params})=>(0,codegen_1._)`{failingKeyword: ${params.ifClause}}`},code(cxt){let{gen,parentSchema,it}=cxt;parentSchema.then===void 0&&parentSchema.else===void 0&&(0,util_1.checkStrictMode)(it,'"if" without "then" and "else" is ignored');let hasThen=hasSchema(it,"then"),hasElse=hasSchema(it,"else");if(!hasThen&&!hasElse)return;let valid=gen.let("valid",!0),schValid=gen.name("_valid");if(validateIf(),cxt.reset(),hasThen&&hasElse){let ifClause=gen.let("ifClause");cxt.setParams({ifClause}),gen.if(schValid,validateClause("then",ifClause),validateClause("else",ifClause))}else hasThen?gen.if(schValid,validateClause("then")):gen.if((0,codegen_1.not)(schValid),validateClause("else"));cxt.pass(valid,()=>cxt.error(!0));function validateIf(){let schCxt=cxt.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},schValid);cxt.mergeEvaluated(schCxt)}function validateClause(keyword,ifClause){return()=>{let schCxt=cxt.subschema({keyword},schValid);gen.assign(valid,schValid),cxt.mergeValidEvaluated(schCxt,valid),ifClause?gen.assign(ifClause,(0,codegen_1._)`${keyword}`):cxt.setParams({ifClause:keyword})}}}};function hasSchema(it,keyword){let schema=it.schema[keyword];return schema!==void 0&&!(0,util_1.alwaysValidSchema)(it,schema)}exports.default=def})),require_thenElse=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util(),def={keyword:["then","else"],schemaType:["object","boolean"],code({keyword,parentSchema,it}){parentSchema.if===void 0&&(0,util_1.checkStrictMode)(it,`"${keyword}" without "if" is ignored`)}};exports.default=def})),require_applicator$2=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let additionalItems_1=require_additionalItems(),prefixItems_1=require_prefixItems(),items_1=require_items(),items2020_1=require_items2020(),contains_1=require_contains(),dependencies_1=require_dependencies(),propertyNames_1=require_propertyNames(),additionalProperties_1=require_additionalProperties(),properties_1=require_properties(),patternProperties_1=require_patternProperties(),not_1=require_not(),anyOf_1=require_anyOf(),oneOf_1=require_oneOf(),allOf_1=require_allOf(),if_1=require_if(),thenElse_1=require_thenElse();function getApplicator(draft2020=!1){let applicator=[not_1.default,anyOf_1.default,oneOf_1.default,allOf_1.default,if_1.default,thenElse_1.default,propertyNames_1.default,additionalProperties_1.default,dependencies_1.default,properties_1.default,patternProperties_1.default];return draft2020?applicator.push(prefixItems_1.default,items2020_1.default):applicator.push(additionalItems_1.default,items_1.default),applicator.push(contains_1.default),applicator}exports.default=getApplicator})),require_format$2=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),def={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must match format "${schemaCode}"`,params:({schemaCode})=>(0,codegen_1._)`{format: ${schemaCode}}`},code(cxt,ruleType){let{gen,data,$data,schema,schemaCode,it}=cxt,{opts,errSchemaPath,schemaEnv,self}=it;if(!opts.validateFormats)return;$data?validate$DataFormat():validateFormat();function validate$DataFormat(){let fmts=gen.scopeValue("formats",{ref:self.formats,code:opts.code.formats}),fDef=gen.const("fDef",(0,codegen_1._)`${fmts}[${schemaCode}]`),fType=gen.let("fType"),format=gen.let("format");gen.if((0,codegen_1._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`,()=>gen.assign(fType,(0,codegen_1._)`${fDef}.type || "string"`).assign(format,(0,codegen_1._)`${fDef}.validate`),()=>gen.assign(fType,(0,codegen_1._)`"string"`).assign(format,fDef)),cxt.fail$data((0,codegen_1.or)(unknownFmt(),invalidFmt()));function unknownFmt(){return opts.strictSchema===!1?codegen_1.nil:(0,codegen_1._)`${schemaCode} && !${format}`}function invalidFmt(){let callFormat=schemaEnv.$async?(0,codegen_1._)`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`:(0,codegen_1._)`${format}(${data})`,validData=(0,codegen_1._)`(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`;return(0,codegen_1._)`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`}}function validateFormat(){let formatDef=self.formats[schema];if(!formatDef){unknownFormat();return}if(formatDef===!0)return;let[fmtType,format,fmtRef]=getFormat(formatDef);fmtType===ruleType&&cxt.pass(validCondition());function unknownFormat(){if(opts.strictSchema===!1){self.logger.warn(unknownMsg());return}throw new Error(unknownMsg());function unknownMsg(){return`unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`}}function getFormat(fmtDef){let code2=fmtDef instanceof RegExp?(0,codegen_1.regexpCode)(fmtDef):opts.code.formats?(0,codegen_1._)`${opts.code.formats}${(0,codegen_1.getProperty)(schema)}`:void 0,fmt=gen.scopeValue("formats",{key:schema,ref:fmtDef,code:code2});return typeof fmtDef=="object"&&!(fmtDef instanceof RegExp)?[fmtDef.type||"string",fmtDef.validate,(0,codegen_1._)`${fmt}.validate`]:["string",fmtDef,fmt]}function validCondition(){if(typeof formatDef=="object"&&!(formatDef instanceof RegExp)&&formatDef.async){if(!schemaEnv.$async)throw new Error("async format in sync schema");return(0,codegen_1._)`await ${fmtRef}(${data})`}return typeof format=="function"?(0,codegen_1._)`${fmtRef}(${data})`:(0,codegen_1._)`${fmtRef}.test(${data})`}}}};exports.default=def})),require_format$1=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let format=[require_format$2().default];exports.default=format})),require_metadata=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.contentVocabulary=exports.metadataVocabulary=void 0,exports.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],exports.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]})),require_draft7=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let core_1=require_core$2(),validation_1=require_validation$2(),applicator_1=require_applicator$2(),format_1=require_format$1(),metadata_1=require_metadata(),draft7Vocabularies=[core_1.default,validation_1.default,(0,applicator_1.default)(),format_1.default,metadata_1.metadataVocabulary,metadata_1.contentVocabulary];exports.default=draft7Vocabularies})),require_types=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.DiscrError=void 0;var DiscrError;(function(DiscrError2){DiscrError2.Tag="tag",DiscrError2.Mapping="mapping"})(DiscrError||(exports.DiscrError=DiscrError={}))})),require_discriminator=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),types_1=require_types(),compile_1=require_compile(),ref_error_1=require_ref_error(),util_1=require_util(),def={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError,tagName}})=>discrError===types_1.DiscrError.Tag?`tag "${tagName}" must be string`:`value of tag "${tagName}" must be in oneOf`,params:({params:{discrError,tag,tagName}})=>(0,codegen_1._)`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`},code(cxt){let{gen,data,schema,parentSchema,it}=cxt,{oneOf}=parentSchema;if(!it.opts.discriminator)throw new Error("discriminator: requires discriminator option");let tagName=schema.propertyName;if(typeof tagName!="string")throw new Error("discriminator: requires propertyName");if(schema.mapping)throw new Error("discriminator: mapping is not supported");if(!oneOf)throw new Error("discriminator: requires oneOf keyword");let valid=gen.let("valid",!1),tag=gen.const("tag",(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(tagName)}`);gen.if((0,codegen_1._)`typeof ${tag} == "string"`,()=>validateMapping(),()=>cxt.error(!1,{discrError:types_1.DiscrError.Tag,tag,tagName})),cxt.ok(valid);function validateMapping(){let mapping=getMapping();gen.if(!1);for(let tagValue in mapping)gen.elseIf((0,codegen_1._)`${tag} === ${tagValue}`),gen.assign(valid,applyTagSchema(mapping[tagValue]));gen.else(),cxt.error(!1,{discrError:types_1.DiscrError.Mapping,tag,tagName}),gen.endIf()}function applyTagSchema(schemaProp){let _valid=gen.name("valid"),schCxt=cxt.subschema({keyword:"oneOf",schemaProp},_valid);return cxt.mergeEvaluated(schCxt,codegen_1.Name),_valid}function getMapping(){var _a3;let oneOfMapping={},topRequired=hasRequired(parentSchema),tagRequired=!0;for(let i=0;i<oneOf.length;i++){let sch=oneOf[i];if(sch?.$ref&&!(0,util_1.schemaHasRulesButRef)(sch,it.self.RULES)){let ref=sch.$ref;if(sch=compile_1.resolveRef.call(it.self,it.schemaEnv.root,it.baseId,ref),sch instanceof compile_1.SchemaEnv&&(sch=sch.schema),sch===void 0)throw new ref_error_1.default(it.opts.uriResolver,it.baseId,ref)}let propSch=(_a3=sch?.properties)===null||_a3===void 0?void 0:_a3[tagName];if(typeof propSch!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${tagName}"`);tagRequired=tagRequired&&(topRequired||hasRequired(sch)),addMappings(propSch,i)}if(!tagRequired)throw new Error(`discriminator: "${tagName}" must be required`);return oneOfMapping;function hasRequired({required:required2}){return Array.isArray(required2)&&required2.includes(tagName)}function addMappings(sch,i){if(sch.const)addMapping(sch.const,i);else if(sch.enum)for(let tagValue of sch.enum)addMapping(tagValue,i);else throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`)}function addMapping(tagValue,i){if(typeof tagValue!="string"||tagValue in oneOfMapping)throw new Error(`discriminator: "${tagName}" values must be unique strings`);oneOfMapping[tagValue]=i}}}};exports.default=def})),require_json_schema_draft_07=__commonJSMin(((exports,module)=>{module.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}})),require_ajv=__commonJSMin(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv=void 0;let core_1=require_core$3(),draft7_1=require_draft7(),discriminator_1=require_discriminator(),draft7MetaSchema=require_json_schema_draft_07(),META_SUPPORT_DATA=["/properties"],META_SCHEMA_ID="http://json-schema.org/draft-07/schema";var Ajv3=class extends core_1.default{_addVocabularies(){super._addVocabularies(),draft7_1.default.forEach(v=>this.addVocabulary(v)),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let metaSchema=this.opts.$data?this.$dataMetaSchema(draft7MetaSchema,META_SUPPORT_DATA):draft7MetaSchema;this.addMetaSchema(metaSchema,META_SCHEMA_ID,!1),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv=Ajv3,module.exports=exports=Ajv3,module.exports.Ajv=Ajv3,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv3;var validate_1=require_validate();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_dynamicAnchor=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.dynamicAnchor=void 0;let codegen_1=require_codegen(),names_1=require_names(),compile_1=require_compile(),ref_1=require_ref(),def={keyword:"$dynamicAnchor",schemaType:"string",code:cxt=>dynamicAnchor(cxt,cxt.schema)};function dynamicAnchor(cxt,anchor2){let{gen,it}=cxt;it.schemaEnv.root.dynamicAnchors[anchor2]=!0;let v=(0,codegen_1._)`${names_1.default.dynamicAnchors}${(0,codegen_1.getProperty)(anchor2)}`,validate2=it.errSchemaPath==="#"?it.validateName:_getValidate(cxt);gen.if((0,codegen_1._)`!${v}`,()=>gen.assign(v,validate2))}exports.dynamicAnchor=dynamicAnchor;function _getValidate(cxt){let{schemaEnv,schema,self}=cxt.it,{root,baseId,localRefs,meta:meta2}=schemaEnv.root,{schemaId}=self.opts,sch=new compile_1.SchemaEnv({schema,schemaId,root,baseId,localRefs,meta:meta2});return compile_1.compileSchema.call(self,sch),(0,ref_1.getValidate)(cxt,sch)}exports.default=def})),require_dynamicRef=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.dynamicRef=void 0;let codegen_1=require_codegen(),names_1=require_names(),ref_1=require_ref(),def={keyword:"$dynamicRef",schemaType:"string",code:cxt=>dynamicRef(cxt,cxt.schema)};function dynamicRef(cxt,ref){let{gen,keyword,it}=cxt;if(ref[0]!=="#")throw new Error(`"${keyword}" only supports hash fragment reference`);let anchor2=ref.slice(1);if(it.allErrors)_dynamicRef();else{let valid=gen.let("valid",!1);_dynamicRef(valid),cxt.ok(valid)}function _dynamicRef(valid){if(it.schemaEnv.root.dynamicAnchors[anchor2]){let v=gen.let("_v",(0,codegen_1._)`${names_1.default.dynamicAnchors}${(0,codegen_1.getProperty)(anchor2)}`);gen.if(v,_callRef(v,valid),_callRef(it.validateName,valid))}else _callRef(it.validateName,valid)()}function _callRef(validate2,valid){return valid?()=>gen.block(()=>{(0,ref_1.callRef)(cxt,validate2),gen.let(valid,!0)}):()=>(0,ref_1.callRef)(cxt,validate2)}}exports.dynamicRef=dynamicRef,exports.default=def})),require_recursiveAnchor=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicAnchor_1=require_dynamicAnchor(),util_1=require_util(),def={keyword:"$recursiveAnchor",schemaType:"boolean",code(cxt){cxt.schema?(0,dynamicAnchor_1.dynamicAnchor)(cxt,""):(0,util_1.checkStrictMode)(cxt.it,"$recursiveAnchor: false is ignored")}};exports.default=def})),require_recursiveRef=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicRef_1=require_dynamicRef(),def={keyword:"$recursiveRef",schemaType:"string",code:cxt=>(0,dynamicRef_1.dynamicRef)(cxt,cxt.schema)};exports.default=def})),require_dynamic=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicAnchor_1=require_dynamicAnchor(),dynamicRef_1=require_dynamicRef(),recursiveAnchor_1=require_recursiveAnchor(),recursiveRef_1=require_recursiveRef(),dynamic=[dynamicAnchor_1.default,dynamicRef_1.default,recursiveAnchor_1.default,recursiveRef_1.default];exports.default=dynamic})),require_dependentRequired=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependencies_1=require_dependencies(),def={keyword:"dependentRequired",type:"object",schemaType:"object",error:dependencies_1.error,code:cxt=>(0,dependencies_1.validatePropertyDeps)(cxt)};exports.default=def})),require_dependentSchemas=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependencies_1=require_dependencies(),def={keyword:"dependentSchemas",type:"object",schemaType:"object",code:cxt=>(0,dependencies_1.validateSchemaDeps)(cxt)};exports.default=def})),require_limitContains=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util(),def={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword,parentSchema,it}){parentSchema.contains===void 0&&(0,util_1.checkStrictMode)(it,`"${keyword}" without "contains" is ignored`)}};exports.default=def})),require_next=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependentRequired_1=require_dependentRequired(),dependentSchemas_1=require_dependentSchemas(),limitContains_1=require_limitContains(),next=[dependentRequired_1.default,dependentSchemas_1.default,limitContains_1.default];exports.default=next})),require_unevaluatedProperties=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),names_1=require_names(),def={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:{message:"must NOT have unevaluated properties",params:({params})=>(0,codegen_1._)`{unevaluatedProperty: ${params.unevaluatedProperty}}`},code(cxt){let{gen,schema,data,errsCount,it}=cxt;if(!errsCount)throw new Error("ajv implementation error");let{allErrors,props}=it;props instanceof codegen_1.Name?gen.if((0,codegen_1._)`${props} !== true`,()=>gen.forIn("key",data,key=>gen.if(unevaluatedDynamic(props,key),()=>unevaluatedPropCode(key)))):props!==!0&&gen.forIn("key",data,key=>props===void 0?unevaluatedPropCode(key):gen.if(unevaluatedStatic(props,key),()=>unevaluatedPropCode(key))),it.props=!0,cxt.ok((0,codegen_1._)`${errsCount} === ${names_1.default.errors}`);function unevaluatedPropCode(key){if(schema===!1){cxt.setParams({unevaluatedProperty:key}),cxt.error(),allErrors||gen.break();return}if(!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.name("valid");cxt.subschema({keyword:"unevaluatedProperties",dataProp:key,dataPropType:util_1.Type.Str},valid),allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())}}function unevaluatedDynamic(evaluatedProps,key){return(0,codegen_1._)`!${evaluatedProps} || !${evaluatedProps}[${key}]`}function unevaluatedStatic(evaluatedProps,key){let ps=[];for(let p in evaluatedProps)evaluatedProps[p]===!0&&ps.push((0,codegen_1._)`${key} !== ${p}`);return(0,codegen_1.and)(...ps)}}};exports.default=def})),require_unevaluatedItems=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen(),util_1=require_util(),def={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{gen,schema,data,it}=cxt,items=it.items||0;if(items===!0)return;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(schema===!1)cxt.setParams({len:items}),cxt.fail((0,codegen_1._)`${len} > ${items}`);else if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.var("valid",(0,codegen_1._)`${len} <= ${items}`);gen.if((0,codegen_1.not)(valid),()=>validateItems(valid,items)),cxt.ok(valid)}it.items=!0;function validateItems(valid,from){gen.forRange("i",from,len,i=>{cxt.subschema({keyword:"unevaluatedItems",dataProp:i,dataPropType:util_1.Type.Num},valid),it.allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())})}}};exports.default=def})),require_unevaluated$1=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let unevaluatedProperties_1=require_unevaluatedProperties(),unevaluatedItems_1=require_unevaluatedItems(),unevaluated=[unevaluatedProperties_1.default,unevaluatedItems_1.default];exports.default=unevaluated})),require_schema$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/schema",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format"},{$ref:"meta/content"}],type:["object","boolean"],properties:{definitions:{$comment:"While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.",type:"object",additionalProperties:{$recursiveRef:"#"},default:{}},dependencies:{$comment:'"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"',type:"object",additionalProperties:{anyOf:[{$recursiveRef:"#"},{$ref:"meta/validation#/$defs/stringArray"}]}}}}})),require_applicator$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{additionalItems:{$recursiveRef:"#"},unevaluatedItems:{$recursiveRef:"#"},items:{anyOf:[{$recursiveRef:"#"},{$ref:"#/$defs/schemaArray"}]},contains:{$recursiveRef:"#"},additionalProperties:{$recursiveRef:"#"},unevaluatedProperties:{$recursiveRef:"#"},properties:{type:"object",additionalProperties:{$recursiveRef:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$recursiveRef:"#"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$recursiveRef:"#"}},propertyNames:{$recursiveRef:"#"},if:{$recursiveRef:"#"},then:{$recursiveRef:"#"},else:{$recursiveRef:"#"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$recursiveRef:"#"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$recursiveRef:"#"}}}}})),require_content$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/content",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentMediaType:{type:"string"},contentEncoding:{type:"string"},contentSchema:{$recursiveRef:"#"}}}})),require_core$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/core",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{type:"string",format:"uri"},$anchor:{type:"string",pattern:"^[A-Za-z][-A-Za-z0-9.:_]*$"},$ref:{type:"string",format:"uri-reference"},$recursiveRef:{type:"string",format:"uri-reference"},$recursiveAnchor:{type:"boolean",default:!1},$vocabulary:{type:"object",propertyNames:{type:"string",format:"uri"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$recursiveRef:"#"},default:{}}}}})),require_format=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/format",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:"Format vocabulary meta-schema",type:["object","boolean"],properties:{format:{type:"string"}}}})),require_meta_data$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}})),require_validation$1=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/validation",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}},const:!0,enum:{type:"array",items:!0},type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}})),require_json_schema_2019_09=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let metaSchema=require_schema$1(),applicator=require_applicator$1(),content=require_content$1(),core=require_core$1(),format=require_format(),metadata=require_meta_data$1(),validation=require_validation$1(),META_SUPPORT_DATA=["/properties"];function addMetaSchema2019($data){return[metaSchema,applicator,content,core,with$data(this,format),metadata,with$data(this,validation)].forEach(sch=>this.addMetaSchema(sch,void 0,!1)),this;function with$data(ajv,sch){return $data?ajv.$dataMetaSchema(sch,META_SUPPORT_DATA):sch}}exports.default=addMetaSchema2019})),require__2019=__commonJSMin(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv2019=void 0;let core_1=require_core$3(),draft7_1=require_draft7(),dynamic_1=require_dynamic(),next_1=require_next(),unevaluated_1=require_unevaluated$1(),discriminator_1=require_discriminator(),json_schema_2019_09_1=require_json_schema_2019_09(),META_SCHEMA_ID="https://json-schema.org/draft/2019-09/schema";var Ajv2019=class extends core_1.default{constructor(opts={}){super({...opts,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(dynamic_1.default),draft7_1.default.forEach(v=>this.addVocabulary(v)),this.addVocabulary(next_1.default),this.addVocabulary(unevaluated_1.default),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data,meta:meta2}=this.opts;meta2&&(json_schema_2019_09_1.default.call(this,$data),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv2019=Ajv2019,module.exports=exports=Ajv2019,module.exports.Ajv2019=Ajv2019,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv2019;var validate_1=require_validate();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_draft2020=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let core_1=require_core$2(),validation_1=require_validation$2(),applicator_1=require_applicator$2(),dynamic_1=require_dynamic(),next_1=require_next(),unevaluated_1=require_unevaluated$1(),format_1=require_format$1(),metadata_1=require_metadata(),draft2020Vocabularies=[dynamic_1.default,core_1.default,validation_1.default,(0,applicator_1.default)(!0),format_1.default,metadata_1.metadataVocabulary,metadata_1.contentVocabulary,next_1.default,unevaluated_1.default];exports.default=draft2020Vocabularies})),require_schema=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}})),require_applicator=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}})),require_unevaluated=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}})),require_content=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}})),require_core=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}})),require_format_annotation=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}})),require_meta_data=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}})),require_validation=__commonJSMin(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}})),require_json_schema_2020_12=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let metaSchema=require_schema(),applicator=require_applicator(),unevaluated=require_unevaluated(),content=require_content(),core=require_core(),format=require_format_annotation(),metadata=require_meta_data(),validation=require_validation(),META_SUPPORT_DATA=["/properties"];function addMetaSchema2020($data){return[metaSchema,applicator,unevaluated,content,core,with$data(this,format),metadata,with$data(this,validation)].forEach(sch=>this.addMetaSchema(sch,void 0,!1)),this;function with$data(ajv,sch){return $data?ajv.$dataMetaSchema(sch,META_SUPPORT_DATA):sch}}exports.default=addMetaSchema2020})),require__2020=__commonJSMin(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv2020=void 0;let core_1=require_core$3(),draft2020_1=require_draft2020(),discriminator_1=require_discriminator(),json_schema_2020_12_1=require_json_schema_2020_12(),META_SCHEMA_ID="https://json-schema.org/draft/2020-12/schema";var Ajv2020=class extends core_1.default{constructor(opts={}){super({...opts,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),draft2020_1.default.forEach(v=>this.addVocabulary(v)),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data,meta:meta2}=this.opts;meta2&&(json_schema_2020_12_1.default.call(this,$data),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv2020=Ajv2020,module.exports=exports=Ajv2020,module.exports.Ajv2020=Ajv2020,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv2020;var validate_1=require_validate();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_formats=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatNames=exports.fastFormats=exports.fullFormats=void 0;function fmtDef(validate2,compare){return{validate:validate2,compare}}exports.fullFormats={date:fmtDef(date4,compareDate),time:fmtDef(getTime(!0),compareTime),"date-time":fmtDef(getDateTime(!0),compareDateTime),"iso-time":fmtDef(getTime(),compareIsoTime),"iso-date-time":fmtDef(getDateTime(),compareIsoDateTime),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte,int32:{type:"number",validate:validateInt32},int64:{type:"number",validate:validateInt64},float:{type:"number",validate:validateNumber},double:{type:"number",validate:validateNumber},password:!0,binary:!0},exports.fastFormats={...exports.fullFormats,date:fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,compareDate),time:fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareTime),"date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareDateTime),"iso-time":fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoTime),"iso-date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoDateTime),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},exports.formatNames=Object.keys(exports.fullFormats);function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}let DATE=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,DAYS=[0,31,28,31,30,31,30,31,31,30,31,30,31];function date4(str2){let matches=DATE.exec(str2);if(!matches)return!1;let year=+matches[1],month=+matches[2],day=+matches[3];return month>=1&&month<=12&&day>=1&&day<=(month===2&&isLeapYear(year)?29:DAYS[month])}function compareDate(d1,d2){if(d1&&d2)return d1>d2?1:d1<d2?-1:0}let TIME=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function getTime(strictTimeZone){return function(str2){let matches=TIME.exec(str2);if(!matches)return!1;let hr=+matches[1],min=+matches[2],sec=+matches[3],tz=matches[4],tzSign=matches[5]==="-"?-1:1,tzH=+(matches[6]||0),tzM=+(matches[7]||0);if(tzH>23||tzM>59||strictTimeZone&&!tz)return!1;if(hr<=23&&min<=59&&sec<60)return!0;let utcMin=min-tzM*tzSign,utcHr=hr-tzH*tzSign-(utcMin<0?1:0);return(utcHr===23||utcHr===-1)&&(utcMin===59||utcMin===-1)&&sec<61}}function compareTime(s1,s2){if(!(s1&&s2))return;let t1=new Date("2020-01-01T"+s1).valueOf(),t2=new Date("2020-01-01T"+s2).valueOf();if(t1&&t2)return t1-t2}function compareIsoTime(t1,t2){if(!(t1&&t2))return;let a1=TIME.exec(t1),a2=TIME.exec(t2);if(a1&&a2)return t1=a1[1]+a1[2]+a1[3],t2=a2[1]+a2[2]+a2[3],t1>t2?1:t1<t2?-1:0}let DATE_TIME_SEPARATOR=/t|\s/i;function getDateTime(strictTimeZone){let time3=getTime(strictTimeZone);return function(str2){let dateTime=str2.split(DATE_TIME_SEPARATOR);return dateTime.length===2&&date4(dateTime[0])&&time3(dateTime[1])}}function compareDateTime(dt1,dt2){if(!(dt1&&dt2))return;let d1=new Date(dt1).valueOf(),d2=new Date(dt2).valueOf();if(d1&&d2)return d1-d2}function compareIsoDateTime(dt1,dt2){if(!(dt1&&dt2))return;let[d1,t1]=dt1.split(DATE_TIME_SEPARATOR),[d2,t2]=dt2.split(DATE_TIME_SEPARATOR),res=compareDate(d1,d2);if(res!==void 0)return res||compareTime(t1,t2)}let NOT_URI_FRAGMENT=/\/|:/,URI=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function uri(str2){return NOT_URI_FRAGMENT.test(str2)&&URI.test(str2)}let BYTE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function byte(str2){return BYTE.lastIndex=0,BYTE.test(str2)}let MIN_INT32=-(2**31),MAX_INT32=2**31-1;function validateInt32(value){return Number.isInteger(value)&&value<=MAX_INT32&&value>=MIN_INT32}function validateInt64(value){return Number.isInteger(value)}function validateNumber(){return!0}let Z_ANCHOR=/[^\\]\\Z/;function regex(str2){if(Z_ANCHOR.test(str2))return!1;try{return new RegExp(str2),!0}catch{return!1}}})),require_limit=__commonJSMin((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatLimitDefinition=void 0;let ajv_1=require_ajv(),codegen_1=require_codegen(),ops=codegen_1.operators,KWDs={formatMaximum:{okStr:"<=",ok:ops.LTE,fail:ops.GT},formatMinimum:{okStr:">=",ok:ops.GTE,fail:ops.LT},formatExclusiveMaximum:{okStr:"<",ok:ops.LT,fail:ops.GTE},formatExclusiveMinimum:{okStr:">",ok:ops.GT,fail:ops.LTE}},error2={message:({keyword,schemaCode})=>(0,codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`,params:({keyword,schemaCode})=>(0,codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`};exports.formatLimitDefinition={keyword:Object.keys(KWDs),type:"string",schemaType:"string",$data:!0,error:error2,code(cxt){let{gen,data,schemaCode,keyword,it}=cxt,{opts,self}=it;if(!opts.validateFormats)return;let fCxt=new ajv_1.KeywordCxt(it,self.RULES.all.format.definition,"format");fCxt.$data?validate$DataFormat():validateFormat();function validate$DataFormat(){let fmts=gen.scopeValue("formats",{ref:self.formats,code:opts.code.formats}),fmt=gen.const("fmt",(0,codegen_1._)`${fmts}[${fCxt.schemaCode}]`);cxt.fail$data((0,codegen_1.or)((0,codegen_1._)`typeof ${fmt} != "object"`,(0,codegen_1._)`${fmt} instanceof RegExp`,(0,codegen_1._)`typeof ${fmt}.compare != "function"`,compareCode(fmt)))}function validateFormat(){let format=fCxt.schema,fmtDef=self.formats[format];if(!fmtDef||fmtDef===!0)return;if(typeof fmtDef!="object"||fmtDef instanceof RegExp||typeof fmtDef.compare!="function")throw new Error(`"${keyword}": format "${format}" does not define "compare" function`);let fmt=gen.scopeValue("formats",{key:format,ref:fmtDef,code:opts.code.formats?(0,codegen_1._)`${opts.code.formats}${(0,codegen_1.getProperty)(format)}`:void 0});cxt.fail$data(compareCode(fmt))}function compareCode(fmt){return(0,codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`}},dependencies:["format"]};let formatLimitPlugin=ajv=>(ajv.addKeyword(exports.formatLimitDefinition),ajv);exports.default=formatLimitPlugin})),require_dist=__commonJSMin(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0});let formats_1=require_formats(),limit_1=require_limit(),codegen_1=require_codegen(),fullName=new codegen_1.Name("fullFormats"),fastName=new codegen_1.Name("fastFormats"),formatsPlugin=(ajv,opts={keywords:!0})=>{if(Array.isArray(opts))return addFormats3(ajv,opts,formats_1.fullFormats,fullName),ajv;let[formats,exportName]=opts.mode==="fast"?[formats_1.fastFormats,fastName]:[formats_1.fullFormats,fullName];return addFormats3(ajv,opts.formats||formats_1.formatNames,formats,exportName),opts.keywords&&(0,limit_1.default)(ajv),ajv};formatsPlugin.get=(name2,mode="full")=>{let f2=(mode==="fast"?formats_1.fastFormats:formats_1.fullFormats)[name2];if(!f2)throw new Error(`Unknown format "${name2}"`);return f2};function addFormats3(ajv,list,fs,exportName){var _a3,_b;(_a3=(_b=ajv.opts.code).formats)!==null&&_a3!==void 0||(_b.formats=(0,codegen_1._)`require("ajv-formats/dist/formats").${exportName}`);for(let f2 of list)ajv.addFormat(f2,fs[f2])}module.exports=exports=formatsPlugin,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=formatsPlugin})),import_ajv=require_ajv(),import__2019=require__2019(),import__2020=require__2020(),import_dist=__toESM(require_dist(),1),addFormats=import_dist.default;function createDefaultAjvInstance(engineClass){let ajv=new engineClass({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return addFormats(ajv),ajv}var AjvJsonSchemaValidator=class{_ajv;_ajvDraft7;_ajv2019;_userAjv;constructor(ajv){this._userAjv=ajv!==void 0,this._ajv=ajv}get ajv(){return this._ajv??=createDefaultAjvInstance(import__2020.Ajv2020)}_engineFor(schema){if(this._userAjv)return this.ajv;let dialect=declaredDialect(schema,"pass a pre-configured Ajv instance to AjvJsonSchemaValidator(ajv) to validate other dialects.");return dialect==="2020-12"?this.ajv:dialect==="2019-09"?this._ajv2019??=createDefaultAjvInstance(import__2019.Ajv2019):this._ajvDraft7??=createDefaultAjvInstance(import_ajv.Ajv)}getValidator(schema){let engine=this._engineFor(schema),ajvValidator="$id"in schema&&typeof schema.$id=="string"?engine.getSchema(schema.$id)??engine.compile(schema):engine.compile(schema);return input=>ajvValidator(input)?{valid:!0,data:input,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:engine.errorsText(ajvValidator.errors)}}},Ajv=import_ajv.Ajv;var crypto2;crypto2=globalThis.crypto?.webcrypto??globalThis.crypto??import("node:crypto").then(m=>m.webcrypto);var OAuthClientFlowError=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.OAuthClientFlowError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(message){super(message),this.name=new.target.name,stampErrorBrands(this,new.target)}},IssuerMismatchError=class extends OAuthClientFlowError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.IssuerMismatchError"})}kind;expected;received;constructor(kind,expected,received){super(`Issuer mismatch in ${kind==="metadata"?"authorization server metadata (RFC 8414 \xA73.3)":"authorization response (RFC 9207)"}: expected ${JSON.stringify(expected)}, received ${JSON.stringify(received)}`),this.kind=kind,this.expected=expected,this.received=received}},RegistrationRejectedError=class extends OAuthClientFlowError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.RegistrationRejectedError"})}status;body;submittedMetadata;constructor(args){super(`Dynamic Client Registration rejected (HTTP ${args.status}): ${args.body}`),this.status=args.status,this.body=args.body,this.submittedMetadata=args.submittedMetadata}},InsecureTokenEndpointError=class extends OAuthClientFlowError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.InsecureTokenEndpointError"})}tokenEndpoint;constructor(tokenEndpoint){super(`Refusing to send credentials to non-https token endpoint '${tokenEndpoint}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`),this.tokenEndpoint=tokenEndpoint}},AuthorizationServerMismatchError=class extends OAuthClientFlowError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.AuthorizationServerMismatchError"})}constructor(recordedIssuer,currentIssuer){super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(recordedIssuer)} but this call resolved ${JSON.stringify(currentIssuer)}; refusing to present them to a different authorization server`),this.recordedIssuer=recordedIssuer,this.currentIssuer=currentIssuer}},InsufficientScopeError=class extends OAuthClientFlowError{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.InsufficientScopeError"})}requiredScope;resourceMetadataUrl;errorDescription;constructor(init){super(`Insufficient scope${init.requiredScope?`: required "${init.requiredScope}"`:""}`),this.requiredScope=init.requiredScope,this.resourceMetadataUrl=init.resourceMetadataUrl,this.errorDescription=init.errorDescription}};var UnauthorizedError=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.UnauthorizedError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(message){super(message??"Unauthorized"),this.name="UnauthorizedError",stampErrorBrands(this,new.target)}};var CAP_EXEMPT_METHODS=new Set(["tools/list","prompts/list","resources/list","resources/templates/list","server/discover"]),InMemoryResponseCacheStore=class{_entries=new Map;_maxEntries;_stamp=0;_cappedSize=0;constructor(options){this._maxEntries=options?.maxEntries??512}get size(){return this._entries.size}get(key){return this._entries.get(keyOf(key))}set(key,entry){let k=keyOf(key),exempt=CAP_EXEMPT_METHODS.has(key.method),isNew=!this._entries.has(k);if(!exempt&&isNew&&this._maxEntries>0&&this._cappedSize>=this._maxEntries){for(let oldKey of this._entries.keys())if(!CAP_EXEMPT_METHODS.has(oldKey.slice(0,oldKey.indexOf("\0")))){this._entries.delete(oldKey),this._cappedSize--;break}}let stamp=++this._stamp;return this._entries.set(k,{...entry,stamp}),isNew&&!exempt&&this._cappedSize++,stamp}delete(key){this._entries.delete(keyOf(key))&&!CAP_EXEMPT_METHODS.has(key.method)&&this._cappedSize--}evict(method){let prefix=`${method}\0`,exempt=CAP_EXEMPT_METHODS.has(method);for(let k of this._entries.keys())k.startsWith(prefix)&&(this._entries.delete(k),exempt||this._cappedSize--)}clear(){this._entries.clear(),this._cappedSize=0}};function keyOf(key){return`${key.method}\0${JSON.stringify([key.partition??"",key.params??""])}`}function genKey(method,params){return params===void 0?method:`${method}\0${params}`}var MAX_CACHE_TTL_MS=864e5,ClientResponseCache=class{_evictionGeneration=new Map;_toolIndex;_toolOutputValidatorIndex;_serverIdentity="";constructor(_store,_isUserSupplied,_reportError=()=>{},_cachePartition="",_now=Date.now){this._store=_store,this._isUserSupplied=_isUserSupplied,this._reportError=_reportError,this._cachePartition=_cachePartition,this._now=_now}now(){return this._now()}setServerIdentity(identity){this._serverIdentity=identity}_partitionFor(scope2){return JSON.stringify([this._serverIdentity,scope2==="public"?"":this._cachePartition])}async _probe(method,params){let key={method,params:params??""},ownPartition=this._partitionFor("private"),own2=await this._store.get({...key,partition:ownPartition});if(own2!==void 0)return own2;let sharedPartition=this._partitionFor("public");if(sharedPartition===ownPartition)return;let shared=await this._store.get({...key,partition:sharedPartition});return shared?.scope==="public"?shared:void 0}async evict(method){this._evictionGeneration.set(method,(this._evictionGeneration.get(method)??0)+1),await this._deleteBoth(method,"")}async _deleteBoth(method,params){let ownPartition=this._partitionFor("private"),sharedPartition=this._partitionFor("public");try{await this._store.delete({method,params,partition:ownPartition})}catch(error2){this._reportError(error2)}if(sharedPartition!==ownPartition)try{await this._store.delete({method,params,partition:sharedPartition})}catch(error2){this._reportError(error2)}}async evictKey(method,params){let gk=genKey(method,params),current=this._evictionGeneration.get(gk);current!==void 0&&this._evictionGeneration.set(gk,current+1),await this._deleteBoth(method,params)}captureGeneration(method,params){let gk=genKey(method,params),current=this._evictionGeneration.get(gk)??0;return this._evictionGeneration.set(gk,current),current}async write(method,value,capturedGen,freshness){if((this._evictionGeneration.get(genKey(method,freshness?.params))??0)!==capturedGen)return;let params=freshness?.params??"",ownPartition=this._partitionFor("private"),sharedPartition=this._partitionFor("public"),partition=(freshness?.scope??"private")==="public"?sharedPartition:ownPartition;try{await this._store.set({method,params,partition},{value:encodeCacheValue(value),expiresAt:freshness?.expiresAt,scope:freshness?.scope})}catch(error2){this._reportError(error2)}if(sharedPartition!==ownPartition)try{await this._store.delete({method,params,partition:partition===ownPartition?sharedPartition:ownPartition})}catch(error2){this._reportError(error2)}}async read(method,params){let entry=await this._probe(method,params);if(!(entry?.expiresAt===void 0||!(entry.expiresAt>this.now())))try{let parsed=JSON.parse(entry.value);if(typeof parsed!="object"||parsed===null||Array.isArray(parsed))throw new TypeError("cached document is not an object");return{value:parsed}}catch(error2){this._reportError(error2),await this._deleteBoth(method,params??"");return}}resetForReconnect(){this._isUserSupplied||this._store.clear(),this._evictionGeneration.clear(),this._toolIndex=void 0,this._toolOutputValidatorIndex=void 0,this._serverIdentity=""}async toolDefinition(name2){let entry=await this._probe("tools/list");if(entry===void 0){this._toolIndex=void 0;return}if(this._toolIndex?.stamp!==entry.stamp){let list=this._decodeListTools(entry),byName2=new Map;if(list!==void 0)for(let tool of list.tools)byName2.set(tool.name,tool);this._toolIndex={stamp:entry.stamp,byName:byName2}}return this._toolIndex.byName.get(name2)}async outputValidator(name2,compile2){let entry=await this._probe("tools/list");if(entry===void 0){this._toolOutputValidatorIndex=void 0;return}if(this._toolOutputValidatorIndex?.stamp!==entry.stamp){let list=this._decodeListTools(entry)??{tools:[]},byName2=new Map;for(let tool of list.tools){let compiled=compile2(tool);compiled!==void 0&&byName2.set(tool.name,compiled)}this._toolOutputValidatorIndex={stamp:entry.stamp,byName:byName2}}return this._toolOutputValidatorIndex.byName.get(name2)}_decodeListTools(entry){try{let parsed=JSON.parse(entry.value);if(!Array.isArray(parsed?.tools)||!parsed.tools.every(t=>t!==null&&typeof t=="object"))throw new TypeError("cached tools/list document has a malformed tools array");return parsed}catch(error2){this._reportError(error2);return}}};function encodeCacheValue(value){let json;try{json=JSON.stringify(value)}catch(error2){throw new TypeError(`cache value is not JSON-serializable: ${error2 instanceof Error?error2.message:String(error2)}`)}if(typeof json!="string")throw new TypeError("cache value is not JSON-serializable: it has no JSON representation");return json}var AUTH_SEAM=Symbol.for("mcp.authSeamEscape");function isAuthSeamEscape(error2){return(typeof error2=="object"&&error2!==null||typeof error2=="function")&&error2[AUTH_SEAM]===!0}var UNSUPPORTED_PROTOCOL_VERSION=-32022,NOT_PROBE_RECOGNIZED=new Set([-32001,-32020,-32021]);function classifyProbeOutcome(outcome,context){switch(outcome.kind){case"result":return classifyResult(outcome.result,context);case"rpc-error":return classifyRpcError(outcome,context);case"http-error":return classifyHttpError(outcome,context);case"network-error":return classifyNetworkError(outcome.error,context);case"unusable-reply":return{kind:"error",error:new SdkError(SdkErrorCode.EraNegotiationFailed,`Version negotiation probe failed: the server answered with an unusable reply (${describeError(outcome.error)})`,{cause:outcome.error},{cause:outcome.error})};case"auth-required":return{kind:"error",error:outcome.error};case"closed":return context.transportKind==="stdio"?{kind:"legacy"}:classifyNetworkError(new Error("Connection closed during the version negotiation probe"),context);case"timeout":return context.transportKind==="stdio"?{kind:"legacy"}:{kind:"error",error:new SdkError(SdkErrorCode.RequestTimeout,`Version negotiation probe timed out after ${outcome.timeoutMs}ms`,{timeout:outcome.timeoutMs})}}}function classifyResult(result2,context){let parsed=codecForVersion(MODERN_WIRE_REVISION).validateResult("server/discover",result2);if(!parsed.ok)return{kind:"legacy"};let supportedVersions=parsed.value.supportedVersions,overlap=context.clientModernVersions.find(version2=>supportedVersions.includes(version2));return overlap!==void 0?{kind:"modern",version:overlap,discover:parsed.value}:context.fallbackAvailable?{kind:"legacy"}:{kind:"error",error:new UnsupportedProtocolVersionError({supported:[...supportedVersions],requested:context.requestedVersion})}}function classifyRpcError(outcome,context){let{code:code2,message,data}=outcome;if(code2===UNSUPPORTED_PROTOCOL_VERSION){let supported=parseSupportedList(data);if(supported===void 0)return{kind:"legacy"};let error2=new UnsupportedProtocolVersionError({supported,requested:parseRequested(data)??context.requestedVersion},message),supportedModern=modernProtocolVersions(supported),mutual=context.clientModernVersions.find(version2=>supportedModern.includes(version2));return mutual!==void 0?{kind:"corrective",version:mutual,error:error2}:supportedModern.length>0?{kind:"error",error:error2}:context.fallbackAvailable?{kind:"legacy"}:{kind:"error",error:error2}}return NOT_PROBE_RECOGNIZED.has(code2)?{kind:"legacy"}:{kind:"legacy"}}function classifyHttpError(outcome,context){if(outcome.status===401||outcome.status===403){let isDenial=outcome.status===403;return{kind:"error",error:new SdkHttpError(isDenial?SdkErrorCode.ClientHttpForbidden:SdkErrorCode.ClientHttpAuthentication,`Version negotiation failed: ${isDenial?"the server denied access (HTTP 403)":"the server requires authorization (HTTP 401)"}`,{status:outcome.status,statusText:outcome.statusText,text:outcome.body})}}if(outcome.status>=500)return{kind:"error",error:new SdkHttpError(SdkErrorCode.EraNegotiationFailed,`Version negotiation failed: the server answered the probe with HTTP ${outcome.status}`,{status:outcome.status,statusText:outcome.statusText,text:outcome.body})};let rpcError=parseJsonRpcErrorBody(outcome.body);return rpcError!==void 0?classifyRpcError(rpcError,context):{kind:"legacy"}}function classifyNetworkError(error2,context){return context.environment==="browser"&&isOpaqueFetchTypeError(error2)?{kind:"legacy"}:{kind:"error",error:new SdkError(SdkErrorCode.EraNegotiationFailed,`Version negotiation probe failed: ${describeError(error2)}`,{cause:error2},{cause:error2})}}function isOpaqueFetchTypeError(error2){return error2 instanceof TypeError||error2 instanceof Error&&error2.name==="TypeError"}function describeError(error2){return error2 instanceof Error?error2.message:String(error2)}function parseSupportedList(data){if(typeof data!="object"||data===null)return;let supported=data.supported;if(!(!Array.isArray(supported)||supported.length===0||!supported.every(v=>typeof v=="string")))return supported}function parseRequested(data){if(typeof data!="object"||data===null)return;let requested=data.requested;return typeof requested=="string"?requested:void 0}function parseJsonRpcErrorBody(body){if(body===void 0||body==="")return;let parsed;try{parsed=JSON.parse(body)}catch{return}if(typeof parsed!="object"||parsed===null)return;let error2=parsed.error;if(typeof error2!="object"||error2===null)return;let{code:code2,message,data}=error2;if(typeof code2=="number")return{code:code2,message:typeof message=="string"?message:"",data}}var DEFAULT_VERSION_NEGOTIATION_MODE="legacy";function resolveVersionNegotiation(options,supportedProtocolVersionsOption){let mode=options?.mode??DEFAULT_VERSION_NEGOTIATION_MODE;if(mode==="legacy")return{kind:"legacy"};let probe=options?.probe??{};if(typeof mode=="object"){if(!isModernProtocolVersion(mode.pin))throw new TypeError(`versionNegotiation: { pin: '${mode.pin}' } is not a modern protocol revision \u2014 pinning is for 2026-07-28 and later; omit versionNegotiation (or use mode: 'legacy') for 2025-era servers.`);return{kind:"pin",version:mode.pin,probe}}let explicitModern=supportedProtocolVersionsOption?modernProtocolVersions(supportedProtocolVersionsOption):[];return{kind:"auto",modernVersions:explicitModern.length>0?explicitModern:[...SUPPORTED_MODERN_PROTOCOL_VERSIONS],fallbackAvailable:supportedProtocolVersionsOption?legacyProtocolVersions(supportedProtocolVersionsOption).length>0:!0,probe}}function detectProbeEnvironment(){let g=globalThis;return g.window!==void 0&&g.document!==void 0?"browser":"node"}function detectProbeTransportKind(transport){return"stderr"in transport&&"pid"in transport?"stdio":"http"}var ProbeWindow=class ProbeWindow2{_pending;_probeCounter=0;_savedOnMessage;_savedOnError;_savedOnClose;_closeDelivered=!1;constructor(_transport){this._transport=_transport,this._savedOnMessage=_transport.onmessage,this._savedOnError=_transport.onerror,this._savedOnClose=_transport.onclose}static async open(transport){let window=new ProbeWindow2(transport);transport.onmessage=message=>{let pending=window._pending;if(pending!==void 0&&(isJSONRPCResultResponse(message)||isJSONRPCErrorResponse(message))&&message.id===pending.id){window._pending=void 0,isJSONRPCResultResponse(message)?pending.resolve({kind:"response",result:message.result}):pending.resolve({kind:"response",error:message.error});return}},transport.onerror=error2=>{window._savedOnError?.(error2)},transport.onclose=()=>{let pending=window._pending;pending!==void 0&&(window._pending=void 0,pending.resolve({kind:"closed"})),window._closeDelivered=!0,window._savedOnClose?.()};try{await transport.start()}catch(error2){throw window.detach(),error2}return window}async exchange(buildRequest,timeoutMs){let id=`server-discover-probe-${++this._probeCounter}`;return new Promise(resolve=>{let settled=!1,settle2=reply=>{settled||(settled=!0,clearTimeout(timer),this._pending?.id===id&&(this._pending=void 0),resolve(reply))},timer=setTimeout(()=>settle2({kind:"timeout"}),timeoutMs);this._pending={id,resolve:settle2},this._transport.send(buildRequest(id)).catch(error2=>settle2({kind:"send-error",error:error2}))})}detach(){if(this._pending=void 0,this._transport.onmessage=this._savedOnMessage,this._transport.onerror=this._savedOnError,this._closeDelivered&&this._savedOnClose!==void 0){let saved=this._savedOnClose,transport=this._transport,spent=!1,wrapper=()=>{if(!spent){spent=!0;return}saved()};transport.onclose=wrapper,pendingSpentCloseGuards.set(transport,()=>{transport.onclose===wrapper&&(transport.onclose=saved)})}else this._transport.onclose=this._savedOnClose}release(){this.detach();let transport=this._transport,originalStart=transport.start,armed=!0;transport.start=async function(){if(armed){armed=!1,transport.start=originalStart;return}return originalStart.call(transport)}}},pendingSpentCloseGuards=new WeakMap;function disarmSpentCloseGuard(transport){let disarm=pendingSpentCloseGuards.get(transport);pendingSpentCloseGuards.delete(transport),disarm?.()}function buildProbeRequest(id,protocolVersion,clientInfo,capabilities){return{jsonrpc:"2.0",id,method:"server/discover",params:{_meta:codecForVersion(protocolVersion).outboundEnvelope({protocolVersion,clientInfo,clientCapabilities:capabilities})}}}function isUnusableReplyError(error2){return error2 instanceof SdkError&&error2.code===SdkErrorCode.ClientHttpUnexpectedContent?!0:error2 instanceof Error&&error2.name==="SyntaxError"}function normalizeReply(reply,timeoutMs){switch(reply.kind){case"response":return reply.error===void 0?{kind:"result",result:reply.result}:{kind:"rpc-error",...reply.error};case"send-error":{let error2=reply.error;if(isAuthSeamEscape(error2)||error2 instanceof UnauthorizedError||error2 instanceof Error&&error2.name==="UnauthorizedError")return{kind:"auth-required",error:error2};if(error2 instanceof SdkHttpError){let text2=error2.data?.text;return{kind:"http-error",status:error2.data.status,body:typeof text2=="string"?text2:void 0,statusText:error2.data.statusText}}return isUnusableReplyError(error2)?{kind:"unusable-reply",error:error2}:{kind:"network-error",error:error2}}case"closed":return{kind:"closed"};case"timeout":return{kind:"timeout",timeoutMs}}}async function negotiateEra(negotiation,deps){let timeoutMs=negotiation.probe.timeoutMs??deps.defaultTimeoutMs,maxRetries=Math.max(0,negotiation.probe.maxRetries??0),clientModernVersions=negotiation.kind==="pin"?[negotiation.version]:negotiation.modernVersions,fallbackAvailable=negotiation.kind==="auto"&&negotiation.fallbackAvailable,window=await ProbeWindow.open(deps.transport),probe=async()=>{let requestedVersion=clientModernVersions[0],correctiveUsed=!1,timeoutRetriesRemaining=maxRetries;for(;;){let reply=await window.exchange(id=>buildProbeRequest(id,requestedVersion,deps.clientInfo,deps.capabilities),timeoutMs);if(reply.kind==="timeout"&&timeoutRetriesRemaining>0){timeoutRetriesRemaining--;continue}let outcome=normalizeReply(reply,timeoutMs),verdict=classifyProbeOutcome(outcome,{clientModernVersions,requestedVersion,fallbackAvailable,environment:deps.environment,transportKind:deps.transportKind});switch(verdict.kind){case"modern":return{era:"modern",version:verdict.version,discover:verdict.discover};case"corrective":if(correctiveUsed)throw verdict.error;correctiveUsed=!0,requestedVersion=verdict.version;continue;case"legacy":{let closedCause=outcome.kind==="closed"?"the connection closed during the server/discover probe":void 0;if(negotiation.kind==="pin")throw new SdkError(SdkErrorCode.EraNegotiationFailed,closedCause===void 0?`Version negotiation failed: the server did not offer pinned protocol version ${negotiation.version} via server/discover (no fallback in pin mode)`:`Version negotiation failed: ${closedCause} before the server offered pinned protocol version ${negotiation.version} (no fallback in pin mode)`);if(!negotiation.fallbackAvailable)throw new SdkError(SdkErrorCode.EraNegotiationFailed,closedCause===void 0?"Version negotiation failed: the server gave no modern evidence and this client supports no pre-2026-07-28 protocol version to fall back to":`Version negotiation failed: ${closedCause} and this client supports no pre-2026-07-28 protocol version to fall back to`);if(closedCause!==void 0&&deps.disposableProbe!==!0)throw new SdkError(SdkErrorCode.EraNegotiationFailed,`Version negotiation failed: ${closedCause} (this transport probed in place \u2014 the disposable sibling probe requires the SDK's base StdioClientTransport)`);return{era:"legacy"}}case"error":throw verdict.error}}},result2;try{result2=await probe()}catch(error2){throw window.detach(),error2}return window.release(),result2}function readStdioServerParams(transport){let proto=Object.getPrototypeOf(transport);if(proto===null||!Object.prototype.hasOwnProperty.call(proto,"_dispose"))return;let params=transport._serverParams;return typeof params=="object"&¶ms!==null&&typeof params.command=="string"?params:void 0}async function negotiateStdioViaSibling(negotiation,sessionTransport,params,deps){let SiblingTransport=sessionTransport.constructor,sibling=new SiblingTransport({...params,stderr:"ignore"}),originalClose=sessionTransport.close,callerClosed=!1,signalClosed,closedSignal=new Promise((_,reject)=>{signalClosed=()=>reject(callerCloseAbortError())});sessionTransport.close=async function(){return callerClosed=!0,signalClosed?.(),originalClose.call(sessionTransport)};let result2;try{let negotiated=negotiateEra(negotiation,{...deps,transport:sibling,transportKind:"stdio",disposableProbe:!0});negotiated.catch(()=>{}),result2=await Promise.race([negotiated,closedSignal])}finally{await disposeSibling(sibling),sessionTransport.close=originalClose}if(callerClosed)throw callerCloseAbortError();return result2}function callerCloseAbortError(){return new SdkError(SdkErrorCode.EraNegotiationFailed,"Version negotiation failed: the transport was closed during the server/discover probe")}async function disposeSibling(sibling){try{let dispose=sibling._dispose;await(typeof dispose=="function"?dispose.call(sibling):sibling.close())}catch{}}function serverInfoFromDiscover(discover){let fromMeta=discover._meta?.[SERVER_INFO_META_KEY];return isSpecType.Implementation(fromMeta)?fromMeta:void 0}function applyElicitationDefaults(schema,data){if(!(!schema||data===null||typeof data!="object")){if(schema.type==="object"&&schema.properties&&typeof schema.properties=="object"){let obj=data,props=schema.properties;for(let key of Object.keys(props)){let propSchema=props[key];obj[key]===void 0&&Object.prototype.hasOwnProperty.call(propSchema,"default")&&(obj[key]=propSchema.default),obj[key]!==void 0&&applyElicitationDefaults(propSchema,obj[key])}}if(Array.isArray(schema.anyOf))for(let sub of schema.anyOf)typeof sub!="boolean"&&applyElicitationDefaults(sub,data);if(Array.isArray(schema.oneOf))for(let sub of schema.oneOf)typeof sub!="boolean"&&applyElicitationDefaults(sub,data)}}function getSupportedElicitationModes(capabilities){if(!capabilities)return{supportsFormMode:!1,supportsUrlMode:!1};let hasFormCapability=capabilities.form!==void 0,hasUrlCapability=capabilities.url!==void 0;return{supportsFormMode:hasFormCapability||!hasFormCapability&&!hasUrlCapability,supportsUrlMode:hasUrlCapability}}function validatePrior(prior){if(typeof prior=="object"&&prior!==null&&(prior.kind==="legacy"&&!("supportedVersions"in prior)&&!("discover"in prior)||prior.kind==="modern"&&DiscoverResultSchema.safeParse(prior.discover).success))return prior;throw new SdkError(SdkErrorCode.EraNegotiationFailed,"connect({ prior }): unrecognized prior \u2014 expected { kind: 'modern', discover } or { kind: 'legacy' }")}var LIST_CHANGED_EVICTIONS={"notifications/tools/list_changed":["tools/list"],"notifications/prompts/list_changed":["prompts/list"],"notifications/resources/list_changed":["resources/list","resources/templates/list"]},DEFAULT_LIST_MAX_PAGES=64,clientInternals={},Client=class extends Protocol{_serverCapabilities;_serverVersion;_capabilities;_instructions;_jsonSchemaValidator;_cache;_defaultCacheTtlMs;_listMaxPages;_listChangedDebounceTimers=new Map;_listChangedConfig;_enforceStrictCapabilities;_versionNegotiation;_supportedProtocolVersionsOption;_inputRequiredDriverConfig;_listenState=new Map;_nextListenId=0;_autoOpenedSubscription;_discoverResult;static{clientInternals.enforceStrictCapabilities=client=>client._enforceStrictCapabilities,clientInternals.walkPages=(client,method,fetchPage,items)=>client._walkPages(method,fetchPage,items),clientInternals.readResource=(client,params,options)=>client._readResource(params,options)}_resetConnectionState(){if(this._negotiatedProtocolVersion=void 0,this._serverCapabilities=void 0,this._serverVersion=void 0,this._instructions=void 0,this._discoverResult=void 0,this._autoOpenedSubscription=void 0,this._listenState.size>0){let reason=new SdkError(SdkErrorCode.ConnectionClosed,"subscriptions/listen: client reconnected or closed; subscription state from the previous connection was reset");for(let entry of this._listenState.values())entry.settle({cause:"remote",error:reason})}this._listenState.clear();for(let timer of this._listChangedDebounceTimers.values())clearTimeout(timer);this._listChangedDebounceTimers.clear(),this._cache.resetForReconnect()}async close(){try{await super.close()}finally{this._resetConnectionState()}}constructor(_clientInfo,options){super(options),this._clientInfo=_clientInfo,this._capabilities=options?.capabilities?{...options.capabilities}:{},this._jsonSchemaValidator=options?.jsonSchemaValidator??new AjvJsonSchemaValidator,this._enforceStrictCapabilities=options?.enforceStrictCapabilities??!1,this._versionNegotiation=options?.versionNegotiation,this._supportedProtocolVersionsOption=options?.supportedProtocolVersions,this._inputRequiredDriverConfig=resolveInputRequiredDriverConfig(options?.inputRequired),this._cache=new ClientResponseCache(options?.responseCacheStore??new InMemoryResponseCacheStore,options?.responseCacheStore!==void 0,error2=>this._reportStoreError(error2),options?.cachePartition??""),this._defaultCacheTtlMs=options?.defaultCacheTtlMs??0,this._listMaxPages=options?.listMaxPages??DEFAULT_LIST_MAX_PAGES,options?.listChanged&&(this._listChangedConfig=options.listChanged)}buildContext(ctx,_transportInfo){return ctx}_shouldDropInbound(message){if(this._negotiatedProtocolVersion!==void 0&&isModernProtocolVersion(this._negotiatedProtocolVersion)&&isJSONRPCRequest(message))return"drop"}_outboundMetaEnvelope(){let version2=this._negotiatedProtocolVersion;if(version2!==void 0)return this._wireCodec().outboundEnvelope({protocolVersion:version2,clientInfo:this._clientInfo,clientCapabilities:this._capabilities})}_resolveNonCompleteResult(decoded,flow){return this._inputRequiredDriverConfig.autoFulfill?runInputRequiredFlow({getRequestHandler:method=>this._getRequestHandler(method),buildContext:baseCtx=>this.buildContext(baseCtx,void 0),sessionId:this.transport?.sessionId},this._inputRequiredDriverConfig,decoded,flow):Promise.reject(new SdkError(SdkErrorCode.UnsupportedResultType,`Unsupported result type 'input_required' for ${flow.request.method}: multi-round-trip auto-fulfilment is not enabled on this instance \u2014 pass allowInputRequired: true to handle it manually, or enable inputRequired.autoFulfill`,{resultType:"input_required",method:flow.request.method}))}_setupListChangedHandlers(config2){config2.tools&&this._serverCapabilities?.tools?.listChanged&&this._setupListChangedHandler("tools","notifications/tools/list_changed",config2.tools,async()=>(await this.listTools(void 0,{cacheMode:"refresh"})).tools),config2.prompts&&this._serverCapabilities?.prompts?.listChanged&&this._setupListChangedHandler("prompts","notifications/prompts/list_changed",config2.prompts,async()=>(await this.listPrompts(void 0,{cacheMode:"refresh"})).prompts),config2.resources&&this._serverCapabilities?.resources?.listChanged&&this._setupListChangedHandler("resources","notifications/resources/list_changed",config2.resources,async()=>(await this.listResources(void 0,{cacheMode:"refresh"})).resources)}registerCapabilities(capabilities){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=mergeCapabilities(this._capabilities,capabilities)}setVersionNegotiation(options){if(this.transport)throw new Error("Cannot configure version negotiation after connecting to transport");this._versionNegotiation=options}_wrapHandler(method,handler){return method==="elicitation/create"?async(request,ctx)=>{let codec=codecForVersion(this._negotiatedProtocolVersion),validatedRequest=codec.validateRequest("elicitation/create",request);if(!validatedRequest.ok&&validatedRequest.reason==="not-in-era"&&(validatedRequest=codec.validateInputRequest("elicitation/create",request)),!validatedRequest.ok)throw new ProtocolError(validatedRequest.reason==="not-in-era"?ProtocolErrorCode.InternalError:ProtocolErrorCode.InvalidParams,validatedRequest.reason==="not-in-era"?"No wire schema for elicitation/create in the resolved era":`Invalid elicitation request: ${validatedRequest.message}`);let{params}=validatedRequest.value;params.mode=params.mode??"form";let{supportsFormMode,supportsUrlMode}=getSupportedElicitationModes(this._capabilities.elicitation);if(params.mode==="form"&&!supportsFormMode)throw new ProtocolError(ProtocolErrorCode.InvalidParams,"Client does not support form-mode elicitation requests");if(params.mode==="url"&&!supportsUrlMode)throw new ProtocolError(ProtocolErrorCode.InvalidParams,"Client does not support URL-mode elicitation requests");let result2=await handler(request,ctx),validationResult=codec.validateResult("elicitation/create",result2);if(!validationResult.ok&&validationResult.reason==="not-in-era"&&(validationResult=codec.validateInputResponse("elicitation/create",result2)),!validationResult.ok)throw new ProtocolError(validationResult.reason==="not-in-era"?ProtocolErrorCode.InternalError:ProtocolErrorCode.InvalidParams,validationResult.reason==="not-in-era"?"No wire schema for elicitation/create in the resolved era":`Invalid elicitation result: ${validationResult.message}`);let validatedResult=validationResult.value,requestedSchema=params.mode==="form"?params.requestedSchema:void 0;if(params.mode==="form"&&validatedResult.action==="accept"&&validatedResult.content&&requestedSchema&&this._capabilities.elicitation?.form?.applyDefaults)try{applyElicitationDefaults(requestedSchema,validatedResult.content)}catch{}return validatedResult}:method==="sampling/createMessage"?async(request,ctx)=>{let codec=codecForVersion(this._negotiatedProtocolVersion),validatedRequest=codec.validateRequest("sampling/createMessage",request);if(!validatedRequest.ok&&validatedRequest.reason==="not-in-era"&&(validatedRequest=codec.validateInputRequest("sampling/createMessage",request)),!validatedRequest.ok)throw new ProtocolError(validatedRequest.reason==="not-in-era"?ProtocolErrorCode.InternalError:ProtocolErrorCode.InvalidParams,validatedRequest.reason==="not-in-era"?"No wire schema for sampling/createMessage in the resolved era":`Invalid sampling request: ${validatedRequest.message}`);let{params}=validatedRequest.value,result2=await handler(request,ctx),hasTools=!!(params.tools||params.toolChoice),validatedResult=codec.samplingResultVariant(hasTools,result2);if(!validatedResult.ok&&validatedResult.reason==="not-in-era"&&(validatedResult=codec.validateInputResponse("sampling/createMessage",result2)),!validatedResult.ok)throw new ProtocolError(validatedResult.reason==="not-in-era"?ProtocolErrorCode.InternalError:ProtocolErrorCode.InvalidParams,validatedResult.reason==="not-in-era"?"No result schema for sampling/createMessage in the resolved era":`Invalid sampling result: ${validatedResult.message}`);return validatedResult.value}:handler}assertCapability(capability,method){if(!this._serverCapabilities?.[capability])throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support ${capability} (required for ${method})`)}async connect(transport,options){if(options?.prior!=null)return this._connectFromPrior(transport,validatePrior(options.prior),options);let negotiation=resolveVersionNegotiation(this._versionNegotiation,this._supportedProtocolVersionsOption);return negotiation.kind!=="legacy"?this._connectNegotiated(transport,negotiation,options):this._connectPlainLegacy(transport,options)}async _connectPlainLegacy(transport,options){if(await super.connect(transport),transport.sessionId!==void 0){let negotiatedProtocolVersion=this._negotiatedProtocolVersion;negotiatedProtocolVersion!==void 0&&transport.setProtocolVersion?.(negotiatedProtocolVersion);return}this._resetConnectionState(),await this._legacyHandshake(transport,options)}async _legacyHandshake(transport,options){let legacyVersions=legacyProtocolVersions(this._supportedProtocolVersions);try{let offeredVersion=legacyVersions[0];if(offeredVersion===void 0)throw new SdkError(SdkErrorCode.EraNegotiationFailed,"Cannot run the initialize handshake: supportedProtocolVersions contains no pre-2026-07-28 protocol version");let result2=await this.request({method:"initialize",params:{protocolVersion:offeredVersion,capabilities:this._capabilities,clientInfo:this._clientInfo}},options);if(result2===void 0)throw new Error(`Server sent invalid initialize result: ${result2}`);if(!legacyVersions.includes(result2.protocolVersion))throw new Error(`Server's protocol version is not supported: ${result2.protocolVersion}`);this._serverCapabilities=result2.capabilities,this._serverVersion=result2.serverInfo,this._cache.setServerIdentity(this._deriveServerIdentity(transport)),transport.setProtocolVersion&&transport.setProtocolVersion(result2.protocolVersion),this._instructions=result2.instructions,await this.notification({method:"notifications/initialized"}),this._negotiatedProtocolVersion=result2.protocolVersion,this._listChangedConfig&&this._setupListChangedHandlers(this._listChangedConfig)}catch(error2){throw this.close(),error2}}async _connectNegotiated(transport,negotiation,options){if(transport.sessionId!==void 0){await super.connect(transport);let negotiatedProtocolVersion=this._negotiatedProtocolVersion;negotiatedProtocolVersion!==void 0&&transport.setProtocolVersion&&transport.setProtocolVersion(negotiatedProtocolVersion);return}this._resetConnectionState();let result2;try{let transportKind=detectProbeTransportKind(transport),baseDeps={clientInfo:this._clientInfo,capabilities:this._capabilities,environment:detectProbeEnvironment(),defaultTimeoutMs:options?.timeout??DEFAULT_REQUEST_TIMEOUT_MSEC},stdioParams=transportKind==="stdio"?readStdioServerParams(transport):void 0;result2=stdioParams===void 0?await negotiateEra(negotiation,{...baseDeps,transport,transportKind}):await negotiateStdioViaSibling(negotiation,transport,stdioParams,baseDeps)}catch(error2){throw await transport.close().catch(()=>{}),disarmSpentCloseGuard(transport),error2}if(disarmSpentCloseGuard(transport),await super.connect(transport),result2.era==="legacy"){await this._legacyHandshake(transport,options);return}if(this._serverCapabilities=result2.discover.capabilities,this._serverVersion=serverInfoFromDiscover(result2.discover),this._cache.setServerIdentity(this._deriveServerIdentity(transport)),this._instructions=result2.discover.instructions,this._discoverResult=result2.discover,this._negotiatedProtocolVersion=result2.version,transport.setProtocolVersion&&transport.setProtocolVersion(result2.version),this._listChangedConfig){let config2=this._listChangedConfig,advertised=this._serverCapabilities,effective={...config2.tools&&advertised?.tools?.listChanged&&{tools:config2.tools},...config2.prompts&&advertised?.prompts?.listChanged&&{prompts:config2.prompts},...config2.resources&&advertised?.resources?.listChanged&&{resources:config2.resources}},handlersRegistered=!0;try{this._setupListChangedHandlers(effective)}catch(error2){handlersRegistered=!1,this.onerror?.(error2 instanceof Error?error2:new Error(String(error2)))}let filter=handlersRegistered?{...effective.tools&&{toolsListChanged:!0},...effective.prompts&&{promptsListChanged:!0},...effective.resources&&{resourcesListChanged:!0}}:{};if(Object.keys(filter).length>0){let ackAbort=new AbortController,onConnectAbort=()=>ackAbort.abort(options?.signal?.reason);options?.signal?.aborted&&onConnectAbort(),options?.signal?.addEventListener("abort",onConnectAbort);try{this._autoOpenedSubscription=await this.listen(filter,{timeout:options?.timeout,signal:ackAbort.signal})}catch(error2){if(options?.signal?.aborted)throw await this.close().catch(()=>{}),error2;this.onerror?.(error2 instanceof Error?error2:new Error(String(error2)))}finally{options?.signal?.removeEventListener("abort",onConnectAbort)}}}}async _connectFromPrior(transport,prior,options){if(prior.kind==="legacy")return this._connectPlainLegacy(transport,options);let discover=prior.discover;this._resetConnectionState();let explicit=this._supportedProtocolVersionsOption,version2=(explicit&&modernProtocolVersions(explicit).length>0?modernProtocolVersions(explicit):SUPPORTED_MODERN_PROTOCOL_VERSIONS).find(v=>discover.supportedVersions.includes(v));if(version2===void 0)throw new SdkError(SdkErrorCode.EraNegotiationFailed,"connect({ prior }) with a modern verdict requires a 2026-07-28+ mutual protocol version; the supplied DiscoverResult and this client's supportedProtocolVersions have no modern overlap. For a server known to be legacy, pass prior: { kind: 'legacy' } to skip the probe and initialize directly, or use versionNegotiation: { mode: 'auto' } to re-probe with legacy fallback.");if(await super.connect(transport),this._discoverResult=discover,this._serverCapabilities=discover.capabilities,this._serverVersion=serverInfoFromDiscover(discover),this._cache.setServerIdentity(this._deriveServerIdentity(transport)),this._instructions=discover.instructions,this._negotiatedProtocolVersion=version2,transport.setProtocolVersion?.(version2),this._listChangedConfig)try{this._setupListChangedHandlers(this._listChangedConfig)}catch(error2){this.onerror?.(error2 instanceof Error?error2:new Error(String(error2)))}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}_deriveServerIdentity(transport){let v=this._serverVersion;return v!==void 0?`${v.name}@${v.version}`:transport.sessionId??`anonymous:${Date.now()}-${Math.random().toString(36).slice(2)}`}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}getProtocolEra(){let version2=this._negotiatedProtocolVersion;if(version2!==void 0)return isModernProtocolVersion(version2)?"modern":"legacy"}getInstructions(){return this._instructions}getDiscoverResult(){return this._discoverResult}assertCapabilityForMethod(method){switch(method){case"logging/setLevel":if(!this._serverCapabilities?.logging)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support logging (required for ${method})`);break;case"prompts/get":case"prompts/list":if(!this._serverCapabilities?.prompts)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support prompts (required for ${method})`);break;case"resources/list":case"resources/templates/list":case"resources/read":case"resources/subscribe":case"resources/unsubscribe":if(!this._serverCapabilities?.resources)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support resources (required for ${method})`);if(method==="resources/subscribe"&&!this._serverCapabilities.resources.subscribe)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support resource subscriptions (required for ${method})`);break;case"tools/call":case"tools/list":if(!this._serverCapabilities?.tools)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support tools (required for ${method})`);break;case"completion/complete":if(!this._serverCapabilities?.completions)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Server does not support completions (required for ${method})`);break;case"initialize":break;case"server/discover":break;case"ping":break}}assertNotificationCapability(method){switch(method){case"notifications/roots/list_changed":if(!this._capabilities.roots?.listChanged)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Client does not support roots list changed notifications (required for ${method})`);break;case"notifications/initialized":break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(method){switch(method){case"sampling/createMessage":if(!this._capabilities.sampling)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Client does not support sampling capability (required for ${method})`);break;case"elicitation/create":if(!this._capabilities.elicitation)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Client does not support elicitation capability (required for ${method})`);break;case"roots/list":if(!this._capabilities.roots)throw new SdkError(SdkErrorCode.CapabilityNotSupported,`Client does not support roots capability (required for ${method})`);break;case"ping":break}}async ping(options){return this.request({method:"ping"},options)}async discover(options){let result2=await this._requestWithSchema({method:"server/discover"},DiscoverResultSchema,options);return this._discoverResult=result2,result2}async complete(params,options){return this.request({method:"completion/complete",params},options)}async setLoggingLevel(level,options){return this.request({method:"logging/setLevel",params:{level}},options)}async getPrompt(params,options){return this.request({method:"prompts/get",params},options)}async listPrompts(params,options){if(!this._serverCapabilities?.prompts&&!this._enforceStrictCapabilities)return console.debug("Client.listPrompts() called but server does not advertise prompts capability - returning empty list"),{prompts:[]};if(params?.cursor!==void 0)return this.request({method:"prompts/list",params},options);let hit=await this._serveFromCache("prompts/list",void 0,options);return hit!==void 0?hit:this._listAllPages("prompts/list",params,options,r=>r.prompts)}async listResources(params,options){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug("Client.listResources() called but server does not advertise resources capability - returning empty list"),{resources:[]};if(params?.cursor!==void 0)return this.request({method:"resources/list",params},options);let hit=await this._serveFromCache("resources/list",void 0,options);return hit!==void 0?hit:this._listAllPages("resources/list",params,options,r=>r.resources)}async listResourceTemplates(params,options){if(!this._serverCapabilities?.resources&&!this._enforceStrictCapabilities)return console.debug("Client.listResourceTemplates() called but server does not advertise resources capability - returning empty list"),{resourceTemplates:[]};if(params?.cursor!==void 0)return this.request({method:"resources/templates/list",params},options);let hit=await this._serveFromCache("resources/templates/list",void 0,options);return hit!==void 0?hit:this._listAllPages("resources/templates/list",params,options,r=>r.resourceTemplates)}async _listAllPages(method,baseParams,options,items,finalize2){let bypass=options?.cacheMode==="bypass",generation=this._cache.captureGeneration(method),fetchPage=cursor=>{let params=cursor===void 0?baseParams&&{...baseParams}:{...baseParams,cursor};return this.request({method,...params&&{params}},options)},acc=await this._walkPages(method,fetchPage,items);return delete acc.nextCursor,finalize2?.(acc),bypass||await this._cache.write(method,acc,generation,this._freshness(acc)),acc}async _walkPages(method,fetchPage,items){let acc=await fetchPage(void 0),cursor=acc.nextCursor,previous=acc,pages=1;for(;cursor!==void 0;){if(this._listMaxPages!==0&&pages>=this._listMaxPages)throw new SdkError(SdkErrorCode.ListPaginationExceeded,`${method}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`,{method,listMaxPages:this._listMaxPages});let page=await fetchPage(cursor);if(page.nextCursor===cursor&&JSON.stringify(items(page))===JSON.stringify(items(previous)))break;items(acc).push(...items(page)),previous=page,cursor=page.nextCursor,pages++}return acc}_freshness(result2,params){let body=result2,ttlMs=typeof body.ttlMs=="number"?body.ttlMs:this._defaultCacheTtlMs,scope2=body.cacheScope==="public"?"public":"private";return{expiresAt:this._cache.now()+Math.min(Math.max(0,ttlMs),MAX_CACHE_TTL_MS),scope:scope2,params}}async _serveFromCache(method,params,options){if(options?.cacheMode==="bypass"||options?.cacheMode==="refresh")return;let hit=await this._cache.read(method,params).catch(error2=>{this._reportStoreError(error2)});if(hit!==void 0){if(options?.signal?.aborted){let reason=options.signal.reason;throw reason instanceof SdkError?reason:new SdkError(SdkErrorCode.RequestTimeout,String(reason))}return hit.value}}_reportStoreError(e){this.onerror?.(e instanceof Error?e:new Error(String(e)))}_compileOutputValidator(tool){if(tool.outputSchema)try{return{ok:!0,validator:this._jsonSchemaValidator.getValidator(tool.outputSchema)}}catch(error2){return{ok:!1,compileError:error2}}}async _resolveXMcpHeaderScan(name2,override){let tool=override??await this._cache.toolDefinition(name2);return tool===void 0?void 0:scanXMcpHeaderDeclarations(tool.inputSchema)}async readResource(params,options){let{result:result2}=await this._readResource(params,options);return result2}async _readResource(params,options){let hit=await this._serveFromCache("resources/read",params.uri,options);if(hit!==void 0)return{result:hit,cached:!0};let generation=this._cache.captureGeneration("resources/read",params.uri),result2=await this.request({method:"resources/read",params},options);if(options?.cacheMode!=="bypass"){let freshness=this._freshness(result2,params.uri);freshness.expiresAt>this._cache.now()?await this._cache.write("resources/read",result2,generation,freshness):options?.cacheMode==="refresh"&&await this._cache.evictKey("resources/read",params.uri)}return{result:result2,cached:!1}}async subscribeResource(params,options){return this.request({method:"resources/subscribe",params},options)}async unsubscribeResource(params,options){return this.request({method:"resources/unsubscribe",params},options)}async listen(filter,options){if(this.transport===void 0)throw new SdkError(SdkErrorCode.NotConnected,"Not connected");let negotiated=this._negotiatedProtocolVersion;if(negotiated===void 0||!isModernProtocolVersion(negotiated))throw new SdkError(SdkErrorCode.MethodNotSupportedByProtocolVersion,`subscriptions/listen requires a 2026-07-28-era connection (negotiated: ${negotiated??"none"}). On a 2025-era connection, change notifications are delivered unsolicited: use ClientOptions.listChanged and resources/subscribe instead.`,{method:"subscriptions/listen",protocolVersion:negotiated});if(options?.signal?.aborted){let reason=options.signal.reason;throw reason instanceof SdkError?reason:new SdkError(SdkErrorCode.RequestTimeout,String(reason))}let requestAbort=new AbortController,listenId=`listen:${this._nextListenId++}`,state="opening",ackTimer,onCallerAbort,resolveOpening,rejectOpening,opening=new Promise((resolve,reject)=>{resolveOpening=resolve,rejectOpening=reject}),resolveClosed,closed=new Promise(resolve=>{resolveClosed=resolve}),settle2=outcome=>{if(state==="closed")return;let wasOpening=state==="opening";if(ackTimer!==void 0&&(clearTimeout(ackTimer),ackTimer=void 0),"ack"in outcome){state="open",resolveOpening(outcome.ack);return}state="closed",onCallerAbort!==void 0&&options?.signal?.removeEventListener("abort",onCallerAbort),this._listenState.delete(listenId),requestAbort.abort(),resolveClosed(outcome.cause),wasOpening&&rejectOpening(outcome.error??new SdkError(SdkErrorCode.ConnectionClosed,"subscriptions/listen closed before the server acknowledged"))},wireTeardown=async()=>{requestAbort.abort(),await this.notification({method:"notifications/cancelled",params:{requestId:listenId}}).catch(()=>{})},close=async()=>{state!=="closed"&&(settle2({cause:"local"}),await wireTeardown())};this._listenState.set(listenId,{settle:settle2});let ackTimeout=options?.timeout??DEFAULT_REQUEST_TIMEOUT_MSEC;if(ackTimer=setTimeout(()=>{settle2({cause:"remote",error:new SdkError(SdkErrorCode.RequestTimeout,"subscriptions/listen ack timed out",{timeout:ackTimeout})}),wireTeardown().catch(()=>{})},ackTimeout),options?.signal){let callerSignal=options.signal;onCallerAbort=()=>{if(state==="closed")return;let reason=callerSignal.reason;settle2({cause:"local",error:reason instanceof Error?reason:new Error(String(reason??"Aborted"))}),wireTeardown().catch(()=>{})},callerSignal.addEventListener("abort",onCallerAbort,{once:!0})}let jsonrpcRequest={jsonrpc:"2.0",id:listenId,method:"subscriptions/listen",params:{_meta:{...this._outboundMetaEnvelope()},notifications:filter}},routeSendFailure=error2=>{settle2({cause:"remote",error:error2 instanceof Error?error2:new Error(String(error2))})};try{this.transport.send(jsonrpcRequest,{requestSignal:requestAbort.signal,onRequestStreamEnd:()=>settle2({cause:"remote",error:new Error("subscriptions/listen: stream ended")})}).catch(routeSendFailure)}catch(error2){routeSendFailure(error2)}return{honoredFilter:await opening,close,closed}}get autoOpenedSubscription(){return this._autoOpenedSubscription}_onnotification(raw,extra){let evicted=Object.hasOwn(LIST_CHANGED_EVICTIONS,raw.method)?LIST_CHANGED_EVICTIONS[raw.method]:void 0;if(raw.method==="notifications/resources/updated"){let uri=raw.params?.uri;typeof uri=="string"&&this._cache.evictKey("resources/read",uri)}else if(evicted!==void 0)for(let method of evicted)this._cache.evict(method);if(raw.method==="notifications/subscriptions/acknowledged"){let subscriptionId=raw.params?._meta?.[SUBSCRIPTION_ID_META_KEY],entry=typeof subscriptionId=="string"?this._listenState.get(subscriptionId):void 0;if(entry!==void 0){let honored=this._wireCodec().validateNotification("notifications/subscriptions/acknowledged",raw);entry.settle({ack:honored.ok?honored.value.params.notifications:{}});return}}if(raw.method==="notifications/cancelled"){let cancelledId=raw.params?.requestId,entry=typeof cancelledId=="string"?this._listenState.get(cancelledId):void 0;if(entry!==void 0){entry.settle({cause:"remote",error:new Error("subscriptions/listen: server cancelled the subscription")});return}}super._onnotification(raw,extra)}_onresponse(response){let id=response.id,entry=typeof id=="string"?this._listenState.get(id):void 0;if(entry!==void 0){isJSONRPCErrorResponse(response)?entry.settle({cause:"remote",error:ProtocolError.fromError(response.error.code,response.error.message,response.error.data)}):entry.settle({cause:"graceful",error:new SdkError(SdkErrorCode.ConnectionClosed,"subscriptions/listen: server closed the subscription gracefully before acknowledging")});return}super._onresponse(response)}_onclose(){if(this._listenState.size>0){let reason=new SdkError(SdkErrorCode.ConnectionClosed,"Connection closed");for(let entry of this._listenState.values())entry.settle({cause:"remote",error:reason});this._listenState.clear()}super._onclose()}async callTool(params,options){let mirroringActive=this.getProtocolEra()==="modern"&&detectProbeEnvironment()!=="browser",buildSendOptions=async()=>{if(!mirroringActive)return options;let scan;try{scan=await this._resolveXMcpHeaderScan(params.name,options?.toolDefinition)}catch(error2){this._reportStoreError(error2)}if(!scan?.valid||scan.declarations.length===0)return options;let paramHeaders=buildMcpParamHeaders(scan.declarations,params.arguments);return Object.keys(paramHeaders).length===0?options:{...options,headers:{...options?.headers,...paramHeaders}}},compiled=options?.toolDefinition===void 0?await this._cache.outputValidator(params.name,tool=>this._compileOutputValidator(tool)).catch(error2=>{this._reportStoreError(error2)}):this._compileOutputValidator(options.toolDefinition),assertCompiled=()=>{if(compiled===void 0||compiled.ok)return;let err=compiled.compileError,message=(err instanceof Error?err.message:String(err)).slice(0,200);throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Tool '${params.name}' has an invalid outputSchema: ${message}`)};assertCompiled();let result2;try{result2=await this.request({method:"tools/call",params},await buildSendOptions())}catch(error2){let isHeaderMismatch=error2 instanceof ProtocolError&&error2.code===HEADER_MISMATCH_ERROR_CODE;if(!mirroringActive||!isHeaderMismatch||options?.toolDefinition!==void 0)throw error2;let refreshOptions={signal:options?.signal,timeout:options?.timeout,cacheMode:"refresh"};await this._cache.evict("tools/list"),await this.listTools(void 0,refreshOptions).catch(error_=>this._reportStoreError(error_)),compiled=await this._cache.outputValidator(params.name,tool=>this._compileOutputValidator(tool)).catch(error_=>{this._reportStoreError(error_)}),assertCompiled(),result2=await this.request({method:"tools/call",params},await buildSendOptions())}let validator=compiled!==void 0&&compiled.ok?compiled.validator:void 0;if(validator){if(result2.structuredContent===void 0&&!result2.isError)throw new ProtocolError(ProtocolErrorCode.InvalidRequest,`Tool ${params.name} has an output schema but did not return structured content`);if(result2.structuredContent!==void 0&&!result2.isError)try{let validationResult=validator(result2.structuredContent);if(!validationResult.valid)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Structured content does not match the tool's output schema: ${validationResult.errorMessage}`)}catch(error2){throw error2 instanceof ProtocolError?error2:new ProtocolError(ProtocolErrorCode.InvalidParams,`Failed to validate structured content: ${error2 instanceof Error?error2.message:String(error2)}`)}}return result2}async listTools(params,options){if(!this._serverCapabilities?.tools&&!this._enforceStrictCapabilities)return console.debug("Client.listTools() called but server does not advertise tools capability - returning empty list"),{tools:[]};if(params?.cursor!==void 0){let page=await this.request({method:"tools/list",params},options);return this._excludeInvalidXMcpHeaderTools(page),page}let hit=await this._serveFromCache("tools/list",void 0,options);return hit!==void 0?hit:this._listAllPages("tools/list",params,options,r=>r.tools,acc=>this._excludeInvalidXMcpHeaderTools(acc))}_excludeInvalidXMcpHeaderTools(result2){if(this.getProtocolEra()!=="modern"||!this.transport||detectProbeTransportKind(this.transport)==="stdio")return;let filtered=result2.tools.filter(tool=>{let scan=scanXMcpHeaderDeclarations(tool.inputSchema);return scan.valid?!0:(console.warn(`[mcp-sdk] excluding tool '${tool.name}' from tools/list: invalid x-mcp-header declaration \u2014 ${scan.reason}`),!1)});filtered.length!==result2.tools.length&&(result2.tools=filtered)}_setupListChangedHandler(listType,notificationMethod,options,fetcher){let parseResult=parseSchema(ListChangedOptionsBaseSchema,options);if(!parseResult.success)throw new Error(`Invalid ${listType} listChanged options: ${parseResult.error.message}`);if(typeof options.onChanged!="function")throw new TypeError(`Invalid ${listType} listChanged options: onChanged must be a function`);let{autoRefresh,debounceMs}=parseResult.data,{onChanged}=options,refresh=async()=>{if(!autoRefresh){onChanged(null,null);return}try{onChanged(null,await fetcher())}catch(error2){onChanged(error2 instanceof Error?error2:new Error(String(error2)),null)}},handler=()=>{if(debounceMs){let existingTimer=this._listChangedDebounceTimers.get(listType);existingTimer&&clearTimeout(existingTimer);let timer=setTimeout(refresh,debounceMs);this._listChangedDebounceTimers.set(listType,timer)}else refresh()};this.setNotificationHandler(notificationMethod,handler)}async sendRootsListChanged(){return this.notification({method:"notifications/roots/list_changed"})}};var SseError=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.SseError"})}static[Symbol.hasInstance](value){return brandedHasInstance(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance(this,value)}constructor(code2,message,event){super(`SSE error: ${message}`),this.code=code2,this.event=event,stampErrorBrands(this,new.target)}};var __create2=Object.create,__defProp3=Object.defineProperty,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__getOwnPropNames2=Object.getOwnPropertyNames,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__commonJSMin2=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports),__exportAll2=(all,symbols)=>{let target={};for(var name2 in all)__defProp3(target,name2,{get:all[name2],enumerable:!0});return symbols&&__defProp3(target,Symbol.toStringTag,{value:"Module"}),target},__copyProps2=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(var keys=__getOwnPropNames2(from),i=0,n2=keys.length,key;i<n2;i++)key=keys[i],!__hasOwnProp2.call(to,key)&&key!==except&&__defProp3(to,key,{get:(k=>from[k]).bind(null,key),enumerable:!(desc=__getOwnPropDesc2(from,key))||desc.enumerable});return to},__toESM2=(mod,isNodeMode,target)=>(target=mod!=null?__create2(__getProtoOf2(mod)):{},__copyProps2(isNodeMode||!mod||!mod.__esModule?__defProp3(target,"default",{value:mod,enumerable:!0}):target,mod));var DRAFT_2020_12_URIS2=new Set(["https://json-schema.org/draft/2020-12/schema","http://json-schema.org/draft/2020-12/schema"]),DRAFT_2019_09_URIS2=new Set(["https://json-schema.org/draft/2019-09/schema","http://json-schema.org/draft/2019-09/schema"]),DRAFT_07_URIS2=new Set(["https://json-schema.org/draft-07/schema","http://json-schema.org/draft-07/schema"]),DRAFT_06_URIS2=new Set(["https://json-schema.org/draft-06/schema","http://json-schema.org/draft-06/schema"]);function declares2019Dialect2($schema){return typeof $schema=="string"&&DRAFT_2019_09_URIS2.has($schema.replace(/#$/,""))}function declaredDialect2(schema,remedy){if(!("$schema"in schema)||typeof schema.$schema!="string")return"2020-12";let declared=schema.$schema.replace(/#$/,"");if(DRAFT_2020_12_URIS2.has(declared))return"2020-12";if(DRAFT_2019_09_URIS2.has(declared))return"2019-09";if(DRAFT_07_URIS2.has(declared)||DRAFT_06_URIS2.has(declared))return"draft-7";throw new Error(`JSON Schema declares an unsupported dialect ("$schema": "${schema.$schema.slice(0,200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${remedy}`)}var BRANDS2=Symbol.for("mcp.sdk.errorBrands");function stampErrorBrands2(instance,ctor){let brands=new Set,current=ctor;for(;typeof current=="function";){let brand=current.mcpBrand;Object.prototype.hasOwnProperty.call(current,"mcpBrand")&&typeof brand=="string"&&brands.add(brand),current=Object.getPrototypeOf(current)}brands.size!==0&&Object.defineProperty(instance,BRANDS2,{value:brands,enumerable:!1,configurable:!0})}function brandedHasInstance2(cls,value){try{if(typeof value=="object"&&value!==null&&Object.prototype.hasOwnProperty.call(cls,"mcpBrand")&&typeof cls.mcpBrand=="string"&&Object.prototype.hasOwnProperty.call(value,BRANDS2)){let carried=value[BRANDS2];if(carried&&typeof carried.has=="function"&&carried.has(cls.mcpBrand))return!0}}catch{}return Function.prototype[Symbol.hasInstance].call(cls,value)}var OAuthError3=class OAuthError4 extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.OAuthError"})}static[Symbol.hasInstance](value){return brandedHasInstance2(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance2(this,value)}constructor(code2,message,errorUri){super(message),this.code=code2,this.errorUri=errorUri,this.name="OAuthError",stampErrorBrands2(this,new.target)}toResponseObject(){let response={error:this.code,error_description:this.message};return this.errorUri&&(response.error_uri=this.errorUri),response}static fromResponse(response){return new OAuthError4(response.error,response.error_description??response.error,response.error_uri)}},SdkErrorCode2=(function(SdkErrorCode$1){return SdkErrorCode$1.NotConnected="NOT_CONNECTED",SdkErrorCode$1.AlreadyConnected="ALREADY_CONNECTED",SdkErrorCode$1.NotInitialized="NOT_INITIALIZED",SdkErrorCode$1.CapabilityNotSupported="CAPABILITY_NOT_SUPPORTED",SdkErrorCode$1.RequestTimeout="REQUEST_TIMEOUT",SdkErrorCode$1.ConnectionClosed="CONNECTION_CLOSED",SdkErrorCode$1.SendFailed="SEND_FAILED",SdkErrorCode$1.InvalidResult="INVALID_RESULT",SdkErrorCode$1.UnsupportedResultType="UNSUPPORTED_RESULT_TYPE",SdkErrorCode$1.InputRequiredRoundsExceeded="INPUT_REQUIRED_ROUNDS_EXCEEDED",SdkErrorCode$1.ListPaginationExceeded="LIST_PAGINATION_EXCEEDED",SdkErrorCode$1.MethodNotSupportedByProtocolVersion="METHOD_NOT_SUPPORTED_BY_PROTOCOL_VERSION",SdkErrorCode$1.EraNegotiationFailed="ERA_NEGOTIATION_FAILED",SdkErrorCode$1.ClientHttpNotImplemented="CLIENT_HTTP_NOT_IMPLEMENTED",SdkErrorCode$1.ClientHttpAuthentication="CLIENT_HTTP_AUTHENTICATION",SdkErrorCode$1.ClientHttpForbidden="CLIENT_HTTP_FORBIDDEN",SdkErrorCode$1.ClientHttpUnexpectedContent="CLIENT_HTTP_UNEXPECTED_CONTENT",SdkErrorCode$1.ClientHttpFailedToOpenStream="CLIENT_HTTP_FAILED_TO_OPEN_STREAM",SdkErrorCode$1.ClientHttpFailedToTerminateSession="CLIENT_HTTP_FAILED_TO_TERMINATE_SESSION",SdkErrorCode$1})({}),SdkError2=class extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.SdkError"})}static[Symbol.hasInstance](value){return brandedHasInstance2(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance2(this,value)}constructor(code2,message,data,options){super(message,options),this.code=code2,this.data=data,this.name="SdkError",stampErrorBrands2(this,new.target)}},SdkHttpError2=class extends SdkError2{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.SdkHttpError"})}constructor(code2,message,data,options){super(code2,message,data,options),this.name="SdkHttpError"}get status(){return this.data.status}get statusText(){return this.data.statusText}};function isPlainObject$7(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function isImpliedCapabilityMember(capability,member,declaredValue){return capability==="elicitation"&&member==="form"&&declaredValue.form===void 0&&declaredValue.url===void 0}function requiredClientCapabilitiesForInputRequest(entry){switch(entry.method){case"elicitation/create":return entry.params?.mode==="url"?{elicitation:{url:{}}}:{elicitation:{form:{}}};case"sampling/createMessage":{let params=entry.params;return params!==void 0&&(params.tools!==void 0||params.toolChoice!==void 0)?{sampling:{tools:{}}}:{sampling:{}}}case"roots/list":return{roots:{}};default:return}}function missingClientCapabilities(required2,declared){let missing={};for(let[capability,requirement]of Object.entries(required2)){if(requirement===void 0)continue;let declaredValue=declared===void 0?void 0:declared[capability];if(declaredValue===void 0){missing[capability]=requirement;continue}if(isPlainObject$7(requirement)&&isPlainObject$7(declaredValue)){let missingMembers={};for(let[member,memberRequirement]of Object.entries(requirement))memberRequirement!==void 0&&declaredValue[member]===void 0&&!isImpliedCapabilityMember(capability,member,declaredValue)&&(missingMembers[member]=memberRequirement);Object.keys(missingMembers).length>0&&(missing[capability]=missingMembers)}}return Object.keys(missing).length>0?missing:void 0}var FIRST_MODERN_PROTOCOL_VERSION2="2026-07-28",SUPPORTED_MODERN_PROTOCOL_VERSIONS2=[FIRST_MODERN_PROTOCOL_VERSION2];function isModernProtocolVersion2(version2){return version2>=FIRST_MODERN_PROTOCOL_VERSION2}function legacyProtocolVersions2(versions){return versions.filter(version2=>!isModernProtocolVersion2(version2))}function modernProtocolVersions2(versions){return versions.filter(version2=>isModernProtocolVersion2(version2))}function appendTextFallbackForNonObject2(result2){let sc=result2.structuredContent;return sc===void 0||!(typeof sc!="object"||sc===null||Array.isArray(sc))||(result2.content?.some(c=>c.type==="text")??!1)?result2:{...result2,content:[...result2.content??[],{type:"text",text:JSON.stringify(sc)}]}}var TOOL_RESULT_FOREIGN_FAMILY_KEYS2=["task","inputRequests","requestState"];function normalizeContentlessToolResult2(value){return value===null||typeof value!="object"||Array.isArray(value)||value.content!==void 0||TOOL_RESULT_FOREIGN_FAMILY_KEYS2.some(key=>key in value)?value:{...value,content:[]}}function build$12(){let JSONValueSchema$1=lazy(()=>union([string2(),number2(),boolean2(),_null3(),record(string2(),JSONValueSchema$1),array(JSONValueSchema$1)])),JSONObjectSchema$1=record(string2(),JSONValueSchema$1),ProgressTokenSchema$1=union([string2(),number2().int()]),CursorSchema$1=string2(),TaskMetadataSchema$1=object({ttl:number2().optional()}),RelatedTaskMetadataSchema$1=object({taskId:string2()}),RequestMetaSchema$1=looseObject({progressToken:ProgressTokenSchema$1.optional(),"io.modelcontextprotocol/related-task":RelatedTaskMetadataSchema$1.optional()}),BaseRequestParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),TaskAugmentedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({task:TaskMetadataSchema$1.optional()}),RequestSchema$1=object({method:string2(),params:BaseRequestParamsSchema$1.loose().optional()}),NotificationsParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),NotificationSchema$1=object({method:string2(),params:NotificationsParamsSchema$1.loose().optional()}),ResultSchema$1=looseObject({_meta:RequestMetaSchema$1.optional()}),RequestIdSchema$1=union([string2(),number2().int()]),EmptyResultSchema$1=ResultSchema$1.strict(),CancelledNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({requestId:RequestIdSchema$1.optional(),reason:string2().optional()}),CancelledNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema$1}),IconSchema$1=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum(["light","dark"]).optional()}),IconsSchema$1=object({icons:array(IconSchema$1).optional()}),BaseMetadataSchema$1=object({name:string2(),title:string2().optional()}),ImplementationSchema$1=BaseMetadataSchema$1.extend({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()}),FormElicitationCapabilitySchema2=intersection(object({applyDefaults:boolean2().optional()}),JSONObjectSchema$1),ElicitationCapabilitySchema2=preprocess(value=>value&&typeof value=="object"&&!Array.isArray(value)&&Object.keys(value).length===0?{form:{}}:value,intersection(object({form:FormElicitationCapabilitySchema2.optional(),url:JSONObjectSchema$1.optional()}),JSONObjectSchema$1.optional())),ClientTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({sampling:looseObject({createMessage:JSONObjectSchema$1.optional()}).optional(),elicitation:looseObject({create:JSONObjectSchema$1.optional()}).optional()}).optional()}),ServerTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({tools:looseObject({call:JSONObjectSchema$1.optional()}).optional()}).optional()}),ClientCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),sampling:object({context:JSONObjectSchema$1.optional(),tools:JSONObjectSchema$1.optional()}).optional(),elicitation:ElicitationCapabilitySchema2.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),InitializeRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({protocolVersion:string2(),capabilities:ClientCapabilitiesSchema$1,clientInfo:ImplementationSchema$1}),InitializeRequestSchema$1=RequestSchema$1.extend({method:literal("initialize"),params:InitializeRequestParamsSchema$1}),ServerCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),logging:JSONObjectSchema$1.optional(),completions:JSONObjectSchema$1.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),InitializeResultSchema$1=ResultSchema$1.extend({protocolVersion:string2(),capabilities:ServerCapabilitiesSchema$1,serverInfo:ImplementationSchema$1,instructions:string2().optional()}),InitializedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/initialized"),params:NotificationsParamsSchema$1.optional()}),PingRequestSchema$1=RequestSchema$1.extend({method:literal("ping"),params:BaseRequestParamsSchema$1.optional()}),ProgressSchema$1=object({progress:number2(),total:optional(number2()),message:optional(string2())}),ProgressNotificationParamsSchema$1=object({...NotificationsParamsSchema$1.shape,...ProgressSchema$1.shape,progressToken:ProgressTokenSchema$1}),ProgressNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema$1}),PaginatedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({cursor:CursorSchema$1.optional()}),PaginatedRequestSchema$1=RequestSchema$1.extend({params:PaginatedRequestParamsSchema$1.optional()}),PaginatedResultSchema$1=ResultSchema$1.extend({nextCursor:CursorSchema$1.optional()}),ResourceContentsSchema$1=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()}),TextResourceContentsSchema$1=ResourceContentsSchema$1.extend({text:string2()}),Base64Schema2=string2().refine(val=>{try{return atob(val),!0}catch{return!1}},{message:"Invalid Base64 string"}),BlobResourceContentsSchema$1=ResourceContentsSchema$1.extend({blob:Base64Schema2}),RoleSchema$1=_enum(["user","assistant"]),AnnotationsSchema$1=object({audience:array(RoleSchema$1).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:!0}).optional()}),ResourceSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceTemplateSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ListResourcesRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("resources/list")}),ListResourcesResultSchema$1=PaginatedResultSchema$1.extend({resources:array(ResourceSchema$1)}),ListResourceTemplatesRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("resources/templates/list")}),ListResourceTemplatesResultSchema$1=PaginatedResultSchema$1.extend({resourceTemplates:array(ResourceTemplateSchema$1)}),ResourceRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({uri:string2()}),ReadResourceRequestParamsSchema$1=ResourceRequestParamsSchema$1,ReadResourceRequestSchema$1=RequestSchema$1.extend({method:literal("resources/read"),params:ReadResourceRequestParamsSchema$1}),ReadResourceResultSchema$1=ResultSchema$1.extend({contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),ResourceListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema$1.optional()}),SubscribeRequestParamsSchema$1=ResourceRequestParamsSchema$1,SubscribeRequestSchema$1=RequestSchema$1.extend({method:literal("resources/subscribe"),params:SubscribeRequestParamsSchema$1}),UnsubscribeRequestParamsSchema$1=ResourceRequestParamsSchema$1,UnsubscribeRequestSchema$1=RequestSchema$1.extend({method:literal("resources/unsubscribe"),params:UnsubscribeRequestParamsSchema$1}),ResourceUpdatedNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({uri:string2()}),ResourceUpdatedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema$1}),PromptArgumentSchema$1=object({name:string2(),description:optional(string2()),required:optional(boolean2())}),PromptSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema$1)),_meta:optional(looseObject({}))}),ListPromptsRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("prompts/list")}),ListPromptsResultSchema$1=PaginatedResultSchema$1.extend({prompts:array(PromptSchema$1)}),GetPromptRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({name:string2(),arguments:record(string2(),string2()).optional()}),GetPromptRequestSchema$1=RequestSchema$1.extend({method:literal("prompts/get"),params:GetPromptRequestParamsSchema$1}),TextContentSchema$1=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ImageContentSchema$1=object({type:literal("image"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),AudioContentSchema$1=object({type:literal("audio"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolUseContentSchema$1=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()}),EmbeddedResourceSchema$1=object({type:literal("resource"),resource:union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ResourceLinkSchema$1=ResourceSchema$1.extend({type:literal("resource_link")}),ContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ResourceLinkSchema$1,EmbeddedResourceSchema$1]),PromptMessageSchema$1=object({role:RoleSchema$1,content:ContentBlockSchema$1}),GetPromptResultSchema$1=ResultSchema$1.extend({description:string2().optional(),messages:array(PromptMessageSchema$1)}),PromptListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema$1.optional()}),ToolAnnotationsSchema$1=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()}),ToolExecutionSchema$1=object({taskSupport:_enum(["required","optional","forbidden"]).optional()}),ToolSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:string2().optional(),inputSchema:object({type:literal("object"),properties:record(string2(),JSONValueSchema$1).optional(),required:array(string2()).optional()}).catchall(unknown()),outputSchema:object({type:literal("object"),properties:record(string2(),JSONValueSchema$1).optional(),required:array(string2()).optional()}).catchall(unknown()).optional(),annotations:ToolAnnotationsSchema$1.optional(),execution:ToolExecutionSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ListToolsRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("tools/list")}),ListToolsResultSchema$1=PaginatedResultSchema$1.extend({tools:array(ToolSchema$1)}),CallToolResultSchema$1=ResultSchema$1.extend({content:array(ContentBlockSchema$1),structuredContent:record(string2(),unknown()).optional(),isError:boolean2().optional()}),CallToolRequestParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({name:string2(),arguments:record(string2(),unknown()).optional()}),CallToolRequestSchema$1=RequestSchema$1.extend({method:literal("tools/call"),params:CallToolRequestParamsSchema$1}),ToolListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema$1.optional()}),LoggingLevelSchema$1=_enum(["debug","info","notice","warning","error","critical","alert","emergency"]),SetLevelRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({level:LoggingLevelSchema$1}),SetLevelRequestSchema$1=RequestSchema$1.extend({method:literal("logging/setLevel"),params:SetLevelRequestParamsSchema$1}),LoggingMessageNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({level:LoggingLevelSchema$1,logger:string2().optional(),data:unknown()}),LoggingMessageNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema$1}),ModelHintSchema$1=object({name:string2().optional()}),ModelPreferencesSchema$1=object({hints:array(ModelHintSchema$1).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()}),ToolChoiceSchema$1=object({mode:_enum(["auto","required","none"]).optional()}),ToolResultContentSchema$1=object({type:literal("tool_result"),toolUseId:string2().describe("The unique identifier for the corresponding tool call."),content:array(ContentBlockSchema$1),structuredContent:object({}).loose().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()}),SamplingContentSchema$1=discriminatedUnion("type",[TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1]),SamplingMessageContentBlockSchema$1=discriminatedUnion("type",[TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ToolUseContentSchema$1,ToolResultContentSchema$1]),SamplingMessageSchema$1=object({role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)]),_meta:record(string2(),unknown()).optional()}),CreateMessageRequestParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({messages:array(SamplingMessageSchema$1),modelPreferences:ModelPreferencesSchema$1.optional(),systemPrompt:string2().optional(),includeContext:_enum(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:JSONObjectSchema$1.optional(),tools:array(ToolSchema$1).optional(),toolChoice:ToolChoiceSchema$1.optional()}),CreateMessageRequestSchema$1=RequestSchema$1.extend({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema$1}),CreateMessageResultSchema$1=ResultSchema$1.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens"]).or(string2())),role:RoleSchema$1,content:SamplingContentSchema$1}),CreateMessageResultWithToolsSchema$1=ResultSchema$1.extend({model:string2(),stopReason:optional(_enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(string2())),role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)])}),BooleanSchemaSchema$1=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()}),StringSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum(["email","uri","date","date-time"]).optional(),default:string2().optional()}),NumberSchemaSchema$1=object({type:_enum(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()}),UntitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()}),TitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()}),LegacyTitledEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()}),SingleSelectEnumSchemaSchema$1=union([UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema$1]),UntitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()}),TitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()}),MultiSelectEnumSchemaSchema$1=union([UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema$1]),EnumSchemaSchema$1=union([LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema$1]),PrimitiveSchemaDefinitionSchema$1=union([EnumSchemaSchema$1,BooleanSchemaSchema$1,StringSchemaSchema$1,NumberSchemaSchema$1]),ElicitRequestFormParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema$1),required:array(string2()).optional()}).catchall(unknown())}),ElicitRequestURLParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("url"),message:string2(),elicitationId:string2(),url:string2().url()}),ElicitRequestParamsSchema$1=union([ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema$1]),ElicitRequestSchema$1=RequestSchema$1.extend({method:literal("elicitation/create"),params:ElicitRequestParamsSchema$1}),ElicitationCompleteNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({elicitationId:string2()}),ElicitationCompleteNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/elicitation/complete"),params:ElicitationCompleteNotificationParamsSchema$1}),ElicitResultSchema$1=ResultSchema$1.extend({action:_enum(["accept","decline","cancel"]),content:preprocess(val=>val===null?void 0:val,record(string2(),union([string2(),number2(),boolean2(),array(string2())])).optional())}),ResourceTemplateReferenceSchema$1=object({type:literal("ref/resource"),uri:string2()}),PromptReferenceSchema$1=object({type:literal("ref/prompt"),name:string2()}),CompleteRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({ref:union([PromptReferenceSchema$1,ResourceTemplateReferenceSchema$1]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()}),CompleteRequestSchema$1=RequestSchema$1.extend({method:literal("completion/complete"),params:CompleteRequestParamsSchema$1}),CompleteResultSchema$1=ResultSchema$1.extend({completion:looseObject({values:array(string2()).max(100),total:optional(number2().int()),hasMore:optional(boolean2())})}),RootSchema$1=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()}),ListRootsRequestSchema$1=RequestSchema$1.extend({method:literal("roots/list"),params:BaseRequestParamsSchema$1.optional()}),ListRootsResultSchema$1=ResultSchema$1.extend({roots:array(RootSchema$1)}),RootsListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/roots/list_changed"),params:NotificationsParamsSchema$1.optional()}),TaskCreationParamsSchema$1=looseObject({ttl:number2().optional(),pollInterval:number2().optional()}),TaskStatusSchema$1=_enum(["working","input_required","completed","failed","cancelled"]),TaskSchema$1=object({taskId:string2(),status:TaskStatusSchema$1,ttl:union([number2(),_null3()]),createdAt:string2(),lastUpdatedAt:string2(),pollInterval:optional(number2()),statusMessage:optional(string2())}),CreateTaskResultSchema$1=ResultSchema$1.extend({task:TaskSchema$1}),TaskStatusNotificationParamsSchema$1=NotificationsParamsSchema$1.merge(TaskSchema$1),TaskStatusNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tasks/status"),params:TaskStatusNotificationParamsSchema$1}),GetTaskRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/get"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})}),GetTaskResultSchema$1=ResultSchema$1.merge(TaskSchema$1),GetTaskPayloadRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/result"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})}),GetTaskPayloadResultSchema$1=ResultSchema$1.loose(),ListTasksRequestSchema$1=PaginatedRequestSchema$1.extend({method:literal("tasks/list")}),ListTasksResultSchema$1=PaginatedResultSchema$1.extend({tasks:array(TaskSchema$1)}),CancelTaskRequestSchema$1=RequestSchema$1.extend({method:literal("tasks/cancel"),params:BaseRequestParamsSchema$1.extend({taskId:string2()})});return{JSONValueSchema:JSONValueSchema$1,JSONObjectSchema:JSONObjectSchema$1,ProgressTokenSchema:ProgressTokenSchema$1,CursorSchema:CursorSchema$1,TaskMetadataSchema:TaskMetadataSchema$1,RelatedTaskMetadataSchema:RelatedTaskMetadataSchema$1,RequestMetaSchema:RequestMetaSchema$1,BaseRequestParamsSchema:BaseRequestParamsSchema$1,TaskAugmentedRequestParamsSchema:TaskAugmentedRequestParamsSchema$1,RequestSchema:RequestSchema$1,NotificationsParamsSchema:NotificationsParamsSchema$1,NotificationSchema:NotificationSchema$1,ResultSchema:ResultSchema$1,RequestIdSchema:RequestIdSchema$1,EmptyResultSchema:EmptyResultSchema$1,CancelledNotificationParamsSchema:CancelledNotificationParamsSchema$1,CancelledNotificationSchema:CancelledNotificationSchema$1,IconSchema:IconSchema$1,IconsSchema:IconsSchema$1,BaseMetadataSchema:BaseMetadataSchema$1,ImplementationSchema:ImplementationSchema$1,ClientTasksCapabilitySchema:ClientTasksCapabilitySchema$1,ServerTasksCapabilitySchema:ServerTasksCapabilitySchema$1,ClientCapabilitiesSchema:ClientCapabilitiesSchema$1,InitializeRequestParamsSchema:InitializeRequestParamsSchema$1,InitializeRequestSchema:InitializeRequestSchema$1,ServerCapabilitiesSchema:ServerCapabilitiesSchema$1,InitializeResultSchema:InitializeResultSchema$1,InitializedNotificationSchema:InitializedNotificationSchema$1,PingRequestSchema:PingRequestSchema$1,ProgressSchema:ProgressSchema$1,ProgressNotificationParamsSchema:ProgressNotificationParamsSchema$1,ProgressNotificationSchema:ProgressNotificationSchema$1,PaginatedRequestParamsSchema:PaginatedRequestParamsSchema$1,PaginatedRequestSchema:PaginatedRequestSchema$1,PaginatedResultSchema:PaginatedResultSchema$1,ResourceContentsSchema:ResourceContentsSchema$1,TextResourceContentsSchema:TextResourceContentsSchema$1,BlobResourceContentsSchema:BlobResourceContentsSchema$1,RoleSchema:RoleSchema$1,AnnotationsSchema:AnnotationsSchema$1,ResourceSchema:ResourceSchema$1,ResourceTemplateSchema:ResourceTemplateSchema$1,ListResourcesRequestSchema:ListResourcesRequestSchema$1,ListResourcesResultSchema:ListResourcesResultSchema$1,ListResourceTemplatesRequestSchema:ListResourceTemplatesRequestSchema$1,ListResourceTemplatesResultSchema:ListResourceTemplatesResultSchema$1,ResourceRequestParamsSchema:ResourceRequestParamsSchema$1,ReadResourceRequestParamsSchema:ReadResourceRequestParamsSchema$1,ReadResourceRequestSchema:ReadResourceRequestSchema$1,ReadResourceResultSchema:ReadResourceResultSchema$1,ResourceListChangedNotificationSchema:ResourceListChangedNotificationSchema$1,SubscribeRequestParamsSchema:SubscribeRequestParamsSchema$1,SubscribeRequestSchema:SubscribeRequestSchema$1,UnsubscribeRequestParamsSchema:UnsubscribeRequestParamsSchema$1,UnsubscribeRequestSchema:UnsubscribeRequestSchema$1,ResourceUpdatedNotificationParamsSchema:ResourceUpdatedNotificationParamsSchema$1,ResourceUpdatedNotificationSchema:ResourceUpdatedNotificationSchema$1,PromptArgumentSchema:PromptArgumentSchema$1,PromptSchema:PromptSchema$1,ListPromptsRequestSchema:ListPromptsRequestSchema$1,ListPromptsResultSchema:ListPromptsResultSchema$1,GetPromptRequestParamsSchema:GetPromptRequestParamsSchema$1,GetPromptRequestSchema:GetPromptRequestSchema$1,TextContentSchema:TextContentSchema$1,ImageContentSchema:ImageContentSchema$1,AudioContentSchema:AudioContentSchema$1,ToolUseContentSchema:ToolUseContentSchema$1,EmbeddedResourceSchema:EmbeddedResourceSchema$1,ResourceLinkSchema:ResourceLinkSchema$1,ContentBlockSchema:ContentBlockSchema$1,PromptMessageSchema:PromptMessageSchema$1,GetPromptResultSchema:GetPromptResultSchema$1,PromptListChangedNotificationSchema:PromptListChangedNotificationSchema$1,ToolAnnotationsSchema:ToolAnnotationsSchema$1,ToolExecutionSchema:ToolExecutionSchema$1,ToolSchema:ToolSchema$1,ListToolsRequestSchema:ListToolsRequestSchema$1,ListToolsResultSchema:ListToolsResultSchema$1,CallToolResultSchema:CallToolResultSchema$1,CallToolRequestParamsSchema:CallToolRequestParamsSchema$1,CallToolRequestSchema:CallToolRequestSchema$1,ToolListChangedNotificationSchema:ToolListChangedNotificationSchema$1,LoggingLevelSchema:LoggingLevelSchema$1,SetLevelRequestParamsSchema:SetLevelRequestParamsSchema$1,SetLevelRequestSchema:SetLevelRequestSchema$1,LoggingMessageNotificationParamsSchema:LoggingMessageNotificationParamsSchema$1,LoggingMessageNotificationSchema:LoggingMessageNotificationSchema$1,ModelHintSchema:ModelHintSchema$1,ModelPreferencesSchema:ModelPreferencesSchema$1,ToolChoiceSchema:ToolChoiceSchema$1,ToolResultContentSchema:ToolResultContentSchema$1,SamplingContentSchema:SamplingContentSchema$1,SamplingMessageContentBlockSchema:SamplingMessageContentBlockSchema$1,SamplingMessageSchema:SamplingMessageSchema$1,CreateMessageRequestParamsSchema:CreateMessageRequestParamsSchema$1,CreateMessageRequestSchema:CreateMessageRequestSchema$1,CreateMessageResultSchema:CreateMessageResultSchema$1,CreateMessageResultWithToolsSchema:CreateMessageResultWithToolsSchema$1,BooleanSchemaSchema:BooleanSchemaSchema$1,StringSchemaSchema:StringSchemaSchema$1,NumberSchemaSchema:NumberSchemaSchema$1,UntitledSingleSelectEnumSchemaSchema:UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema:TitledSingleSelectEnumSchemaSchema$1,LegacyTitledEnumSchemaSchema:LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema:SingleSelectEnumSchemaSchema$1,UntitledMultiSelectEnumSchemaSchema:UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema:TitledMultiSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema:MultiSelectEnumSchemaSchema$1,EnumSchemaSchema:EnumSchemaSchema$1,PrimitiveSchemaDefinitionSchema:PrimitiveSchemaDefinitionSchema$1,ElicitRequestFormParamsSchema:ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema:ElicitRequestURLParamsSchema$1,ElicitRequestParamsSchema:ElicitRequestParamsSchema$1,ElicitRequestSchema:ElicitRequestSchema$1,ElicitationCompleteNotificationParamsSchema:ElicitationCompleteNotificationParamsSchema$1,ElicitationCompleteNotificationSchema:ElicitationCompleteNotificationSchema$1,ElicitResultSchema:ElicitResultSchema$1,ResourceTemplateReferenceSchema:ResourceTemplateReferenceSchema$1,PromptReferenceSchema:PromptReferenceSchema$1,CompleteRequestParamsSchema:CompleteRequestParamsSchema$1,CompleteRequestSchema:CompleteRequestSchema$1,CompleteResultSchema:CompleteResultSchema$1,RootSchema:RootSchema$1,ListRootsRequestSchema:ListRootsRequestSchema$1,ListRootsResultSchema:ListRootsResultSchema$1,RootsListChangedNotificationSchema:RootsListChangedNotificationSchema$1,TaskCreationParamsSchema:TaskCreationParamsSchema$1,TaskStatusSchema:TaskStatusSchema$1,TaskSchema:TaskSchema$1,CreateTaskResultSchema:CreateTaskResultSchema$1,TaskStatusNotificationParamsSchema:TaskStatusNotificationParamsSchema$1,TaskStatusNotificationSchema:TaskStatusNotificationSchema$1,GetTaskRequestSchema:GetTaskRequestSchema$1,GetTaskResultSchema:GetTaskResultSchema$1,GetTaskPayloadRequestSchema:GetTaskPayloadRequestSchema$1,GetTaskPayloadResultSchema:GetTaskPayloadResultSchema$1,ListTasksRequestSchema:ListTasksRequestSchema$1,ListTasksResultSchema:ListTasksResultSchema$1,CancelTaskRequestSchema:CancelTaskRequestSchema$1,CancelTaskResultSchema:ResultSchema$1.merge(TaskSchema$1),ClientRequestSchema:union([PingRequestSchema$1,InitializeRequestSchema$1,CompleteRequestSchema$1,SetLevelRequestSchema$1,GetPromptRequestSchema$1,ListPromptsRequestSchema$1,ListResourcesRequestSchema$1,ListResourceTemplatesRequestSchema$1,ReadResourceRequestSchema$1,SubscribeRequestSchema$1,UnsubscribeRequestSchema$1,CallToolRequestSchema$1,ListToolsRequestSchema$1,GetTaskRequestSchema$1,GetTaskPayloadRequestSchema$1,ListTasksRequestSchema$1,CancelTaskRequestSchema$1]),ClientNotificationSchema:union([CancelledNotificationSchema$1,ProgressNotificationSchema$1,InitializedNotificationSchema$1,RootsListChangedNotificationSchema$1,TaskStatusNotificationSchema$1]),ClientResultSchema:union([EmptyResultSchema$1,CreateMessageResultSchema$1,CreateMessageResultWithToolsSchema$1,ElicitResultSchema$1,ListRootsResultSchema$1,GetTaskResultSchema$1,ListTasksResultSchema$1,CreateTaskResultSchema$1]),ServerRequestSchema:union([PingRequestSchema$1,CreateMessageRequestSchema$1,ElicitRequestSchema$1,ListRootsRequestSchema$1,GetTaskRequestSchema$1,GetTaskPayloadRequestSchema$1,ListTasksRequestSchema$1,CancelTaskRequestSchema$1]),ServerNotificationSchema:union([CancelledNotificationSchema$1,ProgressNotificationSchema$1,LoggingMessageNotificationSchema$1,ResourceUpdatedNotificationSchema$1,ResourceListChangedNotificationSchema$1,ToolListChangedNotificationSchema$1,PromptListChangedNotificationSchema$1,TaskStatusNotificationSchema$1,ElicitationCompleteNotificationSchema$1]),ServerResultSchema:union([EmptyResultSchema$1,InitializeResultSchema$1,CompleteResultSchema$1,GetPromptResultSchema$1,ListPromptsResultSchema$1,ListResourcesResultSchema$1,ListResourceTemplatesResultSchema$1,ReadResourceResultSchema$1,CallToolResultSchema$1,ListToolsResultSchema$1,GetTaskResultSchema$1,ListTasksResultSchema$1,CreateTaskResultSchema$1]),CallToolResultWireSchema:unknown().superRefine((value,ctx)=>{if(!(typeof value!="object"||value===null||Array.isArray(value)||value.content!==void 0)){for(let key of TOOL_RESULT_FOREIGN_FAMILY_KEYS2)if(key in value){ctx.addIssue({code:"custom",message:`content is required when the body carries '${key}' \u2014 another result family cannot default into an empty tools/call success`});return}}}).transform(normalizeContentlessToolResult2).pipe(CallToolResultSchema$1)}}var memo$12;function buildSchemas20252(){return memo$12??=build$12()}function isNonObjectJsonSchemaRoot2(json){return json.type!=="object"}var REF_REWRITE_DATA_POSITION_KEYS2=new Set(["const","enum","default","examples"]),REF_REWRITE_NAME_MAP_KEYS2=new Set(["properties","patternProperties","$defs","definitions","dependentSchemas","dependencies"]);function establishesNewBase2(id){return id!==void 0&&!(typeof id=="string"&&id.startsWith("#"))}function wrapOutputSchemaForLegacy2(natural){let $schema=typeof natural.$schema=="string"?natural.$schema:void 0;if(establishesNewBase2(natural.$id))return{...$schema!==void 0&&{$schema},type:"object",properties:{result:natural},required:["result"]};let convertRecursiveRefs=declares2019Dialect2(natural.$schema)&&natural.$recursiveAnchor!==!0,rewriteRefs=(node2,parentIsNameMap)=>{if(Array.isArray(node2))return node2.map(item=>rewriteRefs(item,!1));if(node2===null||typeof node2!="object"||!parentIsNameMap&&establishesNewBase2(node2.$id))return node2;let out={},convertedRecursion=!1;for(let[k,v]of Object.entries(node2))parentIsNameMap?out[k]=rewriteRefs(v,!1):(k==="$ref"||k==="$dynamicRef")&&typeof v=="string"?out[k]=v==="#"?"#/properties/result":v.startsWith("#/")?`#/properties/result${v.slice(1)}`:v:k==="$recursiveRef"&&v==="#"&&convertRecursiveRefs?convertedRecursion=!0:REF_REWRITE_DATA_POSITION_KEYS2.has(k)?out[k]=v:REF_REWRITE_NAME_MAP_KEYS2.has(k)?out[k]=rewriteRefs(v,!0):out[k]=rewriteRefs(v,!1);return convertedRecursion&&("$ref"in out?out.allOf=[...Array.isArray(out.allOf)?out.allOf:[],{$ref:"#/properties/result"}]:out.$ref="#/properties/result"),out};return{...$schema!==void 0&&{$schema},type:"object",properties:{result:rewriteRefs(natural,!1)},required:["result"]}}var requestMethodKeys$12={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"tasks/get":null,"tasks/result":null,"tasks/list":null,"tasks/cancel":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},notificationMethodKeys$12={"notifications/cancelled":null,"notifications/progress":null,"notifications/initialized":null,"notifications/roots/list_changed":null,"notifications/tasks/status":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/elicitation/complete":null},resultMethodKeys2={ping:null,initialize:null,"completion/complete":null,"logging/setLevel":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"resources/subscribe":null,"resources/unsubscribe":null,"tools/call":null,"tools/list":null,"sampling/createMessage":null,"elicitation/create":null,"roots/list":null},maps$12;function registryMaps2(){if(maps$12)return maps$12;let s=buildSchemas20252();return maps$12={requestSchemas:{ping:s.PingRequestSchema,initialize:s.InitializeRequestSchema,"completion/complete":s.CompleteRequestSchema,"logging/setLevel":s.SetLevelRequestSchema,"prompts/get":s.GetPromptRequestSchema,"prompts/list":s.ListPromptsRequestSchema,"resources/list":s.ListResourcesRequestSchema,"resources/templates/list":s.ListResourceTemplatesRequestSchema,"resources/read":s.ReadResourceRequestSchema,"resources/subscribe":s.SubscribeRequestSchema,"resources/unsubscribe":s.UnsubscribeRequestSchema,"tools/call":s.CallToolRequestSchema,"tools/list":s.ListToolsRequestSchema,"tasks/get":s.GetTaskRequestSchema,"tasks/result":s.GetTaskPayloadRequestSchema,"tasks/list":s.ListTasksRequestSchema,"tasks/cancel":s.CancelTaskRequestSchema,"sampling/createMessage":s.CreateMessageRequestSchema,"elicitation/create":s.ElicitRequestSchema,"roots/list":s.ListRootsRequestSchema},notificationSchemas:{"notifications/cancelled":s.CancelledNotificationSchema,"notifications/progress":s.ProgressNotificationSchema,"notifications/initialized":s.InitializedNotificationSchema,"notifications/roots/list_changed":s.RootsListChangedNotificationSchema,"notifications/tasks/status":s.TaskStatusNotificationSchema,"notifications/message":s.LoggingMessageNotificationSchema,"notifications/resources/updated":s.ResourceUpdatedNotificationSchema,"notifications/resources/list_changed":s.ResourceListChangedNotificationSchema,"notifications/tools/list_changed":s.ToolListChangedNotificationSchema,"notifications/prompts/list_changed":s.PromptListChangedNotificationSchema,"notifications/elicitation/complete":s.ElicitationCompleteNotificationSchema},resultSchemas:{ping:s.EmptyResultSchema,initialize:s.InitializeResultSchema,"completion/complete":s.CompleteResultSchema,"logging/setLevel":s.EmptyResultSchema,"prompts/get":s.GetPromptResultSchema,"prompts/list":s.ListPromptsResultSchema,"resources/list":s.ListResourcesResultSchema,"resources/templates/list":s.ListResourceTemplatesResultSchema,"resources/read":s.ReadResourceResultSchema,"resources/subscribe":s.EmptyResultSchema,"resources/unsubscribe":s.EmptyResultSchema,"tools/call":s.CallToolResultWireSchema,"tools/list":s.ListToolsResultSchema,"sampling/createMessage":s.CreateMessageResultWithToolsSchema,"elicitation/create":s.ElicitResultSchema,"roots/list":s.ListRootsResultSchema}},maps$12}function hasRequestMethod20252(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys$12,method)}function hasNotificationMethod20252(method){return Object.prototype.hasOwnProperty.call(notificationMethodKeys$12,method)}function hasResultMethod2(method){return Object.prototype.hasOwnProperty.call(resultMethodKeys2,method)}function getResultSchema2(method){return hasResultMethod2(method)?registryMaps2().resultSchemas[method]:void 0}function getRequestSchema2(method){return hasRequestMethod20252(method)?registryMaps2().requestSchemas[method]:void 0}function getNotificationSchema2(method){return hasNotificationMethod20252(method)?registryMaps2().notificationSchemas[method]:void 0}var rev2025RequestMethods2=Object.keys(requestMethodKeys$12),rev2025NotificationMethods2=Object.keys(notificationMethodKeys$12);function isPlainObject$6(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function triState$12(schema,raw){if(schema===void 0)return{ok:!1,reason:"not-in-era"};let parsed=schema.safeParse(raw);return parsed.success?{ok:!0,value:parsed.data}:{ok:!1,reason:"invalid",message:String(parsed.error)}}var NOT_IN_ERA$12={ok:!1,reason:"not-in-era"};function toolNeedsLegacyWrap2(t){return isPlainObject$6(t)&&isPlainObject$6(t.outputSchema)&&isNonObjectJsonSchemaRoot2(t.outputSchema)}var rev2025Codec2={era:"2025-11-25",hasRequestMethod:hasRequestMethod20252,hasNotificationMethod:hasNotificationMethod20252,validateRequest:(method,raw)=>triState$12(getRequestSchema2(method),raw),validateResult:(method,raw)=>triState$12(getResultSchema2(method),raw),validateNotification:(method,raw)=>triState$12(getNotificationSchema2(method),raw),hasInputRequestMethod:()=>!1,validateInputRequest:()=>NOT_IN_ERA$12,validateInputResponse:()=>NOT_IN_ERA$12,samplingResultVariant:((hasTools,raw)=>{let s=buildSchemas20252();return triState$12(hasTools?s.CreateMessageResultWithToolsSchema:s.CreateMessageResultSchema,raw)}),outboundEnvelope:_material=>{},validateEnvelopeMeta:_meta=>[],projectCallToolResult(result2,advertisedOutputSchema){let withText=appendTextFallbackForNonObject2(result2),sc=withText.structuredContent;if(sc===void 0)return withText;let valueIsNonObject=typeof sc!="object"||sc===null||Array.isArray(sc),schemaWrapped=advertisedOutputSchema!==void 0&&isNonObjectJsonSchemaRoot2(advertisedOutputSchema);return!valueIsNonObject&&!schemaWrapped?withText:{...withText,structuredContent:{result:sc}}},decodeResult(_method,raw){if(isPlainObject$6(raw)&&"resultType"in raw){let stripped={...raw};return delete stripped.resultType,{kind:"complete",result:stripped}}return{kind:"complete",result:raw}},encodeResult(method,result2){if(method!=="tools/list")return result2;let tools=result2.tools;return!Array.isArray(tools)||!tools.some(t=>toolNeedsLegacyWrap2(t))?result2:{...result2,tools:tools.map(t=>toolNeedsLegacyWrap2(t)?{...t,outputSchema:wrapOutputSchemaForLegacy2(t.outputSchema)}:t)}},encodeErrorCode:code2=>code2===-32002?-32602:code2,checkInboundEnvelope:_material=>{}};function build2(){let JSONValueSchema$1=lazy(()=>union([string2(),number2(),boolean2(),_null3(),record(string2(),JSONValueSchema$1),array(JSONValueSchema$1)])),JSONObjectSchema$1=record(string2(),JSONValueSchema$1),ProgressTokenSchema$1=union([string2(),number2().int()]),CursorSchema$1=string2(),RequestIdSchema$1=union([string2(),number2().int()]),RoleSchema$1=_enum(["user","assistant"]),LoggingLevelSchema$1=_enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Base64Schema2=string2().refine(val=>{try{return atob(val),!0}catch{return!1}},{message:"Invalid Base64 string"}),TaskMetadataSchema$1=object({ttl:number2().optional()}),RelatedTaskMetadataSchema$1=object({taskId:string2()}),RequestMetaSchema$1=looseObject({progressToken:ProgressTokenSchema$1.optional(),"io.modelcontextprotocol/related-task":RelatedTaskMetadataSchema$1.optional()}),BaseRequestParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),TaskAugmentedRequestParamsSchema$1=BaseRequestParamsSchema$1.extend({task:TaskMetadataSchema$1.optional()}),NotificationsParamsSchema$1=object({_meta:RequestMetaSchema$1.optional()}),NotificationSchema$1=object({method:string2(),params:NotificationsParamsSchema$1.loose().optional()}),IconSchema$1=object({src:string2(),mimeType:string2().optional(),sizes:array(string2()).optional(),theme:_enum(["light","dark"]).optional()}),IconsSchema$1=object({icons:array(IconSchema$1).optional()}),BaseMetadataSchema$1=object({name:string2(),title:string2().optional()}),ImplementationSchema$1=BaseMetadataSchema$1.extend({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,version:string2(),websiteUrl:string2().optional(),description:string2().optional()}),FormElicitationCapabilitySchema2=intersection(object({applyDefaults:boolean2().optional()}),JSONObjectSchema$1),ElicitationCapabilitySchema2=preprocess(value=>value&&typeof value=="object"&&!Array.isArray(value)&&Object.keys(value).length===0?{form:{}}:value,intersection(object({form:FormElicitationCapabilitySchema2.optional(),url:JSONObjectSchema$1.optional()}),JSONObjectSchema$1.optional())),ClientTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({sampling:looseObject({createMessage:JSONObjectSchema$1.optional()}).optional(),elicitation:looseObject({create:JSONObjectSchema$1.optional()}).optional()}).optional()}),ServerTasksCapabilitySchema$1=looseObject({list:JSONObjectSchema$1.optional(),cancel:JSONObjectSchema$1.optional(),requests:looseObject({tools:looseObject({call:JSONObjectSchema$1.optional()}).optional()}).optional()}),ClientCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),sampling:object({context:JSONObjectSchema$1.optional(),tools:JSONObjectSchema$1.optional()}).optional(),elicitation:ElicitationCapabilitySchema2.optional(),roots:object({listChanged:boolean2().optional()}).optional(),tasks:ClientTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),ServerCapabilitiesSchema$1=object({experimental:record(string2(),JSONObjectSchema$1).optional(),logging:JSONObjectSchema$1.optional(),completions:JSONObjectSchema$1.optional(),prompts:object({listChanged:boolean2().optional()}).optional(),resources:object({subscribe:boolean2().optional(),listChanged:boolean2().optional()}).optional(),tools:object({listChanged:boolean2().optional()}).optional(),tasks:ServerTasksCapabilitySchema$1.optional(),extensions:record(string2(),JSONObjectSchema$1).optional()}),ProgressSchema$1=object({progress:number2(),total:optional(number2()),message:optional(string2())}),ProgressNotificationParamsSchema$1=object({...NotificationsParamsSchema$1.shape,...ProgressSchema$1.shape,progressToken:ProgressTokenSchema$1}),ProgressNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/progress"),params:ProgressNotificationParamsSchema$1}),LoggingMessageNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({level:LoggingLevelSchema$1,logger:string2().optional(),data:unknown()}),LoggingMessageNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/message"),params:LoggingMessageNotificationParamsSchema$1}),ResourceContentsSchema$1=object({uri:string2(),mimeType:optional(string2()),_meta:record(string2(),unknown()).optional()}),TextResourceContentsSchema$1=ResourceContentsSchema$1.extend({text:string2()}),BlobResourceContentsSchema$1=ResourceContentsSchema$1.extend({blob:Base64Schema2}),AnnotationsSchema$1=object({audience:array(RoleSchema$1).optional(),priority:number2().min(0).max(1).optional(),lastModified:iso_exports.datetime({offset:!0}).optional()}),ResourceSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uri:string2(),description:optional(string2()),mimeType:optional(string2()),size:optional(number2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceTemplateSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,uriTemplate:string2(),description:optional(string2()),mimeType:optional(string2()),annotations:AnnotationsSchema$1.optional(),_meta:optional(looseObject({}))}),ResourceListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/list_changed"),params:NotificationsParamsSchema$1.optional()}),ResourceUpdatedNotificationParamsSchema$1=NotificationsParamsSchema$1.extend({uri:string2()}),ResourceUpdatedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/resources/updated"),params:ResourceUpdatedNotificationParamsSchema$1}),PromptArgumentSchema$1=object({name:string2(),description:optional(string2()),required:optional(boolean2())}),PromptSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:optional(string2()),arguments:optional(array(PromptArgumentSchema$1)),_meta:optional(looseObject({}))}),PromptListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/prompts/list_changed"),params:NotificationsParamsSchema$1.optional()}),TextContentSchema$1=object({type:literal("text"),text:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ImageContentSchema$1=object({type:literal("image"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),AudioContentSchema$1=object({type:literal("audio"),data:Base64Schema2,mimeType:string2(),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolUseContentSchema$1=object({type:literal("tool_use"),name:string2(),id:string2(),input:record(string2(),unknown()),_meta:record(string2(),unknown()).optional()}),EmbeddedResourceSchema$1=object({type:literal("resource"),resource:union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]),annotations:AnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ResourceLinkSchema$1=ResourceSchema$1.extend({type:literal("resource_link")}),ContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ResourceLinkSchema$1,EmbeddedResourceSchema$1]),PromptMessageSchema$1=object({role:RoleSchema$1,content:ContentBlockSchema$1}),ToolAnnotationsSchema$1=object({title:string2().optional(),readOnlyHint:boolean2().optional(),destructiveHint:boolean2().optional(),idempotentHint:boolean2().optional(),openWorldHint:boolean2().optional()}),ToolListChangedNotificationSchema$1=NotificationSchema$1.extend({method:literal("notifications/tools/list_changed"),params:NotificationsParamsSchema$1.optional()}),ModelHintSchema$1=object({name:string2().optional()}),ModelPreferencesSchema$1=object({hints:array(ModelHintSchema$1).optional(),costPriority:number2().min(0).max(1).optional(),speedPriority:number2().min(0).max(1).optional(),intelligencePriority:number2().min(0).max(1).optional()}),ToolChoiceSchema$1=object({mode:_enum(["auto","required","none"]).optional()}),BooleanSchemaSchema$1=object({type:literal("boolean"),title:string2().optional(),description:string2().optional(),default:boolean2().optional()}),StringSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),minLength:number2().optional(),maxLength:number2().optional(),format:_enum(["email","uri","date","date-time"]).optional(),default:string2().optional()}),NumberSchemaSchema$1=object({type:_enum(["number","integer"]),title:string2().optional(),description:string2().optional(),minimum:number2().optional(),maximum:number2().optional(),default:number2().optional()}),UntitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),default:string2().optional()}),TitledSingleSelectEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),oneOf:array(object({const:string2(),title:string2()})),default:string2().optional()}),LegacyTitledEnumSchemaSchema$1=object({type:literal("string"),title:string2().optional(),description:string2().optional(),enum:array(string2()),enumNames:array(string2()).optional(),default:string2().optional()}),SingleSelectEnumSchemaSchema$1=union([UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema$1]),UntitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({type:literal("string"),enum:array(string2())}),default:array(string2()).optional()}),TitledMultiSelectEnumSchemaSchema$1=object({type:literal("array"),title:string2().optional(),description:string2().optional(),minItems:number2().optional(),maxItems:number2().optional(),items:object({anyOf:array(object({const:string2(),title:string2()}))}),default:array(string2()).optional()}),MultiSelectEnumSchemaSchema$1=union([UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema$1]),EnumSchemaSchema$1=union([LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema$1]),PrimitiveSchemaDefinitionSchema$1=union([EnumSchemaSchema$1,BooleanSchemaSchema$1,StringSchemaSchema$1,NumberSchemaSchema$1]),ElicitRequestFormParamsSchema$1=TaskAugmentedRequestParamsSchema$1.extend({mode:literal("form").optional(),message:string2(),requestedSchema:object({type:literal("object"),properties:record(string2(),PrimitiveSchemaDefinitionSchema$1),required:array(string2()).optional()}).catchall(unknown())}),ResourceTemplateReferenceSchema$1=object({type:literal("ref/resource"),uri:string2()}),PromptReferenceSchema$1=object({type:literal("ref/prompt"),name:string2()}),RootSchema$1=object({uri:string2().startsWith("file://"),name:string2().optional(),_meta:record(string2(),unknown()).optional()}),sharedClientCapabilityShape=ClientCapabilitiesSchema$1.shape,ClientCapabilities2026Schema=object({experimental:sharedClientCapabilityShape.experimental,sampling:sharedClientCapabilityShape.sampling,elicitation:sharedClientCapabilityShape.elicitation,roots:sharedClientCapabilityShape.roots,extensions:sharedClientCapabilityShape.extensions}),sharedServerCapabilityShape=ServerCapabilitiesSchema$1.shape,ServerCapabilities2026Schema=object({experimental:sharedServerCapabilityShape.experimental,logging:sharedServerCapabilityShape.logging,completions:sharedServerCapabilityShape.completions,prompts:sharedServerCapabilityShape.prompts,resources:sharedServerCapabilityShape.resources,tools:sharedServerCapabilityShape.tools,extensions:sharedServerCapabilityShape.extensions}),RequestMetaEnvelopeSchema=looseObject({progressToken:ProgressTokenSchema$1.optional(),[PROTOCOL_VERSION_META_KEY]:string2(),[CLIENT_INFO_META_KEY]:ImplementationSchema$1.optional(),[CLIENT_CAPABILITIES_META_KEY]:ClientCapabilities2026Schema,[LOG_LEVEL_META_KEY]:LoggingLevelSchema$1.optional()}),ToolSchema$1=object({...BaseMetadataSchema$1.shape,...IconsSchema$1.shape,description:string2().optional(),inputSchema:looseObject({$schema:string2().optional(),type:literal("object")}),outputSchema:looseObject({$schema:string2().optional()}).optional(),annotations:ToolAnnotationsSchema$1.optional(),_meta:record(string2(),unknown()).optional()}),ToolResultContentSchema$1=object({type:literal("tool_result"),toolUseId:string2(),content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional(),_meta:record(string2(),unknown()).optional()}),SamplingMessageContentBlockSchema$1=union([TextContentSchema$1,ImageContentSchema$1,AudioContentSchema$1,ToolUseContentSchema$1,ToolResultContentSchema$1]),SamplingMessageSchema$1=object({role:RoleSchema$1,content:union([SamplingMessageContentBlockSchema$1,array(SamplingMessageContentBlockSchema$1)]),_meta:record(string2(),unknown()).optional()}),ResultTypeSchema=string2(),ResultMetaSchema=looseObject({[SERVER_INFO_META_KEY]:ImplementationSchema$1.optional().catch(void 0)}),wireMeta=ResultMetaSchema.optional();function wireResult(shape){return looseObject({_meta:wireMeta,resultType:ResultTypeSchema.default("complete"),...shape})}let ResultSchema$1=wireResult({}),PaginatedResultSchema$1=wireResult({nextCursor:CursorSchema$1.optional()}),CallToolResultSchema$1=wireResult({content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional()}),ListToolsResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),tools:array(ToolSchema$1),nextCursor:CursorSchema$1.optional()}),ListPromptsResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),prompts:array(PromptSchema$1),nextCursor:CursorSchema$1.optional()}),GetPromptResultSchema$1=wireResult({description:string2().optional(),messages:array(PromptMessageSchema$1)}),ListResourcesResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resources:array(ResourceSchema$1),nextCursor:CursorSchema$1.optional()}),ListResourceTemplatesResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resourceTemplates:array(ResourceTemplateSchema$1),nextCursor:CursorSchema$1.optional()}),ReadResourceResultSchema$1=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),CompleteResultSchema$1=wireResult({completion:object({values:array(string2()).max(100),total:number2().int().optional(),hasMore:boolean2().optional()}).loose()}),CacheableResultSchema=wireResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"])}),DiscoverResultSchema$1=wireResult({ttlMs:number2().int().min(0).catch(0),cacheScope:_enum(["public","private"]).catch("private"),supportedVersions:array(string2()),capabilities:ServerCapabilities2026Schema,instructions:string2().optional()}),CreateMessageRequestParamsSchema$1=object({messages:array(SamplingMessageSchema$1),modelPreferences:ModelPreferencesSchema$1.optional(),systemPrompt:string2().optional(),includeContext:_enum(["none","thisServer","allServers"]).optional(),temperature:number2().optional(),maxTokens:number2().int(),stopSequences:array(string2()).optional(),metadata:JSONObjectSchema$1.optional(),tools:array(ToolSchema$1).optional(),toolChoice:ToolChoiceSchema$1.optional()}),CreateMessageRequestSchema$1=object({method:literal("sampling/createMessage"),params:CreateMessageRequestParamsSchema$1}),ListRootsRequestSchema$1=object({method:literal("roots/list"),params:object({_meta:record(string2(),unknown()).optional()}).optional()}),CreateMessageResultSchema$1=object({...SamplingMessageSchema$1.shape,model:string2(),stopReason:string2().optional()}),ListRootsResultSchema$1=object({roots:array(RootSchema$1)}),ElicitResultSchema$1=object({action:_enum(["accept","decline","cancel"]),content:record(string2(),union([string2(),number2(),boolean2(),array(string2())])).optional()}),ElicitRequestURLParamsSchema$1=object({mode:literal("url"),message:string2(),url:string2().url()}),ElicitRequestParamsSchema$1=union([ElicitRequestFormParamsSchema$1,ElicitRequestURLParamsSchema$1]),ElicitRequestSchema$1=object({method:literal("elicitation/create"),params:ElicitRequestParamsSchema$1}),InputRequestSchema=union([CreateMessageRequestSchema$1,ListRootsRequestSchema$1,ElicitRequestSchema$1]),InputResponseSchema=union([CreateMessageResultSchema$1,ListRootsResultSchema$1,ElicitResultSchema$1]),InputRequestsSchema=record(string2(),InputRequestSchema),InputResponsesSchema=record(string2(),InputResponseSchema),InputRequiredResultSchema=wireResult({inputRequests:InputRequestsSchema.optional(),requestState:string2().optional()}),retryParamsShape={inputResponses:InputResponsesSchema.optional(),requestState:string2().optional()},InputResponseRequestParamsSchema=object({_meta:RequestMetaEnvelopeSchema,...retryParamsShape}),DispatchRequestMetaSchema=looseObject({progressToken:ProgressTokenSchema$1.optional()});function wireRequest(method,paramsShape){return object({method:literal(method),params:object({_meta:RequestMetaEnvelopeSchema,...paramsShape})})}function dispatchRequest(method,paramsShape){return object({method:literal(method),params:object({_meta:DispatchRequestMetaSchema.optional(),...paramsShape}).optional()})}let callToolParamsShape={name:string2(),arguments:record(string2(),unknown()).optional(),...retryParamsShape},paginatedParamsShape={cursor:CursorSchema$1.optional()},CallToolRequestSchema$1=wireRequest("tools/call",callToolParamsShape),ListToolsRequestSchema$1=wireRequest("tools/list",paginatedParamsShape),ListPromptsRequestSchema$1=wireRequest("prompts/list",paginatedParamsShape),GetPromptRequestSchema$1=wireRequest("prompts/get",{name:string2(),arguments:record(string2(),string2()).optional(),...retryParamsShape}),ListResourcesRequestSchema$1=wireRequest("resources/list",paginatedParamsShape),ListResourceTemplatesRequestSchema$1=wireRequest("resources/templates/list",paginatedParamsShape),ReadResourceRequestSchema$1=wireRequest("resources/read",{uri:string2(),...retryParamsShape}),completeParamsShape={ref:union([PromptReferenceSchema$1,ResourceTemplateReferenceSchema$1]),argument:object({name:string2(),value:string2()}),context:object({arguments:record(string2(),string2()).optional()}).optional()},CompleteRequestSchema$1=wireRequest("completion/complete",completeParamsShape),DiscoverRequestSchema$1=wireRequest("server/discover",{}),SubscriptionFilterSchema$1=object({toolsListChanged:boolean2().optional(),promptsListChanged:boolean2().optional(),resourcesListChanged:boolean2().optional(),resourceSubscriptions:array(string2()).optional()}),subscriptionsListenParamsShape={notifications:SubscriptionFilterSchema$1},SubscriptionsListenRequestSchema$1=wireRequest("subscriptions/listen",subscriptionsListenParamsShape),SubscriptionsListenResultMetaSchema$1=ResultMetaSchema.extend({"io.modelcontextprotocol/subscriptionId":RequestIdSchema$1}),SubscriptionsListenResultSchema$1=looseObject({_meta:SubscriptionsListenResultMetaSchema$1,resultType:ResultTypeSchema.default("complete")}),dispatchRequestSchemas={"tools/call":dispatchRequest("tools/call",callToolParamsShape),"tools/list":dispatchRequest("tools/list",paginatedParamsShape),"prompts/get":dispatchRequest("prompts/get",{name:string2(),arguments:record(string2(),string2()).optional()}),"prompts/list":dispatchRequest("prompts/list",paginatedParamsShape),"resources/list":dispatchRequest("resources/list",paginatedParamsShape),"resources/templates/list":dispatchRequest("resources/templates/list",paginatedParamsShape),"resources/read":dispatchRequest("resources/read",{uri:string2()}),"completion/complete":dispatchRequest("completion/complete",completeParamsShape),"server/discover":dispatchRequest("server/discover",{}),"subscriptions/listen":dispatchRequest("subscriptions/listen",subscriptionsListenParamsShape)};function liftedResult(shape){return looseObject({_meta:wireMeta,...shape})}let dispatchResultSchemas={"tools/call":liftedResult({content:array(ContentBlockSchema$1),structuredContent:unknown().optional(),isError:boolean2().optional()}),"tools/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),tools:array(ToolSchema$1),nextCursor:CursorSchema$1.optional()}),"prompts/get":liftedResult({description:string2().optional(),messages:array(PromptMessageSchema$1)}),"prompts/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),prompts:array(PromptSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resources:array(ResourceSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/templates/list":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),resourceTemplates:array(ResourceTemplateSchema$1),nextCursor:CursorSchema$1.optional()}),"resources/read":liftedResult({ttlMs:number2().int().min(0),cacheScope:_enum(["public","private"]),contents:array(union([TextResourceContentsSchema$1,BlobResourceContentsSchema$1]))}),"completion/complete":liftedResult({completion:object({values:array(string2()).max(100),total:number2().int().optional(),hasMore:boolean2().optional()}).loose()}),"server/discover":liftedResult({ttlMs:number2().int().min(0).catch(0),cacheScope:_enum(["public","private"]).catch("private"),supportedVersions:array(string2()),capabilities:ServerCapabilities2026Schema,instructions:string2().optional()}),"subscriptions/listen":liftedResult({})},NotificationMetaSchema=looseObject({"io.modelcontextprotocol/subscriptionId":RequestIdSchema$1.optional()}),SubscriptionsAcknowledgedNotificationSchema$1=object({method:literal("notifications/subscriptions/acknowledged"),params:object({_meta:NotificationMetaSchema.optional(),notifications:SubscriptionFilterSchema$1})}),CancelledNotificationParamsSchema$1=object({_meta:NotificationMetaSchema.optional(),requestId:RequestIdSchema$1,reason:string2().optional()}),CancelledNotificationSchema$1=object({method:literal("notifications/cancelled"),params:CancelledNotificationParamsSchema$1}),notificationSchemas2026={"notifications/cancelled":CancelledNotificationSchema$1,"notifications/progress":ProgressNotificationSchema$1,"notifications/message":LoggingMessageNotificationSchema$1,"notifications/resources/updated":ResourceUpdatedNotificationSchema$1,"notifications/resources/list_changed":ResourceListChangedNotificationSchema$1,"notifications/tools/list_changed":ToolListChangedNotificationSchema$1,"notifications/prompts/list_changed":PromptListChangedNotificationSchema$1,"notifications/subscriptions/acknowledged":SubscriptionsAcknowledgedNotificationSchema$1},wireResultResponse=result2=>object({jsonrpc:literal("2.0"),id:union([string2(),number2().int()]),result:result2}).strict();return{JSONValueSchema:JSONValueSchema$1,JSONObjectSchema:JSONObjectSchema$1,ProgressTokenSchema:ProgressTokenSchema$1,CursorSchema:CursorSchema$1,RequestIdSchema:RequestIdSchema$1,RoleSchema:RoleSchema$1,LoggingLevelSchema:LoggingLevelSchema$1,TaskMetadataSchema:TaskMetadataSchema$1,RelatedTaskMetadataSchema:RelatedTaskMetadataSchema$1,RequestMetaSchema:RequestMetaSchema$1,BaseRequestParamsSchema:BaseRequestParamsSchema$1,TaskAugmentedRequestParamsSchema:TaskAugmentedRequestParamsSchema$1,NotificationsParamsSchema:NotificationsParamsSchema$1,NotificationSchema:NotificationSchema$1,IconSchema:IconSchema$1,IconsSchema:IconsSchema$1,BaseMetadataSchema:BaseMetadataSchema$1,ImplementationSchema:ImplementationSchema$1,ClientTasksCapabilitySchema:ClientTasksCapabilitySchema$1,ServerTasksCapabilitySchema:ServerTasksCapabilitySchema$1,ClientCapabilitiesSchema:ClientCapabilitiesSchema$1,ServerCapabilitiesSchema:ServerCapabilitiesSchema$1,ProgressSchema:ProgressSchema$1,ProgressNotificationParamsSchema:ProgressNotificationParamsSchema$1,ProgressNotificationSchema:ProgressNotificationSchema$1,LoggingMessageNotificationParamsSchema:LoggingMessageNotificationParamsSchema$1,LoggingMessageNotificationSchema:LoggingMessageNotificationSchema$1,ResourceContentsSchema:ResourceContentsSchema$1,TextResourceContentsSchema:TextResourceContentsSchema$1,BlobResourceContentsSchema:BlobResourceContentsSchema$1,AnnotationsSchema:AnnotationsSchema$1,ResourceSchema:ResourceSchema$1,ResourceTemplateSchema:ResourceTemplateSchema$1,ResourceListChangedNotificationSchema:ResourceListChangedNotificationSchema$1,ResourceUpdatedNotificationParamsSchema:ResourceUpdatedNotificationParamsSchema$1,ResourceUpdatedNotificationSchema:ResourceUpdatedNotificationSchema$1,PromptArgumentSchema:PromptArgumentSchema$1,PromptSchema:PromptSchema$1,PromptListChangedNotificationSchema:PromptListChangedNotificationSchema$1,TextContentSchema:TextContentSchema$1,ImageContentSchema:ImageContentSchema$1,AudioContentSchema:AudioContentSchema$1,ToolUseContentSchema:ToolUseContentSchema$1,EmbeddedResourceSchema:EmbeddedResourceSchema$1,ResourceLinkSchema:ResourceLinkSchema$1,ContentBlockSchema:ContentBlockSchema$1,PromptMessageSchema:PromptMessageSchema$1,ToolAnnotationsSchema:ToolAnnotationsSchema$1,ToolListChangedNotificationSchema:ToolListChangedNotificationSchema$1,ModelHintSchema:ModelHintSchema$1,ModelPreferencesSchema:ModelPreferencesSchema$1,ToolChoiceSchema:ToolChoiceSchema$1,BooleanSchemaSchema:BooleanSchemaSchema$1,StringSchemaSchema:StringSchemaSchema$1,NumberSchemaSchema:NumberSchemaSchema$1,UntitledSingleSelectEnumSchemaSchema:UntitledSingleSelectEnumSchemaSchema$1,TitledSingleSelectEnumSchemaSchema:TitledSingleSelectEnumSchemaSchema$1,LegacyTitledEnumSchemaSchema:LegacyTitledEnumSchemaSchema$1,SingleSelectEnumSchemaSchema:SingleSelectEnumSchemaSchema$1,UntitledMultiSelectEnumSchemaSchema:UntitledMultiSelectEnumSchemaSchema$1,TitledMultiSelectEnumSchemaSchema:TitledMultiSelectEnumSchemaSchema$1,MultiSelectEnumSchemaSchema:MultiSelectEnumSchemaSchema$1,EnumSchemaSchema:EnumSchemaSchema$1,PrimitiveSchemaDefinitionSchema:PrimitiveSchemaDefinitionSchema$1,ElicitRequestFormParamsSchema:ElicitRequestFormParamsSchema$1,ResourceTemplateReferenceSchema:ResourceTemplateReferenceSchema$1,PromptReferenceSchema:PromptReferenceSchema$1,RootSchema:RootSchema$1,ClientCapabilities2026Schema,ServerCapabilities2026Schema,RequestMetaEnvelopeSchema,ToolSchema:ToolSchema$1,ToolResultContentSchema:ToolResultContentSchema$1,SamplingMessageContentBlockSchema:SamplingMessageContentBlockSchema$1,SamplingMessageSchema:SamplingMessageSchema$1,ResultTypeSchema,ResultMetaSchema,ResultSchema:ResultSchema$1,PaginatedResultSchema:PaginatedResultSchema$1,CallToolResultSchema:CallToolResultSchema$1,ListToolsResultSchema:ListToolsResultSchema$1,ListPromptsResultSchema:ListPromptsResultSchema$1,GetPromptResultSchema:GetPromptResultSchema$1,ListResourcesResultSchema:ListResourcesResultSchema$1,ListResourceTemplatesResultSchema:ListResourceTemplatesResultSchema$1,ReadResourceResultSchema:ReadResourceResultSchema$1,CompleteResultSchema:CompleteResultSchema$1,CacheableResultSchema,DiscoverResultSchema:DiscoverResultSchema$1,CreateMessageRequestParamsSchema:CreateMessageRequestParamsSchema$1,CreateMessageRequestSchema:CreateMessageRequestSchema$1,ListRootsRequestSchema:ListRootsRequestSchema$1,CreateMessageResultSchema:CreateMessageResultSchema$1,ListRootsResultSchema:ListRootsResultSchema$1,ElicitResultSchema:ElicitResultSchema$1,ElicitRequestURLParamsSchema:ElicitRequestURLParamsSchema$1,ElicitRequestParamsSchema:ElicitRequestParamsSchema$1,ElicitRequestSchema:ElicitRequestSchema$1,InputRequestSchema,InputResponseSchema,InputRequestsSchema,InputResponsesSchema,InputRequiredResultSchema,InputResponseRequestParamsSchema,CallToolRequestSchema:CallToolRequestSchema$1,ListToolsRequestSchema:ListToolsRequestSchema$1,ListPromptsRequestSchema:ListPromptsRequestSchema$1,GetPromptRequestSchema:GetPromptRequestSchema$1,ListResourcesRequestSchema:ListResourcesRequestSchema$1,ListResourceTemplatesRequestSchema:ListResourceTemplatesRequestSchema$1,ReadResourceRequestSchema:ReadResourceRequestSchema$1,CompleteRequestSchema:CompleteRequestSchema$1,DiscoverRequestSchema:DiscoverRequestSchema$1,SubscriptionFilterSchema:SubscriptionFilterSchema$1,SubscriptionsListenRequestSchema:SubscriptionsListenRequestSchema$1,SubscriptionsListenResultMetaSchema:SubscriptionsListenResultMetaSchema$1,SubscriptionsListenResultSchema:SubscriptionsListenResultSchema$1,dispatchRequestSchemas,dispatchResultSchemas,NotificationMetaSchema,SubscriptionsAcknowledgedNotificationSchema:SubscriptionsAcknowledgedNotificationSchema$1,CancelledNotificationParamsSchema:CancelledNotificationParamsSchema$1,CancelledNotificationSchema:CancelledNotificationSchema$1,notificationSchemas2026,JSONRPCResultResponseSchema:wireResultResponse(ResultSchema$1),CallToolResultResponseSchema:wireResultResponse(union([CallToolResultSchema$1,InputRequiredResultSchema])),ListToolsResultResponseSchema:wireResultResponse(ListToolsResultSchema$1),ListPromptsResultResponseSchema:wireResultResponse(ListPromptsResultSchema$1),GetPromptResultResponseSchema:wireResultResponse(union([GetPromptResultSchema$1,InputRequiredResultSchema])),ListResourcesResultResponseSchema:wireResultResponse(ListResourcesResultSchema$1),ListResourceTemplatesResultResponseSchema:wireResultResponse(ListResourceTemplatesResultSchema$1),ReadResourceResultResponseSchema:wireResultResponse(union([ReadResourceResultSchema$1,InputRequiredResultSchema])),CompleteResultResponseSchema:wireResultResponse(CompleteResultSchema$1),DiscoverResultResponseSchema:wireResultResponse(DiscoverResultSchema$1),SubscriptionsListenResultResponseSchema:wireResultResponse(SubscriptionsListenResultSchema$1)}}var memo3;function buildSchemas20262(){return memo3??=build2()}var CACHEABLE_RESULT_METHODS2=["tools/list","prompts/list","resources/list","resources/templates/list","resources/read","server/discover"];function isCacheableResultMethod2(method){return CACHEABLE_RESULT_METHODS2.includes(method)}var RESULT_CACHE_HINT_FALLBACK2=Symbol("modelcontextprotocol.resultCacheHintFallback");function attachCacheHintFallback(result2,hint){if(hint===void 0)return result2;let attached=result2[RESULT_CACHE_HINT_FALLBACK2];if(attached===void 0)return{...result2,[RESULT_CACHE_HINT_FALLBACK2]:hint};let merged={},ttlMs=attached.ttlMs??hint.ttlMs;ttlMs!==void 0&&(merged.ttlMs=ttlMs);let cacheScope=attached.cacheScope??hint.cacheScope;return cacheScope!==void 0&&(merged.cacheScope=cacheScope),{...result2,[RESULT_CACHE_HINT_FALLBACK2]:merged}}function cacheHintFallbackOf2(result2){return result2[RESULT_CACHE_HINT_FALLBACK2]}function isValidCacheTtlMs2(value){return typeof value=="number"&&Number.isSafeInteger(value)&&value>=0}function isValidCacheScope2(value){return value==="public"||value==="private"}function assertValidCacheHint(hint,context){if(hint.ttlMs!==void 0&&!isValidCacheTtlMs2(hint.ttlMs))throw new RangeError(`Invalid cache hint for ${context}: ttlMs must be a non-negative safe integer (got ${String(hint.ttlMs)})`);if(hint.cacheScope!==void 0&&!isValidCacheScope2(hint.cacheScope))throw new RangeError(`Invalid cache hint for ${context}: cacheScope must be 'public' or 'private' (got ${String(hint.cacheScope)})`)}var ProtocolErrorCode2=(function(ProtocolErrorCode$1){return ProtocolErrorCode$1[ProtocolErrorCode$1.ParseError=-32700]="ParseError",ProtocolErrorCode$1[ProtocolErrorCode$1.InvalidRequest=-32600]="InvalidRequest",ProtocolErrorCode$1[ProtocolErrorCode$1.MethodNotFound=-32601]="MethodNotFound",ProtocolErrorCode$1[ProtocolErrorCode$1.InvalidParams=-32602]="InvalidParams",ProtocolErrorCode$1[ProtocolErrorCode$1.InternalError=-32603]="InternalError",ProtocolErrorCode$1[ProtocolErrorCode$1.ResourceNotFound=-32002]="ResourceNotFound",ProtocolErrorCode$1[ProtocolErrorCode$1.MissingRequiredClientCapability=-32021]="MissingRequiredClientCapability",ProtocolErrorCode$1[ProtocolErrorCode$1.UnsupportedProtocolVersion=-32022]="UnsupportedProtocolVersion",ProtocolErrorCode$1[ProtocolErrorCode$1.UrlElicitationRequired=-32042]="UrlElicitationRequired",ProtocolErrorCode$1})({}),ProtocolError3=class ProtocolError4 extends Error{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.ProtocolError"})}static[Symbol.hasInstance](value){return brandedHasInstance2(this,value)}static isInstance(value){if(typeof this!="function")throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");return brandedHasInstance2(this,value)}constructor(code2,message,data){super(message),this.code=code2,this.data=data,this.name="ProtocolError",stampErrorBrands2(this,new.target)}static fromError(code2,message,data){if(code2===ProtocolErrorCode2.UrlElicitationRequired&&data){let errorData=data;if(errorData.elicitations)return new UrlElicitationRequiredError2(errorData.elicitations,message)}if(code2===ProtocolErrorCode2.UnsupportedProtocolVersion&&data){let errorData=data;if(Array.isArray(errorData.supported)&&typeof errorData.requested=="string")return new UnsupportedProtocolVersionError2({supported:errorData.supported,requested:errorData.requested},message)}if(code2===ProtocolErrorCode2.InvalidParams||code2===ProtocolErrorCode2.ResourceNotFound){let errorData=data;if(typeof errorData?.uri=="string"&&(code2===ProtocolErrorCode2.ResourceNotFound||Object.keys(errorData).length===1))return new ResourceNotFoundError2(errorData.uri,message)}if(code2===ProtocolErrorCode2.MissingRequiredClientCapability&&data){let errorData=data;if(errorData.requiredCapabilities!==null&&typeof errorData.requiredCapabilities=="object"&&!Array.isArray(errorData.requiredCapabilities))return new MissingRequiredClientCapabilityError2({requiredCapabilities:errorData.requiredCapabilities},message)}return new ProtocolError4(code2,message,data)}},ResourceNotFoundError2=class extends ProtocolError3{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.ResourceNotFoundError"})}constructor(uri,message=`Resource not found: ${uri}`){super(ProtocolErrorCode2.InvalidParams,message,{uri})}get uri(){return this.data.uri}},UrlElicitationRequiredError2=class extends ProtocolError3{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.UrlElicitationRequiredError"})}constructor(elicitations,message=`URL elicitation${elicitations.length>1?"s":""} required`){super(ProtocolErrorCode2.UrlElicitationRequired,message,{elicitations})}get elicitations(){return this.data?.elicitations??[]}},UnsupportedProtocolVersionError2=class extends ProtocolError3{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.UnsupportedProtocolVersionError"})}constructor(data,message=`Unsupported protocol version: ${data.requested}`){super(ProtocolErrorCode2.UnsupportedProtocolVersion,message,data)}get supported(){return this.data.supported}get requested(){return this.data.requested}},MissingRequiredClientCapabilityError2=class extends ProtocolError3{static{Object.defineProperty(this,"mcpBrand",{value:"mcp.MissingRequiredClientCapabilityError"})}constructor(data,message=`Missing required client capabilities: ${Object.keys(data.requiredCapabilities).join(", ")}`){super(ProtocolErrorCode2.MissingRequiredClientCapability,message,data)}get requiredCapabilities(){return this.data.requiredCapabilities}},DEFAULT_CACHE_TTL_MS2=0,DEFAULT_CACHE_SCOPE2="private",EXTENDED_RESULT_TYPE_METHODS2=["tools/call","prompts/get","resources/read"];function stampResultType2(method,result2){let provided=result2.resultType;if(provided===void 0)return{...result2,resultType:"complete"};if(provided==="complete"||EXTENDED_RESULT_TYPE_METHODS2.includes(method))return result2;throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned resultType '${String(provided)}', but results of ${method} only support 'complete' on protocol revision 2026-07-28`)}function fillCacheFields2(method,result2){let fallback=cacheHintFallbackOf2(result2);if(result2.resultType!=="complete"||!isCacheableResultMethod2(method))return fallback===void 0?result2:stripCacheHintFallback2(result2);let provided=result2,ttlMs=isValidCacheTtlMs2(provided.ttlMs)?provided.ttlMs:resolveTtlMs2(fallback),cacheScope=isValidCacheScope2(provided.cacheScope)?provided.cacheScope:resolveCacheScope2(fallback),filled={...provided,ttlMs,cacheScope};return delete filled[RESULT_CACHE_HINT_FALLBACK2],filled}function isPlainObject$52(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function stampServerInfoMeta2(result2,serverInfo){if(serverInfo===void 0)return result2;let meta2=result2._meta;return meta2===void 0?{...result2,_meta:{[SERVER_INFO_META_KEY]:serverInfo}}:!isPlainObject$52(meta2)||meta2[SERVER_INFO_META_KEY]!==void 0?result2:{...result2,_meta:{...meta2,[SERVER_INFO_META_KEY]:serverInfo}}}function resolveTtlMs2(fallback){return fallback!==void 0&&isValidCacheTtlMs2(fallback.ttlMs)?fallback.ttlMs:DEFAULT_CACHE_TTL_MS2}function resolveCacheScope2(fallback){return fallback!==void 0&&isValidCacheScope2(fallback.cacheScope)?fallback.cacheScope:DEFAULT_CACHE_SCOPE2}function stripCacheHintFallback2(result2){let copy={...result2};return delete copy[RESULT_CACHE_HINT_FALLBACK2],copy}var INPUT_REQUEST_METHODS_20262=["elicitation/create","sampling/createMessage","roots/list"],maps2;function inputSchemaMaps2(){if(maps2)return maps2;let s=buildSchemas20262();return maps2={request:{"elicitation/create":object({method:literal("elicitation/create"),params:s.ElicitRequestParamsSchema}),"sampling/createMessage":object({method:literal("sampling/createMessage"),params:s.CreateMessageRequestParamsSchema}),"roots/list":object({method:literal("roots/list"),params:looseObject({}).optional()})},response:{"elicitation/create":s.ElicitResultSchema,"sampling/createMessage":s.CreateMessageResultSchema,"roots/list":s.ListRootsResultSchema}},maps2}function isInputRequestMethod20262(method){return INPUT_REQUEST_METHODS_20262.includes(method)}function getInputRequestSchema20262(method){return isInputRequestMethod20262(method)?inputSchemaMaps2().request[method]:void 0}function getInputResponseSchema20262(method){return isInputRequestMethod20262(method)?inputSchemaMaps2().response[method]:void 0}var requestMethodKeys2={"tools/call":null,"tools/list":null,"prompts/get":null,"prompts/list":null,"resources/list":null,"resources/templates/list":null,"resources/read":null,"completion/complete":null,"server/discover":null,"subscriptions/listen":null},notificationMethodKeys2={"notifications/cancelled":null,"notifications/progress":null,"notifications/message":null,"notifications/resources/updated":null,"notifications/resources/list_changed":null,"notifications/tools/list_changed":null,"notifications/prompts/list_changed":null,"notifications/subscriptions/acknowledged":null};function hasRequestMethod20262(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys2,method)}function hasNotificationMethod20262(method){return Object.prototype.hasOwnProperty.call(notificationMethodKeys2,method)}function hasResultMethod20262(method){return Object.prototype.hasOwnProperty.call(requestMethodKeys2,method)}function getRequestSchema20262(method){return hasRequestMethod20262(method)?buildSchemas20262().dispatchRequestSchemas[method]:void 0}function getResultSchema20262(method){return hasResultMethod20262(method)?buildSchemas20262().dispatchResultSchemas[method]:void 0}function getNotificationSchema20262(method){return hasNotificationMethod20262(method)?buildSchemas20262().notificationSchemas2026[method]:void 0}var rev2026RequestMethods2=Object.keys(requestMethodKeys2),rev2026NotificationMethods2=Object.keys(notificationMethodKeys2);function isPlainObject$42(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function triState2(schema,raw){if(schema===void 0)return{ok:!1,reason:"not-in-era"};let parsed=schema.safeParse(raw);return parsed.success?{ok:!0,value:parsed.data}:{ok:!1,reason:"invalid",message:String(parsed.error)}}var NOT_IN_ERA2={ok:!1,reason:"not-in-era"},REQUIRED_ENVELOPE_KEYS2=[PROTOCOL_VERSION_META_KEY,CLIENT_CAPABILITIES_META_KEY];function enforceDeletedFields2(method,result2){let next=result2,copied=!1,copy=()=>(copied||(next={...next},copied=!0),next),tools=result2.tools;method==="tools/list"&&Array.isArray(tools)&&tools.some(tool=>isPlainObject$42(tool)&&"execution"in tool)&&(copy().tools=tools.map(tool=>{if(!isPlainObject$42(tool)||!("execution"in tool))return tool;let rest={...tool};return delete rest.execution,rest}));let capabilities=result2.capabilities;if(isPlainObject$42(capabilities)&&"tasks"in capabilities){let rest={...capabilities};delete rest.tasks,copy().capabilities=rest}return next}var rev2026Codec2={era:"2026-07-28",hasRequestMethod:hasRequestMethod20262,hasNotificationMethod:hasNotificationMethod20262,hasInputRequestMethod:method=>getInputRequestSchema20262(method)!==void 0,validateRequest:(method,raw)=>triState2(getRequestSchema20262(method),raw),validateResult:(method,raw)=>triState2(getResultSchema20262(method),raw),validateNotification:(method,raw)=>triState2(getNotificationSchema20262(method),raw),validateInputRequest:(method,raw)=>triState2(getInputRequestSchema20262(method),raw),validateInputResponse:(method,raw)=>triState2(getInputResponseSchema20262(method),raw),samplingResultVariant:()=>NOT_IN_ERA2,outboundEnvelope(material){return{[PROTOCOL_VERSION_META_KEY]:material.protocolVersion,[CLIENT_INFO_META_KEY]:material.clientInfo,[CLIENT_CAPABILITIES_META_KEY]:material.clientCapabilities,...material.logLevel!==void 0&&{[LOG_LEVEL_META_KEY]:material.logLevel}}},validateEnvelopeMeta(meta2){let issues=[];for(let key of REQUIRED_ENVELOPE_KEYS2)key in meta2||issues.push({key,problem:"missing"});let parsed=buildSchemas20262().RequestMetaEnvelopeSchema.safeParse(meta2);if(!parsed.success)for(let issue2 of parsed.error.issues){let path=issue2.path.map(String),key=path.length>0?path.join("."):"_meta";path.length===1&&issues.some(existing=>existing.key===key&&existing.problem==="missing")||issues.push({key,problem:issue2.message})}return issues},projectCallToolResult:result2=>appendTextFallbackForNonObject2(result2),inputRequestSchema:getInputRequestSchema20262,decodeResult(method,raw){if(!isPlainObject$42(raw))return{kind:"invalid",error:new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${method}: not an object`,{method})};let rawResultType=raw.resultType;if(rawResultType===void 0)return{kind:"invalid",error:new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${method}: missing required resultType \u2014 servers implementing protocol revision 2026-07-28 MUST include it (the absent-means-complete bridge applies only to earlier-revision servers)`,{method,violation:"missing-resultType"})};if(typeof rawResultType!="string")return{kind:"invalid",error:new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${method}: non-string resultType`,{method,resultType:rawResultType})};if(rawResultType==="input_required"){let rawInputRequests=raw.inputRequests,inputRequests=isPlainObject$42(rawInputRequests)?rawInputRequests:{},requestState=raw.requestState,metaParse=raw._meta===void 0?void 0:buildSchemas20262().ResultMetaSchema.safeParse(raw._meta),meta2=metaParse?.success?metaParse.data:void 0;return Object.keys(inputRequests).length===0&&typeof requestState!="string"?{kind:"invalid",error:new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${method}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`,{method,violation:"input-required-missing-both"})}:{kind:"input_required",inputRequests,...typeof requestState=="string"&&{requestState},...meta2!==void 0&&{_meta:meta2}}}if(rawResultType!=="complete")return{kind:"invalid",error:new SdkError2(SdkErrorCode2.UnsupportedResultType,`Unsupported result type '${rawResultType}' for ${method}`,{resultType:rawResultType,method})};let wireResultSchemas=getWireResultSchemas2(),wireSchema=Object.hasOwn(wireResultSchemas,method)?wireResultSchemas[method]:void 0;if(wireSchema!==void 0){let parsed=wireSchema.safeParse(raw);if(!parsed.success)return{kind:"invalid",error:new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${method}: ${parsed.error}`,{method})}}let lifted={...raw};return delete lifted.resultType,{kind:"complete",result:lifted}},encodeResult(method,result2,serverInfo){return stampServerInfoMeta2(fillCacheFields2(method,stampResultType2(method,enforceDeletedFields2(method,result2))),serverInfo)},encodeErrorCode:code2=>code2===-32002?-32602:code2,checkInboundEnvelope(material){if(material.envelope===void 0)return"Request is missing the required _meta envelope for protocol revision 2026-07-28 (io.modelcontextprotocol/protocolVersion, io.modelcontextprotocol/clientCapabilities)";let parsed=buildSchemas20262().RequestMetaEnvelopeSchema.safeParse(material.envelope);if(!parsed.success)return`Invalid _meta envelope for protocol revision 2026-07-28: ${parsed.error.issues.map(issue2=>issue2.message).join("; ")}`}},wireResultSchemasMemo2;function getWireResultSchemas2(){if(wireResultSchemasMemo2)return wireResultSchemasMemo2;let s=buildSchemas20262();return wireResultSchemasMemo2={"tools/call":s.CallToolResultSchema,"tools/list":s.ListToolsResultSchema,"prompts/get":s.GetPromptResultSchema,"prompts/list":s.ListPromptsResultSchema,"resources/list":s.ListResourcesResultSchema,"resources/templates/list":s.ListResourceTemplatesResultSchema,"resources/read":s.ReadResourceResultSchema,"completion/complete":s.CompleteResultSchema,"server/discover":s.DiscoverResultSchema},wireResultSchemasMemo2}var MODERN_WIRE_REVISION2="2026-07-28";function codecForVersion2(version2){return version2!==void 0&&isModernProtocolVersion2(version2)?rev2026Codec2:rev2025Codec2}function classifiedWireEra2(classification){return classification.revision!==void 0?codecForVersion2(classification.revision).era:classification.era==="modern"?rev2026Codec2.era:rev2025Codec2.era}function isSpecRequestMethod2(method){return ALL_CODECS2.some(codec=>codec.hasRequestMethod(method))}function isSpecNotificationMethod2(method){return ALL_CODECS2.some(codec=>codec.hasNotificationMethod(method))}function isExtensionReusedRequestMethod2(method){return method==="tasks/get"||method==="tasks/cancel"}var ALL_CODECS2=[rev2025Codec2,rev2026Codec2];function isPlainObject$32(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function requestMetaOf(params){if(!isPlainObject$32(params))return;let meta2=params._meta;return isPlainObject$32(meta2)?meta2:void 0}function hasEnvelopeClaim(params){let meta2=requestMetaOf(params);return meta2!==void 0&&PROTOCOL_VERSION_META_KEY in meta2}function envelopeClaimVersion(params){let value=requestMetaOf(params)?.[PROTOCOL_VERSION_META_KEY];return typeof value=="string"?value:void 0}function validateEnvelopeMeta(meta2){return codecForVersion2(MODERN_WIRE_REVISION2).validateEnvelopeMeta(meta2)}var schemas_exports3=__exportAll2({AnnotationsSchema:()=>AnnotationsSchema,AudioContentSchema:()=>AudioContentSchema,BaseMetadataSchema:()=>BaseMetadataSchema,BaseRequestParamsSchema:()=>BaseRequestParamsSchema,BlobResourceContentsSchema:()=>BlobResourceContentsSchema,BooleanSchemaSchema:()=>BooleanSchemaSchema,CallToolRequestParamsSchema:()=>CallToolRequestParamsSchema,CallToolRequestSchema:()=>CallToolRequestSchema,CallToolResultSchema:()=>CallToolResultSchema,CancelTaskRequestSchema:()=>CancelTaskRequestSchema,CancelTaskResultSchema:()=>CancelTaskResultSchema,CancelledNotificationParamsSchema:()=>CancelledNotificationParamsSchema,CancelledNotificationSchema:()=>CancelledNotificationSchema,ClientCapabilitiesSchema:()=>ClientCapabilitiesSchema,ClientNotificationSchema:()=>ClientNotificationSchema,ClientRequestSchema:()=>ClientRequestSchema,ClientResultSchema:()=>ClientResultSchema,ClientTasksCapabilitySchema:()=>ClientTasksCapabilitySchema,CompatibilityCallToolResultSchema:()=>CompatibilityCallToolResultSchema,CompleteRequestParamsSchema:()=>CompleteRequestParamsSchema,CompleteRequestSchema:()=>CompleteRequestSchema,CompleteResultSchema:()=>CompleteResultSchema,ContentBlockSchema:()=>ContentBlockSchema,CreateMessageRequestParamsSchema:()=>CreateMessageRequestParamsSchema,CreateMessageRequestSchema:()=>CreateMessageRequestSchema,CreateMessageResultSchema:()=>CreateMessageResultSchema,CreateMessageResultWithToolsSchema:()=>CreateMessageResultWithToolsSchema,CreateTaskResultSchema:()=>CreateTaskResultSchema,CursorSchema:()=>CursorSchema,DiscoverRequestSchema:()=>DiscoverRequestSchema,DiscoverResultSchema:()=>DiscoverResultSchema,ElicitRequestFormParamsSchema:()=>ElicitRequestFormParamsSchema,ElicitRequestParamsSchema:()=>ElicitRequestParamsSchema,ElicitRequestSchema:()=>ElicitRequestSchema,ElicitRequestURLParamsSchema:()=>ElicitRequestURLParamsSchema,ElicitResultSchema:()=>ElicitResultSchema,ElicitationCompleteNotificationParamsSchema:()=>ElicitationCompleteNotificationParamsSchema,ElicitationCompleteNotificationSchema:()=>ElicitationCompleteNotificationSchema,EmbeddedResourceSchema:()=>EmbeddedResourceSchema,EmptyResultSchema:()=>EmptyResultSchema,EnumSchemaSchema:()=>EnumSchemaSchema,GetPromptRequestParamsSchema:()=>GetPromptRequestParamsSchema,GetPromptRequestSchema:()=>GetPromptRequestSchema,GetPromptResultSchema:()=>GetPromptResultSchema,GetTaskPayloadRequestSchema:()=>GetTaskPayloadRequestSchema,GetTaskPayloadResultSchema:()=>GetTaskPayloadResultSchema,GetTaskRequestSchema:()=>GetTaskRequestSchema,GetTaskResultSchema:()=>GetTaskResultSchema,IconSchema:()=>IconSchema,IconsSchema:()=>IconsSchema,ImageContentSchema:()=>ImageContentSchema,ImplementationSchema:()=>ImplementationSchema,InitializeRequestParamsSchema:()=>InitializeRequestParamsSchema,InitializeRequestSchema:()=>InitializeRequestSchema,InitializeResultSchema:()=>InitializeResultSchema,InitializedNotificationSchema:()=>InitializedNotificationSchema,JSONArraySchema:()=>JSONArraySchema,JSONObjectSchema:()=>JSONObjectSchema,JSONRPCErrorResponseSchema:()=>JSONRPCErrorResponseSchema,JSONRPCMessageSchema:()=>JSONRPCMessageSchema,JSONRPCNotificationSchema:()=>JSONRPCNotificationSchema,JSONRPCRequestSchema:()=>JSONRPCRequestSchema,JSONRPCResponseSchema:()=>JSONRPCResponseSchema,JSONRPCResultResponseSchema:()=>JSONRPCResultResponseSchema,JSONValueSchema:()=>JSONValueSchema,LegacyTitledEnumSchemaSchema:()=>LegacyTitledEnumSchemaSchema,ListChangedOptionsBaseSchema:()=>ListChangedOptionsBaseSchema,ListPromptsRequestSchema:()=>ListPromptsRequestSchema,ListPromptsResultSchema:()=>ListPromptsResultSchema,ListResourceTemplatesRequestSchema:()=>ListResourceTemplatesRequestSchema,ListResourceTemplatesResultSchema:()=>ListResourceTemplatesResultSchema,ListResourcesRequestSchema:()=>ListResourcesRequestSchema,ListResourcesResultSchema:()=>ListResourcesResultSchema,ListRootsRequestSchema:()=>ListRootsRequestSchema,ListRootsResultSchema:()=>ListRootsResultSchema,ListTasksRequestSchema:()=>ListTasksRequestSchema,ListTasksResultSchema:()=>ListTasksResultSchema,ListToolsRequestSchema:()=>ListToolsRequestSchema,ListToolsResultSchema:()=>ListToolsResultSchema,LoggingLevelSchema:()=>LoggingLevelSchema,LoggingMessageNotificationParamsSchema:()=>LoggingMessageNotificationParamsSchema,LoggingMessageNotificationSchema:()=>LoggingMessageNotificationSchema,ModelHintSchema:()=>ModelHintSchema,ModelPreferencesSchema:()=>ModelPreferencesSchema,MultiSelectEnumSchemaSchema:()=>MultiSelectEnumSchemaSchema,NotificationSchema:()=>NotificationSchema,NotificationsParamsSchema:()=>NotificationsParamsSchema,NumberSchemaSchema:()=>NumberSchemaSchema,PaginatedRequestParamsSchema:()=>PaginatedRequestParamsSchema,PaginatedRequestSchema:()=>PaginatedRequestSchema,PaginatedResultSchema:()=>PaginatedResultSchema,PingRequestSchema:()=>PingRequestSchema,PrimitiveSchemaDefinitionSchema:()=>PrimitiveSchemaDefinitionSchema,ProgressNotificationParamsSchema:()=>ProgressNotificationParamsSchema,ProgressNotificationSchema:()=>ProgressNotificationSchema,ProgressSchema:()=>ProgressSchema,ProgressTokenSchema:()=>ProgressTokenSchema,PromptArgumentSchema:()=>PromptArgumentSchema,PromptListChangedNotificationSchema:()=>PromptListChangedNotificationSchema,PromptMessageSchema:()=>PromptMessageSchema,PromptReferenceSchema:()=>PromptReferenceSchema,PromptSchema:()=>PromptSchema,ReadResourceRequestParamsSchema:()=>ReadResourceRequestParamsSchema,ReadResourceRequestSchema:()=>ReadResourceRequestSchema,ReadResourceResultSchema:()=>ReadResourceResultSchema,RelatedTaskMetadataSchema:()=>RelatedTaskMetadataSchema,RequestIdSchema:()=>RequestIdSchema,RequestMetaSchema:()=>RequestMetaSchema,RequestSchema:()=>RequestSchema,ResourceContentsSchema:()=>ResourceContentsSchema,ResourceLinkSchema:()=>ResourceLinkSchema,ResourceListChangedNotificationSchema:()=>ResourceListChangedNotificationSchema,ResourceRequestParamsSchema:()=>ResourceRequestParamsSchema,ResourceSchema:()=>ResourceSchema,ResourceTemplateReferenceSchema:()=>ResourceTemplateReferenceSchema,ResourceTemplateSchema:()=>ResourceTemplateSchema,ResourceUpdatedNotificationParamsSchema:()=>ResourceUpdatedNotificationParamsSchema,ResourceUpdatedNotificationSchema:()=>ResourceUpdatedNotificationSchema,ResultMetaObjectSchema:()=>ResultMetaObjectSchema,ResultSchema:()=>ResultSchema,RoleSchema:()=>RoleSchema,RootSchema:()=>RootSchema,RootsListChangedNotificationSchema:()=>RootsListChangedNotificationSchema,SamplingContentSchema:()=>SamplingContentSchema,SamplingMessageContentBlockSchema:()=>SamplingMessageContentBlockSchema,SamplingMessageSchema:()=>SamplingMessageSchema,ServerCapabilitiesSchema:()=>ServerCapabilitiesSchema,ServerNotificationSchema:()=>ServerNotificationSchema,ServerRequestSchema:()=>ServerRequestSchema,ServerResultSchema:()=>ServerResultSchema,ServerTasksCapabilitySchema:()=>ServerTasksCapabilitySchema,SetLevelRequestParamsSchema:()=>SetLevelRequestParamsSchema,SetLevelRequestSchema:()=>SetLevelRequestSchema,SingleSelectEnumSchemaSchema:()=>SingleSelectEnumSchemaSchema,StringSchemaSchema:()=>StringSchemaSchema,SubscribeRequestParamsSchema:()=>SubscribeRequestParamsSchema,SubscribeRequestSchema:()=>SubscribeRequestSchema,SubscriptionFilterSchema:()=>SubscriptionFilterSchema,SubscriptionsAcknowledgedNotificationParamsSchema:()=>SubscriptionsAcknowledgedNotificationParamsSchema,SubscriptionsAcknowledgedNotificationSchema:()=>SubscriptionsAcknowledgedNotificationSchema,SubscriptionsListenRequestParamsSchema:()=>SubscriptionsListenRequestParamsSchema,SubscriptionsListenRequestSchema:()=>SubscriptionsListenRequestSchema,SubscriptionsListenResultMetaSchema:()=>SubscriptionsListenResultMetaSchema,SubscriptionsListenResultSchema:()=>SubscriptionsListenResultSchema,TaskAugmentedRequestParamsSchema:()=>TaskAugmentedRequestParamsSchema,TaskCreationParamsSchema:()=>TaskCreationParamsSchema,TaskMetadataSchema:()=>TaskMetadataSchema,TaskSchema:()=>TaskSchema,TaskStatusNotificationParamsSchema:()=>TaskStatusNotificationParamsSchema,TaskStatusNotificationSchema:()=>TaskStatusNotificationSchema,TaskStatusSchema:()=>TaskStatusSchema,TextContentSchema:()=>TextContentSchema,TextResourceContentsSchema:()=>TextResourceContentsSchema,TitledMultiSelectEnumSchemaSchema:()=>TitledMultiSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema:()=>TitledSingleSelectEnumSchemaSchema,ToolAnnotationsSchema:()=>ToolAnnotationsSchema,ToolChoiceSchema:()=>ToolChoiceSchema,ToolExecutionSchema:()=>ToolExecutionSchema,ToolListChangedNotificationSchema:()=>ToolListChangedNotificationSchema,ToolResultContentSchema:()=>ToolResultContentSchema,ToolSchema:()=>ToolSchema,ToolUseContentSchema:()=>ToolUseContentSchema,UnsubscribeRequestParamsSchema:()=>UnsubscribeRequestParamsSchema,UnsubscribeRequestSchema:()=>UnsubscribeRequestSchema,UntitledMultiSelectEnumSchemaSchema:()=>UntitledMultiSelectEnumSchemaSchema,UntitledSingleSelectEnumSchemaSchema:()=>UntitledSingleSelectEnumSchemaSchema});var isJSONRPCRequest2=value=>JSONRPCRequestSchema.safeParse(value).success,isJSONRPCNotification2=value=>JSONRPCNotificationSchema.safeParse(value).success,isJSONRPCResultResponse2=value=>JSONRPCResultResponseSchema.safeParse(value).success,isJSONRPCErrorResponse2=value=>JSONRPCErrorResponseSchema.safeParse(value).success;var isInputRequiredResult2=value=>typeof value=="object"&&value!==null&&!Array.isArray(value)&&value.resultType==="input_required";function assertCompleteRequestPrompt2(request){if(request.params.ref.type!=="ref/prompt")throw new TypeError(`Expected CompleteRequestPrompt, but got ${request.params.ref.type}`)}function assertCompleteRequestResourceTemplate2(request){if(request.params.ref.type!=="ref/resource")throw new TypeError(`Expected CompleteRequestResourceTemplate, but got ${request.params.ref.type}`)}var X_MCP_HEADER_KEY2="x-mcp-header",RFC9110_TOKEN2=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,PERMITTED_X_MCP_HEADER_TYPES2=new Set(["string","integer","boolean"]);function scanXMcpHeaderDeclarations2(inputSchema){let declarations=[],seenLower=new Map,numberFault,visit=(node2,path,reachable)=>{if(node2===null||typeof node2!="object")return;let schema=node2;if(X_MCP_HEADER_KEY2 in schema){if(!reachable||path.length===0)return`${pathName2(path)}: x-mcp-header is only permitted on properties statically reachable via a chain of 'properties' keys (not under items, additionalProperties, oneOf/anyOf/allOf/not, if/then/else, or $ref)`;let raw=schema[X_MCP_HEADER_KEY2];if(typeof raw!="string"||raw.length===0)return`${pathName2(path)}: x-mcp-header MUST be a non-empty string`;if(!RFC9110_TOKEN2.test(raw))return`${pathName2(path)}: x-mcp-header '${raw}' is not a valid RFC 9110 token (no spaces, control characters or HTTP delimiters)`;let type=typeof schema.type=="string"?schema.type:void 0;if(type===void 0||!PERMITTED_X_MCP_HEADER_TYPES2.has(type)){let fault$1=`${pathName2(path)}: x-mcp-header is only permitted on primitive-typed properties (string, integer, boolean); got ${type??"<none>"}`;if(type!=="number")return fault$1;numberFault??=fault$1}let lower=raw.toLowerCase(),prior=seenLower.get(lower);if(prior!==void 0)return`x-mcp-header '${raw}' is not case-insensitively unique (also declared as '${prior}')`;seenLower.set(lower,raw),declarations.push({path,headerName:raw,type})}let properties=schema.properties;if(properties!==null&&typeof properties=="object")for(let[key,child]of Object.entries(properties)){let fault$1=visit(child,[...path,key],reachable);if(fault$1!==void 0)return fault$1}for(let k of NON_REACHABLE_SUBSCHEMA_KEYWORDS2){let sub=schema[k];if(sub===void 0)continue;let branches=Array.isArray(sub)?sub:sub!==null&&typeof sub=="object"&&OBJECT_VALUED_SUBSCHEMA_KEYWORDS2.has(k)?Object.values(sub):[sub];for(let branch of branches){let fault$1=visit(branch,[...path,`<${k}>`],!1);if(fault$1!==void 0)return fault$1}}},fault=visit(inputSchema,[],!0);return fault!==void 0?{valid:!1,reason:numberFault??fault}:numberFault===void 0?{valid:!0,declarations}:{valid:!1,reason:numberFault,declarations}}var NON_REACHABLE_SUBSCHEMA_KEYWORDS2=["items","prefixItems","contains","additionalProperties","unevaluatedProperties","unevaluatedItems","propertyNames","patternProperties","dependentSchemas","oneOf","anyOf","allOf","not","if","then","else","$defs","definitions"],OBJECT_VALUED_SUBSCHEMA_KEYWORDS2=new Set(["patternProperties","dependentSchemas","$defs","definitions"]);function pathName2(path){return path.length===0?"<root>":path.join(".")}var HEADER_MISMATCH_ERROR_CODE2=-32020,INBOUND_VALIDATION_LADDER2=[{rung:"http-method",order:1,evaluatedAt:"edge",codes:[-32e3],conformance:[],rationale:"The modern era is POST-only; GET/DELETE are body-less 2025-era session operations and are method-routed to legacy serving (405 when legacy serving is not configured), before any body is read."},{rung:"jsonrpc-shape",order:2,evaluatedAt:"edge",codes:[ProtocolErrorCode2.InvalidRequest],conformance:["server-stateless"],rationale:"The body must be a JSON-RPC request or notification: posted responses and batch arrays containing a modern or invalid element are rejected before classification (element-wise batch rule); all-legacy arrays stay legacy traffic."},{rung:"era-classification",order:3,evaluatedAt:"edge",codes:[HEADER_MISMATCH_ERROR_CODE2,ProtocolErrorCode2.UnsupportedProtocolVersion],conformance:["server-stateless","http-header-validation","http-custom-header-server-validation"],rationale:"Body-primary era classification with the protocol-version header as a cross-check; a header/body disagreement is rejected with -32020 (HeaderMismatch), and an envelope-less request on a modern-only endpoint is answered with the unsupported-protocol-version error naming the supported revisions."},{rung:"envelope",order:4,evaluatedAt:"edge",codes:[ProtocolErrorCode2.InvalidParams],conformance:["server-stateless"],rationale:"A present envelope claim with a malformed envelope \u2014 and a missing envelope on a request whose protocol-version header names a modern revision \u2014 is an invalid-params rejection naming the offending or missing key(s); never a silent fall back to legacy handling. This is the only place an invalid-params rejection maps to HTTP 400."},{rung:"method-registry",order:5,evaluatedAt:"dispatch",codes:[ProtocolErrorCode2.MethodNotFound],conformance:["server-stateless"],rationale:"Method existence outranks parameter validity: a method absent from the negotiated revision\u2019s registry (or with no handler installed) answers method-not-found before params or capabilities are looked at."},{rung:"request-params",order:6,evaluatedAt:"dispatch",codes:[ProtocolErrorCode2.InvalidParams],conformance:[],rationale:"Per-method params validation; emitted in-band by the dispatch layer (HTTP 200), never via the ladder status table."},{rung:"standard-header-validation",order:7,evaluatedAt:"pre-dispatch",codes:[HEADER_MISMATCH_ERROR_CODE2],conformance:["http-header-validation"],rationale:"SEP-2243 standard `MCP-Protocol-Version` / `Mcp-Method` / `Mcp-Name` headers \u2014 presence, sentinel decoding, and `Mcp-Name` \u2194 body cross-check \u2014 are validated by the HTTP entry on a modern-classified request after the supported-revision gate and before dispatch. The spec requires `MCP-Protocol-Version` and `Mcp-Method` on every modern *request* POST (`Mcp-Name` only for the methods that mirror `params.name` / `params.uri` / `params.taskId`, see `MCP_NAME_HEADER_SOURCE`) and names them in that order, so a request missing several is answered by the earliest. Notification POSTs are exempt: the presence half runs on requests only, so a modern-enveloped notification is dispatched even with no standard headers at all. The classifier\u2019s own header-mismatch cells (protocol-version, `Mcp-Method` mismatch) stay on the edge `era-classification` rung; this rung carries the entry-layer presence/`Mcp-Name` half \u2014 including the missing `MCP-Protocol-Version` cell, which cannot live on the edge rung without breaking body-primary classification. Evaluated before the capability gate, the factory call, and the `Mcp-Param-*` rung so a request that fails several rungs is answered by the standard-header rung first. The documented order (after method-registry 5 and request-params 6) is NOT the observed precedence: serveModern evaluates this rung immediately after the supported-revision gate, so a request that also fails a dispatch rung is answered here before the dispatch rungs (5\u20136) are consulted."},{rung:"client-capabilities",order:8,evaluatedAt:"pre-dispatch",codes:[ProtocolErrorCode2.MissingRequiredClientCapability],conformance:["server-stateless"],rationale:"The capability requirement is checked by the HTTP entry, pre-dispatch, against the validated envelope the classifier produced \u2014 pinning the spec-mandated HTTP 400 independently of how dispatch- and handler-produced errors are mapped. The documented order (after method resolution and params validation) is preserved observably only while the requirement table is empty: once a served method gains a requirement entry, a request that is missing the capability and would also fail a dispatch rung is answered by this gate first, so the entry must consult the method registry before the gate if the documented precedence is to stay observable."},{rung:"param-header-validation",order:9,evaluatedAt:"pre-dispatch",codes:[HEADER_MISMATCH_ERROR_CODE2],conformance:["http-custom-header-server-validation"],rationale:"SEP-2243 `Mcp-Param-*` headers are validated against the named tool\u2019s `x-mcp-header` declarations and the body `arguments` after the tool registry is known and before dispatch reaches the handler; a missing/disagreeing/malformed header is rejected 400 / -32020 with the same shape as the standard-header cross-checks. The documented order (after method resolution and params validation) is preserved observably only when the body `arguments` would otherwise validate: the check runs pre-dispatch, so a `tools/call` that fails BOTH this rung and a dispatch-time rung (e.g. order-6 `request-params`, -32602) is answered by this gate first with 400 / -32020, not by the earlier-ordered rung."}],LADDER_ERROR_HTTP_STATUS2={[ProtocolErrorCode2.ParseError]:400,[ProtocolErrorCode2.InvalidRequest]:400,[ProtocolErrorCode2.MethodNotFound]:404,[ProtocolErrorCode2.UnsupportedProtocolVersion]:400,[ProtocolErrorCode2.MissingRequiredClientCapability]:400,[HEADER_MISMATCH_ERROR_CODE2]:400};function rejection(rung,cell,httpStatus,error2,settled){return{kind:"reject",rung,cell,httpStatus,code:error2.code,message:error2.message,...error2.data!==void 0&&{data:error2.data},settled}}function carriesValidModernEnvelopeClaim(params){if(!hasEnvelopeClaim(params))return!1;let claimedVersion=envelopeClaimVersion(params);if(claimedVersion===void 0||!isModernProtocolVersion2(claimedVersion))return!1;let meta2=requestMetaOf(params);return meta2!==void 0&&validateEnvelopeMeta(meta2).length===0}function modernOnlyStrictRejection(route,supportedVersions){switch(route.reason){case"http-method":return rejection("http-method","modern-only-method-not-allowed",405,new ProtocolError3(-32e3,"Method not allowed."),!0);case"batch":return rejection("jsonrpc-shape","modern-only-batch-not-supported",400,new ProtocolError3(ProtocolErrorCode2.InvalidRequest,"Bad Request: JSON-RPC batches are not supported by this endpoint"),!0);case"response":return rejection("jsonrpc-shape","modern-only-response-post",400,new ProtocolError3(ProtocolErrorCode2.InvalidRequest,"Bad Request: JSON-RPC responses cannot be posted to this endpoint"),!0);case"notification":return;case"initialize":case"no-claim":{let requested=route.requestedVersion;return rejection("era-classification","modern-only-missing-envelope",400,requested===void 0?new ProtocolError3(ProtocolErrorCode2.UnsupportedProtocolVersion,"Unsupported protocol version: the request did not name a protocol version",{supported:[...supportedVersions]}):new UnsupportedProtocolVersionError2({supported:[...supportedVersions],requested}),!0)}}}function parseSchema2(schema,data){return safeParse(schema,data)}function shapeKeys2(schemas){return new Set(schemas.flatMap(schema=>Object.keys(schema.shape)))}function isStandardSchema2(schema){if(schema==null)return!1;let schemaType=typeof schema;return schemaType!=="object"&&schemaType!=="function"||!("~standard"in schema)?!1:typeof schema["~standard"]?.validate=="function"}var warnedZodFallback2=!1,JSON_SCHEMA_CONVERSION_TARGET2="draft-2020-12";function standardSchemaToJsonSchema2(schema,io2="input"){let std=schema["~standard"],result2;if(std.jsonSchema)result2=std.jsonSchema[io2]({target:JSON_SCHEMA_CONVERSION_TARGET2});else if(std.vendor==="zod"){if(!("_zod"in schema))throw new Error("Schema appears to be from zod 3, which the SDK cannot convert to JSON Schema. Upgrade to zod >=4.2.0, or wrap your JSON Schema with fromJsonSchema().");warnedZodFallback2||(warnedZodFallback2=!0,console.warn("[mcp-sdk] Your zod version does not implement `~standard.jsonSchema` (added in zod 4.2.0). Falling back to z.toJSONSchema(). Upgrade to zod >=4.2.0 to silence this warning.")),result2=toJSONSchema(schema,{target:JSON_SCHEMA_CONVERSION_TARGET2,io:io2})}else throw new Error(`Schema library "${std.vendor}" does not implement StandardJSONSchemaV1 (\`~standard.jsonSchema\`). Upgrade to a version that does, or wrap your JSON Schema with fromJsonSchema().`);if(io2==="output")return result2.type!==void 0?result2:isProvablyObjectShapedRoot2(result2)?{type:"object",...result2}:result2;if(result2.type!==void 0&&result2.type!=="object")throw new Error(`MCP tool and prompt schemas must describe objects (got type: ${JSON.stringify(result2.type)}). Wrap your schema in z.object({...}) or equivalent.`);return{type:"object",...result2}}var LOCAL_DEFINITION_REF2=/^#\/(\$defs|definitions)\/([^/~%]+)$/;function isProvablyObjectShapedRoot2(schema,root=schema){if("properties"in schema||"patternProperties"in schema||"additionalProperties"in schema||"required"in schema)return!0;let ref=typeof schema.$ref=="string"&&LOCAL_DEFINITION_REF2.exec(schema.$ref);if(ref&&root[ref[1]]?.[ref[2]]?.type==="object")return!0;for(let key of["oneOf","anyOf","allOf"]){let members2=schema[key];if(Array.isArray(members2)&&members2.length>0)return members2.every(m=>m!==null&&typeof m=="object"&&(m.type==="object"||isProvablyObjectShapedRoot2(m,"$id"in m?{}:root)))}return!1}function formatIssue2(issue2){return issue2.path?.length?`${issue2.path.map(p=>String(typeof p=="object"?p.key:p)).join(".")}: ${issue2.message}`:issue2.message}async function validateStandardSchema2(schema,data){let result2=await schema["~standard"].validate(data);return result2.issues&&result2.issues.length>0?{success:!1,error:result2.issues.map(i=>formatIssue2(i)).join(", ")}:{success:!0,data:result2.value}}function zodEmittedPattern2(schema){let jsonSchema=toJSONSchema(schema,{target:JSON_SCHEMA_CONVERSION_TARGET2,io:"input"});return typeof jsonSchema.pattern=="string"?jsonSchema.pattern:void 0}var DATETIME_FRACTION_DIGITS2=/\\\.\\d\{(\d+)\}/;function datetimeReferenceSchemas2(pattern){let fractionDigits=DATETIME_FRACTION_DIGITS2.exec(pattern),precisions=[void 0,-1,0];return fractionDigits&&precisions.push(Number(fractionDigits[1])),[!1,!0].flatMap(local=>[!1,!0].flatMap(offset=>precisions.map(precision=>iso_exports.datetime({local,offset,precision}))))}function referencePatternsForFormat2(format,pattern){let referenceSchemas;switch(format){case"email":referenceSchemas=[email2()];break;case"uri":referenceSchemas=[url()];break;case"date":referenceSchemas=[iso_exports.date()];break;case"date-time":referenceSchemas=datetimeReferenceSchemas2(pattern);break}return new Set(referenceSchemas.map(schema=>zodEmittedPattern2(schema)).filter(emitted=>emitted!==void 0))}function isLibraryFormatPattern2(format,pattern,vendor){return vendor!=="zod"?!0:referencePatternsForFormat2(format,pattern).has(pattern)}function promptArgumentsFromStandardSchema(schema){let jsonSchema=standardSchemaToJsonSchema2(schema,"input"),properties=jsonSchema.properties||{},required2=jsonSchema.required||[];return Object.entries(properties).map(([name2,prop])=>({name:name2,description:prop?.description,required:required2.includes(name2)}))}function isJsonObject2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function convertStandardElicitationSchema2(schema){try{return standardSchemaToJsonSchema2(schema,"input")}catch(error2){let detail=error2 instanceof Error?error2.message:String(error2);throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation requestedSchema must describe an object with flat primitive properties: ${detail}`)}}var ANNOTATION_ONLY_JSON_SCHEMA_KEYWORDS2=new Set(["$comment","deprecated","description","examples","readOnly","title","writeOnly"]);function isAnnotationOnlyJsonSchemaKeyword2(key){return ANNOTATION_ONLY_JSON_SCHEMA_KEYWORDS2.has(key)||key.startsWith("x-")}var ROOT_KEYS2=new Set(["$schema",...Object.keys(ElicitRequestFormParamsSchema.shape.requestedSchema.shape)]),PROPERTY_KEYS_BY_TYPE2={string:shapeKeys2([StringSchemaSchema,UntitledSingleSelectEnumSchemaSchema,TitledSingleSelectEnumSchemaSchema,LegacyTitledEnumSchemaSchema]),number:shapeKeys2([NumberSchemaSchema]),integer:shapeKeys2([NumberSchemaSchema]),boolean:shapeKeys2([BooleanSchemaSchema]),array:shapeKeys2([UntitledMultiSelectEnumSchemaSchema,TitledMultiSelectEnumSchemaSchema])},SUPPORTED_STRING_FORMATS2=new Set(StringSchemaSchema.shape.format.unwrap().options);function walkProperty2(node2,path,vendor,unsupported){if(!isJsonObject2(node2))return node2;let allowedKeys=typeof node2.type=="string"&&Object.hasOwn(PROPERTY_KEYS_BY_TYPE2,node2.type)?PROPERTY_KEYS_BY_TYPE2[node2.type]:void 0;if(allowedKeys===void 0)return node2;let pruned={};for(let[key,value]of Object.entries(node2))allowedKeys.has(key)||isAnnotationOnlyJsonSchemaKeyword2(key)?pruned[key]=value:key==="pattern"&&node2.type==="string"&&typeof node2.format=="string"?SUPPORTED_STRING_FORMATS2.has(node2.format)?(typeof value!="string"||!isLibraryFormatPattern2(node2.format,value,vendor))&&unsupported.push(`${path}.${key}`):pruned[key]=value:unsupported.push(`${path}.${key}`);return pruned}function walkRequestedSchema2(converted,vendor){let pruned={},unsupported=[];for(let[key,value]of Object.entries(converted))key==="properties"&&isJsonObject2(value)?pruned[key]=Object.fromEntries(Object.entries(value).map(([name2,node2])=>[name2,walkProperty2(node2,`properties.${name2}`,vendor,unsupported)])):ROOT_KEYS2.has(key)?pruned[key]=value:isAnnotationOnlyJsonSchemaKeyword2(key)||unsupported.push(key);if(unsupported.length>0)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${unsupported.join(", ")}`);return pruned}function describeUnsupportedProperties2(pruned,fallback){if(!isJsonObject2(pruned.properties))return fallback;let offenders=Object.entries(pruned.properties).filter(([,node2])=>!parseSchema2(PrimitiveSchemaDefinitionSchema,node2).success).map(([name2])=>`properties.${name2}`);return offenders.length>0?offenders.join(", "):fallback}function findDroppedConstraintPaths2(original,parsed,path=""){return Array.isArray(original)&&Array.isArray(parsed)?original.flatMap((item,index)=>findDroppedConstraintPaths2(item,parsed[index],`${path}[${index}]`)):!isJsonObject2(original)||!isJsonObject2(parsed)?[]:Object.entries(original).flatMap(([key,value])=>{let childPath=path?`${path}.${key}`:key;return Object.prototype.hasOwnProperty.call(parsed,key)?findDroppedConstraintPaths2(value,parsed[key],childPath):isAnnotationOnlyJsonSchemaKeyword2(key)?[]:[childPath]})}function normalizeElicitInputParams2(input){if(!isStandardSchema2(input.requestedSchema))return{...input,mode:"form",requestedSchema:input.requestedSchema};let vendor=input.requestedSchema["~standard"].vendor,pruned=walkRequestedSchema2(convertStandardElicitationSchema2(input.requestedSchema),vendor),parsed=parseSchema2(ElicitRequestFormParamsSchema.shape.requestedSchema,pruned);if(!parsed.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation requestedSchema only supports flat primitive properties (string, number, integer, boolean, and string enums): ${describeUnsupportedProperties2(pruned,parsed.error.message)}`);let droppedConstraints=findDroppedConstraintPaths2(pruned,parsed.data);if(droppedConstraints.length>0)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation requestedSchema contains unsupported JSON Schema constraint(s) after Standard Schema conversion: ${droppedConstraints.join(", ")}`);let danglingRequired=(parsed.data.required??[]).filter(key=>!Object.prototype.hasOwnProperty.call(parsed.data.properties,key));if(danglingRequired.length>0)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation requestedSchema lists required properties that are not defined in properties: ${danglingRequired.join(", ")}`);return{...input,mode:"form",requestedSchema:parsed.data}}function buildInputRequired2(spec){let hasInputRequests=spec.inputRequests!==void 0&&Object.keys(spec.inputRequests).length>0,hasRequestState=typeof spec.requestState=="string";if(!hasInputRequests&&!hasRequestState)throw new TypeError("inputRequired() requires at least one of inputRequests (with at least one entry) or requestState (spec: every InputRequiredResult MUST include at least one of the two)");return{resultType:"input_required",...spec.inputRequests!==void 0&&{inputRequests:spec.inputRequests},...spec.requestState!==void 0&&{requestState:spec.requestState}}}var inputRequired2=Object.assign(buildInputRequired2,{elicit(params){try{return{method:"elicitation/create",params:normalizeElicitInputParams2(params)}}catch(error2){throw error2 instanceof ProtocolError3?new TypeError(error2.message,{cause:error2}):error2}},elicitUrl(params){return{method:"elicitation/create",params:{...params,mode:"url"}}},createMessage(params){return{method:"sampling/createMessage",params}},listRoots(){return{method:"roots/list"}}});var REQUEST_STATE_ONLY_LEG_PACING_MS2=250;function inputRequiredRoundsExceededMessage2(method,maxRounds){return`Multi-round-trip request '${method}' still required input after ${maxRounds} rounds (inputRequired.maxRounds)`}function sleep2(ms,signal){return new Promise((resolve,reject)=>{if(signal?.aborted){reject(signal.reason instanceof SdkError2?signal.reason:new SdkError2(SdkErrorCode2.RequestTimeout,String(signal.reason)));return}let timer=setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{clearTimeout(timer),reject(signal?.reason instanceof SdkError2?signal.reason:new SdkError2(SdkErrorCode2.RequestTimeout,String(signal?.reason)))};signal?.addEventListener("abort",onAbort,{once:!0})})}function linkedRoundAbort2(outer){let controller=new AbortController,onOuterAbort=()=>controller.abort(outer?.reason);return outer?.addEventListener("abort",onOuterAbort,{once:!0}),outer?.aborted&&controller.abort(outer.reason),{signal:controller.signal,abort:reason=>controller.abort(reason),dispose:()=>outer?.removeEventListener("abort",onOuterAbort)}}var SPEC_SCHEMA_KEYS2=["AnnotationsSchema","AudioContentSchema","BaseMetadataSchema","BlobResourceContentsSchema","BooleanSchemaSchema","CallToolRequestSchema","CallToolRequestParamsSchema","CallToolResultSchema","CancelledNotificationSchema","CancelledNotificationParamsSchema","CancelTaskRequestSchema","CancelTaskResultSchema","ClientCapabilitiesSchema","ClientNotificationSchema","ClientRequestSchema","ClientResultSchema","CompatibilityCallToolResultSchema","CompleteRequestSchema","CompleteRequestParamsSchema","CompleteResultSchema","ContentBlockSchema","CreateMessageRequestSchema","CreateMessageRequestParamsSchema","CreateMessageResultSchema","CreateMessageResultWithToolsSchema","CreateTaskResultSchema","CursorSchema","DiscoverRequestSchema","DiscoverResultSchema","ElicitationCompleteNotificationSchema","ElicitationCompleteNotificationParamsSchema","ElicitRequestSchema","ElicitRequestFormParamsSchema","ElicitRequestParamsSchema","ElicitRequestURLParamsSchema","ElicitResultSchema","EmbeddedResourceSchema","EmptyResultSchema","EnumSchemaSchema","GetPromptRequestSchema","GetPromptRequestParamsSchema","GetPromptResultSchema","GetTaskPayloadRequestSchema","GetTaskPayloadResultSchema","GetTaskRequestSchema","GetTaskResultSchema","IconSchema","IconsSchema","ImageContentSchema","ImplementationSchema","InitializedNotificationSchema","InitializeRequestSchema","InitializeRequestParamsSchema","InitializeResultSchema","JSONArraySchema","JSONObjectSchema","JSONRPCErrorResponseSchema","JSONRPCMessageSchema","JSONRPCNotificationSchema","JSONRPCRequestSchema","JSONRPCResponseSchema","JSONRPCResultResponseSchema","JSONValueSchema","LegacyTitledEnumSchemaSchema","ListPromptsRequestSchema","ListPromptsResultSchema","ListResourcesRequestSchema","ListResourcesResultSchema","ListResourceTemplatesRequestSchema","ListResourceTemplatesResultSchema","ListRootsRequestSchema","ListRootsResultSchema","ListTasksRequestSchema","ListTasksResultSchema","ListToolsRequestSchema","ListToolsResultSchema","LoggingLevelSchema","LoggingMessageNotificationSchema","LoggingMessageNotificationParamsSchema","ModelHintSchema","ModelPreferencesSchema","MultiSelectEnumSchemaSchema","NotificationSchema","NumberSchemaSchema","PaginatedRequestSchema","PaginatedRequestParamsSchema","PaginatedResultSchema","PingRequestSchema","PrimitiveSchemaDefinitionSchema","ProgressSchema","ProgressNotificationSchema","ProgressNotificationParamsSchema","ProgressTokenSchema","PromptSchema","PromptArgumentSchema","PromptListChangedNotificationSchema","PromptMessageSchema","PromptReferenceSchema","ReadResourceRequestSchema","ReadResourceRequestParamsSchema","ReadResourceResultSchema","RelatedTaskMetadataSchema","RequestSchema","RequestIdSchema","RequestMetaSchema","ResourceSchema","ResourceContentsSchema","ResourceLinkSchema","ResourceListChangedNotificationSchema","ResourceRequestParamsSchema","ResourceTemplateSchema","ResourceTemplateReferenceSchema","ResourceUpdatedNotificationSchema","ResourceUpdatedNotificationParamsSchema","ResultMetaObjectSchema","ResultSchema","RoleSchema","RootSchema","RootsListChangedNotificationSchema","SamplingContentSchema","SamplingMessageSchema","SamplingMessageContentBlockSchema","ServerCapabilitiesSchema","ServerNotificationSchema","ServerRequestSchema","ServerResultSchema","SetLevelRequestSchema","SetLevelRequestParamsSchema","SingleSelectEnumSchemaSchema","StringSchemaSchema","SubscribeRequestSchema","SubscribeRequestParamsSchema","SubscriptionFilterSchema","SubscriptionsAcknowledgedNotificationSchema","SubscriptionsAcknowledgedNotificationParamsSchema","SubscriptionsListenRequestSchema","SubscriptionsListenRequestParamsSchema","SubscriptionsListenResultSchema","SubscriptionsListenResultMetaSchema","TaskAugmentedRequestParamsSchema","TaskCreationParamsSchema","TaskMetadataSchema","TaskSchema","TaskStatusSchema","TaskStatusNotificationSchema","TaskStatusNotificationParamsSchema","TextContentSchema","TextResourceContentsSchema","TitledMultiSelectEnumSchemaSchema","TitledSingleSelectEnumSchemaSchema","ToolSchema","ToolAnnotationsSchema","ToolChoiceSchema","ToolExecutionSchema","ToolListChangedNotificationSchema","ToolResultContentSchema","ToolUseContentSchema","UnsubscribeRequestSchema","UnsubscribeRequestParamsSchema","UntitledMultiSelectEnumSchemaSchema","UntitledSingleSelectEnumSchemaSchema"],authSchemas2={IdJagTokenExchangeResponseSchema,OAuthClientInformationFullSchema,OAuthClientInformationSchema,OAuthClientMetadataSchema,OAuthClientRegistrationErrorSchema,OAuthErrorResponseSchema,OAuthMetadataSchema,OAuthProtectedResourceMetadataSchema,OAuthTokenRevocationRequestSchema,OAuthTokensSchema,OpenIdProviderDiscoveryMetadataSchema,OpenIdProviderMetadataSchema},_specTypeSchemas2={},_isSpecType2={};function register2(key,schema){let name2=key.slice(0,-6);_specTypeSchemas2[name2]=schema,_isSpecType2[name2]=v=>schema.safeParse(v).success}for(let key of SPEC_SCHEMA_KEYS2)register2(key,schemas_exports3[key]);for(let[key,schema]of Object.entries(authSchemas2))register2(key,schema);var specTypeSchemas2=Object.freeze(_specTypeSchemas2),isSpecType2=Object.freeze(_isSpecType2);function bootstrapOutboundCodec2(method){switch(method){case"initialize":case"notifications/initialized":return codecForVersion2(void 0);case"server/discover":return codecForVersion2(MODERN_WIRE_REVISION2);default:return}}var DEFAULT_REQUEST_TIMEOUT_MSEC2=6e4,RESERVED_ENVELOPE_META_KEYS2=[PROTOCOL_VERSION_META_KEY,CLIENT_INFO_META_KEY,CLIENT_CAPABILITIES_META_KEY,LOG_LEVEL_META_KEY],RETRY_PARAMS_KEYS2=["inputResponses","requestState"];function liftWireOnlyMaterial2(message,kind){let params=message.params;if(!isPlainObject$12(params))return{message,lifted:{}};let meta2=params._meta,envelopeKeys=isPlainObject$12(meta2)?RESERVED_ENVELOPE_META_KEYS2.filter(key=>key in meta2):[],retryKeys=kind==="request"?RETRY_PARAMS_KEYS2.filter(key=>key in params):[];if(envelopeKeys.length===0&&retryKeys.length===0)return{message,lifted:{}};let lifted={},nextParams={...params};if(envelopeKeys.length>0&&isPlainObject$12(meta2)){let envelope={},nextMeta={...meta2};for(let key of envelopeKeys)envelope[key]=meta2[key],delete nextMeta[key];lifted.envelope=envelope,Object.keys(nextMeta).length>0?nextParams._meta=nextMeta:delete nextParams._meta}for(let key of retryKeys)key==="inputResponses"&&(lifted.inputResponses=nextParams[key]),key==="requestState"&&(lifted.requestState=nextParams[key]),delete nextParams[key];return{message:{...message,params:nextParams},lifted}}function codecResultValidator2(codec,method){let probe=codec.validateResult(method,void 0);if(!(!probe.ok&&probe.reason==="not-in-era"))return{"~standard":{version:1,vendor:"mcp-wire-codec",validate(value){let outcome=codec.validateResult(method,value);return outcome.ok?{value:outcome.value}:{issues:[{message:outcome.reason==="invalid"?outcome.message:`not-in-era: ${method}`}]}}}}}function requestStateAccessor2(value){return()=>value}var NO_REQUEST_STATE2=requestStateAccessor2(void 0);function withRequestStateValue(ctx,value){return{...ctx,mcpReq:{...ctx.mcpReq,requestState:requestStateAccessor2(value)}}}var writeNegotiatedProtocolVersion2;function setNegotiatedProtocolVersion(instance,version2){writeNegotiatedProtocolVersion2(instance,version2)}var Protocol2=class{_transport;_requestMessageId=0;_requestHandlers=new Map;_customSchemaRequestMethods=new Set;_requestHandlerAbortControllers=new Map;_notificationHandlers=new Map;_responseHandlers=new Map;_progressHandlers=new Map;_timeoutInfo=new Map;_pendingDebouncedNotifications=new Set;_negotiatedProtocolVersion;static{writeNegotiatedProtocolVersion2=(instance,version2)=>{instance._negotiatedProtocolVersion=version2}}_supportedProtocolVersions;onclose;onerror;fallbackRequestHandler;fallbackNotificationHandler;constructor(_options){this._options=_options,this._supportedProtocolVersions=_options?.supportedProtocolVersions??SUPPORTED_PROTOCOL_VERSIONS,this.setNotificationHandler("notifications/cancelled",notification=>{this._oncancel(notification)}),this.setNotificationHandler("notifications/progress",notification=>{this._onprogress(notification)}),this.setRequestHandler("ping",_request=>({}))}_shouldDropInbound(_message){}_outboundMetaEnvelope(){}_envelopeOutbound(message){let envelope=this._outboundMetaEnvelope();if(envelope===void 0)return message;let params=message.params??{};return{...message,params:{...params,_meta:{...envelope,...params._meta}}}}_resolveNonCompleteResult(decoded,flow){return Promise.reject(new SdkError2(SdkErrorCode2.UnsupportedResultType,`Unsupported result type '${decoded.kind}' for ${flow.request.method}`,{resultType:decoded.kind,method:flow.request.method}))}_getRequestHandler(method){return this._requestHandlers.get(method)}async _oncancel(notification){notification.params.requestId!==void 0&&this._requestHandlerAbortControllers.get(notification.params.requestId)?.abort(notification.params.reason)}_setupTimeout(messageId,timeout,maxTotalTimeout,onTimeout,resetTimeoutOnProgress=!1){this._timeoutInfo.set(messageId,{timeoutId:setTimeout(onTimeout,timeout),startTime:Date.now(),timeout,maxTotalTimeout,resetTimeoutOnProgress,onTimeout})}_resetTimeout(messageId){let info=this._timeoutInfo.get(messageId);if(!info)return!1;let totalElapsed=Date.now()-info.startTime;if(info.maxTotalTimeout&&totalElapsed>=info.maxTotalTimeout)throw this._timeoutInfo.delete(messageId),new SdkError2(SdkErrorCode2.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:info.maxTotalTimeout,totalElapsed});return clearTimeout(info.timeoutId),info.timeoutId=setTimeout(info.onTimeout,info.timeout),!0}_cleanupTimeout(messageId){let info=this._timeoutInfo.get(messageId);info&&(clearTimeout(info.timeoutId),this._timeoutInfo.delete(messageId))}async connect(transport){this._transport=transport;let _onclose=this.transport?.onclose;this._transport.onclose=()=>{try{_onclose?.()}finally{this._onclose()}};let _onerror=this.transport?.onerror;this._transport.onerror=error2=>{_onerror?.(error2),this._onerror(error2)};let _onmessage=this._transport?.onmessage;this._transport.onmessage=(message,extra)=>{_onmessage?.(message,extra),isJSONRPCResultResponse2(message)||isJSONRPCErrorResponse2(message)?this._onresponse(message):isJSONRPCRequest2(message)?this._onrequest(message,extra):isJSONRPCNotification2(message)?this._onnotification(message,extra):this._onerror(new Error(`Unknown message type: ${JSON.stringify(message)}`))},transport.setSupportedProtocolVersions?.(this._supportedProtocolVersions),await this._transport.start()}_onclose(){let responseHandlers=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear();for(let info of this._timeoutInfo.values())clearTimeout(info.timeoutId);this._timeoutInfo.clear();let requestHandlerAbortControllers=this._requestHandlerAbortControllers;this._requestHandlerAbortControllers=new Map;let error2=new SdkError2(SdkErrorCode2.ConnectionClosed,"Connection closed");this._transport=void 0;try{this.onclose?.()}finally{for(let handler of responseHandlers.values())handler(error2);for(let controller of requestHandlerAbortControllers.values())controller.abort(error2)}}_onerror(error2){this.onerror?.(error2)}_onnotification(rawNotification,extra){let{message:notification}=liftWireOnlyMaterial2(rawNotification,"notification"),codec=this._negotiatedWireCodec();if(extra?.classification===void 0&&this._shouldDropInbound(rawNotification)==="drop")return;if(extra?.classification!==void 0){let classified=classifiedWireEra2(extra.classification);if(classified!==codec.era){this._onerror(new Error(`Era mismatch on inbound notification '${notification.method}': classified as ${classified} but this instance serves ${codec.era}`));return}}if(isSpecNotificationMethod2(notification.method)&&!codec.hasNotificationMethod(notification.method))return;let handler=this._notificationHandlers.get(notification.method),fallback=this.fallbackNotificationHandler;handler===void 0&&fallback===void 0||Promise.resolve().then(()=>handler===void 0?fallback(notification):handler(notification,codec)).catch(error2=>this._onerror(new Error(`Uncaught error in notification handler: ${error2}`)))}_onrequest(rawRequest,extra){let{message:request,lifted}=liftWireOnlyMaterial2(rawRequest,"request"),codec=this._negotiatedWireCodec();if(extra?.classification===void 0&&this._shouldDropInbound(rawRequest)==="drop"){this._onerror(new Error(`Dropped inbound request '${rawRequest.method}': not servable on this connection's protocol era`));return}let capturedTransport=this._transport,sendErrorResponse=(code2,message,data)=>{let errorResponse={jsonrpc:"2.0",id:request.id,error:{code:code2,message,...data!==void 0&&{data}}};capturedTransport?.send(errorResponse).catch(error2=>this._onerror(new Error(`Failed to send an error response: ${error2}`)))};if(extra?.classification!==void 0){let classified=classifiedWireEra2(extra.classification);if(classified!==codec.era){this._onerror(new Error(`Era mismatch on inbound request '${request.method}': classified as ${classified} but this instance serves ${codec.era}`));let requested=extra.classification.revision??classified;sendErrorResponse(ProtocolErrorCode2.UnsupportedProtocolVersion,`Unsupported protocol version: ${requested}`,{supported:this._supportedProtocolVersions,requested});return}}if(isSpecRequestMethod2(request.method)&&!codec.hasRequestMethod(request.method)&&!(isExtensionReusedRequestMethod2(request.method)&&this._customSchemaRequestMethods.has(request.method))){sendErrorResponse(ProtocolErrorCode2.MethodNotFound,"Method not found");return}let handler=this._requestHandlers.get(request.method)??this.fallbackRequestHandler;if(handler===void 0){sendErrorResponse(ProtocolErrorCode2.MethodNotFound,"Method not found");return}let envelopeError=codec.checkInboundEnvelope(lifted);if(envelopeError!==void 0){sendErrorResponse(ProtocolErrorCode2.InvalidParams,envelopeError);return}let sendNotification=(notification,options)=>this._notificationViaCodec(this._resolveOutboundCodec(notification.method),notification,{...options,relatedRequestId:request.id}),sendRequest=(r,resultSchema,options)=>this._requestWithSchemaViaCodec(this._resolveOutboundCodec(r.method),r,resultSchema,{...options,relatedRequestId:request.id}),abortController=new AbortController;this._requestHandlerAbortControllers.set(request.id,abortController);let partitionedInputResponses=lifted.inputResponses===void 0?void 0:partitionInputResponses2(lifted.inputResponses),baseCtx={sessionId:capturedTransport?.sessionId,mcpReq:{id:request.id,method:request.method,_meta:request.params?._meta,...lifted.envelope!==void 0&&{envelope:lifted.envelope},...partitionedInputResponses!==void 0&&{inputResponses:partitionedInputResponses.accepted},...partitionedInputResponses!==void 0&&partitionedInputResponses.droppedKeys.length>0&&{droppedInputResponseKeys:partitionedInputResponses.droppedKeys},requestState:lifted.requestState===void 0?NO_REQUEST_STATE2:requestStateAccessor2(lifted.requestState),signal:abortController.signal,send:((r,schemaOrOptions,maybeOptions)=>{let sendCodec=this._resolveOutboundCodec(r.method);if(this._assertOutboundRequestInEra(sendCodec,r.method),isStandardSchema2(schemaOrOptions))return sendRequest(r,schemaOrOptions,maybeOptions);let validate2=codecResultValidator2(sendCodec,r.method);if(validate2===void 0)throw new TypeError(`'${r.method}' is not a spec method; pass a result schema as the second argument to ctx.mcpReq.send().`);return sendRequest(r,validate2,schemaOrOptions)}),notify:sendNotification},http:extra?.authInfo?{authInfo:extra.authInfo}:void 0},ctx=this.buildContext(baseCtx,extra);Promise.resolve().then(()=>handler(request,ctx)).then(async result2=>{if(abortController.signal.aborted)return;let encoded;try{encoded=codec.encodeResult(request.method,result2,this._outboundServerInfo())}catch(error2){this._onerror(new Error(`Failed to encode result for ${request.method}: ${error2}`)),sendErrorResponse(ProtocolErrorCode2.InternalError,"Internal error");return}let response={result:encoded,jsonrpc:"2.0",id:request.id};await capturedTransport?.send(response)},async error2=>{if(abortController.signal.aborted)return;let thrownCode=Number.isSafeInteger(error2.code)?error2.code:ProtocolErrorCode2.InternalError,errorResponse={jsonrpc:"2.0",id:request.id,error:{code:codec.encodeErrorCode(thrownCode),message:error2.message??"Internal error",...error2.data!==void 0&&{data:error2.data}}};await capturedTransport?.send(errorResponse)}).catch(error2=>this._onerror(new Error(`Failed to send response: ${error2}`))).finally(()=>{this._requestHandlerAbortControllers.get(request.id)===abortController&&this._requestHandlerAbortControllers.delete(request.id)})}_onprogress(notification){let{progressToken,...params}=notification.params,messageId=Number(progressToken),handler=this._progressHandlers.get(messageId);if(!handler){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`));return}let responseHandler=this._responseHandlers.get(messageId),timeoutInfo=this._timeoutInfo.get(messageId);if(timeoutInfo&&responseHandler&&timeoutInfo.resetTimeoutOnProgress)try{this._resetTimeout(messageId)}catch(error2){this._responseHandlers.delete(messageId),this._progressHandlers.delete(messageId),this._cleanupTimeout(messageId),responseHandler(error2);return}handler(params)}_onresponse(response){let messageId=Number(response.id),handler=this._responseHandlers.get(messageId);if(handler===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`));return}this._responseHandlers.delete(messageId),this._cleanupTimeout(messageId),this._progressHandlers.delete(messageId),isJSONRPCResultResponse2(response)?handler(response):handler(ProtocolError3.fromError(response.error.code,response.error.message,response.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}request(request,schemaOrOptions,maybeOptions){let codec=this._resolveOutboundCodec(request.method);if(isStandardSchema2(schemaOrOptions))return isExtensionReusedRequestMethod2(request.method)||this._assertOutboundRequestInEra(codec,request.method),this._requestWithSchemaViaCodec(codec,request,schemaOrOptions,maybeOptions);this._assertOutboundRequestInEra(codec,request.method);let validate2=codecResultValidator2(codec,request.method);if(validate2===void 0)throw new TypeError(`'${request.method}' is not a spec method; pass a result schema as the second argument to request().`);return this._requestWithSchemaViaCodec(codec,request,validate2,schemaOrOptions)}_negotiatedWireCodec(){return codecForVersion2(this._negotiatedProtocolVersion)}_wireCodec(){return this._negotiatedWireCodec()}_resolveOutboundCodec(method){if(this._negotiatedProtocolVersion===void 0){let pinned=bootstrapOutboundCodec2(method);if(pinned)return pinned}return this._negotiatedWireCodec()}_assertOutboundRequestInEra(codec,method){if(isSpecRequestMethod2(method)&&!codec.hasRequestMethod(method))throw new SdkError2(SdkErrorCode2.MethodNotSupportedByProtocolVersion,`Method '${method}' is not supported by the negotiated protocol version (wire era ${codec.era})`,{method,era:codec.era})}_requestWithSchema(request,resultSchema,options){let codec=this._resolveOutboundCodec(request.method);return this._assertOutboundRequestInEra(codec,request.method),this._requestWithSchemaViaCodec(codec,request,resultSchema,options)}_requestWithSchemaViaCodec(codec,request,resultSchema,options){let{relatedRequestId,resumptionToken,onresumptiontoken,headers}=options??{},flowStartedAt=Date.now(),onAbort,cleanupMessageId;return new Promise((resolve,reject)=>{let earlyReject=error2=>{reject(error2)};if(!this._transport){earlyReject(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(request.method)}catch(error2){earlyReject(error2);return}if(options?.signal?.aborted){let reason=options.signal.reason;throw reason instanceof SdkError2?reason:new SdkError2(SdkErrorCode2.RequestTimeout,String(reason))}let requestAbort=codec.era===MODERN_WIRE_REVISION2&&this._transport.hasPerRequestStream===!0?new AbortController:void 0,messageId=this._requestMessageId++;cleanupMessageId=messageId;let jsonrpcRequest={...request,jsonrpc:"2.0",id:messageId};options?.onprogress&&(this._progressHandlers.set(messageId,options.onprogress),jsonrpcRequest.params={...request.params,_meta:{...request.params?._meta,progressToken:messageId}});let outbound=this._envelopeOutbound(jsonrpcRequest),responseReceived=!1,cancel=reason=>{responseReceived||(this._progressHandlers.delete(messageId),requestAbort===void 0?request.method!=="initialize"&&this._transport?.send(this._envelopeOutbound({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:messageId,reason:String(reason)}}),{relatedRequestId,resumptionToken,onresumptiontoken}).catch(error2=>this._onerror(new Error(`Failed to send cancellation: ${error2}`))):requestAbort.abort(),reject(reason instanceof SdkError2?reason:new SdkError2(SdkErrorCode2.RequestTimeout,String(reason))))};this._responseHandlers.set(messageId,response=>{if(options?.signal?.aborted)return;if(responseReceived=!0,response instanceof Error)return reject(response);let decoded;try{decoded=codec.decodeResult(request.method,response.result)}catch(error2){return reject(error2 instanceof Error?error2:new Error(String(error2)))}if(decoded.kind==="invalid")return reject(decoded.error);if(decoded.kind==="input_required"){if(options?.allowInputRequired===!0)return resolve(manualInputRequiredValue2(decoded));let flow={codec,request,resultSchema,options,flowStartedAt,retry:(params,legOptions)=>this._requestWithSchemaViaCodec(codec,params===void 0?{method:request.method}:{method:request.method,params},resultSchema,legOptions)};return resolve(this._resolveNonCompleteResult(decoded,flow))}let result2=decoded.result;validateStandardSchema2(resultSchema,result2).then(parseResult=>{parseResult.success?resolve(parseResult.data):reject(new SdkError2(SdkErrorCode2.InvalidResult,`Invalid result for ${request.method}: ${parseResult.error}`))},reject)}),onAbort=()=>cancel(options?.signal?.reason),options?.signal?.addEventListener("abort",onAbort,{once:!0});let timeout=options?.timeout??DEFAULT_REQUEST_TIMEOUT_MSEC2,timeoutHandler=()=>cancel(new SdkError2(SdkErrorCode2.RequestTimeout,"Request timed out",{timeout}));this._setupTimeout(messageId,timeout,options?.maxTotalTimeout,timeoutHandler,options?.resetTimeoutOnProgress??!1),this._transport.send(outbound,{relatedRequestId,resumptionToken,onresumptiontoken,headers,requestSignal:requestAbort?.signal}).catch(error2=>{this._progressHandlers.delete(messageId),reject(error2)})}).finally(()=>{onAbort&&options?.signal?.removeEventListener("abort",onAbort),cleanupMessageId!==void 0&&(this._responseHandlers.delete(cleanupMessageId),this._cleanupTimeout(cleanupMessageId))})}async notification(notification,options){return await this._notificationViaCodec(this._resolveOutboundCodec(notification.method),notification,options)}async _notificationViaCodec(codec,notification,options){if(!this._transport)throw new SdkError2(SdkErrorCode2.NotConnected,"Not connected");if(isSpecNotificationMethod2(notification.method)&&!codec.hasNotificationMethod(notification.method))throw new SdkError2(SdkErrorCode2.MethodNotSupportedByProtocolVersion,`Notification '${notification.method}' is not supported by the negotiated protocol version (wire era ${codec.era})`,{method:notification.method,era:codec.era});this.assertNotificationCapability(notification.method);let jsonrpcNotification=this._envelopeOutbound({jsonrpc:"2.0",...notification});if((this._options?.debouncedNotificationMethods??[]).includes(notification.method)&&!notification.params&&options?.relatedRequestId===void 0){if(this._pendingDebouncedNotifications.has(notification.method))return;this._pendingDebouncedNotifications.add(notification.method),Promise.resolve().then(()=>{this._pendingDebouncedNotifications.delete(notification.method),this._transport&&this._transport?.send(jsonrpcNotification,options).catch(error2=>this._onerror(error2))});return}await this._transport.send(jsonrpcNotification,options)}setRequestHandler(method,schemasOrHandler,maybeHandler){this.assertRequestHandlerCapability(method);let stored;if(typeof schemasOrHandler=="function"){if(!isSpecRequestMethod2(method))throw new TypeError(`'${method}' is not a spec request method; pass schemas as the second argument to setRequestHandler().`);stored=(request,ctx)=>{let dispatchCodec=this._negotiatedWireCodec(),outcome=dispatchCodec.validateRequest(method,request);if(!outcome.ok&&outcome.reason==="not-in-era"&&(outcome=dispatchCodec.validateInputRequest(method,request)),!outcome.ok)throw outcome.reason==="not-in-era"?new ProtocolError3(ProtocolErrorCode2.InternalError,`No wire schema for ${method} in the resolved era`):new Error(outcome.message);return Promise.resolve(schemasOrHandler(outcome.value,ctx))}}else if(maybeHandler)stored=async(request,ctx)=>{let parsed=await validateStandardSchema2(schemasOrHandler.params,{...request.params});if(!parsed.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Invalid params for ${method}: ${parsed.error}`);return maybeHandler(parsed.data,ctx)};else throw new TypeError("setRequestHandler: handler is required");typeof schemasOrHandler=="function"?this._customSchemaRequestMethods.delete(method):this._customSchemaRequestMethods.add(method),this._requestHandlers.set(method,this._wrapHandler(method,stored))}_wrapHandler(_method,handler){return handler}_outboundServerInfo(){}removeRequestHandler(method){this._requestHandlers.delete(method),this._customSchemaRequestMethods.delete(method)}assertCanSetRequestHandler(method){if(this._requestHandlers.has(method))throw new Error(`A request handler for ${method} already exists, which would be overridden`)}setNotificationHandler(method,schemasOrHandler,maybeHandler){if(typeof schemasOrHandler=="function"){if(!isSpecNotificationMethod2(method))throw new TypeError(`'${method}' is not a spec notification method; pass schemas as the second argument to setNotificationHandler().`);this._notificationHandlers.set(method,(notification,codec)=>{let outcome=codec.validateNotification(method,notification);if(!outcome.ok)throw outcome.reason==="not-in-era"?new ProtocolError3(ProtocolErrorCode2.InternalError,`No wire schema for ${method} in the resolved era`):new Error(outcome.message);return Promise.resolve(schemasOrHandler(outcome.value))});return}if(!maybeHandler)throw new TypeError("setNotificationHandler: handler is required");this._notificationHandlers.set(method,async notification=>{let parsed=await validateStandardSchema2(schemasOrHandler.params,{...notification.params});if(!parsed.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Invalid params for notification ${method}: ${parsed.error}`);await maybeHandler(parsed.data,notification)})}removeNotificationHandler(method){this._notificationHandlers.delete(method)}};function isPlainObject$12(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function mergeCapabilities2(base,additional){let result2={...base};for(let key in additional){let k=key,addValue=additional[k];if(addValue===void 0)continue;let baseValue=result2[k];result2[k]=isPlainObject$12(baseValue)&&isPlainObject$12(addValue)?{...baseValue,...addValue}:addValue}return result2}function isPlainObject3(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function partitionInputResponses2(inputResponses){let accepted={},droppedKeys=[];if(!isPlainObject3(inputResponses))return{accepted,droppedKeys};for(let[key,entry]of Object.entries(inputResponses)){if(!isPlainObject3(entry)||"method"in entry||"result"in entry){droppedKeys.push(key);continue}accepted[key]=entry}return{accepted,droppedKeys}}function manualInputRequiredValue2(decoded){return{resultType:"input_required",inputRequests:decoded.inputRequests,...decoded.requestState!==void 0&&{requestState:decoded.requestState},...decoded._meta!==void 0&&{_meta:decoded._meta}}}var require_content_type2=__commonJSMin2((exports=>{var PARAM_REGEXP=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,QESC_REGEXP=/\\([\u000b\u0020-\u00ff])/g,TYPE_REGEXP=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;exports.parse=parse2;function parse2(string4){if(!string4)throw new TypeError("argument string is required");var header=typeof string4=="object"?getcontenttype(string4):string4;if(typeof header!="string")throw new TypeError("argument string is required to be a string");var index=header.indexOf(";"),type=index!==-1?header.slice(0,index).trim():header.trim();if(!TYPE_REGEXP.test(type))throw new TypeError("invalid media type");var obj=new ContentType(type.toLowerCase());if(index!==-1){var key,match,value;for(PARAM_REGEXP.lastIndex=index;match=PARAM_REGEXP.exec(header);){if(match.index!==index)throw new TypeError("invalid parameter format");index+=match[0].length,key=match[1].toLowerCase(),value=match[2],value.charCodeAt(0)===34&&(value=value.slice(1,-1),value.indexOf("\\")!==-1&&(value=value.replace(QESC_REGEXP,"$1"))),obj.parameters[key]=value}if(index!==header.length)throw new TypeError("invalid parameter format")}return obj}function getcontenttype(obj){var header;if(typeof obj.getHeader=="function"?header=obj.getHeader("content-type"):typeof obj.headers=="object"&&(header=obj.headers&&obj.headers["content-type"]),typeof header!="string")throw new TypeError("content-type header is missing from object");return header}function ContentType(type){this.parameters=Object.create(null),this.type=type}})),import_content_type2=__toESM2(require_content_type2(),1);var STDIO_DEFAULT_MAX_BUFFER_SIZE2=10*1024*1024,ReadBuffer2=class{_buffer;_maxBufferSize;constructor(options){this._maxBufferSize=options?.maxBufferSize??STDIO_DEFAULT_MAX_BUFFER_SIZE2}append(chunk){if((this._buffer?.length??0)+chunk.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,chunk]):chunk}readMessage(){for(;this._buffer;){let index=this._buffer.indexOf(`
|
|
67
|
+
`);if(index===-1)return null;let line=this._buffer.toString("utf8",0,index).replace(/\r$/,"");this._buffer=this._buffer.subarray(index+1);try{return deserializeMessage2(line)}catch(error2){if(error2 instanceof SyntaxError)continue;throw error2}}return null}clear(){this._buffer=void 0}};function deserializeMessage2(line){return JSONRPCMessageSchema.parse(JSON.parse(line))}function serializeMessage2(message){return JSON.stringify(message)+`
|
|
68
|
+
`}var TOOL_NAME_REGEX=/^[A-Za-z0-9._-]{1,128}$/;function validateToolName(name2){let warnings=[];if(name2.length===0)return{isValid:!1,warnings:["Tool name cannot be empty"]};if(name2.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${name2.length})`]};if(name2.includes(" ")&&warnings.push("Tool name contains spaces, which may cause parsing issues"),name2.includes(",")&&warnings.push("Tool name contains commas, which may cause parsing issues"),(name2.startsWith("-")||name2.endsWith("-"))&&warnings.push("Tool name starts or ends with a dash, which may cause parsing issues in some contexts"),(name2.startsWith(".")||name2.endsWith("."))&&warnings.push("Tool name starts or ends with a dot, which may cause parsing issues in some contexts"),!TOOL_NAME_REGEX.test(name2)){let invalidChars=[...name2].filter(char=>!/[A-Za-z0-9._-]/.test(char)).filter((char,index,arr)=>arr.indexOf(char)===index);return warnings.push(`Tool name contains invalid characters: ${invalidChars.map(c=>`"${c}"`).join(", ")}`,"Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)"),{isValid:!1,warnings}}return{isValid:!0,warnings}}function issueToolNameWarning(name2,warnings){if(warnings.length>0){console.warn(`Tool name validation warning for "${name2}":`);for(let warning of warnings)console.warn(` - ${warning}`);console.warn("Tool registration will proceed, but this may cause compatibility issues."),console.warn("Consider updating the tool name to conform to the MCP tool naming standard."),console.warn("See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.")}}function validateAndWarnToolName(name2){let result2=validateToolName(name2);return issueToolNameWarning(name2,result2.warnings),result2.isValid}var InMemoryTransport2=class InMemoryTransport3{_otherTransport;_messageQueue=[];_closed=!1;onclose;onerror;onmessage;sessionId;static createLinkedPair(){let clientTransport=new InMemoryTransport3,serverTransport=new InMemoryTransport3;return clientTransport._otherTransport=serverTransport,serverTransport._otherTransport=clientTransport,[clientTransport,serverTransport]}async start(){for(;this._messageQueue.length>0;){let queuedMessage=this._messageQueue.shift();this.onmessage?.(queuedMessage.message,queuedMessage.extra)}}async close(){if(this._closed)return;this._closed=!0;let other=this._otherTransport;this._otherTransport=void 0;try{await other?.close()}finally{this.onclose?.()}}async send(message,options){if(!this._otherTransport)throw new SdkError2(SdkErrorCode2.NotConnected,"Not connected");this._otherTransport.onmessage?this._otherTransport.onmessage(message,{authInfo:options?.authInfo}):this._otherTransport._messageQueue.push({message,extra:{authInfo:options?.authInfo}})}};function isZodV4Schema(v){return typeof v=="object"&&v!==null&&"_zod"in v}function looksLikeZodV3(v){return typeof v=="object"&&v!==null&&!("_zod"in v)&&"_def"in v&&typeof v._def?.typeName=="string"}function isZodRawShape(obj){if(typeof obj!="object"||obj===null||isStandardSchema2(obj))return!1;let proto=Object.getPrototypeOf(obj);return proto!==Object.prototype&&proto!==null?!1:Object.values(obj).every(v=>isZodV4Schema(v))}function normalizeRawShapeSchema(schema){if(schema!==void 0){if(isZodRawShape(schema))return object(schema);if(typeof schema=="object"&&schema!==null&&!isStandardSchema2(schema)&&Object.values(schema).some(v=>looksLikeZodV3(v)))throw new TypeError("Raw-shape inputSchema/outputSchema/argsSchema fields must be Zod v4 schemas. Got a Zod v3 field schema. Import from `zod/v4` (or upgrade your zod import), or wrap with `z.object({...})` yourself.");if(!isStandardSchema2(schema))throw new TypeError("inputSchema/outputSchema/argsSchema must be a Standard Schema (e.g. z.object({...})) or a raw Zod shape ({ field: z.string() }).");return schema}}var require_code$12=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.regexpCode=exports.getEsmExportName=exports.getProperty=exports.safeStringify=exports.stringify=exports.strConcat=exports.addCodeArg=exports.str=exports._=exports.nil=exports._Code=exports.Name=exports.IDENTIFIER=exports._CodeOrName=void 0;var _CodeOrName=class{};exports._CodeOrName=_CodeOrName,exports.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Name=class extends _CodeOrName{constructor(s){if(super(),!exports.IDENTIFIER.test(s))throw new Error("CodeGen: name must be a valid identifier");this.str=s}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};exports.Name=Name;var _Code=class extends _CodeOrName{constructor(code2){super(),this._items=typeof code2=="string"?[code2]:code2}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let item=this._items[0];return item===""||item==='""'}get str(){var _a3;return(_a3=this._str)!==null&&_a3!==void 0?_a3:this._str=this._items.reduce((s,c)=>`${s}${c}`,"")}get names(){var _a3;return(_a3=this._names)!==null&&_a3!==void 0?_a3:this._names=this._items.reduce((names2,c)=>(c instanceof Name&&(names2[c.str]=(names2[c.str]||0)+1),names2),{})}};exports._Code=_Code,exports.nil=new _Code("");function _(strs,...args){let code2=[strs[0]],i=0;for(;i<args.length;)addCodeArg(code2,args[i]),code2.push(strs[++i]);return new _Code(code2)}exports._=_;let plus=new _Code("+");function str2(strs,...args){let expr=[safeStringify(strs[0])],i=0;for(;i<args.length;)expr.push(plus),addCodeArg(expr,args[i]),expr.push(plus,safeStringify(strs[++i]));return optimize(expr),new _Code(expr)}exports.str=str2;function addCodeArg(code2,arg){arg instanceof _Code?code2.push(...arg._items):arg instanceof Name?code2.push(arg):code2.push(interpolate(arg))}exports.addCodeArg=addCodeArg;function optimize(expr){let i=1;for(;i<expr.length-1;){if(expr[i]===plus){let res=mergeExprItems(expr[i-1],expr[i+1]);if(res!==void 0){expr.splice(i-1,3,res);continue}expr[i++]="+"}i++}}function mergeExprItems(a,b){if(b==='""')return a;if(a==='""')return b;if(typeof a=="string")return b instanceof Name||a[a.length-1]!=='"'?void 0:typeof b!="string"?`${a.slice(0,-1)}${b}"`:b[0]==='"'?a.slice(0,-1)+b.slice(1):void 0;if(typeof b=="string"&&b[0]==='"'&&!(a instanceof Name))return`"${a}${b.slice(1)}`}function strConcat(c1,c2){return c2.emptyStr()?c1:c1.emptyStr()?c2:str2`${c1}${c2}`}exports.strConcat=strConcat;function interpolate(x){return typeof x=="number"||typeof x=="boolean"||x===null?x:safeStringify(Array.isArray(x)?x.join(","):x)}function stringify(x){return new _Code(safeStringify(x))}exports.stringify=stringify;function safeStringify(x){return JSON.stringify(x).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}exports.safeStringify=safeStringify;function getProperty(key){return typeof key=="string"&&exports.IDENTIFIER.test(key)?new _Code(`.${key}`):_`[${key}]`}exports.getProperty=getProperty;function getEsmExportName(key){if(typeof key=="string"&&exports.IDENTIFIER.test(key))return new _Code(`${key}`);throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)}exports.getEsmExportName=getEsmExportName;function regexpCode(rx){return new _Code(rx.toString())}exports.regexpCode=regexpCode})),require_scope2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ValueScope=exports.ValueScopeName=exports.Scope=exports.varKinds=exports.UsedValueState=void 0;let code_1=require_code$12();var ValueError=class extends Error{constructor(name2){super(`CodeGen: "code" for ${name2} not defined`),this.value=name2.value}},UsedValueState;(function(UsedValueState2){UsedValueState2[UsedValueState2.Started=0]="Started",UsedValueState2[UsedValueState2.Completed=1]="Completed"})(UsedValueState||(exports.UsedValueState=UsedValueState={})),exports.varKinds={const:new code_1.Name("const"),let:new code_1.Name("let"),var:new code_1.Name("var")};var Scope=class{constructor({prefixes,parent}={}){this._names={},this._prefixes=prefixes,this._parent=parent}toName(nameOrPrefix){return nameOrPrefix instanceof code_1.Name?nameOrPrefix:this.name(nameOrPrefix)}name(prefix){return new code_1.Name(this._newName(prefix))}_newName(prefix){let ng=this._names[prefix]||this._nameGroup(prefix);return`${prefix}${ng.index++}`}_nameGroup(prefix){var _a3,_b;if(!((_b=(_a3=this._parent)===null||_a3===void 0?void 0:_a3._prefixes)===null||_b===void 0)&&_b.has(prefix)||this._prefixes&&!this._prefixes.has(prefix))throw new Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);return this._names[prefix]={prefix,index:0}}};exports.Scope=Scope;var ValueScopeName=class extends code_1.Name{constructor(prefix,nameStr){super(nameStr),this.prefix=prefix}setValue(value,{property,itemIndex}){this.value=value,this.scopePath=(0,code_1._)`.${new code_1.Name(property)}[${itemIndex}]`}};exports.ValueScopeName=ValueScopeName;let line=(0,code_1._)`\n`;var ValueScope=class extends Scope{constructor(opts){super(opts),this._values={},this._scope=opts.scope,this.opts={...opts,_n:opts.lines?line:code_1.nil}}get(){return this._scope}name(prefix){return new ValueScopeName(prefix,this._newName(prefix))}value(nameOrPrefix,value){var _a3;if(value.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let name2=this.toName(nameOrPrefix),{prefix}=name2,valueKey=(_a3=value.key)!==null&&_a3!==void 0?_a3:value.ref,vs=this._values[prefix];if(vs){let _name=vs.get(valueKey);if(_name)return _name}else vs=this._values[prefix]=new Map;vs.set(valueKey,name2);let s=this._scope[prefix]||(this._scope[prefix]=[]),itemIndex=s.length;return s[itemIndex]=value.ref,name2.setValue(value,{property:prefix,itemIndex}),name2}getValue(prefix,keyOrRef){let vs=this._values[prefix];if(vs)return vs.get(keyOrRef)}scopeRefs(scopeName,values=this._values){return this._reduceValues(values,name2=>{if(name2.scopePath===void 0)throw new Error(`CodeGen: name "${name2}" has no value`);return(0,code_1._)`${scopeName}${name2.scopePath}`})}scopeCode(values=this._values,usedValues,getCode){return this._reduceValues(values,name2=>{if(name2.value===void 0)throw new Error(`CodeGen: name "${name2}" has no value`);return name2.value.code},usedValues,getCode)}_reduceValues(values,valueCode,usedValues={},getCode){let code2=code_1.nil;for(let prefix in values){let vs=values[prefix];if(!vs)continue;let nameSet=usedValues[prefix]=usedValues[prefix]||new Map;vs.forEach(name2=>{if(nameSet.has(name2))return;nameSet.set(name2,UsedValueState.Started);let c=valueCode(name2);if(c){let def=this.opts.es5?exports.varKinds.var:exports.varKinds.const;code2=(0,code_1._)`${code2}${def} ${name2} = ${c};${this.opts._n}`}else if(c=getCode?.(name2))code2=(0,code_1._)`${code2}${c}${this.opts._n}`;else throw new ValueError(name2);nameSet.set(name2,UsedValueState.Completed)})}return code2}};exports.ValueScope=ValueScope})),require_codegen2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.or=exports.and=exports.not=exports.CodeGen=exports.operators=exports.varKinds=exports.ValueScopeName=exports.ValueScope=exports.Scope=exports.Name=exports.regexpCode=exports.stringify=exports.getProperty=exports.nil=exports.strConcat=exports.str=exports._=void 0;let code_1=require_code$12(),scope_1=require_scope2();var code_2=require_code$12();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return code_2._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return code_2.str}}),Object.defineProperty(exports,"strConcat",{enumerable:!0,get:function(){return code_2.strConcat}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return code_2.nil}}),Object.defineProperty(exports,"getProperty",{enumerable:!0,get:function(){return code_2.getProperty}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return code_2.stringify}}),Object.defineProperty(exports,"regexpCode",{enumerable:!0,get:function(){return code_2.regexpCode}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return code_2.Name}});var scope_2=require_scope2();Object.defineProperty(exports,"Scope",{enumerable:!0,get:function(){return scope_2.Scope}}),Object.defineProperty(exports,"ValueScope",{enumerable:!0,get:function(){return scope_2.ValueScope}}),Object.defineProperty(exports,"ValueScopeName",{enumerable:!0,get:function(){return scope_2.ValueScopeName}}),Object.defineProperty(exports,"varKinds",{enumerable:!0,get:function(){return scope_2.varKinds}}),exports.operators={GT:new code_1._Code(">"),GTE:new code_1._Code(">="),LT:new code_1._Code("<"),LTE:new code_1._Code("<="),EQ:new code_1._Code("==="),NEQ:new code_1._Code("!=="),NOT:new code_1._Code("!"),OR:new code_1._Code("||"),AND:new code_1._Code("&&"),ADD:new code_1._Code("+")};var Node=class{optimizeNodes(){return this}optimizeNames(_names,_constants){return this}},Def=class extends Node{constructor(varKind,name2,rhs){super(),this.varKind=varKind,this.name=name2,this.rhs=rhs}render({es5,_n}){let varKind=es5?scope_1.varKinds.var:this.varKind,rhs=this.rhs===void 0?"":` = ${this.rhs}`;return`${varKind} ${this.name}${rhs};`+_n}optimizeNames(names2,constants){if(names2[this.name.str])return this.rhs&&(this.rhs=optimizeExpr(this.rhs,names2,constants)),this}get names(){return this.rhs instanceof code_1._CodeOrName?this.rhs.names:{}}},Assign=class extends Node{constructor(lhs,rhs,sideEffects){super(),this.lhs=lhs,this.rhs=rhs,this.sideEffects=sideEffects}render({_n}){return`${this.lhs} = ${this.rhs};`+_n}optimizeNames(names2,constants){if(!(this.lhs instanceof code_1.Name&&!names2[this.lhs.str]&&!this.sideEffects))return this.rhs=optimizeExpr(this.rhs,names2,constants),this}get names(){return addExprNames(this.lhs instanceof code_1.Name?{}:{...this.lhs.names},this.rhs)}},AssignOp=class extends Assign{constructor(lhs,op,rhs,sideEffects){super(lhs,rhs,sideEffects),this.op=op}render({_n}){return`${this.lhs} ${this.op}= ${this.rhs};`+_n}},Label=class extends Node{constructor(label){super(),this.label=label,this.names={}}render({_n}){return`${this.label}:`+_n}},Break=class extends Node{constructor(label){super(),this.label=label,this.names={}}render({_n}){return`break${this.label?` ${this.label}`:""};`+_n}},Throw=class extends Node{constructor(error2){super(),this.error=error2}render({_n}){return`throw ${this.error};`+_n}get names(){return this.error.names}},AnyCode=class extends Node{constructor(code2){super(),this.code=code2}render({_n}){return`${this.code};`+_n}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(names2,constants){return this.code=optimizeExpr(this.code,names2,constants),this}get names(){return this.code instanceof code_1._CodeOrName?this.code.names:{}}},ParentNode=class extends Node{constructor(nodes=[]){super(),this.nodes=nodes}render(opts){return this.nodes.reduce((code2,n2)=>code2+n2.render(opts),"")}optimizeNodes(){let{nodes}=this,i=nodes.length;for(;i--;){let n2=nodes[i].optimizeNodes();Array.isArray(n2)?nodes.splice(i,1,...n2):n2?nodes[i]=n2:nodes.splice(i,1)}return nodes.length>0?this:void 0}optimizeNames(names2,constants){let{nodes}=this,i=nodes.length;for(;i--;){let n2=nodes[i];n2.optimizeNames(names2,constants)||(subtractNames(names2,n2.names),nodes.splice(i,1))}return nodes.length>0?this:void 0}get names(){return this.nodes.reduce((names2,n2)=>addNames(names2,n2.names),{})}},BlockNode=class extends ParentNode{render(opts){return"{"+opts._n+super.render(opts)+"}"+opts._n}},Root=class extends ParentNode{},Else=class extends BlockNode{};Else.kind="else";var If=class If2 extends BlockNode{constructor(condition,nodes){super(nodes),this.condition=condition}render(opts){let code2=`if(${this.condition})`+super.render(opts);return this.else&&(code2+="else "+this.else.render(opts)),code2}optimizeNodes(){super.optimizeNodes();let cond=this.condition;if(cond===!0)return this.nodes;let e=this.else;if(e){let ns=e.optimizeNodes();e=this.else=Array.isArray(ns)?new Else(ns):ns}if(e)return cond===!1?e instanceof If2?e:e.nodes:this.nodes.length?this:new If2(not(cond),e instanceof If2?[e]:e.nodes);if(!(cond===!1||!this.nodes.length))return this}optimizeNames(names2,constants){var _a3;if(this.else=(_a3=this.else)===null||_a3===void 0?void 0:_a3.optimizeNames(names2,constants),!!(super.optimizeNames(names2,constants)||this.else))return this.condition=optimizeExpr(this.condition,names2,constants),this}get names(){let names2=super.names;return addExprNames(names2,this.condition),this.else&&addNames(names2,this.else.names),names2}};If.kind="if";var For=class extends BlockNode{};For.kind="for";var ForLoop=class extends For{constructor(iteration){super(),this.iteration=iteration}render(opts){return`for(${this.iteration})`+super.render(opts)}optimizeNames(names2,constants){if(super.optimizeNames(names2,constants))return this.iteration=optimizeExpr(this.iteration,names2,constants),this}get names(){return addNames(super.names,this.iteration.names)}},ForRange=class extends For{constructor(varKind,name2,from,to){super(),this.varKind=varKind,this.name=name2,this.from=from,this.to=to}render(opts){let varKind=opts.es5?scope_1.varKinds.var:this.varKind,{name:name2,from,to}=this;return`for(${varKind} ${name2}=${from}; ${name2}<${to}; ${name2}++)`+super.render(opts)}get names(){return addExprNames(addExprNames(super.names,this.from),this.to)}},ForIter=class extends For{constructor(loop,varKind,name2,iterable){super(),this.loop=loop,this.varKind=varKind,this.name=name2,this.iterable=iterable}render(opts){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(opts)}optimizeNames(names2,constants){if(super.optimizeNames(names2,constants))return this.iterable=optimizeExpr(this.iterable,names2,constants),this}get names(){return addNames(super.names,this.iterable.names)}},Func=class extends BlockNode{constructor(name2,args,async){super(),this.name=name2,this.args=args,this.async=async}render(opts){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(opts)}};Func.kind="func";var Return=class extends ParentNode{render(opts){return"return "+super.render(opts)}};Return.kind="return";var Try=class extends BlockNode{render(opts){let code2="try"+super.render(opts);return this.catch&&(code2+=this.catch.render(opts)),this.finally&&(code2+=this.finally.render(opts)),code2}optimizeNodes(){var _a3,_b;return super.optimizeNodes(),(_a3=this.catch)===null||_a3===void 0||_a3.optimizeNodes(),(_b=this.finally)===null||_b===void 0||_b.optimizeNodes(),this}optimizeNames(names2,constants){var _a3,_b;return super.optimizeNames(names2,constants),(_a3=this.catch)===null||_a3===void 0||_a3.optimizeNames(names2,constants),(_b=this.finally)===null||_b===void 0||_b.optimizeNames(names2,constants),this}get names(){let names2=super.names;return this.catch&&addNames(names2,this.catch.names),this.finally&&addNames(names2,this.finally.names),names2}},Catch=class extends BlockNode{constructor(error2){super(),this.error=error2}render(opts){return`catch(${this.error})`+super.render(opts)}};Catch.kind="catch";var Finally=class extends BlockNode{render(opts){return"finally"+super.render(opts)}};Finally.kind="finally";var CodeGen=class{constructor(extScope,opts={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...opts,_n:opts.lines?`
|
|
69
|
+
`:""},this._extScope=extScope,this._scope=new scope_1.Scope({parent:extScope}),this._nodes=[new Root]}toString(){return this._root.render(this.opts)}name(prefix){return this._scope.name(prefix)}scopeName(prefix){return this._extScope.name(prefix)}scopeValue(prefixOrName,value){let name2=this._extScope.value(prefixOrName,value);return(this._values[name2.prefix]||(this._values[name2.prefix]=new Set)).add(name2),name2}getScopeValue(prefix,keyOrRef){return this._extScope.getValue(prefix,keyOrRef)}scopeRefs(scopeName){return this._extScope.scopeRefs(scopeName,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(varKind,nameOrPrefix,rhs,constant){let name2=this._scope.toName(nameOrPrefix);return rhs!==void 0&&constant&&(this._constants[name2.str]=rhs),this._leafNode(new Def(varKind,name2,rhs)),name2}const(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.const,nameOrPrefix,rhs,_constant)}let(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.let,nameOrPrefix,rhs,_constant)}var(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.var,nameOrPrefix,rhs,_constant)}assign(lhs,rhs,sideEffects){return this._leafNode(new Assign(lhs,rhs,sideEffects))}add(lhs,rhs){return this._leafNode(new AssignOp(lhs,exports.operators.ADD,rhs))}code(c){return typeof c=="function"?c():c!==code_1.nil&&this._leafNode(new AnyCode(c)),this}object(...keyValues){let code2=["{"];for(let[key,value]of keyValues)code2.length>1&&code2.push(","),code2.push(key),(key!==value||this.opts.es5)&&(code2.push(":"),(0,code_1.addCodeArg)(code2,value));return code2.push("}"),new code_1._Code(code2)}if(condition,thenBody,elseBody){if(this._blockNode(new If(condition)),thenBody&&elseBody)this.code(thenBody).else().code(elseBody).endIf();else if(thenBody)this.code(thenBody).endIf();else if(elseBody)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(condition){return this._elseNode(new If(condition))}else(){return this._elseNode(new Else)}endIf(){return this._endBlockNode(If,Else)}_for(node2,forBody){return this._blockNode(node2),forBody&&this.code(forBody).endFor(),this}for(iteration,forBody){return this._for(new ForLoop(iteration),forBody)}forRange(nameOrPrefix,from,to,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.let){let name2=this._scope.toName(nameOrPrefix);return this._for(new ForRange(varKind,name2,from,to),()=>forBody(name2))}forOf(nameOrPrefix,iterable,forBody,varKind=scope_1.varKinds.const){let name2=this._scope.toName(nameOrPrefix);if(this.opts.es5){let arr=iterable instanceof code_1.Name?iterable:this.var("_arr",iterable);return this.forRange("_i",0,(0,code_1._)`${arr}.length`,i=>{this.var(name2,(0,code_1._)`${arr}[${i}]`),forBody(name2)})}return this._for(new ForIter("of",varKind,name2,iterable),()=>forBody(name2))}forIn(nameOrPrefix,obj,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.const){if(this.opts.ownProperties)return this.forOf(nameOrPrefix,(0,code_1._)`Object.keys(${obj})`,forBody);let name2=this._scope.toName(nameOrPrefix);return this._for(new ForIter("in",varKind,name2,obj),()=>forBody(name2))}endFor(){return this._endBlockNode(For)}label(label){return this._leafNode(new Label(label))}break(label){return this._leafNode(new Break(label))}return(value){let node2=new Return;if(this._blockNode(node2),this.code(value),node2.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Return)}try(tryBody,catchCode,finallyCode){if(!catchCode&&!finallyCode)throw new Error('CodeGen: "try" without "catch" and "finally"');let node2=new Try;if(this._blockNode(node2),this.code(tryBody),catchCode){let error2=this.name("e");this._currNode=node2.catch=new Catch(error2),catchCode(error2)}return finallyCode&&(this._currNode=node2.finally=new Finally,this.code(finallyCode)),this._endBlockNode(Catch,Finally)}throw(error2){return this._leafNode(new Throw(error2))}block(body,nodeCount){return this._blockStarts.push(this._nodes.length),body&&this.code(body).endBlock(nodeCount),this}endBlock(nodeCount){let len=this._blockStarts.pop();if(len===void 0)throw new Error("CodeGen: not in self-balancing block");let toClose=this._nodes.length-len;if(toClose<0||nodeCount!==void 0&&toClose!==nodeCount)throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);return this._nodes.length=len,this}func(name2,args=code_1.nil,async,funcBody){return this._blockNode(new Func(name2,args,async)),funcBody&&this.code(funcBody).endFunc(),this}endFunc(){return this._endBlockNode(Func)}optimize(n2=1){for(;n2-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(node2){return this._currNode.nodes.push(node2),this}_blockNode(node2){this._currNode.nodes.push(node2),this._nodes.push(node2)}_endBlockNode(N1,N2){let n2=this._currNode;if(n2 instanceof N1||N2&&n2 instanceof N2)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${N2?`${N1.kind}/${N2.kind}`:N1.kind}"`)}_elseNode(node2){let n2=this._currNode;if(!(n2 instanceof If))throw new Error('CodeGen: "else" without "if"');return this._currNode=n2.else=node2,this}get _root(){return this._nodes[0]}get _currNode(){let ns=this._nodes;return ns[ns.length-1]}set _currNode(node2){let ns=this._nodes;ns[ns.length-1]=node2}};exports.CodeGen=CodeGen;function addNames(names2,from){for(let n2 in from)names2[n2]=(names2[n2]||0)+(from[n2]||0);return names2}function addExprNames(names2,from){return from instanceof code_1._CodeOrName?addNames(names2,from.names):names2}function optimizeExpr(expr,names2,constants){if(expr instanceof code_1.Name)return replaceName(expr);if(!canOptimize(expr))return expr;return new code_1._Code(expr._items.reduce((items,c)=>(c instanceof code_1.Name&&(c=replaceName(c)),c instanceof code_1._Code?items.push(...c._items):items.push(c),items),[]));function replaceName(n2){let c=constants[n2.str];return c===void 0||names2[n2.str]!==1?n2:(delete names2[n2.str],c)}function canOptimize(e){return e instanceof code_1._Code&&e._items.some(c=>c instanceof code_1.Name&&names2[c.str]===1&&constants[c.str]!==void 0)}}function subtractNames(names2,from){for(let n2 in from)names2[n2]=(names2[n2]||0)-(from[n2]||0)}function not(x){return typeof x=="boolean"||typeof x=="number"||x===null?!x:(0,code_1._)`!${par(x)}`}exports.not=not;let andCode=mappend(exports.operators.AND);function and(...args){return args.reduce(andCode)}exports.and=and;let orCode=mappend(exports.operators.OR);function or(...args){return args.reduce(orCode)}exports.or=or;function mappend(op){return(x,y)=>x===code_1.nil?y:y===code_1.nil?x:(0,code_1._)`${par(x)} ${op} ${par(y)}`}function par(x){return x instanceof code_1.Name?x:(0,code_1._)`(${x})`}})),require_util2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkStrictMode=exports.getErrorPath=exports.Type=exports.useFunc=exports.setEvaluated=exports.evaluatedPropsToName=exports.mergeEvaluated=exports.eachItem=exports.unescapeJsonPointer=exports.escapeJsonPointer=exports.escapeFragment=exports.unescapeFragment=exports.schemaRefOrVal=exports.schemaHasRulesButRef=exports.schemaHasRules=exports.checkUnknownRules=exports.alwaysValidSchema=exports.toHash=void 0;let codegen_1=require_codegen2(),code_1=require_code$12();function toHash(arr){let hash={};for(let item of arr)hash[item]=!0;return hash}exports.toHash=toHash;function alwaysValidSchema(it,schema){return typeof schema=="boolean"?schema:Object.keys(schema).length===0?!0:(checkUnknownRules(it,schema),!schemaHasRules(schema,it.self.RULES.all))}exports.alwaysValidSchema=alwaysValidSchema;function checkUnknownRules(it,schema=it.schema){let{opts,self}=it;if(!opts.strictSchema||typeof schema=="boolean")return;let rules=self.RULES.keywords;for(let key in schema)rules[key]||checkStrictMode(it,`unknown keyword: "${key}"`)}exports.checkUnknownRules=checkUnknownRules;function schemaHasRules(schema,rules){if(typeof schema=="boolean")return!schema;for(let key in schema)if(rules[key])return!0;return!1}exports.schemaHasRules=schemaHasRules;function schemaHasRulesButRef(schema,RULES2){if(typeof schema=="boolean")return!schema;for(let key in schema)if(key!=="$ref"&&RULES2.all[key])return!0;return!1}exports.schemaHasRulesButRef=schemaHasRulesButRef;function schemaRefOrVal({topSchemaRef,schemaPath},schema,keyword,$data){if(!$data){if(typeof schema=="number"||typeof schema=="boolean")return schema;if(typeof schema=="string")return(0,codegen_1._)`${schema}`}return(0,codegen_1._)`${topSchemaRef}${schemaPath}${(0,codegen_1.getProperty)(keyword)}`}exports.schemaRefOrVal=schemaRefOrVal;function unescapeFragment(str2){return unescapeJsonPointer(decodeURIComponent(str2))}exports.unescapeFragment=unescapeFragment;function escapeFragment(str2){return encodeURIComponent(escapeJsonPointer(str2))}exports.escapeFragment=escapeFragment;function escapeJsonPointer(str2){return typeof str2=="number"?`${str2}`:str2.replace(/~/g,"~0").replace(/\//g,"~1")}exports.escapeJsonPointer=escapeJsonPointer;function unescapeJsonPointer(str2){return str2.replace(/~1/g,"/").replace(/~0/g,"~")}exports.unescapeJsonPointer=unescapeJsonPointer;function eachItem(xs,f2){if(Array.isArray(xs))for(let x of xs)f2(x);else f2(xs)}exports.eachItem=eachItem;function makeMergeEvaluated({mergeNames,mergeToName,mergeValues:mergeValues2,resultToName}){return(gen,from,to,toName)=>{let res=to===void 0?from:to instanceof codegen_1.Name?(from instanceof codegen_1.Name?mergeNames(gen,from,to):mergeToName(gen,from,to),to):from instanceof codegen_1.Name?(mergeToName(gen,to,from),from):mergeValues2(from,to);return toName===codegen_1.Name&&!(res instanceof codegen_1.Name)?resultToName(gen,res):res}}exports.mergeEvaluated={props:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true && ${from} !== undefined`,()=>{gen.if((0,codegen_1._)`${from} === true`,()=>gen.assign(to,!0),()=>gen.assign(to,(0,codegen_1._)`${to} || {}`).code((0,codegen_1._)`Object.assign(${to}, ${from})`))}),mergeToName:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true`,()=>{from===!0?gen.assign(to,!0):(gen.assign(to,(0,codegen_1._)`${to} || {}`),setEvaluated(gen,to,from))}),mergeValues:(from,to)=>from===!0?!0:{...from,...to},resultToName:evaluatedPropsToName}),items:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true && ${from} !== undefined`,()=>gen.assign(to,(0,codegen_1._)`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),mergeToName:(gen,from,to)=>gen.if((0,codegen_1._)`${to} !== true`,()=>gen.assign(to,from===!0?!0:(0,codegen_1._)`${to} > ${from} ? ${to} : ${from}`)),mergeValues:(from,to)=>from===!0?!0:Math.max(from,to),resultToName:(gen,items)=>gen.var("items",items)})};function evaluatedPropsToName(gen,ps){if(ps===!0)return gen.var("props",!0);let props=gen.var("props",(0,codegen_1._)`{}`);return ps!==void 0&&setEvaluated(gen,props,ps),props}exports.evaluatedPropsToName=evaluatedPropsToName;function setEvaluated(gen,props,ps){Object.keys(ps).forEach(p=>gen.assign((0,codegen_1._)`${props}${(0,codegen_1.getProperty)(p)}`,!0))}exports.setEvaluated=setEvaluated;let snippets={};function useFunc(gen,f2){return gen.scopeValue("func",{ref:f2,code:snippets[f2.code]||(snippets[f2.code]=new code_1._Code(f2.code))})}exports.useFunc=useFunc;var Type;(function(Type2){Type2[Type2.Num=0]="Num",Type2[Type2.Str=1]="Str"})(Type||(exports.Type=Type={}));function getErrorPath(dataProp,dataPropType,jsPropertySyntax){if(dataProp instanceof codegen_1.Name){let isNumber=dataPropType===Type.Num;return jsPropertySyntax?isNumber?(0,codegen_1._)`"[" + ${dataProp} + "]"`:(0,codegen_1._)`"['" + ${dataProp} + "']"`:isNumber?(0,codegen_1._)`"/" + ${dataProp}`:(0,codegen_1._)`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return jsPropertySyntax?(0,codegen_1.getProperty)(dataProp).toString():"/"+escapeJsonPointer(dataProp)}exports.getErrorPath=getErrorPath;function checkStrictMode(it,msg,mode=it.opts.strictSchema){if(mode){if(msg=`strict mode: ${msg}`,mode===!0)throw new Error(msg);it.self.logger.warn(msg)}}exports.checkStrictMode=checkStrictMode})),require_names2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),names2={data:new codegen_1.Name("data"),valCxt:new codegen_1.Name("valCxt"),instancePath:new codegen_1.Name("instancePath"),parentData:new codegen_1.Name("parentData"),parentDataProperty:new codegen_1.Name("parentDataProperty"),rootData:new codegen_1.Name("rootData"),dynamicAnchors:new codegen_1.Name("dynamicAnchors"),vErrors:new codegen_1.Name("vErrors"),errors:new codegen_1.Name("errors"),this:new codegen_1.Name("this"),self:new codegen_1.Name("self"),scope:new codegen_1.Name("scope"),json:new codegen_1.Name("json"),jsonPos:new codegen_1.Name("jsonPos"),jsonLen:new codegen_1.Name("jsonLen"),jsonPart:new codegen_1.Name("jsonPart")};exports.default=names2})),require_errors2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.extendErrors=exports.resetErrorsCount=exports.reportExtraError=exports.reportError=exports.keyword$DataError=exports.keywordError=void 0;let codegen_1=require_codegen2(),util_1=require_util2(),names_1=require_names2();exports.keywordError={message:({keyword})=>(0,codegen_1.str)`must pass "${keyword}" keyword validation`},exports.keyword$DataError={message:({keyword,schemaType})=>schemaType?(0,codegen_1.str)`"${keyword}" keyword must be ${schemaType} ($data)`:(0,codegen_1.str)`"${keyword}" keyword is invalid ($data)`};function reportError(cxt,error2=exports.keywordError,errorPaths,overrideAllErrors){let{it}=cxt,{gen,compositeRule,allErrors}=it,errObj=errorObjectCode(cxt,error2,errorPaths);overrideAllErrors??(compositeRule||allErrors)?addError(gen,errObj):returnErrors(it,(0,codegen_1._)`[${errObj}]`)}exports.reportError=reportError;function reportExtraError(cxt,error2=exports.keywordError,errorPaths){let{it}=cxt,{gen,compositeRule,allErrors}=it;addError(gen,errorObjectCode(cxt,error2,errorPaths)),compositeRule||allErrors||returnErrors(it,names_1.default.vErrors)}exports.reportExtraError=reportExtraError;function resetErrorsCount(gen,errsCount){gen.assign(names_1.default.errors,errsCount),gen.if((0,codegen_1._)`${names_1.default.vErrors} !== null`,()=>gen.if(errsCount,()=>gen.assign((0,codegen_1._)`${names_1.default.vErrors}.length`,errsCount),()=>gen.assign(names_1.default.vErrors,null)))}exports.resetErrorsCount=resetErrorsCount;function extendErrors({gen,keyword,schemaValue,data,errsCount,it}){if(errsCount===void 0)throw new Error("ajv implementation error");let err=gen.name("err");gen.forRange("i",errsCount,names_1.default.errors,i=>{gen.const(err,(0,codegen_1._)`${names_1.default.vErrors}[${i}]`),gen.if((0,codegen_1._)`${err}.instancePath === undefined`,()=>gen.assign((0,codegen_1._)`${err}.instancePath`,(0,codegen_1.strConcat)(names_1.default.instancePath,it.errorPath))),gen.assign((0,codegen_1._)`${err}.schemaPath`,(0,codegen_1.str)`${it.errSchemaPath}/${keyword}`),it.opts.verbose&&(gen.assign((0,codegen_1._)`${err}.schema`,schemaValue),gen.assign((0,codegen_1._)`${err}.data`,data))})}exports.extendErrors=extendErrors;function addError(gen,errObj){let err=gen.const("err",errObj);gen.if((0,codegen_1._)`${names_1.default.vErrors} === null`,()=>gen.assign(names_1.default.vErrors,(0,codegen_1._)`[${err}]`),(0,codegen_1._)`${names_1.default.vErrors}.push(${err})`),gen.code((0,codegen_1._)`${names_1.default.errors}++`)}function returnErrors(it,errs){let{gen,validateName,schemaEnv}=it;schemaEnv.$async?gen.throw((0,codegen_1._)`new ${it.ValidationError}(${errs})`):(gen.assign((0,codegen_1._)`${validateName}.errors`,errs),gen.return(!1))}let E={keyword:new codegen_1.Name("keyword"),schemaPath:new codegen_1.Name("schemaPath"),params:new codegen_1.Name("params"),propertyName:new codegen_1.Name("propertyName"),message:new codegen_1.Name("message"),schema:new codegen_1.Name("schema"),parentSchema:new codegen_1.Name("parentSchema")};function errorObjectCode(cxt,error2,errorPaths){let{createErrors}=cxt.it;return createErrors===!1?(0,codegen_1._)`{}`:errorObject(cxt,error2,errorPaths)}function errorObject(cxt,error2,errorPaths={}){let{gen,it}=cxt,keyValues=[errorInstancePath(it,errorPaths),errorSchemaPath(cxt,errorPaths)];return extraErrorProps(cxt,error2,keyValues),gen.object(...keyValues)}function errorInstancePath({errorPath},{instancePath}){let instPath=instancePath?(0,codegen_1.str)`${errorPath}${(0,util_1.getErrorPath)(instancePath,util_1.Type.Str)}`:errorPath;return[names_1.default.instancePath,(0,codegen_1.strConcat)(names_1.default.instancePath,instPath)]}function errorSchemaPath({keyword,it:{errSchemaPath}},{schemaPath,parentSchema}){let schPath=parentSchema?errSchemaPath:(0,codegen_1.str)`${errSchemaPath}/${keyword}`;return schemaPath&&(schPath=(0,codegen_1.str)`${schPath}${(0,util_1.getErrorPath)(schemaPath,util_1.Type.Str)}`),[E.schemaPath,schPath]}function extraErrorProps(cxt,{params,message},keyValues){let{keyword,data,schemaValue,it}=cxt,{opts,propertyName:propertyName2,topSchemaRef,schemaPath}=it;keyValues.push([E.keyword,keyword],[E.params,typeof params=="function"?params(cxt):params||(0,codegen_1._)`{}`]),opts.messages&&keyValues.push([E.message,typeof message=="function"?message(cxt):message]),opts.verbose&&keyValues.push([E.schema,schemaValue],[E.parentSchema,(0,codegen_1._)`${topSchemaRef}${schemaPath}`],[names_1.default.data,data]),propertyName2&&keyValues.push([E.propertyName,propertyName2])}})),require_boolSchema2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.boolOrEmptySchema=exports.topBoolOrEmptySchema=void 0;let errors_1=require_errors2(),codegen_1=require_codegen2(),names_1=require_names2(),boolError={message:"boolean schema is false"};function topBoolOrEmptySchema(it){let{gen,schema,validateName}=it;schema===!1?falseSchemaError(it,!1):typeof schema=="object"&&schema.$async===!0?gen.return(names_1.default.data):(gen.assign((0,codegen_1._)`${validateName}.errors`,null),gen.return(!0))}exports.topBoolOrEmptySchema=topBoolOrEmptySchema;function boolOrEmptySchema(it,valid){let{gen,schema}=it;schema===!1?(gen.var(valid,!1),falseSchemaError(it)):gen.var(valid,!0)}exports.boolOrEmptySchema=boolOrEmptySchema;function falseSchemaError(it,overrideAllErrors){let{gen,data}=it,cxt={gen,keyword:"false schema",data,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it};(0,errors_1.reportError)(cxt,boolError,void 0,overrideAllErrors)}})),require_rules2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRules=exports.isJSONType=void 0;let jsonTypes=new Set(["string","number","integer","boolean","null","object","array"]);function isJSONType(x){return typeof x=="string"&&jsonTypes.has(x)}exports.isJSONType=isJSONType;function getRules(){let groups={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...groups,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},groups.number,groups.string,groups.array,groups.object],post:{rules:[]},all:{},keywords:{}}}exports.getRules=getRules})),require_applicability2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.shouldUseRule=exports.shouldUseGroup=exports.schemaHasRulesForType=void 0;function schemaHasRulesForType({schema,self},type){let group=self.RULES.types[type];return group&&group!==!0&&shouldUseGroup(schema,group)}exports.schemaHasRulesForType=schemaHasRulesForType;function shouldUseGroup(schema,group){return group.rules.some(rule2=>shouldUseRule(schema,rule2))}exports.shouldUseGroup=shouldUseGroup;function shouldUseRule(schema,rule2){var _a3;return schema[rule2.keyword]!==void 0||((_a3=rule2.definition.implements)===null||_a3===void 0?void 0:_a3.some(kwd=>schema[kwd]!==void 0))}exports.shouldUseRule=shouldUseRule})),require_dataType2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.reportTypeError=exports.checkDataTypes=exports.checkDataType=exports.coerceAndCheckDataType=exports.getJSONTypes=exports.getSchemaTypes=exports.DataType=void 0;let rules_1=require_rules2(),applicability_1=require_applicability2(),errors_1=require_errors2(),codegen_1=require_codegen2(),util_1=require_util2();var DataType;(function(DataType2){DataType2[DataType2.Correct=0]="Correct",DataType2[DataType2.Wrong=1]="Wrong"})(DataType||(exports.DataType=DataType={}));function getSchemaTypes(schema){let types2=getJSONTypes(schema.type);if(types2.includes("null")){if(schema.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!types2.length&&schema.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');schema.nullable===!0&&types2.push("null")}return types2}exports.getSchemaTypes=getSchemaTypes;function getJSONTypes(ts){let types2=Array.isArray(ts)?ts:ts?[ts]:[];if(types2.every(rules_1.isJSONType))return types2;throw new Error("type must be JSONType or JSONType[]: "+types2.join(","))}exports.getJSONTypes=getJSONTypes;function coerceAndCheckDataType(it,types2){let{gen,data,opts}=it,coerceTo=coerceToTypes(types2,opts.coerceTypes),checkTypes=types2.length>0&&!(coerceTo.length===0&&types2.length===1&&(0,applicability_1.schemaHasRulesForType)(it,types2[0]));if(checkTypes){let wrongType=checkDataTypes(types2,data,opts.strictNumbers,DataType.Wrong);gen.if(wrongType,()=>{coerceTo.length?coerceData(it,types2,coerceTo):reportTypeError(it)})}return checkTypes}exports.coerceAndCheckDataType=coerceAndCheckDataType;let COERCIBLE=new Set(["string","number","integer","boolean","null"]);function coerceToTypes(types2,coerceTypes){return coerceTypes?types2.filter(t=>COERCIBLE.has(t)||coerceTypes==="array"&&t==="array"):[]}function coerceData(it,types2,coerceTo){let{gen,data,opts}=it,dataType=gen.let("dataType",(0,codegen_1._)`typeof ${data}`),coerced=gen.let("coerced",(0,codegen_1._)`undefined`);opts.coerceTypes==="array"&&gen.if((0,codegen_1._)`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`,()=>gen.assign(data,(0,codegen_1._)`${data}[0]`).assign(dataType,(0,codegen_1._)`typeof ${data}`).if(checkDataTypes(types2,data,opts.strictNumbers),()=>gen.assign(coerced,data))),gen.if((0,codegen_1._)`${coerced} !== undefined`);for(let t of coerceTo)(COERCIBLE.has(t)||t==="array"&&opts.coerceTypes==="array")&&coerceSpecificType(t);gen.else(),reportTypeError(it),gen.endIf(),gen.if((0,codegen_1._)`${coerced} !== undefined`,()=>{gen.assign(data,coerced),assignParentData(it,coerced)});function coerceSpecificType(t){switch(t){case"string":gen.elseIf((0,codegen_1._)`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced,(0,codegen_1._)`"" + ${data}`).elseIf((0,codegen_1._)`${data} === null`).assign(coerced,(0,codegen_1._)`""`);return;case"number":gen.elseIf((0,codegen_1._)`${dataType} == "boolean" || ${data} === null
|
|
70
|
+
|| (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced,(0,codegen_1._)`+${data}`);return;case"integer":gen.elseIf((0,codegen_1._)`${dataType} === "boolean" || ${data} === null
|
|
71
|
+
|| (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced,(0,codegen_1._)`+${data}`);return;case"boolean":gen.elseIf((0,codegen_1._)`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced,!1).elseIf((0,codegen_1._)`${data} === "true" || ${data} === 1`).assign(coerced,!0);return;case"null":gen.elseIf((0,codegen_1._)`${data} === "" || ${data} === 0 || ${data} === false`),gen.assign(coerced,null);return;case"array":gen.elseIf((0,codegen_1._)`${dataType} === "string" || ${dataType} === "number"
|
|
72
|
+
|| ${dataType} === "boolean" || ${data} === null`).assign(coerced,(0,codegen_1._)`[${data}]`)}}}function assignParentData({gen,parentData,parentDataProperty},expr){gen.if((0,codegen_1._)`${parentData} !== undefined`,()=>gen.assign((0,codegen_1._)`${parentData}[${parentDataProperty}]`,expr))}function checkDataType(dataType,data,strictNums,correct=DataType.Correct){let EQ=correct===DataType.Correct?codegen_1.operators.EQ:codegen_1.operators.NEQ,cond;switch(dataType){case"null":return(0,codegen_1._)`${data} ${EQ} null`;case"array":cond=(0,codegen_1._)`Array.isArray(${data})`;break;case"object":cond=(0,codegen_1._)`${data} && typeof ${data} == "object" && !Array.isArray(${data})`;break;case"integer":cond=numCond((0,codegen_1._)`!(${data} % 1) && !isNaN(${data})`);break;case"number":cond=numCond();break;default:return(0,codegen_1._)`typeof ${data} ${EQ} ${dataType}`}return correct===DataType.Correct?cond:(0,codegen_1.not)(cond);function numCond(_cond=codegen_1.nil){return(0,codegen_1.and)((0,codegen_1._)`typeof ${data} == "number"`,_cond,strictNums?(0,codegen_1._)`isFinite(${data})`:codegen_1.nil)}}exports.checkDataType=checkDataType;function checkDataTypes(dataTypes,data,strictNums,correct){if(dataTypes.length===1)return checkDataType(dataTypes[0],data,strictNums,correct);let cond,types2=(0,util_1.toHash)(dataTypes);if(types2.array&&types2.object){let notObj=(0,codegen_1._)`typeof ${data} != "object"`;cond=types2.null?notObj:(0,codegen_1._)`!${data} || ${notObj}`,delete types2.null,delete types2.array,delete types2.object}else cond=codegen_1.nil;types2.number&&delete types2.integer;for(let t in types2)cond=(0,codegen_1.and)(cond,checkDataType(t,data,strictNums,correct));return cond}exports.checkDataTypes=checkDataTypes;let typeError={message:({schema})=>`must be ${schema}`,params:({schema,schemaValue})=>typeof schema=="string"?(0,codegen_1._)`{type: ${schema}}`:(0,codegen_1._)`{type: ${schemaValue}}`};function reportTypeError(it){let cxt=getTypeErrorContext(it);(0,errors_1.reportError)(cxt,typeError)}exports.reportTypeError=reportTypeError;function getTypeErrorContext(it){let{gen,data,schema}=it,schemaCode=(0,util_1.schemaRefOrVal)(it,schema,"type");return{gen,keyword:"type",data,schema:schema.type,schemaCode,schemaValue:schemaCode,parentSchema:schema,params:{},it}}})),require_defaults2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.assignDefaults=void 0;let codegen_1=require_codegen2(),util_1=require_util2();function assignDefaults(it,ty){let{properties,items}=it.schema;if(ty==="object"&&properties)for(let key in properties)assignDefault(it,key,properties[key].default);else ty==="array"&&Array.isArray(items)&&items.forEach((sch,i)=>assignDefault(it,i,sch.default))}exports.assignDefaults=assignDefaults;function assignDefault(it,prop,defaultValue){let{gen,compositeRule,data,opts}=it;if(defaultValue===void 0)return;let childData=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(prop)}`;if(compositeRule){(0,util_1.checkStrictMode)(it,`default is ignored for: ${childData}`);return}let condition=(0,codegen_1._)`${childData} === undefined`;opts.useDefaults==="empty"&&(condition=(0,codegen_1._)`${condition} || ${childData} === null || ${childData} === ""`),gen.if(condition,(0,codegen_1._)`${childData} = ${(0,codegen_1.stringify)(defaultValue)}`)}})),require_code2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateUnion=exports.validateArray=exports.usePattern=exports.callValidateCode=exports.schemaProperties=exports.allSchemaProperties=exports.noPropertyInData=exports.propertyInData=exports.isOwnProperty=exports.hasPropFunc=exports.reportMissingProp=exports.checkMissingProp=exports.checkReportMissingProp=void 0;let codegen_1=require_codegen2(),util_1=require_util2(),names_1=require_names2(),util_2=require_util2();function checkReportMissingProp(cxt,prop){let{gen,data,it}=cxt;gen.if(noPropertyInData(gen,data,prop,it.opts.ownProperties),()=>{cxt.setParams({missingProperty:(0,codegen_1._)`${prop}`},!0),cxt.error()})}exports.checkReportMissingProp=checkReportMissingProp;function checkMissingProp({gen,data,it:{opts}},properties,missing){return(0,codegen_1.or)(...properties.map(prop=>(0,codegen_1.and)(noPropertyInData(gen,data,prop,opts.ownProperties),(0,codegen_1._)`${missing} = ${prop}`)))}exports.checkMissingProp=checkMissingProp;function reportMissingProp(cxt,missing){cxt.setParams({missingProperty:missing},!0),cxt.error()}exports.reportMissingProp=reportMissingProp;function hasPropFunc(gen){return gen.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,codegen_1._)`Object.prototype.hasOwnProperty`})}exports.hasPropFunc=hasPropFunc;function isOwnProperty(gen,data,property){return(0,codegen_1._)`${hasPropFunc(gen)}.call(${data}, ${property})`}exports.isOwnProperty=isOwnProperty;function propertyInData(gen,data,property,ownProperties){let cond=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(property)} !== undefined`;return ownProperties?(0,codegen_1._)`${cond} && ${isOwnProperty(gen,data,property)}`:cond}exports.propertyInData=propertyInData;function noPropertyInData(gen,data,property,ownProperties){let cond=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(property)} === undefined`;return ownProperties?(0,codegen_1.or)(cond,(0,codegen_1.not)(isOwnProperty(gen,data,property))):cond}exports.noPropertyInData=noPropertyInData;function allSchemaProperties(schemaMap){return schemaMap?Object.keys(schemaMap).filter(p=>p!=="__proto__"):[]}exports.allSchemaProperties=allSchemaProperties;function schemaProperties(it,schemaMap){return allSchemaProperties(schemaMap).filter(p=>!(0,util_1.alwaysValidSchema)(it,schemaMap[p]))}exports.schemaProperties=schemaProperties;function callValidateCode({schemaCode,data,it:{gen,topSchemaRef,schemaPath,errorPath},it},func,context,passSchema){let dataAndSchema=passSchema?(0,codegen_1._)`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}`:data,valCxt=[[names_1.default.instancePath,(0,codegen_1.strConcat)(names_1.default.instancePath,errorPath)],[names_1.default.parentData,it.parentData],[names_1.default.parentDataProperty,it.parentDataProperty],[names_1.default.rootData,names_1.default.rootData]];it.opts.dynamicRef&&valCxt.push([names_1.default.dynamicAnchors,names_1.default.dynamicAnchors]);let args=(0,codegen_1._)`${dataAndSchema}, ${gen.object(...valCxt)}`;return context!==codegen_1.nil?(0,codegen_1._)`${func}.call(${context}, ${args})`:(0,codegen_1._)`${func}(${args})`}exports.callValidateCode=callValidateCode;let newRegExp=(0,codegen_1._)`new RegExp`;function usePattern({gen,it:{opts}},pattern){let u=opts.unicodeRegExp?"u":"",{regExp}=opts.code,rx=regExp(pattern,u);return gen.scopeValue("pattern",{key:rx.toString(),ref:rx,code:(0,codegen_1._)`${regExp.code==="new RegExp"?newRegExp:(0,util_2.useFunc)(gen,regExp)}(${pattern}, ${u})`})}exports.usePattern=usePattern;function validateArray(cxt){let{gen,data,keyword,it}=cxt,valid=gen.name("valid");if(it.allErrors){let validArr=gen.let("valid",!0);return validateItems(()=>gen.assign(validArr,!1)),validArr}return gen.var(valid,!0),validateItems(()=>gen.break()),valid;function validateItems(notValid){let len=gen.const("len",(0,codegen_1._)`${data}.length`);gen.forRange("i",0,len,i=>{cxt.subschema({keyword,dataProp:i,dataPropType:util_1.Type.Num},valid),gen.if((0,codegen_1.not)(valid),notValid)})}}exports.validateArray=validateArray;function validateUnion(cxt){let{gen,schema,keyword,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");if(schema.some(sch=>(0,util_1.alwaysValidSchema)(it,sch))&&!it.opts.unevaluated)return;let valid=gen.let("valid",!1),schValid=gen.name("_valid");gen.block(()=>schema.forEach((_sch,i)=>{let schCxt=cxt.subschema({keyword,schemaProp:i,compositeRule:!0},schValid);gen.assign(valid,(0,codegen_1._)`${valid} || ${schValid}`),cxt.mergeValidEvaluated(schCxt,schValid)||gen.if((0,codegen_1.not)(valid))})),cxt.result(valid,()=>cxt.reset(),()=>cxt.error(!0))}exports.validateUnion=validateUnion})),require_keyword2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateKeywordUsage=exports.validSchemaType=exports.funcKeywordCode=exports.macroKeywordCode=void 0;let codegen_1=require_codegen2(),names_1=require_names2(),code_1=require_code2(),errors_1=require_errors2();function macroKeywordCode(cxt,def){let{gen,keyword,schema,parentSchema,it}=cxt,macroSchema=def.macro.call(it.self,schema,parentSchema,it),schemaRef=useKeyword(gen,keyword,macroSchema);it.opts.validateSchema!==!1&&it.self.validateSchema(macroSchema,!0);let valid=gen.name("valid");cxt.subschema({schema:macroSchema,schemaPath:codegen_1.nil,errSchemaPath:`${it.errSchemaPath}/${keyword}`,topSchemaRef:schemaRef,compositeRule:!0},valid),cxt.pass(valid,()=>cxt.error(!0))}exports.macroKeywordCode=macroKeywordCode;function funcKeywordCode(cxt,def){var _a3;let{gen,keyword,schema,parentSchema,$data,it}=cxt;checkAsyncKeyword(it,def);let validateRef=useKeyword(gen,keyword,!$data&&def.compile?def.compile.call(it.self,schema,parentSchema,it):def.validate),valid=gen.let("valid");cxt.block$data(valid,validateKeyword),cxt.ok((_a3=def.valid)!==null&&_a3!==void 0?_a3:valid);function validateKeyword(){if(def.errors===!1)assignValid(),def.modifying&&modifyData(cxt),reportErrs(()=>cxt.error());else{let ruleErrs=def.async?validateAsync3():validateSync();def.modifying&&modifyData(cxt),reportErrs(()=>addErrs(cxt,ruleErrs))}}function validateAsync3(){let ruleErrs=gen.let("ruleErrs",null);return gen.try(()=>assignValid((0,codegen_1._)`await `),e=>gen.assign(valid,!1).if((0,codegen_1._)`${e} instanceof ${it.ValidationError}`,()=>gen.assign(ruleErrs,(0,codegen_1._)`${e}.errors`),()=>gen.throw(e))),ruleErrs}function validateSync(){let validateErrs=(0,codegen_1._)`${validateRef}.errors`;return gen.assign(validateErrs,null),assignValid(codegen_1.nil),validateErrs}function assignValid(_await=def.async?(0,codegen_1._)`await `:codegen_1.nil){let passCxt=it.opts.passContext?names_1.default.this:names_1.default.self,passSchema=!("compile"in def&&!$data||def.schema===!1);gen.assign(valid,(0,codegen_1._)`${_await}${(0,code_1.callValidateCode)(cxt,validateRef,passCxt,passSchema)}`,def.modifying)}function reportErrs(errors){var _a$1;gen.if((0,codegen_1.not)((_a$1=def.valid)!==null&&_a$1!==void 0?_a$1:valid),errors)}}exports.funcKeywordCode=funcKeywordCode;function modifyData(cxt){let{gen,data,it}=cxt;gen.if(it.parentData,()=>gen.assign(data,(0,codegen_1._)`${it.parentData}[${it.parentDataProperty}]`))}function addErrs(cxt,errs){let{gen}=cxt;gen.if((0,codegen_1._)`Array.isArray(${errs})`,()=>{gen.assign(names_1.default.vErrors,(0,codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`).assign(names_1.default.errors,(0,codegen_1._)`${names_1.default.vErrors}.length`),(0,errors_1.extendErrors)(cxt)},()=>cxt.error())}function checkAsyncKeyword({schemaEnv},def){if(def.async&&!schemaEnv.$async)throw new Error("async keyword in sync schema")}function useKeyword(gen,keyword,result2){if(result2===void 0)throw new Error(`keyword "${keyword}" failed to compile`);return gen.scopeValue("keyword",typeof result2=="function"?{ref:result2}:{ref:result2,code:(0,codegen_1.stringify)(result2)})}function validSchemaType(schema,schemaType,allowUndefined=!1){return!schemaType.length||schemaType.some(st=>st==="array"?Array.isArray(schema):st==="object"?schema&&typeof schema=="object"&&!Array.isArray(schema):typeof schema==st||allowUndefined&&typeof schema>"u")}exports.validSchemaType=validSchemaType;function validateKeywordUsage({schema,opts,self,errSchemaPath},def,keyword){if(Array.isArray(def.keyword)?!def.keyword.includes(keyword):def.keyword!==keyword)throw new Error("ajv implementation error");let deps=def.dependencies;if(deps?.some(kwd=>!Object.prototype.hasOwnProperty.call(schema,kwd)))throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(",")}`);if(def.validateSchema&&!def.validateSchema(schema[keyword])){let msg=`keyword "${keyword}" value is invalid at path "${errSchemaPath}": `+self.errorsText(def.validateSchema.errors);if(opts.validateSchema==="log")self.logger.error(msg);else throw new Error(msg)}}exports.validateKeywordUsage=validateKeywordUsage})),require_subschema2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.extendSubschemaMode=exports.extendSubschemaData=exports.getSubschema=void 0;let codegen_1=require_codegen2(),util_1=require_util2();function getSubschema(it,{keyword,schemaProp,schema,schemaPath,errSchemaPath,topSchemaRef}){if(keyword!==void 0&&schema!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(keyword!==void 0){let sch=it.schema[keyword];return schemaProp===void 0?{schema:sch,schemaPath:(0,codegen_1._)`${it.schemaPath}${(0,codegen_1.getProperty)(keyword)}`,errSchemaPath:`${it.errSchemaPath}/${keyword}`}:{schema:sch[schemaProp],schemaPath:(0,codegen_1._)`${it.schemaPath}${(0,codegen_1.getProperty)(keyword)}${(0,codegen_1.getProperty)(schemaProp)}`,errSchemaPath:`${it.errSchemaPath}/${keyword}/${(0,util_1.escapeFragment)(schemaProp)}`}}if(schema!==void 0){if(schemaPath===void 0||errSchemaPath===void 0||topSchemaRef===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema,schemaPath,topSchemaRef,errSchemaPath}}throw new Error('either "keyword" or "schema" must be passed')}exports.getSubschema=getSubschema;function extendSubschemaData(subschema,it,{dataProp,dataPropType:dpType,data,dataTypes,propertyName:propertyName2}){if(data!==void 0&&dataProp!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen}=it;if(dataProp!==void 0){let{errorPath,dataPathArr,opts}=it;dataContextProps(gen.let("data",(0,codegen_1._)`${it.data}${(0,codegen_1.getProperty)(dataProp)}`,!0)),subschema.errorPath=(0,codegen_1.str)`${errorPath}${(0,util_1.getErrorPath)(dataProp,dpType,opts.jsPropertySyntax)}`,subschema.parentDataProperty=(0,codegen_1._)`${dataProp}`,subschema.dataPathArr=[...dataPathArr,subschema.parentDataProperty]}data!==void 0&&(dataContextProps(data instanceof codegen_1.Name?data:gen.let("data",data,!0)),propertyName2!==void 0&&(subschema.propertyName=propertyName2)),dataTypes&&(subschema.dataTypes=dataTypes);function dataContextProps(_nextData){subschema.data=_nextData,subschema.dataLevel=it.dataLevel+1,subschema.dataTypes=[],it.definedProperties=new Set,subschema.parentData=it.data,subschema.dataNames=[...it.dataNames,_nextData]}}exports.extendSubschemaData=extendSubschemaData;function extendSubschemaMode(subschema,{jtdDiscriminator,jtdMetadata,compositeRule,createErrors,allErrors}){compositeRule!==void 0&&(subschema.compositeRule=compositeRule),createErrors!==void 0&&(subschema.createErrors=createErrors),allErrors!==void 0&&(subschema.allErrors=allErrors),subschema.jtdDiscriminator=jtdDiscriminator,subschema.jtdMetadata=jtdMetadata}exports.extendSubschemaMode=extendSubschemaMode})),require_fast_deep_equal2=__commonJSMin2(((exports,module)=>{module.exports=function equal(a,b){if(a===b)return!0;if(a&&b&&typeof a=="object"&&typeof b=="object"){if(a.constructor!==b.constructor)return!1;var length2,i,keys;if(Array.isArray(a)){if(length2=a.length,length2!=b.length)return!1;for(i=length2;i--!==0;)if(!equal(a[i],b[i]))return!1;return!0}if(a.constructor===RegExp)return a.source===b.source&&a.flags===b.flags;if(a.valueOf!==Object.prototype.valueOf)return a.valueOf()===b.valueOf();if(a.toString!==Object.prototype.toString)return a.toString()===b.toString();if(keys=Object.keys(a),length2=keys.length,length2!==Object.keys(b).length)return!1;for(i=length2;i--!==0;)if(!Object.prototype.hasOwnProperty.call(b,keys[i]))return!1;for(i=length2;i--!==0;){var key=keys[i];if(!equal(a[key],b[key]))return!1}return!0}return a!==a&&b!==b}})),require_json_schema_traverse2=__commonJSMin2(((exports,module)=>{var traverse=module.exports=function(schema,opts,cb){typeof opts=="function"&&(cb=opts,opts={}),cb=opts.cb||cb;var pre=typeof cb=="function"?cb:cb.pre||function(){},post=cb.post||function(){};_traverse(opts,pre,post,schema,"",schema)};traverse.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},traverse.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},traverse.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},traverse.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function _traverse(opts,pre,post,schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex){if(schema&&typeof schema=="object"&&!Array.isArray(schema)){pre(schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex);for(var key in schema){var sch=schema[key];if(Array.isArray(sch)){if(key in traverse.arrayKeywords)for(var i=0;i<sch.length;i++)_traverse(opts,pre,post,sch[i],jsonPtr+"/"+key+"/"+i,rootSchema,jsonPtr,key,schema,i)}else if(key in traverse.propsKeywords){if(sch&&typeof sch=="object")for(var prop in sch)_traverse(opts,pre,post,sch[prop],jsonPtr+"/"+key+"/"+escapeJsonPtr(prop),rootSchema,jsonPtr,key,schema,prop)}else(key in traverse.keywords||opts.allKeys&&!(key in traverse.skipKeywords))&&_traverse(opts,pre,post,sch,jsonPtr+"/"+key,rootSchema,jsonPtr,key,schema)}post(schema,jsonPtr,rootSchema,parentJsonPtr,parentKeyword,parentSchema,keyIndex)}}function escapeJsonPtr(str2){return str2.replace(/~/g,"~0").replace(/\//g,"~1")}})),require_resolve2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSchemaRefs=exports.resolveUrl=exports.normalizeId=exports._getFullPath=exports.getFullPath=exports.inlineRef=void 0;let util_1=require_util2(),equal=require_fast_deep_equal2(),traverse=require_json_schema_traverse2(),SIMPLE_INLINED=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function inlineRef(schema,limit=!0){return typeof schema=="boolean"?!0:limit===!0?!hasRef(schema):limit?countKeys(schema)<=limit:!1}exports.inlineRef=inlineRef;let REF_KEYWORDS=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function hasRef(schema){for(let key in schema){if(REF_KEYWORDS.has(key))return!0;let sch=schema[key];if(Array.isArray(sch)&&sch.some(hasRef)||typeof sch=="object"&&hasRef(sch))return!0}return!1}function countKeys(schema){let count=0;for(let key in schema){if(key==="$ref")return 1/0;if(count++,!SIMPLE_INLINED.has(key)&&(typeof schema[key]=="object"&&(0,util_1.eachItem)(schema[key],sch=>count+=countKeys(sch)),count===1/0))return 1/0}return count}function getFullPath(resolver,id="",normalize){return normalize!==!1&&(id=normalizeId(id)),_getFullPath(resolver,resolver.parse(id))}exports.getFullPath=getFullPath;function _getFullPath(resolver,p){return resolver.serialize(p).split("#")[0]+"#"}exports._getFullPath=_getFullPath;let TRAILING_SLASH_HASH=/#\/?$/;function normalizeId(id){return id?id.replace(TRAILING_SLASH_HASH,""):""}exports.normalizeId=normalizeId;function resolveUrl(resolver,baseId,id){return id=normalizeId(id),resolver.resolve(baseId,id)}exports.resolveUrl=resolveUrl;let ANCHOR=/^[a-z_][-a-z0-9._]*$/i;function getSchemaRefs(schema,baseId){if(typeof schema=="boolean")return{};let{schemaId,uriResolver}=this.opts,schId=normalizeId(schema[schemaId]||baseId),baseIds={"":schId},pathPrefix=getFullPath(uriResolver,schId,!1),localRefs={},schemaRefs=new Set;return traverse(schema,{allKeys:!0},(sch,jsonPtr,_,parentJsonPtr)=>{if(parentJsonPtr===void 0)return;let fullPath=pathPrefix+jsonPtr,innerBaseId=baseIds[parentJsonPtr];typeof sch[schemaId]=="string"&&(innerBaseId=addRef.call(this,sch[schemaId])),addAnchor.call(this,sch.$anchor),addAnchor.call(this,sch.$dynamicAnchor),baseIds[jsonPtr]=innerBaseId;function addRef(ref){let _resolve=this.opts.uriResolver.resolve;if(ref=normalizeId(innerBaseId?_resolve(innerBaseId,ref):ref),schemaRefs.has(ref))throw ambiguos(ref);schemaRefs.add(ref);let schOrRef=this.refs[ref];return typeof schOrRef=="string"&&(schOrRef=this.refs[schOrRef]),typeof schOrRef=="object"?checkAmbiguosRef(sch,schOrRef.schema,ref):ref!==normalizeId(fullPath)&&(ref[0]==="#"?(checkAmbiguosRef(sch,localRefs[ref],ref),localRefs[ref]=sch):this.refs[ref]=fullPath),ref}function addAnchor(anchor2){if(typeof anchor2=="string"){if(!ANCHOR.test(anchor2))throw new Error(`invalid anchor "${anchor2}"`);addRef.call(this,`#${anchor2}`)}}}),localRefs;function checkAmbiguosRef(sch1,sch2,ref){if(sch2!==void 0&&!equal(sch1,sch2))throw ambiguos(ref)}function ambiguos(ref){return new Error(`reference "${ref}" resolves to more than one schema`)}}exports.getSchemaRefs=getSchemaRefs})),require_validate2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.getData=exports.KeywordCxt=exports.validateFunctionCode=void 0;let boolSchema_1=require_boolSchema2(),dataType_1=require_dataType2(),applicability_1=require_applicability2(),dataType_2=require_dataType2(),defaults_1=require_defaults2(),keyword_1=require_keyword2(),subschema_1=require_subschema2(),codegen_1=require_codegen2(),names_1=require_names2(),resolve_1=require_resolve2(),util_1=require_util2(),errors_1=require_errors2();function validateFunctionCode(it){if(isSchemaObj(it)&&(checkKeywords(it),schemaCxtHasRules(it))){topSchemaObjCode(it);return}validateFunction(it,()=>(0,boolSchema_1.topBoolOrEmptySchema)(it))}exports.validateFunctionCode=validateFunctionCode;function validateFunction({gen,validateName,schema,schemaEnv,opts},body){opts.code.es5?gen.func(validateName,(0,codegen_1._)`${names_1.default.data}, ${names_1.default.valCxt}`,schemaEnv.$async,()=>{gen.code((0,codegen_1._)`"use strict"; ${funcSourceUrl(schema,opts)}`),destructureValCxtES5(gen,opts),gen.code(body)}):gen.func(validateName,(0,codegen_1._)`${names_1.default.data}, ${destructureValCxt(opts)}`,schemaEnv.$async,()=>gen.code(funcSourceUrl(schema,opts)).code(body))}function destructureValCxt(opts){return(0,codegen_1._)`{${names_1.default.instancePath}="", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef?(0,codegen_1._)`, ${names_1.default.dynamicAnchors}={}`:codegen_1.nil}}={}`}function destructureValCxtES5(gen,opts){gen.if(names_1.default.valCxt,()=>{gen.var(names_1.default.instancePath,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.instancePath}`),gen.var(names_1.default.parentData,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentData}`),gen.var(names_1.default.parentDataProperty,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.parentDataProperty}`),gen.var(names_1.default.rootData,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.rootData}`),opts.dynamicRef&&gen.var(names_1.default.dynamicAnchors,(0,codegen_1._)`${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`)},()=>{gen.var(names_1.default.instancePath,(0,codegen_1._)`""`),gen.var(names_1.default.parentData,(0,codegen_1._)`undefined`),gen.var(names_1.default.parentDataProperty,(0,codegen_1._)`undefined`),gen.var(names_1.default.rootData,names_1.default.data),opts.dynamicRef&&gen.var(names_1.default.dynamicAnchors,(0,codegen_1._)`{}`)})}function topSchemaObjCode(it){let{schema,opts,gen}=it;validateFunction(it,()=>{opts.$comment&&schema.$comment&&commentKeyword(it),checkNoDefault(it),gen.let(names_1.default.vErrors,null),gen.let(names_1.default.errors,0),opts.unevaluated&&resetEvaluated(it),typeAndKeywords(it),returnResults(it)})}function resetEvaluated(it){let{gen,validateName}=it;it.evaluated=gen.const("evaluated",(0,codegen_1._)`${validateName}.evaluated`),gen.if((0,codegen_1._)`${it.evaluated}.dynamicProps`,()=>gen.assign((0,codegen_1._)`${it.evaluated}.props`,(0,codegen_1._)`undefined`)),gen.if((0,codegen_1._)`${it.evaluated}.dynamicItems`,()=>gen.assign((0,codegen_1._)`${it.evaluated}.items`,(0,codegen_1._)`undefined`))}function funcSourceUrl(schema,opts){let schId=typeof schema=="object"&&schema[opts.schemaId];return schId&&(opts.code.source||opts.code.process)?(0,codegen_1._)`/*# sourceURL=${schId} */`:codegen_1.nil}function subschemaCode(it,valid){if(isSchemaObj(it)&&(checkKeywords(it),schemaCxtHasRules(it))){subSchemaObjCode(it,valid);return}(0,boolSchema_1.boolOrEmptySchema)(it,valid)}function schemaCxtHasRules({schema,self}){if(typeof schema=="boolean")return!schema;for(let key in schema)if(self.RULES.all[key])return!0;return!1}function isSchemaObj(it){return typeof it.schema!="boolean"}function subSchemaObjCode(it,valid){let{schema,gen,opts}=it;opts.$comment&&schema.$comment&&commentKeyword(it),updateContext(it),checkAsyncSchema(it);let errsCount=gen.const("_errs",names_1.default.errors);typeAndKeywords(it,errsCount),gen.var(valid,(0,codegen_1._)`${errsCount} === ${names_1.default.errors}`)}function checkKeywords(it){(0,util_1.checkUnknownRules)(it),checkRefsAndKeywords(it)}function typeAndKeywords(it,errsCount){if(it.opts.jtd)return schemaKeywords(it,[],!1,errsCount);let types2=(0,dataType_1.getSchemaTypes)(it.schema);schemaKeywords(it,types2,!(0,dataType_1.coerceAndCheckDataType)(it,types2),errsCount)}function checkRefsAndKeywords(it){let{schema,errSchemaPath,opts,self}=it;schema.$ref&&opts.ignoreKeywordsWithRef&&(0,util_1.schemaHasRulesButRef)(schema,self.RULES)&&self.logger.warn(`$ref: keywords ignored in schema at path "${errSchemaPath}"`)}function checkNoDefault(it){let{schema,opts}=it;schema.default!==void 0&&opts.useDefaults&&opts.strictSchema&&(0,util_1.checkStrictMode)(it,"default is ignored in the schema root")}function updateContext(it){let schId=it.schema[it.opts.schemaId];schId&&(it.baseId=(0,resolve_1.resolveUrl)(it.opts.uriResolver,it.baseId,schId))}function checkAsyncSchema(it){if(it.schema.$async&&!it.schemaEnv.$async)throw new Error("async schema in sync schema")}function commentKeyword({gen,schemaEnv,schema,errSchemaPath,opts}){let msg=schema.$comment;if(opts.$comment===!0)gen.code((0,codegen_1._)`${names_1.default.self}.logger.log(${msg})`);else if(typeof opts.$comment=="function"){let schemaPath=(0,codegen_1.str)`${errSchemaPath}/$comment`,rootName=gen.scopeValue("root",{ref:schemaEnv.root});gen.code((0,codegen_1._)`${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)}}function returnResults(it){let{gen,schemaEnv,validateName,ValidationError,opts}=it;schemaEnv.$async?gen.if((0,codegen_1._)`${names_1.default.errors} === 0`,()=>gen.return(names_1.default.data),()=>gen.throw((0,codegen_1._)`new ${ValidationError}(${names_1.default.vErrors})`)):(gen.assign((0,codegen_1._)`${validateName}.errors`,names_1.default.vErrors),opts.unevaluated&&assignEvaluated(it),gen.return((0,codegen_1._)`${names_1.default.errors} === 0`))}function assignEvaluated({gen,evaluated,props,items}){props instanceof codegen_1.Name&&gen.assign((0,codegen_1._)`${evaluated}.props`,props),items instanceof codegen_1.Name&&gen.assign((0,codegen_1._)`${evaluated}.items`,items)}function schemaKeywords(it,types2,typeErrors,errsCount){let{gen,schema,data,allErrors,opts,self}=it,{RULES:RULES2}=self;if(schema.$ref&&(opts.ignoreKeywordsWithRef||!(0,util_1.schemaHasRulesButRef)(schema,RULES2))){gen.block(()=>keywordCode(it,"$ref",RULES2.all.$ref.definition));return}opts.jtd||checkStrictTypes(it,types2),gen.block(()=>{for(let group of RULES2.rules)groupKeywords(group);groupKeywords(RULES2.post)});function groupKeywords(group){(0,applicability_1.shouldUseGroup)(schema,group)&&(group.type?(gen.if((0,dataType_2.checkDataType)(group.type,data,opts.strictNumbers)),iterateKeywords(it,group),types2.length===1&&types2[0]===group.type&&typeErrors&&(gen.else(),(0,dataType_2.reportTypeError)(it)),gen.endIf()):iterateKeywords(it,group),allErrors||gen.if((0,codegen_1._)`${names_1.default.errors} === ${errsCount||0}`))}}function iterateKeywords(it,group){let{gen,schema,opts:{useDefaults}}=it;useDefaults&&(0,defaults_1.assignDefaults)(it,group.type),gen.block(()=>{for(let rule2 of group.rules)(0,applicability_1.shouldUseRule)(schema,rule2)&&keywordCode(it,rule2.keyword,rule2.definition,group.type)})}function checkStrictTypes(it,types2){it.schemaEnv.meta||!it.opts.strictTypes||(checkContextTypes(it,types2),it.opts.allowUnionTypes||checkMultipleTypes(it,types2),checkKeywordTypes(it,it.dataTypes))}function checkContextTypes(it,types2){if(types2.length){if(!it.dataTypes.length){it.dataTypes=types2;return}types2.forEach(t=>{includesType(it.dataTypes,t)||strictTypesError(it,`type "${t}" not allowed by context "${it.dataTypes.join(",")}"`)}),narrowSchemaTypes(it,types2)}}function checkMultipleTypes(it,ts){ts.length>1&&!(ts.length===2&&ts.includes("null"))&&strictTypesError(it,"use allowUnionTypes to allow union type keyword")}function checkKeywordTypes(it,ts){let rules=it.self.RULES.all;for(let keyword in rules){let rule2=rules[keyword];if(typeof rule2=="object"&&(0,applicability_1.shouldUseRule)(it.schema,rule2)){let{type}=rule2.definition;type.length&&!type.some(t=>hasApplicableType(ts,t))&&strictTypesError(it,`missing type "${type.join(",")}" for keyword "${keyword}"`)}}}function hasApplicableType(schTs,kwdT){return schTs.includes(kwdT)||kwdT==="number"&&schTs.includes("integer")}function includesType(ts,t){return ts.includes(t)||t==="integer"&&ts.includes("number")}function narrowSchemaTypes(it,withTypes){let ts=[];for(let t of it.dataTypes)includesType(withTypes,t)?ts.push(t):withTypes.includes("integer")&&t==="number"&&ts.push("integer");it.dataTypes=ts}function strictTypesError(it,msg){let schemaPath=it.schemaEnv.baseId+it.errSchemaPath;msg+=` at "${schemaPath}" (strictTypes)`,(0,util_1.checkStrictMode)(it,msg,it.opts.strictTypes)}var KeywordCxt=class{constructor(it,def,keyword){if((0,keyword_1.validateKeywordUsage)(it,def,keyword),this.gen=it.gen,this.allErrors=it.allErrors,this.keyword=keyword,this.data=it.data,this.schema=it.schema[keyword],this.$data=def.$data&&it.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,util_1.schemaRefOrVal)(it,this.schema,keyword,this.$data),this.schemaType=def.schemaType,this.parentSchema=it.schema,this.params={},this.it=it,this.def=def,this.$data)this.schemaCode=it.gen.const("vSchema",getData(this.$data,it));else if(this.schemaCode=this.schemaValue,!(0,keyword_1.validSchemaType)(this.schema,def.schemaType,def.allowUndefined))throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);("code"in def?def.trackErrors:def.errors!==!1)&&(this.errsCount=it.gen.const("_errs",names_1.default.errors))}result(condition,successAction,failAction){this.failResult((0,codegen_1.not)(condition),successAction,failAction)}failResult(condition,successAction,failAction){this.gen.if(condition),failAction?failAction():this.error(),successAction?(this.gen.else(),successAction(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(condition,failAction){this.failResult((0,codegen_1.not)(condition),void 0,failAction)}fail(condition){if(condition===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(condition),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(condition){if(!this.$data)return this.fail(condition);let{schemaCode}=this;this.fail((0,codegen_1._)`${schemaCode} !== undefined && (${(0,codegen_1.or)(this.invalid$data(),condition)})`)}error(append,errorParams,errorPaths){if(errorParams){this.setParams(errorParams),this._error(append,errorPaths),this.setParams({});return}this._error(append,errorPaths)}_error(append,errorPaths){(append?errors_1.reportExtraError:errors_1.reportError)(this,this.def.error,errorPaths)}$dataError(){(0,errors_1.reportError)(this,this.def.$dataError||errors_1.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,errors_1.resetErrorsCount)(this.gen,this.errsCount)}ok(cond){this.allErrors||this.gen.if(cond)}setParams(obj,assign){assign?Object.assign(this.params,obj):this.params=obj}block$data(valid,codeBlock,$dataValid=codegen_1.nil){this.gen.block(()=>{this.check$data(valid,$dataValid),codeBlock()})}check$data(valid=codegen_1.nil,$dataValid=codegen_1.nil){if(!this.$data)return;let{gen,schemaCode,schemaType,def}=this;gen.if((0,codegen_1.or)((0,codegen_1._)`${schemaCode} === undefined`,$dataValid)),valid!==codegen_1.nil&&gen.assign(valid,!0),(schemaType.length||def.validateSchema)&&(gen.elseIf(this.invalid$data()),this.$dataError(),valid!==codegen_1.nil&&gen.assign(valid,!1)),gen.else()}invalid$data(){let{gen,schemaCode,schemaType,def,it}=this;return(0,codegen_1.or)(wrong$DataType(),invalid$DataSchema());function wrong$DataType(){if(schemaType.length){if(!(schemaCode instanceof codegen_1.Name))throw new Error("ajv implementation error");let st=Array.isArray(schemaType)?schemaType:[schemaType];return(0,codegen_1._)`${(0,dataType_2.checkDataTypes)(st,schemaCode,it.opts.strictNumbers,dataType_2.DataType.Wrong)}`}return codegen_1.nil}function invalid$DataSchema(){if(def.validateSchema){let validateSchemaRef=gen.scopeValue("validate$data",{ref:def.validateSchema});return(0,codegen_1._)`!${validateSchemaRef}(${schemaCode})`}return codegen_1.nil}}subschema(appl,valid){let subschema=(0,subschema_1.getSubschema)(this.it,appl);(0,subschema_1.extendSubschemaData)(subschema,this.it,appl),(0,subschema_1.extendSubschemaMode)(subschema,appl);let nextContext={...this.it,...subschema,items:void 0,props:void 0};return subschemaCode(nextContext,valid),nextContext}mergeEvaluated(schemaCxt,toName){let{it,gen}=this;it.opts.unevaluated&&(it.props!==!0&&schemaCxt.props!==void 0&&(it.props=util_1.mergeEvaluated.props(gen,schemaCxt.props,it.props,toName)),it.items!==!0&&schemaCxt.items!==void 0&&(it.items=util_1.mergeEvaluated.items(gen,schemaCxt.items,it.items,toName)))}mergeValidEvaluated(schemaCxt,valid){let{it,gen}=this;if(it.opts.unevaluated&&(it.props!==!0||it.items!==!0))return gen.if(valid,()=>this.mergeEvaluated(schemaCxt,codegen_1.Name)),!0}};exports.KeywordCxt=KeywordCxt;function keywordCode(it,keyword,def,ruleType){let cxt=new KeywordCxt(it,def,keyword);"code"in def?def.code(cxt,ruleType):cxt.$data&&def.validate?(0,keyword_1.funcKeywordCode)(cxt,def):"macro"in def?(0,keyword_1.macroKeywordCode)(cxt,def):(def.compile||def.validate)&&(0,keyword_1.funcKeywordCode)(cxt,def)}let JSON_POINTER=/^\/(?:[^~]|~0|~1)*$/,RELATIVE_JSON_POINTER=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function getData($data,{dataLevel,dataNames,dataPathArr}){let jsonPointer,data;if($data==="")return names_1.default.rootData;if($data[0]==="/"){if(!JSON_POINTER.test($data))throw new Error(`Invalid JSON-pointer: ${$data}`);jsonPointer=$data,data=names_1.default.rootData}else{let matches=RELATIVE_JSON_POINTER.exec($data);if(!matches)throw new Error(`Invalid JSON-pointer: ${$data}`);let up=+matches[1];if(jsonPointer=matches[2],jsonPointer==="#"){if(up>=dataLevel)throw new Error(errorMsg("property/index",up));return dataPathArr[dataLevel-up]}if(up>dataLevel)throw new Error(errorMsg("data",up));if(data=dataNames[dataLevel-up],!jsonPointer)return data}let expr=data,segments=jsonPointer.split("/");for(let segment of segments)segment&&(data=(0,codegen_1._)`${data}${(0,codegen_1.getProperty)((0,util_1.unescapeJsonPointer)(segment))}`,expr=(0,codegen_1._)`${expr} && ${data}`);return expr;function errorMsg(pointerType,up){return`Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`}}exports.getData=getData})),require_validation_error2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});var ValidationError=class extends Error{constructor(errors){super("validation failed"),this.errors=errors,this.ajv=this.validation=!0}};exports.default=ValidationError})),require_ref_error2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let resolve_1=require_resolve2();var MissingRefError=class extends Error{constructor(resolver,baseId,ref,msg){super(msg||`can't resolve reference ${ref} from id ${baseId}`),this.missingRef=(0,resolve_1.resolveUrl)(resolver,baseId,ref),this.missingSchema=(0,resolve_1.normalizeId)((0,resolve_1.getFullPath)(resolver,this.missingRef))}};exports.default=MissingRefError})),require_compile2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveSchema=exports.getCompilingSchema=exports.resolveRef=exports.compileSchema=exports.SchemaEnv=void 0;let codegen_1=require_codegen2(),validation_error_1=require_validation_error2(),names_1=require_names2(),resolve_1=require_resolve2(),util_1=require_util2(),validate_1=require_validate2();var SchemaEnv=class{constructor(env){var _a3;this.refs={},this.dynamicAnchors={};let schema;typeof env.schema=="object"&&(schema=env.schema),this.schema=env.schema,this.schemaId=env.schemaId,this.root=env.root||this,this.baseId=(_a3=env.baseId)!==null&&_a3!==void 0?_a3:(0,resolve_1.normalizeId)(schema?.[env.schemaId||"$id"]),this.schemaPath=env.schemaPath,this.localRefs=env.localRefs,this.meta=env.meta,this.$async=schema?.$async,this.refs={}}};exports.SchemaEnv=SchemaEnv;function compileSchema(sch){let _sch=getCompilingSchema.call(this,sch);if(_sch)return _sch;let rootId=(0,resolve_1.getFullPath)(this.opts.uriResolver,sch.root.baseId),{es5,lines:lines2}=this.opts.code,{ownProperties}=this.opts,gen=new codegen_1.CodeGen(this.scope,{es5,lines:lines2,ownProperties}),_ValidationError;sch.$async&&(_ValidationError=gen.scopeValue("Error",{ref:validation_error_1.default,code:(0,codegen_1._)`require("ajv/dist/runtime/validation_error").default`}));let validateName=gen.scopeName("validate");sch.validateName=validateName;let schemaCxt={gen,allErrors:this.opts.allErrors,data:names_1.default.data,parentData:names_1.default.parentData,parentDataProperty:names_1.default.parentDataProperty,dataNames:[names_1.default.data],dataPathArr:[codegen_1.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:gen.scopeValue("schema",this.opts.code.source===!0?{ref:sch.schema,code:(0,codegen_1.stringify)(sch.schema)}:{ref:sch.schema}),validateName,ValidationError:_ValidationError,schema:sch.schema,schemaEnv:sch,rootId,baseId:sch.baseId||rootId,schemaPath:codegen_1.nil,errSchemaPath:sch.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,codegen_1._)`""`,opts:this.opts,self:this},sourceCode;try{this._compilations.add(sch),(0,validate_1.validateFunctionCode)(schemaCxt),gen.optimize(this.opts.code.optimize);let validateCode=gen.toString();sourceCode=`${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`,this.opts.code.process&&(sourceCode=this.opts.code.process(sourceCode,sch));let validate2=new Function(`${names_1.default.self}`,`${names_1.default.scope}`,sourceCode)(this,this.scope.get());if(this.scope.value(validateName,{ref:validate2}),validate2.errors=null,validate2.schema=sch.schema,validate2.schemaEnv=sch,sch.$async&&(validate2.$async=!0),this.opts.code.source===!0&&(validate2.source={validateName,validateCode,scopeValues:gen._values}),this.opts.unevaluated){let{props,items}=schemaCxt;validate2.evaluated={props:props instanceof codegen_1.Name?void 0:props,items:items instanceof codegen_1.Name?void 0:items,dynamicProps:props instanceof codegen_1.Name,dynamicItems:items instanceof codegen_1.Name},validate2.source&&(validate2.source.evaluated=(0,codegen_1.stringify)(validate2.evaluated))}return sch.validate=validate2,sch}catch(e){throw delete sch.validate,delete sch.validateName,sourceCode&&this.logger.error("Error compiling schema, function code:",sourceCode),e}finally{this._compilations.delete(sch)}}exports.compileSchema=compileSchema;function resolveRef(root,baseId,ref){var _a3;ref=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,ref);let schOrFunc=root.refs[ref];if(schOrFunc)return schOrFunc;let _sch=resolve.call(this,root,ref);if(_sch===void 0){let schema=(_a3=root.localRefs)===null||_a3===void 0?void 0:_a3[ref],{schemaId}=this.opts;schema&&(_sch=new SchemaEnv({schema,schemaId,root,baseId}))}if(_sch!==void 0)return root.refs[ref]=inlineOrCompile.call(this,_sch)}exports.resolveRef=resolveRef;function inlineOrCompile(sch){return(0,resolve_1.inlineRef)(sch.schema,this.opts.inlineRefs)?sch.schema:sch.validate?sch:compileSchema.call(this,sch)}function getCompilingSchema(schEnv){for(let sch of this._compilations)if(sameSchemaEnv(sch,schEnv))return sch}exports.getCompilingSchema=getCompilingSchema;function sameSchemaEnv(s1,s2){return s1.schema===s2.schema&&s1.root===s2.root&&s1.baseId===s2.baseId}function resolve(root,ref){let sch;for(;typeof(sch=this.refs[ref])=="string";)ref=sch;return sch||this.schemas[ref]||resolveSchema.call(this,root,ref)}function resolveSchema(root,ref){let p=this.opts.uriResolver.parse(ref),refPath=(0,resolve_1._getFullPath)(this.opts.uriResolver,p),baseId=(0,resolve_1.getFullPath)(this.opts.uriResolver,root.baseId,void 0);if(Object.keys(root.schema).length>0&&refPath===baseId)return getJsonPointer.call(this,p,root);let id=(0,resolve_1.normalizeId)(refPath),schOrRef=this.refs[id]||this.schemas[id];if(typeof schOrRef=="string"){let sch=resolveSchema.call(this,root,schOrRef);return typeof sch?.schema!="object"?void 0:getJsonPointer.call(this,p,sch)}if(typeof schOrRef?.schema=="object"){if(schOrRef.validate||compileSchema.call(this,schOrRef),id===(0,resolve_1.normalizeId)(ref)){let{schema}=schOrRef,{schemaId}=this.opts,schId=schema[schemaId];return schId&&(baseId=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schId)),new SchemaEnv({schema,schemaId,root,baseId})}return getJsonPointer.call(this,p,schOrRef)}}exports.resolveSchema=resolveSchema;let PREVENT_SCOPE_CHANGE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function getJsonPointer(parsedRef,{baseId,schema,root}){var _a3;if(((_a3=parsedRef.fragment)===null||_a3===void 0?void 0:_a3[0])!=="/")return;for(let part of parsedRef.fragment.slice(1).split("/")){if(typeof schema=="boolean")return;let partSchema=schema[(0,util_1.unescapeFragment)(part)];if(partSchema===void 0)return;schema=partSchema;let schId=typeof schema=="object"&&schema[this.opts.schemaId];!PREVENT_SCOPE_CHANGE.has(part)&&schId&&(baseId=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schId))}let env;if(typeof schema!="boolean"&&schema.$ref&&!(0,util_1.schemaHasRulesButRef)(schema,this.RULES)){let $ref=(0,resolve_1.resolveUrl)(this.opts.uriResolver,baseId,schema.$ref);env=resolveSchema.call(this,root,$ref)}let{schemaId}=this.opts;if(env=env||new SchemaEnv({schema,schemaId,root,baseId}),env.schema!==env.root.schema)return env}})),require_data2=__commonJSMin2(((exports,module)=>{module.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}})),require_utils2=__commonJSMin2(((exports,module)=>{let isUUID=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),isIPv4=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),isPort=RegExp.prototype.test.bind(/^\d*$/u),isHexPair=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),isUnreserved=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),isPathCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),isQueryFragmentCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),isUserinfoCharacter=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),BYTE_HEX=new Array(256);{let HEX_DIGITS="0123456789ABCDEF";for(let i=0;i<256;i++)BYTE_HEX[i]="%"+HEX_DIGITS[i>>4]+HEX_DIGITS[i&15]}function percentEncodeNonAscii(cp){return cp<2048?BYTE_HEX[192|cp>>6]+BYTE_HEX[128|cp&63]:cp<65536?BYTE_HEX[224|cp>>12]+BYTE_HEX[128|cp>>6&63]+BYTE_HEX[128|cp&63]:BYTE_HEX[240|cp>>18]+BYTE_HEX[128|cp>>12&63]+BYTE_HEX[128|cp>>6&63]+BYTE_HEX[128|cp&63]}function stringArrayToHexStripped(input){let acc="",code2=0,i=0;for(i=0;i<input.length;i++)if(code2=input[i].charCodeAt(0),code2!==48){if(!(code2>=48&&code2<=57||code2>=65&&code2<=70||code2>=97&&code2<=102))return"";acc+=input[i];break}for(i+=1;i<input.length;i++){if(code2=input[i].charCodeAt(0),!(code2>=48&&code2<=57||code2>=65&&code2<=70||code2>=97&&code2<=102))return"";acc+=input[i]}return acc}let isHextet=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),isIPvFuture=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),isZoneCharacter=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),nonSimpleDomain=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function isZoneIdentifier(zone){if(zone.length===0)return!1;for(let i=0;i<zone.length;i++)if(!isZoneCharacter(zone[i])){if(zone[i]==="%"&&i+2<zone.length&&isHexPair(zone.slice(i+1,i+3))){i+=2;continue}return!1}return!0}function compressIPv6ZeroRun(hextets){let bestStart=-1,bestLength=0,runStart=-1,runLength=0;for(let i=0;i<hextets.length;i++)hextets[i]==="0"?(runStart===-1&&(runStart=i),runLength++,runLength>bestLength&&(bestLength=runLength,bestStart=runStart)):(runStart=-1,runLength=0);if(bestLength<2)return hextets.join(":");let head=hextets.slice(0,bestStart).join(":"),tail=hextets.slice(bestStart+bestLength).join(":");return head+"::"+tail}function normalizeIPv6Address(input){let compression=input.indexOf("::");if(compression!==-1&&input.indexOf("::",compression+1)!==-1)return;let left=compression===-1?input.split(":"):input.slice(0,compression).split(":"),right=compression===-1?[]:input.slice(compression+2).split(":");compression!==-1&&(left.length===1&&left[0]===""&&(left.length=0),right.length===1&&right[0]===""&&(right.length=0));let parts=left.concat(right),hextetCount=0;for(let i=0;i<parts.length;i++){let part=parts[i];if(part==="")return;if(part.indexOf(".")!==-1){if(i!==parts.length-1||compression!==-1&&right.length===0||!isIPv4(part))return;hextetCount+=2;continue}if(!isHextet(part))return;parts[i]=parseInt(part,16).toString(16),hextetCount++}if(compression===-1)return hextetCount!==8?void 0:compressIPv6ZeroRun(parts);if(hextetCount>=8)return;let expanded=parts.slice(0,left.length);for(let i=hextetCount;i<8;i++)expanded.push("0");for(let i=left.length;i<parts.length;i++)expanded.push(parts[i]);return compressIPv6ZeroRun(expanded)}function normalizeIPv6(host){let bracketed=host[0]==="["&&host[host.length-1]==="]";if((host[0]==="["||host[host.length-1]==="]")&&!bracketed)return{host,isIPV6:!1,error:!0};let input=bracketed?host.slice(1,-1):host;if(bracketed&&isIPvFuture(input))return input=input.toLowerCase(),{host:`[${input}]`,escapedHost:input,isIPV6:!1,isIPVFuture:!0};if(findToken(input,":")<2)return{host,isIPV6:!1,error:bracketed};let zoneIdentifier="",zoneSeparator=input.indexOf("%");if(zoneSeparator!==-1){let separatorLength=input.slice(zoneSeparator,zoneSeparator+3).toLowerCase()==="%25"?3:1;if(zoneIdentifier=input.slice(zoneSeparator+separatorLength),!isZoneIdentifier(zoneIdentifier))return{host,isIPV6:!1,error:!0};input=input.slice(0,zoneSeparator)}let address=normalizeIPv6Address(input);return address===void 0?{host,isIPV6:!1,error:!0}:{host:address+(zoneIdentifier?"%"+zoneIdentifier:""),escapedHost:address+(zoneIdentifier?"%25"+zoneIdentifier:""),isIPV6:!0}}function findToken(str2,token){let ind=0;for(let i=0;i<str2.length;i++)str2[i]===token&&ind++;return ind}function removeDotSegments(path){let input=path,output=[],nextSlash=-1,len=0;for(;len=input.length;){if(len===1){if(input===".")break;if(input==="/"){output.push("/");break}else{output.push(input);break}}else if(len===2){if(input[0]==="."){if(input[1]===".")break;if(input[1]==="/"){input=input.slice(2);continue}}else if(input[0]==="/"&&(input[1]==="."||input[1]==="/")){output.push("/");break}}else if(len===3&&input==="/.."){output.length!==0&&output.pop(),output.push("/");break}if(input[0]==="."){if(input[1]==="."){if(input[2]==="/"){input=input.slice(3);continue}}else if(input[1]==="/"){input=input.slice(2);continue}}else if(input[0]==="/"&&input[1]==="."){if(input[2]==="/"){input=input.slice(2);continue}else if(input[2]==="."&&input[3]==="/"){input=input.slice(3),output.length!==0&&output.pop();continue}}if((nextSlash=input.indexOf("/",1))===-1){output.push(input);break}else output.push(input.slice(0,nextSlash)),input=input.slice(nextSlash)}return output.join("")}let HOST_DELIMS={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},HOST_DELIM_RE=/[@/?#:]/g,HOST_DELIM_NO_COLON_RE=/[@/?#]/g;function reescapeHostDelimiters(host,isIP){let re=isIP?HOST_DELIM_NO_COLON_RE:HOST_DELIM_RE;return re.lastIndex=0,host.replace(re,ch=>HOST_DELIMS[ch])}function normalizePercentEncoding(input,decodeUnreserved=!1){if(input.indexOf("%")===-1)return input;let output="";for(let i=0;i<input.length;i++){if(input[i]==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));decodeUnreserved&&isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}output+=input[i]}return output}function normalizePathEncoding(input){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));decoded!=="."&&isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}if(isPathCharacter(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=isEscapeSafe(code2)?ch:BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function serializePathEncoding(input,pathNoScheme=!1){let output="",firstSegment=pathNoScheme&&input[0]!=="/";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}if(ch==="/"&&(firstSegment=!1),isPathCharacter(ch)&&(ch!==":"||!firstSegment))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function encodeComponent(input,isAllowed){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}if(isAllowed(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function encodeUserinfo(input){return encodeComponent(input,isUserinfoCharacter)}function encodeQuery(input){return encodeComponent(input,isQueryFragmentCharacter)}function encodeFragment(input){return encodeComponent(input,isQueryFragmentCharacter)}function isEscapeSafe(cp){return cp>=48&&cp<=57||cp>=65&&cp<=90||cp>=97&&cp<=122||cp===42||cp===43||cp===45||cp===46||cp===47||cp===64||cp===95}function normalizeQueryFragmentEncoding(input){let output="";for(let i=0;i<input.length;i++){let ch=input[i];if(ch==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){let normalizedHex=hex.toUpperCase(),decoded=String.fromCharCode(parseInt(normalizedHex,16));isUnreserved(decoded)?output+=decoded:output+="%"+normalizedHex,i+=2;continue}}if(isQueryFragmentCharacter(ch))output+=ch;else{let code2=input.charCodeAt(i);if(code2<128)output+=isEscapeSafe(code2)?ch:BYTE_HEX[code2];else if(code2<55296||code2>57343)output+=percentEncodeNonAscii(code2);else if(code2<=56319&&i+1<input.length){let low=input.charCodeAt(i+1);low>=56320&&low<=57343?(output+=percentEncodeNonAscii(65536+(code2-55296<<10)+(low-56320)),i++):output+=percentEncodeNonAscii(65533)}else output+=percentEncodeNonAscii(65533)}}return output}function escapePreservingEscapes(input){let output="";for(let i=0;i<input.length;i++){if(input[i]==="%"&&i+2<input.length){let hex=input.slice(i+1,i+3);if(isHexPair(hex)){output+="%"+hex.toUpperCase(),i+=2;continue}}output+=escape(input[i])}return output}function recomposeAuthority(component){let uriTokens=[];if(component.userinfo!==void 0&&(uriTokens.push(encodeUserinfo(component.userinfo)),uriTokens.push("@")),component.host!==void 0){let host=component.host;if(!isIPv4(host)){let ipV6res=normalizeIPv6(host);ipV6res.isIPV6!==!0&&ipV6res.isIPVFuture!==!0&&(host=normalizePercentEncoding(host,!0),ipV6res=normalizeIPv6(host)),ipV6res.isIPV6===!0||ipV6res.isIPVFuture===!0?host=`[${ipV6res.escapedHost}]`:host=reescapeHostDelimiters(host,!1)}uriTokens.push(host)}if(typeof component.port=="number"||typeof component.port=="string"){let port=String(component.port);if(!isPort(port))throw new TypeError("URI port is malformed.");uriTokens.push(":"),uriTokens.push(port)}return uriTokens.length?uriTokens.join(""):void 0}module.exports={nonSimpleDomain,recomposeAuthority,reescapeHostDelimiters,normalizePercentEncoding,normalizePathEncoding,serializePathEncoding,normalizeQueryFragmentEncoding,encodeUserinfo,encodeQuery,encodeFragment,escapePreservingEscapes,removeDotSegments,isIPv4,isUUID,normalizeIPv6,stringArrayToHexStripped}})),require_schemes2=__commonJSMin2(((exports,module)=>{let{isUUID}=require_utils2(),URN_REG=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,supportedSchemeNames=["http","https","ws","wss","urn","urn:uuid"];function isValidSchemeName(name2){return supportedSchemeNames.indexOf(name2)!==-1}function wsIsSecure(wsComponent){return wsComponent.secure===!0?!0:wsComponent.secure===!1?!1:wsComponent.scheme?wsComponent.scheme.length===3&&(wsComponent.scheme[0]==="w"||wsComponent.scheme[0]==="W")&&(wsComponent.scheme[1]==="s"||wsComponent.scheme[1]==="S")&&(wsComponent.scheme[2]==="s"||wsComponent.scheme[2]==="S"):!1}function httpParse(component){return component.host||(component.error=component.error||"HTTP URIs must have a host."),component}function httpSerialize(component){let secure=String(component.scheme).toLowerCase()==="https";return(component.port===(secure?443:80)||component.port==="")&&(component.port=void 0),component.path||(component.path="/"),component}function wsParse(wsComponent){return wsComponent.secure=wsIsSecure(wsComponent),wsComponent.resourceName=(wsComponent.path||"/")+(wsComponent.query?"?"+wsComponent.query:""),wsComponent.path=void 0,wsComponent.query=void 0,wsComponent}function wsSerialize(wsComponent){if((wsComponent.port===(wsIsSecure(wsComponent)?443:80)||wsComponent.port==="")&&(wsComponent.port=void 0),typeof wsComponent.secure=="boolean"&&(wsComponent.scheme=wsComponent.secure?"wss":"ws",wsComponent.secure=void 0),wsComponent.resourceName){let queryIndex=wsComponent.resourceName.indexOf("?"),path=queryIndex===-1?wsComponent.resourceName:wsComponent.resourceName.slice(0,queryIndex);wsComponent.path=path&&path!=="/"?path:void 0,wsComponent.query=queryIndex===-1?void 0:wsComponent.resourceName.slice(queryIndex+1),wsComponent.resourceName=void 0}return wsComponent.fragment=void 0,wsComponent}function urnParse(urnComponent,options){if(!urnComponent.path)return urnComponent.error="URN can not be parsed",urnComponent;let matches=urnComponent.path.match(URN_REG);if(matches&&matches[0]===urnComponent.path){let scheme=options.scheme||urnComponent.scheme||"urn";urnComponent.nid=matches[1].toLowerCase(),urnComponent.nss=matches[2];let schemeHandler=getSchemeHandler(`${scheme}:${options.nid||urnComponent.nid}`);urnComponent.path=void 0,schemeHandler&&(urnComponent=schemeHandler.parse(urnComponent,options))}else urnComponent.error=urnComponent.error||"URN can not be parsed.";return urnComponent}function urnSerialize(urnComponent,options){if(urnComponent.nid===void 0)throw new Error("URN without nid cannot be serialized");let scheme=options.scheme||urnComponent.scheme||"urn",nid=urnComponent.nid.toLowerCase(),schemeHandler=getSchemeHandler(`${scheme}:${options.nid||nid}`);schemeHandler&&(urnComponent=schemeHandler.serialize(urnComponent,options));let uriComponent=urnComponent,nss=urnComponent.nss;return uriComponent.path=`${nid||options.nid}:${nss}`,options.skipEscape=!0,uriComponent}function urnuuidParse(urnComponent,options){let uuidComponent=urnComponent;return uuidComponent.uuid=uuidComponent.nss,uuidComponent.nss=void 0,!options.tolerant&&(!uuidComponent.uuid||!isUUID(uuidComponent.uuid))&&(uuidComponent.error=uuidComponent.error||"UUID is not valid."),uuidComponent}function urnuuidSerialize(uuidComponent){let urnComponent=uuidComponent;return urnComponent.nss=(uuidComponent.uuid||"").toLowerCase(),urnComponent}let http={scheme:"http",domainHost:!0,parse:httpParse,serialize:httpSerialize},https={scheme:"https",domainHost:http.domainHost,parse:httpParse,serialize:httpSerialize},ws={scheme:"ws",domainHost:!0,parse:wsParse,serialize:wsSerialize},wss={scheme:"wss",domainHost:ws.domainHost,parse:ws.parse,serialize:ws.serialize},SCHEMES={http,https,ws,wss,urn:{scheme:"urn",parse:urnParse,serialize:urnSerialize,skipNormalize:!0},"urn:uuid":{scheme:"urn:uuid",parse:urnuuidParse,serialize:urnuuidSerialize,skipNormalize:!0}};Object.setPrototypeOf(SCHEMES,null);function getSchemeHandler(scheme){return scheme&&(SCHEMES[scheme]||SCHEMES[scheme.toLowerCase()])||void 0}module.exports={wsIsSecure,SCHEMES,isValidSchemeName,getSchemeHandler}})),require_fast_uri2=__commonJSMin2(((exports,module)=>{let{normalizeIPv6,removeDotSegments,recomposeAuthority,normalizePercentEncoding,normalizePathEncoding,serializePathEncoding,normalizeQueryFragmentEncoding,encodeQuery,encodeFragment,reescapeHostDelimiters,isIPv4,nonSimpleDomain}=require_utils2(),{SCHEMES,getSchemeHandler}=require_schemes2(),VALID_SCHEME=/^[A-Za-z][A-Za-z0-9+.-]*$/u,MALFORMED_SCHEME_ERROR="URI scheme is malformed.";function decodeValidScheme(scheme){let decodedScheme=unescape(String(scheme));if(!VALID_SCHEME.test(decodedScheme))throw new TypeError(MALFORMED_SCHEME_ERROR);return decodedScheme}function normalize(uri,options){return typeof uri=="string"?uri=normalizeString(uri,options):typeof uri=="object"&&(uri=parse2(serialize(uri,options),options)),uri}function resolve(baseURI,relativeURI,options){let schemelessOptions=options?Object.assign({scheme:"null"},options):{scheme:"null"},{parsed:baseParsed,malformedAuthorityOrPort:baseMalformed,malformedPercentEncoding:baseMalformedPercentEncoding,malformedSchemeSpecific:baseMalformedSchemeSpecific,malformedHost:baseMalformedHost,malformedScheme:baseMalformedScheme}=parseWithStatus(baseURI,schemelessOptions),{parsed:relativeParsed,malformedAuthorityOrPort:relativeMalformed,malformedPercentEncoding:relativeMalformedPercentEncoding,malformedSchemeSpecific:relativeMalformedSchemeSpecific,malformedHost:relativeMalformedHost,malformedScheme:relativeMalformedScheme}=parseWithStatus(relativeURI,schemelessOptions);if(baseMalformed||relativeMalformed||baseMalformedPercentEncoding||relativeMalformedPercentEncoding||baseMalformedSchemeSpecific||relativeMalformedSchemeSpecific||baseMalformedHost||relativeMalformedHost||baseMalformedScheme||relativeMalformedScheme)throw new Error(baseParsed.error||relativeParsed.error||"URI is malformed.");let resolved=resolveComponent(baseParsed,relativeParsed,schemelessOptions,!0),resolvedSchemeHandler=getSchemeHandler(options&&options.scheme||resolved.scheme),resolvedHost=resolved.host,resolvedHostIsIP=resolvedHost!==void 0&&resolvedHost!==""&&(isIPv4(resolvedHost)||normalizeIPv6(resolvedHost).isIPV6);canonicalizeHost(resolved,options||{},resolvedSchemeHandler,resolvedHostIsIP);let encodedASCIIHost=resolvedHost&&resolvedHost.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(resolvedHost);if(resolved.error&&!encodedASCIIHost)throw new Error(resolved.error);return schemelessOptions.skipEscape=!0,serialize(resolved,schemelessOptions)}function resolveComponent(base,relative,options,skipNormalization){let target={};return skipNormalization||(base=parse2(serialize(base,options),options),relative=parse2(serialize(relative,options),options)),options=options||{},!options.tolerant&&relative.scheme?(target.scheme=relative.scheme,target.userinfo=relative.userinfo,target.host=relative.host,target.port=relative.port,target.path=removeDotSegments(relative.path||""),target.query=relative.query):(relative.userinfo!==void 0||relative.host!==void 0||relative.port!==void 0?(target.userinfo=relative.userinfo,target.host=relative.host,target.port=relative.port,target.path=removeDotSegments(relative.path||""),target.query=relative.query):(relative.path?(relative.path[0]==="/"?target.path=removeDotSegments(relative.path):((base.userinfo!==void 0||base.host!==void 0||base.port!==void 0)&&!base.path?target.path="/"+relative.path:base.path?target.path=base.path.slice(0,base.path.lastIndexOf("/")+1)+relative.path:target.path=relative.path,target.path=removeDotSegments(target.path)),target.query=relative.query):(target.path=base.path,relative.query!==void 0?target.query=relative.query:target.query=base.query),target.userinfo=base.userinfo,target.host=base.host,target.port=base.port),target.scheme=base.scheme),target.fragment=relative.fragment,target}function equal(uriA,uriB,options){let normalizedA=normalizeComparableURI(uriA,options),normalizedB=normalizeComparableURI(uriB,options);return normalizedA!==void 0&&normalizedB!==void 0&&normalizedA===normalizedB}function serialize(cmpts,opts){let component={host:cmpts.host,scheme:cmpts.scheme,userinfo:cmpts.userinfo,port:cmpts.port,path:cmpts.path,query:cmpts.query,nid:cmpts.nid,nss:cmpts.nss,uuid:cmpts.uuid,fragment:cmpts.fragment,reference:cmpts.reference,resourceName:cmpts.resourceName,secure:cmpts.secure,error:""},options=Object.assign({},opts),uriTokens=[];component.scheme&&(component.scheme=decodeValidScheme(component.scheme));let schemeHandler=getSchemeHandler(options.scheme||component.scheme);schemeHandler&&schemeHandler.serialize&&schemeHandler.serialize(component,options);let hasAuthority=component.userinfo!==void 0||component.host!==void 0||component.port!==void 0,pathNoScheme=!options.skipEscape&&component.scheme===void 0&&!hasAuthority;component.path!==void 0&&(options.skipEscape?component.path=normalizePercentEncoding(component.path):component.path=serializePathEncoding(component.path,pathNoScheme)),options.reference!=="suffix"&&component.scheme&&(component.scheme=decodeValidScheme(component.scheme),uriTokens.push(component.scheme,":"));let authority=recomposeAuthority(component);if(authority!==void 0&&(options.reference!=="suffix"&&uriTokens.push("//"),uriTokens.push(authority),component.path&&component.path[0]!=="/"&&uriTokens.push("/")),component.path!==void 0){let s=component.path;!options.absolutePath&&(!schemeHandler||!schemeHandler.absolutePath)&&(s=removeDotSegments(s)),pathNoScheme&&(s=serializePathEncoding(s,!0)),authority===void 0&&s[0]==="/"&&s[1]==="/"&&(s="/%2F"+s.slice(2)),uriTokens.push(s)}return component.query!==void 0&&uriTokens.push("?",encodeQuery(component.query)),component.fragment!==void 0&&uriTokens.push("#",encodeFragment(component.fragment)),uriTokens.join("")}let URI_PARSE=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,AUTHORITY_PREFIX=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,AUTHORITY_INTRODUCER_REGION=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function getParseError(parsed,matches){if(matches[2]!==void 0&&parsed.path&&parsed.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof parsed.port=="number"&&(parsed.port<0||parsed.port>65535))return"URI port is malformed."}function hasMalformedPercentEncoding(component){if(component===void 0)return!1;let percent=component.indexOf("%");for(;percent!==-1;){if(percent+2>=component.length||!/^[\da-f]{2}$/iu.test(component.slice(percent+1,percent+3)))return!0;percent=component.indexOf("%",percent+3)}return!1}function isIPLiteral(host){return host[0]==="["&&host[host.length-1]==="]"}function hasMalformedComponentPercentEncoding(matches){let host=matches[4];return hasMalformedPercentEncoding(matches[3])||host!==void 0&&!isIPLiteral(host)&&hasMalformedPercentEncoding(host)||hasMalformedPercentEncoding(matches[6])||hasMalformedPercentEncoding(matches[7])||hasMalformedPercentEncoding(matches[8])}function canonicalizeHost(parsed,options,schemeHandler,isIP){if(!options.unicodeSupport&&(!schemeHandler||!schemeHandler.unicodeSupport)&&parsed.host&&!isIPLiteral(parsed.host)&&(options.domainHost||schemeHandler&&schemeHandler.domainHost)&&isIP===!1&&nonSimpleDomain(parsed.host))try{parsed.host=new URL("http://"+parsed.host).hostname}catch(e){return parsed.error=parsed.error||"Host's domain name can not be converted to ASCII: "+e,!0}return!1}function parseWithStatus(uri,opts){let options=Object.assign({},opts),parsed={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},malformedAuthorityOrPort=!1,malformedPercentEncoding=!1,malformedSchemeSpecific=!1,malformedHost=!1,malformedIPLiteral=!1,malformedScheme=!1,isIP=!1;options.reference==="suffix"&&(options.scheme?uri=options.scheme+":"+uri:uri="//"+uri);let authorityMatch=uri.match(AUTHORITY_PREFIX);authorityMatch!==null&&authorityMatch[1].indexOf("\\")!==-1&&(parsed.error="URI authority must not contain a literal backslash.",malformedAuthorityOrPort=!0);let introducerMatch=uri.match(AUTHORITY_INTRODUCER_REGION);if(introducerMatch!==null){let region=introducerMatch[1],normalizedRegion=region.replace(/[\t\n\r]/g,"");normalizedRegion.length>=2&&(normalizedRegion.slice(0,2)!=="//"?(parsed.error=parsed.error||"URI authority must not contain a literal backslash.",malformedAuthorityOrPort=!0):region.length!==normalizedRegion.length&&(parsed.error=parsed.error||"URI authority introducer must not contain whitespace.",malformedAuthorityOrPort=!0))}let matches=uri.match(URI_PARSE);if(matches){if(parsed.scheme=matches[1],parsed.userinfo=matches[3],parsed.host=matches[4],parsed.port=parseInt(matches[5],10),parsed.path=matches[6]||"",parsed.query=matches[7],parsed.fragment=matches[8],parsed.scheme!==void 0){let decodedScheme=unescape(parsed.scheme);VALID_SCHEME.test(decodedScheme)?parsed.scheme=decodedScheme.toLowerCase():(parsed.error=parsed.error||MALFORMED_SCHEME_ERROR,malformedScheme=!0)}malformedPercentEncoding=hasMalformedComponentPercentEncoding(matches),malformedPercentEncoding&&(parsed.error=parsed.error||"URI contains malformed percent-encoding."),isNaN(parsed.port)&&(parsed.port=matches[5]);let parseError=getParseError(parsed,matches);if(parseError!==void 0&&(parsed.error=parsed.error||parseError,malformedAuthorityOrPort=!0),parsed.host)if(isIPv4(parsed.host)===!1){let bracketedIPLiteral=isIPLiteral(parsed.host),hasIPLiteralBracket=parsed.host.indexOf("[")!==-1||parsed.host.indexOf("]")!==-1,ipv6result=normalizeIPv6(parsed.host);isIP=ipv6result.isIPV6||ipv6result.isIPVFuture===!0,malformedIPLiteral=hasIPLiteralBracket&&(!bracketedIPLiteral||ipv6result.error===!0),parsed.host=isIP?ipv6result.host:ipv6result.host.toLowerCase(),malformedIPLiteral&&(parsed.error=parsed.error||"URI host is malformed.",malformedAuthorityOrPort=!0)}else isIP=!0;parsed.scheme===void 0&&parsed.userinfo===void 0&&parsed.host===void 0&&parsed.port===void 0&&parsed.query===void 0&&!parsed.path?parsed.reference="same-document":parsed.scheme===void 0?parsed.reference="relative":parsed.fragment===void 0?parsed.reference="absolute":parsed.reference="uri",options.reference&&options.reference!=="suffix"&&options.reference!==parsed.reference&&(parsed.error=parsed.error||"URI is not a "+options.reference+" reference.");let schemeHandler=getSchemeHandler(options.scheme||parsed.scheme);if(malformedIPLiteral||(malformedHost=canonicalizeHost(parsed,options,schemeHandler,isIP)),uri.indexOf("%")!==-1&&parsed.host!==void 0&&!malformedIPLiteral){let host=isIP?parsed.host:normalizePercentEncoding(parsed.host,!0);isIP||(host=normalizePercentEncoding(host.toLowerCase())),parsed.host=reescapeHostDelimiters(host,isIP)}(!schemeHandler||schemeHandler&&!schemeHandler.skipNormalize)&&(parsed.path&&(parsed.path=normalizePathEncoding(parsed.path)),parsed.query&&(parsed.query=normalizeQueryFragmentEncoding(parsed.query)),parsed.fragment&&(parsed.fragment=normalizeQueryFragmentEncoding(parsed.fragment))),schemeHandler&&schemeHandler.parse&&(schemeHandler.parse(parsed,options),schemeHandler===SCHEMES.urn&&parsed.nid===void 0&&(malformedSchemeSpecific=!0))}else parsed.error=parsed.error||"URI can not be parsed.";return{parsed,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}}function parse2(uri,opts){return parseWithStatus(uri,opts).parsed}function normalizeString(uri,opts){return normalizeStringWithStatus(uri,opts).normalized}function normalizeStringWithStatus(uri,opts){let{parsed,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}=parseWithStatus(uri,opts);return{normalized:malformedAuthorityOrPort||malformedPercentEncoding||malformedSchemeSpecific||malformedHost||malformedScheme?uri:serialize(parsed,opts),malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}}function normalizeComparableURI(uri,opts){if(typeof uri!="string"&&typeof uri!="object")return;let value;try{value=typeof uri=="string"?uri:serialize(uri,opts)}catch{return}let{normalized,malformedAuthorityOrPort,malformedPercentEncoding,malformedSchemeSpecific,malformedHost,malformedScheme}=normalizeStringWithStatus(value,opts);return malformedAuthorityOrPort||malformedPercentEncoding||malformedSchemeSpecific||malformedHost||malformedScheme?void 0:normalized}let fastUri={SCHEMES,normalize,resolve,resolveComponent,equal,serialize,parse:parse2};module.exports=fastUri,module.exports.default=fastUri,module.exports.fastUri=fastUri})),require_uri2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let uri=require_fast_uri2();uri.code='require("ajv/dist/runtime/uri").default',exports.default=uri})),require_core$32=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=void 0;var validate_1=require_validate2();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen2();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});let validation_error_1=require_validation_error2(),ref_error_1=require_ref_error2(),rules_1=require_rules2(),compile_1=require_compile2(),codegen_2=require_codegen2(),resolve_1=require_resolve2(),dataType_1=require_dataType2(),util_1=require_util2(),$dataRefSchema=require_data2(),uri_1=require_uri2(),defaultRegExp=(str2,flags)=>new RegExp(str2,flags);defaultRegExp.code="new RegExp";let META_IGNORE_OPTIONS=["removeAdditional","useDefaults","coerceTypes"],EXT_SCOPE_NAMES=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),removedOptions={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},deprecatedOptions={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},MAX_EXPRESSION=200;function requiredOptions(o){var _a3,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l,_m,_o,_p,_q,_r,_s,_t,_u,_v,_w,_x,_y,_z,_0;let s=o.strict,_optz=(_a3=o.code)===null||_a3===void 0?void 0:_a3.optimize,optimize=_optz===!0||_optz===void 0?1:_optz||0,regExp=(_c=(_b=o.code)===null||_b===void 0?void 0:_b.regExp)!==null&&_c!==void 0?_c:defaultRegExp,uriResolver=(_d=o.uriResolver)!==null&&_d!==void 0?_d:uri_1.default;return{strictSchema:(_f=(_e=o.strictSchema)!==null&&_e!==void 0?_e:s)!==null&&_f!==void 0?_f:!0,strictNumbers:(_h=(_g=o.strictNumbers)!==null&&_g!==void 0?_g:s)!==null&&_h!==void 0?_h:!0,strictTypes:(_k=(_j=o.strictTypes)!==null&&_j!==void 0?_j:s)!==null&&_k!==void 0?_k:"log",strictTuples:(_m=(_l=o.strictTuples)!==null&&_l!==void 0?_l:s)!==null&&_m!==void 0?_m:"log",strictRequired:(_p=(_o=o.strictRequired)!==null&&_o!==void 0?_o:s)!==null&&_p!==void 0?_p:!1,code:o.code?{...o.code,optimize,regExp}:{optimize,regExp},loopRequired:(_q=o.loopRequired)!==null&&_q!==void 0?_q:MAX_EXPRESSION,loopEnum:(_r=o.loopEnum)!==null&&_r!==void 0?_r:MAX_EXPRESSION,meta:(_s=o.meta)!==null&&_s!==void 0?_s:!0,messages:(_t=o.messages)!==null&&_t!==void 0?_t:!0,inlineRefs:(_u=o.inlineRefs)!==null&&_u!==void 0?_u:!0,schemaId:(_v=o.schemaId)!==null&&_v!==void 0?_v:"$id",addUsedSchema:(_w=o.addUsedSchema)!==null&&_w!==void 0?_w:!0,validateSchema:(_x=o.validateSchema)!==null&&_x!==void 0?_x:!0,validateFormats:(_y=o.validateFormats)!==null&&_y!==void 0?_y:!0,unicodeRegExp:(_z=o.unicodeRegExp)!==null&&_z!==void 0?_z:!0,int32range:(_0=o.int32range)!==null&&_0!==void 0?_0:!0,uriResolver}}var Ajv3=class{constructor(opts={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,opts=this.opts={...opts,...requiredOptions(opts)};let{es5,lines:lines2}=this.opts.code;this.scope=new codegen_2.ValueScope({scope:{},prefixes:EXT_SCOPE_NAMES,es5,lines:lines2}),this.logger=getLogger(opts.logger);let formatOpt=opts.validateFormats;opts.validateFormats=!1,this.RULES=(0,rules_1.getRules)(),checkOptions.call(this,removedOptions,opts,"NOT SUPPORTED"),checkOptions.call(this,deprecatedOptions,opts,"DEPRECATED","warn"),this._metaOpts=getMetaSchemaOptions.call(this),opts.formats&&addInitialFormats.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),opts.keywords&&addInitialKeywords.call(this,opts.keywords),typeof opts.meta=="object"&&this.addMetaSchema(opts.meta),addInitialSchemas.call(this),opts.validateFormats=formatOpt}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data,meta:meta2,schemaId}=this.opts,_dataRefSchema=$dataRefSchema;schemaId==="id"&&(_dataRefSchema={...$dataRefSchema},_dataRefSchema.id=_dataRefSchema.$id,delete _dataRefSchema.$id),meta2&&$data&&this.addMetaSchema(_dataRefSchema,_dataRefSchema[schemaId],!1)}defaultMeta(){let{meta:meta2,schemaId}=this.opts;return this.opts.defaultMeta=typeof meta2=="object"?meta2[schemaId]||meta2:void 0}validate(schemaKeyRef,data){let v;if(typeof schemaKeyRef=="string"){if(v=this.getSchema(schemaKeyRef),!v)throw new Error(`no schema with key or ref "${schemaKeyRef}"`)}else v=this.compile(schemaKeyRef);let valid=v(data);return"$async"in v||(this.errors=v.errors),valid}compile(schema,_meta){let sch=this._addSchema(schema,_meta);return sch.validate||this._compileSchemaEnv(sch)}compileAsync(schema,meta2){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema}=this.opts;return runCompileAsync.call(this,schema,meta2);async function runCompileAsync(_schema,_meta){await loadMetaSchema.call(this,_schema.$schema);let sch=this._addSchema(_schema,_meta);return sch.validate||_compileAsync.call(this,sch)}async function loadMetaSchema($ref){$ref&&!this.getSchema($ref)&&await runCompileAsync.call(this,{$ref},!0)}async function _compileAsync(sch){try{return this._compileSchemaEnv(sch)}catch(e){if(!(e instanceof ref_error_1.default))throw e;return checkLoaded.call(this,e),await loadMissingSchema.call(this,e.missingSchema),_compileAsync.call(this,sch)}}function checkLoaded({missingSchema:ref,missingRef}){if(this.refs[ref])throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)}async function loadMissingSchema(ref){let _schema=await _loadSchema.call(this,ref);this.refs[ref]||await loadMetaSchema.call(this,_schema.$schema),this.refs[ref]||this.addSchema(_schema,ref,meta2)}async function _loadSchema(ref){let p=this._loading[ref];if(p)return p;try{return await(this._loading[ref]=loadSchema(ref))}finally{delete this._loading[ref]}}}addSchema(schema,key,_meta,_validateSchema=this.opts.validateSchema){if(Array.isArray(schema)){for(let sch of schema)this.addSchema(sch,void 0,_meta,_validateSchema);return this}let id;if(typeof schema=="object"){let{schemaId}=this.opts;if(id=schema[schemaId],id!==void 0&&typeof id!="string")throw new Error(`schema ${schemaId} must be string`)}return key=(0,resolve_1.normalizeId)(key||id),this._checkUnique(key),this.schemas[key]=this._addSchema(schema,_meta,key,_validateSchema,!0),this}addMetaSchema(schema,key,_validateSchema=this.opts.validateSchema){return this.addSchema(schema,key,!0,_validateSchema),this}validateSchema(schema,throwOrLogError){if(typeof schema=="boolean")return!0;let $schema;if($schema=schema.$schema,$schema!==void 0&&typeof $schema!="string")throw new Error("$schema must be a string");if($schema=$schema||this.opts.defaultMeta||this.defaultMeta(),!$schema)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let valid=this.validate($schema,schema);if(!valid&&throwOrLogError){let message="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(message);else throw new Error(message)}return valid}getSchema(keyRef){let sch;for(;typeof(sch=getSchEnv.call(this,keyRef))=="string";)keyRef=sch;if(sch===void 0){let{schemaId}=this.opts,root=new compile_1.SchemaEnv({schema:{},schemaId});if(sch=compile_1.resolveSchema.call(this,root,keyRef),!sch)return;this.refs[keyRef]=sch}return sch.validate||this._compileSchemaEnv(sch)}removeSchema(schemaKeyRef){if(schemaKeyRef instanceof RegExp)return this._removeAllSchemas(this.schemas,schemaKeyRef),this._removeAllSchemas(this.refs,schemaKeyRef),this;switch(typeof schemaKeyRef){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let sch=getSchEnv.call(this,schemaKeyRef);return typeof sch=="object"&&this._cache.delete(sch.schema),delete this.schemas[schemaKeyRef],delete this.refs[schemaKeyRef],this}case"object":{let cacheKey=schemaKeyRef;this._cache.delete(cacheKey);let id=schemaKeyRef[this.opts.schemaId];return id&&(id=(0,resolve_1.normalizeId)(id),delete this.schemas[id],delete this.refs[id]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(definitions){for(let def of definitions)this.addKeyword(def);return this}addKeyword(kwdOrDef,def){let keyword;if(typeof kwdOrDef=="string")keyword=kwdOrDef,typeof def=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),def.keyword=keyword);else if(typeof kwdOrDef=="object"&&def===void 0){if(def=kwdOrDef,keyword=def.keyword,Array.isArray(keyword)&&!keyword.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(checkKeyword.call(this,keyword,def),!def)return(0,util_1.eachItem)(keyword,kwd=>addRule.call(this,kwd)),this;keywordMetaschema.call(this,def);let definition={...def,type:(0,dataType_1.getJSONTypes)(def.type),schemaType:(0,dataType_1.getJSONTypes)(def.schemaType)};return(0,util_1.eachItem)(keyword,definition.type.length===0?k=>addRule.call(this,k,definition):k=>definition.type.forEach(t=>addRule.call(this,k,definition,t))),this}getKeyword(keyword){let rule2=this.RULES.all[keyword];return typeof rule2=="object"?rule2.definition:!!rule2}removeKeyword(keyword){let{RULES:RULES2}=this;delete RULES2.keywords[keyword],delete RULES2.all[keyword];for(let group of RULES2.rules){let i=group.rules.findIndex(rule2=>rule2.keyword===keyword);i>=0&&group.rules.splice(i,1)}return this}addFormat(name2,format){return typeof format=="string"&&(format=new RegExp(format)),this.formats[name2]=format,this}errorsText(errors=this.errors,{separator=", ",dataVar="data"}={}){return!errors||errors.length===0?"No errors":errors.map(e=>`${dataVar}${e.instancePath} ${e.message}`).reduce((text2,msg)=>text2+separator+msg)}$dataMetaSchema(metaSchema,keywordsJsonPointers){let rules=this.RULES.all;metaSchema=JSON.parse(JSON.stringify(metaSchema));for(let jsonPointer of keywordsJsonPointers){let segments=jsonPointer.split("/").slice(1),keywords=metaSchema;for(let seg of segments)keywords=keywords[seg];for(let key in rules){let rule2=rules[key];if(typeof rule2!="object")continue;let{$data}=rule2.definition,schema=keywords[key];$data&&schema&&(keywords[key]=schemaOrData(schema))}}return metaSchema}_removeAllSchemas(schemas,regex){for(let keyRef in schemas){let sch=schemas[keyRef];(!regex||regex.test(keyRef))&&(typeof sch=="string"?delete schemas[keyRef]:sch&&!sch.meta&&(this._cache.delete(sch.schema),delete schemas[keyRef]))}}_addSchema(schema,meta2,baseId,validateSchema=this.opts.validateSchema,addSchema=this.opts.addUsedSchema){let id,{schemaId}=this.opts;if(typeof schema=="object")id=schema[schemaId];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof schema!="boolean")throw new Error("schema must be object or boolean")}let sch=this._cache.get(schema);if(sch!==void 0)return sch;baseId=(0,resolve_1.normalizeId)(id||baseId);let localRefs=resolve_1.getSchemaRefs.call(this,schema,baseId);return sch=new compile_1.SchemaEnv({schema,schemaId,meta:meta2,baseId,localRefs}),this._cache.set(sch.schema,sch),addSchema&&!baseId.startsWith("#")&&(baseId&&this._checkUnique(baseId),this.refs[baseId]=sch),validateSchema&&this.validateSchema(schema,!0),sch}_checkUnique(id){if(this.schemas[id]||this.refs[id])throw new Error(`schema with key or id "${id}" already exists`)}_compileSchemaEnv(sch){if(sch.meta?this._compileMetaSchema(sch):compile_1.compileSchema.call(this,sch),!sch.validate)throw new Error("ajv implementation error");return sch.validate}_compileMetaSchema(sch){let currentOpts=this.opts;this.opts=this._metaOpts;try{compile_1.compileSchema.call(this,sch)}finally{this.opts=currentOpts}}};Ajv3.ValidationError=validation_error_1.default,Ajv3.MissingRefError=ref_error_1.default,exports.default=Ajv3;function checkOptions(checkOpts,options,msg,log="error"){for(let key in checkOpts){let opt2=key;opt2 in options&&this.logger[log](`${msg}: option ${key}. ${checkOpts[opt2]}`)}}function getSchEnv(keyRef){return keyRef=(0,resolve_1.normalizeId)(keyRef),this.schemas[keyRef]||this.refs[keyRef]}function addInitialSchemas(){let optsSchemas=this.opts.schemas;if(optsSchemas)if(Array.isArray(optsSchemas))this.addSchema(optsSchemas);else for(let key in optsSchemas)this.addSchema(optsSchemas[key],key)}function addInitialFormats(){for(let name2 in this.opts.formats){let format=this.opts.formats[name2];format&&this.addFormat(name2,format)}}function addInitialKeywords(defs){if(Array.isArray(defs)){this.addVocabulary(defs);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let keyword in defs){let def=defs[keyword];def.keyword||(def.keyword=keyword),this.addKeyword(def)}}function getMetaSchemaOptions(){let metaOpts={...this.opts};for(let opt2 of META_IGNORE_OPTIONS)delete metaOpts[opt2];return metaOpts}let noLogs={log(){},warn(){},error(){}};function getLogger(logger){if(logger===!1)return noLogs;if(logger===void 0)return console;if(logger.log&&logger.warn&&logger.error)return logger;throw new Error("logger must implement log, warn and error methods")}let KEYWORD_NAME=/^[a-z_$][a-z0-9_$:-]*$/i;function checkKeyword(keyword,def){let{RULES:RULES2}=this;if((0,util_1.eachItem)(keyword,kwd=>{if(RULES2.keywords[kwd])throw new Error(`Keyword ${kwd} is already defined`);if(!KEYWORD_NAME.test(kwd))throw new Error(`Keyword ${kwd} has invalid name`)}),!!def&&def.$data&&!("code"in def||"validate"in def))throw new Error('$data keyword must have "code" or "validate" function')}function addRule(keyword,definition,dataType){var _a3;let post=definition?.post;if(dataType&&post)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:RULES2}=this,ruleGroup=post?RULES2.post:RULES2.rules.find(({type:t})=>t===dataType);if(ruleGroup||(ruleGroup={type:dataType,rules:[]},RULES2.rules.push(ruleGroup)),RULES2.keywords[keyword]=!0,!definition)return;let rule2={keyword,definition:{...definition,type:(0,dataType_1.getJSONTypes)(definition.type),schemaType:(0,dataType_1.getJSONTypes)(definition.schemaType)}};definition.before?addBeforeRule.call(this,ruleGroup,rule2,definition.before):ruleGroup.rules.push(rule2),RULES2.all[keyword]=rule2,(_a3=definition.implements)===null||_a3===void 0||_a3.forEach(kwd=>this.addKeyword(kwd))}function addBeforeRule(ruleGroup,rule2,before){let i=ruleGroup.rules.findIndex(_rule=>_rule.keyword===before);i>=0?ruleGroup.rules.splice(i,0,rule2):(ruleGroup.rules.push(rule2),this.logger.warn(`rule ${before} is not defined`))}function keywordMetaschema(def){let{metaSchema}=def;metaSchema!==void 0&&(def.$data&&this.opts.$data&&(metaSchema=schemaOrData(metaSchema)),def.validateSchema=this.compile(metaSchema,!0))}let $dataRef={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function schemaOrData(schema){return{anyOf:[schema,$dataRef]}}})),require_id2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let def={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};exports.default=def})),require_ref2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.callRef=exports.getValidate=void 0;let ref_error_1=require_ref_error2(),code_1=require_code2(),codegen_1=require_codegen2(),names_1=require_names2(),compile_1=require_compile2(),util_1=require_util2(),def={keyword:"$ref",schemaType:"string",code(cxt){let{gen,schema:$ref,it}=cxt,{baseId,schemaEnv:env,validateName,opts,self}=it,{root}=env;if(($ref==="#"||$ref==="#/")&&baseId===root.baseId)return callRootRef();let schOrEnv=compile_1.resolveRef.call(self,root,baseId,$ref);if(schOrEnv===void 0)throw new ref_error_1.default(it.opts.uriResolver,baseId,$ref);if(schOrEnv instanceof compile_1.SchemaEnv)return callValidate(schOrEnv);return inlineRefSchema(schOrEnv);function callRootRef(){if(env===root)return callRef(cxt,validateName,env,env.$async);let rootName=gen.scopeValue("root",{ref:root});return callRef(cxt,(0,codegen_1._)`${rootName}.validate`,root,root.$async)}function callValidate(sch){callRef(cxt,getValidate(cxt,sch),sch,sch.$async)}function inlineRefSchema(sch){let schName=gen.scopeValue("schema",opts.code.source===!0?{ref:sch,code:(0,codegen_1.stringify)(sch)}:{ref:sch}),valid=gen.name("valid"),schCxt=cxt.subschema({schema:sch,dataTypes:[],schemaPath:codegen_1.nil,topSchemaRef:schName,errSchemaPath:$ref},valid);cxt.mergeEvaluated(schCxt),cxt.ok(valid)}}};function getValidate(cxt,sch){let{gen}=cxt;return sch.validate?gen.scopeValue("validate",{ref:sch.validate}):(0,codegen_1._)`${gen.scopeValue("wrapper",{ref:sch})}.validate`}exports.getValidate=getValidate;function callRef(cxt,v,sch,$async){let{gen,it}=cxt,{allErrors,schemaEnv:env,opts}=it,passCxt=opts.passContext?names_1.default.this:codegen_1.nil;$async?callAsyncRef():callSyncRef();function callAsyncRef(){if(!env.$async)throw new Error("async schema referenced by sync schema");let valid=gen.let("valid");gen.try(()=>{gen.code((0,codegen_1._)`await ${(0,code_1.callValidateCode)(cxt,v,passCxt)}`),addEvaluatedFrom(v),allErrors||gen.assign(valid,!0)},e=>{gen.if((0,codegen_1._)`!(${e} instanceof ${it.ValidationError})`,()=>gen.throw(e)),addErrorsFrom(e),allErrors||gen.assign(valid,!1)}),cxt.ok(valid)}function callSyncRef(){cxt.result((0,code_1.callValidateCode)(cxt,v,passCxt),()=>addEvaluatedFrom(v),()=>addErrorsFrom(v))}function addErrorsFrom(source){let errs=(0,codegen_1._)`${source}.errors`;gen.assign(names_1.default.vErrors,(0,codegen_1._)`${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`),gen.assign(names_1.default.errors,(0,codegen_1._)`${names_1.default.vErrors}.length`)}function addEvaluatedFrom(source){var _a3;if(!it.opts.unevaluated)return;let schEvaluated=(_a3=sch?.validate)===null||_a3===void 0?void 0:_a3.evaluated;if(it.props!==!0)if(schEvaluated&&!schEvaluated.dynamicProps)schEvaluated.props!==void 0&&(it.props=util_1.mergeEvaluated.props(gen,schEvaluated.props,it.props));else{let props=gen.var("props",(0,codegen_1._)`${source}.evaluated.props`);it.props=util_1.mergeEvaluated.props(gen,props,it.props,codegen_1.Name)}if(it.items!==!0)if(schEvaluated&&!schEvaluated.dynamicItems)schEvaluated.items!==void 0&&(it.items=util_1.mergeEvaluated.items(gen,schEvaluated.items,it.items));else{let items=gen.var("items",(0,codegen_1._)`${source}.evaluated.items`);it.items=util_1.mergeEvaluated.items(gen,items,it.items,codegen_1.Name)}}}exports.callRef=callRef,exports.default=def})),require_core$22=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let id_1=require_id2(),ref_1=require_ref2(),core=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",id_1.default,ref_1.default];exports.default=core})),require_limitNumber2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),ops=codegen_1.operators,KWDs={maximum:{okStr:"<=",ok:ops.LTE,fail:ops.GT},minimum:{okStr:">=",ok:ops.GTE,fail:ops.LT},exclusiveMaximum:{okStr:"<",ok:ops.LT,fail:ops.GTE},exclusiveMinimum:{okStr:">",ok:ops.GT,fail:ops.LTE}},def={keyword:Object.keys(KWDs),type:"number",schemaType:"number",$data:!0,error:{message:({keyword,schemaCode})=>(0,codegen_1.str)`must be ${KWDs[keyword].okStr} ${schemaCode}`,params:({keyword,schemaCode})=>(0,codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt;cxt.fail$data((0,codegen_1._)`${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`)}};exports.default=def})),require_multipleOf2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),def={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must be multiple of ${schemaCode}`,params:({schemaCode})=>(0,codegen_1._)`{multipleOf: ${schemaCode}}`},code(cxt){let{gen,data,schemaCode,it}=cxt,prec=it.opts.multipleOfPrecision,res=gen.let("res"),invalid=prec?(0,codegen_1._)`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`:(0,codegen_1._)`${res} !== parseInt(${res})`;cxt.fail$data((0,codegen_1._)`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)}};exports.default=def})),require_ucs2length2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});function ucs2length(str2){let len=str2.length,length2=0,pos=0,value;for(;pos<len;)length2++,value=str2.charCodeAt(pos++),value>=55296&&value<=56319&&pos<len&&(value=str2.charCodeAt(pos),(value&64512)===56320&&pos++);return length2}exports.default=ucs2length,ucs2length.code='require("ajv/dist/runtime/ucs2length").default'})),require_limitLength2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),ucs2length_1=require_ucs2length2(),def={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxLength"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} characters`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode,it}=cxt,op=keyword==="maxLength"?codegen_1.operators.GT:codegen_1.operators.LT,len=it.opts.unicode===!1?(0,codegen_1._)`${data}.length`:(0,codegen_1._)`${(0,util_1.useFunc)(cxt.gen,ucs2length_1.default)}(${data})`;cxt.fail$data((0,codegen_1._)`${len} ${op} ${schemaCode}`)}};exports.default=def})),require_pattern2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code2(),util_1=require_util2(),codegen_1=require_codegen2(),def={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must match pattern "${schemaCode}"`,params:({schemaCode})=>(0,codegen_1._)`{pattern: ${schemaCode}}`},code(cxt){let{gen,data,$data,schema,schemaCode,it}=cxt,u=it.opts.unicodeRegExp?"u":"";if($data){let{regExp}=it.opts.code,regExpCode=regExp.code==="new RegExp"?(0,codegen_1._)`new RegExp`:(0,util_1.useFunc)(gen,regExp),valid=gen.let("valid");gen.try(()=>gen.assign(valid,(0,codegen_1._)`${regExpCode}(${schemaCode}, ${u}).test(${data})`),()=>gen.assign(valid,!1)),cxt.fail$data((0,codegen_1._)`!${valid}`)}else{let regExp=(0,code_1.usePattern)(cxt,schema);cxt.fail$data((0,codegen_1._)`!${regExp}.test(${data})`)}}};exports.default=def})),require_limitProperties2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),def={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxProperties"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} properties`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt,op=keyword==="maxProperties"?codegen_1.operators.GT:codegen_1.operators.LT;cxt.fail$data((0,codegen_1._)`Object.keys(${data}).length ${op} ${schemaCode}`)}};exports.default=def})),require_required2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code2(),codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty}})=>(0,codegen_1.str)`must have required property '${missingProperty}'`,params:({params:{missingProperty}})=>(0,codegen_1._)`{missingProperty: ${missingProperty}}`},code(cxt){let{gen,schema,schemaCode,data,$data,it}=cxt,{opts}=it;if(!$data&&schema.length===0)return;let useLoop=schema.length>=opts.loopRequired;if(it.allErrors?allErrorsMode():exitOnErrorMode(),opts.strictRequired){let props=cxt.parentSchema.properties,{definedProperties}=cxt.it;for(let requiredKey of schema)if(props?.[requiredKey]===void 0&&!definedProperties.has(requiredKey)){let msg=`required property "${requiredKey}" is not defined at "${it.schemaEnv.baseId+it.errSchemaPath}" (strictRequired)`;(0,util_1.checkStrictMode)(it,msg,it.opts.strictRequired)}}function allErrorsMode(){if(useLoop||$data)cxt.block$data(codegen_1.nil,loopAllRequired);else for(let prop of schema)(0,code_1.checkReportMissingProp)(cxt,prop)}function exitOnErrorMode(){let missing=gen.let("missing");if(useLoop||$data){let valid=gen.let("valid",!0);cxt.block$data(valid,()=>loopUntilMissing(missing,valid)),cxt.ok(valid)}else gen.if((0,code_1.checkMissingProp)(cxt,schema,missing)),(0,code_1.reportMissingProp)(cxt,missing),gen.else()}function loopAllRequired(){gen.forOf("prop",schemaCode,prop=>{cxt.setParams({missingProperty:prop}),gen.if((0,code_1.noPropertyInData)(gen,data,prop,opts.ownProperties),()=>cxt.error())})}function loopUntilMissing(missing,valid){cxt.setParams({missingProperty:missing}),gen.forOf(missing,schemaCode,()=>{gen.assign(valid,(0,code_1.propertyInData)(gen,data,missing,opts.ownProperties)),gen.if((0,codegen_1.not)(valid),()=>{cxt.error(),gen.break()})},codegen_1.nil)}}};exports.default=def})),require_limitItems2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),def={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword,schemaCode}){let comp=keyword==="maxItems"?"more":"fewer";return(0,codegen_1.str)`must NOT have ${comp} than ${schemaCode} items`},params:({schemaCode})=>(0,codegen_1._)`{limit: ${schemaCode}}`},code(cxt){let{keyword,data,schemaCode}=cxt,op=keyword==="maxItems"?codegen_1.operators.GT:codegen_1.operators.LT;cxt.fail$data((0,codegen_1._)`${data}.length ${op} ${schemaCode}`)}};exports.default=def})),require_equal2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let equal=require_fast_deep_equal2();equal.code='require("ajv/dist/runtime/equal").default',exports.default=equal})),require_uniqueItems2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dataType_1=require_dataType2(),codegen_1=require_codegen2(),util_1=require_util2(),equal_1=require_equal2(),def={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i,j}})=>(0,codegen_1.str)`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,params:({params:{i,j}})=>(0,codegen_1._)`{i: ${i}, j: ${j}}`},code(cxt){let{gen,data,$data,schema,parentSchema,schemaCode,it}=cxt;if(!$data&&!schema)return;let valid=gen.let("valid"),itemTypes=parentSchema.items?(0,dataType_1.getSchemaTypes)(parentSchema.items):[];cxt.block$data(valid,validateUniqueItems,(0,codegen_1._)`${schemaCode} === false`),cxt.ok(valid);function validateUniqueItems(){let i=gen.let("i",(0,codegen_1._)`${data}.length`),j=gen.let("j");cxt.setParams({i,j}),gen.assign(valid,!0),gen.if((0,codegen_1._)`${i} > 1`,()=>(canOptimize()?loopN:loopN2)(i,j))}function canOptimize(){return itemTypes.length>0&&!itemTypes.some(t=>t==="object"||t==="array")}function loopN(i,j){let item=gen.name("item"),wrongType=(0,dataType_1.checkDataTypes)(itemTypes,item,it.opts.strictNumbers,dataType_1.DataType.Wrong),indices=gen.const("indices",(0,codegen_1._)`{}`);gen.for((0,codegen_1._)`;${i}--;`,()=>{gen.let(item,(0,codegen_1._)`${data}[${i}]`),gen.if(wrongType,(0,codegen_1._)`continue`),itemTypes.length>1&&gen.if((0,codegen_1._)`typeof ${item} == "string"`,(0,codegen_1._)`${item} += "_"`),gen.if((0,codegen_1._)`typeof ${indices}[${item}] == "number"`,()=>{gen.assign(j,(0,codegen_1._)`${indices}[${item}]`),cxt.error(),gen.assign(valid,!1).break()}).code((0,codegen_1._)`${indices}[${item}] = ${i}`)})}function loopN2(i,j){let eql=(0,util_1.useFunc)(gen,equal_1.default),outer=gen.name("outer");gen.label(outer).for((0,codegen_1._)`;${i}--;`,()=>gen.for((0,codegen_1._)`${j} = ${i}; ${j}--;`,()=>gen.if((0,codegen_1._)`${eql}(${data}[${i}], ${data}[${j}])`,()=>{cxt.error(),gen.assign(valid,!1).break(outer)})))}}};exports.default=def})),require_const2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),equal_1=require_equal2(),def={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode})=>(0,codegen_1._)`{allowedValue: ${schemaCode}}`},code(cxt){let{gen,data,$data,schemaCode,schema}=cxt;$data||schema&&typeof schema=="object"?cxt.fail$data((0,codegen_1._)`!${(0,util_1.useFunc)(gen,equal_1.default)}(${data}, ${schemaCode})`):cxt.fail((0,codegen_1._)`${schema} !== ${data}`)}};exports.default=def})),require_enum2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),equal_1=require_equal2(),def={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode})=>(0,codegen_1._)`{allowedValues: ${schemaCode}}`},code(cxt){let{gen,data,$data,schema,schemaCode,it}=cxt;if(!$data&&schema.length===0)throw new Error("enum must have non-empty array");let useLoop=schema.length>=it.opts.loopEnum,eql,getEql=()=>eql??(eql=(0,util_1.useFunc)(gen,equal_1.default)),valid;if(useLoop||$data)valid=gen.let("valid"),cxt.block$data(valid,loopEnum);else{if(!Array.isArray(schema))throw new Error("ajv implementation error");let vSchema=gen.const("vSchema",schemaCode);valid=(0,codegen_1.or)(...schema.map((_x,i)=>equalCode(vSchema,i)))}cxt.pass(valid);function loopEnum(){gen.assign(valid,!1),gen.forOf("v",schemaCode,v=>gen.if((0,codegen_1._)`${getEql()}(${data}, ${v})`,()=>gen.assign(valid,!0).break()))}function equalCode(vSchema,i){let sch=schema[i];return typeof sch=="object"&&sch!==null?(0,codegen_1._)`${getEql()}(${data}, ${vSchema}[${i}])`:(0,codegen_1._)`${data} === ${sch}`}}};exports.default=def})),require_validation$22=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let limitNumber_1=require_limitNumber2(),multipleOf_1=require_multipleOf2(),limitLength_1=require_limitLength2(),pattern_1=require_pattern2(),limitProperties_1=require_limitProperties2(),required_1=require_required2(),limitItems_1=require_limitItems2(),uniqueItems_1=require_uniqueItems2(),const_1=require_const2(),enum_1=require_enum2(),validation=[limitNumber_1.default,multipleOf_1.default,limitLength_1.default,pattern_1.default,limitProperties_1.default,required_1.default,limitItems_1.default,uniqueItems_1.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},const_1.default,enum_1.default];exports.default=validation})),require_additionalItems2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateAdditionalItems=void 0;let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{parentSchema,it}=cxt,{items}=parentSchema;if(!Array.isArray(items)){(0,util_1.checkStrictMode)(it,'"additionalItems" is ignored when "items" is not an array of schemas');return}validateAdditionalItems(cxt,items)}};function validateAdditionalItems(cxt,items){let{gen,schema,data,keyword,it}=cxt;it.items=!0;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(schema===!1)cxt.setParams({len:items.length}),cxt.pass((0,codegen_1._)`${len} <= ${items.length}`);else if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.var("valid",(0,codegen_1._)`${len} <= ${items.length}`);gen.if((0,codegen_1.not)(valid),()=>validateItems(valid)),cxt.ok(valid)}function validateItems(valid){gen.forRange("i",items.length,len,i=>{cxt.subschema({keyword,dataProp:i,dataPropType:util_1.Type.Num},valid),it.allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())})}}exports.validateAdditionalItems=validateAdditionalItems,exports.default=def})),require_items2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateTuple=void 0;let codegen_1=require_codegen2(),util_1=require_util2(),code_1=require_code2(),def={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(cxt){let{schema,it}=cxt;if(Array.isArray(schema))return validateTuple(cxt,"additionalItems",schema);it.items=!0,!(0,util_1.alwaysValidSchema)(it,schema)&&cxt.ok((0,code_1.validateArray)(cxt))}};function validateTuple(cxt,extraItems,schArr=cxt.schema){let{gen,parentSchema,data,keyword,it}=cxt;checkStrictTuple(parentSchema),it.opts.unevaluated&&schArr.length&&it.items!==!0&&(it.items=util_1.mergeEvaluated.items(gen,schArr.length,it.items));let valid=gen.name("valid"),len=gen.const("len",(0,codegen_1._)`${data}.length`);schArr.forEach((sch,i)=>{(0,util_1.alwaysValidSchema)(it,sch)||(gen.if((0,codegen_1._)`${len} > ${i}`,()=>cxt.subschema({keyword,schemaProp:i,dataProp:i},valid)),cxt.ok(valid))});function checkStrictTuple(sch){let{opts,errSchemaPath}=it,l=schArr.length,fullTuple=l===sch.minItems&&(l===sch.maxItems||sch[extraItems]===!1);if(opts.strictTuples&&!fullTuple){let msg=`"${keyword}" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path "${errSchemaPath}"`;(0,util_1.checkStrictMode)(it,msg,opts.strictTuples)}}}exports.validateTuple=validateTuple,exports.default=def})),require_prefixItems2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let items_1=require_items2(),def={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:cxt=>(0,items_1.validateTuple)(cxt,"items")};exports.default=def})),require_items20202=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),code_1=require_code2(),additionalItems_1=require_additionalItems2(),def={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{schema,parentSchema,it}=cxt,{prefixItems}=parentSchema;it.items=!0,!(0,util_1.alwaysValidSchema)(it,schema)&&(prefixItems?(0,additionalItems_1.validateAdditionalItems)(cxt,prefixItems):cxt.ok((0,code_1.validateArray)(cxt)))}};exports.default=def})),require_contains2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min,max}})=>max===void 0?(0,codegen_1.str)`must contain at least ${min} valid item(s)`:(0,codegen_1.str)`must contain at least ${min} and no more than ${max} valid item(s)`,params:({params:{min,max}})=>max===void 0?(0,codegen_1._)`{minContains: ${min}}`:(0,codegen_1._)`{minContains: ${min}, maxContains: ${max}}`},code(cxt){let{gen,schema,parentSchema,data,it}=cxt,min,max,{minContains,maxContains}=parentSchema;it.opts.next?(min=minContains===void 0?1:minContains,max=maxContains):min=1;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(cxt.setParams({min,max}),max===void 0&&min===0){(0,util_1.checkStrictMode)(it,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(max!==void 0&&min>max){(0,util_1.checkStrictMode)(it,'"minContains" > "maxContains" is always invalid'),cxt.fail();return}if((0,util_1.alwaysValidSchema)(it,schema)){let cond=(0,codegen_1._)`${len} >= ${min}`;max!==void 0&&(cond=(0,codegen_1._)`${cond} && ${len} <= ${max}`),cxt.pass(cond);return}it.items=!0;let valid=gen.name("valid");max===void 0&&min===1?validateItems(valid,()=>gen.if(valid,()=>gen.break())):min===0?(gen.let(valid,!0),max!==void 0&&gen.if((0,codegen_1._)`${data}.length > 0`,validateItemsWithCount)):(gen.let(valid,!1),validateItemsWithCount()),cxt.result(valid,()=>cxt.reset());function validateItemsWithCount(){let schValid=gen.name("_valid"),count=gen.let("count",0);validateItems(schValid,()=>gen.if(schValid,()=>checkLimits(count)))}function validateItems(_valid,block){gen.forRange("i",0,len,i=>{cxt.subschema({keyword:"contains",dataProp:i,dataPropType:util_1.Type.Num,compositeRule:!0},_valid),block()})}function checkLimits(count){gen.code((0,codegen_1._)`${count}++`),max===void 0?gen.if((0,codegen_1._)`${count} >= ${min}`,()=>gen.assign(valid,!0).break()):(gen.if((0,codegen_1._)`${count} > ${max}`,()=>gen.assign(valid,!1).break()),min===1?gen.assign(valid,!0):gen.if((0,codegen_1._)`${count} >= ${min}`,()=>gen.assign(valid,!0)))}}};exports.default=def})),require_dependencies2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSchemaDeps=exports.validatePropertyDeps=exports.error=void 0;let codegen_1=require_codegen2(),util_1=require_util2(),code_1=require_code2();exports.error={message:({params:{property,depsCount,deps}})=>{let property_ies=depsCount===1?"property":"properties";return(0,codegen_1.str)`must have ${property_ies} ${deps} when property ${property} is present`},params:({params:{property,depsCount,deps,missingProperty}})=>(0,codegen_1._)`{property: ${property},
|
|
73
|
+
missingProperty: ${missingProperty},
|
|
74
|
+
depsCount: ${depsCount},
|
|
75
|
+
deps: ${deps}}`};let def={keyword:"dependencies",type:"object",schemaType:"object",error:exports.error,code(cxt){let[propDeps,schDeps]=splitDependencies(cxt);validatePropertyDeps(cxt,propDeps),validateSchemaDeps(cxt,schDeps)}};function splitDependencies({schema}){let propertyDeps={},schemaDeps={};for(let key in schema){if(key==="__proto__")continue;let deps=Array.isArray(schema[key])?propertyDeps:schemaDeps;deps[key]=schema[key]}return[propertyDeps,schemaDeps]}function validatePropertyDeps(cxt,propertyDeps=cxt.schema){let{gen,data,it}=cxt;if(Object.keys(propertyDeps).length===0)return;let missing=gen.let("missing");for(let prop in propertyDeps){let deps=propertyDeps[prop];if(deps.length===0)continue;let hasProperty=(0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties);cxt.setParams({property:prop,depsCount:deps.length,deps:deps.join(", ")}),it.allErrors?gen.if(hasProperty,()=>{for(let depProp of deps)(0,code_1.checkReportMissingProp)(cxt,depProp)}):(gen.if((0,codegen_1._)`${hasProperty} && (${(0,code_1.checkMissingProp)(cxt,deps,missing)})`),(0,code_1.reportMissingProp)(cxt,missing),gen.else())}}exports.validatePropertyDeps=validatePropertyDeps;function validateSchemaDeps(cxt,schemaDeps=cxt.schema){let{gen,data,keyword,it}=cxt,valid=gen.name("valid");for(let prop in schemaDeps)(0,util_1.alwaysValidSchema)(it,schemaDeps[prop])||(gen.if((0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties),()=>{let schCxt=cxt.subschema({keyword,schemaProp:prop},valid);cxt.mergeValidEvaluated(schCxt,valid)},()=>gen.var(valid,!0)),cxt.ok(valid))}exports.validateSchemaDeps=validateSchemaDeps,exports.default=def})),require_propertyNames2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params})=>(0,codegen_1._)`{propertyName: ${params.propertyName}}`},code(cxt){let{gen,schema,data,it}=cxt;if((0,util_1.alwaysValidSchema)(it,schema))return;let valid=gen.name("valid");gen.forIn("key",data,key=>{cxt.setParams({propertyName:key}),cxt.subschema({keyword:"propertyNames",data:key,dataTypes:["string"],propertyName:key,compositeRule:!0},valid),gen.if((0,codegen_1.not)(valid),()=>{cxt.error(!0),it.allErrors||gen.break()})}),cxt.ok(valid)}};exports.default=def})),require_additionalProperties2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code2(),codegen_1=require_codegen2(),names_1=require_names2(),util_1=require_util2(),def={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params})=>(0,codegen_1._)`{additionalProperty: ${params.additionalProperty}}`},code(cxt){let{gen,schema,parentSchema,data,errsCount,it}=cxt;if(!errsCount)throw new Error("ajv implementation error");let{allErrors,opts}=it;if(it.props=!0,opts.removeAdditional!=="all"&&(0,util_1.alwaysValidSchema)(it,schema))return;let props=(0,code_1.allSchemaProperties)(parentSchema.properties),patProps=(0,code_1.allSchemaProperties)(parentSchema.patternProperties);checkAdditionalProperties(),cxt.ok((0,codegen_1._)`${errsCount} === ${names_1.default.errors}`);function checkAdditionalProperties(){gen.forIn("key",data,key=>{!props.length&&!patProps.length?additionalPropertyCode(key):gen.if(isAdditional(key),()=>additionalPropertyCode(key))})}function isAdditional(key){let definedProp;if(props.length>8){let propsSchema=(0,util_1.schemaRefOrVal)(it,parentSchema.properties,"properties");definedProp=(0,code_1.isOwnProperty)(gen,propsSchema,key)}else props.length?definedProp=(0,codegen_1.or)(...props.map(p=>(0,codegen_1._)`${key} === ${p}`)):definedProp=codegen_1.nil;return patProps.length&&(definedProp=(0,codegen_1.or)(definedProp,...patProps.map(p=>(0,codegen_1._)`${(0,code_1.usePattern)(cxt,p)}.test(${key})`))),(0,codegen_1.not)(definedProp)}function deleteAdditional(key){gen.code((0,codegen_1._)`delete ${data}[${key}]`)}function additionalPropertyCode(key){if(opts.removeAdditional==="all"||opts.removeAdditional&&schema===!1){deleteAdditional(key);return}if(schema===!1){cxt.setParams({additionalProperty:key}),cxt.error(),allErrors||gen.break();return}if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.name("valid");opts.removeAdditional==="failing"?(applyAdditionalSchema(key,valid,!1),gen.if((0,codegen_1.not)(valid),()=>{cxt.reset(),deleteAdditional(key)})):(applyAdditionalSchema(key,valid),allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break()))}}function applyAdditionalSchema(key,valid,errors){let subschema={keyword:"additionalProperties",dataProp:key,dataPropType:util_1.Type.Str};errors===!1&&Object.assign(subschema,{compositeRule:!0,createErrors:!1,allErrors:!1}),cxt.subschema(subschema,valid)}}};exports.default=def})),require_properties2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let validate_1=require_validate2(),code_1=require_code2(),util_1=require_util2(),additionalProperties_1=require_additionalProperties2(),def={keyword:"properties",type:"object",schemaType:"object",code(cxt){let{gen,schema,parentSchema,data,it}=cxt;it.opts.removeAdditional==="all"&&parentSchema.additionalProperties===void 0&&additionalProperties_1.default.code(new validate_1.KeywordCxt(it,additionalProperties_1.default,"additionalProperties"));let allProps=(0,code_1.allSchemaProperties)(schema);for(let prop of allProps)it.definedProperties.add(prop);it.opts.unevaluated&&allProps.length&&it.props!==!0&&(it.props=util_1.mergeEvaluated.props(gen,(0,util_1.toHash)(allProps),it.props));let properties=allProps.filter(p=>!(0,util_1.alwaysValidSchema)(it,schema[p]));if(properties.length===0)return;let valid=gen.name("valid");for(let prop of properties)hasDefault(prop)?applyPropertySchema(prop):(gen.if((0,code_1.propertyInData)(gen,data,prop,it.opts.ownProperties)),applyPropertySchema(prop),it.allErrors||gen.else().var(valid,!0),gen.endIf()),cxt.it.definedProperties.add(prop),cxt.ok(valid);function hasDefault(prop){return it.opts.useDefaults&&!it.compositeRule&&schema[prop].default!==void 0}function applyPropertySchema(prop){cxt.subschema({keyword:"properties",schemaProp:prop,dataProp:prop},valid)}}};exports.default=def})),require_patternProperties2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let code_1=require_code2(),codegen_1=require_codegen2(),util_1=require_util2(),util_2=require_util2(),def={keyword:"patternProperties",type:"object",schemaType:"object",code(cxt){let{gen,schema,data,parentSchema,it}=cxt,{opts}=it,patterns=(0,code_1.allSchemaProperties)(schema),alwaysValidPatterns=patterns.filter(p=>(0,util_1.alwaysValidSchema)(it,schema[p]));if(patterns.length===0||alwaysValidPatterns.length===patterns.length&&(!it.opts.unevaluated||it.props===!0))return;let checkProperties=opts.strictSchema&&!opts.allowMatchingProperties&&parentSchema.properties,valid=gen.name("valid");it.props!==!0&&!(it.props instanceof codegen_1.Name)&&(it.props=(0,util_2.evaluatedPropsToName)(gen,it.props));let{props}=it;validatePatternProperties();function validatePatternProperties(){for(let pat of patterns)checkProperties&&checkMatchingProperties(pat),it.allErrors?validateProperties(pat):(gen.var(valid,!0),validateProperties(pat),gen.if(valid))}function checkMatchingProperties(pat){for(let prop in checkProperties)new RegExp(pat).test(prop)&&(0,util_1.checkStrictMode)(it,`property ${prop} matches pattern ${pat} (use allowMatchingProperties)`)}function validateProperties(pat){gen.forIn("key",data,key=>{gen.if((0,codegen_1._)`${(0,code_1.usePattern)(cxt,pat)}.test(${key})`,()=>{let alwaysValid=alwaysValidPatterns.includes(pat);alwaysValid||cxt.subschema({keyword:"patternProperties",schemaProp:pat,dataProp:key,dataPropType:util_2.Type.Str},valid),it.opts.unevaluated&&props!==!0?gen.assign((0,codegen_1._)`${props}[${key}]`,!0):!alwaysValid&&!it.allErrors&&gen.if((0,codegen_1.not)(valid),()=>gen.break())})})}}};exports.default=def})),require_not2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util2(),def={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(cxt){let{gen,schema,it}=cxt;if((0,util_1.alwaysValidSchema)(it,schema)){cxt.fail();return}let valid=gen.name("valid");cxt.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},valid),cxt.failResult(valid,()=>cxt.reset(),()=>cxt.error())},error:{message:"must NOT be valid"}};exports.default=def})),require_anyOf2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let def={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:require_code2().validateUnion,error:{message:"must match a schema in anyOf"}};exports.default=def})),require_oneOf2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params})=>(0,codegen_1._)`{passingSchemas: ${params.passing}}`},code(cxt){let{gen,schema,parentSchema,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");if(it.opts.discriminator&&parentSchema.discriminator)return;let schArr=schema,valid=gen.let("valid",!1),passing=gen.let("passing",null),schValid=gen.name("_valid");cxt.setParams({passing}),gen.block(validateOneOf),cxt.result(valid,()=>cxt.reset(),()=>cxt.error(!0));function validateOneOf(){schArr.forEach((sch,i)=>{let schCxt;(0,util_1.alwaysValidSchema)(it,sch)?gen.var(schValid,!0):schCxt=cxt.subschema({keyword:"oneOf",schemaProp:i,compositeRule:!0},schValid),i>0&&gen.if((0,codegen_1._)`${schValid} && ${valid}`).assign(valid,!1).assign(passing,(0,codegen_1._)`[${passing}, ${i}]`).else(),gen.if(schValid,()=>{gen.assign(valid,!0),gen.assign(passing,i),schCxt&&cxt.mergeEvaluated(schCxt,codegen_1.Name)})})}}};exports.default=def})),require_allOf2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util2(),def={keyword:"allOf",schemaType:"array",code(cxt){let{gen,schema,it}=cxt;if(!Array.isArray(schema))throw new Error("ajv implementation error");let valid=gen.name("valid");schema.forEach((sch,i)=>{if((0,util_1.alwaysValidSchema)(it,sch))return;let schCxt=cxt.subschema({keyword:"allOf",schemaProp:i},valid);cxt.ok(valid),cxt.mergeEvaluated(schCxt)})}};exports.default=def})),require_if2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params})=>(0,codegen_1.str)`must match "${params.ifClause}" schema`,params:({params})=>(0,codegen_1._)`{failingKeyword: ${params.ifClause}}`},code(cxt){let{gen,parentSchema,it}=cxt;parentSchema.then===void 0&&parentSchema.else===void 0&&(0,util_1.checkStrictMode)(it,'"if" without "then" and "else" is ignored');let hasThen=hasSchema(it,"then"),hasElse=hasSchema(it,"else");if(!hasThen&&!hasElse)return;let valid=gen.let("valid",!0),schValid=gen.name("_valid");if(validateIf(),cxt.reset(),hasThen&&hasElse){let ifClause=gen.let("ifClause");cxt.setParams({ifClause}),gen.if(schValid,validateClause("then",ifClause),validateClause("else",ifClause))}else hasThen?gen.if(schValid,validateClause("then")):gen.if((0,codegen_1.not)(schValid),validateClause("else"));cxt.pass(valid,()=>cxt.error(!0));function validateIf(){let schCxt=cxt.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},schValid);cxt.mergeEvaluated(schCxt)}function validateClause(keyword,ifClause){return()=>{let schCxt=cxt.subschema({keyword},schValid);gen.assign(valid,schValid),cxt.mergeValidEvaluated(schCxt,valid),ifClause?gen.assign(ifClause,(0,codegen_1._)`${keyword}`):cxt.setParams({ifClause:keyword})}}}};function hasSchema(it,keyword){let schema=it.schema[keyword];return schema!==void 0&&!(0,util_1.alwaysValidSchema)(it,schema)}exports.default=def})),require_thenElse2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util2(),def={keyword:["then","else"],schemaType:["object","boolean"],code({keyword,parentSchema,it}){parentSchema.if===void 0&&(0,util_1.checkStrictMode)(it,`"${keyword}" without "if" is ignored`)}};exports.default=def})),require_applicator$22=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let additionalItems_1=require_additionalItems2(),prefixItems_1=require_prefixItems2(),items_1=require_items2(),items2020_1=require_items20202(),contains_1=require_contains2(),dependencies_1=require_dependencies2(),propertyNames_1=require_propertyNames2(),additionalProperties_1=require_additionalProperties2(),properties_1=require_properties2(),patternProperties_1=require_patternProperties2(),not_1=require_not2(),anyOf_1=require_anyOf2(),oneOf_1=require_oneOf2(),allOf_1=require_allOf2(),if_1=require_if2(),thenElse_1=require_thenElse2();function getApplicator(draft2020=!1){let applicator=[not_1.default,anyOf_1.default,oneOf_1.default,allOf_1.default,if_1.default,thenElse_1.default,propertyNames_1.default,additionalProperties_1.default,dependencies_1.default,properties_1.default,patternProperties_1.default];return draft2020?applicator.push(prefixItems_1.default,items2020_1.default):applicator.push(additionalItems_1.default,items_1.default),applicator.push(contains_1.default),applicator}exports.default=getApplicator})),require_format$22=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),def={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode})=>(0,codegen_1.str)`must match format "${schemaCode}"`,params:({schemaCode})=>(0,codegen_1._)`{format: ${schemaCode}}`},code(cxt,ruleType){let{gen,data,$data,schema,schemaCode,it}=cxt,{opts,errSchemaPath,schemaEnv,self}=it;if(!opts.validateFormats)return;$data?validate$DataFormat():validateFormat();function validate$DataFormat(){let fmts=gen.scopeValue("formats",{ref:self.formats,code:opts.code.formats}),fDef=gen.const("fDef",(0,codegen_1._)`${fmts}[${schemaCode}]`),fType=gen.let("fType"),format=gen.let("format");gen.if((0,codegen_1._)`typeof ${fDef} == "object" && !(${fDef} instanceof RegExp)`,()=>gen.assign(fType,(0,codegen_1._)`${fDef}.type || "string"`).assign(format,(0,codegen_1._)`${fDef}.validate`),()=>gen.assign(fType,(0,codegen_1._)`"string"`).assign(format,fDef)),cxt.fail$data((0,codegen_1.or)(unknownFmt(),invalidFmt()));function unknownFmt(){return opts.strictSchema===!1?codegen_1.nil:(0,codegen_1._)`${schemaCode} && !${format}`}function invalidFmt(){let callFormat=schemaEnv.$async?(0,codegen_1._)`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`:(0,codegen_1._)`${format}(${data})`,validData=(0,codegen_1._)`(typeof ${format} == "function" ? ${callFormat} : ${format}.test(${data}))`;return(0,codegen_1._)`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`}}function validateFormat(){let formatDef=self.formats[schema];if(!formatDef){unknownFormat();return}if(formatDef===!0)return;let[fmtType,format,fmtRef]=getFormat(formatDef);fmtType===ruleType&&cxt.pass(validCondition());function unknownFormat(){if(opts.strictSchema===!1){self.logger.warn(unknownMsg());return}throw new Error(unknownMsg());function unknownMsg(){return`unknown format "${schema}" ignored in schema at path "${errSchemaPath}"`}}function getFormat(fmtDef){let code2=fmtDef instanceof RegExp?(0,codegen_1.regexpCode)(fmtDef):opts.code.formats?(0,codegen_1._)`${opts.code.formats}${(0,codegen_1.getProperty)(schema)}`:void 0,fmt=gen.scopeValue("formats",{key:schema,ref:fmtDef,code:code2});return typeof fmtDef=="object"&&!(fmtDef instanceof RegExp)?[fmtDef.type||"string",fmtDef.validate,(0,codegen_1._)`${fmt}.validate`]:["string",fmtDef,fmt]}function validCondition(){if(typeof formatDef=="object"&&!(formatDef instanceof RegExp)&&formatDef.async){if(!schemaEnv.$async)throw new Error("async format in sync schema");return(0,codegen_1._)`await ${fmtRef}(${data})`}return typeof format=="function"?(0,codegen_1._)`${fmtRef}(${data})`:(0,codegen_1._)`${fmtRef}.test(${data})`}}}};exports.default=def})),require_format$12=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let format=[require_format$22().default];exports.default=format})),require_metadata2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.contentVocabulary=exports.metadataVocabulary=void 0,exports.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],exports.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]})),require_draft72=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let core_1=require_core$22(),validation_1=require_validation$22(),applicator_1=require_applicator$22(),format_1=require_format$12(),metadata_1=require_metadata2(),draft7Vocabularies=[core_1.default,validation_1.default,(0,applicator_1.default)(),format_1.default,metadata_1.metadataVocabulary,metadata_1.contentVocabulary];exports.default=draft7Vocabularies})),require_types2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.DiscrError=void 0;var DiscrError;(function(DiscrError2){DiscrError2.Tag="tag",DiscrError2.Mapping="mapping"})(DiscrError||(exports.DiscrError=DiscrError={}))})),require_discriminator2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),types_1=require_types2(),compile_1=require_compile2(),ref_error_1=require_ref_error2(),util_1=require_util2(),def={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError,tagName}})=>discrError===types_1.DiscrError.Tag?`tag "${tagName}" must be string`:`value of tag "${tagName}" must be in oneOf`,params:({params:{discrError,tag,tagName}})=>(0,codegen_1._)`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`},code(cxt){let{gen,data,schema,parentSchema,it}=cxt,{oneOf}=parentSchema;if(!it.opts.discriminator)throw new Error("discriminator: requires discriminator option");let tagName=schema.propertyName;if(typeof tagName!="string")throw new Error("discriminator: requires propertyName");if(schema.mapping)throw new Error("discriminator: mapping is not supported");if(!oneOf)throw new Error("discriminator: requires oneOf keyword");let valid=gen.let("valid",!1),tag=gen.const("tag",(0,codegen_1._)`${data}${(0,codegen_1.getProperty)(tagName)}`);gen.if((0,codegen_1._)`typeof ${tag} == "string"`,()=>validateMapping(),()=>cxt.error(!1,{discrError:types_1.DiscrError.Tag,tag,tagName})),cxt.ok(valid);function validateMapping(){let mapping=getMapping();gen.if(!1);for(let tagValue in mapping)gen.elseIf((0,codegen_1._)`${tag} === ${tagValue}`),gen.assign(valid,applyTagSchema(mapping[tagValue]));gen.else(),cxt.error(!1,{discrError:types_1.DiscrError.Mapping,tag,tagName}),gen.endIf()}function applyTagSchema(schemaProp){let _valid=gen.name("valid"),schCxt=cxt.subschema({keyword:"oneOf",schemaProp},_valid);return cxt.mergeEvaluated(schCxt,codegen_1.Name),_valid}function getMapping(){var _a3;let oneOfMapping={},topRequired=hasRequired(parentSchema),tagRequired=!0;for(let i=0;i<oneOf.length;i++){let sch=oneOf[i];if(sch?.$ref&&!(0,util_1.schemaHasRulesButRef)(sch,it.self.RULES)){let ref=sch.$ref;if(sch=compile_1.resolveRef.call(it.self,it.schemaEnv.root,it.baseId,ref),sch instanceof compile_1.SchemaEnv&&(sch=sch.schema),sch===void 0)throw new ref_error_1.default(it.opts.uriResolver,it.baseId,ref)}let propSch=(_a3=sch?.properties)===null||_a3===void 0?void 0:_a3[tagName];if(typeof propSch!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${tagName}"`);tagRequired=tagRequired&&(topRequired||hasRequired(sch)),addMappings(propSch,i)}if(!tagRequired)throw new Error(`discriminator: "${tagName}" must be required`);return oneOfMapping;function hasRequired({required:required2}){return Array.isArray(required2)&&required2.includes(tagName)}function addMappings(sch,i){if(sch.const)addMapping(sch.const,i);else if(sch.enum)for(let tagValue of sch.enum)addMapping(tagValue,i);else throw new Error(`discriminator: "properties/${tagName}" must have "const" or "enum"`)}function addMapping(tagValue,i){if(typeof tagValue!="string"||tagValue in oneOfMapping)throw new Error(`discriminator: "${tagName}" values must be unique strings`);oneOfMapping[tagValue]=i}}}};exports.default=def})),require_json_schema_draft_072=__commonJSMin2(((exports,module)=>{module.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}})),require_ajv2=__commonJSMin2(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv=void 0;let core_1=require_core$32(),draft7_1=require_draft72(),discriminator_1=require_discriminator2(),draft7MetaSchema=require_json_schema_draft_072(),META_SUPPORT_DATA=["/properties"],META_SCHEMA_ID="http://json-schema.org/draft-07/schema";var Ajv3=class extends core_1.default{_addVocabularies(){super._addVocabularies(),draft7_1.default.forEach(v=>this.addVocabulary(v)),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let metaSchema=this.opts.$data?this.$dataMetaSchema(draft7MetaSchema,META_SUPPORT_DATA):draft7MetaSchema;this.addMetaSchema(metaSchema,META_SCHEMA_ID,!1),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv=Ajv3,module.exports=exports=Ajv3,module.exports.Ajv=Ajv3,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv3;var validate_1=require_validate2();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen2();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error2();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error2();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_dynamicAnchor2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.dynamicAnchor=void 0;let codegen_1=require_codegen2(),names_1=require_names2(),compile_1=require_compile2(),ref_1=require_ref2(),def={keyword:"$dynamicAnchor",schemaType:"string",code:cxt=>dynamicAnchor(cxt,cxt.schema)};function dynamicAnchor(cxt,anchor2){let{gen,it}=cxt;it.schemaEnv.root.dynamicAnchors[anchor2]=!0;let v=(0,codegen_1._)`${names_1.default.dynamicAnchors}${(0,codegen_1.getProperty)(anchor2)}`,validate2=it.errSchemaPath==="#"?it.validateName:_getValidate(cxt);gen.if((0,codegen_1._)`!${v}`,()=>gen.assign(v,validate2))}exports.dynamicAnchor=dynamicAnchor;function _getValidate(cxt){let{schemaEnv,schema,self}=cxt.it,{root,baseId,localRefs,meta:meta2}=schemaEnv.root,{schemaId}=self.opts,sch=new compile_1.SchemaEnv({schema,schemaId,root,baseId,localRefs,meta:meta2});return compile_1.compileSchema.call(self,sch),(0,ref_1.getValidate)(cxt,sch)}exports.default=def})),require_dynamicRef2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.dynamicRef=void 0;let codegen_1=require_codegen2(),names_1=require_names2(),ref_1=require_ref2(),def={keyword:"$dynamicRef",schemaType:"string",code:cxt=>dynamicRef(cxt,cxt.schema)};function dynamicRef(cxt,ref){let{gen,keyword,it}=cxt;if(ref[0]!=="#")throw new Error(`"${keyword}" only supports hash fragment reference`);let anchor2=ref.slice(1);if(it.allErrors)_dynamicRef();else{let valid=gen.let("valid",!1);_dynamicRef(valid),cxt.ok(valid)}function _dynamicRef(valid){if(it.schemaEnv.root.dynamicAnchors[anchor2]){let v=gen.let("_v",(0,codegen_1._)`${names_1.default.dynamicAnchors}${(0,codegen_1.getProperty)(anchor2)}`);gen.if(v,_callRef(v,valid),_callRef(it.validateName,valid))}else _callRef(it.validateName,valid)()}function _callRef(validate2,valid){return valid?()=>gen.block(()=>{(0,ref_1.callRef)(cxt,validate2),gen.let(valid,!0)}):()=>(0,ref_1.callRef)(cxt,validate2)}}exports.dynamicRef=dynamicRef,exports.default=def})),require_recursiveAnchor2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicAnchor_1=require_dynamicAnchor2(),util_1=require_util2(),def={keyword:"$recursiveAnchor",schemaType:"boolean",code(cxt){cxt.schema?(0,dynamicAnchor_1.dynamicAnchor)(cxt,""):(0,util_1.checkStrictMode)(cxt.it,"$recursiveAnchor: false is ignored")}};exports.default=def})),require_recursiveRef2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicRef_1=require_dynamicRef2(),def={keyword:"$recursiveRef",schemaType:"string",code:cxt=>(0,dynamicRef_1.dynamicRef)(cxt,cxt.schema)};exports.default=def})),require_dynamic2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dynamicAnchor_1=require_dynamicAnchor2(),dynamicRef_1=require_dynamicRef2(),recursiveAnchor_1=require_recursiveAnchor2(),recursiveRef_1=require_recursiveRef2(),dynamic=[dynamicAnchor_1.default,dynamicRef_1.default,recursiveAnchor_1.default,recursiveRef_1.default];exports.default=dynamic})),require_dependentRequired2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependencies_1=require_dependencies2(),def={keyword:"dependentRequired",type:"object",schemaType:"object",error:dependencies_1.error,code:cxt=>(0,dependencies_1.validatePropertyDeps)(cxt)};exports.default=def})),require_dependentSchemas2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependencies_1=require_dependencies2(),def={keyword:"dependentSchemas",type:"object",schemaType:"object",code:cxt=>(0,dependencies_1.validateSchemaDeps)(cxt)};exports.default=def})),require_limitContains2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let util_1=require_util2(),def={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword,parentSchema,it}){parentSchema.contains===void 0&&(0,util_1.checkStrictMode)(it,`"${keyword}" without "contains" is ignored`)}};exports.default=def})),require_next2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let dependentRequired_1=require_dependentRequired2(),dependentSchemas_1=require_dependentSchemas2(),limitContains_1=require_limitContains2(),next=[dependentRequired_1.default,dependentSchemas_1.default,limitContains_1.default];exports.default=next})),require_unevaluatedProperties2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),names_1=require_names2(),def={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:{message:"must NOT have unevaluated properties",params:({params})=>(0,codegen_1._)`{unevaluatedProperty: ${params.unevaluatedProperty}}`},code(cxt){let{gen,schema,data,errsCount,it}=cxt;if(!errsCount)throw new Error("ajv implementation error");let{allErrors,props}=it;props instanceof codegen_1.Name?gen.if((0,codegen_1._)`${props} !== true`,()=>gen.forIn("key",data,key=>gen.if(unevaluatedDynamic(props,key),()=>unevaluatedPropCode(key)))):props!==!0&&gen.forIn("key",data,key=>props===void 0?unevaluatedPropCode(key):gen.if(unevaluatedStatic(props,key),()=>unevaluatedPropCode(key))),it.props=!0,cxt.ok((0,codegen_1._)`${errsCount} === ${names_1.default.errors}`);function unevaluatedPropCode(key){if(schema===!1){cxt.setParams({unevaluatedProperty:key}),cxt.error(),allErrors||gen.break();return}if(!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.name("valid");cxt.subschema({keyword:"unevaluatedProperties",dataProp:key,dataPropType:util_1.Type.Str},valid),allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())}}function unevaluatedDynamic(evaluatedProps,key){return(0,codegen_1._)`!${evaluatedProps} || !${evaluatedProps}[${key}]`}function unevaluatedStatic(evaluatedProps,key){let ps=[];for(let p in evaluatedProps)evaluatedProps[p]===!0&&ps.push((0,codegen_1._)`${key} !== ${p}`);return(0,codegen_1.and)(...ps)}}};exports.default=def})),require_unevaluatedItems2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let codegen_1=require_codegen2(),util_1=require_util2(),def={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:{message:({params:{len}})=>(0,codegen_1.str)`must NOT have more than ${len} items`,params:({params:{len}})=>(0,codegen_1._)`{limit: ${len}}`},code(cxt){let{gen,schema,data,it}=cxt,items=it.items||0;if(items===!0)return;let len=gen.const("len",(0,codegen_1._)`${data}.length`);if(schema===!1)cxt.setParams({len:items}),cxt.fail((0,codegen_1._)`${len} > ${items}`);else if(typeof schema=="object"&&!(0,util_1.alwaysValidSchema)(it,schema)){let valid=gen.var("valid",(0,codegen_1._)`${len} <= ${items}`);gen.if((0,codegen_1.not)(valid),()=>validateItems(valid,items)),cxt.ok(valid)}it.items=!0;function validateItems(valid,from){gen.forRange("i",from,len,i=>{cxt.subschema({keyword:"unevaluatedItems",dataProp:i,dataPropType:util_1.Type.Num},valid),it.allErrors||gen.if((0,codegen_1.not)(valid),()=>gen.break())})}}};exports.default=def})),require_unevaluated$12=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let unevaluatedProperties_1=require_unevaluatedProperties2(),unevaluatedItems_1=require_unevaluatedItems2(),unevaluated=[unevaluatedProperties_1.default,unevaluatedItems_1.default];exports.default=unevaluated})),require_schema$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/schema",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0,"https://json-schema.org/draft/2019-09/vocab/applicator":!0,"https://json-schema.org/draft/2019-09/vocab/validation":!0,"https://json-schema.org/draft/2019-09/vocab/meta-data":!0,"https://json-schema.org/draft/2019-09/vocab/format":!1,"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format"},{$ref:"meta/content"}],type:["object","boolean"],properties:{definitions:{$comment:"While no longer an official keyword as it is replaced by $defs, this keyword is retained in the meta-schema to prevent incompatible extensions as it remains in common use.",type:"object",additionalProperties:{$recursiveRef:"#"},default:{}},dependencies:{$comment:'"dependencies" is no longer a keyword, but schema authors should avoid redefining it to facilitate a smooth transition to "dependentSchemas" and "dependentRequired"',type:"object",additionalProperties:{anyOf:[{$recursiveRef:"#"},{$ref:"meta/validation#/$defs/stringArray"}]}}}}})),require_applicator$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/applicator":!0},$recursiveAnchor:!0,title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{additionalItems:{$recursiveRef:"#"},unevaluatedItems:{$recursiveRef:"#"},items:{anyOf:[{$recursiveRef:"#"},{$ref:"#/$defs/schemaArray"}]},contains:{$recursiveRef:"#"},additionalProperties:{$recursiveRef:"#"},unevaluatedProperties:{$recursiveRef:"#"},properties:{type:"object",additionalProperties:{$recursiveRef:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$recursiveRef:"#"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$recursiveRef:"#"}},propertyNames:{$recursiveRef:"#"},if:{$recursiveRef:"#"},then:{$recursiveRef:"#"},else:{$recursiveRef:"#"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$recursiveRef:"#"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$recursiveRef:"#"}}}}})),require_content$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/content",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/content":!0},$recursiveAnchor:!0,title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentMediaType:{type:"string"},contentEncoding:{type:"string"},contentSchema:{$recursiveRef:"#"}}}})),require_core$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/core",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/core":!0},$recursiveAnchor:!0,title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{type:"string",format:"uri"},$anchor:{type:"string",pattern:"^[A-Za-z][-A-Za-z0-9.:_]*$"},$ref:{type:"string",format:"uri-reference"},$recursiveRef:{type:"string",format:"uri-reference"},$recursiveAnchor:{type:"boolean",default:!1},$vocabulary:{type:"object",propertyNames:{type:"string",format:"uri"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$recursiveRef:"#"},default:{}}}}})),require_format2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/format",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/format":!0},$recursiveAnchor:!0,title:"Format vocabulary meta-schema",type:["object","boolean"],properties:{format:{type:"string"}}}})),require_meta_data$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/meta-data":!0},$recursiveAnchor:!0,title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}})),require_validation$12=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://json-schema.org/draft/2019-09/meta/validation",$vocabulary:{"https://json-schema.org/draft/2019-09/vocab/validation":!0},$recursiveAnchor:!0,title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}},const:!0,enum:{type:"array",items:!0},type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}})),require_json_schema_2019_092=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let metaSchema=require_schema$12(),applicator=require_applicator$12(),content=require_content$12(),core=require_core$12(),format=require_format2(),metadata=require_meta_data$12(),validation=require_validation$12(),META_SUPPORT_DATA=["/properties"];function addMetaSchema2019($data){return[metaSchema,applicator,content,core,with$data(this,format),metadata,with$data(this,validation)].forEach(sch=>this.addMetaSchema(sch,void 0,!1)),this;function with$data(ajv,sch){return $data?ajv.$dataMetaSchema(sch,META_SUPPORT_DATA):sch}}exports.default=addMetaSchema2019})),require__20192=__commonJSMin2(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv2019=void 0;let core_1=require_core$32(),draft7_1=require_draft72(),dynamic_1=require_dynamic2(),next_1=require_next2(),unevaluated_1=require_unevaluated$12(),discriminator_1=require_discriminator2(),json_schema_2019_09_1=require_json_schema_2019_092(),META_SCHEMA_ID="https://json-schema.org/draft/2019-09/schema";var Ajv2019=class extends core_1.default{constructor(opts={}){super({...opts,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),this.addVocabulary(dynamic_1.default),draft7_1.default.forEach(v=>this.addVocabulary(v)),this.addVocabulary(next_1.default),this.addVocabulary(unevaluated_1.default),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data,meta:meta2}=this.opts;meta2&&(json_schema_2019_09_1.default.call(this,$data),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv2019=Ajv2019,module.exports=exports=Ajv2019,module.exports.Ajv2019=Ajv2019,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv2019;var validate_1=require_validate2();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen2();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error2();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error2();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_draft20202=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let core_1=require_core$22(),validation_1=require_validation$22(),applicator_1=require_applicator$22(),dynamic_1=require_dynamic2(),next_1=require_next2(),unevaluated_1=require_unevaluated$12(),format_1=require_format$12(),metadata_1=require_metadata2(),draft2020Vocabularies=[dynamic_1.default,core_1.default,validation_1.default,(0,applicator_1.default)(!0),format_1.default,metadata_1.metadataVocabulary,metadata_1.contentVocabulary,next_1.default,unevaluated_1.default];exports.default=draft2020Vocabularies})),require_schema2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}})),require_applicator2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}})),require_unevaluated2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}})),require_content2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}})),require_core2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}})),require_format_annotation2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}})),require_meta_data2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}})),require_validation2=__commonJSMin2(((exports,module)=>{module.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}})),require_json_schema_2020_122=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0});let metaSchema=require_schema2(),applicator=require_applicator2(),unevaluated=require_unevaluated2(),content=require_content2(),core=require_core2(),format=require_format_annotation2(),metadata=require_meta_data2(),validation=require_validation2(),META_SUPPORT_DATA=["/properties"];function addMetaSchema2020($data){return[metaSchema,applicator,unevaluated,content,core,with$data(this,format),metadata,with$data(this,validation)].forEach(sch=>this.addMetaSchema(sch,void 0,!1)),this;function with$data(ajv,sch){return $data?ajv.$dataMetaSchema(sch,META_SUPPORT_DATA):sch}}exports.default=addMetaSchema2020})),require__20202=__commonJSMin2(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.MissingRefError=exports.ValidationError=exports.CodeGen=exports.Name=exports.nil=exports.stringify=exports.str=exports._=exports.KeywordCxt=exports.Ajv2020=void 0;let core_1=require_core$32(),draft2020_1=require_draft20202(),discriminator_1=require_discriminator2(),json_schema_2020_12_1=require_json_schema_2020_122(),META_SCHEMA_ID="https://json-schema.org/draft/2020-12/schema";var Ajv2020=class extends core_1.default{constructor(opts={}){super({...opts,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),draft2020_1.default.forEach(v=>this.addVocabulary(v)),this.opts.discriminator&&this.addKeyword(discriminator_1.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data,meta:meta2}=this.opts;meta2&&(json_schema_2020_12_1.default.call(this,$data),this.refs["http://json-schema.org/schema"]=META_SCHEMA_ID)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(META_SCHEMA_ID)?META_SCHEMA_ID:void 0)}};exports.Ajv2020=Ajv2020,module.exports=exports=Ajv2020,module.exports.Ajv2020=Ajv2020,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Ajv2020;var validate_1=require_validate2();Object.defineProperty(exports,"KeywordCxt",{enumerable:!0,get:function(){return validate_1.KeywordCxt}});var codegen_1=require_codegen2();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return codegen_1._}}),Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return codegen_1.str}}),Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return codegen_1.stringify}}),Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return codegen_1.nil}}),Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return codegen_1.Name}}),Object.defineProperty(exports,"CodeGen",{enumerable:!0,get:function(){return codegen_1.CodeGen}});var validation_error_1=require_validation_error2();Object.defineProperty(exports,"ValidationError",{enumerable:!0,get:function(){return validation_error_1.default}});var ref_error_1=require_ref_error2();Object.defineProperty(exports,"MissingRefError",{enumerable:!0,get:function(){return ref_error_1.default}})})),require_formats2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatNames=exports.fastFormats=exports.fullFormats=void 0;function fmtDef(validate2,compare){return{validate:validate2,compare}}exports.fullFormats={date:fmtDef(date4,compareDate),time:fmtDef(getTime(!0),compareTime),"date-time":fmtDef(getDateTime(!0),compareDateTime),"iso-time":fmtDef(getTime(),compareIsoTime),"iso-date-time":fmtDef(getDateTime(),compareIsoDateTime),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte,int32:{type:"number",validate:validateInt32},int64:{type:"number",validate:validateInt64},float:{type:"number",validate:validateNumber},double:{type:"number",validate:validateNumber},password:!0,binary:!0},exports.fastFormats={...exports.fullFormats,date:fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,compareDate),time:fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareTime),"date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareDateTime),"iso-time":fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoTime),"iso-date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoDateTime),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},exports.formatNames=Object.keys(exports.fullFormats);function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}let DATE=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,DAYS=[0,31,28,31,30,31,30,31,31,30,31,30,31];function date4(str2){let matches=DATE.exec(str2);if(!matches)return!1;let year=+matches[1],month=+matches[2],day=+matches[3];return month>=1&&month<=12&&day>=1&&day<=(month===2&&isLeapYear(year)?29:DAYS[month])}function compareDate(d1,d2){if(d1&&d2)return d1>d2?1:d1<d2?-1:0}let TIME=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function getTime(strictTimeZone){return function(str2){let matches=TIME.exec(str2);if(!matches)return!1;let hr=+matches[1],min=+matches[2],sec=+matches[3],tz=matches[4],tzSign=matches[5]==="-"?-1:1,tzH=+(matches[6]||0),tzM=+(matches[7]||0);if(tzH>23||tzM>59||strictTimeZone&&!tz)return!1;if(hr<=23&&min<=59&&sec<60)return!0;let utcMin=min-tzM*tzSign,utcHr=hr-tzH*tzSign-(utcMin<0?1:0);return(utcHr===23||utcHr===-1)&&(utcMin===59||utcMin===-1)&&sec<61}}function compareTime(s1,s2){if(!(s1&&s2))return;let t1=new Date("2020-01-01T"+s1).valueOf(),t2=new Date("2020-01-01T"+s2).valueOf();if(t1&&t2)return t1-t2}function compareIsoTime(t1,t2){if(!(t1&&t2))return;let a1=TIME.exec(t1),a2=TIME.exec(t2);if(a1&&a2)return t1=a1[1]+a1[2]+a1[3],t2=a2[1]+a2[2]+a2[3],t1>t2?1:t1<t2?-1:0}let DATE_TIME_SEPARATOR=/t|\s/i;function getDateTime(strictTimeZone){let time3=getTime(strictTimeZone);return function(str2){let dateTime=str2.split(DATE_TIME_SEPARATOR);return dateTime.length===2&&date4(dateTime[0])&&time3(dateTime[1])}}function compareDateTime(dt1,dt2){if(!(dt1&&dt2))return;let d1=new Date(dt1).valueOf(),d2=new Date(dt2).valueOf();if(d1&&d2)return d1-d2}function compareIsoDateTime(dt1,dt2){if(!(dt1&&dt2))return;let[d1,t1]=dt1.split(DATE_TIME_SEPARATOR),[d2,t2]=dt2.split(DATE_TIME_SEPARATOR),res=compareDate(d1,d2);if(res!==void 0)return res||compareTime(t1,t2)}let NOT_URI_FRAGMENT=/\/|:/,URI=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function uri(str2){return NOT_URI_FRAGMENT.test(str2)&&URI.test(str2)}let BYTE=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function byte(str2){return BYTE.lastIndex=0,BYTE.test(str2)}let MIN_INT32=-(2**31),MAX_INT32=2**31-1;function validateInt32(value){return Number.isInteger(value)&&value<=MAX_INT32&&value>=MIN_INT32}function validateInt64(value){return Number.isInteger(value)}function validateNumber(){return!0}let Z_ANCHOR=/[^\\]\\Z/;function regex(str2){if(Z_ANCHOR.test(str2))return!1;try{return new RegExp(str2),!0}catch{return!1}}})),require_limit2=__commonJSMin2((exports=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatLimitDefinition=void 0;let ajv_1=require_ajv2(),codegen_1=require_codegen2(),ops=codegen_1.operators,KWDs={formatMaximum:{okStr:"<=",ok:ops.LTE,fail:ops.GT},formatMinimum:{okStr:">=",ok:ops.GTE,fail:ops.LT},formatExclusiveMaximum:{okStr:"<",ok:ops.LT,fail:ops.GTE},formatExclusiveMinimum:{okStr:">",ok:ops.GT,fail:ops.LTE}},error2={message:({keyword,schemaCode})=>(0,codegen_1.str)`should be ${KWDs[keyword].okStr} ${schemaCode}`,params:({keyword,schemaCode})=>(0,codegen_1._)`{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`};exports.formatLimitDefinition={keyword:Object.keys(KWDs),type:"string",schemaType:"string",$data:!0,error:error2,code(cxt){let{gen,data,schemaCode,keyword,it}=cxt,{opts,self}=it;if(!opts.validateFormats)return;let fCxt=new ajv_1.KeywordCxt(it,self.RULES.all.format.definition,"format");fCxt.$data?validate$DataFormat():validateFormat();function validate$DataFormat(){let fmts=gen.scopeValue("formats",{ref:self.formats,code:opts.code.formats}),fmt=gen.const("fmt",(0,codegen_1._)`${fmts}[${fCxt.schemaCode}]`);cxt.fail$data((0,codegen_1.or)((0,codegen_1._)`typeof ${fmt} != "object"`,(0,codegen_1._)`${fmt} instanceof RegExp`,(0,codegen_1._)`typeof ${fmt}.compare != "function"`,compareCode(fmt)))}function validateFormat(){let format=fCxt.schema,fmtDef=self.formats[format];if(!fmtDef||fmtDef===!0)return;if(typeof fmtDef!="object"||fmtDef instanceof RegExp||typeof fmtDef.compare!="function")throw new Error(`"${keyword}": format "${format}" does not define "compare" function`);let fmt=gen.scopeValue("formats",{key:format,ref:fmtDef,code:opts.code.formats?(0,codegen_1._)`${opts.code.formats}${(0,codegen_1.getProperty)(format)}`:void 0});cxt.fail$data(compareCode(fmt))}function compareCode(fmt){return(0,codegen_1._)`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword].fail} 0`}},dependencies:["format"]};let formatLimitPlugin=ajv=>(ajv.addKeyword(exports.formatLimitDefinition),ajv);exports.default=formatLimitPlugin})),require_dist2=__commonJSMin2(((exports,module)=>{Object.defineProperty(exports,"__esModule",{value:!0});let formats_1=require_formats2(),limit_1=require_limit2(),codegen_1=require_codegen2(),fullName=new codegen_1.Name("fullFormats"),fastName=new codegen_1.Name("fastFormats"),formatsPlugin=(ajv,opts={keywords:!0})=>{if(Array.isArray(opts))return addFormats3(ajv,opts,formats_1.fullFormats,fullName),ajv;let[formats,exportName]=opts.mode==="fast"?[formats_1.fastFormats,fastName]:[formats_1.fullFormats,fullName];return addFormats3(ajv,opts.formats||formats_1.formatNames,formats,exportName),opts.keywords&&(0,limit_1.default)(ajv),ajv};formatsPlugin.get=(name2,mode="full")=>{let f2=(mode==="fast"?formats_1.fastFormats:formats_1.fullFormats)[name2];if(!f2)throw new Error(`Unknown format "${name2}"`);return f2};function addFormats3(ajv,list,fs,exportName){var _a3,_b;(_a3=(_b=ajv.opts.code).formats)!==null&&_a3!==void 0||(_b.formats=(0,codegen_1._)`require("ajv-formats/dist/formats").${exportName}`);for(let f2 of list)ajv.addFormat(f2,fs[f2])}module.exports=exports=formatsPlugin,Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=formatsPlugin})),import_ajv2=require_ajv2(),import__20192=require__20192(),import__20202=require__20202(),import_dist2=__toESM2(require_dist2(),1),addFormats2=import_dist2.default;function createDefaultAjvInstance2(engineClass){let ajv=new engineClass({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return addFormats2(ajv),ajv}var AjvJsonSchemaValidator2=class{_ajv;_ajvDraft7;_ajv2019;_userAjv;constructor(ajv){this._userAjv=ajv!==void 0,this._ajv=ajv}get ajv(){return this._ajv??=createDefaultAjvInstance2(import__20202.Ajv2020)}_engineFor(schema){if(this._userAjv)return this.ajv;let dialect=declaredDialect2(schema,"pass a pre-configured Ajv instance to AjvJsonSchemaValidator(ajv) to validate other dialects.");return dialect==="2020-12"?this.ajv:dialect==="2019-09"?this._ajv2019??=createDefaultAjvInstance2(import__20192.Ajv2019):this._ajvDraft7??=createDefaultAjvInstance2(import_ajv2.Ajv)}getValidator(schema){let engine=this._engineFor(schema),ajvValidator="$id"in schema&&typeof schema.$id=="string"?engine.getSchema(schema.$id)??engine.compile(schema):engine.compile(schema);return input=>ajvValidator(input)?{valid:!0,data:input,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:engine.errorsText(ajvValidator.errors)}}},Ajv2=import_ajv2.Ajv;import process2 from"node:process";var COMPLETABLE_SYMBOL=Symbol.for("mcp.completable");function isCompletable(schema){return!!schema&&typeof schema=="object"&&COMPLETABLE_SYMBOL in schema}function getCompleter(schema){return schema[COMPLETABLE_SYMBOL]?.complete}var DEFAULT_SSE_KEEP_ALIVE_MS=15e3,MAX_TIMER_DELAY_MS=2**31-1;function armSseKeepAlive(intervalMs,onTick){if(!Number.isFinite(intervalMs)||intervalMs<1)return;let timer=setInterval(onTick,Math.min(intervalMs,MAX_TIMER_DELAY_MS));return timer.unref?.(),timer}var readClassification,PerRequestHTTPServerTransport=class{static{readClassification=transport=>transport._classification}onclose;onerror;onmessage;_classification;_responseMode;_started=!1;_used=!1;_closed=!1;_terminalDelivered=!1;_dispatchWindowOpen=!1;_requestId;_deferredResponse;_sse;_abortCleanup;_keepAliveMs;constructor(options){this._classification=options.classification,this._responseMode=options.responseMode??"auto",this._keepAliveMs=options.keepAliveMs??DEFAULT_SSE_KEEP_ALIVE_MS}async start(){if(this._started)throw new Error("PerRequestHTTPServerTransport is already started");this._started=!0}async handleMessage(message,extra){if(this._used)throw new Error("PerRequestHTTPServerTransport serves exactly one exchange; construct a new transport per request");if(!this._started||this.onmessage===void 0)throw new Error("PerRequestHTTPServerTransport is not connected: connect a server to this transport before handling a message");if(this._closed)throw new Error("PerRequestHTTPServerTransport is closed");this._used=!0;let signal=extra?.request?.signal;if(signal?.aborted)throw await this.close(),new SdkError2(SdkErrorCode2.ConnectionClosed,"The request was aborted before it could be handled");let messageExtra={classification:this._classification,...extra?.request!==void 0&&{request:extra.request},...extra?.authInfo!==void 0&&{authInfo:extra.authInfo}};if(isJSONRPCRequest2(message)){this._requestId=message.id;let resolve,reject,promise=new Promise((promiseResolve,promiseReject)=>{resolve=promiseResolve,reject=promiseReject});if(this._deferredResponse={promise,resolve,reject,settled:!1},signal!==void 0){let onAbort=()=>{this.close()};signal.addEventListener("abort",onAbort,{once:!0}),this._abortCleanup=()=>signal.removeEventListener("abort",onAbort)}this._dispatchWindowOpen=!0;try{this.onmessage(message,messageExtra)}finally{this._dispatchWindowOpen=!1}return this._responseMode==="sse"&&!this._closed&&!this._deferredResponse.settled&&this.upgradeToSse(),promise}return this.onmessage(message,messageExtra),new Response(null,{status:202})}async send(message,options){if(this._closed)return;let isResponse=isJSONRPCResultResponse2(message)||isJSONRPCErrorResponse2(message),relatedId=isResponse?message.id:options?.relatedRequestId;if(this._requestId===void 0||relatedId===void 0||relatedId!==this._requestId){isResponse&&this.onerror?.(new Error(`Received a response for an unknown request id: ${String(message.id)}`));return}if(isResponse){if(this._terminalDelivered)return;this._terminalDelivered=!0;let errorCode=isJSONRPCErrorResponse2(message)?message.error.code:void 0,ladderStatus=errorCode!==void 0&&(this._dispatchWindowOpen||errorCode===ProtocolErrorCode2.MissingRequiredClientCapability)?LADDER_ERROR_HTTP_STATUS2[errorCode]:void 0;if(ladderStatus!==void 0&&this._sse===void 0){this.settleResponse(Response.json(message,{status:ladderStatus,headers:{"Content-Type":"application/json"}})),queueMicrotask(()=>{this.close()});return}if(this._sse!==void 0||this._responseMode==="sse"){this._sse===void 0&&this.upgradeToSse(),this.writeMessageFrame(message),this.finalizeStream();return}this.settleResponse(Response.json(message,{status:200,headers:{"Content-Type":"application/json"}})),queueMicrotask(()=>{this.close()});return}this._responseMode!=="json"&&(this._sse===void 0&&this.upgradeToSse(),this.writeMessageFrame(message))}writeCommentFrame(comment){if(this._closed||this._sse===void 0||this._sse.closed)return;let frame=comment.split(`
|
|
76
|
+
`).map(line=>`: ${line}`).join(`
|
|
77
|
+
`);this.writeFrame(`${frame}
|
|
78
|
+
|
|
79
|
+
`)}async close(){if(!this._closed){if(this._closed=!0,this._abortCleanup?.(),this._abortCleanup=void 0,this._sse?.keepAliveTimer!==void 0&&clearInterval(this._sse.keepAliveTimer),this._sse!==void 0&&!this._sse.closed){this._sse.closed=!0;try{this._sse.controller.close()}catch{}}this._deferredResponse!==void 0&&!this._deferredResponse.settled&&(this._deferredResponse.settled=!0,this._deferredResponse.reject(new SdkError2(SdkErrorCode2.ConnectionClosed,"Connection closed before a response was produced"))),this.onclose?.()}}settleResponse(response){this._deferredResponse===void 0||this._deferredResponse.settled||(this._deferredResponse.settled=!0,this._deferredResponse.resolve(response))}upgradeToSse(){let controller,readable=new ReadableStream({start:streamController=>{controller=streamController},cancel:()=>{this.close()}});this._sse={controller,encoder:new TextEncoder,closed:!1},this._sse.keepAliveTimer=armSseKeepAlive(this._keepAliveMs,()=>this.writeCommentFrame("keepalive")),this.settleResponse(new Response(readable,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"}}))}finalizeStream(){if(this._sse?.keepAliveTimer!==void 0&&clearInterval(this._sse.keepAliveTimer),this._sse!==void 0&&!this._sse.closed){this._sse.closed=!0;try{this._sse.controller.close()}catch{}}queueMicrotask(()=>{this.close()})}writeMessageFrame(message){this.writeFrame(`event: message
|
|
80
|
+
data: ${JSON.stringify(message)}
|
|
81
|
+
|
|
82
|
+
`)}writeFrame(frame){if(!(this._sse===void 0||this._sse.closed))try{this._sse.controller.enqueue(this._sse.encoder.encode(frame))}catch(error2){this.onerror?.(new Error(`Failed to write to the response stream: ${error2}`))}}};function perRequestClassificationOf(transport){return transport instanceof PerRequestHTTPServerTransport?readClassification(transport):void 0}function supportsScopeChallengeResolver(transport){return typeof transport=="object"&&transport!==null&&"setScopeChallengeResolver"in transport&&typeof transport.setScopeChallengeResolver=="function"}var DEFAULT_LEGACY_SHIM_MAX_ROUNDS=8,DEFAULT_LEGACY_SHIM_ROUND_TIMEOUT_MS=6e5;function resolveLegacyShimOptions(options){if(options?.maxRounds!==void 0&&(!Number.isInteger(options.maxRounds)||options.maxRounds<1))throw new RangeError(`inputRequired.maxRounds must be a positive integer (got ${options.maxRounds})`);if(options?.roundTimeoutMs!==void 0&&(!Number.isFinite(options.roundTimeoutMs)||options.roundTimeoutMs<=0))throw new RangeError(`inputRequired.roundTimeoutMs must be a positive number (got ${options.roundTimeoutMs})`);return{maxRounds:options?.maxRounds??DEFAULT_LEGACY_SHIM_MAX_ROUNDS,roundTimeoutMs:options?.roundTimeoutMs??DEFAULT_LEGACY_SHIM_ROUND_TIMEOUT_MS,legacyShim:options?.legacyShim??!0}}function coerceEmbeddedInputRequest(method,key,entry){if(entry===null||typeof entry!="object"||typeof entry.method!="string")throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an invalid input request '${key}': each inputRequests entry must be an embedded elicitation/create, sampling/createMessage, or roots/list request`);let embedded=entry,required2=requiredClientCapabilitiesForInputRequest(embedded);if(required2===void 0)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input request '${key}' of kind '${embedded.method}', which is not an embedded request the 2026-07-28 revision defines`);return{embedded,required:required2}}function syntheticElicitationId(){let webCrypto=globalThis.crypto;if(webCrypto?.randomUUID!==void 0)return webCrypto.randomUUID();let bytes=new Uint8Array(16);webCrypto.getRandomValues(bytes),bytes[6]=bytes[6]&15|64,bytes[8]=bytes[8]&63|128;let hex=[...bytes].map(byte=>byte.toString(16).padStart(2,"0")).join("");return`${hex.slice(0,8)}-${hex.slice(8,12)}-${hex.slice(12,16)}-${hex.slice(16,20)}-${hex.slice(20)}`}function legacyShimFailure(method,message){if(method==="tools/call")return{content:[{type:"text",text:message}],isError:!0};throw new ProtocolError3(ProtocolErrorCode2.InternalError,message)}var LegacyInputRequiredShim=class{constructor(_host){this._host=_host}async fulfill(method,handler,request,ctx,firstResult){let{maxRounds,roundTimeoutMs}=this._host,outerSignal=ctx.mcpReq.signal,current=firstResult,round=0;for(;;){if(round+=1,round>maxRounds)return legacyShimFailure(method,inputRequiredRoundsExceededMessage2(method,maxRounds));let inputRequests=current.inputRequests,hasInputRequests=inputRequests!=null&&Object.keys(inputRequests).length>0,requestState=typeof current.requestState=="string"?current.requestState:void 0;if(!hasInputRequests&&requestState===void 0)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input-required result with neither inputRequests nor requestState (every InputRequiredResult must include at least one of the two)`);let responses;if(hasInputRequests){let declared=this._host.resolvedClientCapabilities(ctx),coerced=[];for(let[key,entry]of Object.entries(inputRequests)){let{embedded,required:required2}=coerceEmbeddedInputRequest(method,key,entry);if(embedded.method!=="roots/list"&&embedded.params===void 0)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input request '${key}' of kind '${embedded.method}' without params`);if(missingClientCapabilities(required2,declared)!==void 0)return legacyShimFailure(method,`Cannot request input '${key}' (${embedded.method}): the client on this 2025-era connection did not declare the required capability${declared===void 0?" (no client capabilities are available on this connection \u2014 per-request legacy serving cannot receive server-to-client requests)":""}`);coerced.push([key,embedded])}let roundAbort=linkedRoundAbort2(outerSignal);try{let legOptions={relatedRequestId:ctx.mcpReq.id,timeout:roundTimeoutMs,resetTimeoutOnProgress:!0,onprogress:()=>{},signal:roundAbort.signal},fulfilled=await Promise.all(coerced.map(async([key,embedded])=>{try{return[key,await this._dispatchLeg(embedded,legOptions)]}catch(error2){throw roundAbort.abort(error2),error2}}));responses=Object.fromEntries(fulfilled)}catch(error2){if(outerSignal.aborted)throw error2;return legacyShimFailure(method,`Fulfilling input required by '${method}' failed: ${error2 instanceof Error?error2.message:String(error2)}`)}finally{roundAbort.dispose()}}else await sleep2(REQUEST_STATE_ONLY_LEG_PACING_MS2,outerSignal);let ctxNext={...ctx,mcpReq:{...ctx.mcpReq,inputResponses:responses,droppedInputResponseKeys:void 0,requestState:requestStateAccessor2(requestState)}};if(requestState!==void 0){let decoded=await this._host.verifyRequestState(requestState,ctxNext,method);decoded!==void 0&&(ctxNext=withRequestStateValue(ctxNext,decoded))}let next=await handler(request,ctxNext);if(!isInputRequiredResult2(next))return next;current=next}}async _dispatchLeg(embedded,options){switch(embedded.method){case"elicitation/create":{let params=embedded.params;return params.mode==="url"&¶ms.elicitationId===void 0&&(params={...params,elicitationId:syntheticElicitationId()}),await this._host.sendElicitation(params,options)}case"sampling/createMessage":return await this._host.sendSampling(embedded.params,options);case"roots/list":return await this._host.listRoots(embedded.params,options)}}},INPUT_REQUIRED_CAPABLE_METHODS=new Set(["tools/call","prompts/get","resources/read"]),writeClientIdentity,installDiscoverHandler,readServerIdentity;function installModernOnlyHandlers(server,servedModernVersions){installDiscoverHandler(server,servedModernVersions)}function serverIdentityOf(server){return readServerIdentity(server)}var Server=class extends Protocol2{_clientCapabilities;_clientVersion;static{writeClientIdentity=(server,identity)=>{identity.clientCapabilities!==void 0&&(server._clientCapabilities=identity.clientCapabilities),identity.clientInfo!==void 0&&(server._clientVersion=identity.clientInfo)},installDiscoverHandler=(server,servedModernVersions)=>{let missing=servedModernVersions.filter(version2=>!server._supportedProtocolVersions.includes(version2));missing.length>0&&(server._supportedProtocolVersions=[...server._supportedProtocolVersions,...missing]),server.setRequestHandler("server/discover",()=>server._ondiscover())},readServerIdentity=server=>server._serverInfo}_capabilities;_instructions;_jsonSchemaValidator;_cacheHints;_requestStateVerify;_inputRequiredServing;_legacyShim;_boundFromTransport=!1;_legacyInputRequiredShim(){return this._legacyShim??=new LegacyInputRequiredShim({maxRounds:this._inputRequiredServing.maxRounds,roundTimeoutMs:this._inputRequiredServing.roundTimeoutMs,resolvedClientCapabilities:ctx=>this._inputRequestCapabilityView(ctx),verifyRequestState:(state,ctx,method)=>this._verifyRequestState(state,ctx,method),sendElicitation:(params,options)=>this._sendElicitationLeg(params,options,{validateAcceptedContent:!1}),sendSampling:(params,options)=>this.createMessage(params,options),listRoots:(params,options)=>this.listRoots(params,options)})}oninitialized;constructor(_serverInfo,options){if(super(options),this._serverInfo=_serverInfo,this._capabilities=options?.capabilities?{...options.capabilities}:{},this._instructions=options?.instructions,this._jsonSchemaValidator=options?.jsonSchemaValidator??new AjvJsonSchemaValidator2,this._requestStateVerify=options?.requestState?.verify,this._inputRequiredServing=resolveLegacyShimOptions(options?.inputRequired),options?.cacheHints!==void 0){for(let[operation,hint]of Object.entries(options.cacheHints))hint!==void 0&&assertValidCacheHint(hint,`cacheHints['${operation}']`);this._cacheHints=options.cacheHints}this.setRequestHandler("initialize",request=>this._oninitialize(request)),this.setNotificationHandler("notifications/initialized",()=>this.oninitialized?.()),modernProtocolVersions2(this._supportedProtocolVersions).length>0&&this.setRequestHandler("server/discover",()=>this._ondiscover()),this._capabilities.logging&&this._registerLoggingHandler()}async connect(transport){if(this.transport!==void 0)throw new SdkError2(SdkErrorCode2.AlreadyConnected,"Use a separate Server instance per connection: this instance is already connected to a transport. To connect it to a new transport, call close() first.");this._boundFromTransport&&(this._boundFromTransport=!1,this._negotiatedProtocolVersion=void 0);let revision=perRequestClassificationOf(transport)?.revision;revision!==void 0&&!this._servedModernEra()&&SUPPORTED_MODERN_PROTOCOL_VERSIONS2.includes(revision)&&modernProtocolVersions2(this._supportedProtocolVersions).includes(revision)&&(this._negotiatedProtocolVersion=revision,this._boundFromTransport=!0),await super.connect(transport)}_registerLoggingHandler(){this.setRequestHandler("logging/setLevel",async(request,ctx)=>{let transportSessionId=ctx.sessionId||ctx.http?.req?.headers.get("mcp-session-id")||void 0,{level}=request.params,parseResult=parseSchema2(LoggingLevelSchema,level);return parseResult.success&&this._loggingLevels.set(transportSessionId,parseResult.data),{}})}buildContext(ctx,transportInfo){let hasHttpInfo=ctx.http||transportInfo?.request||transportInfo?.closeSSEStream||transportInfo?.closeStandaloneSSEStream;return{...ctx,mcpReq:{...ctx.mcpReq,log:(level,data,logger)=>{if(!this._capabilities.logging)return Promise.resolve();let threshold;if(this._servedModernEra()){if(threshold=ctx.mcpReq.envelope?.[LOG_LEVEL_META_KEY],threshold===void 0)return Promise.resolve()}else threshold=this._loggingLevels.get(ctx.sessionId)??this._loggingLevels.get(void 0);return threshold!==void 0&&this.LOG_LEVEL_SEVERITY.get(level)<this.LOG_LEVEL_SEVERITY.get(threshold)?Promise.resolve():ctx.mcpReq.notify({method:"notifications/message",params:{level,data,logger}})},elicitInput:(params,options)=>this.elicitInput(params,options),requestSampling:(params,options)=>this.createMessage(params,options)},http:hasHttpInfo?{...ctx.http,req:transportInfo?.request,closeSSE:transportInfo?.closeSSEStream,closeStandaloneSSE:transportInfo?.closeStandaloneSSEStream}:void 0}}_loggingLevels=new Map;LOG_LEVEL_SEVERITY=new Map(LoggingLevelSchema.options.map((level,index)=>[level,index]));isMessageIgnored=(level,sessionId)=>{let currentLevel=this._loggingLevels.get(sessionId);return currentLevel?this.LOG_LEVEL_SEVERITY.get(level)<this.LOG_LEVEL_SEVERITY.get(currentLevel):!1};registerCapabilities(capabilities){if(this.transport)throw new SdkError2(SdkErrorCode2.AlreadyConnected,"Cannot register capabilities after connecting to transport");let hadLogging=!!this._capabilities.logging;this._capabilities=mergeCapabilities2(this._capabilities,capabilities),!hadLogging&&this._capabilities.logging&&this._registerLoggingHandler()}_wrapHandler(method,handler){if(method!=="tools/call"){let cacheHint=this._cacheHints?.[method],isInputRequiredCapable=INPUT_REQUIRED_CAPABLE_METHODS.has(method);return cacheHint===void 0&&!isInputRequiredCapable?async(request,ctx)=>{let result2=await handler(request,ctx);if(isInputRequiredResult2(result2))throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input-required result, but only tools/call, prompts/get and resources/read support input_required (protocol revision 2026-07-28)`);return result2}:async(request,ctx)=>{let result2=isInputRequiredCapable?await this._invokeInputRequiredCapableHandler(method,handler,request,ctx):await handler(request,ctx);if(isInputRequiredResult2(result2)){if(!isInputRequiredCapable)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input-required result, but only tools/call, prompts/get and resources/read support input_required (protocol revision 2026-07-28)`);return result2}return cacheHint===void 0?result2:attachCacheHintFallback(result2,cacheHint)}}return async(request,ctx)=>{let codec=codecForVersion2(this._negotiatedProtocolVersion),validatedRequest=codec.validateRequest("tools/call",request);if(!validatedRequest.ok)throw new ProtocolError3(validatedRequest.reason==="not-in-era"?ProtocolErrorCode2.InternalError:ProtocolErrorCode2.InvalidParams,validatedRequest.reason==="not-in-era"?"No wire schema for tools/call in the resolved era":`Invalid tools/call request: ${validatedRequest.message}`);let result2=await this._invokeInputRequiredCapableHandler("tools/call",handler,request,ctx);if(isInputRequiredResult2(result2))return result2;let normalizedResult=normalizeContentlessToolResult2(result2),validationResult=codec.validateResult("tools/call",normalizedResult);if(!validationResult.ok)throw new ProtocolError3(validationResult.reason==="not-in-era"?ProtocolErrorCode2.InternalError:ProtocolErrorCode2.InvalidParams,validationResult.reason==="not-in-era"?"No wire schema for tools/call in the resolved era":`Invalid tools/call result: ${validationResult.message}`);return validationResult.value}}_servedModernEra(){return this._negotiatedProtocolVersion!==void 0&&isModernProtocolVersion2(this._negotiatedProtocolVersion)}async _invokeInputRequiredCapableHandler(method,handler,request,ctx){let servedModern=this._servedModernEra(),rawRequestState=ctx.mcpReq.requestState();if(rawRequestState!==void 0&&typeof rawRequestState!="string")throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,"Invalid or expired requestState",{reason:"invalid_request_state"});let ctxForHandler=ctx;if(typeof rawRequestState=="string"){let decoded=await this._verifyRequestState(rawRequestState,ctx,method);decoded!==void 0&&(ctxForHandler=withRequestStateValue(ctx,decoded))}let result2;try{result2=await handler(request,ctxForHandler)}catch(error2){throw error2 instanceof ProtocolError3&&error2.code===ProtocolErrorCode2.UrlElicitationRequired&&servedModern?new ProtocolError3(ProtocolErrorCode2.InternalError,`URL elicitation cannot be signalled by throwing UrlElicitationRequiredError on protocol revision ${this._negotiatedProtocolVersion}: return inputRequired({ inputRequests: { \u2026: inputRequired.elicitUrl(...) } }) from the handler instead. The urlElicitationRequired error (-32042) of earlier revisions is not available on this revision.`):error2}if(!isInputRequiredResult2(result2))return result2;if(!servedModern){if(!this._inputRequiredServing.legacyShim)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input-required result, but this request is served on protocol revision ${this._negotiatedProtocolVersion??LATEST_PROTOCOL_VERSION}, which has no input_required vocabulary`);return await this._legacyInputRequiredShim().fulfill(method,handler,request,ctxForHandler,result2)}let inputRequests=result2.inputRequests,hasInputRequests=inputRequests!=null&&Object.keys(inputRequests).length>0,hasRequestState=typeof result2.requestState=="string";if(!hasInputRequests&&!hasRequestState)throw new ProtocolError3(ProtocolErrorCode2.InternalError,`Handler for ${method} returned an input-required result with neither inputRequests nor requestState (every InputRequiredResult must include at least one of the two)`);if(hasInputRequests){let declared=this._inputRequestCapabilityView(ctx);for(let[key,entry]of Object.entries(inputRequests)){let{embedded,required:required2}=coerceEmbeddedInputRequest(method,key,entry),missing=missingClientCapabilities(required2,declared);if(missing!==void 0)throw new MissingRequiredClientCapabilityError2({requiredCapabilities:missing},`Cannot request input '${key}' (${embedded.method}): the request's client capabilities do not declare the required capability`)}}return result2}async _verifyRequestState(state,ctx,method){if(this._requestStateVerify!==void 0)try{return await this._requestStateVerify(state,ctx)}catch(error2){throw this.onerror?.(new Error(`requestState verification rejected ${method}: ${error2 instanceof Error?error2.message:String(error2)}`)),new ProtocolError3(ProtocolErrorCode2.InvalidParams,"Invalid or expired requestState",{reason:"invalid_request_state"})}}_inputRequestCapabilityView(ctx){return this._servedModernEra()?ctx.mcpReq.envelope?.[CLIENT_CAPABILITIES_META_KEY]:this._clientCapabilities}_assertPushApiInServedEra(method){if(this._servedModernEra())throw new SdkError2(SdkErrorCode2.MethodNotSupportedByProtocolVersion,`Server-to-client requests are not available on protocol revision ${this._negotiatedProtocolVersion}: '${method}' cannot be sent while serving a request on that revision. Return inputRequired({ ... }) from the handler instead \u2014 the client fulfils the embedded requests and retries the original request (multi round-trip requests).`,{method,era:"2026-07-28"})}assertCapabilityForMethod(method){switch(method){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Client does not support sampling (required for ${method})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Client does not support elicitation (required for ${method})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Client does not support listing roots (required for ${method})`);break;case"ping":break}}assertNotificationCapability(method){switch(method){case"notifications/message":if(!this._capabilities.logging)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support logging (required for ${method})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support notifying about resources (required for ${method})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support notifying of tool list changes (required for ${method})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support notifying of prompt list changes (required for ${method})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Client does not support URL elicitation (required for ${method})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(method){switch(method){case"completion/complete":if(!this._capabilities.completions)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support completions (required for ${method})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support logging (required for ${method})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support prompts (required for ${method})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support resources (required for ${method})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,`Server does not support tools (required for ${method})`);break;case"ping":case"initialize":break}}async _oninitialize(request){let requestedVersion=request.params.protocolVersion;this._clientCapabilities=request.params.capabilities,this._clientVersion=request.params.clientInfo;let legacyVersions=legacyProtocolVersions2(this._supportedProtocolVersions),protocolVersion=legacyVersions.includes(requestedVersion)?requestedVersion:legacyVersions[0]??LATEST_PROTOCOL_VERSION;return this._negotiatedProtocolVersion=protocolVersion,this.transport?.setProtocolVersion?.(protocolVersion),{protocolVersion,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}_ondiscover(){return{supportedVersions:modernProtocolVersions2(this._supportedProtocolVersions),capabilities:discoverAdvertisedCapabilities(this.getCapabilities()),...this._instructions&&{instructions:this._instructions}}}_outboundServerInfo(){return this._serverInfo}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getNegotiatedProtocolVersion(){return this._negotiatedProtocolVersion}projectCallToolResult(result2,advertisedOutputSchema){return this._wireCodec().projectCallToolResult(result2,advertisedOutputSchema)}getCapabilities(){return this._capabilities}async ping(){return this._assertPushApiInServedEra("ping"),this.request({method:"ping"})}async createMessage(params,options){if(this._assertPushApiInServedEra("sampling/createMessage"),(params.tools||params.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,"Client does not support sampling tools capability.");if(params.messages.length>0){let lastMessage=params.messages.at(-1),lastContent=Array.isArray(lastMessage.content)?lastMessage.content:[lastMessage.content],hasToolResults=lastContent.some(c=>c.type==="tool_result"),previousMessage=params.messages.length>1?params.messages.at(-2):void 0,previousContent=previousMessage?Array.isArray(previousMessage.content)?previousMessage.content:[previousMessage.content]:[],hasPreviousToolUse=previousContent.some(c=>c.type==="tool_use");if(hasToolResults){if(lastContent.some(c=>c.type!=="tool_result"))throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,"The last message must contain only tool_result content if any is present");if(!hasPreviousToolUse)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,"tool_result blocks are not matching any tool_use from the previous message")}if(hasPreviousToolUse){let toolUseIds=new Set(previousContent.filter(c=>c.type==="tool_use").map(c=>c.id)),toolResultIds=new Set(lastContent.filter(c=>c.type==="tool_result").map(c=>c.toolUseId));if(toolUseIds.size!==toolResultIds.size||![...toolUseIds].every(id=>toolResultIds.has(id)))throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,"ids of tool_result blocks and tool_use blocks from previous message do not match")}}let hasTools=!!(params.tools||params.toolChoice),wide=await this.request({method:"sampling/createMessage",params},options),outcome=this._wireCodec().samplingResultVariant(hasTools,wide);if(!outcome.ok)throw new SdkError2(SdkErrorCode2.InvalidResult,`Invalid sampling/createMessage result: ${outcome.reason==="invalid"?outcome.message:outcome.reason}`);return outcome.value}async elicitInput(params,options){switch(this._assertPushApiInServedEra("elicitation/create"),params.mode??"form"){case"url":if(!this._clientCapabilities?.elicitation?.url)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,"Client does not support url elicitation.");break;case"form":if(!this._clientCapabilities?.elicitation?.form)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,"Client does not support form elicitation.");break}return this._sendElicitationLeg(params,options)}async _sendElicitationLeg(params,options,behavior){let mode=params.mode??"form",validateAcceptedContent=behavior?.validateAcceptedContent??!0;switch(mode){case"url":{let urlParams=params;return this.request({method:"elicitation/create",params:urlParams},options)}case"form":{let formParams=params.mode==="form"?params:{...params,mode:"form"},result2=await this.request({method:"elicitation/create",params:formParams},options);if(validateAcceptedContent&&result2.action==="accept"&&result2.content&&formParams.requestedSchema)try{let validationResult=this._jsonSchemaValidator.getValidator(formParams.requestedSchema)(result2.content);if(!validationResult.valid)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Elicitation response content does not match requested schema: ${validationResult.errorMessage}`)}catch(error2){throw error2 instanceof ProtocolError3?error2:new ProtocolError3(ProtocolErrorCode2.InternalError,`Error validating elicitation response: ${error2 instanceof Error?error2.message:String(error2)}`)}return result2}}}createElicitationCompletionNotifier(elicitationId,options){if(!this._clientCapabilities?.elicitation?.url)throw new SdkError2(SdkErrorCode2.CapabilityNotSupported,"Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId}},options)}async listRoots(params,options){return this._assertPushApiInServedEra("roots/list"),this.request({method:"roots/list",params},options)}async sendLoggingMessage(params,sessionId){if(this._capabilities.logging&&!this.isMessageIgnored(params.level,sessionId))return this.notification({method:"notifications/message",params})}async sendResourceUpdated(params){return this.notification({method:"notifications/resources/updated",params})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};function discoverAdvertisedCapabilities(capabilities){return{...capabilities}}function toolInputElementCount(value,max){let count=0,stack=[value];for(;stack.length>0;){let node2=stack.pop();if(!(node2===null||typeof node2!="object"))if(Array.isArray(node2))for(let child of node2){if(++count>max)return count;child!==null&&typeof child=="object"&&stack.push(child)}else for(let key in node2){if(!Object.prototype.hasOwnProperty.call(node2,key))continue;if(++count>max)return count;let child=node2[key];child!==null&&typeof child=="object"&&stack.push(child)}}return count}function resolveMaxToolInputElements(value){if(!(value===void 0||value===1/0)){if(typeof value!="number"||Number.isNaN(value)||value<1)throw new RangeError(`maxToolInputElements must be a number of at least 1, or Infinity, got ${String(value)}`);return value}}var McpServer=class{server;_maxToolInputElements;_registeredResources={};_registeredResourceTemplates={};_registeredTools={};_registeredPrompts={};_toolInputSchemaJson={};toolInputSchemaJson(name2){let tool=this._registeredTools[name2];if(!(tool===void 0||!tool.enabled)){if(Object.hasOwn(this._toolInputSchemaJson,name2))return this._toolInputSchemaJson[name2];if(tool.inputSchema===void 0)return EMPTY_OBJECT_JSON_SCHEMA;try{let json=standardSchemaToJsonSchema2(tool.inputSchema,"input");return this._toolInputSchemaJson[name2]=json,json}catch{return}}}constructor(serverInfo,options){this.server=new Server(serverInfo,options),this._maxToolInputElements=resolveMaxToolInputElements(options?.maxToolInputElements),options?.capabilities?.tools&&this.setToolRequestHandlers(),options?.capabilities?.resources&&this.setResourceRequestHandlers(),options?.capabilities?.prompts&&this.setPromptRequestHandlers()}async connect(transport){return supportsScopeChallengeResolver(transport)&&transport.setScopeChallengeResolver(context=>this.resolveScopeChallenge(context)),await this.server.connect(transport)}async close(){await this.server.close()}resolveScopeChallenge=context=>{switch(context.request.method){case"tools/call":{let toolName2=context.request.params?.name;if(typeof toolName2!="string")return;let tool=this._registeredTools[toolName2];return tool===void 0||!tool.enabled?void 0:tool.scopeChallenge?.(context)}case"resources/read":{let resourceUri=context.request.params?.uri;if(typeof resourceUri!="string")return;let uri;try{uri=new URL(resourceUri)}catch{return}let resource=this._registeredResources[uri.toString()];if(resource!==void 0)return resource.enabled?resource.scopeChallenge?.(context):void 0;for(let template of Object.values(this._registeredResourceTemplates))if(template.resourceTemplate.uriTemplate.match(uri.toString()))return template.enabled?template.scopeChallenge?.(context):void 0;return}case"prompts/get":{let promptName=context.request.params?.name;if(typeof promptName!="string")return;let prompt=this._registeredPrompts[promptName];return prompt===void 0||!prompt.enabled?void 0:prompt.scopeChallenge?.(context)}default:return}};_toolHandlersInitialized=!1;setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler("tools/list"),this.server.assertCanSetRequestHandler("tools/call"),this.server.registerCapabilities({tools:{listChanged:this.server.getCapabilities().tools?.listChanged??!0}}),this.server.setRequestHandler("tools/list",()=>({tools:Object.entries(this._registeredTools).filter(([,tool])=>tool.enabled).map(([name2,tool])=>{let toolDefinition={name:name2,title:tool.title,description:tool.description,inputSchema:tool.inputSchema?convertListedInputSchema(name2,tool.inputSchema):EMPTY_OBJECT_JSON_SCHEMA,annotations:tool.annotations,icons:tool.icons,execution:tool.execution,_meta:tool._meta};return tool.outputSchema&&(toolDefinition.outputSchema=standardSchemaToJsonSchema2(tool.outputSchema,"output")),toolDefinition})})),this.server.setRequestHandler("tools/call",async(request,ctx)=>{let tool=this._registeredTools[request.params.name];if(!tool)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Tool ${request.params.name} not found`);if(!tool.enabled)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Tool ${request.params.name} disabled`);try{let args=await this.validateToolInput(tool,request.params.arguments,request.params.name),result2=await this.executeToolHandler(tool,args,ctx);return await this.validateToolOutput(tool,result2,request.params.name),isInputRequiredResult2(result2)?result2:this.server.projectCallToolResult(result2,tool.outputSchemaJson)}catch(error2){if(error2 instanceof ProtocolError3&&error2.code===ProtocolErrorCode2.UrlElicitationRequired)throw error2;return this.createToolError(error2 instanceof Error?error2.message:String(error2))}}),this._toolHandlersInitialized=!0)}createToolError(errorMessage){return{content:[{type:"text",text:errorMessage}],isError:!0}}async validateToolInput(tool,args,toolName2){if(this._maxToolInputElements!==void 0&&toolInputElementCount(args,this._maxToolInputElements)>this._maxToolInputElements)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Invalid arguments for tool ${toolName2}: arguments contain more than the maximum of ${this._maxToolInputElements} elements`);if(!tool.inputSchema)return;let parseResult=await validateStandardSchema2(tool.inputSchema,args??{});if(!parseResult.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Input validation error: Invalid arguments for tool ${toolName2}: ${parseResult.error}`);return parseResult.data}async validateToolOutput(tool,result2,toolName2){if(!tool.outputSchema||isInputRequiredResult2(result2)||result2.isError)return;if(result2.structuredContent===void 0)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Output validation error: Tool ${toolName2} has an output schema but no structured content was provided`);let parseResult=await validateStandardSchema2(tool.outputSchema,result2.structuredContent);if(!parseResult.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Output validation error: Invalid structured content for tool ${toolName2}: ${parseResult.error}`)}async executeToolHandler(tool,args,ctx){return tool.executor(args,ctx)}_completionHandlerInitialized=!1;setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler("completion/complete"),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler("completion/complete",async request=>{switch(request.params.ref.type){case"ref/prompt":return assertCompleteRequestPrompt2(request),this.handlePromptCompletion(request,request.params.ref);case"ref/resource":return assertCompleteRequestResourceTemplate2(request),this.handleResourceCompletion(request,request.params.ref);default:throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Invalid completion reference: ${request.params.ref}`)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(request,ref){let prompt=this._registeredPrompts[ref.name];if(!prompt)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Prompt ${ref.name} not found`);if(!prompt.enabled)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Prompt ${ref.name} disabled`);if(!prompt.argsSchema)return EMPTY_COMPLETION_RESULT;let field=unwrapOptionalSchema(getSchemaShape(prompt.argsSchema)?.[request.params.argument.name]);if(!isCompletable(field))return EMPTY_COMPLETION_RESULT;let completer=getCompleter(field);return completer?createCompletionResult(await completer(request.params.argument.value,request.params.context)):EMPTY_COMPLETION_RESULT}async handleResourceCompletion(request,ref){let template=Object.values(this._registeredResourceTemplates).find(t=>t.resourceTemplate.uriTemplate.toString()===ref.uri);if(!template){if(this._registeredResources[ref.uri])return EMPTY_COMPLETION_RESULT;throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Resource template ${request.params.ref.uri} not found`)}let completer=template.resourceTemplate.completeCallback(request.params.argument.name);return completer?createCompletionResult(await completer(request.params.argument.value,request.params.context)):EMPTY_COMPLETION_RESULT}_resourceHandlersInitialized=!1;setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler("resources/list"),this.server.assertCanSetRequestHandler("resources/templates/list"),this.server.assertCanSetRequestHandler("resources/read"),this.server.registerCapabilities({resources:{listChanged:this.server.getCapabilities().resources?.listChanged??!0}}),this.server.setRequestHandler("resources/list",async(_request,ctx)=>{let resources=Object.entries(this._registeredResources).filter(([_,resource])=>resource.enabled).map(([uri,resource])=>({uri,name:resource.name,...resource.metadata})),templateResources=[];for(let template of Object.values(this._registeredResourceTemplates)){if(!template.resourceTemplate.listCallback)continue;let result2=await template.resourceTemplate.listCallback(ctx);for(let resource of result2.resources)templateResources.push({...template.metadata,...resource})}return{resources:[...resources,...templateResources]}}),this.server.setRequestHandler("resources/templates/list",async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([name2,template])=>({name:name2,uriTemplate:template.resourceTemplate.uriTemplate.toString(),...template.metadata}))})),this.server.setRequestHandler("resources/read",async(request,ctx)=>{let uri;try{uri=new URL(request.params.uri)}catch{throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Resource URI ${request.params.uri} is invalid`,{uri:request.params.uri,reason:"invalid_uri"})}let resource=this._registeredResources[uri.toString()];if(resource){if(!resource.enabled)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Resource ${uri} disabled`);return attachCacheHintFallback(await resource.readCallback(uri,ctx),resource.cacheHint)}for(let template of Object.values(this._registeredResourceTemplates)){let variables=template.resourceTemplate.uriTemplate.match(uri.toString());if(variables){if(!template.enabled)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Resource template ${template.resourceTemplate.uriTemplate} disabled`);return attachCacheHintFallback(await template.readCallback(uri,variables,ctx),template.cacheHint)}}throw new ResourceNotFoundError2(request.params.uri)}),this._resourceHandlersInitialized=!0)}_promptHandlersInitialized=!1;setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler("prompts/list"),this.server.assertCanSetRequestHandler("prompts/get"),this.server.registerCapabilities({prompts:{listChanged:this.server.getCapabilities().prompts?.listChanged??!0}}),this.server.setRequestHandler("prompts/list",()=>({prompts:Object.entries(this._registeredPrompts).filter(([,prompt])=>prompt.enabled).map(([name2,prompt])=>({name:name2,title:prompt.title,description:prompt.description,arguments:prompt.argsSchema?promptArgumentsFromStandardSchema(prompt.argsSchema):void 0,icons:prompt.icons,_meta:prompt._meta}))})),this.server.setRequestHandler("prompts/get",async(request,ctx)=>{let prompt=this._registeredPrompts[request.params.name];if(!prompt)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Prompt ${request.params.name} not found`);if(!prompt.enabled)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Prompt ${request.params.name} disabled`);return prompt.handler(request.params.arguments,ctx)}),this._promptHandlersInitialized=!0)}registerResource(name2,uriOrTemplate,config2,readCallback){let{cacheHint,scopeChallenge,...resourceMetadata}=config2,metadata=resourceMetadata;if(cacheHint!==void 0&&assertValidCacheHint(cacheHint,`resource ${name2}`),typeof uriOrTemplate=="string"){if(this._registeredResources[uriOrTemplate])throw new Error(`Resource ${uriOrTemplate} is already registered`);let registeredResource=this._createRegisteredResource(name2,config2.title,uriOrTemplate,metadata,scopeChallenge,readCallback);return cacheHint!==void 0&&(registeredResource.cacheHint=cacheHint),this.setResourceRequestHandlers(),this.sendResourceListChanged(),registeredResource}else{if(this._registeredResourceTemplates[name2])throw new Error(`Resource template ${name2} is already registered`);let registeredResourceTemplate=this._createRegisteredResourceTemplate(name2,config2.title,uriOrTemplate,metadata,scopeChallenge,readCallback);return cacheHint!==void 0&&(registeredResourceTemplate.cacheHint=cacheHint),this.setResourceRequestHandlers(),this.sendResourceListChanged(),registeredResourceTemplate}}_createRegisteredResource(name2,title,uri,metadata,scopeChallenge,readCallback){let registeredResource={name:name2,title,metadata,readCallback,scopeChallenge,enabled:!0,disable:()=>registeredResource.update({enabled:!1}),enable:()=>registeredResource.update({enabled:!0}),remove:()=>registeredResource.update({uri:null}),update:updates=>{updates.uri!==void 0&&updates.uri!==uri&&(delete this._registeredResources[uri],updates.uri&&(this._registeredResources[updates.uri]=registeredResource)),updates.name!==void 0&&(registeredResource.name=updates.name),updates.metadata!==void 0&&(registeredResource.metadata=updates.metadata),updates.title!==void 0&&(registeredResource.title=updates.title,registeredResource.metadata={...registeredResource.metadata,title:updates.title}),updates.callback!==void 0&&(registeredResource.readCallback=updates.callback),updates.scopeChallenge!==void 0&&(registeredResource.scopeChallenge=updates.scopeChallenge===null?void 0:updates.scopeChallenge),updates.enabled!==void 0&&(registeredResource.enabled=updates.enabled),this.sendResourceListChanged()}};return this._registeredResources[uri]=registeredResource,registeredResource}_createRegisteredResourceTemplate(name2,title,template,metadata,scopeChallenge,readCallback){let registeredResourceTemplate={resourceTemplate:template,title,metadata,readCallback,scopeChallenge,enabled:!0,disable:()=>registeredResourceTemplate.update({enabled:!1}),enable:()=>registeredResourceTemplate.update({enabled:!0}),remove:()=>registeredResourceTemplate.update({name:null}),update:updates=>{updates.name!==void 0&&updates.name!==name2&&(delete this._registeredResourceTemplates[name2],updates.name&&(this._registeredResourceTemplates[updates.name]=registeredResourceTemplate)),updates.template!==void 0&&(registeredResourceTemplate.resourceTemplate=updates.template),updates.metadata!==void 0&&(registeredResourceTemplate.metadata=updates.metadata),updates.title!==void 0&&(registeredResourceTemplate.title=updates.title,registeredResourceTemplate.metadata={...registeredResourceTemplate.metadata,title:updates.title}),updates.callback!==void 0&&(registeredResourceTemplate.readCallback=updates.callback),updates.scopeChallenge!==void 0&&(registeredResourceTemplate.scopeChallenge=updates.scopeChallenge===null?void 0:updates.scopeChallenge),updates.enabled!==void 0&&(registeredResourceTemplate.enabled=updates.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[name2]=registeredResourceTemplate;let variableNames=template.uriTemplate.variableNames;return Array.isArray(variableNames)&&variableNames.some(v=>!!template.completeCallback(v))&&this.setCompletionRequestHandler(),registeredResourceTemplate}_createRegisteredPrompt(name2,title,description,argsSchema,callback,icons,scopeChallenge,_meta){let currentArgsSchema=argsSchema,currentCallback=callback,registeredPrompt={title,description,argsSchema,icons,scopeChallenge,_meta,handler:createPromptHandler(name2,argsSchema,callback),enabled:!0,disable:()=>registeredPrompt.update({enabled:!1}),enable:()=>registeredPrompt.update({enabled:!0}),remove:()=>registeredPrompt.update({name:null}),update:updates=>{updates.name!==void 0&&updates.name!==name2&&(delete this._registeredPrompts[name2],updates.name&&(this._registeredPrompts[updates.name]=registeredPrompt)),updates.title!==void 0&&(registeredPrompt.title=updates.title),updates.description!==void 0&&(registeredPrompt.description=updates.description),updates.icons!==void 0&&(registeredPrompt.icons=updates.icons),updates.scopeChallenge!==void 0&&(registeredPrompt.scopeChallenge=updates.scopeChallenge===null?void 0:updates.scopeChallenge),updates._meta!==void 0&&(registeredPrompt._meta=updates._meta);let needsHandlerRegen=!1;updates.argsSchema!==void 0&&(registeredPrompt.argsSchema=updates.argsSchema,currentArgsSchema=updates.argsSchema,needsHandlerRegen=!0),updates.callback!==void 0&&(currentCallback=updates.callback,needsHandlerRegen=!0),needsHandlerRegen&&(registeredPrompt.handler=createPromptHandler(name2,currentArgsSchema,currentCallback)),updates.enabled!==void 0&&(registeredPrompt.enabled=updates.enabled),this.sendPromptListChanged()}};if(this._registeredPrompts[name2]=registeredPrompt,argsSchema){let shape=getSchemaShape(argsSchema);shape&&Object.values(shape).some(field=>isCompletable(unwrapOptionalSchema(field)))&&this.setCompletionRequestHandler()}return registeredPrompt}_createRegisteredTool(name2,title,description,inputSchema,outputSchema,annotations,icons,execution,scopeChallenge,_meta,handler){validateAndWarnToolName(name2);let currentHandler=handler,outputSchemaJson,registeredTool={title,description,inputSchema,outputSchema,get outputSchemaJson(){return outputSchemaJson??=convertOutputSchemaJson(registeredTool.outputSchema)},set outputSchemaJson(value){outputSchemaJson=value},annotations,icons,execution,scopeChallenge,_meta,handler,executor:createToolExecutor(inputSchema,handler),enabled:!0,disable:()=>registeredTool.update({enabled:!1}),enable:()=>registeredTool.update({enabled:!0}),remove:()=>registeredTool.update({name:null}),update:updates=>{updates.name!==void 0&&updates.name!==name2&&(typeof updates.name=="string"&&validateAndWarnToolName(updates.name),delete this._registeredTools[name2],delete this._toolInputSchemaJson[name2],updates.name&&(delete this._toolInputSchemaJson[updates.name],this._registeredTools[updates.name]=registeredTool,name2=updates.name)),updates.title!==void 0&&(registeredTool.title=updates.title),updates.description!==void 0&&(registeredTool.description=updates.description);let needsExecutorRegen=!1;updates.paramsSchema!==void 0&&(registeredTool.inputSchema=updates.paramsSchema,delete this._toolInputSchemaJson[name2],needsExecutorRegen=!0),updates.callback!==void 0&&(registeredTool.handler=updates.callback,currentHandler=updates.callback,needsExecutorRegen=!0),needsExecutorRegen&&(registeredTool.executor=createToolExecutor(registeredTool.inputSchema,currentHandler)),updates.outputSchema!==void 0&&(registeredTool.outputSchema=updates.outputSchema,registeredTool.outputSchemaJson=convertOutputSchemaJson(updates.outputSchema)),updates.annotations!==void 0&&(registeredTool.annotations=updates.annotations),updates.icons!==void 0&&(registeredTool.icons=updates.icons),updates.scopeChallenge!==void 0&&(registeredTool.scopeChallenge=updates.scopeChallenge===null?void 0:updates.scopeChallenge),updates._meta!==void 0&&(registeredTool._meta=updates._meta),updates.enabled!==void 0&&(registeredTool.enabled=updates.enabled),this.sendToolListChanged()}};return this._registeredTools[name2]=registeredTool,this.setToolRequestHandlers(),this.sendToolListChanged(),registeredTool}registerTool(name2,config2,cb){if(this._registeredTools[name2])throw new Error(`Tool ${name2} is already registered`);let{title,description,inputSchema,outputSchema,annotations,icons,scopeChallenge,_meta}=config2;return this._createRegisteredTool(name2,title,description,normalizeRawShapeSchema(inputSchema),normalizeRawShapeSchema(outputSchema),annotations,icons,void 0,scopeChallenge,_meta,cb)}registerPrompt(name2,config2,cb){if(this._registeredPrompts[name2])throw new Error(`Prompt ${name2} is already registered`);let{title,description,argsSchema,icons,scopeChallenge,_meta}=config2,registeredPrompt=this._createRegisteredPrompt(name2,title,description,normalizeRawShapeSchema(argsSchema),cb,icons,scopeChallenge,_meta);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),registeredPrompt}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(params,sessionId){return this.server.sendLoggingMessage(params,sessionId)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};function createToolExecutor(inputSchema,handler){if(inputSchema){let callback$1=handler;return async(args,ctx)=>callback$1(args,ctx)}let callback=handler;return async(_args,ctx)=>callback(ctx)}var EMPTY_OBJECT_JSON_SCHEMA={type:"object",properties:{}};function convertListedInputSchema(name2,inputSchema){let json=standardSchemaToJsonSchema2(inputSchema,"input"),scan=scanXMcpHeaderDeclarations2(json);return scan.valid||console.warn(`[mcp-sdk] tool '${name2}' carries an invalid x-mcp-header declaration and will be excluded by conforming Streamable HTTP clients: ${scan.reason}`),json}function convertOutputSchemaJson(outputSchema){if(outputSchema!==void 0)try{return standardSchemaToJsonSchema2(outputSchema,"output")}catch{return}}function createPromptHandler(name2,argsSchema,callback){if(argsSchema){let typedCallback=callback;return async(args,ctx)=>{let parseResult=await validateStandardSchema2(argsSchema,args??{});if(!parseResult.success)throw new ProtocolError3(ProtocolErrorCode2.InvalidParams,`Invalid arguments for prompt ${name2}: ${parseResult.error}`);return typedCallback(parseResult.data,ctx)}}else{let typedCallback=callback;return async(_args,ctx)=>typedCallback(ctx)}}function createCompletionResult(suggestions){return{completion:{values:suggestions.map(String).slice(0,100),total:suggestions.length,hasMore:suggestions.length>100}}}var EMPTY_COMPLETION_RESULT={completion:{values:[],hasMore:!1}};function getSchemaShape(schema){let candidate=schema;if(candidate.shape&&typeof candidate.shape=="object")return candidate.shape}function isOptionalSchema(schema){return schema?.type==="optional"}function unwrapOptionalSchema(schema){return isOptionalSchema(schema)?schema.def?.innerType??schema:schema}function listenFilterAccepts(filter,event){switch(event.kind){case"tools_list_changed":return filter.toolsListChanged===!0;case"prompts_list_changed":return filter.promptsListChanged===!0;case"resources_list_changed":return filter.resourcesListChanged===!0;case"resource_updated":return filter.resourceSubscriptions!==void 0&&filter.resourceSubscriptions.includes(event.uri)}}function honoredSubset(requested,capabilities){let honored={},allow=bit=>capabilities===void 0||bit===!0;return requested.toolsListChanged===!0&&allow(capabilities?.tools?.listChanged)&&(honored.toolsListChanged=!0),requested.promptsListChanged===!0&&allow(capabilities?.prompts?.listChanged)&&(honored.promptsListChanged=!0),requested.resourcesListChanged===!0&&allow(capabilities?.resources?.listChanged)&&(honored.resourcesListChanged=!0),requested.resourceSubscriptions!==void 0&&requested.resourceSubscriptions.length>0&&allow(capabilities?.resources?.subscribe)&&(honored.resourceSubscriptions=[...requested.resourceSubscriptions]),honored}var DEFAULT_MAX_SUBSCRIPTIONS=1024;function stampSubscriptionId(notification,subscriptionId){return{method:notification.method,params:{...notification.params,_meta:{...notification.params?._meta,[SUBSCRIPTION_ID_META_KEY]:subscriptionId}}}}function parseListenFilter(message){let outcome=codecForVersion2(MODERN_WIRE_REVISION2).validateRequest("subscriptions/listen",message);return outcome.ok?outcome.value.params?.notifications:void 0}var CHANGE_NOTIFICATION_METHODS=new Set(["notifications/tools/list_changed","notifications/prompts/list_changed","notifications/resources/list_changed","notifications/resources/updated"]),StdioListenRouter=class{_subs=new Map;_serverCapabilities;_serverInfo;constructor(_maxSubscriptions=DEFAULT_MAX_SUBSCRIPTIONS,serverCapabilities,serverInfo){this._maxSubscriptions=_maxSubscriptions,this._serverCapabilities=serverCapabilities,this._serverInfo=serverInfo}setServerCapabilities(capabilities,serverInfo){this._serverCapabilities=capabilities,serverInfo!==void 0&&(this._serverInfo=serverInfo)}has(id){return this._subs.has(id)}serve(message){if(this._serverCapabilities===void 0)throw new Error("StdioListenRouter.serve() called before setServerCapabilities(); refusing to honor a filter without capabilities");if(this._subs.size>=this._maxSubscriptions)return{jsonrpc:"2.0",id:message.id,error:{code:-32603,message:"Subscription limit reached"}};let filter=parseListenFilter(message);if(filter===void 0)return{jsonrpc:"2.0",id:message.id,error:{code:-32602,message:"Invalid params: 'notifications' is required and must be a valid SubscriptionFilter"}};let honored=honoredSubset(filter,this._serverCapabilities);return this._subs.set(message.id,honored),stampSubscriptionId({method:"notifications/subscriptions/acknowledged",params:{notifications:honored}},message.id)}cancel(id){return this._subs.delete(id)}routeOutbound(message){if(!CHANGE_NOTIFICATION_METHODS.has(message.method))return"passthrough";let uriParam=message.params?.uri,uri=typeof uriParam=="string"?uriParam:void 0,event=notificationToServerEvent(message.method,uri),out=[];for(let[subscriptionId,filter]of this._subs)listenFilterAccepts(filter,event)&&out.push(stampSubscriptionId({method:message.method,params:message.params??{}},subscriptionId));return out}teardownAll(){let out=[];for(let id of this._subs.keys())out.push({jsonrpc:"2.0",id,result:{resultType:"complete",_meta:{[SUBSCRIPTION_ID_META_KEY]:id,...this._serverInfo!==void 0&&{[SERVER_INFO_META_KEY]:this._serverInfo}}}});return this._subs.clear(),out}};function notificationToServerEvent(method,uri){switch(method){case"notifications/tools/list_changed":return{kind:"tools_list_changed"};case"notifications/prompts/list_changed":return{kind:"prompts_list_changed"};case"notifications/resources/list_changed":return{kind:"resources_list_changed"};default:return{kind:"resource_updated",uri:uri??""}}}var DEFAULT_MAX_REQUEST_BODY_SIZE=4*1024*1024;var swallowsErrorsAfterClose=Symbol("swallowsErrorsAfterClose"),StdioServerTransport=class{_readBuffer;_started=!1;_closed=!1;constructor(_stdin=process2.stdin,_stdout=process2.stdout,options){this._stdin=_stdin,this._stdout=_stdout,this._readBuffer=new ReadBuffer2({maxBufferSize:options?.maxBufferSize})}onclose;onerror;onmessage;_ondata=chunk=>{try{this._readBuffer.append(chunk),this.processReadBuffer()}catch(error2){this.onerror?.(error2),this.close().catch(()=>{})}};_onerror=error2=>{this.onerror?.(error2)};_onstdouterror=error2=>{this._closed||(this.onerror?.(error2),this.close().catch(()=>{}))};_onstdinclose=()=>{this.close().catch(()=>{})};async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0;for(let listener of this._stdout.listeners("error"))listener[swallowsErrorsAfterClose]&&this._stdout.off("error",listener);(this._stdin.readableEnded||this._stdin.destroyed)&&setImmediate(this._onstdinclose),this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror),this._stdin.on("end",this._onstdinclose),this._stdin.on("close",this._onstdinclose),this._stdout.on("error",this._onstdouterror)}processReadBuffer(){for(;;)try{let message=this._readBuffer.readMessage();if(message===null)break;this.onmessage?.(message)}catch(error2){this.onerror?.(error2)}}async close(){this._closed||(this._closed=!0,this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.off("end",this._onstdinclose),this._stdin.off("close",this._onstdinclose),this._onstdouterror[swallowsErrorsAfterClose]=!0,this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.())}send(message){return this._closed?Promise.reject(new Error("StdioServerTransport is closed")):new Promise((resolve,reject)=>{let json=serializeMessage2(message),settled=!1,onError=error2=>{settled||(settled=!0,this._stdout.off("error",onError),this._stdout.off("drain",onDrain),reject(error2))},onDrain=()=>{settled||(settled=!0,this._stdout.off("error",onError),this._stdout.off("drain",onDrain),resolve())};if(this._stdout.once("error",onError),this._stdout.write(json)){if(settled)return;settled=!0,this._stdout.off("error",onError),resolve()}else settled||this._stdout.once("drain",onDrain)})}},DISCARD_ANSWER_TIMEOUT_MS=3e3,StdioConnectionChannel=class{onclose;onerror;onmessage;_closed=!1;_pendingRequests=new Set;_drainWaiters=[];constructor(_wire,_onInstanceClose,_outboundIntercept){this._wire=_wire,this._onInstanceClose=_onInstanceClose,this._outboundIntercept=_outboundIntercept}async start(){}async send(message,options){if(isJSONRPCResultResponse2(message)||isJSONRPCErrorResponse2(message)){let{id}=message;id!==void 0&&this._settle(id)}if(!this._closed&&this._outboundIntercept?.(message)!=="handled")return this._wire.send(message,options)}setProtocolVersion=version2=>{this._wire.setProtocolVersion?.(version2)};deliver(message,extra){if(!this._closed){if(isJSONRPCRequest2(message))this._pendingRequests.add(message.id);else if(isJSONRPCNotification2(message)&&message.method==="notifications/cancelled"){let cancelledId=message.params?.requestId;cancelledId!==void 0&&this._settle(cancelledId)}this.onmessage?.(message,extra)}}async whenRequestsAnswered(timeoutMs){return this._closed||this._pendingRequests.size===0?!0:await new Promise(resolve=>{let waiter=()=>{clearTimeout(timer),resolve(!0)},timer=setTimeout(()=>{this._drainWaiters=this._drainWaiters.filter(pending=>pending!==waiter),resolve(!1)},timeoutMs);this._drainWaiters.push(waiter)})}async close(){if(!this._closed){this._closed=!0,this._pendingRequests.clear(),this._releaseDrainWaiters();try{this._onInstanceClose()}finally{this.onclose?.()}}}_settle(id){this._pendingRequests.delete(id),this._pendingRequests.size===0&&this._releaseDrainWaiters()}_releaseDrainWaiters(){let waiters=this._drainWaiters;this._drainWaiters=[];for(let waiter of waiters)waiter()}};function classifyOpeningMessage(message){let params=message.params;if(message.method==="initialize"&&!carriesValidModernEnvelopeClaim(params)){let requestedVersion=params!==null&&typeof params=="object"&&typeof params.protocolVersion=="string"?params.protocolVersion:void 0;return{kind:"legacy",reason:"initialize",...requestedVersion!==void 0&&{requestedVersion}}}if(!hasEnvelopeClaim(params))return{kind:"legacy",reason:"no-claim"};let meta2=requestMetaOf(params),firstIssue=(meta2===void 0?[]:validateEnvelopeMeta(meta2))[0];if(firstIssue!==void 0)return{kind:"invalid-envelope",issue:firstIssue};let claimedVersion=envelopeClaimVersion(params);return claimedVersion===void 0||!SUPPORTED_MODERN_PROTOCOL_VERSIONS2.includes(claimedVersion)?{kind:"unsupported-revision",requested:claimedVersion??"unknown"}:{kind:"modern",revision:claimedVersion,classification:{era:"modern",revision:claimedVersion}}}function serveStdio(factory,options={}){let legacyMode=options.legacy??"serve",wire=options.transport??new StdioServerTransport,state={phase:"opening"},discarding,closing2=!1,isTornDown=()=>closing2||state.phase==="closed",reportError=error2=>{try{options.onerror?.(error2)}catch{}},writeErrorResponse=(id,code2,message,data)=>wire.send({jsonrpc:"2.0",id,error:{code:code2,message,...data!==void 0&&{data}}}).catch(error2=>reportError(toError(error2))),listenRouter=new StdioListenRouter(options.maxSubscriptions??DEFAULT_MAX_SUBSCRIPTIONS),modernOutboundIntercept=message=>{if(!isJSONRPCNotification2(message))return;let routed=listenRouter.routeOutbound(message);if(routed!=="passthrough"){for(let stamped of routed)wire.send({jsonrpc:"2.0",...stamped}).catch(error2=>reportError(toError(error2)));return"handled"}},tryServeListen=async message=>{if(isJSONRPCRequest2(message)&&message.method==="subscriptions/listen"){let meta2=requestMetaOf(message.params),issue2=hasEnvelopeClaim(message.params)?(meta2===void 0?[]:validateEnvelopeMeta(meta2))[0]:{key:"_meta",problem:"the per-request envelope is required on protocol revision 2026-07-28"},claimedVersion=envelopeClaimVersion(message.params),reply;if(issue2!==void 0)reply={jsonrpc:"2.0",id:message.id,error:{code:-32602,message:`Invalid _meta envelope: ${issue2.key}: ${issue2.problem}`}};else if(claimedVersion===void 0||!SUPPORTED_MODERN_PROTOCOL_VERSIONS2.includes(claimedVersion)){let error2=new UnsupportedProtocolVersionError2({supported:[...SUPPORTED_MODERN_PROTOCOL_VERSIONS2],requested:claimedVersion??"unknown"});reply={jsonrpc:"2.0",id:message.id,error:{code:error2.code,message:error2.message,data:error2.data}}}else reply=listenRouter.serve(message);return await wire.send("error"in reply?reply:{jsonrpc:"2.0",method:reply.method,params:reply.params}).catch(error2=>reportError(toError(error2))),!0}if(isJSONRPCNotification2(message)&&message.method==="notifications/cancelled"){let cancelledId=message.params?.requestId;if(cancelledId!==void 0&&listenRouter.cancel(cancelledId))return!0}return!1},answerLegacyRejection=(request,reason,requestedVersion)=>{let rejection2=modernOnlyStrictRejection({kind:"legacy",reason,...requestedVersion!==void 0&&{requestedVersion}},SUPPORTED_MODERN_PROTOCOL_VERSIONS2);return rejection2===void 0?Promise.resolve():(reportError(new Error(`Rejected 2025-era request on a modern-only stdio connection (${rejection2.cell}): ${rejection2.message}`)),writeErrorResponse(request.id,rejection2.code,rejection2.message,rejection2.data))},onInstanceClosed=channel=>{closing2||channel===discarding||closeAll()},connectInstance=async(era,revision)=>{let product=await factory({era}),server=product instanceof McpServer?product.server:product;era==="modern"&&(setNegotiatedProtocolVersion(server,revision),installModernOnlyHandlers(server,SUPPORTED_MODERN_PROTOCOL_VERSIONS2),listenRouter.setServerCapabilities(server.getCapabilities(),serverIdentityOf(server)));let channel=new StdioConnectionChannel(wire,()=>onInstanceClosed(channel),era==="modern"?modernOutboundIntercept:void 0);return await product.connect(channel),{product,channel}},disposeLateInstance=instance=>instance.product.close().catch(error2=>reportError(toError(error2))),discardProbeInstance=async instance=>{discarding=instance.channel;try{await instance.channel.whenRequestsAnswered(DISCARD_ANSWER_TIMEOUT_MS)||reportError(new Error(`Discarded the probe instance with requests still unanswered after ${DISCARD_ANSWER_TIMEOUT_MS}ms; continuing with the fallback`)),await instance.product.close()}catch(error2){reportError(toError(error2))}finally{discarding=void 0}},processMessage=async message=>{if(state.phase==="closed")return;if(state.phase==="pinned"){if(state.era==="modern"&&isJSONRPCRequest2(message)&&message.method==="initialize"&&!carriesValidModernEnvelopeClaim(message.params)){await answerLegacyRejection(message,"initialize",message.params!==null&&typeof message.params=="object"&&typeof message.params.protocolVersion=="string"?message.params.protocolVersion:void 0);return}if(state.era==="modern"&&await tryServeListen(message)||isTornDown())return;state.instance.channel.deliver(message);return}if(!isJSONRPCRequest2(message)&&!isJSONRPCNotification2(message)){reportError(new Error("Discarded a JSON-RPC response received before the connection negotiated an era"));return}let opening=classifyOpeningMessage(message);switch(opening.kind){case"invalid-envelope":{let detail=`Invalid _meta envelope for protocol revision 2026-07-28: ${opening.issue.key}: ${opening.issue.problem}`;isJSONRPCRequest2(message)?await writeErrorResponse(message.id,ProtocolErrorCode2.InvalidParams,detail,{envelope:opening.issue}):reportError(new Error(`Discarded a notification with a malformed envelope: ${detail}`));return}case"unsupported-revision":if(isJSONRPCRequest2(message)){let error2=new UnsupportedProtocolVersionError2({supported:[...SUPPORTED_MODERN_PROTOCOL_VERSIONS2],requested:opening.requested});reportError(error2),await writeErrorResponse(message.id,error2.code,error2.message,error2.data)}else reportError(new Error(`Discarded a notification claiming unsupported protocol revision ${opening.requested}`));return;case"modern":if(isJSONRPCRequest2(message)&&message.method==="server/discover"){if(state.phase==="probe"){state.instance.channel.deliver(message,{classification:opening.classification});return}let instance=await connectInstance("modern",opening.revision);if(isTornDown()){await disposeLateInstance(instance);return}state={phase:"probe",instance},instance.channel.deliver(message,{classification:opening.classification});return}if(state.phase==="probe"){if(isJSONRPCNotification2(message)){state.instance.channel.deliver(message,{classification:opening.classification});return}state={phase:"pinned",era:"modern",instance:state.instance}}else{let instance=await connectInstance("modern",opening.revision);if(isTornDown()){await disposeLateInstance(instance);return}state={phase:"pinned",era:"modern",instance}}if(await tryServeListen(message)||isTornDown())return;state.instance.channel.deliver(message,{classification:opening.classification});return;case"legacy":{if(legacyMode==="reject"){isJSONRPCRequest2(message)&&await answerLegacyRejection(message,opening.reason,opening.requestedVersion);return}if(state.phase==="probe"){if(await discardProbeInstance(state.instance),isTornDown())return;state={phase:"opening"}}let instance=await connectInstance("legacy");if(isTornDown()){await disposeLateInstance(instance);return}state={phase:"pinned",era:"legacy",instance},state.instance.channel.deliver(message);return}}},queue=[],pumping=!1,pump=async()=>{if(!pumping){pumping=!0;try{for(;queue.length>0;){let message=queue.shift();try{await processMessage(message)}catch(error2){isJSONRPCRequest2(message)&&await writeErrorResponse(message.id,ProtocolErrorCode2.InternalError,"Internal server error"),reportError(toError(error2))}}}finally{pumping=!1}}},closeAll=async()=>{if(closing2||state.phase==="closed")return;closing2=!0;let current=state;state={phase:"closed"};for(let result2 of listenRouter.teardownAll())await wire.send(result2).catch(error2=>reportError(toError(error2)));(current.phase==="probe"||current.phase==="pinned")&&await current.instance.product.close().catch(error2=>reportError(toError(error2))),await wire.close().catch(error2=>reportError(toError(error2)))};wire.onmessage=message=>{queue.push(message),pump()},wire.onerror=error2=>{reportError(error2),(state.phase==="probe"||state.phase==="pinned")&&state.instance.channel.onerror?.(error2)},wire.onclose=()=>{if(closing2||state.phase==="closed")return;closing2=!0;let current=state;state={phase:"closed"},(current.phase==="probe"||current.phase==="pinned")&¤t.instance.product.close().catch(error2=>reportError(toError(error2)))};let started=wire.start().catch(error2=>{throw reportError(toError(error2)),error2});return started.catch(()=>{}),{close:async()=>{await started.catch(()=>{}),await closeAll()}}}function toError(value){return value instanceof Error?value:new Error(String(value))}var CLASS_LINE=/^(\S+)\s+->\s+(\S+):\s*$/,MEMBER_LINE=/^\s+(?:(\d+):(\d+):)?(\S+)\s+([^\s(]+)\(([^)]*)\)(?::(\d+)(?::(\d+))?)?\s+->\s+(\S+)\s*$/,FIELD_LINE=/^\s+(\S+)\s+([^\s(]+)\s+->\s+(\S+)\s*$/;function parseMapping(text2){let byObfuscated=new Map,byOriginal=new Map,compilerVersion,current,lastMember;for(let raw of text2.split(/\r?\n/)){if(!raw.trim())continue;let trimmed=raw.trim();if(trimmed.startsWith("#")){let version2=trimmed.match(/^#\s*compiler_version:\s*(\S+)/);version2&&(compilerVersion=version2[1]);let json=trimmed.slice(1).trim();if(!json.startsWith("{"))continue;let meta2;try{meta2=JSON.parse(json)}catch{continue}if(meta2.id==="sourceFile"&¤t&&!raw.startsWith(" ")&&(current.sourceFile=meta2.fileName),meta2.id==="com.android.tools.r8.rewriteFrame"&&lastMember&&raw.startsWith(" ")){let exception=meta2.conditions?.map(c=>c.match(/^throws\(L(.+);\)$/)?.[1]).find(Boolean),remove=meta2.actions?.map(a=>a.match(/^removeInnerFrames\((\d+)\)$/)?.[1]).find(Boolean);exception&&remove&&(lastMember.rewrite={exception:exception.replace(/\//g,"."),removeInner:Number(remove)})}continue}let cls=raw.match(CLASS_LINE);if(cls&&!raw.startsWith(" ")){current={original:cls[1],obfuscated:cls[2],members:[]},byObfuscated.set(current.obfuscated,current),byOriginal.set(current.original,current),lastMember=void 0;continue}if(!current)continue;let m=raw.match(MEMBER_LINE);if(m){let[,os,oe,type,qualified,args,ls,le,obf]=m,dot=qualified.lastIndexOf(".");lastMember={obfName:obf,obfStart:os===void 0?void 0:Number(os),obfEnd:oe===void 0?void 0:Number(oe),ownerClass:dot>0?qualified.slice(0,dot):void 0,methodName:dot>0?qualified.slice(dot+1):qualified,signature:`${type} ${dot>0?qualified.slice(dot+1):qualified}(${args})`,origStart:ls===void 0?void 0:Number(ls),origEnd:le===void 0?void 0:Number(le)},current.members.push(lastMember);continue}FIELD_LINE.test(raw)&&(lastMember=void 0)}return{byObfuscated,byOriginal,compilerVersion}}function chains(members2,name2){let out=[],chain=[],prev;for(let e of members2){if(e.obfName!==name2){chain.length&&out.push(chain),chain=[],prev=void 0;continue}!(prev&&prev.obfStart!==void 0&&prev.obfStart===e.obfStart&&prev.obfEnd===e.obfEnd)&&chain.length&&(out.push(chain),chain=[]),chain.push(e),prev=e}return chain.length&&out.push(chain),out}function originalLine(e,obfLine,innermost){if(e.origStart===void 0)return;if(obfLine===void 0||e.obfStart===void 0||!innermost||e.origEnd===void 0)return e.origStart;let obfSpan=(e.obfEnd??e.obfStart)-e.obfStart,origSpan=e.origEnd-e.origStart;return obfSpan===origSpan?e.origStart+(obfLine-e.obfStart):e.origStart}function fileFor(mapping,className2,fallback){let cls=mapping.byOriginal.get(className2);return cls?.sourceFile?cls.sourceFile:fallback&&!/^r8-map-id-|^SourceFile$|^Unknown Source$/.test(fallback)?fallback:`${className2.slice(className2.lastIndexOf(".")+1).split("$")[0]}.java`}function retraceFrame(mapping,obfClass,obfMethod,line,sourceFile,thrown){let cls=mapping.byObfuscated.get(obfClass);if(!cls)return null;let candidates=chains(cls.members,obfMethod);if(line!==void 0){let inRange=candidates.filter(c=>c[0].obfStart!==void 0&&line>=c[0].obfStart&&line<=(c[0].obfEnd??c[0].obfStart));if(inRange.length)candidates=inRange;else{let noRange=candidates.filter(c=>c[0].obfStart===void 0);noRange.length&&(candidates=noRange)}}if(!candidates.length)return[[{className:cls.original,methodName:obfMethod,signature:obfMethod,fileName:fileFor(mapping,cls.original,sourceFile),line}]];let seen=new Set,result2=[];for(let chain of candidates){let entries=chain,rewrite=chain[0].rewrite;thrown&&rewrite&&rewrite.exception===thrown&&(entries=chain.slice(rewrite.removeInner));let frames=entries.map((e,i)=>{let className2=e.ownerClass??cls.original;return{className:className2,methodName:e.methodName,signature:e.signature,fileName:fileFor(mapping,className2,sourceFile),line:originalLine(e,line,i===0)}}),key=frames.map(f2=>`${f2.className}.${f2.methodName}:${f2.line??""}`).join("|");seen.has(key)||(seen.add(key),result2.push(frames))}return result2.sort((a,b)=>{let ka=`${a[a.length-1].className}.${a[0].methodName}`,kb=`${b[b.length-1].className}.${b[0].methodName}`;return ka<kb?-1:ka>kb?1:0})}var FRAME=/^(.*?\bat\s+)((?:[\w.$-]+\/)?)([\w$.]+)\.([\w$<>-]+)\(([^:)]*)(?::(\d+))?\)(.*)$/,HEADER=/^(.*?(?:Caused by:\s*|Suppressed:\s*|Exception in thread "[^"]*"\s*|^\s*|AndroidRuntime:\s*))([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)+)(:.*|\s*)$/;function retrace(mappingText,trace){let mapping=typeof mappingText=="string"?parseMapping(mappingText):mappingText,out=[],framesTotal=0,framesRetraced=0,ambiguous=0,thrown,firstFrameAfterHeader=!1;for(let line of trace.split(/\r?\n/)){let f2=line.match(FRAME);if(f2){framesTotal++;let[,prefix,module,obfClass,obfMethod,source,lineNo,suffix]=f2,alternatives=retraceFrame(mapping,obfClass,obfMethod,lineNo===void 0?void 0:Number(lineNo),source,firstFrameAfterHeader?thrown:void 0);if(firstFrameAfterHeader=!1,!alternatives){out.push(line);continue}framesRetraced++,alternatives.length>1&&ambiguous++;let indent=prefix.replace(/\bat\s+$/,"");alternatives.forEach((frames,i)=>{frames.forEach((fr,j)=>{let loc=`${fr.fileName}${fr.line===void 0||fr.line===0?"":`:${fr.line}`}`,lead=i>0&&j===0?`${indent}<OR> at `:prefix;out.push(`${lead}${module}${fr.className}.${fr.methodName}(${loc})${j===frames.length-1?suffix:""}`)})});continue}let header=line.match(HEADER);if(header){let[,lead,name2,rest]=header,original=mapping.byObfuscated.get(name2)?.original??name2;thrown=original,firstFrameAfterHeader=!0,out.push(`${lead}${original}${rest}`);continue}out.push(line)}return{text:out.join(`
|
|
83
|
+
`),framesTotal,framesRetraced,ambiguous}}var HARD_KEYWORDS=new Set(["as","break","class","continue","do","else","false","for","fun","if","in","interface","is","null","object","package","return","super","this","throw","true","try","typealias","typeof","val","var","when","while"]);function words(raw){return raw.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).filter(Boolean).map(w=>w.toLowerCase())}var cap=w=>w.charAt(0).toUpperCase()+w.slice(1);function propertyName(key){let parts=words(key),name2=parts.length?parts[0]+parts.slice(1).map(cap).join(""):"value";return/^[0-9]/.test(name2)&&(name2=`n${name2}`),HARD_KEYWORDS.has(name2)?`\`${name2}\``:name2}function className(key){let name2=words(key).map(cap).join("");return name2||(name2="Item"),/^[0-9]/.test(name2)&&(name2=`N${name2}`),name2}function singular(word){return/ies$/i.test(word)&&word.length>4?word.slice(0,-3)+(word.endsWith("IES")?"Y":"y"):/(ss|us|is)$/i.test(word)?word:/(xes|ches|shes|sses)$/i.test(word)?word.slice(0,-2):/s$/i.test(word)&&word.length>1?word.slice(0,-1):word}var defaultJsonToKotlinOptions={rootName:"Root",library:"kotlinx",nullability:"auto",nullDefaults:!0,annotateAll:!1,mutable:!1,packageName:""},JsonToKotlinError=class extends Error{},INT_MIN=-(2**31),INT_MAX=2**31-1;function infer(value){if(value===null)return{kind:"null"};if(typeof value=="string")return{kind:"prim",name:"String"};if(typeof value=="boolean")return{kind:"prim",name:"Boolean"};if(typeof value=="number")return Number.isInteger(value)?{kind:"prim",name:value>=INT_MIN&&value<=INT_MAX?"Int":"Long"}:{kind:"prim",name:"Double"};if(Array.isArray(value))return value.length===0?{kind:"list",of:{kind:"unknown"}}:{kind:"list",of:value.map(infer).reduce(merge2)};let fields=new Map;for(let[k,v]of Object.entries(value))fields.set(k,{shape:infer(v),optional:!1});return{kind:"obj",fields}}function unwrap(s){return s.kind==="nullable"?{inner:s.of,nullable:!0}:{inner:s,nullable:!1}}function nullable2(s){return s.kind==="nullable"||s.kind==="null"?s:{kind:"nullable",of:s}}var NUMERIC_RANK={Int:0,Long:1,Double:2},RANKED=["Int","Long","Double"];function merge2(a,b){if(a.kind==="null")return nullable2(b);if(b.kind==="null")return nullable2(a);if(a.kind==="unknown")return b;if(b.kind==="unknown")return a;let ua=unwrap(a),ub=unwrap(b);if(ua.nullable||ub.nullable)return nullable2(merge2(ua.inner,ub.inner));if(a.kind==="prim"&&b.kind==="prim"){if(a.name===b.name)return a;let ra=NUMERIC_RANK[a.name],rb=NUMERIC_RANK[b.name];return ra!==void 0&&rb!==void 0?{kind:"prim",name:RANKED[Math.max(ra,rb)]}:{kind:"mixed"}}if(a.kind==="list"&&b.kind==="list")return{kind:"list",of:merge2(a.of,b.of)};if(a.kind==="obj"&&b.kind==="obj"){let fields=new Map;for(let[k,fa]of a.fields){let fb=b.fields.get(k);fields.set(k,fb?{shape:merge2(fa.shape,fb.shape),optional:fa.optional||fb.optional}:{...fa,optional:!0})}for(let[k,fb]of b.fields)a.fields.has(k)||fields.set(k,{...fb,optional:!0});return{kind:"obj",fields}}return{kind:"mixed"}}var Renderer=class{classes=[];imports=new Set;warnings=[];o;constructor(options){this.o=options}get dynamicType(){return this.o.library==="kotlinx"?(this.imports.add("kotlinx.serialization.json.JsonElement"),"JsonElement"):"Any"}type(shape,hint,path){switch(shape.kind){case"prim":return shape.name;case"null":return`${this.dynamicType}?`;case"unknown":return this.dynamicType;case"mixed":return this.warnings.push(`\`${path}\` holds values of different types; typed as ${this.dynamicType}.`),this.dynamicType;case"nullable":return`${this.type(shape.of,hint,path)}?`.replace(/\?\?$/,"?");case"list":return`List<${this.type(shape.of,singular(hint),`${path}[]`)}>`;case"obj":return this.renderClass(className(hint),shape,path)}}renderClass(baseName,shape,path){let slot=this.classes.length;this.classes.push(null);let{library,nullability,nullDefaults,annotateAll,mutable}=this.o,keyword=mutable?"var":"val",props=[];for(let[key,field]of shape.fields){let type=this.type(field.shape,key,path?`${path}.${key}`:key);(field.optional||nullability==="all")&&!type.endsWith("?")&&(type+="?");let name3=propertyName(key),renamed=name3.replace(/`/g,"")!==key,lines2=[];if(renamed||annotateAll){let ann=this.nameAnnotation(key);ann&&lines2.push(ann)}let def=nullDefaults&&type.endsWith("?")?" = null":"";lines2.push(`${keyword} ${name3}: ${type}${def},`),props.push(lines2.map(l=>` ${l}`).join(`
|
|
84
|
+
`))}let signature=props.join(`
|
|
85
|
+
`),existing=this.classes.find(c=>c&&c.signature===signature&&c.name.replace(/\d+$/,"")===baseName);if(existing)return this.classes[slot]=null,existing.name;let name2=baseName;for(let i=2;this.classes.some(c=>c?.name===name2);i++)name2=`${baseName}${i}`;let header=[];library==="kotlinx"?(this.imports.add("kotlinx.serialization.Serializable"),header.push("@Serializable")):library==="moshi"&&(this.imports.add("com.squareup.moshi.JsonClass"),header.push("@JsonClass(generateAdapter = true)"));let body=props.length?`${header.join(`
|
|
86
|
+
`)}${header.length?`
|
|
87
|
+
`:""}data class ${name2}(
|
|
88
|
+
${signature}
|
|
89
|
+
)`:`${header.join(`
|
|
90
|
+
`)}${header.length?`
|
|
91
|
+
`:""}class ${name2}`;return this.classes[slot]={name:name2,signature,body},name2}nameAnnotation(key){let quoted=JSON.stringify(key);switch(this.o.library){case"kotlinx":return this.imports.add("kotlinx.serialization.SerialName"),`@SerialName(${quoted})`;case"moshi":return this.imports.add("com.squareup.moshi.Json"),`@Json(name = ${quoted})`;case"gson":return this.imports.add("com.google.gson.annotations.SerializedName"),`@SerializedName(${quoted})`;case"none":return null}}output(extra){let blocks=[],pkg=this.o.packageName.trim();pkg&&blocks.push(`package ${pkg}`),this.imports.size&&blocks.push([...this.imports].sort().map(i=>`import ${i}`).join(`
|
|
92
|
+
`)),blocks.push(...extra);let classes=this.classes.filter(c=>c!==null);return blocks.push(...classes.map(c=>c.body)),{code:`${blocks.join(`
|
|
93
|
+
|
|
94
|
+
`)}
|
|
95
|
+
`,classCount:classes.length}}};function jsonToKotlin(json,options={}){let o={...defaultJsonToKotlinOptions,...options},rootName=className(o.rootName||"Root");if(o.packageName.trim()&&!/^[A-Za-z_][\w]*(\.[A-Za-z_][\w]*)*$/.test(o.packageName.trim()))throw new JsonToKotlinError(`"${o.packageName}" is not a valid Kotlin package name.`);let value;try{value=JSON.parse(json)}catch(e){throw new JsonToKotlinError(`Invalid JSON: ${e.message}`)}let shape=infer(value),r=new Renderer(o),extra=[];if(shape.kind==="obj")r.renderClass(rootName,shape,"");else if(shape.kind==="list"){let item=r.type(shape.of,`${rootName}Item`,"[]");extra.push(`typealias ${rootName} = List<${item}>`)}else throw new JsonToKotlinError("The top level must be a JSON object or array.");let{code:code2,classCount}=r.output(extra);return{code:code2,classCount,warnings:[...new Set(r.warnings)]}}var CHECKED_ON="2026-11-03",SOURCES={agpGradle:"https://developer.android.com/build/releases/about-agp#updating-gradle",kgp:"https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin",composeCompiler:"https://developer.android.com/jetpack/androidx/releases/compose-kotlin",cmp:"https://kotlinlang.org/docs/multiplatform/compose-compatibility-and-versioning.html",apiLevel:"https://developer.android.com/build/releases/about-agp#api-level-support",ksp:"https://github.com/google/ksp/releases"},AGP_GRADLE=[["9.5","9.6.0"],["9.4","9.6.0"],["9.3","9.5.0"],["9.2","9.4.1"],["9.1","9.3.1"],["9.0","9.1.0"],["8.13","8.13"],["8.12","8.13"],["8.11","8.13"],["8.10","8.11.1"],["8.9","8.11.1"],["8.8","8.10.2"],["8.7","8.9"],["8.6","8.7"],["8.5","8.7"],["8.4","8.6"],["8.3","8.4"],["8.2","8.2"],["8.1","8.0"],["8.0","8.0"],["7.4","7.5"],["7.3","7.4"],["7.2","7.3.3"],["7.1","7.2"],["7.0","7.0"]],KGP=[{from:"2.4.20",to:"2.4.21",gradle:["7.6.3","9.7.0"],agp:["8.5.2","9.3.1"]},{from:"2.4.0",to:"2.4.10",gradle:["7.6.3","9.5.0"],agp:["8.5.2","9.1.0"]},{from:"2.3.20",to:"2.3.21",gradle:["7.6.3","9.3.0"],agp:["8.2.2","9.0.0"]},{from:"2.3.10",to:"2.3.10",gradle:["7.6.3","9.0.0"],agp:["8.2.2","9.0.0"]},{from:"2.3.0",to:"2.3.0",gradle:["7.6.3","9.0.0"],agp:["8.2.2","8.13.0"]},{from:"2.2.20",to:"2.2.21",gradle:["7.6.3","8.14"],agp:["7.3.1","8.11.1"]},{from:"2.2.0",to:"2.2.10",gradle:["7.6.3","8.14"],agp:["7.3.1","8.10.0"]},{from:"2.1.20",to:"2.1.21",gradle:["7.6.3","8.12.1"],agp:["7.3.1","8.7.2"]},{from:"2.1.0",to:"2.1.10",gradle:["7.6.3","8.10"],agp:["7.3.1","8.7.2"],note:"Fully compatible with Gradle up to 8.6; 8.7\u20138.10 may show withJava() deprecation warnings in KMP."},{from:"2.0.20",to:"2.0.21",gradle:["6.8.3","8.8"],agp:["7.1.3","8.5"],note:"Fully compatible with Gradle up to 8.6; 8.7\u20138.8 may show withJava() deprecation warnings in KMP."},{from:"2.0.0",to:"2.0.0",gradle:["6.8.3","8.5"],agp:["7.1.3","8.3.1"]},{from:"1.9.20",to:"1.9.25",gradle:["6.8.3","8.1.1"],agp:["4.2.2","8.1.0"]},{from:"1.9.0",to:"1.9.10",gradle:["6.8.3","7.6.0"],agp:["4.2.2","7.4.0"]},{from:"1.8.20",to:"1.8.22",gradle:["6.8.3","7.6.0"],agp:["4.1.3","7.4.0"]},{from:"1.8.0",to:"1.8.11",gradle:["6.8.3","7.3.3"],agp:["4.1.3","7.2.1"]}],COMPOSE_COMPILER=[["1.5.15","1.9.25"],["1.5.14","1.9.24"],["1.5.13","1.9.23"],["1.5.12","1.9.23"],["1.5.11","1.9.23"],["1.5.10","1.9.22"],["1.5.9","1.9.22"],["1.5.8","1.9.22"],["1.5.7","1.9.21"],["1.5.6","1.9.21"],["1.5.5","1.9.20"],["1.5.4","1.9.20"],["1.5.3","1.9.10"],["1.5.2","1.9.0"],["1.5.1","1.9.0"],["1.5.0","1.9.0"],["1.4.8","1.8.22"],["1.4.7","1.8.21"],["1.4.6","1.8.20"],["1.4.5","1.8.20"],["1.4.4","1.8.10"],["1.4.3","1.8.10"],["1.4.2","1.8.10"],["1.4.1","1.8.0"],["1.4.0","1.8.0"],["1.3.2","1.7.20"],["1.3.1","1.7.10"],["1.3.0","1.7.10"],["1.2.0","1.7.0"],["1.1.1","1.6.10"],["1.1.0","1.6.10"]],CMP_COMPOSE=[["1.12.2","1.12.1"],["1.11.1","1.11.2"],["1.10.3","1.10.5"],["1.9.3","1.9.4"],["1.8.2","1.8.2"],["1.7.3","1.7.6"],["1.7.1","1.7.5"],["1.7.0","1.7.1"],["1.6.11","1.6.7"],["1.6.10","1.6.7"],["1.6.2","1.6.4"],["1.6.1","1.6.3"],["1.6.0","1.6.1"],["1.5.12","1.5.4"],["1.5.11","1.5.4"],["1.5.10","1.5.4"],["1.5.1","1.5.0"],["1.5.0","1.5.0"]],API_AGP=[[37,"9.1.1"],[36.1,"8.13.0"],[36,"8.9.1"],[35,"8.6.0"],[34,"8.1.1"],[33,"7.2"]];function compareVersions(a,b){let pa=a.split(/[.-]/).map(p=>/^\d+$/.test(p)?Number(p):NaN),pb=b.split(/[.-]/).map(p=>/^\d+$/.test(p)?Number(p):NaN);for(let i=0;i<Math.max(pa.length,pb.length);i++){let x=Number.isNaN(pa[i]??0)?0:pa[i]??0,y=Number.isNaN(pb[i]??0)?0:pb[i]??0;if(x!==y)return x<y?-1:1}return 0}var majorMinor=v=>v.split(".").slice(0,2).join("."),isVersion=v=>/^\d+(\.\d+){1,3}(-[\w.-]+)?$/.test(v);function checkVersions(v){let out=[],kotlin=v.kotlin?.trim(),agp=v.agp?.trim(),gradle=v.gradle?.trim();for(let[label,value]of Object.entries({Kotlin:kotlin,AGP:agp,Gradle:gradle}))value&&!isVersion(value)&&out.push({status:"error",title:`${label} "${value}" isn't a version`,detail:"Use numbers like 2.1.0.",source:""});if(agp&&isVersion(agp)&&gradle&&isVersion(gradle)){let row=AGP_GRADLE.find(([a])=>a===majorMinor(agp));row?compareVersions(gradle,row[1])<0?out.push({status:"error",title:`AGP ${agp} needs Gradle ${row[1]} or newer`,detail:`You have Gradle ${gradle}. Run ./gradlew wrapper --gradle-version ${row[1]}.`,source:SOURCES.agpGradle}):out.push({status:"ok",title:`AGP ${agp} works with Gradle ${gradle}`,detail:`Minimum for AGP ${row[0]} is Gradle ${row[1]}.`,source:SOURCES.agpGradle}):out.push({status:"info",title:`AGP ${agp} isn't in the table`,detail:compareVersions(agp,AGP_GRADLE[0][0])>0?"It is newer than the data here; check its release notes.":"Very old AGP; upgrade.",source:SOURCES.agpGradle})}if(kotlin&&isVersion(kotlin)){let row=KGP.find(r=>compareVersions(kotlin,r.from)>=0&&compareVersions(kotlin,r.to)<=0);if(!row)out.push({status:"info",title:`Kotlin ${kotlin} isn't in the table`,detail:compareVersions(kotlin,KGP[0].to)>0?"It is newer than the data here.":"Older than Kotlin 1.8; upgrade.",source:SOURCES.kgp});else{if(gradle&&isVersion(gradle)){let[lo,hi]=row.gradle;compareVersions(gradle,lo)<0?out.push({status:"error",title:`Kotlin ${kotlin} needs Gradle ${lo} or newer`,detail:`You have ${gradle}.`,source:SOURCES.kgp}):compareVersions(gradle,hi)>0?out.push({status:"warn",title:`Gradle ${gradle} is newer than Kotlin ${kotlin} was tested with`,detail:`Tested up to Gradle ${hi}. It often works, but expect deprecation warnings; upgrading Kotlin is safer.`,source:SOURCES.kgp}):out.push({status:row.note&&compareVersions(gradle,"8.6")>0?"warn":"ok",title:`Kotlin ${kotlin} supports Gradle ${gradle}`,detail:row.note??`Tested range: Gradle ${lo}\u2013${hi}.`,source:SOURCES.kgp})}if(agp&&isVersion(agp)){let[lo,hi]=row.agp;compareVersions(agp,lo)<0?out.push({status:"error",title:`Kotlin ${kotlin} needs AGP ${lo} or newer`,detail:`You have AGP ${agp}.`,source:SOURCES.kgp}):compareVersions(agp,hi)>0?out.push({status:"warn",title:`AGP ${agp} is newer than Kotlin ${kotlin} was tested with`,detail:`Tested up to AGP ${hi}. Upgrade Kotlin, or expect to hit untested combinations.`,source:SOURCES.kgp}):out.push({status:"ok",title:`Kotlin ${kotlin} supports AGP ${agp}`,detail:`Tested range: AGP ${lo}\u2013${hi}.`,source:SOURCES.kgp})}}}if(kotlin&&isVersion(kotlin)){let cc=v.composeCompiler?.trim();if(compareVersions(kotlin,"2.0.0")>=0)out.push({status:cc?"warn":"ok",title:"Use the Compose Compiler Gradle plugin",detail:`With Kotlin 2.0+, apply org.jetbrains.kotlin.plugin.compose at version ${kotlin} (same as Kotlin) and remove composeOptions.kotlinCompilerExtensionVersion${cc?` (${cc})`:""}.`,source:SOURCES.composeCompiler});else if(cc){let row=COMPOSE_COMPILER.find(([c])=>c===cc),right=COMPOSE_COMPILER.find(([,k])=>k===kotlin)?.[0];row?row[1]!==kotlin?out.push({status:"error",title:`Compose Compiler ${cc} needs Kotlin ${row[1]}`,detail:right?`For Kotlin ${kotlin}, use Compose Compiler ${right}.`:`No stable Compose Compiler targets Kotlin ${kotlin}.`,source:SOURCES.composeCompiler}):out.push({status:"ok",title:`Compose Compiler ${cc} matches Kotlin ${kotlin}`,detail:"",source:SOURCES.composeCompiler}):out.push({status:"info",title:`Compose Compiler ${cc} isn't in the table`,detail:right?`Kotlin ${kotlin} pairs with Compose Compiler ${right}.`:"",source:SOURCES.composeCompiler})}}let ksp=v.ksp?.trim();if(ksp){let legacy=ksp.match(/^(\d+\.\d+\.\d+)-(\d+\.\d+\.\d+)$/);legacy?kotlin&&legacy[1]!==kotlin?out.push({status:"error",title:`KSP ${ksp} is built for Kotlin ${legacy[1]}`,detail:`Old KSP versions are tied to one Kotlin version. Use a KSP ${kotlin}-x.y.z release, or KSP 2.3.0+, which is independent of Kotlin.`,source:SOURCES.ksp}):kotlin&&out.push({status:"ok",title:`KSP ${ksp} matches Kotlin ${kotlin}`,detail:"Consider KSP 2.3.0+: KSP1 is deprecated and newer versions aren\u2019t tied to Kotlin.",source:SOURCES.ksp}):isVersion(ksp)&&compareVersions(ksp,"2.3.0")>=0?out.push({status:"ok",title:`KSP ${ksp} isn\u2019t tied to a Kotlin version`,detail:"Since 2.3.0 KSP versions are independent of Kotlin (KSP2). Use a recent Kotlin.",source:SOURCES.ksp}):out.push({status:"info",title:`Couldn\u2019t read KSP version "${ksp}"`,detail:"Expected 2.1.0-1.0.29 (old scheme) or 2.3.0+ (new scheme).",source:SOURCES.ksp})}let cmp=v.cmp?.trim();if(cmp&&isVersion(cmp)){let jc=CMP_COMPOSE.find(([c])=>c===cmp)?.[1];kotlin&&compareVersions(cmp,"1.8.0")>=0&&compareVersions(kotlin,"2.1.0")<0?out.push({status:"error",title:`Compose Multiplatform ${cmp} needs Kotlin 2.1.0+`,detail:"Since 1.8.0 it uses the K2 compiler. The compose compiler plugin must match your Kotlin version.",source:SOURCES.cmp}):out.push({status:"ok",title:`Compose Multiplatform ${cmp}${jc?` is based on Jetpack Compose ${jc}`:""}`,detail:"Apply org.jetbrains.kotlin.plugin.compose at your Kotlin version. iOS and web targets: Kotlin 2.2.20+ recommended.",source:SOURCES.cmp})}let api=v.compileSdk?.trim();if(api&&agp&&isVersion(agp)){let level=parseFloat(api),row=API_AGP.find(([l])=>l===level);row&&compareVersions(agp,row[1])<0?out.push({status:"error",title:`API ${api} needs AGP ${row[1]} or newer`,detail:`You have AGP ${agp}.`,source:SOURCES.apiLevel}):row&&out.push({status:"ok",title:`AGP ${agp} supports API ${api}`,detail:`Minimum is AGP ${row[1]}.`,source:SOURCES.apiLevel})}return out}var CHECKED_VERSION="1.1.16717390";var DOCS="https://developer.android.com/tools/agents/android-cli/commands";function isVisible(field,values){return field.showWhen?field.showWhen.values.includes(String(values[field.showWhen.field]??"")):!0}function shellQuote(value){return value===""?"''":/^[A-Za-z0-9_@%+=:,./-]+$/.test(value)?value:/\$[A-Za-z_{]/.test(value)?`"${value.replace(/["\\`]/g,"\\$&")}"`:`'${value.replace(/'/g,"'\\''")}'`}var selector=s=>`'${s.replace(/'/g,"'\\''")}'`,str=(v,id)=>typeof v[id]=="string"?v[id].trim():"",on=(v,id)=>v[id]===!0,opt=(flag,value)=>value?`${flag}=${shellQuote(value)}`:"",lines=(v,id)=>str(v,id).split(`
|
|
96
|
+
`).map(l=>l.trim()).filter(Boolean),join=(...parts)=>parts.filter(Boolean).join(" "),deviceField={id:"device",label:"Device serial",type:"text",placeholder:"emulator-5554",hint:"Only needed when more than one device is connected (see adb devices)."},referenceField=(def=":app")=>({id:"reference",label:"Build reference",type:"text",default:def,placeholder:":app",hint:"Gradle path, optionally with a variant (:app@release) or workspace (./app?:app). Empty = default target."}),buildArgsField={id:"buildArgs",label:"Extra Gradle arguments",type:"text",placeholder:"--offline",hint:"Passed after -- to the build system."},buildArgs=v=>str(v,"buildArgs")?`-- ${str(v,"buildArgs")}`:"",tasks=[{id:"install-cli",group:"Setup",title:"Install Android CLI",summary:"Install the CLI, update it, and set it up for your agents.",docs:"https://developer.android.com/tools/agents/android-cli/download",fields:[{id:"method",label:"Platform and method",type:"select",default:"mac-brew",options:[{value:"mac-brew",label:"macOS: Homebrew"},{value:"mac-arm",label:"macOS (Apple chip): install script"},{value:"mac-intel",label:"macOS (Intel): install script"},{value:"linux",label:"Linux: install script"},{value:"linux-apt",label:"Linux: apt-get"},{value:"windows",label:"Windows: winget"}]}],build(v){let install={"mac-brew":["brew tap android/tap","brew install android-cli"],"mac-arm":["curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh | bash"],"mac-intel":["curl -fsSL https://dl.google.com/android/cli/latest/darwin_x86_64/install.sh | bash"],linux:["curl -fsSL https://dl.google.com/android/cli/latest/linux_x86_64/install.sh | bash"],"linux-apt":["curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | sudo tee /etc/apt/keyrings/google.asc >/dev/null",`sudo sh -c 'echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google.asc] http://dl.google.com/android/cli/latest/debian/ stable main" > /etc/apt/sources.list.d/android-cli.list'`,"sudo apt-get update","sudo apt-get install android-cli"],windows:["winget install --id Google.AndroidCLI"]};return[...install[str(v,"method")]??install["mac-brew"],"android update","android init"]},note:"`android init` installs the android-cli skill into every agent it detects, so your agent knows how to use the CLI."},{id:"sdk-install",group:"Setup",title:"Install SDK packages",summary:"Install platforms, build tools or the emulator into your SDK.",docs:`${DOCS}/sdk_install`,fields:[{id:"packages",label:"Packages",type:"text",required:!0,default:"platform-tools platforms/android-36 emulator",placeholder:"platforms/android-36",hint:"Space-separated package paths; add @version to pin. Browse with android sdk list --all."},{id:"channel",label:"Channel",type:"select",default:"",options:[{value:"",label:"Stable"},{value:"--beta",label:"Beta"},{value:"--canary",label:"Canary"}]},{id:"force",label:"Allow downgrading (--force)",type:"checkbox"}],build:v=>[join("android sdk install",str(v,"channel"),on(v,"force")&&"--force",...str(v,"packages").split(/\s+/).map(shellQuote))]},{id:"create",group:"Setup",title:"Create a project",summary:"Scaffold a new app from an official template.",docs:`${DOCS}/create`,fields:[{id:"name",label:"App name",type:"text",required:!0,default:"My Application"},{id:"applicationId",label:"Application ID",type:"text",placeholder:"com.example.myapp"},{id:"namespace",label:"Namespace",type:"text",placeholder:"com.example.myapp"},{id:"minSdk",label:"minSdk",type:"text",placeholder:"template default"},{id:"output",label:"Output directory",type:"text",default:"./my-app"},{id:"template",label:"Template",type:"text",placeholder:"empty-activity-compose",hint:"Empty = the default Compose template. List them with android create --list."},{id:"force",label:"Allow a non-empty directory (--force)",type:"checkbox"}],build:v=>[join("android create",opt("--name",str(v,"name")),opt("--application-id",str(v,"applicationId")),opt("--namespace",str(v,"namespace")),opt("--min-sdk",str(v,"minSdk")),opt("--output",str(v,"output")),on(v,"force")&&"--force",str(v,"template")&&shellQuote(str(v,"template")))]},{id:"build",group:"Build and run",title:"Build",summary:"Build a target with Gradle (or Bazel), detected automatically.",docs:`${DOCS}/build`,fields:[referenceField(),buildArgsField],build:v=>[join("android build",str(v,"reference")&&shellQuote(str(v,"reference")),buildArgs(v))]},{id:"run",group:"Build and run",title:"Build, install and launch",summary:"Build from source or take APKs, deploy with delta install, and launch.",docs:`${DOCS}/run`,fields:[referenceField(),{id:"apks",label:"Or prebuilt APKs",type:"text",placeholder:"app/build/outputs/apk/debug/app-debug.apk",hint:"Comma-separated. Used instead of the build reference when set."},{id:"activity",label:"Activity",type:"text",placeholder:".ui.MainActivity",hint:"Only needed with several launcher activities."},deviceField,{id:"debug",label:"Wait for debugger (--debug)",type:"checkbox"},{id:"noDelta",label:"Full install, no delta (--use-delta-install=false)",type:"checkbox"},buildArgsField],build(v){let apks=str(v,"apks");return[join("android run",opt("--device",str(v,"device")),on(v,"debug")&&"--debug",opt("--activity",str(v,"activity")),on(v,"noDelta")&&"--use-delta-install=false",apks?opt("--apks",apks):str(v,"reference")&&shellQuote(str(v,"reference")),!apks&&buildArgs(v))]}},{id:"install",group:"Build and run",title:"Install without launching",summary:"Deploy an app with fast incremental install, without starting it.",docs:`${DOCS}/install`,fields:[referenceField(),{id:"apks",label:"Or prebuilt APKs",type:"text",placeholder:"base.apk,config.hdpi.apk",hint:"Comma-separated. Used instead of the build reference when set."},deviceField,{id:"noDelta",label:"Full install, no delta (--use-delta-install=false)",type:"checkbox"},buildArgsField],build(v){let apks=str(v,"apks");return[join("android install",on(v,"noDelta")&&"--use-delta-install=false",opt("--device",str(v,"device")),apks?opt("--apks",apks):str(v,"reference")&&shellQuote(str(v,"reference")),!apks&&buildArgs(v))]}},{id:"emulator-create",group:"Emulators",title:"Create an emulator",summary:"Create a virtual device from a hardware profile.",docs:`${DOCS}/emulator_create`,fields:[{id:"profile",label:"Profile",type:"select",default:"medium_phone",options:["small_phone","medium_phone","medium_tablet","small_desktop","medium_desktop","large_desktop"].map(p=>({value:p,label:p})),hint:"Check for new ones with android emulator create --list-profiles."}],build:v=>[join("android emulator create",str(v,"profile")&&shellQuote(str(v,"profile")))]},{id:"emulator-start",group:"Emulators",title:"Start an emulator",summary:"Boot a virtual device and wait until it is ready.",docs:`${DOCS}/emulator_start`,fields:[{id:"device",label:"Virtual device",type:"text",required:!0,default:"medium_phone",hint:"Names come from android emulator list."},{id:"headless",label:"No window (--headless), good for agents and CI",type:"checkbox"},{id:"cold",label:"Cold boot, skip snapshot (--cold)",type:"checkbox"}],build:v=>[join("android emulator start",on(v,"cold")&&"--cold",on(v,"headless")&&"--headless",shellQuote(str(v,"device")))]},{id:"emulator-stop",group:"Emulators",title:"Stop an emulator",summary:"Shut down a running virtual device.",docs:`${DOCS}/emulator_stop`,fields:[{id:"device",label:"Emulator name or serial",type:"text",placeholder:"emulator-5554",hint:"Optional when only one emulator is running."}],build:v=>[join("android emulator stop",str(v,"device")&&shellQuote(str(v,"device")))]},{id:"screen-capture",group:"Inspect and interact",title:"Take a screenshot",summary:"Save the device screen as PNG, optionally with numbered UI boxes.",docs:`${DOCS}/screen_capture`,fields:[{id:"output",label:"Output file",type:"text",default:"ui.png"},{id:"annotate",label:"Label UI elements #1, #2\u2026 (--annotate)",type:"checkbox"},deviceField],build:v=>[join("android screen capture",on(v,"annotate")&&"--annotate",opt("--device",str(v,"device")),opt("--output",str(v,"output")))],note:'With --annotate, turn a label into coordinates: android screen resolve --screenshot=ui.png --string="input tap #3".'},{id:"layout",group:"Inspect and interact",title:"Dump the UI tree",summary:"Get the live view hierarchy as JSON: text, IDs, bounds, states.",docs:`${DOCS}/layout`,fields:[{id:"pretty",label:"Pretty-print (--pretty)",type:"checkbox",default:!0},{id:"full",label:"Include non-interactive elements (--full)",type:"checkbox"},{id:"flat",label:"Flat list instead of tree (--flat)",type:"checkbox"},{id:"noIdle",label:"Don't wait for idle (--no-idle)",type:"checkbox"},{id:"output",label:"Output file",type:"text",placeholder:"stdout"},deviceField],build:v=>[join("android layout",on(v,"pretty")&&"--pretty",on(v,"full")&&"--full",on(v,"flat")&&"--flat",on(v,"noIdle")&&"--no-idle",opt("--device",str(v,"device")),opt("--output",str(v,"output")))]},{id:"input",group:"Inspect and interact",title:"Tap, type, scroll or press keys",summary:"Drive the UI by selector instead of pixel coordinates.",docs:`${DOCS}/input`,fields:[{id:"action",label:"Action",type:"select",default:"tap",options:[{value:"tap",label:"Tap"},{value:"text",label:"Type text"},{value:"scroll",label:"Scroll"},{value:"swipe",label:"Swipe"},{value:"key",label:"Press key"}]},{id:"selector",label:"Selector",type:"text",default:"text=Submit",hint:"Comma-separated key=value: text, id, class, desc, clickable\u2026",showWhen:{field:"action",values:["tap","text","scroll","swipe"]}},{id:"text",label:"Text to type",type:"text",placeholder:"user@example.com",showWhen:{field:"action",values:["text"]}},{id:"submit",label:"Press Enter after typing (--submit)",type:"checkbox",showWhen:{field:"action",values:["text"]}},{id:"dir",label:"Direction",type:"select",default:"down",options:["up","down","left","right"].map(d=>({value:d,label:d})),showWhen:{field:"action",values:["scroll","swipe"]}},{id:"until",label:"Scroll until visible",type:"text",placeholder:"text=Settings",showWhen:{field:"action",values:["scroll"]}},{id:"key",label:"Key",type:"select",default:"back",options:["back","home","recents","power","volume-up","volume-down","enter","tab","esc"].map(k=>({value:k,label:k})),showWhen:{field:"action",values:["key"]}},{id:"first",label:"Use first match if several (--match=first)",type:"checkbox",showWhen:{field:"action",values:["tap","text","scroll","swipe"]}},deviceField],build(v){let action=str(v,"action")||"tap",base=join("android input",opt("--device",str(v,"device")),action),match=on(v,"first")?"--match=first":"",sel=selector(str(v,"selector"));switch(action){case"text":return[join(base,match,shellQuote(str(v,"text")),sel,on(v,"submit")&&"--submit")];case"scroll":return[join(base,match,sel,`--dir=${str(v,"dir")||"down"}`,str(v,"until")&&`--until=${selector(str(v,"until"))}`)];case"swipe":return[join(base,match,sel,`--dir=${str(v,"dir")||"down"}`)];case"key":return[join(base,str(v,"key")||"back")];default:return[join(base,match,sel)]}},note:"Find selectors with android layout --pretty. Selector strings match case-insensitively; wrap in /\u2026/ for a regex."},{id:"preview-list",group:"Compose previews",title:"List @Preview functions",summary:"Find every Compose preview in a module, with no IDE.",docs:`${DOCS}/preview_list`,fields:[referenceField(),{id:"all",label:"Include dependent modules (--all)",type:"checkbox"},{id:"json",label:"JSON output",type:"checkbox"}],build:v=>[join("android preview list",str(v,"reference")&&shellQuote(str(v,"reference")),on(v,"all")&&"--all",on(v,"json")&&"--format=json")]},{id:"preview-render",group:"Compose previews",title:"Render previews to PNG",summary:"Render Compose previews headlessly, optionally with the component tree.",docs:`${DOCS}/preview_render`,fields:[referenceField(),{id:"fqn",label:"Preview functions",type:"lines",required:!0,default:"com.example.app.HomeScreenKt.HomeScreenPreview",hint:"Fully qualified names, one per line. Get them from List @Preview functions."},{id:"output",label:"Output directory",type:"text",placeholder:"temporary directory"},{id:"tree",label:"Also write component tree JSON (--component-tree)",type:"checkbox"},{id:"daemon",label:"Keep renderer warm (--daemon)",type:"checkbox",default:!0}],build:v=>[join("android preview render",str(v,"reference")&&shellQuote(str(v,"reference")),on(v,"daemon")&&"--daemon",on(v,"tree")&&"--component-tree",opt("--output",str(v,"output")),...lines(v,"fqn").map(f2=>opt("--fqn",f2)))]},{id:"analyze",group:"Analyze and profile",title:"Analyze an APK, AAB or library",summary:"DEX size, R8 shrinking and optimization ratios, keep rule warnings.",docs:`${DOCS}/analyze`,fields:[{id:"paths",label:"Files",type:"text",required:!0,default:"app/build/outputs/bundle/release/app-release.aab",hint:"Space-separated .apk, .aab, .aar or .jar paths."},{id:"analysis",label:"Analysis",type:"select",default:"",options:[{value:"",label:"All"},{value:"basic",label:"Basic (package, version)"},{value:"optimization",label:"Optimization (R8, DEX)"}]},{id:"format",label:"Format",type:"select",default:"",options:[{value:"",label:"Human readable"},{value:"json",label:"JSON"},{value:"textproto",label:"textproto"}]}],build:v=>[join("android analyze",opt("--analysis",str(v,"analysis")),opt("--format",str(v,"format")),...str(v,"paths").split(/\s+/).filter(Boolean).map(shellQuote))]},{id:"systemtrace",group:"Analyze and profile",title:"Record a system trace",summary:"Capture a Perfetto trace of startup or an interaction.",docs:`${DOCS}/profiler_systemtrace`,fields:[{id:"package",label:"Package",type:"text",placeholder:"com.example.app",hint:"Empty = trace the whole system."},{id:"launch",label:"Launch the app when recording starts (--launch)",type:"checkbox",default:!0},{id:"output",label:"Trace file",type:"text",default:"startup.perfetto-trace"}],build:v=>[join("android profiler systemtrace start",opt("--package",str(v,"package")),str(v,"package")&&on(v,"launch")&&"--launch",opt("--output",str(v,"output"))),"# reproduce what you want to trace, then:","android profiler systemtrace stop"],note:"Open the trace at ui.perfetto.dev. If a session gets stuck: android profiler session terminate."},{id:"heapdump",group:"Analyze and profile",title:"Capture a heap dump",summary:"Save an .hprof of a debuggable app (API 29+).",docs:`${DOCS}/profiler_heapdump`,fields:[{id:"process",label:"Process",type:"text",required:!0,default:"com.example.app"},{id:"gc",label:"Run garbage collection first (--gc)",type:"checkbox"},{id:"output",label:"Output file",type:"text",default:"dump.hprof"}],build:v=>[join("android profiler heapdump capture",opt("--process",str(v,"process")),on(v,"gc")&&"--gc",opt("--output",str(v,"output")))]},{id:"crashes",group:"Field data",title:"Top Crashlytics issues",summary:"List crashes, ANRs and non-fatals from the field, then inspect one.",docs:`${DOCS}/signals_crashes_list`,fields:[{id:"app",label:"Firebase app ID",type:"text",required:!0,placeholder:"1:123456789012:android:0123456789abcdef"},{id:"type",label:"Type",type:"select",default:"",options:[{value:"",label:"All"},{value:"crash",label:"Crashes"},{value:"anr",label:"ANRs"},{value:"non-fatal",label:"Non-fatals"}]},{id:"timeframe",label:"Timeframe",type:"select",default:"7d",options:["24h","7d","30d","60d","90d"].map(t=>({value:t,label:t}))},{id:"sortBy",label:"Sort by",type:"select",default:"users",options:[{value:"users",label:"Users"},{value:"events",label:"Events"}]},{id:"limit",label:"Limit",type:"text",default:"10"},{id:"appVersion",label:"App version",type:"text",placeholder:"1.2.3"},{id:"json",label:"JSON output",type:"checkbox"}],build(v){let app=opt("--firebase-app",str(v,"app"));return["android auth login",join("android signals crashes list",app,opt("--type",str(v,"type")),str(v,"timeframe")!=="7d"&&opt("--timeframe",str(v,"timeframe")),opt("--sort-by",str(v,"sortBy")),opt("--limit",str(v,"limit")),opt("--app-version",str(v,"appVersion")),on(v,"json")&&"--format=json"),join("android signals crashes describe firebase/<issue-id>",app,"--include=stack")]},note:"Find your app ID with android signals context. Sign-in is only needed once."},{id:"skills",group:"Agents and docs",title:"Install Android skills",summary:"Teach your agent official Android practices with skill packages.",docs:`${DOCS}/skills_add`,fields:[{id:"skill",label:"Skill",type:"text",placeholder:"edge-to-edge",hint:"Empty = install all. Search with android skills find compose."},{id:"agents",label:"Agents",type:"text",placeholder:"claude,codex,gemini",hint:"Comma-separated. Empty = every agent detected on this machine."},{id:"project",label:"Project root",type:"text",placeholder:".",hint:"Install into this project instead of your user profile."}],build:v=>[join("android skills add",opt("--agent",str(v,"agents").replace(/\s+/g,"")),opt("--project",str(v,"project")),str(v,"skill")?shellQuote(str(v,"skill")):"--all")]},{id:"docs",group:"Agents and docs",title:"Search Android docs",summary:"Query the official Android Knowledge Base from the terminal.",docs:`${DOCS}/docs`,fields:[{id:"query",label:"Question or keywords",type:"text",required:!0,default:"How do I improve my app performance?"}],build:v=>[`android docs search ${shellQuote(str(v,"query"))}`,"android docs fetch kb://<url-from-results>"]}];function defaults(task){return Object.fromEntries(task.fields.map(f2=>[f2.id,f2.default??(f2.type==="checkbox"?!1:"")]))}function buildCommand(taskId,values,global={}){let task=tasks.find(t=>t.id===taskId);if(!task)throw new Error(`Unknown task: ${taskId}`);let v={...defaults(task),...values},missing=task.fields.filter(f2=>f2.required&&isVisible(f2,v)&&!str(v,f2.id)).map(f2=>f2.label),prefix=join(global.sdk?.trim()&&opt("--sdk",global.sdk.trim()),global.verbose&&"-v");return{commands:task.build(v).map(c=>prefix&&c.startsWith("android ")?`android ${prefix} ${c.slice(8)}`:c),missing}}var goals={fix:"Find the root cause and fix it",explain:"Explain the cause, no code changes",test:"Write a failing test first, then fix"},defaultCrashPromptOptions={appPackage:"",goal:"fix",redact:{email:!0,token:!0,apiKey:!0,jwt:!0,ip:!0,url:!0,path:!0,phone:!0,uuid:!0,hex:!0},contextFrames:2,notes:""},LOGCAT_PREFIXES=[/^\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d+\s+\d+\s+\d+\s+[VDIWEFA]\s+[^:]*?:\s?/,/^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d+\s+\d+-\d+\s+\S+\s+\S+\s+[VDIWEFA]\s{1,2}/,/^[VDIWEFA]\/[^(:]+\(\s*\d+\):\s?/,/^[VDIWEFA]\/[^:]+:\s?/];function stripLogcat(line){for(let re of LOGCAT_PREFIXES)if(re.test(line))return line.replace(re,"");return line}var FRAME2=/^\s*at\s+(.+?)\((.*)\)\s*$/,MORE=/^\s*\.\.\.\s*(\d+)\s+more\s*$/,HEADER2=/^\s*(Caused by|Suppressed):\s*(.*)$/,THROWABLE=/^\s*((?:[a-zA-Z_$][\w$]*\.)+[A-Z_$][\w$]*(?:Exception|Error|Throwable|Failure|Exit|Death|Violation)?[\w$]*)(?::\s?(.*))?$/,NATIVE=/\b(?:signal \d+ \(SIG[A-Z]+\)|Fatal signal \d+|backtrace:|tombstone|#\d{2} pc [0-9a-f]+)/;function splitThrowable(text2){let m=text2.match(THROWABLE);if(!(!m||!/[A-Z]/.test(m[1])))return{type:m[1],message:(m[2]??"").trim()}}function parseCrash(input){let lines2=input.replace(/\r\n?/g,`
|
|
97
|
+
`).split(`
|
|
98
|
+
`).map(stripLogcat),out={throwables:[],other:[],native:!1},current,inMessage=!1;for(let raw of lines2){let line=raw.replace(/\s+$/,"");if(!line.trim()){inMessage=!1;continue}NATIVE.test(line)&&(out.native=!0);let thread=line.match(/^FATAL EXCEPTION:\s*(.+)$/);if(thread){out.thread=thread[1].trim();continue}let proc=line.match(/^Process:\s*([\w.:]+)/);if(proc){out.process=proc[1].replace(/:.*/,"");continue}let frame=line.match(FRAME2);if(frame&¤t){let[,member,location]=frame,dot=member.lastIndexOf(".");current.frames.push({text:`${member}(${location})`,className:member.slice(0,dot),method:member.slice(dot+1),location}),inMessage=!1;continue}let more=line.match(MORE);if(more&¤t){current.more=Number(more[1]);continue}let header=line.match(HEADER2);if(header){let t=splitThrowable(header[2])??{type:header[2].trim(),message:""};current={kind:header[1]==="Caused by"?"caused":"suppressed",...t,frames:[],more:0},out.throwables.push(current),inMessage=!0;continue}if(!current||current.frames.length){let t=splitThrowable(line.trim());if(t&&/(Exception|Error|Throwable)\b/.test(t.type)){current={kind:"root",...t,frames:[],more:0},out.throwables.push(current),inMessage=!0;continue}}if(current&&inMessage&&!current.frames.length){current.message=current.message?`${current.message}
|
|
99
|
+
${line.trim()}`:line.trim();continue}out.other.push(line)}return out}var FRAMEWORK=["android.","androidx.","com.android.","com.google.android.","com.google.common.","com.google.firebase.","java.","javax.","jdk.","sun.","dalvik.","libcore.","kotlin.","kotlinx.","org.jetbrains.","okhttp3.","okio.","retrofit2.","io.reactivex.","rx.","dagger.","com.squareup.","io.ktor.","org.json.","org.chromium.","com.facebook.","coil.","coil3.","com.bumptech.","io.sentry."],isFramework=cls=>FRAMEWORK.some(p=>cls.startsWith(p));function looksObfuscated(frames){let app=frames.filter(f2=>!isFramework(f2.className));return app.length?app.filter(f2=>f2.className.split(".").some(s=>s.length<=2&&/^[a-z]+$/.test(s))&&f2.method.length<=2).length>=Math.max(1,app.length/2):!1}function detectAppPackage(crash){if(crash.process)return crash.process;let counts=new Map;for(let t of crash.throwables)for(let f2 of t.frames){if(isFramework(f2.className))continue;let parts=f2.className.split("."),pkg=parts.slice(0,Math.min(3,parts.length-1)).join(".");pkg&&counts.set(pkg,(counts.get(pkg)??0)+1)}return[...counts].sort((a,b)=>b[1]-a[1])[0]?.[0]??""}function isApp(f2,pkg){return pkg?f2.className===pkg||f2.className.startsWith(`${pkg}.`)||f2.className.startsWith(`${pkg}$`):!isFramework(f2.className)}function groupName(cls){let parts=cls.split(".");return parts.slice(0,Math.min(parts[0]==="com"||parts[0]==="org"?3:2,parts.length-1)).join(".")}function trimFrames(frames,pkg,context){let keep=new Set;if(frames.length&&keep.add(0),frames.forEach((f2,i)=>{if(isApp(f2,pkg)){keep.add(i);for(let j=1;j<=context&&i-j>=0;j++)keep.add(i-j)}}),keep.size<=1)for(let i=0;i<Math.min(frames.length,8);i++)keep.add(i);let lines2=[],skipped=[],flush=()=>{if(!skipped.length)return;let groups=[...new Set(skipped.map(f2=>groupName(f2.className)))].slice(0,3);lines2.push(` ... ${skipped.length} framework frame${skipped.length===1?"":"s"} (${groups.join(", ")})`),skipped=[]};return frames.forEach((f2,i)=>{keep.has(i)?(flush(),lines2.push(` at ${f2.text}`)):skipped.push(f2)}),flush(),{lines:lines2,kept:keep.size}}var RULES=[{kind:"jwt",re:/\beyJ[\w-]{8,}\.eyJ[\w-]{8,}\.[\w-]{8,}/g,replace:()=>"<jwt>"},{kind:"apiKey",re:/\b(?:AIza[\w-]{35}|AKIA[0-9A-Z]{16}|gh[pousr]_[A-Za-z0-9]{36,}|github_pat_\w{40,}|sk-(?:proj-|ant-)?[\w-]{20,}|[rs]k_(?:live|test)_[A-Za-z0-9]{16,}|xox[abpors]-[\w-]{10,})/g,replace:()=>"<api-key>"},{kind:"token",re:/\b(Bearer|Basic)\s+[\w\-.~+/]{8,}=*/g,replace:(_m,scheme)=>`${scheme} <redacted>`},{kind:"token",re:/\b([\w-]*(?:token|api[_-]?key|apikey|password|passwd|secret|session[_-]?id|authorization)"?\s*[:=]\s*"?)(?!Bearer\b|Basic\b|<)([^\s",;&]{4,})/gi,replace:(_m,key)=>`${key}<redacted>`},{kind:"url",re:/\b(https?|wss?|ftp):\/\/([^\s/@]+@)?([^\s/?#"'<>]+)([^\s?#"'<>]*)(\?[^\s#"'<>]*)?/g,replace:(_m,scheme,_cred,host,path,query)=>`${scheme}://${_cred?"<user>@":""}${host}${path??""}${query?"?<query>":""}`},{kind:"email",re:/\b[\w.+-]+@[\w-]+(?:\.[\w-]+)*\.[a-z]{2,}\b/gi,replace:()=>"<email>"},{kind:"path",re:/(\/Users\/|\/home\/|[A-Z]:\\Users\\|\/data\/user\/\d+\/|\/storage\/emulated\/\d+\/)([^/\\\s]+)/g,replace:(_m,base,name2)=>base.startsWith("/data/user")||base.startsWith("/storage")?`${base}${name2}`:`${base}<user>`},{kind:"uuid",re:/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b|\b(?:android_?id|device_?id|ssaid|gaid|adid|idfa)\s*[:=]\s*[\w-]{8,}/gi,replace:m=>/^[0-9a-f]{8}-/i.test(m)?"<uuid>":m.replace(/([:=]\s*)[\w-]+$/,"$1<id>")},{kind:"ip",re:/\b(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?:25[0-5]|2[0-4]\d|1?\d?\d)){3}\b|\b(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}\b/gi,replace:m=>/^(?:127\.0\.0\.1|0\.0\.0\.0)$/.test(m)?m:"<ip>"},{kind:"phone",re:/(?<![\w.:#-])\+?\d{1,3}[ -]?\(?\d{2,4}\)?[ -]\d{3,4}[ -]?\d{3,4}(?![\w.-])/g,replace:()=>"<phone>"},{kind:"hex",re:/\b(?=[A-Za-z0-9+/_-]*\d)(?=[A-Za-z0-9+/_-]*[a-zA-Z])[A-Za-z0-9+/_-]{32,}={0,2}/g,replace:()=>"<redacted>"}];function redact(text2,enabled,counts={}){let out=text2;for(let rule2 of RULES)enabled[rule2.kind]&&(out=out.replace(rule2.re,(...args)=>{let m=args[0],groups=args.slice(1,-2),next=rule2.replace(m,...groups);return next!==m&&(counts[rule2.kind]=(counts[rule2.kind]??0)+1),next}));return out}function fileOf(f2){let m=f2.location.match(/^([\w$-]+\.(?:kt|java|kts)):(\d+)$/);if(!m)return;let dir2=f2.className.replace(/\$.*/,"").split(".").slice(0,-1).join("/");return`${dir2?`${dir2}/`:""}${m[1]}:${m[2]}`}var GOAL_TEXT={fix:["Find the root cause of this crash and fix it.","- Start from the first app frame in the root cause, then follow the trace up.","- Explain the cause in two or three sentences before changing code.","- Keep the fix small and focused. Don't refactor unrelated code.","- If the fix changes behaviour, say how to verify it."],explain:["Explain why this crash happens. Don't change any code yet.","- Start from the first app frame in the root cause, then follow the trace up.","- Name the line that throws, what state leads there, and how a user can trigger it.","- List the fixes you would consider, with trade-offs."],test:["Reproduce this crash with a failing test, then fix it.","- Start from the first app frame in the root cause, then follow the trace up.","- Write the smallest unit or instrumented test that fails with this exception, and run it.","- Then make the smallest change that makes it pass, and run the test again.","- Don't refactor unrelated code."]};function crashToPrompt(input,partial2={}){let o={...defaultCrashPromptOptions,...partial2,redact:{...defaultCrashPromptOptions.redact,...partial2.redact}},crash=parseCrash(input),counts={},warnings=[],pkg=o.appPackage.trim()||detectAppPackage(crash),allFrames=crash.throwables.flatMap(t=>t.frames),obfuscated=looksObfuscated(allFrames),trace,framesKept=0;if(crash.throwables.length){let parts=[];crash.thread&&parts.push(`FATAL EXCEPTION: ${crash.thread}`),crash.process&&parts.push(`Process: ${crash.process}`);for(let t of crash.throwables){let prefix=t.kind==="caused"?"Caused by: ":t.kind==="suppressed"?"Suppressed: ":"";parts.push(`${prefix}${t.type}${t.message?`: ${t.message}`:""}`);let{lines:lines2,kept}=trimFrames(t.frames,pkg,Math.max(0,o.contextFrames));framesKept+=kept,parts.push(...lines2),t.more&&parts.push(` ... ${t.more} more`)}trace=parts.join(`
|
|
100
|
+
`)}else{let lines2=crash.other.filter(l=>l.trim());trace=lines2.slice(-80).join(`
|
|
101
|
+
`),lines2.length>80&&warnings.push(`Kept the last 80 of ${lines2.length} lines.`),!crash.native&&lines2.length&&warnings.push("No Java or Kotlin exception found. The text is included as a log.")}trace=redact(trace,o.redact,counts);let notes=redact(o.notes.trim(),o.redact,counts),root=[...crash.throwables].reverse().find(t=>t.kind!=="suppressed"),rootCause=root?{type:root.type,message:redact(root.message,o.redact)}:void 0,files=[...new Set(crash.throwables.flatMap(t=>t.frames.filter(f2=>isApp(f2,pkg)).map(fileOf)).filter(f2=>!!f2))].slice(0,6);obfuscated&&warnings.push("This trace looks obfuscated by R8. Retrace it with your mapping.txt first, or the agent will be guessing."),crash.native&&warnings.push("This looks like a native (NDK) crash. Symbolicate it with ndk-stack first for useful frames."),crash.throwables.length&&!files.length&&!obfuscated&&warnings.push(pkg?`No frames from ${pkg} were found. Check the app package.`:"Set your app package so app frames are kept.");let head=crash.throwables[0],summary=head?`${head.type}${head.message?`: ${head.message.split(`
|
|
102
|
+
`)[0]}`:""}`:crash.native?"Native crash":"Crash",sections=[`My Android app${pkg?` (\`${pkg}\`)`:""} crashes${crash.thread?` on the \`${crash.thread}\` thread`:""}.`,"","## Crash","",`- Exception: \`${redact(summary,o.redact)}\``,...rootCause&&root!==head?[`- Root cause: \`${rootCause.type}${rootCause.message?`: ${rootCause.message.split(`
|
|
103
|
+
`)[0]}`:""}\``]:[],...files.length?[`- App frames, top first: ${files.map(f2=>`\`${f2}\``).join(", ")}`]:[],"","```text",trace,"```",...framesKept&&framesKept<allFrames.length?["",`Framework frames are folded (${framesKept} of ${allFrames.length} frames shown).`]:[],...notes?["","## Context","",notes]:[],"","## Task","",...GOAL_TEXT[o.goal]];return obfuscated&§ions.push("- The trace is obfuscated, so treat class and method names as unreliable."),{prompt:`${sections.join(`
|
|
104
|
+
`)}
|
|
105
|
+
`,trace,appPackage:pkg,rootCause,files,redactions:counts,obfuscated,framesKept,framesTotal:allFrames.length,warnings}}var RESERVED_FIRST=new Set(["bundles","versions","plugins"]),RESERVED_ANY=new Set(["extensions","class","convention"]),CONFIG=String.raw`(?:implementation|api|compileOnly|runtimeOnly|annotationProcessor|kapt|ksp|lintChecks|coreLibraryDesugaring|[a-z][A-Za-z0-9]*(?:Implementation|Api|CompileOnly|RuntimeOnly|AnnotationProcessor)|kapt[A-Z]\w*|ksp[A-Z]\w*)`,COORD=String.raw`([\w.\-]+):([\w.\-]+)(?::([^"'\s$:@]+))?`;function sanitize(s){return s.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-(\d)/g,"$1")}function safeAlias(alias){let a=alias||"lib",first=a.split("-")[0];return(RESERVED_FIRST.has(first)||/^\d/.test(a))&&(a=`lib-${a}`),a.split("-").map(seg=>RESERVED_ANY.has(seg)?`${seg}x`:seg).join("-")}function groupKey(group,name2){let parts=group.split(".").filter(p=>!["com","org","io","net","dev","me","app"].includes(p));return name2&&parts.length>1&&sanitize(parts[parts.length-1])===sanitize(name2)&&parts.pop(),sanitize(parts[parts.length-1]??group)}var KOTLIN_PLUGINS={android:"org.jetbrains.kotlin.android",jvm:"org.jetbrains.kotlin.jvm",multiplatform:"org.jetbrains.kotlin.multiplatform",kapt:"org.jetbrains.kotlin.kapt","plugin.serialization":"org.jetbrains.kotlin.plugin.serialization","plugin.compose":"org.jetbrains.kotlin.plugin.compose","plugin.parcelize":"org.jetbrains.kotlin.plugin.parcelize"};function pluginAlias(id){let known={"com.android.application":"android-application","com.android.library":"android-library","com.android.test":"android-test","com.google.devtools.ksp":"ksp","com.google.dagger.hilt.android":"hilt","com.google.gms.google-services":"google-services","com.google.firebase.crashlytics":"firebase-crashlytics","org.jetbrains.compose":"compose-multiplatform","androidx.room":"room"};return known[id]?known[id]:id.startsWith("org.jetbrains.kotlin.")?sanitize(`kotlin-${id.slice(21).replace(/^plugin\./,"")}`):sanitize(id.split(".").slice(-2).join("-"))}function convertToCatalog(buildFile,dsl="kts"){let warnings=[],found=[],q=`["']`,depRe=new RegExp(String.raw`\b(${CONFIG})(\s*\(\s*|\s+)((?:platform|enforcedPlatform)\s*\(\s*)?${q}${COORD}${q}(\s*\))?`,"g");for(let m of buildFile.matchAll(depRe)){let[whole,config2,open2,platform,group,name2,version2]=m;whole.includes("$")||found.push({kind:"lib",start:m.index,end:m.index+whole.length,group,name:name2,version:version2,render:acc=>{let paren=dsl==="kts"||open2.includes("(");return platform?paren?`${config2}(${platform.replace(/\s+/g,"")}${acc})`:`${config2} ${platform.replace(/\s+/g,"")}${acc})`:paren?`${config2}(${acc})`:`${config2} ${acc}`}})}for(let m of buildFile.matchAll(new RegExp(String.raw`\b${CONFIG}\s*\(?\s*["']([\w.\-]+:[\w.\-]+:[^"']*\$[^"']*)["']`,"g")))warnings.push(`Skipped "${m[1]}": the version is a variable. Move it to [versions] by hand.`);let mapRe=new RegExp(String.raw`\b(${CONFIG})\s*\(\s*group\s*=\s*"([^"]+)"\s*,\s*name\s*=\s*"([^"]+)"(?:\s*,\s*version\s*=\s*"([^"$]+)")?\s*\)`,"g");for(let m of buildFile.matchAll(mapRe))found.push({kind:"lib",start:m.index,end:m.index+m[0].length,group:m[2],name:m[3],version:m[4],render:acc=>`${m[1]}(${acc})`});let pluginRe=/\b(id|kotlin)(\s*\(\s*|\s+)["']([\w.\-]+)["']\s*\)?\s+version\s+["']([^"'$]+)["'](\s+apply\s+(?:false|true))?/g;for(let m of buildFile.matchAll(pluginRe)){let[whole,kind,,raw,version2,apply]=m,pluginId=kind==="kotlin"?KOTLIN_PLUGINS[raw]??`org.jetbrains.kotlin.${raw}`:raw;found.push({kind:"plugin",start:m.index,end:m.index+whole.length,pluginId,version:version2,render:acc=>`alias(${acc})${apply??""}`})}let libs=new Map;for(let f2 of found.filter(f3=>f3.kind==="lib")){let key=`${f2.group}:${f2.name}`,prev=libs.get(key);prev&&prev.version!==f2.version&&warnings.push(`${key} appears with versions ${prev.version??"none"} and ${f2.version??"none"}; kept ${prev.version??"none"}.`),prev||libs.set(key,{alias:"",group:f2.group,name:f2.name,version:f2.version})}let plugins=new Map;for(let f2 of found.filter(f3=>f3.kind==="plugin"))plugins.has(f2.pluginId)||plugins.set(f2.pluginId,{alias:"",id:f2.pluginId,version:f2.version});let taken=new Set,libList=[...libs.values()],byName2=new Map;for(let l of libList)byName2.set(sanitize(l.name),(byName2.get(sanitize(l.name))??0)+1);for(let l of libList){let base=sanitize(l.name),ownsName=sanitize(l.group.split(".").pop())===base,generic2=["core","runtime","ui","android","common","compiler","ktx","bom"].includes(base),alias=safeAlias(byName2.get(base)>1&&!ownsName||generic2?`${groupKey(l.group,l.name)}-${base}`:base);taken.has(alias)&&(alias=safeAlias(`${sanitize(l.group)}-${base}`));for(let i=2;taken.has(alias);i++)alias=`${alias}${i}`;taken.add(alias),l.alias=alias}let pluginTaken=new Set;for(let p of plugins.values()){let alias=safeAlias(pluginAlias(p.id));for(let i=2;pluginTaken.has(alias);i++)alias=`${alias}${i}`;pluginTaken.add(alias),p.alias=alias}let versions=new Map,groupCounts=new Map;for(let l of libList)l.version&&groupCounts.set(`${l.group}@${l.version}`,(groupCounts.get(`${l.group}@${l.version}`)??0)+1);let claim2=(key,version2)=>{let k=safeAlias(key);for(let i=2;versions.has(k)&&versions.get(k)!==version2;i++)k=`${safeAlias(key)}${i}`;return versions.set(k,version2),k};for(let l of libList){if(!l.version)continue;let key=l.group==="org.jetbrains.kotlin"?"kotlin":groupCounts.get(`${l.group}@${l.version}`)>1?groupKey(l.group):l.alias;l.versionRef=claim2(key,l.version)}for(let p of plugins.values()){let kotlinLib=p.id.startsWith("org.jetbrains.kotlin.")?libList.find(l=>l.group==="org.jetbrains.kotlin"&&l.version===p.version):void 0,key=p.id.startsWith("org.jetbrains.kotlin.")?"kotlin":p.id.startsWith("com.android.")?"agp":p.alias;p.versionRef=kotlinLib?.versionRef??claim2(key,p.version)}let accessor=(section,alias,all)=>{let path=alias.replace(/[-_]/g,"."),prefix=all.some(o=>o!==alias&&o.replace(/_/g,"-").startsWith(`${alias.replace(/_/g,"-")}-`));return`libs.${section==="plugins"?"plugins.":""}${path}${prefix?".asProvider()":""}`},libAliases=libList.map(l=>l.alias),pluginAliases=[...plugins.values()].map(p=>p.alias),out=buildFile;for(let f2 of[...found].sort((a,b)=>b.start-a.start)){let acc=f2.kind==="lib"?accessor("libs",libs.get(`${f2.group}:${f2.name}`).alias,libAliases):accessor("plugins",plugins.get(f2.pluginId).alias,pluginAliases);out=out.slice(0,f2.start)+f2.render(acc)+out.slice(f2.end)}let str2=s=>JSON.stringify(s),toml=["[versions]",...[...versions].sort(([a],[b])=>a.localeCompare(b)).map(([k,v])=>`${k} = ${str2(v)}`),"","[libraries]",...libList.map(l=>`${l.alias} = { group = ${str2(l.group)}, name = ${str2(l.name)}${l.versionRef?`, version.ref = ${str2(l.versionRef)}`:""} }`),"","[plugins]",...[...plugins.values()].map(p=>`${p.alias} = { id = ${str2(p.id)}, version.ref = ${str2(p.versionRef)} }`),""].join(`
|
|
106
|
+
`);!libList.length&&!plugins.size&&warnings.push("No dependencies or plugins with fixed versions were found.");let versionless=buildFile.match(/\bid\s*\(?\s*["'][\w.\-]+["']\s*\)?\s*$/gm);return versionless?.length&&warnings.push(`${versionless.length} plugin(s) without a version were left as they are (their version is set elsewhere, usually the root build file).`),{toml,buildFile:out,libraries:libList,plugins:[...plugins.values()],warnings}}var ColorParseError=class extends Error{},NAMED={black:"000000",white:"ffffff",red:"ff0000",green:"008000",blue:"0000ff",yellow:"ffff00",cyan:"00ffff",magenta:"ff00ff",gray:"808080",grey:"808080",transparent:"00000000"},clamp=(n2,lo,hi)=>Math.min(hi,Math.max(lo,n2));function hsl(h,s,l){let k=n2=>(n2+h/30)%12,a=s*Math.min(l,1-l),f2=n2=>l-a*Math.max(-1,Math.min(k(n2)-3,Math.min(9-k(n2),1)));return[f2(0)*255,f2(8)*255,f2(4)*255]}function parseColor(input,order="argb"){let s=input.trim().toLowerCase();NAMED[s]&&(s=`#${NAMED[s]}`);let kotlin=s.match(/^color\(\s*(0x[0-9a-f_]+)\s*\)$/);kotlin&&(s=kotlin[1].replace(/_/g,""));let hex=s.match(/^(?:#|0x)([0-9a-f]+)$/);if(hex){let h=hex[1],fromOx=s.startsWith("0x");if((h.length===3||h.length===4)&&(h=[...h].map(c=>c+c).join("")),h.length===6&&(h=(fromOx||order==="argb"?"ff":"")+h+(fromOx||order==="argb"?"":"ff")),h.length!==8)throw new ColorParseError("Hex colours need 3, 4, 6 or 8 digits.");let n2=i=>parseInt(h.slice(i,i+2),16);return fromOx||order==="argb"?{a:n2(0)/255,r:n2(2),g:n2(4),b:n2(6)}:{r:n2(0),g:n2(2),b:n2(4),a:n2(6)/255}}let fn=s.match(/^(rgba?|hsla?)\(([^)]*)\)$/);if(fn){let parts=fn[2].split(/[\s,/]+/).filter(Boolean),num2=(p,max)=>p.endsWith("%")?parseFloat(p)/100*max:parseFloat(p);if(parts.length<3||parts.length>4||parts.some(p=>Number.isNaN(parseFloat(p))))throw new ColorParseError(`Couldn't read ${fn[1]}().`);let alpha=parts[3]===void 0?1:clamp(num2(parts[3],1),0,1);if(fn[1].startsWith("rgb"))return{r:clamp(num2(parts[0],255),0,255),g:clamp(num2(parts[1],255),0,255),b:clamp(num2(parts[2],255),0,255),a:alpha};let[r,g,b]=hsl((parseFloat(parts[0])%360+360)%360,clamp(num2(parts[1],1),0,1),clamp(num2(parts[2],1),0,1));return{r,g,b,a:alpha}}throw new ColorParseError("Use hex (#RRGGBB, #AARRGGBB), 0xAARRGGBB, rgb(), hsl() or a colour name.")}var ARITY={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7,z:0},PathError=class extends Error{};function*tokens(d){let re=/([MmLlHhVvCcSsQqTtAaZz])|([-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?)/g;for(let m of d.matchAll(re))yield m[0]}function parsePath(d){let out=[],list=[...tokens(d)],i=0,cmd="";for(;i<list.length;){let t=list[i];if(/[A-Za-z]/.test(t)){if(cmd=t,i++,cmd.toLowerCase()==="z"){out.push({cmd,args:[]});continue}}else if(!cmd)throw new PathError("Path data must start with a command (M).");let n2=ARITY[cmd.toLowerCase()],args=[];for(;args.length<n2;){let tok=list[i];if(tok===void 0||/[A-Za-z]/.test(tok))throw new PathError(`"${cmd}" needs ${n2} numbers.`);if(cmd.toLowerCase()==="a"&&(args.length===3||args.length===4)&&/^[01]\d/.test(tok)){args.push(Number(tok[0])),list[i]=tok.slice(1);continue}args.push(Number(tok)),i++}out.push({cmd,args}),cmd==="M"?cmd="L":cmd==="m"&&(cmd="l")}return out}function num(n2){let r=Math.round(n2*1e3)/1e3;return Object.is(r,-0)?"0":String(r)}function formatPath(cmds){return cmds.map(c=>c.cmd+c.args.map(num).join(",")).join("")}var n=(v,fallback=0)=>{let x=parseFloat(v??"");return Number.isFinite(x)?x:fallback};function shapeToPath(name2,a){switch(name2){case"path":return a.d??"";case"rect":{let x=n(a.x),y=n(a.y),w=n(a.width),h=n(a.height);if(w<=0||h<=0)return"";let rx=a.rx!==void 0?n(a.rx):a.ry!==void 0?n(a.ry):0,ry=a.ry!==void 0?n(a.ry):rx;return rx=Math.min(rx,w/2),ry=Math.min(ry,h/2),!rx||!ry?`M${num(x)},${num(y)}h${num(w)}v${num(h)}h${num(-w)}z`:`M${num(x+rx)},${num(y)}h${num(w-2*rx)}a${num(rx)},${num(ry)} 0 0,1 ${num(rx)},${num(ry)}v${num(h-2*ry)}a${num(rx)},${num(ry)} 0 0,1 ${num(-rx)},${num(ry)}h${num(-(w-2*rx))}a${num(rx)},${num(ry)} 0 0,1 ${num(-rx)},${num(-ry)}v${num(-(h-2*ry))}a${num(rx)},${num(ry)} 0 0,1 ${num(rx)},${num(-ry)}z`}case"circle":case"ellipse":{let cx=n(a.cx),cy=n(a.cy),rx=n(name2==="circle"?a.r:a.rx),ry=n(name2==="circle"?a.r:a.ry);return rx<=0||ry<=0?"":`M${num(cx-rx)},${num(cy)}a${num(rx)},${num(ry)} 0 1,0 ${num(rx*2)},0a${num(rx)},${num(ry)} 0 1,0 ${num(-rx*2)},0z`}case"line":return`M${num(n(a.x1))},${num(n(a.y1))}L${num(n(a.x2))},${num(n(a.y2))}`;case"polyline":case"polygon":{let pts=(a.points??"").trim().split(/[\s,]+/).filter(Boolean).map(Number);if(pts.length<4)return"";let d=`M${num(pts[0])},${num(pts[1])}`;for(let i=2;i+1<pts.length;i+=2)d+=`L${num(pts[i])},${num(pts[i+1])}`;return name2==="polygon"?`${d}z`:d}default:return null}}var XmlError=class extends Error{},ENTITIES={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function decodeEntities(s){return s.replace(/&(#x[0-9a-f]+|#\d+|\w+);/gi,(m,e)=>e[0]==="#"?String.fromCodePoint(e[1].toLowerCase()==="x"?parseInt(e.slice(2),16):parseInt(e.slice(1),10)):ENTITIES[e]??m)}function parseXml(text2){let i=0,root={name:"#root",attrs:{},children:[]},stack=[root];for(;i<text2.length;){let lt=text2.indexOf("<",i);if(lt===-1)break;if(i=lt,text2.startsWith("<!--",i)){let end=text2.indexOf("-->",i+4);i=end===-1?text2.length:end+3}else if(text2.startsWith("<![CDATA[",i)){let end=text2.indexOf("]]>",i);i=end===-1?text2.length:end+3}else if(text2.startsWith("<?",i)||text2.startsWith("<!",i)){let depth=0,j=i+2;for(;j<text2.length;j++)if(text2[j]==="[")depth++;else if(text2[j]==="]")depth--;else if(text2[j]===">"&&depth<=0)break;i=j+1}else if(text2[i+1]==="/"){let end=text2.indexOf(">",i),name2=text2.slice(i+2,end).trim(),top=stack.pop();if(!top||top.name!==name2)throw new XmlError(`Unexpected </${name2}>`);i=end+1}else{let m=/^<([\w:.-]+)/.exec(text2.slice(i,i+200));if(!m)throw new XmlError(`Malformed tag near "${text2.slice(i,i+30)}"`);let el={name:m[1],attrs:{},children:[]},j=i+m[0].length,attrRe=/\s*([\w:.-]+)\s*=\s*("([^"]*)"|'([^']*)')|\s*(\/?)>/y,selfClosing=!1;for(;;){attrRe.lastIndex=j;let a=attrRe.exec(text2);if(!a)throw new XmlError(`Malformed attributes in <${el.name}>`);if(j=attrRe.lastIndex,a[1])el.attrs[a[1]]=decodeEntities(a[3]??a[4]??"");else{selfClosing=a[5]==="/";break}}stack[stack.length-1].children.push(el),selfClosing||stack.push(el),i=j}}if(stack.length!==1)throw new XmlError(`Unclosed <${stack[stack.length-1].name}>`);let first=root.children[0];if(!first)throw new XmlError("No XML element found.");return first}var VectorError=class extends Error{},IDENTITY={translateX:0,translateY:0,scaleX:1,scaleY:1,rotation:0,pivotX:0,pivotY:0},BLACK={r:0,g:0,b:0,a:1},INHERITED={fill:"#000",stroke:"none",fillOpacity:1,strokeOpacity:1,opacity:1,strokeWidth:1,cap:"butt",join:"miter",miter:4,fillRule:"nonzero"};function styleOf(el,parent,warn){let props={...el.attrs};for(let decl of(el.attrs.style??"").split(";")){let[k,v]=decl.split(":").map(s=>s?.trim());k&&v&&(props[k]=v)}el.attrs.class&&warn('CSS classes (class="\u2026") are ignored; use presentation attributes or inline style.');let num2=(v,d)=>v===void 0||v===""||Number.isNaN(parseFloat(v))?d:parseFloat(v)/(v.trim().endsWith("%")?100:1);return{fill:props.fill??parent.fill,stroke:props.stroke??parent.stroke,fillOpacity:num2(props["fill-opacity"],parent.fillOpacity),strokeOpacity:num2(props["stroke-opacity"],parent.strokeOpacity),opacity:parent.opacity*num2(props.opacity,1),strokeWidth:num2(props["stroke-width"],parent.strokeWidth),cap:props["stroke-linecap"]??parent.cap,join:(props["stroke-linejoin"]==="miter-clip"||props["stroke-linejoin"]==="arcs"?"miter":props["stroke-linejoin"])??parent.join,miter:num2(props["stroke-miterlimit"],parent.miter),fillRule:props["fill-rule"]??parent.fillRule}}function paint(value,warn){let v=value.trim();if(v==="none"||v==="transparent")return null;if(v.startsWith("url("))return warn("Gradients and patterns (url(#\u2026)) aren\u2019t converted; those shapes fall back to black. Recreate them with Brush.linearGradient or <gradient> by hand."),BLACK;if(v==="currentColor")return warn("currentColor became black. Tint the icon instead (Icon(tint = \u2026) or android:tint)."),BLACK;try{return parseColor(v,"rgba")}catch{return warn(`Unknown colour "${v}" became black.`),BLACK}}function parseTransform(t,warn){let out=[];for(let m of t.matchAll(/(\w+)\s*\(([^)]*)\)/g)){let fn=m[1],a=m[2].trim().split(/[\s,]+/).filter(Boolean).map(Number);switch(fn){case"translate":out.push({...IDENTITY,translateX:a[0]??0,translateY:a[1]??0});break;case"scale":out.push({...IDENTITY,scaleX:a[0]??1,scaleY:a[1]??a[0]??1});break;case"rotate":out.push({...IDENTITY,rotation:a[0]??0,pivotX:a[1]??0,pivotY:a[2]??0});break;case"matrix":{let[A=1,B=0,C=0,D=1,E=0,F=0]=a,sx=Math.hypot(A,B),sy=(A*D-B*C)/(sx||1);if(Math.abs(A*C+B*D)>1e-6*Math.max(1,sx*sx)){warn("A skewed matrix() transform was ignored; skew isn\u2019t supported by VectorDrawable or ImageVector.");break}out.push({...IDENTITY,translateX:E,translateY:F});let rotation=Math.atan2(B,A)*180/Math.PI;Math.abs(rotation)>1e-9&&out.push({...IDENTITY,rotation}),(Math.abs(sx-1)>1e-9||Math.abs(sy-1)>1e-9)&&out.push({...IDENTITY,scaleX:sx,scaleY:sy});break}default:warn(`${fn}() transforms aren\u2019t supported and were ignored.`)}}return out}function wrap(children,transforms){return transforms.reduceRight((inner,t)=>[{type:"group",transform:t,children:inner}],children)}function length(v){if(!v)return;let m=v.trim().match(/^([\d.]+)\s*(px|dp|pt)?$/);if(m)return parseFloat(m[1])*(m[2]==="pt"?4/3:1)}function svgToImage(svgText){let warnings=new Set,warn=w2=>warnings.add(w2),root;try{root=parseXml(svgText)}catch(e){throw new VectorError(`Couldn't read the SVG: ${e.message}`)}if(root.name!=="svg"&&!root.name.endsWith(":svg"))throw new VectorError("The root element must be <svg>.");let vb=root.attrs.viewBox?.trim().split(/[\s,]+/).map(Number),w=length(root.attrs.width)??vb?.[2]??24,h=length(root.attrs.height)??vb?.[3]??24,[minX,minY,vw,vh]=vb&&vb.length===4?vb:[0,0,w,h],walk=(el,parent)=>{let tag=el.name.replace(/^svg:/,"");if(["defs","title","desc","metadata","style","symbol","linearGradient","radialGradient","filter","pattern"].includes(tag))return tag==="style"&&warn("<style> blocks are ignored; use presentation attributes or inline style."),[];if(["text","image","use","foreignObject","switch"].includes(tag))return warn(`<${tag}> isn\u2019t supported and was skipped.${tag==="text"?" Convert text to paths in your editor first.":""}`),[];if((el.attrs["clip-path"]||el.attrs.mask)&&warn("Clip paths and masks are ignored."),el.attrs.display==="none"||el.attrs.visibility==="hidden")return[];let style=styleOf(el,parent,warn),transforms=el.attrs.transform?parseTransform(el.attrs.transform,warn):[];if(tag==="g"||tag==="svg"||tag==="a"){let kids=el.children.flatMap(c=>walk(c,style));return kids.length?wrap(kids,transforms):[]}let d=shapeToPath(tag,el.attrs);if(d===null)return warn(`<${tag}> isn\u2019t supported and was skipped.`),[];if(!d.trim())return[];try{parsePath(d)}catch(e){return warn(`Skipped a <${tag}> with invalid path data: ${e.message}`),[]}let fill=paint(style.fill,warn),stroke=paint(style.stroke,warn);if(!fill&&!stroke)return[];let path={type:"path",d:formatPath(parsePath(d)),fill,fillAlpha:(fill?.a??1)*style.fillOpacity*style.opacity,stroke,strokeAlpha:(stroke?.a??1)*style.strokeOpacity*style.opacity,strokeWidth:stroke?style.strokeWidth:0,cap:style.cap,join:style.join,miter:style.miter,evenOdd:style.fillRule==="evenodd"};return fill&&(path.fill={...fill,a:1}),stroke&&(path.stroke={...stroke,a:1}),wrap([path],transforms)},children=root.children.flatMap(c=>walk(c,styleOf(root,INHERITED,warn)));return(minX||minY)&&(children=wrap(children,[{...IDENTITY,translateX:-minX,translateY:-minY}])),{image:{width:w,height:h,viewportWidth:vw,viewportHeight:vh,children},warnings:[...warnings]}}function vdNumber(v,d){if(v===void 0)return d;let x=parseFloat(v);return Number.isFinite(x)?x:d}function vectorDrawableToImage(xml){let warnings=new Set,warn=w=>warnings.add(w),root;try{root=parseXml(xml)}catch(e){throw new VectorError(`Couldn't read the XML: ${e.message}`)}if(root.name!=="vector")throw new VectorError("The root element must be <vector>.");let A=(el,k)=>el.attrs[`android:${k}`],color=v=>{if(!v)return null;if(v.startsWith("@")||v.startsWith("?"))return warn(`Resource colour ${v} became black; replace it with the real colour.`),BLACK;try{return parseColor(v,"argb")}catch{return warn(`Unknown colour "${v}" became black.`),BLACK}};A(root,"tint")&&warn("android:tint on <vector> isn\u2019t carried over; apply the tint where the icon is used.");let walk=el=>{if(el.name==="group")return[{type:"group",transform:{translateX:vdNumber(A(el,"translateX"),0),translateY:vdNumber(A(el,"translateY"),0),scaleX:vdNumber(A(el,"scaleX"),1),scaleY:vdNumber(A(el,"scaleY"),1),rotation:vdNumber(A(el,"rotation"),0),pivotX:vdNumber(A(el,"pivotX"),0),pivotY:vdNumber(A(el,"pivotY"),0)},children:el.children.flatMap(walk)}];if(el.name==="clip-path")return warn("<clip-path> is ignored."),[];if(el.name!=="path")return el.name.startsWith("aapt:")&&warn("Gradients (aapt:attr) aren\u2019t converted; those paths use black."),[];let d=A(el,"pathData");if(!d)return[];try{parsePath(d)}catch(e){throw new VectorError(`Invalid android:pathData: ${e.message}`)}let fill=color(A(el,"fillColor")),stroke=color(A(el,"strokeColor"));return el.children.some(c=>c.name.startsWith("aapt:"))&&warn("Gradients (aapt:attr) aren\u2019t converted; those paths use black."),[{type:"path",d:formatPath(parsePath(d)),fill:fill&&{...fill,a:1},fillAlpha:(fill?.a??1)*vdNumber(A(el,"fillAlpha"),1),stroke:stroke&&{...stroke,a:1},strokeAlpha:(stroke?.a??1)*vdNumber(A(el,"strokeAlpha"),1),strokeWidth:vdNumber(A(el,"strokeWidth"),0),cap:A(el,"strokeLineCap")??"butt",join:A(el,"strokeLineJoin")??"miter",miter:vdNumber(A(el,"strokeMiterLimit"),4),evenOdd:A(el,"fillType")==="evenOdd"}]},dp=v=>vdNumber(v?.replace(/dp$/,""),24);return{image:{width:dp(A(root,"width")),height:dp(A(root,"height")),viewportWidth:vdNumber(A(root,"viewportWidth"),24),viewportHeight:vdNumber(A(root,"viewportHeight"),24),children:root.children.flatMap(walk)},warnings:[...warnings]}}var hex2=n2=>Math.round(n2).toString(16).padStart(2,"0").toUpperCase(),argb=(c,alpha=1)=>`${hex2(alpha*255)}${hex2(c.r)}${hex2(c.g)}${hex2(c.b)}`,rgbHex=c=>`#${hex2(c.r)}${hex2(c.g)}${hex2(c.b)}`;function toVectorDrawable(img){let lines2=['<vector xmlns:android="http://schemas.android.com/apk/res/android"',` android:width="${num(img.width)}dp"`,` android:height="${num(img.height)}dp"`,` android:viewportWidth="${num(img.viewportWidth)}"`,` android:viewportHeight="${num(img.viewportHeight)}">`],emit=(nodes,indent)=>{for(let node2 of nodes){if(node2.type==="group"){let t=node2.transform,attrs2=[t.rotation&&`android:rotation="${num(t.rotation)}"`,t.pivotX&&`android:pivotX="${num(t.pivotX)}"`,t.pivotY&&`android:pivotY="${num(t.pivotY)}"`,t.scaleX!==1&&`android:scaleX="${num(t.scaleX)}"`,t.scaleY!==1&&`android:scaleY="${num(t.scaleY)}"`,t.translateX&&`android:translateX="${num(t.translateX)}"`,t.translateY&&`android:translateY="${num(t.translateY)}"`].filter(Boolean);lines2.push(`${indent}<group${attrs2.length?`
|
|
107
|
+
${indent} ${attrs2.join(`
|
|
108
|
+
${indent} `)}`:""}>`),emit(node2.children,`${indent} `),lines2.push(`${indent}</group>`);continue}let p=node2,attrs=[p.fill&&`android:fillColor="#${argb(p.fill)}"`,p.fill&&p.fillAlpha<1&&`android:fillAlpha="${num(p.fillAlpha)}"`,p.stroke&&`android:strokeColor="#${argb(p.stroke)}"`,p.stroke&&p.strokeAlpha<1&&`android:strokeAlpha="${num(p.strokeAlpha)}"`,p.stroke&&`android:strokeWidth="${num(p.strokeWidth)}"`,p.stroke&&p.cap!=="butt"&&`android:strokeLineCap="${p.cap}"`,p.stroke&&p.join!=="miter"&&`android:strokeLineJoin="${p.join}"`,p.stroke&&p.join==="miter"&&p.miter!==4&&`android:strokeMiterLimit="${num(p.miter)}"`,p.evenOdd&&'android:fillType="evenOdd"',`android:pathData="${p.d}"`].filter(Boolean);lines2.push(`${indent}<path
|
|
109
|
+
${indent} ${attrs.join(`
|
|
110
|
+
${indent} `)} />`)}};return emit(img.children," "),lines2.push("</vector>"),`${lines2.join(`
|
|
111
|
+
`)}
|
|
112
|
+
`}function toSvg(img){let lines2=[`<svg xmlns="http://www.w3.org/2000/svg" width="${num(img.width)}" height="${num(img.height)}" viewBox="0 0 ${num(img.viewportWidth)} ${num(img.viewportHeight)}">`],emit=(nodes,indent)=>{for(let node2 of nodes){if(node2.type==="group"){let t=node2.transform,parts=[(t.translateX+t.pivotX||t.translateY+t.pivotY)&&`translate(${num(t.translateX+t.pivotX)} ${num(t.translateY+t.pivotY)})`,t.rotation&&`rotate(${num(t.rotation)})`,(t.scaleX!==1||t.scaleY!==1)&&`scale(${num(t.scaleX)} ${num(t.scaleY)})`,(t.pivotX||t.pivotY)&&`translate(${num(-t.pivotX)} ${num(-t.pivotY)})`].filter(Boolean);lines2.push(`${indent}<g${parts.length?` transform="${parts.join(" ")}"`:""}>`),emit(node2.children,`${indent} `),lines2.push(`${indent}</g>`);continue}let p=node2,attrs=[`d="${p.d}"`,`fill="${p.fill?rgbHex(p.fill):"none"}"`,p.fill&&p.fillAlpha<1&&`fill-opacity="${num(p.fillAlpha)}"`,p.evenOdd&&'fill-rule="evenodd"',p.stroke&&`stroke="${rgbHex(p.stroke)}"`,p.stroke&&p.strokeAlpha<1&&`stroke-opacity="${num(p.strokeAlpha)}"`,p.stroke&&`stroke-width="${num(p.strokeWidth)}"`,p.stroke&&p.cap!=="butt"&&`stroke-linecap="${p.cap}"`,p.stroke&&p.join!=="miter"&&`stroke-linejoin="${p.join}"`,p.stroke&&p.miter!==4&&`stroke-miterlimit="${num(p.miter)}"`].filter(Boolean);lines2.push(`${indent}<path ${attrs.join(" ")}/>`)}};return emit(img.children," "),lines2.push("</svg>"),`${lines2.join(`
|
|
113
|
+
`)}
|
|
114
|
+
`}var f=n2=>`${num(n2)}f`,KT_COMMANDS={M:"moveTo",m:"moveToRelative",L:"lineTo",l:"lineToRelative",H:"horizontalLineTo",h:"horizontalLineToRelative",V:"verticalLineTo",v:"verticalLineToRelative",C:"curveTo",c:"curveToRelative",S:"reflectiveCurveTo",s:"reflectiveCurveToRelative",Q:"quadTo",q:"quadToRelative",T:"reflectiveQuadTo",t:"reflectiveQuadToRelative",A:"arcTo",a:"arcToRelative",Z:"close",z:"close"};function toImageVector(img,o){let name2=o.name.replace(/[^A-Za-z0-9_]/g,"")||"Icon",backing=`_${name2[0].toLowerCase()}${name2.slice(1)}`,imports=new Set(["androidx.compose.ui.graphics.vector.ImageVector","androidx.compose.ui.unit.dp"]),body=[],emit=(nodes,indent)=>{for(let node2 of nodes){if(node2.type==="group"){imports.add("androidx.compose.ui.graphics.vector.group");let t=node2.transform,args2=[t.rotation&&`rotate = ${f(t.rotation)}`,t.pivotX&&`pivotX = ${f(t.pivotX)}`,t.pivotY&&`pivotY = ${f(t.pivotY)}`,t.scaleX!==1&&`scaleX = ${f(t.scaleX)}`,t.scaleY!==1&&`scaleY = ${f(t.scaleY)}`,t.translateX&&`translationX = ${f(t.translateX)}`,t.translateY&&`translationY = ${f(t.translateY)}`].filter(Boolean);body.push(`${indent}group(${args2.join(", ")}) {`),emit(node2.children,`${indent} `),body.push(`${indent}}`);continue}imports.add("androidx.compose.ui.graphics.vector.path");let p=node2,args=[];p.fill&&(imports.add("androidx.compose.ui.graphics.Color"),imports.add("androidx.compose.ui.graphics.SolidColor"),args.push(`fill = SolidColor(Color(0x${argb(p.fill)}))`),p.fillAlpha<1&&args.push(`fillAlpha = ${f(p.fillAlpha)}`)),p.stroke&&(imports.add("androidx.compose.ui.graphics.Color"),imports.add("androidx.compose.ui.graphics.SolidColor"),args.push(`stroke = SolidColor(Color(0x${argb(p.stroke)}))`),p.strokeAlpha<1&&args.push(`strokeAlpha = ${f(p.strokeAlpha)}`),args.push(`strokeLineWidth = ${f(p.strokeWidth)}`),p.cap!=="butt"&&(imports.add("androidx.compose.ui.graphics.StrokeCap"),args.push(`strokeLineCap = StrokeCap.${p.cap[0].toUpperCase()}${p.cap.slice(1)}`)),p.join!=="miter"&&(imports.add("androidx.compose.ui.graphics.StrokeJoin"),args.push(`strokeLineJoin = StrokeJoin.${p.join[0].toUpperCase()}${p.join.slice(1)}`)),p.miter!==4&&args.push(`strokeLineMiter = ${f(p.miter)}`)),p.evenOdd&&(imports.add("androidx.compose.ui.graphics.PathFillType"),args.push("pathFillType = PathFillType.EvenOdd")),body.push(`${indent}path(${args.length>2?`
|
|
115
|
+
${indent} ${args.join(`,
|
|
116
|
+
${indent} `)},
|
|
117
|
+
${indent}`:args.join(", ")}) {`);for(let c of parsePath(p.d)){let fn=KT_COMMANDS[c.cmd],vals=c.cmd.toLowerCase()==="a"?[f(c.args[0]),f(c.args[1]),f(c.args[2]),String(c.args[3]!==0),String(c.args[4]!==0),f(c.args[5]),f(c.args[6])]:c.args.map(f);body.push(`${indent} ${fn}(${vals.join(", ")})`)}body.push(`${indent}}`)}};emit(img.children,o.style==="cached"?" ":" ");let builder=indent=>["ImageVector.Builder(",`${indent} name = "${name2}",`,`${indent} defaultWidth = ${num(img.width)}.dp,`,`${indent} defaultHeight = ${num(img.height)}.dp,`,`${indent} viewportWidth = ${f(img.viewportWidth)},`,`${indent} viewportHeight = ${f(img.viewportHeight)},`,`${indent}).apply {`,...body,`${indent}}.build()`].join(`
|
|
118
|
+
`),head=[o.packageName.trim()&&`package ${o.packageName.trim()}
|
|
119
|
+
`,[...imports].sort().map(i=>`import ${i}`).join(`
|
|
120
|
+
`)].filter(Boolean).join(`
|
|
121
|
+
`),code2=o.style==="cached"?`val ${name2}: ImageVector
|
|
122
|
+
get() {
|
|
123
|
+
if (${backing} != null) return ${backing}!!
|
|
124
|
+
${backing} = ${builder(" ")}
|
|
125
|
+
return ${backing}!!
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
private var ${backing}: ImageVector? = null`:`val ${name2}: ImageVector = ${builder("")}`;return`${head}
|
|
129
|
+
|
|
130
|
+
${code2}
|
|
131
|
+
`}function detectFormat(text2){return/<svg[\s/>]/i.test(text2)?"svg":/<vector[\s/>]/.test(text2)?"vector-drawable":null}function convertVector(input,to,options={}){let from=detectFormat(input);if(!from)throw new VectorError("Paste an SVG (<svg \u2026>) or a VectorDrawable (<vector \u2026>).");let parsed;try{parsed=from==="svg"?svgToImage(input):vectorDrawableToImage(input)}catch(e){throw e instanceof XmlError||e instanceof PathError?new VectorError(e.message):e}return parsed.image.children.length||parsed.warnings.push("Nothing drawable was found."),{output:to==="svg"?toSvg(parsed.image):to==="vector-drawable"?toVectorDrawable(parsed.image):toImageVector(parsed.image,{name:options.name??"MyIcon",style:options.style??"cached",packageName:options.packageName??""}),warnings:parsed.warnings,image:parsed.image}}var ruleKinds={"json-models":{label:"JSON models read by reflection (Gson, Jackson, reflective Moshi)",target:"Package of the model classes",placeholder:"com.example.api.model",why:"These libraries map JSON keys to field names at runtime. R8 renames or removes fields it sees no code reading."},"class-for-name":{label:"Classes loaded by a name built at runtime (plugins, config)",target:"Class or package",placeholder:"com.example.plugins.**",why:'R8 follows Class.forName("a.Constant") by itself, but a name from config or a server is invisible to it, so the class is removed or renamed.'},"annotated-members":{label:"Members found by an annotation at runtime (event buses, custom DI)",target:"Annotation class",placeholder:"com.example.events.Subscribe",why:"Code that scans for annotated methods needs the methods and the annotations kept."},"js-interface":{label:"WebView JavaScript interface",target:"Bridge class",placeholder:"com.example.web.WebAppBridge",why:"JavaScript calls @JavascriptInterface methods by name, so they must not be renamed or removed."},"jni-callbacks":{label:"Classes and members used from native (JNI) code",target:"Class",placeholder:"com.example.native.Callbacks",why:"Native code looks up classes, methods and fields by name (FindClass, GetMethodID). Native methods themselves are already kept by the default rules."},"kotlin-reflect":{label:"Kotlin reflection (kotlin-reflect, KClass.members)",target:"Package or class inspected",placeholder:"com.example.forms.**",why:"kotlin-reflect reads Kotlin metadata, which R8 strips or rewrites unless kept."}},KeepRulesError=class extends Error{},NAME=/^[a-zA-Z_$][\w$]*(\.[a-zA-Z_$][\w$]*)*(\.\*\*?)?$/;function scope(target,packageByDefault){let t=target.trim();if(!NAME.test(t))throw new KeepRulesError(`"${t||"(empty)"}" isn't a Java/Kotlin class or package name.`);if(t.endsWith("*"))return t;let last=t.split(".").pop();return packageByDefault||/^[a-z]/.test(last)?`${t}.**`:t}function rule(r){let info=ruleKinds[r.kind],head=[`# ${info.label}`,`# ${info.why}`],t=r.target??"";switch(r.kind){case"json-models":{let s=scope(t,!0);return[...head,"-keepattributes Signature, RuntimeVisibleAnnotations, AnnotationDefault",`-keepclassmembers class ${s} {`," <fields>;"," <init>(...);","}"]}case"class-for-name":{let s=scope(t,!1);return[...head,`-keep class ${s} {`," <init>(...);","}"]}case"annotated-members":{let s=scope(t,!1);if(s.endsWith("*"))throw new KeepRulesError("Give the annotation class, not a package.");return[...head,"-keepattributes RuntimeVisibleAnnotations",`-keep @interface ${s}`,"-keepclassmembers class * {",` @${s} <methods>;`,` @${s} <fields>;`,"}"]}case"js-interface":{let s=scope(t,!1);return[...head,"-keepattributes RuntimeVisibleAnnotations",`-keepclassmembers class ${s} {`," @android.webkit.JavascriptInterface <methods>;","}"]}case"jni-callbacks":{let s=scope(t,!1);return[...head,`-keep class ${s} {`," *;","}"]}case"kotlin-reflect":{let s=scope(t,!1);return[...head,"-keepattributes RuntimeVisibleAnnotations, InnerClasses, Signature, EnclosingMethod","-keep class kotlin.Metadata { *; }",`-keep class ${s} {`," *;","}"]}}}function generateRules(requests){return requests.length?`${requests.map(r=>rule(r).join(`
|
|
132
|
+
`)).join(`
|
|
133
|
+
|
|
134
|
+
`)}
|
|
135
|
+
`:`# Choose what your app does with reflection to get rules.
|
|
136
|
+
`}var DIRECTIVES=new Set("keep keepclassmembers keepclasseswithmembers keepnames keepclassmembernames keepclasseswithmembernames keepattributes keeppackagenames keepparameternames keepdirectories dontwarn dontnote ignorewarnings dontobfuscate dontoptimize dontshrink dontpreverify dontusemixedcaseclassnames optimizations optimizationpasses allowaccessmodification repackageclasses flattenpackagehierarchy renamesourcefileattribute adaptclassstrings adaptresourcefilenames adaptresourcefilecontents printmapping printseeds printusage printconfiguration whyareyoukeeping include basedirectory assumenosideeffects assumevalues applymapping obfuscationdictionary classobfuscationdictionary packageobfuscationdictionary verbose checkdiscard identifiernamestring if alwaysinline neverinline maximumremovedandroidloglevel keepkotlinmetadata dump target useuniqueclassmembernames overloadaggressively mergeinterfacesaggressively skipnonpubliclibraryclasses dontskipnonpubliclibraryclassmembers forceprocessing injars outjars libraryjars".split(" "));function lintRules(text2){let out=[],seen=new Map,lines2=text2.split(`
|
|
137
|
+
`),buf="",start=0,entries=[];lines2.forEach((raw,i)=>{let l=raw.replace(/#.*$/,"").trim();l&&(buf||(start=i+1),buf+=(buf?" ":"")+l,(buf.match(/\{/g)??[]).length<=(buf.match(/\}/g)??[]).length&&(entries.push({line:start,text:buf.replace(/\s+/g," ")}),buf=""))}),buf&&entries.push({line:start,text:buf});for(let{line,text:e}of entries){let d=e.match(/^-(\w+)/)?.[1];if(!d){out.push({level:"error",line,message:`Not a rule: "${e.slice(0,50)}". Rules start with a dash, like -keep.`});continue}DIRECTIVES.has(d)||out.push({level:"error",line,message:`Unknown option -${d}.`});let norm=e.replace(/\s/g,"");seen.has(norm)?out.push({level:"info",line,message:`Same rule as line ${seen.get(norm)}.`}):seen.set(norm,line),d==="dontshrink"&&out.push({level:"error",line,message:"-dontshrink keeps every class and method, so R8 removes nothing."}),d==="dontobfuscate"&&out.push({level:"warning",line,message:"-dontobfuscate makes the app bigger and easier to reverse engineer. Keep only what reflection needs instead."}),d==="dontoptimize"&&out.push({level:"warning",line,message:"-dontoptimize turns off R8\u2019s optimisations, making the app bigger and slower."}),d==="ignorewarnings"&&out.push({level:"warning",line,message:"-ignorewarnings hides missing classes that can crash at runtime. Use a targeted -dontwarn for each reported class."}),d==="dontwarn"&&/^-dontwarn\s+(\*\*?|\*\*\.\*)?$/.test(e)&&out.push({level:"warning",line,message:"A blanket -dontwarn hides every missing class. Name the packages instead (R8 writes suggestions to build/outputs/mapping/<variant>/missing_rules.txt)."}),d==="keepattributes"&&/\s\*\s*$/.test(e)&&out.push({level:"warning",line,message:"-keepattributes * keeps every attribute, including debug data. List the ones you need."}),/^-keep(classmembers|classeswithmembers|names)?(,[\w,]+)?\s+(class|interface|enum)\s+(\*|\*\*|\*\*\.\*|\*\.\*)\s*(\{\s*\*;\s*\})?$/.test(e)?out.push({level:"error",line,message:"Keeps every class, so R8 can\u2019t shrink or obfuscate anything."}):/^-keep(,[\w,]+)?\s+class\s+[\w.]+\.\*\*\s*\{\s*\*;\s*\}/.test(e)&&out.push({level:"warning",line,message:"Keeps everything in a whole package. Narrow it to the classes and members that are used by reflection."})}return out}function mask(src){let out="",i=0;for(;i<src.length;){let c=src[i],n2=src[i+1];if(c==="/"&&n2==="/"){let end=src.indexOf(`
|
|
138
|
+
`,i),stop=end<0?src.length:end;out+=" ".repeat(stop-i),i=stop}else if(c==="/"&&n2==="*"){let end=src.indexOf("*/",i+2),stop=end<0?src.length:end+2;out+=src.slice(i,stop).replace(/[^\n]/g," "),i=stop}else if(c==='"'){let raw=src.startsWith('"""',i),close=raw?'"""':'"',j=i+close.length;for(;j<src.length&&!src.startsWith(close,j);)j+=!raw&&src[j]==="\\"?2:1;let stop=Math.min(src.length,j+close.length);out+=close+src.slice(i+close.length,j).replace(/[^\n]/g," ")+src.slice(j,stop),i=stop}else if(c==="'"){let j=i+1;for(;j<src.length&&src[j]!=="'";)j+=src[j]==="\\"?2:1;out+=`'${" ".repeat(Math.max(0,j-i-1))}'`,i=j+1}else out+=c,i++}return out}function closing(m,open2){let pairs={"(":")","{":"}","[":"]","<":">"},o=m[open2],c=pairs[o],depth=0;for(let i=open2;i<m.length;i++)if(m[i]===o)depth++;else if(m[i]===c&&!(o==="<"&&m[i-1]==="-")&&(depth--,depth===0))return i;return m.length-1}function splitTopLevel(s){let parts=[],depth=0,start=0;for(let i=0;i<s.length;i++){let c=s[i];"(<[{".includes(c)?depth++:")]}".includes(c)||c===">"&&s[i-1]!=="-"?depth--:c===","&&depth===0&&(parts.push(s.slice(start,i)),start=i+1)}return parts.push(s.slice(start)),parts}var TARGETS=[{id:"android",label:"Android",sourceSet:"androidMain",suffix:"android"},{id:"ios",label:"iOS",sourceSet:"iosMain",suffix:"ios"},{id:"jvm",label:"Desktop (JVM)",sourceSet:"jvmMain",suffix:"jvm"},{id:"js",label:"Web (JS)",sourceSet:"jsMain",suffix:"js"},{id:"wasmJs",label:"Web (Wasm)",sourceSet:"wasmJsMain",suffix:"wasmJs"}];function stripDefaults(params){let stripped=!1;return{params:splitTopLevel(params).map(p=>{let m=mask(p),depth=0;for(let i=0;i<m.length;i++){let c=m[i];if("(<[{".includes(c))depth++;else if(")]}".includes(c)||c===">"&&m[i-1]!=="-")depth--;else if(c==="="&&depth===0&&m[i+1]!==">"&&m[i-1]!=="!"&&m[i-1]!=="=")return stripped=!0,p.slice(0,i).trimEnd()}return p}).join(","),stripped}}var KIND=/\b(fun|val|var|enum\s+class|annotation\s+class|class|interface|object|typealias)\b/;function findExpects(src,m){let decls=[],re=/(^|[\s;}])expect\b/g,match;for(;match=re.exec(m);){let at=match.index+match[1].length,depth=0;for(let i=0;i<at;i++)depth+=m[i]==="{"?1:m[i]==="}"?-1:0;if(depth!==0)continue;let start=at,lead=m.slice(0,at).match(/((?:@[\w.]+(?:\([^()]*\))?\s*|\b(?:public|internal|private|protected|inline|infix|operator|suspend|tailrec|external|data|sealed|abstract|open|value|fun|inner)\s+)*)$/);lead&&(start=at-lead[1].length);let kindMatch=KIND.exec(m.slice(at)),kindWord=kindMatch?.[1]?.replace(/\s+/g," "),kind=kindWord==="enum class"?"enum":kindWord==="annotation class"?"annotation":kindWord??"unknown",end=declEnd(m,at+(kindMatch?.index??0),kind);decls.push({text:src.slice(start,end).trim(),kind}),re.lastIndex=end}return decls}function declEnd(m,from,kind){let i=from,depth=0;for(;i<m.length;i++){let c=m[i];if(c==="("||c==="["||c==="<"&&kind!=="unknown")depth++;else if(c===")"||c==="]"||c===">"&&m[i-1]!=="-"&&depth>0)depth--;else{if(depth===0&&c==="{")return closing(m,i)+1;if(depth===0&&(c===`
|
|
139
|
+
`||c===";")){let rest=m.slice(i+1);if(/^\s*(:|where\b|\{|,)/.test(rest)&&kind!=="val"&&kind!=="var"||/^\s*(:|\{)/.test(rest)&&(kind==="val"||kind==="var"))continue;return i}}}return m.length}var todo=(what,target)=>`TODO("${what} on ${target}")`;function actualFor(declText,targetLabel,notices=[],abstractMember=!1){let m=mask(declText),kindMatch=KIND.exec(m);if(!kindMatch)return`// Couldn't read this declaration:
|
|
140
|
+
// ${declText.split(`
|
|
141
|
+
`).join(`
|
|
142
|
+
// `)}`;let kind=kindMatch[1].replace(/\s+/g," "),head=declText.slice(0,kindMatch.index).replace(/\bexpect\b/,"actual");if(kind==="fun"){let open2=m.indexOf("(",kindMatch.index),close=closing(m,open2),rt=/^\s*:[^{=]*/.exec(m.slice(close+1))?.[0].length??0,bodyAt=/^\s*[={]/.test(m.slice(close+1+rt))?close+1+rt:declText.length;bodyAt<declText.length&¬ices.push({level:"error",text:`An expect function can't have a body: ${firstLine(declText)}`});let{params,stripped}=stripDefaults(declText.slice(open2+1,close));stripped&¬ices.push({level:"info",text:`Default values stay on the expect side only; Kotlin rejects them on actual functions (${name(declText)}).`});let sig=declText.slice(kindMatch.index,open2+1)+params+")"+declText.slice(close+1,bodyAt).replace(/\s*$/,"");return abstractMember||/\babstract\b/.test(head)?`${head}${sig}`:rt?`${head}${sig} = ${todo(`${name(declText)}()`,targetLabel)}`:`${head}${sig} {
|
|
143
|
+
${todo(`${name(declText)}()`,targetLabel)}
|
|
144
|
+
}`}if(kind==="val"||kind==="var"){let sig=declText.slice(kindMatch.index).trim();if(/:/.test(mask(sig))||notices.push({level:"error",text:`An expect property needs an explicit type: ${firstLine(declText)}`}),abstractMember||/\babstract\b/.test(head))return`${head}${sig}`;let getter=`get() = ${todo(name(declText),targetLabel)}`;return kind==="val"?`${head}${sig}
|
|
145
|
+
${getter}`:`${head}${sig}
|
|
146
|
+
${getter}
|
|
147
|
+
set(value) = ${todo(`${name(declText)} setter`,targetLabel)}`}if(kind==="typealias"||kind==="annotation")return`${head}${declText.slice(kindMatch.index)}`;let brace=m.indexOf("{",kindMatch.index),header=(brace<0?declText.slice(kindMatch.index):declText.slice(kindMatch.index,brace)).trimEnd(),outHeader=header,hasSecondary=brace>=0&&/(^|\n)\s*(?:(?:public|internal|private|protected)\s+)?constructor\s*\(/.test(m.slice(brace+1,closing(m,brace))),primaryAsSecondary="",hm=mask(header),nameMatch=/^(?:enum\s+class|class|interface|object)\s+([\w]+)\s*(<)?/.exec(hm);if(nameMatch&&(kind==="class"||kind==="enum class")){let after=nameMatch[0].length;nameMatch[2]&&(after=closing(hm,nameMatch[0].length-1)+1);let ctorAt=hm.slice(after).search(/\S/),ctorIdx=ctorAt<0?-1:after+ctorAt;if(ctorIdx>=0&&(hm[ctorIdx]==="("||hm.slice(ctorIdx).startsWith("constructor"))){let open2=hm.indexOf("(",ctorIdx),close=closing(hm,open2),{params,stripped}=stripDefaults(header.slice(open2+1,close));stripped&¬ices.push({level:"info",text:`Constructor default values stay on the expect side only (${nameMatch[1]}).`}),hasSecondary?(outHeader=`${header.slice(0,after).trimEnd()}${header.slice(close+1)}`,primaryAsSecondary=` actual constructor(${params})`):outHeader=`${header.slice(0,after).trimEnd()} actual constructor(${params})${header.slice(close+1)}`}}if(brace<0)return`${head}${outHeader}`;let body=declText.slice(brace+1,closing(m,brace)),members2=actualBody(body,kind,targetLabel,notices);return`${head}${outHeader} {
|
|
148
|
+
${[primaryAsSecondary,members2].filter(Boolean).join(`
|
|
149
|
+
|
|
150
|
+
`)}
|
|
151
|
+
}`}function actualBody(body,kind,target,notices){let m=mask(body);if(kind==="enum class"){let semi=topLevelIndex(m,";"),entries=(semi<0?body:body.slice(0,semi)).trim(),rest=semi<0?"":membersOf(body.slice(semi+1),target,notices);return` ${entries}${rest?`;
|
|
152
|
+
|
|
153
|
+
${rest}`:""}`}return membersOf(body,target,notices,kind==="interface")}function topLevelIndex(m,ch){let depth=0;for(let i=0;i<m.length;i++)if("({[".includes(m[i]))depth++;else if(")}]".includes(m[i]))depth--;else if(m[i]===ch&&depth===0)return i;return-1}function membersOf(body,target,notices,inInterface=!1){let m=mask(body),out=[],i=0;for(;i<m.length;){let rel=m.slice(i).search(/\S/);if(rel<0)break;let start=i+rel,k=KIND.exec(m.slice(start)),ctor=/^(?:(?:@[\w.]+(?:\([^()]*\))?\s*|\b(?:public|internal|private|protected)\s+)*)constructor\s*\(/.exec(m.slice(start));if(ctor){let open2=start+ctor[0].length-1,close=closing(m,open2),{params}=stripDefaults(body.slice(open2+1,close));out.push(` actual ${body.slice(start,open2).replace(/constructor\s*$/,"constructor").trim()}(${params})`),i=close+1;continue}if(!k)break;let kind=k[1].replace(/\s+/g," "),kindAt=start+k.index,end=declEnd(m,kindAt,kind==="enum class"?"enum":kind),text2=body.slice(start,end).trim(),withExpect=`expect ${text2}`;out.push(actualFor(withExpect,target,notices,inInterface&&!/\b(class|object|interface)\b/.test(KIND.exec(mask(text2))?.[1]??"")).split(`
|
|
154
|
+
`).map(l=>` ${l}`).join(`
|
|
155
|
+
`)),i=end}return out.join(`
|
|
156
|
+
|
|
157
|
+
`)}var firstLine=s=>s.split(`
|
|
158
|
+
`)[0].trim();function name(decl){return/\b(?:fun|val|var)\s+(?:<[^>]*>\s*)?(?:[\w.<>?, ]+\.)?(\w+)/.exec(mask(decl))?.[1]??"it"}function parseCommon(src){let m=mask(src),pkg=/^\s*package\s+([\w.]+)/m.exec(m),imports=[...m.matchAll(/^\s*import\s+[\w.*]+(?:\s+as\s+\w+)?/gm)].map(x=>src.slice(x.index,x.index+x[0].length).trim());return{packageName:pkg?.[1]??"",imports,expects:findExpects(src,m)}}var dir=(module,sourceSet,pkg)=>`${module}/src/${sourceSet}/kotlin/${pkg?`${pkg.replace(/\./g,"/")}/`:""}`;function generateActuals(common,o){let parsed=parseCommon(common),notices=[];parsed.expects.length||notices.push({level:"error",text:"No expect declarations found. Mark them with the expect keyword, e.g. expect fun platformName(): String"}),parsed.packageName||notices.push({level:"warning",text:"No package line. Files in a module usually declare one, and actuals must be in the same package."});let usesExpectClasses=parsed.expects.some(d=>!["fun","val","var"].includes(d.kind)),files=[{path:`${dir(o.module,"commonMain",parsed.packageName)}${o.fileName}.kt`,sourceSet:"commonMain",content:common.trim()+`
|
|
159
|
+
`}];for(let t of TARGETS.filter(x=>o.targets.includes(x.id))){let targetNotices=[],body=parsed.expects.map(d=>actualFor(d.text,t.label,targetNotices)).join(`
|
|
160
|
+
|
|
161
|
+
`);t===TARGETS.find(x=>o.targets.includes(x.id))&¬ices.push(...targetNotices);let header=[parsed.packageName&&`package ${parsed.packageName}`,parsed.imports.join(`
|
|
162
|
+
`)].filter(Boolean).join(`
|
|
163
|
+
|
|
164
|
+
`);files.push({path:`${dir(o.module,t.sourceSet,parsed.packageName)}${o.fileName}.${t.suffix}.kt`,sourceSet:t.sourceSet,content:`${header?`${header}
|
|
165
|
+
|
|
166
|
+
`:""}${body}
|
|
167
|
+
`})}return{files,notices:dedupe(notices),usesExpectClasses}}function dedupe(n2){let seen=new Set;return n2.filter(x=>seen.has(x.text)?!1:(seen.add(x.text),!0))}var MODIFIERS=new Set(["public","internal","private","protected","open","final","abstract","override","data","sealed","enum","value","inline","inner","suspend","const","lateinit","operator","infix","tailrec","external","annotation","companion","expect","actual","noinline","crossinline","reified"]),lastSegment=name2=>name2.replace(/^(?:[a-z_][\w]*\.)+(?=[A-Z])/,"");function parseType(raw){let s=raw.trim().replace(/^@\w+\s+/,""),nullable3=!1;if(s.endsWith("?")){let inner=s.slice(0,-1).trim();inner.startsWith("(")&&closing(inner,0)===inner.length-1?(nullable3=!0,s=inner.slice(1,-1).trim()):topLevelArrow(inner)<0&&(nullable3=!0,s=inner)}let suspend=/^suspend\s/.test(s);suspend&&(s=s.replace(/^suspend\s+/,""));let arrow=topLevelArrow(s);if(arrow>=0){let left=s.slice(0,arrow).trim(),params=left.startsWith("(")?left.slice(1,closing(left,0)):left,list=params.trim()?splitTopLevel(params).map(p=>parseType(p.includes(":")&&!p.includes("->")?p.slice(p.indexOf(":")+1):p)):[];return{name:"Function",args:[],nullable:nullable3,fn:{params:list,ret:parseType(s.slice(arrow+2)),suspend}}}let lt=s.indexOf("<");if(lt>0){let close=closing(s,lt),args=splitTopLevel(s.slice(lt+1,close)).map(a=>parseType(a.replace(/^\s*(?:out|in)\s+/,"").replace(/^\s*\*\s*$/,"Any?")));return{name:lastSegment(s.slice(0,lt).trim()),args,nullable:nullable3}}return{name:lastSegment(s),args:[],nullable:nullable3}}function topLevelArrow(s){let depth=0;for(let i=0;i<s.length-1;i++){let c=s[i];if("(<[".includes(c))depth++;else if(")]".includes(c)||c===">"&&s[i-1]!=="-")depth--;else if(c==="-"&&s[i+1]===">"&&depth===0)return i}return-1}function parseTypeParams(src){return splitTopLevel(src).map(p=>p.trim().replace(/^(?:reified|out|in)\s+/,"")).filter(Boolean).map(p=>{let colon=p.indexOf(":");return colon<0?{name:p}:{name:p.slice(0,colon).trim(),bound:parseType(p.slice(colon+1))}})}function parseParams(src,m){if(!m.trim())return[];let out=[],offset=0;for(let piece of splitTopLevel(m)){let text2=src.slice(offset,offset+piece.length);offset+=piece.length+1;let t=text2.trim(),mt=piece.trim();if(!t)continue;let vararg=!1,prop,privateProp=!1;for(;;){let ann=/^@[\w.:]+/.exec(mt);if(ann){let cut=ann[0].length,paren=/^\s*\(/.exec(mt.slice(cut));paren&&(cut=closing(mt,cut+paren[0].length-1)+1),t=t.slice(cut).trim(),mt=mt.slice(cut).trim();continue}let word=/^(\w+)\s+/.exec(mt);if(word&&(MODIFIERS.has(word[1])||word[1]==="vararg"||word[1]==="val"||word[1]==="var")){word[1]==="vararg"&&(vararg=!0),(word[1]==="private"||word[1]==="internal"||word[1]==="protected")&&(privateProp=!0),(word[1]==="val"||word[1]==="var")&&(prop=word[1]),t=t.slice(word[0].length).trim(),mt=mt.slice(word[0].length).trim();continue}break}let colon=mt.indexOf(":");if(colon<0)continue;let eq=topLevelIndex2(mt,"=",colon),typeEnd=eq<0?t.length:eq;out.push({name:t.slice(0,colon).trim().replace(/`/g,""),type:parseType(t.slice(colon+1,typeEnd)),vararg,hasDefault:eq>=0,prop:privateProp?void 0:prop})}return out}function topLevelIndex2(s,ch,from=0){let depth=0;for(let i=from;i<s.length;i++){let c=s[i];if("(<[{".includes(c))depth++;else if(")]}".includes(c)||c===">"&&s[i-1]!=="-")depth--;else if(c===ch&&depth===0&&!(ch==="="&&(s[i+1]==="="||s[i-1]==="!"||s[i-1]==="<"||s[i-1]===">")))return i}return-1}var KEYWORDS=new Set(["fun","val","var","class","interface","object","typealias","constructor","init","import","package"]),Parser=class{src;m;constructor(src,m){this.src=src,this.m=m}lineOf(i){let n2=1;for(let k=0;k<i;k++)this.src[k]===`
|
|
168
|
+
`&&n2++;return n2}firstLine(i){let end=this.src.indexOf(`
|
|
169
|
+
`,i);return this.src.slice(i,end<0?void 0:end).trim()}skipSpace(i,newlines=!0){for(;i<this.m.length&&(this.m[i]===" "||this.m[i]===" "||this.m[i]==="\r"||newlines&&(this.m[i]===`
|
|
170
|
+
`||this.m[i]===";"));)i++;return i}word(i){let r=/^[A-Za-z_][\w]*/.exec(this.m.slice(i,i+64));return r?{w:r[0],end:i+r[0].length}:{w:"",end:i}}header(i,end){let annotations=[],mods=new Set;for(;;){if(i=this.skipSpace(i),i>=end)return null;if(this.m[i]==="@"){let r=/^@[\w.:]+/.exec(this.m.slice(i,i+80)),j=i+r[0].length,args="",k=this.skipSpace(j,!1);if(this.m[k]==="("){let close=closing(this.m,k);args=this.src.slice(k+1,close),j=close+1}annotations.push({name:r[0].slice(1).replace(/^file:/,""),args}),i=j;continue}let{w,end:we}=this.word(i);if(!w)return null;if(w==="fun"&&this.word(this.skipSpace(we)).w==="interface"){mods.add("fun"),i=this.skipSpace(we);continue}if(KEYWORDS.has(w))return{annotations,mods,keyword:w,at:we};if(MODIFIERS.has(w)){mods.add(w),i=we;continue}return null}}skipExpression(i,end){for(;i<end;){let c=this.m[i];if("({[".includes(c)){i=closing(this.m,i)+1;continue}if(c===`
|
|
171
|
+
`){let next=this.skipSpace(i+1,!1);if(/^(\.|\?\.|\?:|&&|\|\||[+\-*/%]\s|->|else\b)/.test(this.m.slice(next,next+5))){i=next;continue}return i}if(c==="}"||c===";")return i;i++}return i}skipBody(i,end){return i=this.skipSpace(i,!1),this.m[i]==="{"?closing(this.m,i)+1:this.m[i]==="="||this.m.startsWith("by ",i)?this.skipExpression(i+1,end):i}until(i,end,stops){for(;i<end;){let c=this.m[i];if(stops.includes(c)||c===`
|
|
172
|
+
`||c===";")return i;if("(<[".includes(c)){i=closing(this.m,i)+1;continue}i++}return i}objcName(h){let a=h.annotations.find(x=>x.name==="ObjCName"||x.name.endsWith(".ObjCName"));if(!a)return;let swift=/swiftName\s*=\s*"([^"]+)"/.exec(a.args);return swift?swift[1]:/^\s*(?:name\s*=\s*)?"([^"]+)"/.exec(a.args)?.[1]}hidden(h){return h.mods.has("private")||h.mods.has("internal")||h.mods.has("protected")||h.annotations.some(a=>a.name==="HiddenFromObjC"||a.name.endsWith(".HiddenFromObjC"))}parse(start,end,aliases,owner){let out=[],i=start;for(;i<end;){let declStart=this.skipSpace(i);if(declStart>=end)break;let h=this.header(declStart,end);if(!h){let nl=this.until(declStart,end,"{");i=this.m[nl]==="{"?closing(this.m,nl)+1:nl+1;continue}let common={line:this.lineOf(declStart),text:this.firstLine(declStart),objcName:this.objcName(h),hidden:this.hidden(h)},j=this.skipSpace(h.at,!1);switch(h.keyword){case"package":case"import":i=this.until(j,end,"")+1;break;case"typealias":{let eq=this.m.indexOf("=",j),name2=this.src.slice(j,eq).trim().replace(/<.*$/,""),stop=this.until(eq+1,end,"");aliases.set(name2,parseType(this.src.slice(eq+1,stop))),i=stop+1;break}case"init":i=this.skipBody(j,end);break;case"constructor":{let close=closing(this.m,j),params=parseParams(this.src.slice(j+1,close),this.m.slice(j+1,close));owner&&!common.hidden&&owner.secondary.push(params);let k=this.skipSpace(close+1,!1);this.m[k]===":"&&(k=this.until(k+1,end,"{")),i=this.skipBody(k,end);break}case"fun":{let typeParams=[];if(this.m[j]==="<"){let close2=closing(this.m,j);typeParams=parseTypeParams(this.src.slice(j+1,close2)),j=this.skipSpace(close2+1,!1)}let paren=this.until(j,end,"("),head=this.src.slice(j,paren).trim(),dot=lastTopLevelDot(head),receiver=dot>=0?parseType(head.slice(0,dot)):void 0,name2=(dot>=0?head.slice(dot+1):head).replace(/`/g,"").trim(),close=closing(this.m,paren),params=parseParams(this.src.slice(paren+1,close),this.m.slice(paren+1,close)),k=this.skipSpace(close+1,!1),ret={name:"Unit",args:[],nullable:!1};if(this.m[k]===":"){let stop=this.until(k+1,end,"{=");ret=parseType(this.src.slice(k+1,stop).replace(/\bwhere\b.*$/,"")),k=stop}i=this.skipBody(k,end);let throws=h.annotations.some(a=>a.name==="Throws"||a.name.endsWith(".Throws"));out.push({kind:"fun",name:name2,typeParams,receiver,params,ret,suspend:h.mods.has("suspend"),throws,...common,hidden:common.hidden||h.mods.has("override")&&["toString","equals","hashCode"].includes(name2)});break}case"val":case"var":{this.m[j]==="<"&&(j=this.skipSpace(closing(this.m,j)+1,!1));let colon=this.until(j,end,":="),head=this.src.slice(j,colon).trim(),dot=lastTopLevelDot(head),receiver=dot>=0?parseType(head.slice(0,dot)):void 0,name2=(dot>=0?head.slice(dot+1):head).replace(/`/g,"").trim(),type={name:"Any",args:[],nullable:!0},k=colon;if(this.m[colon]==="="&&(type=inferLiteral(this.src.slice(colon+1,this.skipExpression(colon+1,end)))??type),this.m[colon]===":"){let stop=this.until(colon+1,end,"="),acc=/\s(?:get|set)\s*\(/.exec(this.m.slice(colon+1,stop));acc&&(stop=colon+1+acc.index),type=parseType(this.src.slice(colon+1,stop).replace(/\bby\b.*$/,"")),k=stop}for(k=this.skipBody(k,end);;){let n2=this.skipSpace(k),acc=/^(?:(?:private|internal|protected)\s+)?(?:get|set)\b/.exec(this.m.slice(n2,n2+40));if(!acc)break;let p=this.skipSpace(n2+acc[0].length,!1);this.m[p]==="("&&(p=this.skipSpace(closing(this.m,p)+1,!1)),this.m[p]===":"&&(p=this.until(p+1,end,"={"));let after=this.skipBody(p,end);k=after>p?after:this.until(p,end,"")}i=k,out.push({kind:"prop",name:name2,type,mutable:h.keyword==="var",receiver,isConst:h.mods.has("const"),...common});break}case"class":case"interface":case"object":{let{w:rawName,end:ne}=this.word(j),isCompanion=h.mods.has("companion"),name2=h.keyword==="object"&&(!rawName||rawName==="Companion")&&isCompanion?"Companion":rawName,k=rawName?ne:j,typeParams=[];if(k=this.skipSpace(k,!1),this.m[k]==="<"){let close=closing(this.m,k);typeParams=parseTypeParams(this.src.slice(k+1,close)),k=this.skipSpace(close+1,!1)}let ctor=null,ctorHidden=!1,ctorHead=/^((?:@[\w.]+(?:\([^)]*\))?\s*|(?:private|internal|protected|public)\s+)*)constructor\s*/.exec(this.m.slice(k,k+200));if(ctorHead&&(ctorHidden=/\b(private|internal|protected)\b/.test(ctorHead[1]??""),k+=ctorHead[0].length),this.m[k]==="("){let close=closing(this.m,k);ctor=parseParams(this.src.slice(k+1,close),this.m.slice(k+1,close)),k=this.skipSpace(close+1,!1)}let supers=[];if(this.m[k]===":"){let stop=this.until(k+1,end,"{");supers=splitTopLevel(this.src.slice(k+1,stop)).map(s=>s.trim().replace(/\(.*$/s,"").replace(/<.*$/s,"").trim()).filter(Boolean),k=stop}let flavor=h.keyword==="interface"?"interface":h.mods.has("enum")?"enum":h.mods.has("annotation")?"annotation":h.mods.has("sealed")?"sealed":h.mods.has("value")||h.mods.has("inline")?"value":h.mods.has("data")?"data":h.keyword==="object"?"object":"class",decl={kind:"class",name:name2,flavor,isAbstract:h.mods.has("abstract")||flavor==="sealed",isInner:h.mods.has("inner"),isCompanion,isSealed:h.mods.has("sealed"),isObject:h.keyword==="object",typeParams,ctor:ctorHidden?[]:ctor,secondary:[],members:[],nested:[],entries:[],supers,...common};if(k=this.skipSpace(k,!1),this.m[k]==="{"){let close=closing(this.m,k),bodyStart=k+1;if(flavor==="enum"){let semi=topLevelIndex2(this.m.slice(bodyStart,close),";"),entriesEnd=semi<0?close:bodyStart+semi;decl.entries=splitTopLevel(this.m.slice(bodyStart,entriesEnd)).map(e=>/^\s*(?:@\w+(?:\([^)]*\))?\s*)*([A-Za-z_]\w*)/.exec(e)?.[1]).filter(e=>!!e),bodyStart=semi<0?close:entriesEnd+1}for(let d of this.parse(bodyStart,close,aliases,decl))d.kind==="class"?d.isCompanion?decl.nested.unshift(d):decl.nested.push(d):decl.members.push(d);i=close+1}else i=k;out.push(decl);break}default:i=this.until(j,end,"")+1}}return out}};function inferLiteral(expr){let e=expr.trim(),t=name2=>({name:name2,args:[],nullable:!1});return/^-?\d[\d_]*$/.test(e)?t("Int"):/^-?\d[\d_]*L$/.test(e)?t("Long"):/^-?\d[\d_]*u$/i.test(e)?t("UInt"):/^-?(\d[\d_]*)?\.\d+(e-?\d+)?$/i.test(e)?t("Double"):/^-?[\d.]+f$/i.test(e)?t("Float"):/^(true|false)$/.test(e)?t("Boolean"):/^"/.test(e)?t("String"):/^'.'$/.test(e)?t("Char"):null}function lastTopLevelDot(s){let depth=0,last=-1;for(let i=0;i<s.length;i++){let c=s[i];"(<[".includes(c)?depth++:")]".includes(c)||c===">"&&s[i-1]!=="-"?depth--:c==="."&&depth===0&&(last=i)}return last}function parseKotlin(src){let m=mask(src),pkg=/^\s*package\s+([\w.]+)/m.exec(m),aliases=new Map,decls=new Parser(src,m).parse(0,m.length,aliases);return{packageName:pkg?src.slice(pkg.index,pkg.index+pkg[0].length).replace(/^\s*package\s+/,""):"",decls,typeAliases:aliases}}var PRIMITIVES={Int:{value:"Int32",box:"KotlinInt",zero:"0",ctor:"KotlinInt(int: 0)"},Long:{value:"Int64",box:"KotlinLong",zero:"0",ctor:"KotlinLong(longLong: 0)"},Short:{value:"Int16",box:"KotlinShort",zero:"0",ctor:"KotlinShort(short: 0)"},Byte:{value:"Int8",box:"KotlinByte",zero:"0",ctor:"KotlinByte(char: 0)"},UInt:{value:"UInt32",box:"KotlinUInt",zero:"0",ctor:"KotlinUInt(unsignedInt: 0)"},ULong:{value:"UInt64",box:"KotlinULong",zero:"0",ctor:"KotlinULong(unsignedLongLong: 0)"},UShort:{value:"UInt16",box:"KotlinUShort",zero:"0",ctor:"KotlinUShort(unsignedShort: 0)"},UByte:{value:"UInt8",box:"KotlinUByte",zero:"0",ctor:"KotlinUByte(unsignedChar: 0)"},Float:{value:"Float",box:"KotlinFloat",zero:"0",ctor:"KotlinFloat(float: 0)"},Double:{value:"Double",box:"KotlinDouble",zero:"0",ctor:"KotlinDouble(double: 0)"},Boolean:{value:"Bool",box:"KotlinBoolean",zero:"false",ctor:"KotlinBoolean(bool: false)"}},NSOBJECT_CLASS_METHODS=new Set(["version"]),PRIMITIVE_ARRAYS=new Set(["ByteArray","IntArray","LongArray","ShortArray","FloatArray","DoubleArray","BooleanArray","CharArray","UByteArray","UIntArray","ULongArray","UShortArray"]),FLOWS={Flow:"Kotlinx_coroutines_coreFlow",StateFlow:"Kotlinx_coroutines_coreStateFlow",SharedFlow:"Kotlinx_coroutines_coreSharedFlow",MutableStateFlow:"Kotlinx_coroutines_coreMutableStateFlow",MutableSharedFlow:"Kotlinx_coroutines_coreMutableSharedFlow"},LISTS=new Set(["List","Collection","Iterable"]),cap2=s=>s.charAt(0).toUpperCase()+s.slice(1),lowerFirst=s=>s.charAt(0).toLowerCase()+s.slice(1);function swiftMethodName(name2){return/^(?:init|alloc|copy|mutableCopy|new)(?![a-z0-9])/.test(name2)?{name:`do${cap2(name2)}`,renamed:!0}:name2==="hash"||name2==="description"?{name:`${name2}_`,renamed:!0}:{name:name2,renamed:!1}}function swiftEnumEntry(name2){if(name2.includes("_")||name2===name2.toUpperCase()){let parts=name2.toLowerCase().split("_").filter(Boolean);return parts[0]+parts.slice(1).map(cap2).join("")}return lowerFirst(name2)}function facadeName(fileName){let stem=fileName.replace(/\.kts?$/,"").replace(/^.*\//,"").replace(/[^A-Za-z0-9_]/g,"_");return`${cap2(stem)}Kt`}function swiftType(t,pos,sc){let alias=sc.aliases.get(t.name);if(alias&&!t.args.length)return swiftType({...alias,nullable:alias.nullable||t.nullable},pos,sc);let opt2=s=>t.nullable?`${s.startsWith("any ")?`(${s})`:s}?`:s;if(t.fn){if(t.fn.suspend)return sc.notes.add("suspend-lambda"),opt2(`any KotlinSuspendFunction${t.fn.params.length}`);(t.fn.params.some(p=>PRIMITIVES[p.name])||PRIMITIVES[t.fn.ret.name])&&sc.notes.add("closure-boxing");let params=t.fn.params.map(p=>swiftType(p,"element",sc)).join(", "),ret=t.fn.ret.name==="Unit"&&!t.fn.ret.nullable?"Void":swiftType(t.fn.ret,"element",sc);return t.nullable?`((${params}) -> ${ret})?`:`(${params}) -> ${ret}`}let prim=PRIMITIVES[t.name];if(prim)return pos==="value"&&!t.nullable?((t.name==="Int"||t.name==="Long")&&sc.notes.add("int32"),prim.value):(sc.notes.add("boxed"),opt2(prim.box));switch(t.name){case"Char":return sc.notes.add("char"),pos==="value"&&!t.nullable?"unichar":t.nullable?"Any?":"Any";case"String":return opt2(pos==="generic"?"NSString":"String");case"Unit":return t.nullable?"KotlinUnit?":"Void";case"Nothing":return sc.notes.add("nothing"),"Void";case"Any":return opt2(pos==="generic"?"AnyObject":"Any")}if(LISTS.has(t.name)){if(pos==="generic")return opt2("NSArray");let e=t.args[0];return!e||e.nullable?(e?.nullable&&sc.notes.add("nullable-element"),opt2("[Any]")):opt2(`[${swiftType(e,"element",sc)}]`)}if(t.name==="Set"){if(pos==="generic")return opt2("NSSet");let e=t.args[0];return!e||e.nullable?(e?.nullable&&sc.notes.add("nullable-element"),opt2("Set<AnyHashable>")):opt2(`Set<${swiftType(e,"element",sc)}>`)}if(t.name==="Map"){if(pos==="generic")return opt2("NSDictionary");let[k,v]=t.args;(k?.nullable||v?.nullable)&&sc.notes.add("nullable-element");let key=!k||k.nullable?"AnyHashable":swiftType(k,"element",sc),val=!v||v.nullable?"Any":swiftType(v,"element",sc);return opt2(`[${key}: ${val}]`)}if(t.name==="MutableList")return sc.notes.add("mutable-collection"),opt2("NSMutableArray");if(t.name==="MutableSet")return sc.notes.add("mutable-collection"),opt2(`KotlinMutableSet<${generic(t.args[0],sc)}>`);if(t.name==="MutableMap")return sc.notes.add("mutable-collection"),opt2(`KotlinMutableDictionary<${generic(t.args[0],sc)}, ${generic(t.args[1],sc)}>`);if(t.name==="Array")return opt2(`KotlinArray<${generic(t.args[0],sc)}>`);if(PRIMITIVE_ARRAYS.has(t.name))return opt2(`Kotlin${t.name}`);if(FLOWS[t.name])return sc.notes.add("flow"),opt2(`any ${FLOWS[t.name]}`);if(sc.funTypeParams.has(t.name)||sc.interfaceTypeParams.has(t.name))return sc.notes.add("erased-generic"),pos==="generic"?"AnyObject":"Any?";if(sc.classTypeParams.has(t.name)){let concrete="NSString";return pos==="generic"||sc.classTypeParams.get(t.name)&&!t.nullable?concrete:`${concrete}?`}let cls=sc.classes.get(t.name);if(cls){if(cls.flavor==="value")return sc.notes.add("value-class"),t.nullable?"Any?":"Any";if(cls.flavor==="interface")return cls.typeParams.length&&sc.notes.add("erased-generic"),t.nullable?`(any ${t.name})?`:`any ${t.name}`;let args=cls.typeParams.length?`<${cls.typeParams.map((_,i)=>generic(t.args[i],sc)).join(", ")}>`:"";return opt2(`${t.name}${args}`)}return sc.unknown.add(t.name),sc.notes.add("unknown-type"),opt2(t.name)}function generic(t,sc){if(!t)return"AnyObject";let s=swiftType({...t,nullable:!1},"generic",sc);return s.startsWith("any ")||s==="Any"?"AnyObject":s}function placeholder(swift,t,sc){if(swift.endsWith("?"))return"nil";if(/^(U?Int(8|16|32|64)|Float|Double|unichar)$/.test(swift))return"0";if(swift==="Bool")return"false";if(swift==="String"||swift==="Any")return'""';if(swift==="AnyObject")return"NSObject()";if(swift.startsWith("[")&&swift.includes(":"))return"[:]";if(swift.startsWith("[")||swift.startsWith("Set<"))return"[]";if(swift==="NSMutableArray")return"NSMutableArray()";if(/^KotlinMutable(Set|Dictionary)</.test(swift))return`${swift}()`;if(/^Kotlin\w+Array$/.test(swift))return`${swift}(size: 0)`;if(swift.startsWith("KotlinArray<"))return`${swift}(size: 0) { _ in nil }`;let box=Object.values(PRIMITIVES).find(p=>p.box===swift);if(box)return box.ctor;if(t?.fn?.suspend)return null;if(t?.fn){let args=t.fn.params.length?`${t.fn.params.map(()=>"_").join(", ")} in `:"",retSwift=t.fn.ret.name==="Unit"&&!t.fn.ret.nullable?"Void":swiftType(t.fn.ret,"element",sc),ret=retSwift==="Void"?"":placeholder(retSwift,t.fn.ret,sc)??"nil";return`{ ${args}${ret} }`.replace("{ }","{ }")}if(t){let cls=sc.classes.get(t.name);if(cls?.flavor==="enum"&&cls.entries[0])return`${t.name}.${swiftEnumEntry(cls.entries[0])}`;if(cls?.isObject)return`${swiftPath(cls,sc)}.shared`}return null}function swiftPath(cls,sc){for(let[name2,c]of sc.classes)if(c===cls)return name2;return cls.name}var NOTE_TEXT={int32:()=>({level:"info",text:"Kotlin Int is Int32 and Long is Int64 in Swift. Swift\u2019s own Int is 64-bit, so convert with Int(value) or Int32(value)."}),boxed:()=>({level:"info",text:"Nullable numbers and Booleans, and numbers inside collections or closures, are boxed: Int? is KotlinInt?, a subclass of NSNumber. Read them with .int32Value, .boolValue and so on, and create them with KotlinInt(int: 1)."}),"default-args":x=>({level:"warning",text:`Default values aren\u2019t exported: Swift must pass ${x}. Add a Kotlin overload without those parameters, or a Swift extension that fills them in.`}),suspend:()=>({level:"info",text:"Suspend functions are called with try await (Swift 5.5+), or with a completionHandler. Without @Throws only CancellationException reaches Swift as an error; any other exception crashes the app."}),throws:()=>({level:"info",text:"@Throws turns the listed exceptions (and subclasses) into Swift errors, so the call needs try. Other exceptions still crash."}),flow:()=>({level:"warning",text:"Swift can\u2019t iterate a Flow: it arrives as a Kotlinx_coroutines_coreFlow protocol with a collect method that takes a FlowCollector. Use SKIE or KMP-NativeCoroutines to get an AsyncSequence, or Swift export (Alpha), which maps Flow to AsyncSequence."}),"enum-switch":()=>({level:"warning",text:"A Kotlin enum is a class in Swift, not a Swift enum: entries are static properties, and a switch over it needs a default case. SKIE or Swift export (Alpha) give a real Swift enum."}),"sealed-switch":()=>({level:"warning",text:"Swift can\u2019t switch exhaustively over a sealed class: check subclasses with as? or is and keep a fallback. SKIE\u2019s onEnum(of:) or Swift export (Alpha) give exhaustive switches."}),"erased-generic":()=>({level:"warning",text:"Generics on functions and interfaces are erased: the type parameter becomes Any? in Swift. Only classes keep their type parameters."}),vararg:()=>({level:"info",text:"vararg parameters take a KotlinArray in Swift, not a variadic list."}),"value-class":()=>({level:"warning",text:"Value (inline) classes are exported as their underlying value typed Any, so Swift loses the type. Use a regular class at the API boundary."}),renamed:()=>({level:"info",text:"Names that collide with Objective-C conventions are renamed: copy() is doCopy(), names starting with new, init, alloc or mutableCopy get a do prefix, and hash() and description become hash_() and description_. Use @ObjCName to choose your own."}),"static-extension":()=>({level:"info",text:"Extensions on String, collections, primitives, Any and interfaces become static functions on the file\u2019s Kt class, with the receiver as the first, unlabeled argument. Extensions on your own classes stay instance members."}),"closure-boxing":()=>({level:"info",text:"Inside closures, numbers and Booleans are boxed: (Int) -> Unit is (KotlinInt) -> Void and (String) -> Boolean is (String) -> KotlinBoolean."}),"suspend-lambda":()=>({level:"warning",text:"A suspend lambda parameter becomes a KotlinSuspendFunction protocol that Swift can\u2019t easily implement. Take a regular callback or return a value from a suspend function instead."}),char:()=>({level:"info",text:"Char is unichar (a UInt16 UTF-16 unit) in Swift, and Char? or a Char inside a collection is Any."}),"unknown-type":x=>({level:"info",text:`${x} isn\u2019t declared in this code. Classes from libraries get a prefix in Swift (kotlinx-datetime\u2019s Instant is Kotlinx_datetimeInstant), unless you export the library. Check the framework header.`}),"mutable-collection":()=>({level:"info",text:"Read-only List, Set and Map bridge to Swift arrays, sets and dictionaries. MutableList is NSMutableArray, and MutableSet and MutableMap are KotlinMutableSet and KotlinMutableDictionary."}),"nullable-element":()=>({level:"info",text:"Collections with nullable elements lose their element type: List<String?> is [Any] in Swift, and nulls arrive as NSNull."}),object:()=>({level:"info",text:"An object is a singleton: use .shared."}),companion:()=>({level:"info",text:"Companion members are on .companion, for example User.companion.guest()."}),interface:()=>({level:"info",text:"Interfaces become Swift protocols, so Swift classes can implement them (subclass NSObject)."}),nothing:()=>({level:"info",text:"Nothing as a return type is Void in Swift: Swift doesn\u2019t know the call never returns."}),"nsobject-clash":()=>({level:"warning",text:"A top-level property named version clashes with NSObject\u2019s version() class method, so Swift reads it as a method call on the file\u2019s Kt class, like PlatformKt.version(). Rename it, or give it another Swift name with @ObjCName."}),"data-copy":()=>({level:"info",text:"Data classes keep equality (== uses isEqual), hash and description, and copy() becomes doCopy(\u2026) with every parameter required."})},FILE_LEVEL=new Set(["int32","boxed"]);function note(kind,x){return{kind,...NOTE_TEXT[kind](x)}}function paramList(params,sc){let args=[],needs=[];for(let p of params){let swift=p.vararg?`KotlinArray<${generic(p.type,sc)}>`:swiftType(p.type,"value",sc);p.vararg&&sc.notes.add("vararg");let value=placeholder(swift,p.vararg?void 0:p.type,sc);value===null&&(value=lowerFirst(swift.replace(/^any /,"").replace(/[<>.,\s?()]/g,"")),needs.push([value,swift])),args.push(`${p.name}: ${value}`)}return{labels:params.map(p=>`${p.name}:`).join(""),args,needs}}function defaultsNote(params){let d=params.filter(p=>p.hasDefault).map(p=>p.name);return d.length?note("default-args",d.map(x=>`\`${x}\``).join(", ")):null}var Writer=class{rows=[];body=[];conformances=[];params=new Map;hidden=[];sc;facade;constructor(sc,facade){this.sc=sc,this.facade=facade}need(name2,type){this.params.has(name2)||this.params.set(name2,type)}instanceOf(cls,path){if(cls.isObject)return`${path}.shared`;let name2=lowerFirst(path.replace(/\./g,"")),type=cls.flavor==="interface"?`any ${path}`:cls.typeParams.length?`${path}<${cls.typeParams.map(()=>"NSString").join(", ")}>`:path;return this.need(name2,type),name2}emit(kotlin,swiftLines,notes,statements=swiftLines){this.rows.push({kotlin:kotlin.text,line:kotlin.line,swift:swiftLines.join(`
|
|
173
|
+
`),notes}),this.body.push(` // ${kotlin.text}`,...statements.map(s=>` ${s}`))}withNotes(fn){let before=new Set(this.sc.notes),value=fn(),notes=[...this.sc.notes].filter(k=>!before.has(k)&&!FILE_LEVEL.has(k)).map(k=>note(k));return{value,notes}}fun(f2,target,isStaticExt){if(f2.hidden)return void this.hidden.push(f2.text);this.sc.funTypeParams=new Set(f2.typeParams.map(t=>t.name));let notes=[],{value,notes:added}=this.withNotes(()=>{let named=f2.objcName?{name:f2.objcName,renamed:!1}:swiftMethodName(f2.name),p=paramList(f2.params,this.sc);for(let[n2,t]of p.needs)this.need(n2,t);let args=p.args,recvNote=!1;if(f2.receiver&&isStaticExt){let recvSwift=swiftType(f2.receiver,"value",this.sc);args=[placeholder(recvSwift,f2.receiver,this.sc)??(()=>{let n2=lowerFirst(recvSwift.replace(/^any /,"").replace(/[<>.,\s?()]/g,""));return this.need(n2,recvSwift),n2})(),...args],recvNote=!0}let call=`${target??this.facade}.${named.name}(${args.join(", ")})`,ret=f2.ret.name==="Unit"&&!f2.ret.nullable?"Void":swiftType(f2.ret,"value",this.sc),tryKw=f2.suspend?"try await ":f2.throws?"try ":"";return{stmt:ret==="Void"?`${tryKw}${call}`:`let _: ${ret} = ${tryKw}${call}`,named,recvNote}});notes.push(...added),value.named.renamed&¬es.push(note("renamed")),value.recvNote&¬es.push(note("static-extension")),f2.suspend?notes.push(note("suspend")):f2.throws&¬es.push(note("throws"));let d=defaultsNote(f2.params);d&¬es.push(d),this.sc.funTypeParams=new Set,this.emit(f2,[value.stmt],dedupe2(notes))}prop(p,target,isStaticExt,sink){if(p.hidden)return void this.hidden.push(p.text);let{value,notes}=this.withNotes(()=>{let name2=p.objcName??(p.name==="description"?"description_":p.name),type=swiftType(p.type,"value",this.sc),lines2=[];if(p.receiver&&isStaticExt){let recvSwift=swiftType(p.receiver,"value",this.sc),recv=placeholder(recvSwift,p.receiver,this.sc)??"nil";lines2.push(`let _: ${type} = ${this.facade}.${name2}(${recv})`)}else{let owner=target??this.facade,clash=!target&&NSOBJECT_CLASS_METHODS.has(name2);if(lines2.push(`let _: ${type} = ${owner}.${name2}${clash?"()":""}`),clash&&this.sc.notes.add("nsobject-clash"),p.mutable){let v=placeholder(type,p.type,this.sc);v!==null&&lines2.push(`${owner}.${name2} = ${v}`)}}return{lines:lines2,renamed:name2!==p.name&&!p.objcName}}),extra=[...notes];value.renamed&&extra.push(note("renamed")),p.receiver&&isStaticExt&&extra.push(note("static-extension")),sink?sink.push(...value.lines):this.emit(p,value.lines,dedupe2(extra))}cls(c,path){if(c.hidden)return void this.hidden.push(c.text);if(c.flavor==="value"){this.rows.push({kotlin:c.text,line:c.line,swift:"Any",notes:[note("value-class")]});return}let sc=this.sc,prevTypeParams=sc.classTypeParams,prevErased=sc.interfaceTypeParams;c.flavor==="interface"?sc.interfaceTypeParams=new Set([...prevErased,...c.typeParams.map(t=>t.name)]):sc.classTypeParams=new Map(c.typeParams.map(t=>[t.name,!!t.bound&&!t.bound.nullable]));let notes=[],lines2=[],before=new Set(sc.notes);if(c.flavor==="enum"){let entries=c.entries.map(e=>`${path}.${swiftEnumEntry(e)}`);entries[0]&&lines2.push(`let _: ${path} = ${entries[0]}`),lines2.push(`let _: [${path}] = ${path}.entries`),entries.length&&lines2.push(`switch ${entries[0]} {`,...entries.map(e=>`case ${e}: break`),"default: break","}"),notes.push(note("enum-switch"))}else if(c.flavor==="interface")c.isSealed?notes.push(note("sealed-switch")):(notes.push(note("interface")),this.conformances.push(this.conformance(c,path))),c.typeParams.length&¬es.push(note("erased-generic"));else if(c.isObject&&!c.isCompanion)lines2.push(`let _: ${path} = ${path}.shared`),notes.push(note("object"));else if(c.flavor!=="annotation"&&!c.isCompanion){c.flavor==="sealed"&¬es.push(note("sealed-switch"));let ctors=c.isAbstract?[]:[c.ctor??[],...c.secondary],typeArgs=c.typeParams.length?`<${c.typeParams.map(()=>"NSString").join(", ")}>`:"";for(let params of ctors){if(c.isInner){lines2.push(`let _ = ${path}(${this.instanceOf(sc.classes.get(path.split(".").slice(0,-1).join(".")),path.split(".").slice(0,-1).join("."))})`);continue}let p=paramList(params,sc);for(let[n2,t]of p.needs)this.need(n2,t);lines2.push(`let _ = ${path}${typeArgs}(${p.args.join(", ")})`);let d=defaultsNote(params);d&¬es.push(d)}if(c.flavor==="data"&&c.ctor?.length){let self2=this.instanceOf(c,path),p=paramList(c.ctor,sc);lines2.push(`let _: ${path}${typeArgs} = ${self2}.doCopy(${p.args.join(", ")})`),notes.push(note("data-copy"))}}if(c.supers.length){let parent=[...sc.classes.entries()].find(([n2,p])=>p.isSealed&&(c.supers.includes(n2)||c.supers.includes(p.name))&&p!==c);parent&&lines2.push(`if let _ = ${this.instanceOf(parent[1],parent[0])} as? ${path} {}`)}for(let k of sc.notes)!before.has(k)&&!FILE_LEVEL.has(k)&¬es.push(note(k));if(c.flavor!=="interface"&&!c.isCompanion){let self2=c.isObject?`${path}.shared`:this.instanceOf(c,path);for(let p of c.ctor??[])p.prop&&this.prop({kind:"prop",name:p.name,type:p.type,mutable:p.prop==="var",isConst:!1,line:c.line,text:"",hidden:!1},self2,!1,lines2)}for(let k of sc.notes)!before.has(k)&&!FILE_LEVEL.has(k)&&!notes.some(n2=>n2.kind===k)&¬es.push(note(k));lines2.length?this.emit(c,lines2,dedupe2(notes)):notes.length&&this.rows.push({kotlin:c.text,line:c.line,swift:c.flavor==="interface"?`protocol ${path}`:path,notes:dedupe2(notes)});let self=c.isObject?`${path}.shared`:null,target=()=>self??this.instanceOf(c,path);for(let m of c.members){if(c.flavor==="interface"){m.kind==="fun"?this.fun(m,target(),!1):this.prop(m,target(),!1);continue}m.kind==="fun"?this.fun(m,c.isCompanion?path:target(),!1):this.prop(m,c.isCompanion?path:target(),!1)}for(let n2 of c.nested)if(n2.isCompanion){let companion=`${path}.companion`;this.rows.push({kotlin:n2.text,line:n2.line,swift:companion,notes:[note("companion")]});for(let m of n2.members)m.kind==="fun"?this.fun(m,companion,!1):this.prop(m,companion,!1)}else this.cls(n2,nestedPath(c,path,n2));sc.classTypeParams=prevTypeParams,sc.interfaceTypeParams=prevErased}conformance(c,path){let sc=this.sc,out=[`final class Swift${path.replace(/\./g,"")}: NSObject, ${path} {`];for(let m of c.members)if(!m.hidden){if(m.kind==="prop"){let type=swiftType(m.type,"value",sc),value=placeholder(type,m.type,sc);if(value===null)continue;out.push(m.mutable?` var ${m.name}: ${type} = ${value}`:` var ${m.name}: ${type} { ${value} }`)}else if(!m.receiver){sc.funTypeParams=new Set(m.typeParams.map(t=>t.name));let named=m.objcName?{name:m.objcName}:swiftMethodName(m.name),params=m.params.map(p=>`${p.name}: ${p.vararg?`KotlinArray<${generic(p.type,sc)}>`:swiftType(p.type,"value",sc)}`).join(", "),ret=m.ret.name==="Unit"&&!m.ret.nullable?"Void":swiftType(m.ret,"value",sc);if(sc.funTypeParams=new Set,m.suspend){let handlerArg=ret==="Void"?"Error?":`${ret.endsWith("?")?ret:`${ret}?`}, Error?`;out.push(` func ${named.name}(${params}${params?", ":""}completionHandler: @escaping (${handlerArg}) -> Void) { completionHandler(${ret==="Void"?"nil":"nil, nil"}) }`);continue}let value=ret==="Void"?null:placeholder(ret,m.ret,sc);if(ret!=="Void"&&value===null)continue;out.push(` func ${named.name}(${params})${ret==="Void"?"":` -> ${ret}`} {${value===null?"":` ${value} `}}`)}}return out.push("}"),out.join(`
|
|
174
|
+
`)}};function nestedPath(outer,path,inner){return outer.flavor==="interface"?`${path.replace(/\./g,"")}${inner.name}`:`${path}.${inner.name}`}function dedupe2(notes){let seen=new Set;return notes.filter(n2=>seen.has(n2.text)?!1:(seen.add(n2.text),!0))}var BUILTIN_RECEIVERS=new Set([...Object.keys(PRIMITIVES),...PRIMITIVE_ARRAYS,...LISTS,"Char","String","CharSequence","Any","Set","Map","MutableList","MutableSet","MutableMap","Array","Function","Unit","Nothing","Throwable","Exception",...Object.keys(FLOWS)]);function isInstanceExtension(t,classes){if(t.fn||t.nullable||BUILTIN_RECEIVERS.has(t.name))return!1;let c=classes.get(t.name);return c?c.flavor!=="interface"&&c.flavor!=="value":/^[A-Z]/.test(t.name)}function swiftInterop(src,o){let parsed=parseKotlin(src),classes=new Map,index=(c,path)=>{classes.set(path,c),classes.has(c.name)||classes.set(c.name,c);for(let n2 of c.nested)n2.isCompanion||index(n2,nestedPath(c,path,n2))};for(let d of parsed.decls)d.kind==="class"&&index(d,d.name);let sc={classes,aliases:parsed.typeAliases,classTypeParams:new Map,funTypeParams:new Set,interfaceTypeParams:new Set,notes:new Set,unknown:new Set},facade=facadeName(o.fileName),w=new Writer(sc,facade);for(let d of parsed.decls)if(d.kind==="class")w.cls(d,d.name);else if(d.kind==="fun"||d.kind==="prop")if(d.receiver&&isInstanceExtension(d.receiver,classes)){let own2=classes.get(d.receiver.name),self=own2?.isObject?`${d.receiver.name}.shared`:lowerFirst(d.receiver.name.replace(/\./g,""));own2?.isObject||w.params.set(self,d.receiver.name),d.kind==="fun"?w.fun(d,self,!1):w.prop(d,self,!1)}else d.kind==="fun"?w.fun(d,null,!!d.receiver):w.prop(d,null,!!d.receiver);let params=[...w.params].map(([n2,t])=>`${n2}: ${t}`).join(", "),lines2=[`import ${o.module}`,"",`// How the Kotlin API in ${o.fileName} reads from Swift, generated by androidboss.info.`,"// Every line type-checks against a framework built from the same Kotlin code.","",`func examples(${params}) async throws {`,...w.body,"}",...w.conformances.flatMap(c=>["",c]),""],fileNotes=["int32","boxed"].filter(k=>sc.notes.has(k)).map(k=>note(k));for(let u of sc.unknown)fileNotes.push(note("unknown-type",u));return{rows:w.rows,swiftFile:lines2.join(`
|
|
175
|
+
`),notes:fileNotes,hidden:w.hidden}}var kmp_libraries_default={checkedOn:"2026-11-05",libraries:{"ai.koog:koog-agents":{version:"1.3.0",prerelease:!1,androidViaJvm:!1,released:"2026-09-23",targets:["android","ios","jvm","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64"]},"androidx.datastore:datastore-preferences-core":{version:"1.3.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-21",targets:["android","ios","jvm","macos","js","wasmJs","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","linux_arm64","linux_x64","macos_arm64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"androidx.room:room-runtime":{version:"2.8.5",prerelease:!1,androidViaJvm:!1,released:"2026-09-09",targets:["android","ios","jvm","macos","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"androidx.sqlite:sqlite-bundled":{version:"2.7.1",prerelease:!1,androidViaJvm:!1,released:"2026-09-09",targets:["android","ios","jvm","macos","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","linux_arm64","linux_x64","macos_arm64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"app.cash.sqldelight:runtime":{version:"2.4.1",prerelease:!1,androidViaJvm:!0,released:"2026-10-06",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"app.cash.turbine:turbine":{version:"1.2.1",prerelease:!1,androidViaJvm:!0,released:"2025-06-11",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"cafe.adriel.voyager:voyager-navigator":{version:"2.2.21-1.10.3",prerelease:!1,androidViaJvm:!1,released:"2026-06-08",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64"]},"co.touchlab:kermit":{version:"2.2.0",prerelease:!1,androidViaJvm:!1,released:"2026-09-08",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"com.aallam.openai:openai-client":{version:"4.2.0",prerelease:!1,androidViaJvm:!0,released:"2026-10-31",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"com.apollographql.apollo:apollo-runtime":{version:"5.2.0",prerelease:!1,androidViaJvm:!1,released:"2026-09-16",targets:["android","ios","jvm","macos","js","wasmJs","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"com.arkivanov.decompose:decompose":{version:"3.5.0",prerelease:!1,androidViaJvm:!1,released:"2026-03-15",targets:["android","ios","jvm","macos","js","wasmJs","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"com.arkivanov.essenty:lifecycle":{version:"2.7.1",prerelease:!1,androidViaJvm:!1,released:"2026-10-30",targets:["android","ios","jvm","macos","js","wasmJs","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"com.arkivanov.mvikotlin:mvikotlin":{version:"4.4.0",prerelease:!1,androidViaJvm:!1,released:"2026-04-25",targets:["android","ios","jvm","macos","js","wasmJs","linux","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"com.charleskorn.kaml:kaml":{version:"0.104.0",prerelease:!1,androidViaJvm:!0,released:"2025-11-18",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"com.fleeksoft.ksoup:ksoup":{version:"0.2.6",prerelease:!1,androidViaJvm:!1,released:"2026-02-19",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"com.ionspin.kotlin:bignum":{version:"0.3.10",prerelease:!1,androidViaJvm:!0,released:"2024-07-15",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"com.liftric:kvault":{version:"1.12.0",prerelease:!1,androidViaJvm:!1,released:"2023-10-11",targets:["android","ios"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64"]},"com.mikepenz:multiplatform-markdown-renderer":{version:"0.46.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-13",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"com.mohamedrejeb.richeditor:richeditor-compose":{version:"1.2.1",prerelease:!1,androidViaJvm:!1,released:"2026-09-30",targets:["android","ios","jvm","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64"]},"com.revenuecat.purchases:purchases-kmp-core":{version:"4.1.0",prerelease:!1,androidViaJvm:!1,released:"2026-11-05",targets:["android","ios","watchos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"com.rickclephas.kmp:kmp-nativecoroutines-core":{version:"1.0.6",prerelease:!1,androidViaJvm:!0,released:"2026-09-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"com.russhwolf:multiplatform-settings":{version:"1.3.0",prerelease:!1,androidViaJvm:!1,released:"2024-11-29",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"com.slack.circuit:circuit-foundation":{version:"0.39.0",prerelease:!1,androidViaJvm:!1,released:"2026-09-15",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"com.squareup.okio:okio":{version:"3.18.2",prerelease:!1,androidViaJvm:!0,released:"2026-09-04",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"com.squareup.wire:wire-runtime":{version:"7.1.2",prerelease:!1,androidViaJvm:!0,released:"2026-10-27",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","tvos","wasmWasi"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64"]},"de.jensklingenberg.ktorfit:ktorfit-lib":{version:"2.7.5",prerelease:!1,androidViaJvm:!1,released:"2026-06-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","mingw_x64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"dev.chrisbanes.haze:haze":{version:"2.1.0",prerelease:!1,androidViaJvm:!1,released:"2026-11-02",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"dev.gitlive:firebase-auth":{version:"2.8.0",prerelease:!1,androidViaJvm:!1,released:"2026-11-05",targets:["android","ios","jvm","js","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64"]},"dev.gitlive:firebase-firestore":{version:"2.8.0",prerelease:!1,androidViaJvm:!1,released:"2026-11-05",targets:["android","ios","jvm","macos","js","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64"]},"dev.icerock.moko:permissions":{version:"0.20.1",prerelease:!1,androidViaJvm:!1,released:"2025-08-28",targets:["android","ios"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64"]},"dev.icerock.moko:resources":{version:"0.27.1",prerelease:!1,androidViaJvm:!1,released:"2026-09-18",targets:["android","ios","jvm","macos","js","wasmJs","watchos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"dev.mokkery:mokkery-runtime":{version:"3.6.0",prerelease:!1,androidViaJvm:!0,released:"2026-10-29",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"dev.whyoleg.cryptography:cryptography-core":{version:"0.6.0",prerelease:!1,androidViaJvm:!0,released:"2026-04-02",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"dev.zacsweers.metro:runtime":{version:"1.5.2",prerelease:!1,androidViaJvm:!0,released:"2026-11-03",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.arrow-kt:arrow-core":{version:"2.3.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-26",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","mingw_x64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"io.coil-kt.coil3:coil-compose":{version:"3.6.3",prerelease:!1,androidViaJvm:!1,released:"2026-09-18",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"io.github.aakira:napier":{version:"2.7.1",prerelease:!1,androidViaJvm:!1,released:"2024-01-04",targets:["android","ios","jvm","macos","js","wasmJs","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"io.github.alexzhirkevich:compottie":{version:"2.3.3",prerelease:!1,androidViaJvm:!1,released:"2026-10-05",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"io.github.jan-tennert.supabase:postgrest-kt":{version:"3.9.0",prerelease:!1,androidViaJvm:!1,released:"2026-11-03",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"io.github.kevinnzou:compose-webview-multiplatform":{version:"2.0.3",prerelease:!1,androidViaJvm:!1,released:"2025-08-30",targets:["android","ios","jvm","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64"]},"io.github.mirzemehdi:kmpnotifier":{version:"2.0.0",prerelease:!1,androidViaJvm:!1,released:"2026-06-13",targets:["android","ios","jvm","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64"]},"io.github.oshai:kotlin-logging":{version:"8.0.4",prerelease:!1,androidViaJvm:!1,released:"2026-05-27",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.github.vinceglb:filekit-core":{version:"0.17.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-28",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos"],nativeTargets:["ios_arm64","ios_simulator_arm64","linux_arm64","linux_x64","macos_arm64","mingw_x64","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"io.github.xxfast:kstore":{version:"1.1.0",prerelease:!1,androidViaJvm:!1,released:"2026-06-27",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows"],nativeTargets:["ios_arm64","ios_simulator_arm64","linux_x64","macos_arm64","mingw_x64"]},"io.github.z4kn4fein:semver":{version:"3.1.0",prerelease:!1,androidViaJvm:!0,released:"2026-05-04",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.insert-koin:koin-core":{version:"4.2.2",prerelease:!1,androidViaJvm:!0,released:"2026-06-15",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.kotest:kotest-assertions-core":{version:"6.2.6",prerelease:!1,androidViaJvm:!0,released:"2026-10-14",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.ktor:ktor-client-core":{version:"3.6.1",prerelease:!1,androidViaJvm:!0,released:"2026-10-29",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.mockative:mockative":{version:"3.3.2",prerelease:!1,androidViaJvm:!1,released:"2026-06-26",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"io.sentry:sentry-kotlin-multiplatform":{version:"0.29.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-19",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"me.tatarka.inject:kotlin-inject-runtime":{version:"0.9.0",prerelease:!1,androidViaJvm:!0,released:"2026-01-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","androidNative"],nativeTargets:["android_arm32","android_arm64","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_simulator_arm64","watchos_x64"]},"media.kamel:kamel-image":{version:"1.0.9",prerelease:!1,androidViaJvm:!1,released:"2026-01-17",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64"]},"org.jetbrains.androidx.lifecycle:lifecycle-viewmodel":{version:"2.11.0",prerelease:!1,androidViaJvm:!1,released:"2026-07-13",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos"],nativeTargets:["ios_arm64","ios_simulator_arm64","linux_arm64","linux_x64","macos_arm64","mingw_x64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_simulator_arm64"]},"org.jetbrains.androidx.navigation:navigation-compose":{version:"2.10.0",prerelease:!1,androidViaJvm:!1,released:"2026-10-23",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"org.jetbrains.compose.components:components-resources":{version:"1.12.2",prerelease:!1,androidViaJvm:!1,released:"2026-10-15",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","macos_arm64"]},"org.jetbrains.compose.material3:material3":{version:"1.9.0",prerelease:!1,androidViaJvm:!1,released:"2025-10-13",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64"]},"org.jetbrains.kotlinx:atomicfu":{version:"0.33.0",prerelease:!1,androidViaJvm:!0,released:"2026-05-29",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm32_hfp","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-collections-immutable":{version:"0.5.2",prerelease:!1,androidViaJvm:!0,released:"2026-08-28",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-coroutines-core":{version:"1.11.0",prerelease:!1,androidViaJvm:!0,released:"2026-05-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-coroutines-test":{version:"1.11.0",prerelease:!1,androidViaJvm:!0,released:"2026-05-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-datetime":{version:"0.8.0",prerelease:!1,androidViaJvm:!0,released:"2026-05-07",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm32_hfp","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-io-core":{version:"0.9.2",prerelease:!1,androidViaJvm:!0,released:"2026-10-30",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm32_hfp","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-serialization-json":{version:"1.12.0",prerelease:!1,androidViaJvm:!0,released:"2026-10-19",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm32_hfp","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.jetbrains.kotlinx:kotlinx-serialization-protobuf":{version:"1.12.0",prerelease:!1,androidViaJvm:!0,released:"2026-10-19",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm32_hfp","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.kodein.di:kodein-di":{version:"7.33.0",prerelease:!1,androidViaJvm:!0,released:"2026-07-21",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","linux_arm64","linux_x64","macos_arm64","mingw_x64","tvos_arm64","tvos_simulator_arm64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64"]},"org.kotlincrypto.hash:sha2":{version:"0.8.0",prerelease:!1,androidViaJvm:!0,released:"2025-09-19",targets:["android","ios","jvm","macos","js","wasmJs","linux","windows","watchos","tvos","wasmWasi","androidNative"],nativeTargets:["android_arm32","android_arm64","android_x64","android_x86","ios_arm64","ios_simulator_arm64","ios_x64","linux_arm64","linux_x64","macos_arm64","macos_x64","mingw_x64","tvos_arm64","tvos_simulator_arm64","tvos_x64","watchos_arm32","watchos_arm64","watchos_device_arm64","watchos_simulator_arm64","watchos_x64"]},"org.mobilenativefoundation.store:store5":{version:"5.0.0",prerelease:!1,androidViaJvm:!0,released:"2023-09-14",targets:["android","ios","jvm","js","linux"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","linux_x64"]},"sh.calvin.reorderable:reorderable":{version:"3.1.0",prerelease:!1,androidViaJvm:!1,released:"2026-04-20",targets:["android","ios","jvm","macos","js","wasmJs"],nativeTargets:["ios_arm64","ios_simulator_arm64","ios_x64","macos_arm64","macos_x64"]}}};var LIBRARY_CATEGORIES=[{id:"networking",name:"Networking"},{id:"serialization",name:"Serialization"},{id:"storage",name:"Database & storage"},{id:"di",name:"Dependency injection"},{id:"async",name:"Coroutines & lifecycle"},{id:"navigation",name:"Navigation & architecture"},{id:"ui",name:"Compose UI"},{id:"images",name:"Images & media"},{id:"logging",name:"Logging & crashes"},{id:"io",name:"Files, IO & crypto"},{id:"services",name:"Firebase & services"},{id:"ai",name:"AI & LLMs"},{id:"testing",name:"Testing"},{id:"utilities",name:"Utilities"}],LIBRARY_SOURCES=[{coordinates:"io.ktor:ktor-client-core",name:"Ktor Client",category:"networking",description:"HTTP client with pluggable engines per platform: OkHttp, Darwin, CIO, JS fetch.",url:"https://github.com/ktorio/ktor",repository:"central",official:!0},{coordinates:"de.jensklingenberg.ktorfit:ktorfit-lib",name:"Ktorfit",category:"networking",description:"Retrofit-style annotated interfaces, generated with KSP on top of Ktor.",url:"https://github.com/Foso/Ktorfit",repository:"central"},{coordinates:"com.apollographql.apollo:apollo-runtime",name:"Apollo Kotlin",category:"networking",description:"GraphQL client that generates typed models from your schema and queries.",url:"https://github.com/apollographql/apollo-kotlin",repository:"central"},{coordinates:"org.mobilenativefoundation.store:store5",name:"Store",category:"networking",description:"Loads data from network and cache with one Flow, handling refresh and offline reads.",url:"https://github.com/MobileNativeFoundation/Store",repository:"central"},{coordinates:"org.jetbrains.kotlinx:kotlinx-serialization-json",name:"kotlinx.serialization JSON",category:"serialization",description:"The Kotlin team\u2019s compiler-plugin serialization, with JSON support.",url:"https://github.com/Kotlin/kotlinx.serialization",repository:"central",official:!0},{coordinates:"org.jetbrains.kotlinx:kotlinx-serialization-protobuf",name:"kotlinx.serialization Protobuf",category:"serialization",description:"Protocol Buffers format for kotlinx.serialization classes.",url:"https://github.com/Kotlin/kotlinx.serialization",repository:"central",official:!0},{coordinates:"com.charleskorn.kaml:kaml",name:"kaml",category:"serialization",description:"YAML format for kotlinx.serialization.",url:"https://github.com/charleskorn/kaml",repository:"central"},{coordinates:"com.squareup.wire:wire-runtime",name:"Wire",category:"serialization",description:"Square\u2019s Protocol Buffers and gRPC code generator and runtime.",url:"https://github.com/square/wire",repository:"central"},{coordinates:"androidx.room:room-runtime",name:"Room",category:"storage",description:"Android\u2019s SQLite object mapper, now multiplatform for Android, iOS, JVM and more.",url:"https://developer.android.com/kotlin/multiplatform/room",repository:"google",official:!0},{coordinates:"androidx.sqlite:sqlite-bundled",name:"SQLite Bundled",category:"storage",description:"A bundled SQLite build so every platform runs the same version; used with Room.",url:"https://developer.android.com/kotlin/multiplatform/sqlite",repository:"google",official:!0},{coordinates:"app.cash.sqldelight:runtime",name:"SQLDelight",category:"storage",description:"Write SQL, get type-safe Kotlin APIs generated from it.",url:"https://github.com/sqldelight/sqldelight",repository:"central"},{coordinates:"androidx.datastore:datastore-preferences-core",name:"DataStore Preferences",category:"storage",description:"Key-value and typed storage with coroutines and Flow, from Jetpack.",url:"https://developer.android.com/kotlin/multiplatform/datastore",repository:"google",official:!0},{coordinates:"com.russhwolf:multiplatform-settings",name:"Multiplatform Settings",category:"storage",description:"Key-value settings over SharedPreferences, NSUserDefaults, java.util.prefs and localStorage.",url:"https://github.com/russhwolf/multiplatform-settings",repository:"central"},{coordinates:"io.github.xxfast:kstore",name:"KStore",category:"storage",description:"Stores a serializable object in a file and exposes it as a Flow.",url:"https://github.com/xxfast/KStore",repository:"central"},{coordinates:"com.liftric:kvault",name:"KVault",category:"storage",description:"Secure storage on top of Android\u2019s encrypted preferences and the iOS Keychain.",url:"https://github.com/Liftric/KVault",repository:"central"},{coordinates:"io.insert-koin:koin-core",name:"Koin",category:"di",description:"Lightweight dependency injection with a Kotlin DSL and no code generation.",url:"https://github.com/InsertKoinIO/koin",repository:"central"},{coordinates:"me.tatarka.inject:kotlin-inject-runtime",name:"kotlin-inject",category:"di",description:"Compile-time dependency injection generated with KSP.",url:"https://github.com/evant/kotlin-inject",repository:"central"},{coordinates:"dev.zacsweers.metro:runtime",name:"Metro",category:"di",description:"Compile-time dependency injection as a Kotlin compiler plugin, in the style of Dagger.",url:"https://github.com/ZacSweers/metro",repository:"central"},{coordinates:"org.kodein.di:kodein-di",name:"Kodein DI",category:"di",description:"Runtime dependency injection with a Kotlin DSL.",url:"https://github.com/kosi-libs/Kodein",repository:"central"},{coordinates:"org.jetbrains.kotlinx:kotlinx-coroutines-core",name:"kotlinx.coroutines",category:"async",description:"Coroutines, Flow, channels and dispatchers.",url:"https://github.com/Kotlin/kotlinx.coroutines",repository:"central",official:!0},{coordinates:"com.rickclephas.kmp:kmp-nativecoroutines-core",name:"KMP-NativeCoroutines",category:"async",description:"Lets Swift consume suspend functions and Flow as async/await, Combine or RxSwift.",url:"https://github.com/rickclephas/KMP-NativeCoroutines",repository:"central"},{coordinates:"com.arkivanov.essenty:lifecycle",name:"Essenty",category:"async",description:"Lifecycle, state keeping and back handling for shared code.",url:"https://github.com/arkivanov/Essenty",repository:"central"},{coordinates:"org.jetbrains.androidx.lifecycle:lifecycle-viewmodel",name:"Lifecycle ViewModel",category:"navigation",description:"Jetpack ViewModel for Compose Multiplatform, published by JetBrains.",url:"https://kotlinlang.org/docs/multiplatform/compose-viewmodel.html",repository:"central",official:!0},{coordinates:"org.jetbrains.androidx.navigation:navigation-compose",name:"Navigation Compose",category:"navigation",description:"Jetpack Navigation for Compose Multiplatform, published by JetBrains.",url:"https://kotlinlang.org/docs/multiplatform/compose-navigation.html",repository:"central",official:!0},{coordinates:"com.arkivanov.decompose:decompose",name:"Decompose",category:"navigation",description:"Lifecycle-aware components and navigation that work with any UI framework.",url:"https://github.com/arkivanov/Decompose",repository:"central"},{coordinates:"cafe.adriel.voyager:voyager-navigator",name:"Voyager",category:"navigation",description:"Screen-based navigation for Compose Multiplatform.",url:"https://github.com/adrielcafe/voyager",repository:"central"},{coordinates:"com.slack.circuit:circuit-foundation",name:"Circuit",category:"navigation",description:"Slack\u2019s Compose-driven architecture: presenters, UI and navigation.",url:"https://github.com/slackhq/circuit",repository:"central"},{coordinates:"com.arkivanov.mvikotlin:mvikotlin",name:"MVIKotlin",category:"navigation",description:"MVI framework with stores, time travel and logging.",url:"https://github.com/arkivanov/MVIKotlin",repository:"central"},{coordinates:"org.jetbrains.compose.material3:material3",name:"Compose Material 3",category:"ui",description:"Material 3 components for Compose Multiplatform.",url:"https://github.com/JetBrains/compose-multiplatform",repository:"central",official:!0},{coordinates:"org.jetbrains.compose.components:components-resources",name:"Compose Resources",category:"ui",description:"Strings, images, fonts and other resources shared across platforms.",url:"https://kotlinlang.org/docs/multiplatform/compose-multiplatform-resources.html",repository:"central",official:!0},{coordinates:"dev.chrisbanes.haze:haze",name:"Haze",category:"ui",description:"Glassmorphism-style background blur for Compose.",url:"https://github.com/chrisbanes/haze",repository:"central"},{coordinates:"io.github.alexzhirkevich:compottie",name:"Compottie",category:"ui",description:"Lottie and dotLottie animations rendered in Compose Multiplatform.",url:"https://github.com/alexzhirkevich/compottie",repository:"central"},{coordinates:"com.mikepenz:multiplatform-markdown-renderer",name:"Markdown Renderer",category:"ui",description:"Renders Markdown as Compose UI.",url:"https://github.com/mikepenz/multiplatform-markdown-renderer",repository:"central"},{coordinates:"com.mohamedrejeb.richeditor:richeditor-compose",name:"Compose Rich Editor",category:"ui",description:"Rich text editing with styles, lists and links.",url:"https://github.com/MohamedRejeb/compose-rich-editor",repository:"central"},{coordinates:"sh.calvin.reorderable:reorderable",name:"Reorderable",category:"ui",description:"Drag-to-reorder for lazy lists and grids.",url:"https://github.com/Calvin-LL/Reorderable",repository:"central"},{coordinates:"io.github.kevinnzou:compose-webview-multiplatform",name:"Compose WebView",category:"ui",description:"A WebView composable for Android, iOS and desktop.",url:"https://github.com/KevinnZou/compose-webview-multiplatform",repository:"central"},{coordinates:"dev.icerock.moko:resources",name:"moko-resources",category:"ui",description:"Shared strings, plurals, images and fonts, also usable from SwiftUI.",url:"https://github.com/icerockdev/moko-resources",repository:"central"},{coordinates:"dev.icerock.moko:permissions",name:"moko-permissions",category:"ui",description:"Requests runtime permissions from shared code.",url:"https://github.com/icerockdev/moko-permissions",repository:"central"},{coordinates:"io.coil-kt.coil3:coil-compose",name:"Coil",category:"images",description:"Image loading for Compose, backed by Kotlin coroutines.",url:"https://github.com/coil-kt/coil",repository:"central"},{coordinates:"media.kamel:kamel-image",name:"Kamel",category:"images",description:"Asynchronous image loading for Compose Multiplatform, built on Ktor.",url:"https://github.com/Kamel-Media/Kamel",repository:"central"},{coordinates:"io.github.vinceglb:filekit-core",name:"FileKit",category:"images",description:"File and image pickers, and file access, across platforms.",url:"https://github.com/vinceglb/FileKit",repository:"central"},{coordinates:"co.touchlab:kermit",name:"Kermit",category:"logging",description:"Logging that writes to Logcat, OSLog and the console, with crash reporter hooks.",url:"https://github.com/touchlab/Kermit",repository:"central"},{coordinates:"io.github.aakira:napier",name:"Napier",category:"logging",description:"A simple logger with platform-specific output.",url:"https://github.com/AAkira/Napier",repository:"central"},{coordinates:"io.github.oshai:kotlin-logging",name:"kotlin-logging",category:"logging",description:"A lazy, idiomatic logging API (SLF4J on the JVM).",url:"https://github.com/oshai/kotlin-logging",repository:"central"},{coordinates:"io.sentry:sentry-kotlin-multiplatform",name:"Sentry",category:"logging",description:"Crash and error reporting with native iOS and Android symbolication.",url:"https://github.com/getsentry/sentry-kotlin-multiplatform",repository:"central"},{coordinates:"com.squareup.okio:okio",name:"Okio",category:"io",description:"Files, buffers and streams, the IO layer under OkHttp.",url:"https://github.com/square/okio",repository:"central"},{coordinates:"org.jetbrains.kotlinx:kotlinx-io-core",name:"kotlinx-io",category:"io",description:"The Kotlin team\u2019s IO library: buffers, sources, sinks and files.",url:"https://github.com/Kotlin/kotlinx-io",repository:"central",official:!0},{coordinates:"dev.whyoleg.cryptography:cryptography-core",name:"cryptography-kotlin",category:"io",description:"Hashing, encryption and signatures over each platform\u2019s native crypto.",url:"https://github.com/whyoleg/cryptography-kotlin",repository:"central"},{coordinates:"org.kotlincrypto.hash:sha2",name:"KotlinCrypto SHA-2",category:"io",description:"Pure Kotlin SHA-224, SHA-256, SHA-384 and SHA-512.",url:"https://github.com/KotlinCrypto/hash",repository:"central"},{coordinates:"com.fleeksoft.ksoup:ksoup",name:"Ksoup",category:"io",description:"HTML parsing and cleaning, a port of jsoup.",url:"https://github.com/fleeksoft/ksoup",repository:"central"},{coordinates:"dev.gitlive:firebase-auth",name:"Firebase Auth (GitLive)",category:"services",description:"Firebase Authentication from shared code, wrapping the native SDKs.",url:"https://github.com/GitLiveApp/firebase-kotlin-sdk",repository:"central"},{coordinates:"dev.gitlive:firebase-firestore",name:"Firestore (GitLive)",category:"services",description:"Cloud Firestore from shared code, wrapping the native SDKs.",url:"https://github.com/GitLiveApp/firebase-kotlin-sdk",repository:"central"},{coordinates:"io.github.jan-tennert.supabase:postgrest-kt",name:"Supabase Postgrest",category:"services",description:"Supabase database client; auth, storage and realtime are separate modules.",url:"https://github.com/supabase-community/supabase-kt",repository:"central"},{coordinates:"io.github.mirzemehdi:kmpnotifier",name:"KMPNotifier",category:"services",description:"Push notifications through Firebase Cloud Messaging and APNs, plus local notifications.",url:"https://github.com/mirzemehdi/KMPNotifier",repository:"central"},{coordinates:"com.revenuecat.purchases:purchases-kmp-core",name:"RevenueCat",category:"services",description:"In-app purchases and subscriptions over Google Play Billing and StoreKit.",url:"https://github.com/RevenueCat/purchases-kmp",repository:"central"},{coordinates:"ai.koog:koog-agents",name:"Koog",category:"ai",description:"JetBrains\u2019 framework for building AI agents in Kotlin, with tools and multiple LLM providers.",url:"https://github.com/JetBrains/koog",repository:"central",official:!0},{coordinates:"com.aallam.openai:openai-client",name:"OpenAI Kotlin",category:"ai",description:"A Kotlin client for the OpenAI API.",url:"https://github.com/aallam/openai-kotlin",repository:"central"},{coordinates:"org.jetbrains.kotlinx:kotlinx-coroutines-test",name:"kotlinx-coroutines-test",category:"testing",description:"runTest, virtual time and test dispatchers for coroutine code.",url:"https://github.com/Kotlin/kotlinx.coroutines",repository:"central",official:!0},{coordinates:"app.cash.turbine:turbine",name:"Turbine",category:"testing",description:"A small testing library for Flow.",url:"https://github.com/cashapp/turbine",repository:"central"},{coordinates:"io.kotest:kotest-assertions-core",name:"Kotest Assertions",category:"testing",description:"Readable assertions such as shouldBe and shouldContain.",url:"https://github.com/kotest/kotest",repository:"central"},{coordinates:"dev.mokkery:mokkery-runtime",name:"Mokkery",category:"testing",description:"Mocking as a compiler plugin, so it works on every target.",url:"https://github.com/lupuuss/Mokkery",repository:"central"},{coordinates:"io.mockative:mockative",name:"Mockative",category:"testing",description:"Mocks for interfaces, generated with KSP.",url:"https://github.com/mockative/mockative",repository:"central"},{coordinates:"org.jetbrains.kotlinx:kotlinx-datetime",name:"kotlinx-datetime",category:"utilities",description:"Dates, time zones and formatting.",url:"https://github.com/Kotlin/kotlinx-datetime",repository:"central",official:!0},{coordinates:"org.jetbrains.kotlinx:kotlinx-collections-immutable",name:"kotlinx.collections.immutable",category:"utilities",description:"Persistent and immutable lists, sets and maps; stable types for Compose.",url:"https://github.com/Kotlin/kotlinx.collections.immutable",repository:"central",official:!0},{coordinates:"org.jetbrains.kotlinx:atomicfu",name:"atomicfu",category:"utilities",description:"Atomic operations and locks for every target.",url:"https://github.com/Kotlin/kotlinx-atomicfu",repository:"central",official:!0},{coordinates:"io.arrow-kt:arrow-core",name:"Arrow",category:"utilities",description:"Typed errors with Either and Raise, plus functional data types.",url:"https://github.com/arrow-kt/arrow",repository:"central"},{coordinates:"com.ionspin.kotlin:bignum",name:"BigNum",category:"utilities",description:"Arbitrary-precision integers and decimals.",url:"https://github.com/ionspin/kotlin-multiplatform-bignum",repository:"central"},{coordinates:"io.github.z4kn4fein:semver",name:"semver",category:"utilities",description:"Semantic version parsing and comparison.",url:"https://github.com/z4kn4fein/kotlin-semver",repository:"central"}],TARGET_GROUPS=[{id:"android",name:"Android"},{id:"ios",name:"iOS"},{id:"jvm",name:"JVM"},{id:"macos",name:"macOS"},{id:"js",name:"JS"},{id:"wasmJs",name:"Wasm"},{id:"linux",name:"Linux"},{id:"windows",name:"Windows"},{id:"watchos",name:"watchOS"},{id:"tvos",name:"tvOS"},{id:"wasmWasi",name:"WASI"},{id:"androidNative",name:"Android Native"}],table=kmp_libraries_default,KMP_LIBRARIES_CHECKED_ON=table.checkedOn,kmpLibraries=LIBRARY_SOURCES.filter(s=>table.libraries[s.coordinates]).map(s=>{let[group,artifact]=s.coordinates.split(":");return{...s,...table.libraries[s.coordinates],group,artifact}});var GENERIC_ARTIFACTS=new Set(["runtime","core","api","common","library","lib","resources","permissions"]);function gradleSnippets(lib){let alias=(GENERIC_ARTIFACTS.has(lib.artifact)?`${lib.group.split(".").at(-1)}-${lib.artifact}`:lib.artifact).replace(/[^a-z0-9]+/gi,"-").toLowerCase(),accessor=alias.replace(/-/g,".");return{toml:`[versions]
|
|
176
|
+
${alias} = "${lib.version}"
|
|
177
|
+
|
|
178
|
+
[libraries]
|
|
179
|
+
${alias} = { module = "${lib.group}:${lib.artifact}", version.ref = "${alias}" }`,kts:`kotlin {
|
|
180
|
+
sourceSets {
|
|
181
|
+
commonMain.dependencies {
|
|
182
|
+
implementation(libs.${accessor})
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}`,direct:`implementation("${lib.group}:${lib.artifact}:${lib.version}")`}}var SOURCE_SETS={android:"androidMain",ios:"iosMain",jvm:"jvmMain",macos:"macosMain",js:"jsMain",wasmJs:"wasmJsMain",linux:"linuxMain",windows:"mingwMain",watchos:"watchosMain",tvos:"tvosMain",wasmWasi:"wasmWasiMain",androidNative:"androidNativeMain"};function bundleSnippets(libs,projectTargets){let versions=[],entries=[],bySet=new Map,partial2=[],order=TARGET_GROUPS.map(t=>t.id).filter(t=>projectTargets.includes(t));for(let lib of[...libs].sort((a,b)=>a.name.localeCompare(b.name))){let s=gradleSnippets(lib),[,v,l]=/\[versions\]\n(.+)\n\n\[libraries\]\n(.+)/.exec(s.toml);versions.push(v),entries.push(l);let line=/implementation\(.+\)/.exec(s.kts)[0],missing=order.filter(t=>!lib.targets.includes(t)),sets=missing.length?order.filter(t=>lib.targets.includes(t)).map(t=>SOURCE_SETS[t]):["commonMain"];missing.length&&partial2.push({lib,missing});for(let set of sets)bySet.set(set,[...bySet.get(set)??[],line])}let sourceSets=["commonMain",...order.map(t=>SOURCE_SETS[t])].filter(set=>bySet.has(set)).map(set=>` ${set}.dependencies {
|
|
186
|
+
${bySet.get(set).map(l=>` ${l}`).join(`
|
|
187
|
+
`)}
|
|
188
|
+
}`).join(`
|
|
189
|
+
`);return{toml:`[versions]
|
|
190
|
+
${versions.join(`
|
|
191
|
+
`)}
|
|
192
|
+
|
|
193
|
+
[libraries]
|
|
194
|
+
${entries.join(`
|
|
195
|
+
`)}
|
|
196
|
+
`,sourceSets,kts:`kotlin {
|
|
197
|
+
sourceSets {
|
|
198
|
+
${sourceSets}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
`,partial:partial2}}var permissions_default={source:"pm list permissions on Android 17 (API 37); api-versions.xml from android-37.0",checkedOn:"2026-11-03",permissions:[{name:"android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE",level:"signature"},{name:"android.permission.ACCEPT_HANDOVER",constant:"ACCEPT_HANDOVER",since:28,level:"dangerous",description:"Allows the app to continue a call which was started in another app."},{name:"android.permission.ACCESS_AMBIENT_CONTEXT_EVENT",level:"signature",flags:["privileged","role"]},{name:"android.permission.ACCESS_AMBIENT_LIGHT_STATS",level:"signature",flags:["privileged","development"]},{name:"android.permission.ACCESS_BACKGROUND_LOCATION",constant:"ACCESS_BACKGROUND_LOCATION",since:29,level:"dangerous",flags:["instant"],label:"access location in the background",description:"This app can access location at any time, even while the app is not in use."},{name:"android.permission.ACCESS_BIOMETRIC_SENSOR_STRENGTHS",constant:"ACCESS_BIOMETRIC_SENSOR_STRENGTHS",since:37,level:"internal",flags:["role"]},{name:"android.permission.ACCESS_BLOBS_ACROSS_USERS",constant:"ACCESS_BLOBS_ACROSS_USERS",since:31,level:"signature",flags:["privileged","development","role"]},{name:"android.permission.ACCESS_BROADCAST_RADIO",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_BROADCAST_RESPONSE_STATS",level:"signature",flags:["privileged","development"]},{name:"android.permission.ACCESS_CACHE_FILESYSTEM",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_CELL_BROADCAST",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_CHECKIN_PROPERTIES",constant:"ACCESS_CHECKIN_PROPERTIES",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_COARSE_LOCATION",constant:"ACCESS_COARSE_LOCATION",since:1,level:"dangerous",flags:["instant"],label:"access approximate location only in the foreground",description:"This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location."},{name:"android.permission.ACCESS_COMPANION_INFO",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_COMPANION_MESSAGE_PCC",level:"signature",flags:["role"]},{name:"android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY",level:"signature"},{name:"android.permission.ACCESS_CONTEXT_HUB",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_CONTEXTUAL_SEARCH",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_DRM_CERTIFICATES",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_FINE_LOCATION",constant:"ACCESS_FINE_LOCATION",since:1,level:"dangerous",flags:["instant"],label:"access precise location only in the foreground",description:"This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage."},{name:"android.permission.ACCESS_FINE_POWER_MONITORS",level:"signature",flags:["privileged","development"]},{name:"android.permission.ACCESS_FM_RADIO",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_FPS_COUNTER",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_GPU_SERVICE",level:"signature"},{name:"android.permission.ACCESS_HIDDEN_PROFILES",constant:"ACCESS_HIDDEN_PROFILES",since:35,level:"normal",label:"Access hidden profiles",description:"Allows the app to access hidden profiles."},{name:"android.permission.ACCESS_HIDDEN_PROFILES_FULL",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_IMS_CALL_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_INPUT_FLINGER",level:"signature"},{name:"android.permission.ACCESS_INSTANT_APPS",level:"signature",flags:["installer","verifier","role"]},{name:"android.permission.ACCESS_KEYGUARD_SECURE_STORAGE",level:"signature",flags:["setup"]},{name:"android.permission.ACCESS_LAST_KNOWN_CELL_ID",level:"signature"},{name:"android.permission.ACCESS_LAUNCHER_DATA",constant:"ACCESS_LAUNCHER_DATA",since:36.1,level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_LOCAL_NETWORK",constant:"ACCESS_LOCAL_NETWORK",since:37,level:"dangerous",label:"access local network devices",description:"Allows the app to access local network devices"},{name:"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS",constant:"ACCESS_LOCATION_EXTRA_COMMANDS",since:1,level:"normal",label:"access extra location provider commands",description:"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."},{name:"android.permission.ACCESS_LOCUS_ID_USAGE_STATS",level:"signature",flags:["role"]},{name:"android.permission.ACCESS_LOWPAN_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_MEDIA_LOCATION",constant:"ACCESS_MEDIA_LOCATION",since:29,level:"dangerous",label:"read locations from your media collection",description:"Allows the app to read locations from your media collection."},{name:"android.permission.ACCESS_MESSAGES_ON_ICC",level:"signature"},{name:"android.permission.ACCESS_MOCK_LOCATION",constant:"ACCESS_MOCK_LOCATION",since:1,level:"signature"},{name:"android.permission.ACCESS_MTP",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_NETWORK_CONDITIONS",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_NETWORK_STATE",constant:"ACCESS_NETWORK_STATE",since:1,level:"normal",flags:["instant"],label:"view network connections",description:"Allows the app to view information about network connections such as which networks exist and are connected."},{name:"android.permission.ACCESS_NOTIFICATION_POLICY",constant:"ACCESS_NOTIFICATION_POLICY",since:23,level:"normal",label:"access Do Not Disturb",description:"Allows the app to read and write Do Not Disturb configuration."},{name:"android.permission.ACCESS_NOTIFICATIONS",level:"signature",flags:["privileged","appop"]},{name:"android.permission.ACCESS_NPU_MODEL_MANAGER_API",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_PDB_STATE",level:"signature",flags:["role"]},{name:"android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE",level:"internal",flags:["role"]},{name:"android.permission.ACCESS_SHARED_LIBRARIES",level:"signature",flags:["installer","role"]},{name:"android.permission.ACCESS_SHORTCUTS",level:"signature",flags:["recents","role"]},{name:"android.permission.ACCESS_SMARTSPACE",level:"signature",flags:["privileged","development"]},{name:"android.permission.ACCESS_SURFACE_FLINGER",constant:"ACCESS_SURFACE_FLINGER",since:1,level:"signature"},{name:"android.permission.ACCESS_TEXT_CLASSIFIER_BY_TYPE",level:"signature",flags:["privileged","role"]},{name:"android.permission.ACCESS_TUNED_INFO",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.ACCESS_TV_DESCRAMBLER",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.ACCESS_TV_SHARED_FILTER",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.ACCESS_TV_TUNER",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.ACCESS_UCE_OPTIONS_SERVICE",level:"signature",flags:["privileged"],group:"PHONE"},{name:"android.permission.ACCESS_UCE_PRESENCE_SERVICE",level:"signature",flags:["privileged"],group:"PHONE"},{name:"android.permission.ACCESS_ULTRASOUND",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_VIBRATOR_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.ACCESS_VOICE_INTERACTION_SERVICE",level:"signature"},{name:"android.permission.ACCESS_VR_MANAGER",level:"signature"},{name:"android.permission.ACCESS_VR_STATE",level:"signature",flags:["preinstalled"]},{name:"android.permission.ACCESS_WIFI_STATE",constant:"ACCESS_WIFI_STATE",since:1,level:"normal",label:"view Wi-Fi connections",description:"Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices."},{name:"android.permission.ACCESSIBILITY_MOTION_EVENT_OBSERVING",level:"signature"},{name:"android.permission.ACCOUNT_MANAGER",constant:"ACCOUNT_MANAGER",since:5,level:"signature"},{name:"android.permission.ACQUIRE_SLEEP_LOCK",level:"signature"},{name:"android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY",level:"signature"},{name:"android.permission.ACTIVITY_EMBEDDING",level:"signature",flags:["privileged"]},{name:"android.permission.ACTIVITY_RECOGNITION",constant:"ACTIVITY_RECOGNITION",since:29,level:"dangerous",flags:["instant"],label:"recognize physical activity",description:"This app can recognize your physical activity."},{name:"android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY",level:"signature",flags:["role"]},{name:"android.permission.ADD_MIRROR_DISPLAY",level:"internal",flags:["role"]},{name:"android.permission.ADD_TRUSTED_DISPLAY",level:"signature",flags:["role"]},{name:"android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY",level:"signature",flags:["installer"]},{name:"android.permission.ALLOCATE_AGGRESSIVE",level:"signature",flags:["privileged"]},{name:"android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK",level:"signature",flags:["privileged"]},{name:"android.permission.ALLOW_CONTROL_SYSTEM_REQUIRED_PACKAGES",level:"signature"},{name:"android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS",level:"signature"},{name:"android.permission.ALLOW_SLIPPERY_TOUCHES",level:"signature",flags:["privileged","recents","role"]},{name:"android.permission.ALWAYS_BOUND_TV_INPUT",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.ALWAYS_UPDATE_WALLPAPER",level:"internal",flags:["role"]},{name:"android.permission.AMBIENT_WALLPAPER",level:"signature",flags:["preinstalled"]},{name:"android.permission.ANSWER_PHONE_CALLS",constant:"ANSWER_PHONE_CALLS",since:26,level:"dangerous",flags:["runtime"],label:"answer phone calls",description:"Allows the app to answer an incoming phone call."},{name:"android.permission.APPLY_PICTURE_PROFILE",constant:"APPLY_PICTURE_PROFILE",since:36,level:"normal"},{name:"android.permission.APPROVE_INCIDENT_REPORTS",level:"signature",flags:["incidentReportApprover"]},{name:"android.permission.ASEC_ACCESS",level:"signature"},{name:"android.permission.ASEC_CREATE",level:"signature"},{name:"android.permission.ASEC_DESTROY",level:"signature"},{name:"android.permission.ASEC_MOUNT_UNMOUNT",level:"signature"},{name:"android.permission.ASEC_RENAME",level:"signature"},{name:"android.permission.ASSOCIATE_COMPANION_DEVICES",level:"internal",flags:["role"]},{name:"android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY",level:"signature"},{name:"android.permission.ATTRIBUTE_WORK_TO_OTHER_APPS",level:"signature",flags:["privileged"]},{name:"android.permission.AUTHENTICATE_ACCOUNTS",constant:"AUTHENTICATE_ACCOUNTS",since:5,level:"normal"},{name:"android.permission.BACKGROUND_CAMERA",level:"internal",flags:["role"]},{name:"android.permission.BACKUP",level:"signature",flags:["privileged"]},{name:"android.permission.BACKUP_HEALTH_CONNECT_DATA_AND_SETTINGS",level:"signature",flags:["knownSigner"]},{name:"android.permission.BATTERY_PREDICTION",level:"signature",flags:["privileged"]},{name:"android.permission.BATTERY_STATS",constant:"BATTERY_STATS",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.BIND_ACCESSIBILITY_SERVICE",constant:"BIND_ACCESSIBILITY_SERVICE",since:16,level:"signature"},{name:"android.permission.BIND_ALLOWLIST_PROVIDER_SERVICE",level:"internal"},{name:"android.permission.BIND_ALTERNATIVE_MESSAGE_TRANSPORT_SERVICE",constant:"BIND_ALTERNATIVE_MESSAGE_TRANSPORT_SERVICE",since:37,level:"signature"},{name:"android.permission.BIND_AMBIENT_CONTEXT_DETECTION_SERVICE",level:"signature"},{name:"android.permission.BIND_APP_FUNCTION_SERVICE",constant:"BIND_APP_FUNCTION_SERVICE",since:36,level:"signature"},{name:"android.permission.BIND_APP_SEARCH_ISOLATED_STORAGE_SERVICE",level:"signature"},{name:"android.permission.BIND_APPWIDGET",constant:"BIND_APPWIDGET",since:3,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_ATTENTION_SERVICE",level:"signature"},{name:"android.permission.BIND_ATTESTATION_VERIFICATION_SERVICE",level:"signature"},{name:"android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE",level:"signature"},{name:"android.permission.BIND_AUTOFILL",level:"signature"},{name:"android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE",level:"signature"},{name:"android.permission.BIND_AUTOFILL_SERVICE",constant:"BIND_AUTOFILL_SERVICE",since:26,level:"signature"},{name:"android.permission.BIND_CACHE_QUOTA_SERVICE",level:"signature"},{name:"android.permission.BIND_CALL_DIAGNOSTIC_SERVICE",level:"signature"},{name:"android.permission.BIND_CALL_REDIRECTION_SERVICE",constant:"BIND_CALL_REDIRECTION_SERVICE",since:29,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_CALL_STREAMING_SERVICE",level:"signature"},{name:"android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE",constant:"BIND_CARRIER_MESSAGING_CLIENT_SERVICE",since:29,level:"signature"},{name:"android.permission.BIND_CARRIER_MESSAGING_SERVICE",constant:"BIND_CARRIER_MESSAGING_SERVICE",since:22,deprecated:23,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_CARRIER_SERVICES",constant:"BIND_CARRIER_SERVICES",since:23,level:"signature",flags:["privileged"],label:"bind to carrier services",description:"Allows the holder to bind to carrier services. Should never be needed for normal apps."},{name:"android.permission.BIND_CELL_BROADCAST_SERVICE",level:"signature"},{name:"android.permission.BIND_CHOOSER_TARGET_SERVICE",constant:"BIND_CHOOSER_TARGET_SERVICE",since:23,deprecated:30,level:"signature"},{name:"android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE",level:"signature"},{name:"android.permission.BIND_COMPANION_DEVICE_SERVICE",constant:"BIND_COMPANION_DEVICE_SERVICE",since:31,level:"signature"},{name:"android.permission.BIND_CONDITION_PROVIDER_SERVICE",constant:"BIND_CONDITION_PROVIDER_SERVICE",since:24,level:"signature"},{name:"android.permission.BIND_CONNECTION_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_CONTENT_CAPTURE_SERVICE",level:"signature"},{name:"android.permission.BIND_CONTENT_SAFETY_SERVICE",level:"signature"},{name:"android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE",level:"signature"},{name:"android.permission.BIND_CONTEXT_COMPONENT_SERVICE",level:"signature"},{name:"android.permission.BIND_CONTROLS",constant:"BIND_CONTROLS",since:30,level:"signature"},{name:"android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE",constant:"BIND_CREDENTIAL_PROVIDER_SERVICE",since:34,level:"signature"},{name:"android.permission.BIND_DATA_MIGRATION_FOR_PRIVATECOMPUTE",constant:"BIND_DATA_MIGRATION_FOR_PRIVATECOMPUTE",since:37,level:"signature"},{name:"android.permission.BIND_DEPENDENCY_INSTALLER",level:"signature"},{name:"android.permission.BIND_DEVELOPER_VERIFICATION_AGENT",level:"internal"},{name:"android.permission.BIND_DEVICE_ADMIN",constant:"BIND_DEVICE_ADMIN",since:8,level:"signature",flags:["role"]},{name:"android.permission.BIND_DIRECTORY_SEARCH",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_DISPLAY_HASHING_SERVICE",level:"signature"},{name:"android.permission.BIND_DOMAIN_SELECTION_SERVICE",level:"signature"},{name:"android.permission.BIND_DOMAIN_VERIFICATION_AGENT",level:"signature"},{name:"android.permission.BIND_DREAM_SERVICE",constant:"BIND_DREAM_SERVICE",since:21,level:"signature"},{name:"android.permission.BIND_EUICC_SERVICE",level:"signature"},{name:"android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_EXTERNAL_STORAGE_SERVICE",level:"signature"},{name:"android.permission.BIND_FIELD_CLASSIFICATION_SERVICE",level:"signature"},{name:"android.permission.BIND_GAME_SERVICE",level:"signature"},{name:"android.permission.BIND_GBA_SERVICE",level:"signature"},{name:"android.permission.BIND_HOTWORD_DETECTION_SERVICE",level:"signature"},{name:"android.permission.BIND_IMS_SERVICE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.BIND_INCALL_SERVICE",constant:"BIND_INCALL_SERVICE",since:23,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE",level:"signature"},{name:"android.permission.BIND_INPUT_METHOD",constant:"BIND_INPUT_METHOD",since:3,level:"signature"},{name:"android.permission.BIND_INSIGHT_RENDERER_SERVICE",level:"signature"},{name:"android.permission.BIND_INSIGHT_SURFACE_VISUALIZER_SERVICE",level:"signature"},{name:"android.permission.BIND_INTENT_FILTER_VERIFIER",level:"signature"},{name:"android.permission.BIND_INTRUSION_DETECTION_EVENT_TRANSPORT_SERVICE",level:"signature"},{name:"android.permission.BIND_JOB_SERVICE",level:"signature"},{name:"android.permission.BIND_KEYGUARD_APPWIDGET",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_MIDI_DEVICE_SERVICE",constant:"BIND_MIDI_DEVICE_SERVICE",since:23,level:"signature"},{name:"android.permission.BIND_MOTION_CUES_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_MUSIC_RECOGNITION_SERVICE",level:"signature"},{name:"android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE",level:"signature"},{name:"android.permission.BIND_NFC_SERVICE",constant:"BIND_NFC_SERVICE",since:19,level:"signature",flags:["module"]},{name:"android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE",level:"signature"},{name:"android.permission.BIND_NOTIFICATION_LISTENER_SERVICE",constant:"BIND_NOTIFICATION_LISTENER_SERVICE",since:18,level:"signature"},{name:"android.permission.BIND_ON_DEVICE_INTELLIGENCE_SERVICE",level:"signature"},{name:"android.permission.BIND_ON_DEVICE_SANDBOXED_INFERENCE_SERVICE",level:"signature"},{name:"android.permission.BIND_PACKAGE_VERIFIER",level:"signature"},{name:"android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE",level:"signature"},{name:"android.permission.BIND_POPULATION_DENSITY_PROVIDER_SERVICE",level:"signature"},{name:"android.permission.BIND_PRINT_RECOMMENDATION_SERVICE",level:"signature"},{name:"android.permission.BIND_PRINT_SERVICE",constant:"BIND_PRINT_SERVICE",since:19,level:"signature"},{name:"android.permission.BIND_PRINT_SPOOLER_SERVICE",level:"signature"},{name:"android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE",constant:"BIND_QUICK_ACCESS_WALLET_SERVICE",since:30,level:"signature"},{name:"android.permission.BIND_QUICK_SETTINGS_TILE",constant:"BIND_QUICK_SETTINGS_TILE",since:24,level:"signature",flags:["recents"]},{name:"android.permission.BIND_REMOTE_DISPLAY",level:"signature"},{name:"android.permission.BIND_REMOTE_LOCKSCREEN_VALIDATION_SERVICE",level:"signature"},{name:"android.permission.BIND_REMOTEVIEWS",constant:"BIND_REMOTEVIEWS",since:11,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_RESOLVER_RANKER_SERVICE",level:"signature"},{name:"android.permission.BIND_RESUME_ON_REBOOT_SERVICE",level:"signature"},{name:"android.permission.BIND_RKP_SERVICE",level:"signature"},{name:"android.permission.BIND_ROTATION_RESOLVER_SERVICE",level:"signature"},{name:"android.permission.BIND_ROUTE_PROVIDER",level:"signature"},{name:"android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE",level:"signature"},{name:"android.permission.BIND_SANDBOXED_CONTENT_SAFETY_SERVICE",level:"signature"},{name:"android.permission.BIND_SATELLITE_GATEWAY_SERVICE",level:"signature"},{name:"android.permission.BIND_SATELLITE_SERVICE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.BIND_SCREENING_SERVICE",constant:"BIND_SCREENING_SERVICE",since:24,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_SELECTION_TOOLBAR_RENDER_SERVICE",level:"signature"},{name:"android.permission.BIND_SETTINGS_CONTENT_SAFETY_SERVICE",level:"signature"},{name:"android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE",level:"signature"},{name:"android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE",level:"signature"},{name:"android.permission.BIND_SUPERVISION_APP_SERVICE",level:"signature"},{name:"android.permission.BIND_TELECOM_CONNECTION_SERVICE",constant:"BIND_TELECOM_CONNECTION_SERVICE",since:23,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_TELEPHONY_DATA_SERVICE",level:"signature"},{name:"android.permission.BIND_TELEPHONY_NETWORK_SERVICE",level:"signature"},{name:"android.permission.BIND_TEXT_SERVICE",constant:"BIND_TEXT_SERVICE",since:14,level:"signature"},{name:"android.permission.BIND_TEXTCLASSIFIER_SERVICE",level:"signature"},{name:"android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE",level:"signature"},{name:"android.permission.BIND_TO_TAP_TO_SHARE_SERVICE",level:"signature"},{name:"android.permission.BIND_TRACE_REPORT_SERVICE",level:"signature"},{name:"android.permission.BIND_TRANSLATION_SERVICE",level:"signature"},{name:"android.permission.BIND_TRUST_AGENT",level:"signature"},{name:"android.permission.BIND_TRUST_TOKEN_SERVICE",level:"signature"},{name:"android.permission.BIND_TV_AD_SERVICE",constant:"BIND_TV_AD_SERVICE",since:36,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_TV_INPUT",constant:"BIND_TV_INPUT",since:21,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_TV_INTERACTIVE_APP",constant:"BIND_TV_INTERACTIVE_APP",since:33,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_TV_REMOTE_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.BIND_VISUAL_QUERY_DETECTION_SERVICE",level:"signature"},{name:"android.permission.BIND_VISUAL_VOICEMAIL_SERVICE",constant:"BIND_VISUAL_VOICEMAIL_SERVICE",since:26,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_VOICE_INTERACTION",constant:"BIND_VOICE_INTERACTION",since:21,level:"signature"},{name:"android.permission.BIND_VPN_SERVICE",constant:"BIND_VPN_SERVICE",since:14,level:"signature"},{name:"android.permission.BIND_VR_LISTENER_SERVICE",constant:"BIND_VR_LISTENER_SERVICE",since:24,level:"signature"},{name:"android.permission.BIND_WALLPAPER",constant:"BIND_WALLPAPER",since:8,level:"signature",flags:["privileged"]},{name:"android.permission.BIND_WALLPAPER_EFFECTS_GENERATION_SERVICE",level:"signature"},{name:"android.permission.BIND_WEARABLE_SENSING_SERVICE",level:"signature"},{name:"android.permission.BLUETOOTH",constant:"BLUETOOTH",since:1,level:"normal",label:"pair with Bluetooth devices",description:"Allows the app to view the configuration of the Bluetooth on the phone, and to make and accept connections with paired devices."},{name:"android.permission.BLUETOOTH_ADMIN",constant:"BLUETOOTH_ADMIN",since:1,level:"normal",label:"access Bluetooth settings",description:"Allows the app to configure the local Bluetooth phone, and to discover and pair with remote devices."},{name:"android.permission.BLUETOOTH_ADVERTISE",constant:"BLUETOOTH_ADVERTISE",since:31,level:"dangerous",label:"advertise to nearby Bluetooth devices",description:"Allows the app to advertise to nearby Bluetooth devices"},{name:"android.permission.BLUETOOTH_CONNECT",constant:"BLUETOOTH_CONNECT",since:31,level:"dangerous",label:"connect to paired Bluetooth devices",description:"Allows the app to connect to paired Bluetooth devices"},{name:"android.permission.BLUETOOTH_MAP",level:"signature",flags:["role","module"]},{name:"android.permission.BLUETOOTH_PRIVILEGED",constant:"BLUETOOTH_PRIVILEGED",since:19,level:"signature",flags:["privileged"]},{name:"android.permission.BLUETOOTH_SCAN",constant:"BLUETOOTH_SCAN",since:31,level:"dangerous",label:"discover and pair nearby Bluetooth devices",description:"Allows the app to discover and pair nearby Bluetooth devices"},{name:"android.permission.BLUETOOTH_STACK",level:"signature",flags:["role","module"]},{name:"android.permission.BODY_SENSORS",constant:"BODY_SENSORS",since:20,level:"dangerous",label:"Access body sensor data, like heart rate, while in use",description:"Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in use."},{name:"android.permission.BODY_SENSORS_BACKGROUND",constant:"BODY_SENSORS_BACKGROUND",since:33,level:"dangerous",label:"Access body sensor data, like heart rate, while in the background",description:"Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in the background."},{name:"android.permission.BRICK",constant:"BRICK",since:1,level:"signature"},{name:"android.permission.BRIGHTNESS_SLIDER_USAGE",level:"signature",flags:["privileged","development"]},{name:"android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.BROADCAST_NETWORK_PRIVILEGED",level:"signature",flags:["privileged"]},{name:"android.permission.BROADCAST_OPTION_INTERACTIVE",level:"signature",flags:["privileged"]},{name:"android.permission.BROADCAST_PACKAGE_REMOVED",constant:"BROADCAST_PACKAGE_REMOVED",since:1,level:"signature"},{name:"android.permission.BROADCAST_SMS",constant:"BROADCAST_SMS",since:2,level:"signature"},{name:"android.permission.BROADCAST_STICKY",constant:"BROADCAST_STICKY",since:1,level:"normal",label:"send sticky broadcast",description:"Allows the app to send sticky broadcasts, which remain after the broadcast ends. Excessive use may make the phone slow or unstable by causing it to use too much memory."},{name:"android.permission.BROADCAST_WAP_PUSH",constant:"BROADCAST_WAP_PUSH",since:2,level:"signature"},{name:"android.permission.BYPASS_CONCURRENT_RECORD_AUDIO_RESTRICTION",level:"signature",flags:["privileged"]},{name:"android.permission.BYPASS_ROLE_QUALIFICATION",level:"internal",flags:["role"]},{name:"android.permission.CACHE_CONTENT",level:"signature",flags:["role"]},{name:"android.permission.CALL_AUDIO_INTERCEPTION",level:"signature",flags:["privileged","role"]},{name:"android.permission.CALL_COMPANION_APP",constant:"CALL_COMPANION_APP",since:29,level:"normal",label:"see and control calls through the system.",description:"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."},{name:"android.permission.CALL_PHONE",constant:"CALL_PHONE",since:1,level:"dangerous",label:"directly call phone numbers",description:"Allows the app to call phone numbers without your intervention. This may result in unexpected charges or calls. Note that this doesn't allow the app to call emergency numbers. Malicious apps may cost you money by making calls without your confirmation, or dial carrier codes which cause incoming calls to be automatically forwarded to another number."},{name:"android.permission.CALL_PRIVILEGED",constant:"CALL_PRIVILEGED",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.CAMERA",constant:"CAMERA",since:1,level:"dangerous",flags:["instant"],label:"take pictures and videos",description:"This app can take pictures and record videos using the camera while the app is in use."},{name:"android.permission.CAMERA_DISABLE_TRANSMIT_LED",level:"signature",flags:["privileged"]},{name:"android.permission.CAMERA_HEADLESS_SYSTEM_USER",level:"signature"},{name:"android.permission.CAMERA_INJECT_EXTERNAL_CAMERA",level:"signature"},{name:"android.permission.CAMERA_OPEN_CLOSE_LISTENER",level:"signature"},{name:"android.permission.CAMERA_PRIVACY_ALLOWLIST",level:"signature",flags:["privileged"]},{name:"android.permission.CAMERA_SEND_SYSTEM_EVENTS",level:"signature",flags:["privileged"]},{name:"android.permission.CAPTURE_AUDIO_HOTWORD",level:"signature",flags:["privileged","role"]},{name:"android.permission.CAPTURE_AUDIO_OUTPUT",constant:"CAPTURE_AUDIO_OUTPUT",since:19,level:"signature",flags:["privileged","role"]},{name:"android.permission.CAPTURE_BLACKOUT_CONTENT",level:"signature"},{name:"android.permission.CAPTURE_CONSENTLESS_BUGREPORT_DELEGATED_CONSENT",level:"signature",flags:["privileged"]},{name:"android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD",level:"internal",flags:["appop"]},{name:"android.permission.CAPTURE_KEYBOARD",constant:"CAPTURE_KEYBOARD",since:36.1,level:"normal",label:"capture keys",description:"Allows the app to capture keys before system can process system shortcuts and actions."},{name:"android.permission.CAPTURE_MEDIA_OUTPUT",level:"signature",flags:["privileged","role"]},{name:"android.permission.CAPTURE_SECURE_VIDEO_OUTPUT",constant:"CAPTURE_SECURE_VIDEO_OUTPUT",since:19,level:"signature",flags:["role"]},{name:"android.permission.CAPTURE_TUNER_AUDIO_INPUT",level:"signature",flags:["privileged"]},{name:"android.permission.CAPTURE_TV_INPUT",level:"signature",flags:["privileged"]},{name:"android.permission.CAPTURE_VIDEO_OUTPUT",constant:"CAPTURE_VIDEO_OUTPUT",since:19,level:"signature"},{name:"android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT",level:"signature",flags:["privileged","role"]},{name:"android.permission.CARRIER_FILTER_SMS",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_ACCESSIBILITY_VOLUME",level:"signature"},{name:"android.permission.CHANGE_APP_IDLE_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_APP_LAUNCH_TIME_ESTIMATE",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_BACKGROUND_DATA_SETTING",level:"signature"},{name:"android.permission.CHANGE_COMPONENT_ENABLED_STATE",constant:"CHANGE_COMPONENT_ENABLED_STATE",since:1,level:"signature",flags:["privileged","role"]},{name:"android.permission.CHANGE_CONFIGURATION",constant:"CHANGE_CONFIGURATION",since:1,level:"signature",flags:["privileged","development","role"]},{name:"android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_LOWPAN_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_NETWORK_STATE",constant:"CHANGE_NETWORK_STATE",since:1,level:"normal",label:"change network connectivity",description:"Allows the app to change the state of network connectivity."},{name:"android.permission.CHANGE_OVERLAY_PACKAGES",level:"signature",flags:["privileged"]},{name:"android.permission.CHANGE_PERSONAL_CONTEXT_MODE",level:"signature"},{name:"android.permission.CHANGE_PERSONAL_CONTEXT_OPERATING_MODE",level:"signature"},{name:"android.permission.CHANGE_WIFI_MULTICAST_STATE",constant:"CHANGE_WIFI_MULTICAST_STATE",since:4,level:"normal",label:"allow Wi-Fi Multicast reception",description:"Allows the app to receive packets sent to all devices on a Wi-Fi network using multicast addresses, not just your phone. It uses more power than the non-multicast mode."},{name:"android.permission.CHANGE_WIFI_STATE",constant:"CHANGE_WIFI_STATE",since:1,level:"normal",label:"connect and disconnect from Wi-Fi",description:"Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks."},{name:"android.permission.CHECK_CONTENT_SAFETY",level:"signature",flags:["privileged"]},{name:"android.permission.CHECK_REMOTE_LOCKSCREEN",level:"signature",flags:["privileged"]},{name:"android.permission.CLEAR_APP_CACHE",constant:"CLEAR_APP_CACHE",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS",level:"signature"},{name:"android.permission.CLEAR_APP_USER_DATA",constant:"CLEAR_APP_USER_DATA",since:1,level:"signature",flags:["installer"]},{name:"android.permission.CLEAR_FREEZE_PERIOD",level:"signature"},{name:"android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS",level:"signature",flags:["privileged"]},{name:"android.permission.CONFIGURE_ANOMALY_DETECTOR",level:"signature",flags:["privileged"]},{name:"android.permission.CONFIGURE_DISPLAY_BRIGHTNESS",level:"signature",flags:["privileged","development"]},{name:"android.permission.CONFIGURE_DISPLAY_COLOR_MODE",level:"signature"},{name:"android.permission.CONFIGURE_FACTORY_RESET_PROTECTION",level:"signature",flags:["privileged"]},{name:"android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES",level:"signature",flags:["role"]},{name:"android.permission.CONFIGURE_WIFI_DISPLAY",constant:"CONFIGURE_WIFI_DISPLAY",since:34,level:"signature",flags:["knownSigner"]},{name:"android.permission.CONFIRM_FULL_BACKUP",level:"signature"},{name:"android.permission.CONNECTIVITY_INTERNAL",level:"signature",flags:["privileged"]},{name:"android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_ALWAYS_ON_VPN",level:"signature"},{name:"android.permission.CONTROL_AUTOMOTIVE_GNSS",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_DEVICE_LIGHTS",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_DEVICE_STATE",level:"signature"},{name:"android.permission.CONTROL_DISPLAY_BRIGHTNESS",level:"signature"},{name:"android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_DISPLAY_SATURATION",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_INCALL_EXPERIENCE",level:"signature",flags:["privileged","role"]},{name:"android.permission.CONTROL_KEYGUARD",level:"signature"},{name:"android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_LOCATION_UPDATES",constant:"CONTROL_LOCATION_UPDATES",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE",level:"signature"},{name:"android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.CONTROL_SIM_AUTO_PIN_MANAGEMENT",level:"signature"},{name:"android.permission.CONTROL_UI_TRACING",level:"signature",flags:["privileged","development"]},{name:"android.permission.CONTROL_VPN",level:"signature",flags:["privileged"]},{name:"android.permission.CONTROL_WIFI_DISPLAY",level:"signature"},{name:"android.permission.CONTROLLER_REMAPPING",level:"signature"},{name:"android.permission.COPY_ACCOUNTS",level:"signature",flags:["role"]},{name:"android.permission.COPY_PROTECTED_DATA",level:"signature"},{name:"android.permission.CREATE_APP_SPECIFIC_NETWORK",level:"signature",flags:["privileged"]},{name:"android.permission.CREATE_USERS",level:"signature"},{name:"android.permission.CREATE_VIRTUAL_DEVICE",level:"internal",flags:["role"]},{name:"android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS",constant:"CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS",since:34,level:"normal"},{name:"android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS",constant:"CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS",since:34,level:"normal"},{name:"android.permission.CREDENTIAL_MANAGER_SET_ORIGIN",constant:"CREDENTIAL_MANAGER_SET_ORIGIN",since:34,level:"normal"},{name:"android.permission.CRYPT_KEEPER",level:"signature",flags:["privileged","role"]},{name:"android.permission.DELETE_CACHE_FILES",constant:"DELETE_CACHE_FILES",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.DELETE_PACKAGES",constant:"DELETE_PACKAGES",since:1,level:"signature",flags:["privileged","role"]},{name:"android.permission.DELETE_STAGED_HEALTH_CONNECT_REMOTE_DATA",level:"signature"},{name:"android.permission.DELIVER_COMPANION_MESSAGES",constant:"DELIVER_COMPANION_MESSAGES",since:33,level:"normal",label:"Deliver companion messages",description:"Allows a companion app to deliver companion messages to other devices."},{name:"android.permission.DETECT_SCREEN_CAPTURE",constant:"DETECT_SCREEN_CAPTURE",since:34,level:"normal",label:"detect screen captures of app windows",description:"This app will get notified when a screenshot is taken while the app is in use."},{name:"android.permission.DETECT_SCREEN_RECORDING",constant:"DETECT_SCREEN_RECORDING",since:35,level:"normal"},{name:"android.permission.DEVELOPER_VERIFICATION_AGENT",level:"signature",flags:["privileged"]},{name:"android.permission.DEVICE_POWER",constant:"DEVICE_POWER",since:1,level:"signature",flags:["role","module"]},{name:"android.permission.DIAGNOSTIC",constant:"DIAGNOSTIC",since:1,level:"signature"},{name:"android.permission.DISABLE_HIDDEN_API_CHECKS",level:"signature"},{name:"android.permission.DISABLE_INPUT_DEVICE",level:"signature"},{name:"android.permission.DISABLE_KEYGUARD",constant:"DISABLE_KEYGUARD",since:1,level:"normal",label:"disable your screen lock",description:"Allows the app to disable the keylock and any associated password security. For example, the phone disables the keylock when receiving an incoming phone call, then re-enables the keylock when the call is finished."},{name:"android.permission.DISABLE_SYSTEM_SOUND_EFFECTS",level:"signature",flags:["privileged"]},{name:"android.permission.DISCOVER_APP_FUNCTIONS",level:"internal",flags:["role"]},{name:"android.permission.DISPATCH_NFC_MESSAGE",level:"signature",flags:["privileged"]},{name:"android.permission.DISPATCH_PROVISIONING_MESSAGE",level:"signature",flags:["privileged"]},{name:"android.permission.DOMAIN_VERIFICATION_AGENT",level:"internal",flags:["privileged"]},{name:"android.permission.DRAW_MOTION_CUES",level:"signature",flags:["privileged"]},{name:"android.permission.DUMP",constant:"DUMP",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.DVB_DEVICE",level:"signature",flags:["privileged"]},{name:"android.permission.DYNAMIC_INSTRUMENTATION",level:"signature"},{name:"android.permission.EMBED_ANY_APP_IN_UNTRUSTED_MODE",level:"internal",flags:["role"]},{name:"android.permission.EMERGENCY_INSTALL_PACKAGES",level:"signature",flags:["privileged"]},{name:"android.permission.ENABLE_TEST_HARNESS_MODE",level:"signature"},{name:"android.permission.ENFORCE_UPDATE_OWNERSHIP",constant:"ENFORCE_UPDATE_OWNERSHIP",since:34,level:"normal"},{name:"android.permission.ENTER_CAR_MODE_PRIORITIZED",level:"signature",flags:["privileged"]},{name:"android.permission.ENTER_TRADE_IN_MODE",level:"signature",flags:["privileged"]},{name:"android.permission.EXECUTE_APP_ACTION",constant:"EXECUTE_APP_ACTION",since:34,level:"internal",flags:["role"]},{name:"android.permission.EXECUTE_APP_FUNCTIONS",constant:"EXECUTE_APP_FUNCTIONS",since:36,level:"internal",flags:["privileged"]},{name:"android.permission.EXECUTE_APP_FUNCTIONS_SYSTEM",level:"internal",flags:["recents","role"]},{name:"android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS",level:"signature",flags:["privileged","role"]},{name:"android.permission.EXPAND_STATUS_BAR",constant:"EXPAND_STATUS_BAR",since:1,level:"normal",label:"expand/collapse status bar",description:"Allows the app to expand or collapse the status bar."},{name:"android.permission.FACTORY_TEST",constant:"FACTORY_TEST",since:1,level:"signature"},{name:"android.permission.FILTER_EVENTS",level:"signature"},{name:"android.permission.FLASHLIGHT",constant:"FLASHLIGHT",since:1,level:"normal"},{name:"android.permission.FORCE_BACK",constant:"FORCE_BACK",since:1,level:"signature"},{name:"android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS",level:"signature"},{name:"android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS",level:"signature"},{name:"android.permission.FORCE_STOP_PACKAGES",level:"signature",flags:["privileged"]},{name:"android.permission.FORCE_USE_LOOPBACK_INTERFACE",level:"signature",flags:["role"]},{name:"android.permission.FOREGROUND_SERVICE",constant:"FOREGROUND_SERVICE",since:28,level:"normal",flags:["instant"],label:"run foreground service",description:"Allows the app to make use of foreground services."},{name:"android.permission.FOREGROUND_SERVICE_CAMERA",constant:"FOREGROUND_SERVICE_CAMERA",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "camera"',description:'Allows the app to make use of foreground services with the type "camera"'},{name:"android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE",constant:"FOREGROUND_SERVICE_CONNECTED_DEVICE",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "connectedDevice"',description:'Allows the app to make use of foreground services with the type "connectedDevice"'},{name:"android.permission.FOREGROUND_SERVICE_DATA_SYNC",constant:"FOREGROUND_SERVICE_DATA_SYNC",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "dataSync"',description:'Allows the app to make use of foreground services with the type "dataSync"'},{name:"android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT",level:"normal",flags:["instant"]},{name:"android.permission.FOREGROUND_SERVICE_HEALTH",constant:"FOREGROUND_SERVICE_HEALTH",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "health"',description:'Allows the app to make use of foreground services with the type "health"'},{name:"android.permission.FOREGROUND_SERVICE_LOCATION",constant:"FOREGROUND_SERVICE_LOCATION",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "location"',description:'Allows the app to make use of foreground services with the type "location"'},{name:"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK",constant:"FOREGROUND_SERVICE_MEDIA_PLAYBACK",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "mediaPlayback"',description:'Allows the app to make use of foreground services with the type "mediaPlayback"'},{name:"android.permission.FOREGROUND_SERVICE_MEDIA_PROCESSING",constant:"FOREGROUND_SERVICE_MEDIA_PROCESSING",since:35,level:"normal",flags:["instant"],label:'run foreground service with the type "mediaProcessing"',description:'Allows the app to make use of foreground services with the type "mediaProcessing"'},{name:"android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION",constant:"FOREGROUND_SERVICE_MEDIA_PROJECTION",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "mediaProjection"',description:'Allows the app to make use of foreground services with the type "mediaProjection"'},{name:"android.permission.FOREGROUND_SERVICE_MICROPHONE",constant:"FOREGROUND_SERVICE_MICROPHONE",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "microphone"',description:'Allows the app to make use of foreground services with the type "microphone"'},{name:"android.permission.FOREGROUND_SERVICE_PHONE_CALL",constant:"FOREGROUND_SERVICE_PHONE_CALL",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "phoneCall"',description:'Allows the app to make use of foreground services with the type "phoneCall"'},{name:"android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING",constant:"FOREGROUND_SERVICE_REMOTE_MESSAGING",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "remoteMessaging"',description:'Allows the app to make use of foreground services with the type "remoteMessaging"'},{name:"android.permission.FOREGROUND_SERVICE_SPECIAL_USE",constant:"FOREGROUND_SERVICE_SPECIAL_USE",since:34,level:"normal",flags:["appop","instant"],label:'run foreground service with the type "specialUse"',description:'Allows the app to make use of foreground services with the type "specialUse"'},{name:"android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED",constant:"FOREGROUND_SERVICE_SYSTEM_EXEMPTED",since:34,level:"normal",flags:["instant"],label:'run foreground service with the type "systemExempted"',description:'Allows the app to make use of foreground services with the type "systemExempted"'},{name:"android.permission.FRAME_STATS",level:"signature"},{name:"android.permission.FREEZE_SCREEN",level:"signature"},{name:"android.permission.GET_ACCOUNTS",constant:"GET_ACCOUNTS",since:1,level:"dangerous",label:"find accounts on the device",description:"Allows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed."},{name:"android.permission.GET_ACCOUNTS_PRIVILEGED",constant:"GET_ACCOUNTS_PRIVILEGED",since:23,level:"signature",flags:["privileged"]},{name:"android.permission.GET_ANY_PROVIDER_TYPE",level:"signature"},{name:"android.permission.GET_APP_GRANTED_URI_PERMISSIONS",level:"signature"},{name:"android.permission.GET_APP_METADATA",level:"signature",flags:["installer","verifier"]},{name:"android.permission.GET_APP_OPS_STATS",level:"signature",flags:["privileged","development"]},{name:"android.permission.GET_BACKGROUND_INSTALLED_PACKAGES",level:"signature",flags:["role"]},{name:"android.permission.GET_BINDING_UID_IMPORTANCE",level:"signature",flags:["privileged"]},{name:"android.permission.GET_DETAILED_TASKS",level:"signature"},{name:"android.permission.GET_DEVICE_LOCK_ENROLLMENT_TYPE",level:"signature",flags:["privileged"]},{name:"android.permission.GET_HISTORICAL_APP_OPS_STATS",level:"internal",flags:["role"]},{name:"android.permission.GET_INTENT_SENDER_INTENT",level:"signature",flags:["role"]},{name:"android.permission.GET_PACKAGE_SIZE",constant:"GET_PACKAGE_SIZE",since:1,level:"normal",label:"measure app storage space",description:"Allows the app to retrieve its code, data, and cache sizes"},{name:"android.permission.GET_PASSWORD",level:"signature"},{name:"android.permission.GET_PEOPLE_TILE_PREVIEW",level:"signature",flags:["recents"]},{name:"android.permission.GET_PROCESS_STATE_AND_OOM_SCORE",level:"signature",flags:["privileged","development"]},{name:"android.permission.GET_ROLE_HOLDERS",level:"signature",flags:["privileged"]},{name:"android.permission.GET_RUNTIME_PERMISSIONS",level:"signature"},{name:"android.permission.GET_TASKS",constant:"GET_TASKS",since:1,deprecated:21,level:"normal",label:"retrieve running apps",description:"Allows the app to retrieve information about currently and recently running tasks. This may allow the app to discover information about which applications are used on the device."},{name:"android.permission.GET_TOP_ACTIVITY_INFO",constant:"GET_TOP_ACTIVITY_INFO",since:18,level:"signature",flags:["recents"]},{name:"android.permission.GLOBAL_SEARCH",constant:"GLOBAL_SEARCH",since:4,level:"signature",flags:["privileged"]},{name:"android.permission.GLOBAL_SEARCH_CONTROL",level:"signature"},{name:"android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS",level:"signature"},{name:"android.permission.GRANT_RUNTIME_PERMISSIONS",level:"signature",flags:["installer","verifier"]},{name:"android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS",level:"signature"},{name:"android.permission.HANDLE_CAR_MODE_CHANGES",level:"signature",flags:["privileged"]},{name:"android.permission.HANDLE_QUERY_PACKAGE_RESTART",level:"signature"},{name:"android.permission.HARDWARE_TEST",constant:"HARDWARE_TEST",since:1,level:"signature"},{name:"android.permission.HDMI_CEC",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS",level:"signature",flags:["preinstalled"]},{name:"android.permission.HIDE_OVERLAY_WINDOWS",constant:"HIDE_OVERLAY_WINDOWS",since:31,level:"normal",label:"hide other apps overlays",description:"This app can request that the system hides overlays originating from apps from being shown on top of it."},{name:"android.permission.HIDE_STATUS_BAR_NOTIFICATION",level:"signature",flags:["privileged"]},{name:"android.permission.HIGH_SAMPLING_RATE_SENSORS",constant:"HIGH_SAMPLING_RATE_SENSORS",since:31,level:"normal",group:"SENSORS",label:"access sensor data at a high sampling rate",description:"Allows the app to sample sensor data at a rate greater than 200 Hz"},{name:"android.permission.INITIATE_BUGREPORT_AS_NON_ADMIN",level:"signature",flags:["privileged"]},{name:"android.permission.INJECT_EVENTS",constant:"INJECT_EVENTS",since:1,level:"signature"},{name:"android.permission.INJECT_KEY_EVENTS",level:"signature",flags:["privileged"]},{name:"android.permission.INPUT_CONSUMER",level:"signature"},{name:"android.permission.INSTALL_DEPENDENCY_SHARED_LIBRARIES",level:"signature",flags:["role"]},{name:"android.permission.INSTALL_DPC_PACKAGES",level:"signature",flags:["role"]},{name:"android.permission.INSTALL_DYNAMIC_SYSTEM",level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS",level:"signature",flags:["installer","verifier"]},{name:"android.permission.INSTALL_LOCATION_PROVIDER",constant:"INSTALL_LOCATION_PROVIDER",since:4,level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_PACKAGE_UPDATES",level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_PACKAGES",constant:"INSTALL_PACKAGES",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_SELF_UPDATES",level:"signature",flags:["privileged"]},{name:"android.permission.INSTALL_TEST_ONLY_PACKAGE",level:"signature"},{name:"android.permission.INSTANT_APP_FOREGROUND_SERVICE",constant:"INSTANT_APP_FOREGROUND_SERVICE",since:26,level:"signature",flags:["development","appop","instant"]},{name:"android.permission.INTENT_FILTER_VERIFICATION_AGENT",level:"signature",flags:["privileged"]},{name:"android.permission.INTERACT_ACROSS_PROFILES",constant:"INTERACT_ACROSS_PROFILES",since:30,level:"signature",flags:["appop"]},{name:"android.permission.INTERACT_ACROSS_USERS",level:"signature",flags:["privileged","development","role"]},{name:"android.permission.INTERACT_ACROSS_USERS_FULL",level:"signature",flags:["installer","role","module"]},{name:"android.permission.INTERNAL_DELETE_CACHE_FILES",level:"signature"},{name:"android.permission.INTERNAL_SYSTEM_WINDOW",constant:"INTERNAL_SYSTEM_WINDOW",since:1,level:"signature",flags:["recents","module"]},{name:"android.permission.INTERNET",constant:"INTERNET",since:1,level:"normal",flags:["instant"],label:"have full network access",description:"Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet."},{name:"android.permission.INVOKE_CARRIER_SETUP",level:"signature",flags:["privileged"]},{name:"android.permission.KEEP_UNINSTALLED_PACKAGES",level:"signature"},{name:"android.permission.KEYPHRASE_ENROLLMENT_APPLICATION",level:"signature",flags:["privileged"]},{name:"android.permission.KILL_ALL_BACKGROUND_PROCESSES",level:"signature",flags:["privileged"]},{name:"android.permission.KILL_BACKGROUND_PROCESSES",constant:"KILL_BACKGROUND_PROCESSES",since:8,level:"normal",label:"close other apps",description:"Allows the app to end background processes of other apps. This may cause other apps to stop running."},{name:"android.permission.KILL_UID",level:"signature",flags:["installer","role"]},{name:"android.permission.LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE",constant:"LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE",since:34,level:"internal",flags:["role"]},{name:"android.permission.LAUNCH_CREDENTIAL_SELECTOR",level:"signature"},{name:"android.permission.LAUNCH_DEVICE_MANAGER_SETUP",level:"signature",flags:["role"]},{name:"android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK",constant:"LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK",since:32,level:"signature",flags:["preinstalled"]},{name:"android.permission.LAUNCH_PERMISSION_SETTINGS",level:"signature",flags:["privileged"]},{name:"android.permission.LAUNCH_TRUST_AGENT_SETTINGS",level:"signature",flags:["privileged"]},{name:"android.permission.LIST_ENABLED_CREDENTIAL_PROVIDERS",level:"signature",flags:["privileged"]},{name:"android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH",level:"signature",flags:["role","module"]},{name:"android.permission.LISTEN_FOR_KEY_ACTIVITY",level:"signature"},{name:"android.permission.LOADER_USAGE_STATS",constant:"LOADER_USAGE_STATS",since:30,level:"signature",flags:["privileged","appop"]},{name:"android.permission.LOCAL_MAC_ADDRESS",level:"signature",flags:["privileged"]},{name:"android.permission.LOCATION_BYPASS",level:"signature",flags:["privileged"]},{name:"android.permission.LOCATION_HARDWARE",constant:"LOCATION_HARDWARE",since:18,level:"signature",flags:["privileged","role"]},{name:"android.permission.LOCK_DEVICE",level:"signature",flags:["privileged"]},{name:"android.permission.LOG_COMPAT_CHANGE",level:"signature",flags:["privileged"]},{name:"android.permission.LOG_FOREGROUND_RESOURCE_USE",level:"signature",flags:["module"]},{name:"android.permission.LOOP_RADIO",level:"signature",flags:["privileged"]},{name:"android.permission.MAKE_UID_VISIBLE",level:"signature"},{name:"android.permission.MANAGE_ACCESSIBILITY",level:"signature",flags:["setup","recents","role"]},{name:"android.permission.MANAGE_ACCOUNTS",constant:"MANAGE_ACCOUNTS",since:5,level:"normal"},{name:"android.permission.MANAGE_ACTIVITY_STACKS",level:"signature"},{name:"android.permission.MANAGE_ACTIVITY_TASKS",level:"signature",flags:["recents"]},{name:"android.permission.MANAGE_ADVANCED_PROTECTION_MODE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_AISEAL_VIRTUAL_MACHINE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_APP_HIBERNATION",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_APP_OPS_MODES",level:"signature",flags:["installer","verifier","role","module"]},{name:"android.permission.MANAGE_APP_OPS_RESTRICTIONS",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_APP_PREDICTIONS",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_APP_TOKENS",constant:"MANAGE_APP_TOKENS",since:1,level:"signature"},{name:"android.permission.MANAGE_APPOPS",level:"signature"},{name:"android.permission.MANAGE_ASSISTANT_AUDIO",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_AUDIO_POLICY",level:"signature"},{name:"android.permission.MANAGE_AUTO_FILL",level:"signature"},{name:"android.permission.MANAGE_BIND_INSTANT_SERVICE",level:"signature"},{name:"android.permission.MANAGE_BIOMETRIC",level:"signature"},{name:"android.permission.MANAGE_BIOMETRIC_DIALOG",level:"signature"},{name:"android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED",level:"signature"},{name:"android.permission.MANAGE_CA_CERTIFICATES",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_CAMERA",level:"signature"},{name:"android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_CLIPBOARD_ACCESS_NOTIFICATION",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_CLOUDSEARCH",level:"signature",flags:["privileged","role"]},{name:"android.permission.MANAGE_COMPANION_DEVICES",level:"signature",flags:["role","module"]},{name:"android.permission.MANAGE_CONTACTS_PICKER_SESSION",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_CONTENT_CAPTURE",level:"signature"},{name:"android.permission.MANAGE_CONTENT_SUGGESTIONS",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_CONTEXTUAL_MODES",level:"signature"},{name:"android.permission.MANAGE_CRATES",level:"signature"},{name:"android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP",level:"signature"},{name:"android.permission.MANAGE_DEBUGGING",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_DEFAULT_APPLICATIONS",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_ADMINS",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_LOCK_STATE",constant:"MANAGE_DEVICE_LOCK_STATE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ACCESSIBILITY",constant:"MANAGE_DEVICE_POLICY_ACCESSIBILITY",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT",constant:"MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS",constant:"MANAGE_DEVICE_POLICY_ACROSS_USERS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL",constant:"MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL",constant:"MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_AIRPLANE_MODE",constant:"MANAGE_DEVICE_POLICY_AIRPLANE_MODE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS",level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_APP_FUNCTIONS",constant:"MANAGE_DEVICE_POLICY_APP_FUNCTIONS",since:36,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS",constant:"MANAGE_DEVICE_POLICY_APP_RESTRICTIONS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_APP_USER_DATA",constant:"MANAGE_DEVICE_POLICY_APP_USER_DATA",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL",constant:"MANAGE_DEVICE_POLICY_APPS_CONTROL",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ASSIST_CONTENT",constant:"MANAGE_DEVICE_POLICY_ASSIST_CONTENT",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT",constant:"MANAGE_DEVICE_POLICY_AUDIO_OUTPUT",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING",level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_AUTOFILL",constant:"MANAGE_DEVICE_POLICY_AUTOFILL",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE",constant:"MANAGE_DEVICE_POLICY_BACKUP_SERVICE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL",constant:"MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_BLUETOOTH",constant:"MANAGE_DEVICE_POLICY_BLUETOOTH",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_BUGREPORT",constant:"MANAGE_DEVICE_POLICY_BUGREPORT",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_CALLS",constant:"MANAGE_DEVICE_POLICY_CALLS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_CAMERA",constant:"MANAGE_DEVICE_POLICY_CAMERA",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_CAMERA_TOGGLE",constant:"MANAGE_DEVICE_POLICY_CAMERA_TOGGLE",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES",constant:"MANAGE_DEVICE_POLICY_CERTIFICATES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE",constant:"MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION",constant:"MANAGE_DEVICE_POLICY_CONTENT_PROTECTION",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES",constant:"MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_DEFAULT_SMS",constant:"MANAGE_DEVICE_POLICY_DEFAULT_SMS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS",constant:"MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_DISPLAY",constant:"MANAGE_DEVICE_POLICY_DISPLAY",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_FACTORY_RESET",constant:"MANAGE_DEVICE_POLICY_FACTORY_RESET",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_FUN",constant:"MANAGE_DEVICE_POLICY_FUN",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_INPUT_METHODS",constant:"MANAGE_DEVICE_POLICY_INPUT_METHODS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES",constant:"MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES",constant:"MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_KEYGUARD",constant:"MANAGE_DEVICE_POLICY_KEYGUARD",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_LOCALE",constant:"MANAGE_DEVICE_POLICY_LOCALE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_LOCATION",constant:"MANAGE_DEVICE_POLICY_LOCATION",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_LOCK",constant:"MANAGE_DEVICE_POLICY_LOCK",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS",constant:"MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK",constant:"MANAGE_DEVICE_POLICY_LOCK_TASK",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS",constant:"MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_METERED_DATA",constant:"MANAGE_DEVICE_POLICY_METERED_DATA",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MICROPHONE",constant:"MANAGE_DEVICE_POLICY_MICROPHONE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE",constant:"MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE",since:35,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK",constant:"MANAGE_DEVICE_POLICY_MOBILE_NETWORK",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS",constant:"MANAGE_DEVICE_POLICY_MODIFY_USERS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_MTE",constant:"MANAGE_DEVICE_POLICY_MTE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION",constant:"MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_NETWORK_LOGGING",constant:"MANAGE_DEVICE_POLICY_NETWORK_LOGGING",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY",constant:"MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_OVERRIDE_APN",constant:"MANAGE_DEVICE_POLICY_OVERRIDE_APN",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PACKAGE_STATE",constant:"MANAGE_DEVICE_POLICY_PACKAGE_STATE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA",constant:"MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PRINTING",constant:"MANAGE_DEVICE_POLICY_PRINTING",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PRIVATE_DNS",constant:"MANAGE_DEVICE_POLICY_PRIVATE_DNS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION",constant:"MANAGE_DEVICE_POLICY_PROFILE_INTERACTION",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PROFILES",constant:"MANAGE_DEVICE_POLICY_PROFILES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_PROXY",constant:"MANAGE_DEVICE_POLICY_PROXY",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES",constant:"MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD",constant:"MANAGE_DEVICE_POLICY_RESET_PASSWORD",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS",constant:"MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND",constant:"MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS",constant:"MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT",constant:"MANAGE_DEVICE_POLICY_SAFE_BOOT",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SCREEN_CAPTURE",constant:"MANAGE_DEVICE_POLICY_SCREEN_CAPTURE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SCREEN_CONTENT",constant:"MANAGE_DEVICE_POLICY_SCREEN_CONTENT",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SECURITY_LOGGING",constant:"MANAGE_DEVICE_POLICY_SECURITY_LOGGING",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SETTINGS",constant:"MANAGE_DEVICE_POLICY_SETTINGS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SMS",constant:"MANAGE_DEVICE_POLICY_SMS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_STATUS_BAR",constant:"MANAGE_DEVICE_POLICY_STATUS_BAR",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_STORAGE_LIMIT",level:"internal"},{name:"android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE",constant:"MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS",constant:"MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SYSTEM_APPS",constant:"MANAGE_DEVICE_POLICY_SYSTEM_APPS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS",constant:"MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES",constant:"MANAGE_DEVICE_POLICY_SYSTEM_UPDATES",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_THREAD_NETWORK",constant:"MANAGE_DEVICE_POLICY_THREAD_NETWORK",since:36,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_TIME",constant:"MANAGE_DEVICE_POLICY_TIME",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING",constant:"MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER",constant:"MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_USERS",constant:"MANAGE_DEVICE_POLICY_USERS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_VPN",constant:"MANAGE_DEVICE_POLICY_VPN",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_WALLPAPER",constant:"MANAGE_DEVICE_POLICY_WALLPAPER",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_WIFI",constant:"MANAGE_DEVICE_POLICY_WIFI",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_WINDOWS",constant:"MANAGE_DEVICE_POLICY_WINDOWS",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DEVICE_POLICY_WIPE_DATA",constant:"MANAGE_DEVICE_POLICY_WIPE_DATA",since:34,level:"internal",flags:["role"]},{name:"android.permission.MANAGE_DISPLAYS",level:"signature"},{name:"android.permission.MANAGE_DOCUMENTS",constant:"MANAGE_DOCUMENTS",since:19,level:"signature",flags:["role"]},{name:"android.permission.MANAGE_DYNAMIC_SYSTEM",level:"signature"},{name:"android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_ETHERNET_NETWORKS",level:"signature"},{name:"android.permission.MANAGE_EXTERNAL_STORAGE",constant:"MANAGE_EXTERNAL_STORAGE",since:30,level:"signature",flags:["appop","preinstalled"]},{name:"android.permission.MANAGE_FACE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_FACTORY_RESET_PROTECTION",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_FINGERPRINT",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_GAME_ACTIVITY",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_GAME_MODE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.MANAGE_GLOBAL_SOUND_QUALITY_SERVICE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.MANAGE_HOTWORD_DETECTION",level:"internal",flags:["preinstalled"]},{name:"android.permission.MANAGE_INTRUSION_DETECTION_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_IPSEC_TUNNELS",level:"signature",flags:["appop"]},{name:"android.permission.MANAGE_KEY_GESTURES",level:"signature",flags:["recents"]},{name:"android.permission.MANAGE_LOW_POWER_STANDBY",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_LOWPAN_INTERFACES",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_MEDIA",constant:"MANAGE_MEDIA",since:31,level:"signature",flags:["appop","preinstalled"]},{name:"android.permission.MANAGE_MEDIA_PROJECTION",level:"signature"},{name:"android.permission.MANAGE_MUSIC_RECOGNITION",level:"signature",flags:["privileged","role"]},{name:"android.permission.MANAGE_NETWORK_POLICY",level:"signature"},{name:"android.permission.MANAGE_NOTIFICATION_LISTENERS",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_NOTIFICATIONS",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_ONGOING_CALLS",constant:"MANAGE_ONGOING_CALLS",since:31,level:"signature",flags:["appop"],label:"Manage ongoing calls",description:"Allows an app to see details about ongoing calls on your device and to control these calls."},{name:"android.permission.MANAGE_OWN_CALLS",constant:"MANAGE_OWN_CALLS",since:26,level:"normal",label:"route calls through the system",description:"Allows the app to route its calls through the system in order to improve the calling experience."},{name:"android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_READ_SCREEN_CONTEXT_REQUEST",level:"signature",flags:["installer"]},{name:"android.permission.MANAGE_REMOTE_AUTH",level:"signature"},{name:"android.permission.MANAGE_ROLE_HOLDERS",level:"signature",flags:["installer","module"]},{name:"android.permission.MANAGE_ROLLBACKS",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_ROTATION_RESOLVER",level:"signature"},{name:"android.permission.MANAGE_SAFETY_CENTER",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS",level:"signature"},{name:"android.permission.MANAGE_SEARCH_UI",level:"signature",flags:["role"]},{name:"android.permission.MANAGE_SECURE_LOCK_DEVICE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_SENSOR_PRIVACY",level:"internal",flags:["installer","role"]},{name:"android.permission.MANAGE_SENSORS",level:"signature"},{name:"android.permission.MANAGE_SERIAL_PORTS",level:"signature"},{name:"android.permission.MANAGE_SLICE_PERMISSIONS",level:"signature"},{name:"android.permission.MANAGE_SMARTSPACE",level:"signature"},{name:"android.permission.MANAGE_SOUND_TRIGGER",level:"signature",flags:["privileged","role"]},{name:"android.permission.MANAGE_SPEECH_RECOGNITION",level:"signature"},{name:"android.permission.MANAGE_SUBSCRIPTION_PLANS",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION",level:"signature"},{name:"android.permission.MANAGE_SUPERVISION",level:"internal",flags:["role"]},{name:"android.permission.MANAGE_TEST_NETWORKS",level:"signature"},{name:"android.permission.MANAGE_TIME_AND_ZONE_DETECTION",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_TOAST_RATE_LIMITING",level:"signature"},{name:"android.permission.MANAGE_UI_TRANSLATION",level:"signature",flags:["privileged","role"]},{name:"android.permission.MANAGE_USB",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_USER_OEM_UNLOCK_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_USERS",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_VOICE_KEYPHRASES",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_WEAK_ESCROW_TOKEN",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_WEARABLE_SENSING_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.MANAGE_WIFI_COUNTRY_CODE",level:"signature"},{name:"android.permission.MANAGE_WIFI_INTERFACES",constant:"MANAGE_WIFI_INTERFACES",since:33,level:"signature",flags:["privileged","knownSigner"]},{name:"android.permission.MANAGE_WIFI_NETWORK_SELECTION",constant:"MANAGE_WIFI_NETWORK_SELECTION",since:33,level:"signature",flags:["privileged","knownSigner"]},{name:"android.permission.MARK_DEVICE_ORGANIZATION_OWNED",level:"signature",flags:["role"]},{name:"android.permission.MASTER_CLEAR",constant:"MASTER_CLEAR",since:1,level:"signature",flags:["privileged","role"]},{name:"android.permission.MEDIA_CONTENT_CONTROL",constant:"MEDIA_CONTENT_CONTROL",since:19,level:"signature",flags:["privileged"]},{name:"android.permission.MEDIA_RESOURCE_OVERRIDE_PID",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.MEDIA_ROUTING_CONTROL",constant:"MEDIA_ROUTING_CONTROL",since:35,level:"signature",flags:["appop"]},{name:"android.permission.MIGRATE_HEALTH_CONNECT_DATA",level:"signature",flags:["knownSigner"]},{name:"android.permission.MODIFY_ACCESSIBILITY_DATA",level:"signature"},{name:"android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_AUDIO_ROUTING",level:"signature",flags:["privileged","role"]},{name:"android.permission.MODIFY_AUDIO_SETTINGS",constant:"MODIFY_AUDIO_SETTINGS",since:1,level:"normal",label:"change your audio settings",description:"Allows the app to modify global audio settings such as volume and which speaker is used for output."},{name:"android.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_CELL_BROADCASTS",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_DAY_NIGHT_MODE",level:"signature",flags:["privileged","role"]},{name:"android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_HANDOFF_SETTINGS",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_HDR_CONVERSION_MODE",level:"signature"},{name:"android.permission.MODIFY_NETWORK_ACCOUNTING",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_PARENTAL_CONTROLS",level:"signature",flags:["privileged"]},{name:"android.permission.MODIFY_PHONE_STATE",constant:"MODIFY_PHONE_STATE",since:1,level:"signature",flags:["privileged","role"]},{name:"android.permission.MODIFY_QUIET_MODE",level:"signature",flags:["privileged","development","role"]},{name:"android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE",level:"signature"},{name:"android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE",level:"signature",flags:["setup"]},{name:"android.permission.MODIFY_THEME_OVERLAY",level:"signature"},{name:"android.permission.MODIFY_TOUCH_MODE_STATE",level:"signature"},{name:"android.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE",level:"signature"},{name:"android.permission.MONITOR_DEFAULT_SMS_PACKAGE",level:"signature",flags:["privileged"]},{name:"android.permission.MONITOR_DEVICE_CONFIG_ACCESS",level:"signature"},{name:"android.permission.MONITOR_INPUT",level:"signature",flags:["recents"]},{name:"android.permission.MONITOR_KEYBOARD_BACKLIGHT",level:"signature"},{name:"android.permission.MONITOR_STICKY_MODIFIER_STATE",level:"signature"},{name:"android.permission.MOUNT_FORMAT_FILESYSTEMS",constant:"MOUNT_FORMAT_FILESYSTEMS",since:3,level:"signature",flags:["privileged"]},{name:"android.permission.MOUNT_UNMOUNT_FILESYSTEMS",constant:"MOUNT_UNMOUNT_FILESYSTEMS",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.MOVE_PACKAGE",level:"signature",flags:["privileged"]},{name:"android.permission.NEARBY_WIFI_DEVICES",constant:"NEARBY_WIFI_DEVICES",since:33,level:"dangerous",label:"interact with nearby Wi\u2011Fi devices",description:"Allows the app to advertise, connect, and determine the relative position of nearby Wi\u2011Fi devices"},{name:"android.permission.NET_ADMIN",level:"signature",flags:["role","module"]},{name:"android.permission.NET_TUNNELING",level:"signature",flags:["role","module"]},{name:"android.permission.NETWORK_AIRPLANE_MODE",level:"signature"},{name:"android.permission.NETWORK_BYPASS_PRIVATE_DNS",level:"signature"},{name:"android.permission.NETWORK_CARRIER_PROVISIONING",level:"signature",flags:["privileged"]},{name:"android.permission.NETWORK_FACTORY",level:"signature",flags:["role","module"]},{name:"android.permission.NETWORK_MANAGED_PROVISIONING",level:"signature",flags:["role"]},{name:"android.permission.NETWORK_SCAN",level:"signature",flags:["privileged"]},{name:"android.permission.NETWORK_SETTINGS",level:"signature"},{name:"android.permission.NETWORK_SETUP_WIZARD",level:"signature",flags:["setup"]},{name:"android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP",level:"signature",flags:["privileged"]},{name:"android.permission.NETWORK_STACK",level:"signature"},{name:"android.permission.NETWORK_STATS_PROVIDER",level:"signature"},{name:"android.permission.NFC",constant:"NFC",since:9,level:"normal",label:"control Near Field Communication",description:"Allows the app to communicate with Near Field Communication (NFC) tags, cards, and readers."},{name:"android.permission.NFC_HANDOVER_STATUS",level:"signature",flags:["privileged"]},{name:"android.permission.NFC_PREFERRED_PAYMENT_INFO",constant:"NFC_PREFERRED_PAYMENT_INFO",since:30,level:"normal",label:"Preferred NFC Payment Service Information",description:"Allows the app to get preferred nfc payment service information like registered aids and route destination."},{name:"android.permission.NFC_SET_CONTROLLER_ALWAYS_ON",level:"signature",flags:["privileged"]},{name:"android.permission.NFC_TRANSACTION_EVENT",constant:"NFC_TRANSACTION_EVENT",since:28,level:"normal",label:"Secure Element transaction event",description:"Allows the app to receive information about transactions happening on a Secure Element."},{name:"android.permission.NOTIFICATION_DURING_SETUP",level:"signature",flags:["privileged"]},{name:"android.permission.NOTIFY_PENDING_SYSTEM_UPDATE",level:"signature",flags:["privileged"]},{name:"android.permission.NOTIFY_TV_INPUTS",level:"signature",flags:["privileged"]},{name:"android.permission.OBSERVE_APP_USAGE",level:"signature",flags:["privileged","role"]},{name:"android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS",level:"signature",flags:["privileged"]},{name:"android.permission.OBSERVE_NETWORK_POLICY",level:"signature"},{name:"android.permission.OBSERVE_PICTURE_PROFILES",level:"signature",flags:["privileged"]},{name:"android.permission.OBSERVE_ROLE_HOLDERS",level:"signature",flags:["privileged","installer","module"]},{name:"android.permission.OBSERVE_SENSOR_PRIVACY",level:"internal",flags:["installer","role"]},{name:"android.permission.OEM_UNLOCK_STATE",level:"signature"},{name:"android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS",level:"signature",flags:["installer"]},{name:"android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG",level:"signature",flags:["privileged"]},{name:"android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD",level:"signature",flags:["privileged"]},{name:"android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS",level:"signature"},{name:"android.permission.OVERRIDE_MEDIA_SESSION_OWNER",constant:"OVERRIDE_MEDIA_SESSION_OWNER",since:37,level:"signature",flags:["privileged"]},{name:"android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW",level:"signature",flags:["privileged"]},{name:"android.permission.OVERRIDE_WIFI_CONFIG",constant:"OVERRIDE_WIFI_CONFIG",since:33,level:"signature",flags:["privileged","knownSigner"]},{name:"android.permission.PACKAGE_ROLLBACK_AGENT",level:"signature"},{name:"android.permission.PACKAGE_USAGE_STATS",constant:"PACKAGE_USAGE_STATS",since:23,level:"signature",flags:["privileged","development","appop","retailDemo"]},{name:"android.permission.PACKAGE_VERIFICATION_AGENT",level:"signature",flags:["privileged"]},{name:"android.permission.PACKET_KEEPALIVE_OFFLOAD",level:"signature",flags:["privileged"]},{name:"android.permission.PEEK_DROPBOX_DATA",level:"signature"},{name:"android.permission.PEERS_MAC_ADDRESS",level:"signature",flags:["setup","role"]},{name:"android.permission.PERFORM_CDMA_PROVISIONING",level:"signature",flags:["privileged","role"]},{name:"android.permission.PERFORM_GESTURE_EXCHANGE",level:"signature",flags:["privileged"]},{name:"android.permission.PERFORM_IMS_SINGLE_REGISTRATION",level:"internal",flags:["role"]},{name:"android.permission.PERFORM_SIM_ACTIVATION",level:"signature",flags:["privileged"]},{name:"android.permission.PERSISTENT_ACTIVITY",constant:"PERSISTENT_ACTIVITY",since:1,deprecated:15,level:"normal",label:"make app always run",description:"Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone."},{name:"android.permission.PERSONAL_CONTEXT_HOST_INSIGHT_SURFACE",level:"signature",flags:["privileged","recents"]},{name:"android.permission.PERSONAL_CONTEXT_PUBLISH_HINTS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.PERSONAL_CONTEXT_PUBLISH_INSIGHTS",level:"signature",flags:["privileged"]},{name:"android.permission.PERSONAL_CONTEXT_READ_SETTINGS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.PERSONAL_CONTEXT_RECEIVE_HINTS",level:"signature",flags:["privileged"]},{name:"android.permission.PERSONAL_CONTEXT_RECEIVE_INSIGHTS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.PERSONAL_CONTEXT_WRITE_SETTINGS",level:"signature",flags:["privileged"]},{name:"android.permission.POST_BRIDGED_NOTIFICATIONS",level:"signature",flags:["privileged"]},{name:"android.permission.POST_NOTIFICATIONS",constant:"POST_NOTIFICATIONS",since:33,level:"dangerous",flags:["instant"],label:"show notifications",description:"Allows the app to show notifications"},{name:"android.permission.POST_PROMOTED_NOTIFICATIONS",constant:"POST_PROMOTED_NOTIFICATIONS",since:36.1,level:"normal",flags:["appop"],label:"Show live updates",description:"Allows the app to display ongoing, time-sensitive notifications on the status bar and lock screen"},{name:"android.permission.POWER_SAVER",level:"signature",flags:["privileged"]},{name:"android.permission.PREPARE_FACTORY_RESET",level:"signature",flags:["privileged"]},{name:"android.permission.PROCESS_OUTGOING_CALLS",constant:"PROCESS_OUTGOING_CALLS",since:1,deprecated:29,level:"dangerous",label:"reroute outgoing calls",description:"Allows the app to see the number being dialed during an outgoing call with the option to redirect the call to a different number or abort the call altogether."},{name:"android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.PROVIDE_HEALTH_CONNECT_DEVICE_DATA",level:"signature",flags:["privileged"]},{name:"android.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS",constant:"PROVIDE_OWN_AUTOFILL_SUGGESTIONS",since:34,level:"internal",flags:["role"]},{name:"android.permission.PROVIDE_PRIVATE_COMPUTE_SERVICES",constant:"PROVIDE_PRIVATE_COMPUTE_SERVICES",since:37,level:"signature",flags:["privileged"]},{name:"android.permission.PROVIDE_REMOTE_CREDENTIALS",constant:"PROVIDE_REMOTE_CREDENTIALS",since:34,level:"signature",flags:["privileged","role"]},{name:"android.permission.PROVIDE_RESOLVER_RANKER_SERVICE",level:"signature",flags:["privileged"]},{name:"android.permission.PROVIDE_TRUST_AGENT",level:"signature",flags:["privileged"]},{name:"android.permission.PROVISION_DEMO_DEVICE",level:"signature",flags:["setup","knownSigner"]},{name:"android.permission.QUERY_ADMIN_POLICY",level:"signature",flags:["role"]},{name:"android.permission.QUERY_ADVANCED_PROTECTION_MODE",constant:"QUERY_ADVANCED_PROTECTION_MODE",since:36,level:"normal"},{name:"android.permission.QUERY_ALL_PACKAGES",constant:"QUERY_ALL_PACKAGES",since:30,level:"normal",label:"query all packages",description:"Allows an app to see all installed packages."},{name:"android.permission.QUERY_ALLOWLIST",level:"signature",flags:["module"]},{name:"android.permission.QUERY_AUDIO_STATE",level:"signature",flags:["role","module"]},{name:"android.permission.QUERY_CLONED_APPS",level:"signature",flags:["privileged"]},{name:"android.permission.QUERY_DEVICE_STOLEN_STATE",level:"internal",flags:["role"]},{name:"android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT",level:"signature"},{name:"android.permission.QUERY_DOMAIN_VERIFICATION",level:"signature",flags:["module"]},{name:"android.permission.QUERY_TIME_ZONE_RULES",level:"signature",flags:["privileged"]},{name:"android.permission.QUERY_USERS",level:"signature",flags:["privileged","role"]},{name:"android.permission.RADIO_SCAN_WITHOUT_LOCATION",level:"signature",flags:["companion"]},{name:"android.permission.RANGING",constant:"RANGING",since:36,level:"dangerous",label:"determine relative position between nearby devices",description:"Allow the app to determine relative position between nearby devices"},{name:"android.permission.READ_ACTIVE_EMERGENCY_SESSION",level:"signature"},{name:"android.permission.READ_APP_INTERACTION",level:"signature",flags:["installer"]},{name:"android.permission.READ_APP_SPECIFIC_LOCALES",level:"signature",flags:["installer"]},{name:"android.permission.READ_ASSIST_STRUCTURE_SCREEN_CONTENT",constant:"READ_ASSIST_STRUCTURE_SCREEN_CONTENT",since:37,level:"normal"},{name:"android.permission.READ_ASSISTANT_APP_SEARCH_DATA",constant:"READ_ASSISTANT_APP_SEARCH_DATA",since:33,level:"internal",flags:["role"]},{name:"android.permission.READ_BASIC_PHONE_STATE",constant:"READ_BASIC_PHONE_STATE",since:33,level:"normal",label:"read basic telephony status and identity",description:"Allows the app to access the basic telephony features of the device."},{name:"android.permission.READ_BLOCKED_NUMBERS",level:"signature",flags:["role"]},{name:"android.permission.READ_CALENDAR",constant:"READ_CALENDAR",since:1,level:"dangerous",label:"Read calendar events and details",description:"This app can read all calendar events stored on your phone and share or save your calendar data."},{name:"android.permission.READ_CALL_LOG",constant:"READ_CALL_LOG",since:16,level:"dangerous",label:"read call log",description:"This app can read your call history."},{name:"android.permission.READ_CARRIER_APP_INFO",level:"signature"},{name:"android.permission.READ_CELL_BROADCASTS",level:"dangerous"},{name:"android.permission.READ_CLIPBOARD_IN_BACKGROUND",level:"signature",flags:["role"]},{name:"android.permission.READ_COLOR_ZONES",constant:"READ_COLOR_ZONES",since:36,level:"normal"},{name:"android.permission.READ_COMPAT_CHANGE_CONFIG",level:"signature",flags:["privileged"]},{name:"android.permission.READ_CONTACTS",constant:"READ_CONTACTS",since:1,level:"dangerous",label:"read your contacts",description:"Allows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge."},{name:"android.permission.READ_CONTENT_RATING_SYSTEMS",level:"signature",flags:["privileged"]},{name:"android.permission.READ_DEVICE_CONFIG",level:"signature",flags:["preinstalled"]},{name:"android.permission.READ_DREAM_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.READ_DREAM_SUPPRESSION",level:"signature"},{name:"android.permission.READ_DROPBOX_DATA",constant:"READ_DROPBOX_DATA",since:35,level:"signature",flags:["privileged","development"]},{name:"android.permission.READ_EXTERNAL_STORAGE",constant:"READ_EXTERNAL_STORAGE",since:16,level:"dangerous",label:"read the contents of your shared storage",description:"Allows the app to read the contents of your shared storage."},{name:"android.permission.READ_FRAME_BUFFER",constant:"READ_FRAME_BUFFER",since:1,level:"signature",flags:["recents","role"]},{name:"android.permission.READ_GLOBAL_APP_SEARCH_DATA",level:"internal",flags:["role"]},{name:"android.permission.READ_HANDOFF_SETTINGS",level:"signature",flags:["privileged"]},{name:"android.permission.READ_HOME_APP_SEARCH_DATA",constant:"READ_HOME_APP_SEARCH_DATA",since:33,level:"internal",flags:["role"]},{name:"android.permission.READ_INPUT_STATE",constant:"READ_INPUT_STATE",since:1,deprecated:16,level:"signature"},{name:"android.permission.READ_INSTALL_SESSIONS",level:"normal"},{name:"android.permission.READ_INSTALLED_SESSION_PATHS",level:"signature",flags:["installer"]},{name:"android.permission.READ_INTRUSION_DETECTION_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.READ_LOCATION_BYPASS_ALLOWLIST",level:"signature",flags:["privileged"]},{name:"android.permission.READ_LOGS",constant:"READ_LOGS",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.READ_LOWPAN_CREDENTIAL",level:"signature",flags:["privileged"]},{name:"android.permission.READ_MEDIA_AUDIO",constant:"READ_MEDIA_AUDIO",since:33,level:"dangerous",label:"read audio files from shared storage",description:"Allows the app to read audio files from your shared storage."},{name:"android.permission.READ_MEDIA_IMAGES",constant:"READ_MEDIA_IMAGES",since:33,level:"dangerous",label:"read image files from shared storage",description:"Allows the app to read image files from your shared storage."},{name:"android.permission.READ_MEDIA_VIDEO",constant:"READ_MEDIA_VIDEO",since:33,level:"dangerous",label:"read video files from shared storage",description:"Allows the app to read video files from your shared storage."},{name:"android.permission.READ_MEDIA_VISUAL_USER_SELECTED",constant:"READ_MEDIA_VISUAL_USER_SELECTED",since:34,level:"dangerous",label:"read user selected image and video files from shared storage",description:"Allows the app to read image and video files that you select from your shared storage."},{name:"android.permission.READ_MOISTURE_INTRUSION",level:"signature",flags:["privileged"],group:"SENSORS"},{name:"android.permission.READ_NEARBY_STREAMING_POLICY",constant:"READ_NEARBY_STREAMING_POLICY",since:33,level:"normal"},{name:"android.permission.READ_NETWORK_USAGE_HISTORY",level:"signature",flags:["privileged"]},{name:"android.permission.READ_OEM_UNLOCK_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.READ_PEOPLE_DATA",level:"signature",flags:["recents","role"]},{name:"android.permission.READ_PHONE_NUMBERS",constant:"READ_PHONE_NUMBERS",since:26,level:"dangerous",flags:["instant"],label:"read phone numbers",description:"Allows the app to access the phone numbers of the device."},{name:"android.permission.READ_PHONE_STATE",constant:"READ_PHONE_STATE",since:1,level:"dangerous",label:"read phone status and identity",description:"Allows the app to access the phone features of the device. This permission allows the app to determine the phone number and device IDs, whether a call is active, and the remote number connected by a call."},{name:"android.permission.READ_PRECISE_PHONE_STATE",constant:"READ_PRECISE_PHONE_STATE",since:30,level:"signature",flags:["privileged"]},{name:"android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS",level:"signature",flags:["preinstalled"]},{name:"android.permission.READ_PRINT_SERVICES",level:"signature",flags:["preinstalled"]},{name:"android.permission.READ_PRIVILEGED_PHONE_STATE",level:"signature",flags:["privileged","role"]},{name:"android.permission.READ_PROFILE",constant:"READ_PROFILE",since:14,level:"normal"},{name:"android.permission.READ_PROJECTION_STATE",level:"signature"},{name:"android.permission.READ_REMOTE_TASKS",level:"signature",flags:["privileged"]},{name:"android.permission.READ_RESTRICTED_STATS",level:"internal",flags:["privileged"]},{name:"android.permission.READ_RUNTIME_PROFILES",level:"signature",flags:["privileged"]},{name:"android.permission.READ_SAFETY_CENTER_STATUS",level:"signature",flags:["privileged"]},{name:"android.permission.READ_SEARCH_INDEXABLES",level:"signature",flags:["privileged"]},{name:"android.permission.READ_SMS",constant:"READ_SMS",since:1,level:"dangerous",label:"read your text messages (SMS or MMS)",description:"This app can read all SMS (text) messages stored on your phone."},{name:"android.permission.READ_SOCIAL_STREAM",constant:"READ_SOCIAL_STREAM",since:15,deprecated:21,level:"normal"},{name:"android.permission.READ_SUBSCRIPTION_PLANS",level:"signature",flags:["privileged"]},{name:"android.permission.READ_SYNC_SETTINGS",constant:"READ_SYNC_SETTINGS",since:1,level:"normal",label:"read sync settings",description:"Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account."},{name:"android.permission.READ_SYNC_STATS",constant:"READ_SYNC_STATS",since:1,level:"normal",label:"read sync statistics",description:"Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced."},{name:"android.permission.READ_SYSTEM_GRAMMATICAL_GENDER",level:"signature",flags:["privileged"]},{name:"android.permission.READ_SYSTEM_PREFERENCES",constant:"READ_SYSTEM_PREFERENCES",since:36,level:"signature",flags:["privileged","role"]},{name:"android.permission.READ_SYSTEM_UPDATE_INFO",level:"signature",flags:["privileged"]},{name:"android.permission.READ_UPDATE_ENGINE_LOGS",level:"signature",flags:["privileged","development"]},{name:"android.permission.READ_USER_DICTIONARY",constant:"READ_USER_DICTIONARY",since:16,level:"normal"},{name:"android.permission.READ_WALLPAPER_INTERNAL",level:"signature",flags:["privileged"]},{name:"android.permission.READ_WIFI_CREDENTIAL",level:"signature",flags:["privileged"]},{name:"android.permission.READ_WRITE_SYNC_DISABLED_MODE_CONFIG",level:"signature",flags:["verifier","configurator"]},{name:"android.permission.REAL_GET_TASKS",level:"signature",flags:["privileged"]},{name:"android.permission.REBOOT",constant:"REBOOT",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_BLUETOOTH_MAP",level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_BOOT_COMPLETED",constant:"RECEIVE_BOOT_COMPLETED",since:1,level:"normal",label:"run at startup",description:"Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running."},{name:"android.permission.RECEIVE_DATA_ACTIVITY_CHANGE",level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY",level:"signature",flags:["preinstalled"]},{name:"android.permission.RECEIVE_EMERGENCY_BROADCAST",level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_MEDIA_RESOURCE_USAGE",level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_MMS",constant:"RECEIVE_MMS",since:1,level:"dangerous",label:"receive text messages (MMS)",description:"Allows the app to receive and process MMS messages. This means the app could monitor or delete messages sent to your device without showing them to you."},{name:"android.permission.RECEIVE_SANDBOX_TRIGGER_AUDIO",level:"signature",flags:["privileged","appop"]},{name:"android.permission.RECEIVE_SENSITIVE_NOTIFICATIONS",constant:"RECEIVE_SENSITIVE_NOTIFICATIONS",since:36.1,level:"signature",flags:["preinstalled","role","knownSigner"]},{name:"android.permission.RECEIVE_SMS",constant:"RECEIVE_SMS",since:1,level:"dangerous",label:"receive text messages (SMS)",description:"Allows the app to receive and process SMS messages. This means the app could monitor or delete messages sent to your device without showing them to you."},{name:"android.permission.RECEIVE_STK_COMMANDS",level:"signature",flags:["privileged"]},{name:"android.permission.RECEIVE_WAP_PUSH",constant:"RECEIVE_WAP_PUSH",since:1,level:"dangerous",label:"receive text messages (WAP)",description:"Allows the app to receive and process WAP messages. This permission includes the ability to monitor or delete messages sent to you without showing them to you."},{name:"android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE",level:"signature",flags:["privileged"]},{name:"android.permission.RECORD_AUDIO",constant:"RECORD_AUDIO",since:1,level:"dangerous",flags:["instant"],label:"record audio",description:"This app can record audio using the microphone while the app is in use."},{name:"android.permission.RECORD_BACKGROUND_AUDIO",level:"internal",flags:["role"]},{name:"android.permission.RECORD_SENSITIVE_CONTENT",level:"signature"},{name:"android.permission.RECOVER_KEYSTORE",level:"signature",flags:["privileged"]},{name:"android.permission.RECOVERY",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_CALL_PROVIDER",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_CONNECTION_MANAGER",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_NSD_OFFLOAD_ENGINE",level:"signature"},{name:"android.permission.REGISTER_SIM_SUBSCRIPTION",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_STATS_PULL_ATOM",level:"signature",flags:["privileged"]},{name:"android.permission.REGISTER_WINDOW_MANAGER_LISTENERS",level:"signature"},{name:"android.permission.REMAP_MODIFIER_KEYS",level:"signature"},{name:"android.permission.REMOTE_AUDIO_PLAYBACK",level:"signature"},{name:"android.permission.REMOTE_DISPLAY_PROVIDER",level:"signature",flags:["privileged"]},{name:"android.permission.REMOVE_ACCOUNTS",level:"signature",flags:["role"]},{name:"android.permission.REMOVE_DRM_CERTIFICATES",level:"signature",flags:["privileged"]},{name:"android.permission.REMOVE_TASKS",level:"signature",flags:["recents","role"]},{name:"android.permission.RENOUNCE_PERMISSIONS",level:"signature",flags:["privileged"]},{name:"android.permission.REORDER_TASKS",constant:"REORDER_TASKS",since:1,level:"normal",label:"reorder running apps",description:"Allows the app to move tasks to the foreground and background. The app may do this without your input."},{name:"android.permission.REPORT_USAGE_STATS",level:"signature",flags:["module"]},{name:"android.permission.REPOSITION_SELF_WINDOWS",constant:"REPOSITION_SELF_WINDOWS",since:37,level:"signature",flags:["role"]},{name:"android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING",constant:"REQUEST_COMPANION_PROFILE_APP_STREAMING",since:33,level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION",constant:"REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION",since:33,level:"internal",flags:["role"]},{name:"android.permission.REQUEST_COMPANION_PROFILE_COMPUTER",constant:"REQUEST_COMPANION_PROFILE_COMPUTER",since:33,level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_COMPANION_PROFILE_GLASSES",constant:"REQUEST_COMPANION_PROFILE_GLASSES",since:34,level:"normal"},{name:"android.permission.REQUEST_COMPANION_PROFILE_MEDICAL",constant:"REQUEST_COMPANION_PROFILE_MEDICAL",since:37,level:"normal"},{name:"android.permission.REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING",constant:"REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING",since:34,level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_COMPANION_PROFILE_WATCH",constant:"REQUEST_COMPANION_PROFILE_WATCH",since:31,level:"normal",label:"Companion Watch profile permission to manage watches",description:"Allows a companion app to manage watches."},{name:"android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND",constant:"REQUEST_COMPANION_RUN_IN_BACKGROUND",since:26,level:"normal",label:"run in the background",description:"This app can run in the background. This may drain battery faster."},{name:"android.permission.REQUEST_COMPANION_SELF_MANAGED",constant:"REQUEST_COMPANION_SELF_MANAGED",since:33,level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND",constant:"REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND",since:31,level:"normal",label:"Start foreground services from background",description:"Allows a companion app to start foreground services from background."},{name:"android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND",constant:"REQUEST_COMPANION_USE_DATA_IN_BACKGROUND",since:26,level:"normal",label:"use data in the background",description:"This app can use data in the background. This may increase data usage."},{name:"android.permission.REQUEST_DELETE_PACKAGES",constant:"REQUEST_DELETE_PACKAGES",since:26,level:"normal",label:"request delete packages",description:"Allows an application to request deletion of packages."},{name:"android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS",constant:"REQUEST_IGNORE_BATTERY_OPTIMIZATIONS",since:23,level:"normal",label:"ask to ignore battery optimizations",description:"Allows an app to ask for permission to ignore battery optimizations for that app."},{name:"android.permission.REQUEST_INCIDENT_REPORT_APPROVAL",level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_INSTALL_PACKAGES",constant:"REQUEST_INSTALL_PACKAGES",since:23,level:"signature",flags:["appop"],label:"request install packages",description:"Allows an application to request installation of packages."},{name:"android.permission.REQUEST_LOCATION_BUTTON_PERMISSIONS",level:"signature"},{name:"android.permission.REQUEST_NETWORK_SCORES",level:"signature",flags:["setup"]},{name:"android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE",level:"signature",flags:["privileged","role"]},{name:"android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE",constant:"REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE",since:31,level:"normal",label:"Observe companion device presence",description:"Allows a companion app to observe companion device presence when the devices are nearby or far-away."},{name:"android.permission.REQUEST_OBSERVE_DEVICE_UUID_PRESENCE",constant:"REQUEST_OBSERVE_DEVICE_UUID_PRESENCE",since:36,level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_PASSWORD_COMPLEXITY",constant:"REQUEST_PASSWORD_COMPLEXITY",since:29,level:"normal",label:"request screen lock complexity",description:"Allows the app to learn the screen lock complexity level (high, medium, low or none), which indicates the possible range of length and type of the screen lock. The app can also suggest to users that they update the screen lock to a certain level but users can freely ignore and navigate away. Note that the screen lock is not stored in plaintext so the app does not know the exact password."},{name:"android.permission.REQUEST_TASK_HANDOFF",level:"signature",flags:["privileged"]},{name:"android.permission.REQUEST_UNIQUE_ID_ATTESTATION",level:"signature"},{name:"android.permission.RESERVED_FOR_TESTING_SIGNATURE",level:"signature"},{name:"android.permission.RESET_APP_ERRORS",level:"signature"},{name:"android.permission.RESET_FINGERPRINT_LOCKOUT",level:"signature"},{name:"android.permission.RESET_PASSWORD",level:"signature",flags:["privileged"]},{name:"android.permission.RESET_SHORTCUT_MANAGER_THROTTLING",level:"signature"},{name:"android.permission.RESOLVE_COMPONENT_FOR_UID",level:"signature",flags:["privileged"]},{name:"android.permission.RESTART_PACKAGES",constant:"RESTART_PACKAGES",since:1,deprecated:15,level:"normal",label:"close other apps",description:"Allows the app to end background processes of other apps. This may cause other apps to stop running."},{name:"android.permission.RESTART_WIFI_SUBSYSTEM",level:"signature",flags:["privileged"]},{name:"android.permission.RESTORE_HEALTH_CONNECT_DATA_AND_SETTINGS",level:"signature",flags:["knownSigner"]},{name:"android.permission.RESTORE_RUNTIME_PERMISSIONS",level:"signature"},{name:"android.permission.RESTRICT_DISPLAY_MODES",level:"signature"},{name:"android.permission.RESTRICTED_VR_ACCESS",level:"signature",flags:["preinstalled"]},{name:"android.permission.RETRIEVE_WINDOW_CONTENT",level:"signature",flags:["privileged"]},{name:"android.permission.RETRIEVE_WINDOW_TOKEN",level:"signature"},{name:"android.permission.REVIEW_ACCESSIBILITY_SERVICES",level:"signature"},{name:"android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL",level:"signature"},{name:"android.permission.REVOKE_RUNTIME_PERMISSIONS",level:"signature",flags:["installer","verifier"]},{name:"android.permission.ROTATE_SURFACE_FLINGER",level:"signature",flags:["recents"]},{name:"android.permission.RUN_IN_BACKGROUND",level:"signature"},{name:"android.permission.RUN_USER_INITIATED_JOBS",constant:"RUN_USER_INITIATED_JOBS",since:34,level:"normal"},{name:"android.permission.SATELLITE_COMMUNICATION",level:"signature",flags:["privileged","role"]},{name:"android.permission.SCHEDULE_DELAYED_RESTORE",level:"signature",flags:["privileged","development"]},{name:"android.permission.SCHEDULE_EXACT_ALARM",constant:"SCHEDULE_EXACT_ALARM",since:31,level:"signature",flags:["privileged","appop"],label:"Schedule precisely timed actions",description:"This app can schedule work to happen at a desired time in the future. This also means that the app can run when you\u2019re not actively using the device."},{name:"android.permission.SCHEDULE_PRIORITIZED_ALARM",level:"signature",flags:["privileged"]},{name:"android.permission.SCORE_NETWORKS",level:"signature",flags:["privileged"]},{name:"android.permission.SCREEN_TIMEOUT_OVERRIDE",level:"signature"},{name:"android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION",level:"signature",flags:["privileged"]},{name:"android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS",level:"signature",flags:["privileged"]},{name:"android.permission.SEND_DEVICE_CUSTOMIZATION_READY",level:"signature",flags:["privileged"]},{name:"android.permission.SEND_DYNAMIC_INSTRUMENTATION_EVENTS",level:"signature"},{name:"android.permission.SEND_EMBMS_INTENTS",level:"signature",flags:["privileged"]},{name:"android.permission.SEND_RESPOND_VIA_MESSAGE",constant:"SEND_RESPOND_VIA_MESSAGE",since:18,level:"signature",flags:["privileged"]},{name:"android.permission.SEND_SAFETY_CENTER_UPDATE",level:"internal",flags:["privileged"]},{name:"android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS",level:"signature"},{name:"android.permission.SEND_SMS",constant:"SEND_SMS",since:1,level:"dangerous",label:"send and view SMS messages",description:"Allows the app to send SMS messages. This may result in unexpected charges. Malicious apps may cost you money by sending messages without your confirmation."},{name:"android.permission.SEND_SMS_NO_CONFIRMATION",level:"signature",flags:["privileged"]},{name:"android.permission.SERIAL_PORT",level:"signature",flags:["privileged"]},{name:"android.permission.SET_ACTIVITY_WATCHER",constant:"SET_ACTIVITY_WATCHER",since:1,level:"signature"},{name:"android.permission.SET_ALWAYS_FINISH",constant:"SET_ALWAYS_FINISH",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS",level:"signature"},{name:"android.permission.SET_ANIMATION_SCALE",constant:"SET_ANIMATION_SCALE",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_APP_SPECIFIC_LOCALECONFIG",level:"signature"},{name:"android.permission.SET_BIOMETRIC_DIALOG_ADVANCED",constant:"SET_BIOMETRIC_DIALOG_ADVANCED",since:35,level:"signature",flags:["privileged"]},{name:"android.permission.SET_CLIP_SOURCE",level:"signature",flags:["recents"]},{name:"android.permission.SET_CONTENT_PROTECTION_ALLOWLIST",level:"signature",flags:["role"]},{name:"android.permission.SET_DEBUG_APP",constant:"SET_DEBUG_APP",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS",level:"internal",flags:["role","knownSigner"]},{name:"android.permission.SET_DEVELOPER_VERIFICATION_USER_RESPONSE",level:"internal",flags:["installer"]},{name:"android.permission.SET_DISPLAY_OFFSET",level:"signature",flags:["privileged"]},{name:"android.permission.SET_GAME_SERVICE",level:"signature"},{name:"android.permission.SET_HARMFUL_APP_WARNINGS",level:"signature",flags:["verifier"]},{name:"android.permission.SET_INITIAL_LOCK",level:"signature",flags:["setup"]},{name:"android.permission.SET_INPUT_CALIBRATION",level:"signature"},{name:"android.permission.SET_KEYBOARD_LAYOUT",level:"signature"},{name:"android.permission.SET_LOW_POWER_STANDBY_PORTS",level:"signature",flags:["privileged"]},{name:"android.permission.SET_MEDIA_KEY_LISTENER",level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_ORIENTATION",constant:"SET_ORIENTATION",since:1,level:"signature",flags:["recents"]},{name:"android.permission.SET_POINTER_SPEED",constant:"SET_POINTER_SPEED",since:13,level:"signature"},{name:"android.permission.SET_PREFERRED_APPLICATIONS",constant:"SET_PREFERRED_APPLICATIONS",since:1,deprecated:15,level:"signature",flags:["installer","verifier"]},{name:"android.permission.SET_PROCESS_LIMIT",constant:"SET_PROCESS_LIMIT",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_SCREEN_COMPATIBILITY",level:"signature"},{name:"android.permission.SET_SYSTEM_AUDIO_CAPTION",level:"signature",flags:["role"]},{name:"android.permission.SET_THEME_OVERLAY_CONTROLLER_READY",level:"signature",flags:["setup"]},{name:"android.permission.SET_TIME",constant:"SET_TIME",since:8,level:"signature",flags:["privileged","role"]},{name:"android.permission.SET_TIME_ZONE",constant:"SET_TIME_ZONE",since:1,level:"signature",flags:["privileged","role"],label:"set time zone",description:"Allows the app to change the phone's time zone."},{name:"android.permission.SET_UNRESTRICTED_GESTURE_EXCLUSION",level:"signature",flags:["privileged","recents"]},{name:"android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS",level:"signature",flags:["privileged"]},{name:"android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER",level:"signature",flags:["privileged","development"]},{name:"android.permission.SET_WALLPAPER",constant:"SET_WALLPAPER",since:1,level:"normal",label:"set wallpaper",description:"Allows the app to set the system wallpaper."},{name:"android.permission.SET_WALLPAPER_COMPONENT",level:"signature",flags:["privileged"]},{name:"android.permission.SET_WALLPAPER_DIM_AMOUNT",level:"signature",flags:["privileged"]},{name:"android.permission.SET_WALLPAPER_HINTS",constant:"SET_WALLPAPER_HINTS",since:1,level:"normal",label:"adjust your wallpaper size",description:"Allows the app to set the system wallpaper size hints."},{name:"android.permission.SETUP_FSVERITY",level:"signature",flags:["privileged"]},{name:"android.permission.SHOW_CUSTOMIZED_RESOLVER",level:"signature",flags:["privileged"]},{name:"android.permission.SHOW_KEYGUARD_MESSAGE",level:"signature",flags:["privileged"]},{name:"android.permission.SHOW_POWER_MENU",constant:"SHOW_POWER_MENU",since:37,level:"internal",flags:["role"]},{name:"android.permission.SHOW_POWER_MENU_PRIVILEGED",constant:"SHOW_POWER_MENU_PRIVILEGED",since:37,level:"internal",flags:["privileged"]},{name:"android.permission.SHUTDOWN",level:"signature",flags:["privileged","role"]},{name:"android.permission.SIGNAL_PERSISTENT_PROCESSES",constant:"SIGNAL_PERSISTENT_PROCESSES",since:1,level:"signature",flags:["privileged","development"]},{name:"android.permission.SIGNAL_REBOOT_READINESS",level:"signature",flags:["privileged"]},{name:"android.permission.SINGLE_USER_TIS_ACCESS",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.SMS_FINANCIAL_TRANSACTIONS",constant:"SMS_FINANCIAL_TRANSACTIONS",since:29,deprecated:31,level:"signature",flags:["appop"]},{name:"android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER",level:"signature",flags:["privileged"]},{name:"android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY",level:"signature",flags:["privileged"]},{name:"android.permission.STAGE_HEALTH_CONNECT_REMOTE_DATA",level:"signature",flags:["knownSigner"]},{name:"android.permission.START_ACTIVITIES_FROM_BACKGROUND",level:"signature",flags:["privileged","verifier","oem","vendorPrivileged","role"]},{name:"android.permission.START_ACTIVITIES_FROM_SDK_SANDBOX",level:"signature"},{name:"android.permission.START_ACTIVITY_AS_CALLER",level:"signature"},{name:"android.permission.START_ANY_ACTIVITY",level:"signature"},{name:"android.permission.START_CROSS_PROFILE_ACTIVITIES",level:"signature",flags:["role"]},{name:"android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND",constant:"START_FOREGROUND_SERVICES_FROM_BACKGROUND",since:31,level:"signature",flags:["privileged","verifier","oem","vendorPrivileged","role"]},{name:"android.permission.START_REVIEW_PERMISSION_DECISIONS",level:"signature",flags:["installer"]},{name:"android.permission.START_TASKS_FROM_RECENTS",level:"signature",flags:["privileged","recents"]},{name:"android.permission.START_VIBRATION_SESSIONS",level:"signature",flags:["privileged"]},{name:"android.permission.START_VIEW_APP_FEATURES",constant:"START_VIEW_APP_FEATURES",since:33,level:"signature",flags:["installer"],label:"start view app features",description:"Allows the holder to start viewing the features info for an app."},{name:"android.permission.START_VIEW_PERMISSION_USAGE",constant:"START_VIEW_PERMISSION_USAGE",since:29,level:"signature",flags:["installer","module"],label:"start view permission usage",description:"Allows the holder to start the permission usage for an app. Should never be needed for normal apps."},{name:"android.permission.STATSCOMPANION",level:"signature"},{name:"android.permission.STATUS_BAR",constant:"STATUS_BAR",since:1,level:"signature",flags:["privileged","recents"]},{name:"android.permission.STATUS_BAR_SERVICE",level:"signature",flags:["recents"]},{name:"android.permission.STOP_APP_SWITCHES",level:"signature",flags:["privileged","recents"]},{name:"android.permission.STORAGE_INTERNAL",level:"signature"},{name:"android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE",constant:"SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE",since:33,level:"signature",flags:["privileged","role","module"]},{name:"android.permission.SUBSCRIBED_FEEDS_READ",constant:"SUBSCRIBED_FEEDS_READ",since:1,level:"normal"},{name:"android.permission.SUBSCRIBED_FEEDS_WRITE",constant:"SUBSCRIBED_FEEDS_WRITE",since:1,level:"normal"},{name:"android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME",level:"signature",flags:["privileged"]},{name:"android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON",level:"signature",flags:["privileged"]},{name:"android.permission.SUGGEST_EXTERNAL_TIME",level:"signature",flags:["privileged"]},{name:"android.permission.SUGGEST_MANUAL_TIME_AND_ZONE",level:"signature"},{name:"android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE",level:"signature"},{name:"android.permission.SUPPRESS_CLIPBOARD_ACCESS_NOTIFICATION",level:"signature"},{name:"android.permission.SUSPEND_APPS",level:"signature",flags:["verifier","role"]},{name:"android.permission.SYNC_FLAGS",level:"signature"},{name:"android.permission.SYSTEM_ALERT_WINDOW",constant:"SYSTEM_ALERT_WINDOW",since:1,level:"signature",flags:["development","appop","pre23","installer","setup"],label:"This app can appear on top of other apps",description:"This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear."},{name:"android.permission.SYSTEM_APPLICATION_OVERLAY",level:"signature",flags:["appop","installer","recents","role"]},{name:"android.permission.SYSTEM_CAMERA",level:"signature",flags:["privileged","role"]},{name:"android.permission.TABLET_MODE",level:"signature"},{name:"android.permission.TEMPORARY_ENABLE_ACCESSIBILITY",level:"signature"},{name:"android.permission.TEST_BIOMETRIC",level:"signature"},{name:"android.permission.TEST_BLACKLISTED_PASSWORD",level:"signature"},{name:"android.permission.TEST_INPUT_METHOD",level:"signature"},{name:"android.permission.TEST_MANAGE_ROLLBACKS",level:"signature"},{name:"android.permission.TETHER_PRIVILEGED",level:"signature",flags:["privileged"]},{name:"android.permission.THREAD_NETWORK_PRIVILEGED",level:"signature",flags:["privileged"]},{name:"android.permission.THREAD_NETWORK_TESTING",level:"signature"},{name:"android.permission.TIS_EXTENSION_INTERFACE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.TOGGLE_AUTOMOTIVE_PROJECTION",level:"internal",flags:["role"]},{name:"android.permission.TRANSMIT_IR",constant:"TRANSMIT_IR",since:19,level:"normal",label:"transmit infrared",description:"Allows the app to use the phone's infrared transmitter."},{name:"android.permission.TRIGGER_LOST_MODE",level:"signature",flags:["role"]},{name:"android.permission.TRIGGER_SHELL_BUGREPORT",level:"signature"},{name:"android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD",level:"signature"},{name:"android.permission.TRUST_LISTENER",level:"signature"},{name:"android.permission.TUNER_RESOURCE_ACCESS",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.TURN_SCREEN_ON",constant:"TURN_SCREEN_ON",since:34,level:"signature",flags:["privileged","appop"],label:"turn on the screen",description:"Allows the app to turn on the screen."},{name:"android.permission.TV_IMPLICIT_ENTER_PIP",constant:"TV_IMPLICIT_ENTER_PIP",since:36,level:"normal"},{name:"android.permission.TV_INPUT_HARDWARE",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.TV_VIRTUAL_REMOTE_CONTROLLER",level:"signature",flags:["privileged"]},{name:"android.permission.UNLIMITED_SHORTCUTS_API_CALLS",level:"signature",flags:["role"]},{name:"android.permission.UNLIMITED_TOASTS",level:"signature"},{name:"android.permission.UPDATE_APP_OPS_STATS",level:"signature",flags:["privileged","installer","role"]},{name:"android.permission.UPDATE_CONFIG",level:"signature",flags:["privileged"]},{name:"android.permission.UPDATE_DEVICE_MANAGEMENT_RESOURCES",level:"signature",flags:["role"]},{name:"android.permission.UPDATE_DEVICE_STATS",constant:"UPDATE_DEVICE_STATS",since:3,level:"signature",flags:["privileged","role"]},{name:"android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION",level:"signature"},{name:"android.permission.UPDATE_FONTS",level:"signature",flags:["privileged"]},{name:"android.permission.UPDATE_LOCK",level:"signature",flags:["privileged"]},{name:"android.permission.UPDATE_LOCK_TASK_PACKAGES",level:"signature",flags:["setup"]},{name:"android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION",constant:"UPDATE_PACKAGES_WITHOUT_USER_ACTION",since:31,level:"normal",label:"update app without user action",description:"Allows the holder to update the app it previously installed without user action"},{name:"android.permission.UPDATE_TIME_ZONE_RULES",level:"signature",flags:["privileged"]},{name:"android.permission.UPGRADE_RUNTIME_PERMISSIONS",level:"signature"},{name:"android.permission.USE_ATTESTATION_VERIFICATION_SERVICE",level:"signature"},{name:"android.permission.USE_BIOMETRIC",constant:"USE_BIOMETRIC",since:28,level:"normal",group:"SENSORS",label:"use biometric hardware",description:"Allows the app to use biometric hardware for authentication"},{name:"android.permission.USE_BIOMETRIC_INTERNAL",level:"signature"},{name:"android.permission.USE_COLORIZED_NOTIFICATIONS",level:"signature",flags:["setup","role"]},{name:"android.permission.USE_COMPANION_TRANSPORTS",level:"signature"},{name:"android.permission.USE_CREDENTIALS",constant:"USE_CREDENTIALS",since:5,level:"normal"},{name:"android.permission.USE_DATA_IN_BACKGROUND",level:"signature"},{name:"android.permission.USE_EXACT_ALARM",constant:"USE_EXACT_ALARM",since:33,level:"normal",label:"Schedule alarms or event reminders",description:"This app can schedule actions like alarms and reminders to notify you at a desired time in the future."},{name:"android.permission.USE_FINGERPRINT",constant:"USE_FINGERPRINT",since:23,deprecated:28,level:"normal",group:"SENSORS",label:"use fingerprint hardware",description:"Allows the app to use fingerprint hardware for authentication"},{name:"android.permission.USE_FULL_SCREEN_INTENT",constant:"USE_FULL_SCREEN_INTENT",since:29,level:"normal",flags:["appop"],label:"display notifications as full screen activities on a locked device",description:"Allows the app to display notifications as full screen activities on a locked device"},{name:"android.permission.USE_ICC_AUTH",level:"signature",flags:["privileged"]},{name:"android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER",constant:"USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER",since:31,level:"signature",flags:["appop"]},{name:"android.permission.USE_LOCATION_BUTTON",constant:"USE_LOCATION_BUTTON",since:37,level:"normal"},{name:"android.permission.USE_LOOPBACK_INTERFACE",level:"normal"},{name:"android.permission.USE_ON_DEVICE_INTELLIGENCE",level:"signature",flags:["privileged"]},{name:"android.permission.USE_PINNED_WINDOWING_LAYER",constant:"USE_PINNED_WINDOWING_LAYER",since:37,level:"normal"},{name:"android.permission.USE_REMOTE_AUTH",level:"signature"},{name:"android.permission.USE_RESERVED_DISK",level:"signature",flags:["privileged"]},{name:"android.permission.USE_SIP",constant:"USE_SIP",since:9,level:"dangerous",label:"make/receive SIP calls",description:"Allows the app to make and receive SIP calls."},{name:"android.permission.USE_VIBRATOR_HAPTIC_GENERATOR",level:"signature",flags:["privileged","vendorPrivileged"]},{name:"android.permission.USER_ACTIVITY",level:"signature",flags:["privileged"]},{name:"android.permission.UWB_PRIVILEGED",level:"signature",flags:["privileged"]},{name:"android.permission.UWB_RANGING",constant:"UWB_RANGING",since:31,level:"dangerous",label:"determine relative position between nearby Ultra-Wideband devices",description:"Allow the app to determine relative position between nearby Ultra-Wideband devices"},{name:"android.permission.VERIFY_ATTESTATION",level:"signature"},{name:"android.permission.VIBRATE",constant:"VIBRATE",since:1,level:"normal",flags:["instant"],label:"control vibration",description:"Allows the app to control the vibrator."},{name:"android.permission.VIBRATE_ALWAYS_ON",level:"signature"},{name:"android.permission.VIBRATE_SYSTEM_CONSTANTS",level:"signature"},{name:"android.permission.VIBRATE_VENDOR_EFFECTS",level:"signature",flags:["privileged"]},{name:"android.permission.VIEW_INSTANT_APPS",level:"signature",flags:["preinstalled"]},{name:"android.permission.VIRTUAL_INPUT_DEVICE",level:"signature"},{name:"android.permission.WAKE_LOCK",constant:"WAKE_LOCK",since:1,level:"normal",flags:["instant"],label:"prevent phone from sleeping",description:"Allows the app to prevent the phone from going to sleep."},{name:"android.permission.WAKEUP_SURFACE_FLINGER",level:"signature",flags:["recents"]},{name:"android.permission.WARM_UP_CAMERA",level:"signature"},{name:"android.permission.WATCH_APPOPS",level:"signature",flags:["privileged"]},{name:"android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS",level:"signature",flags:["installer"]},{name:"android.permission.WHITELIST_RESTRICTED_PERMISSIONS",level:"signature",flags:["installer"]},{name:"android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS",level:"signature",flags:["role"]},{name:"android.permission.WIFI_SET_DEVICE_MOBILITY_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS",level:"signature",flags:["role"]},{name:"android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG",level:"signature",flags:["verifier","configurator"]},{name:"android.permission.WRITE_APN_SETTINGS",constant:"WRITE_APN_SETTINGS",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_BLOCKED_NUMBERS",level:"signature"},{name:"android.permission.WRITE_CALENDAR",constant:"WRITE_CALENDAR",since:1,level:"dangerous",label:"add or modify calendar events and send email to guests without owners' knowledge",description:"This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners."},{name:"android.permission.WRITE_CALL_LOG",constant:"WRITE_CALL_LOG",since:16,level:"dangerous",label:"write call log",description:"Allows the app to modify your phone's call log, including data about incoming and outgoing calls. Malicious apps may use this to erase or modify your call log."},{name:"android.permission.WRITE_CONTACTS",constant:"WRITE_CONTACTS",since:1,level:"dangerous",label:"modify your contacts",description:"Allows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data."},{name:"android.permission.WRITE_DEVICE_CONFIG",level:"signature",flags:["verifier","configurator"]},{name:"android.permission.WRITE_DREAM_STATE",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS",level:"signature",flags:["privileged","development"]},{name:"android.permission.WRITE_EXTERNAL_STORAGE",constant:"WRITE_EXTERNAL_STORAGE",since:4,level:"dangerous",label:"modify or delete the contents of your shared storage",description:"Allows the app to write the contents of your shared storage."},{name:"android.permission.WRITE_FLAGS",level:"signature"},{name:"android.permission.WRITE_GSERVICES",constant:"WRITE_GSERVICES",since:1,level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_MEDIA_STORAGE",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_OBB",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_PROFILE",constant:"WRITE_PROFILE",since:14,level:"normal"},{name:"android.permission.WRITE_SECURE_SETTINGS",constant:"WRITE_SECURE_SETTINGS",since:3,level:"signature",flags:["privileged","development","installer","role"]},{name:"android.permission.WRITE_SECURITY_LOG",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_SETTINGS",constant:"WRITE_SETTINGS",since:1,level:"signature",flags:["appop","pre23","preinstalled","role"],label:"modify system settings",description:"Allows the app to modify the system's settings data. Malicious apps may corrupt your system's configuration."},{name:"android.permission.WRITE_SETTINGS_HOMEPAGE_DATA",level:"signature",flags:["privileged"]},{name:"android.permission.WRITE_SMS",constant:"WRITE_SMS",since:1,level:"normal"},{name:"android.permission.WRITE_SOCIAL_STREAM",constant:"WRITE_SOCIAL_STREAM",since:15,deprecated:21,level:"normal"},{name:"android.permission.WRITE_SYNC_SETTINGS",constant:"WRITE_SYNC_SETTINGS",since:1,level:"normal",label:"toggle sync on and off",description:"Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account."},{name:"android.permission.WRITE_SYSTEM_PREFERENCES",constant:"WRITE_SYSTEM_PREFERENCES",since:36,level:"signature",flags:["privileged","appop"]},{name:"android.permission.WRITE_USER_DICTIONARY",constant:"WRITE_USER_DICTIONARY",since:16,level:"normal"},{name:"android.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS",level:"signature",flags:["privileged"]},{name:"com.android.alarm.permission.SET_ALARM",constant:"SET_ALARM",since:9,level:"normal",label:"set an alarm",description:"Allows the app to set an alarm in an installed alarm clock app. Some alarm clock apps may not implement this feature."},{name:"com.android.browser.permission.READ_HISTORY_BOOKMARKS",level:"normal"},{name:"com.android.browser.permission.WRITE_HISTORY_BOOKMARKS",level:"normal"},{name:"com.android.launcher.permission.INSTALL_SHORTCUT",constant:"INSTALL_SHORTCUT",since:19,level:"normal",label:"install shortcuts",description:"Allows an application to add Homescreen shortcuts without user intervention."},{name:"com.android.launcher.permission.UNINSTALL_SHORTCUT",constant:"UNINSTALL_SHORTCUT",since:19,level:"normal",label:"uninstall shortcuts",description:"Allows the application to remove Homescreen shortcuts without user intervention."},{name:"com.android.permission.INSTALL_EXISTING_PACKAGES",level:"signature",flags:["privileged","role"]},{name:"com.android.permission.USE_INSTALLER_V2",level:"signature",flags:["privileged"]},{name:"com.android.permission.USE_SYSTEM_DATA_LOADERS",level:"signature"},{name:"com.android.voicemail.permission.ADD_VOICEMAIL",constant:"ADD_VOICEMAIL",since:14,level:"dangerous",label:"add voicemail",description:"Allows the app to add messages to your voicemail inbox."},{name:"com.android.voicemail.permission.READ_VOICEMAIL",constant:"READ_VOICEMAIL",since:21,level:"signature",flags:["privileged","role"]},{name:"com.android.voicemail.permission.WRITE_VOICEMAIL",constant:"WRITE_VOICEMAIL",since:21,level:"signature",flags:["privileged","role"]}]};var PERMISSIONS_SOURCE=permissions_default.source,PERMISSIONS_CHECKED_ON=permissions_default.checkedOn,permissions=permissions_default.permissions,byName=new Map(permissions.map(p=>[p.name,p])),byConstant=new Map(permissions.filter(p=>p.constant).map(p=>[p.constant,p]));function findPermission(input){let s=input.trim().replace(/^(android\.)?Manifest\.permission\./,"");return byName.get(s)??byConstant.get(s)??byName.get(`android.permission.${s}`)}var RUNTIME_GROUPS={Location:["ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","ACCESS_BACKGROUND_LOCATION"],Camera:["CAMERA"],Microphone:["RECORD_AUDIO"],Contacts:["READ_CONTACTS","WRITE_CONTACTS","GET_ACCOUNTS"],Calendar:["READ_CALENDAR","WRITE_CALENDAR"],Phone:["READ_PHONE_STATE","READ_PHONE_NUMBERS","CALL_PHONE","ANSWER_PHONE_CALLS","ADD_VOICEMAIL","USE_SIP","ACCEPT_HANDOVER"],"Call logs":["READ_CALL_LOG","WRITE_CALL_LOG","PROCESS_OUTGOING_CALLS"],SMS:["SEND_SMS","RECEIVE_SMS","READ_SMS","RECEIVE_WAP_PUSH","RECEIVE_MMS"],"Files (Android 12 and lower)":["READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE"],"Photos and videos":["READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_MEDIA_VISUAL_USER_SELECTED","ACCESS_MEDIA_LOCATION"],"Music and audio":["READ_MEDIA_AUDIO"],"Body sensors":["BODY_SENSORS","BODY_SENSORS_BACKGROUND"],"Physical activity":["ACTIVITY_RECOGNITION"],"Nearby devices":["BLUETOOTH_SCAN","BLUETOOTH_CONNECT","BLUETOOTH_ADVERTISE","NEARBY_WIFI_DEVICES","UWB_RANGING","ACCESS_LOCAL_NETWORK"],Notifications:["POST_NOTIFICATIONS"]},groupOf=new Map(Object.entries(RUNTIME_GROUPS).flatMap(([g,list])=>list.map(c=>[c,g]))),runtimeGroup=p=>p.constant?groupOf.get(p.constant):void 0,PLAY_RESTRICTED={ACCESS_BACKGROUND_LOCATION:"Play requires a declaration and a video showing the feature that needs background location.",MANAGE_EXTERNAL_STORAGE:"All files access: Play allows it only for file managers, backup and similar apps, with a declaration.",QUERY_ALL_PACKAGES:"Play allows it only when seeing all installed apps is core to the app. Declare <queries> for the specific apps you talk to instead.",REQUEST_INSTALL_PACKAGES:"Play allows it only for apps whose core purpose is installing packages, with a declaration.",USE_FULL_SCREEN_INTENT:"From Android 14 it is granted by default only to calling and alarm apps; others need the user to allow it, and Play asks for a declaration.",USE_EXACT_ALARM:"Play allows it only for alarm clock and calendar apps. Use SCHEDULE_EXACT_ALARM, or inexact alarms, otherwise.",READ_MEDIA_IMAGES:"Photo and video permissions policy: only apps that need broad access to photos may use it. Use the photo picker otherwise.",READ_MEDIA_VIDEO:"Photo and video permissions policy: only apps that need broad access to videos may use it. Use the photo picker otherwise.",READ_SMS:"SMS permissions are limited to the default SMS app and a few exceptions, with a declaration.",SEND_SMS:"SMS permissions are limited to the default SMS app and a few exceptions, with a declaration.",RECEIVE_SMS:"SMS permissions are limited to the default SMS app and a few exceptions, with a declaration.",RECEIVE_MMS:"SMS permissions are limited to the default SMS app and a few exceptions, with a declaration.",RECEIVE_WAP_PUSH:"SMS permissions are limited to the default SMS app and a few exceptions, with a declaration.",READ_CALL_LOG:"Call log permissions are limited to the default phone app and a few exceptions, with a declaration.",WRITE_CALL_LOG:"Call log permissions are limited to the default phone app and a few exceptions, with a declaration.",PROCESS_OUTGOING_CALLS:"Call log permissions are limited to the default phone app and a few exceptions, with a declaration."},NOTES={POST_NOTIFICATIONS:[{text:"Runtime permission on Android 13+ for apps targeting API 33 or higher. Ask at a moment the user understands why, not at first launch."}],ACCESS_FINE_LOCATION:[{text:"On Android 12+, request it together with ACCESS_COARSE_LOCATION: the user can choose approximate location only."}],ACCESS_COARSE_LOCATION:[{text:"Enough for city-level features. On Android 12+ users can downgrade a fine location request to this."}],ACCESS_BACKGROUND_LOCATION:[{text:'Request it separately, after foreground location is granted. On Android 11+ the user has to choose "Allow all the time" in Settings.'}],READ_EXTERNAL_STORAGE:[{text:"Has no effect for apps targeting Android 13+. Use READ_MEDIA_IMAGES/VIDEO/AUDIO or the photo picker, and limit this one to older versions.",fix:'android:maxSdkVersion="32"'}],WRITE_EXTERNAL_STORAGE:[{text:"Has no effect on Android 11+ (scoped storage). Save to app-specific folders or through MediaStore instead.",fix:'android:maxSdkVersion="28"'}],READ_MEDIA_VISUAL_USER_SELECTED:[{text:'Android 14+ partial access: the user picks which photos and videos the app sees. Declare it with READ_MEDIA_IMAGES/VIDEO to support "Select photos".'}],BLUETOOTH_SCAN:[{text:"Android 12+. If you don\u2019t derive location from scan results, say so to drop the location requirement.",fix:'android:usesPermissionFlags="neverForLocation"'}],NEARBY_WIFI_DEVICES:[{text:"Android 13+. If you don\u2019t derive location from Wi-Fi results, say so.",fix:'android:usesPermissionFlags="neverForLocation"'}],BLUETOOTH:[{text:"Replaced by BLUETOOTH_SCAN, BLUETOOTH_CONNECT and BLUETOOTH_ADVERTISE on Android 12+.",fix:'android:maxSdkVersion="30"'}],BLUETOOTH_ADMIN:[{text:"Replaced by BLUETOOTH_SCAN, BLUETOOTH_CONNECT and BLUETOOTH_ADVERTISE on Android 12+.",fix:'android:maxSdkVersion="30"'}],SCHEDULE_EXACT_ALARM:[{text:"From Android 14 it is denied by default for most new installs: check AlarmManager.canScheduleExactAlarms() and fall back to inexact alarms."}],SYSTEM_ALERT_WINDOW:[{text:"Send the user to Settings.ACTION_MANAGE_OVERLAY_PERMISSION and check Settings.canDrawOverlays()."}],FOREGROUND_SERVICE:[{text:"Apps targeting Android 14+ also need the FOREGROUND_SERVICE_<TYPE> permission for each foregroundServiceType they use, and Play asks you to describe each type."}],READ_PHONE_STATE:[{text:"Rarely needed. Device identifiers such as the IMEI aren\u2019t available to normal apps on Android 10+ anyway."}],INTERNET:[{text:"On Android 17, an app targeting API 36 that requests INTERNET was also given ACCESS_LOCAL_NETWORK automatically (granted, marked revoke-when-requested). Check the Android 17 behaviour changes before targeting API 37 if you talk to devices on the local network."}],ACCESS_LOCAL_NETWORK:[{text:"New in Android 17 (API 37): apps targeting API 37 need it at runtime to reach devices on the local network, unless they use a system device picker. Users who already granted another Nearby devices permission aren\u2019t asked again. Apps targeting API 36 that request INTERNET were granted it automatically on the Android 17 emulator."}],GET_ACCOUNTS:[{text:"Since Android 8 it doesn\u2019t give access to other apps\u2019 accounts. Use the account picker (AccountManager.newChooseAccountIntent) instead."}]};function checkManifest(xml,targetSdk=36){let out=[],seen=new Map,lineOf=index=>xml.slice(0,index).split(`
|
|
202
|
+
`).length;for(let m of xml.matchAll(/<uses-permission(?:-sdk-23)?\b([^>]*)\/?>/g)){let attrs=m[1],name2=attrs.match(/android:name\s*=\s*"([^"]+)"/)?.[1];if(!name2)continue;let maxSdk=attrs.match(/android:maxSdkVersion\s*=\s*"(\d+)"/)?.[1],flags=attrs.match(/android:usesPermissionFlags\s*=\s*"([^"]+)"/)?.[1],p=findPermission(name2),u={name:name2,line:lineOf(m.index),...maxSdk?{maxSdk:Number(maxSdk)}:{},...flags?{flags}:{},permission:p,group:p?runtimeGroup(p):void 0,findings:[]},f2=u.findings;if(seen.has(name2)&&f2.push({level:"info",text:`Also declared on line ${seen.get(name2)}.`}),seen.set(name2,u.line),!p){if(name2.startsWith("android.permission.")){let close=permissions.filter(x=>x.constant&&levenshtein(x.name,name2)<=2).map(x=>x.name);f2.push({level:"error",text:`Not a platform permission${close.length?`. Did you mean ${close.join(" or ")}?`:". Check the spelling."}`})}else f2.push({level:"info",text:"Defined by a library or another app, not the platform."});out.push(u);continue}p.constant?p.level==="signature"&&!p.flags?.includes("appop")&&f2.push({level:"warning",text:"Signature permission: only granted to apps signed with the platform key. Ordinary apps won\u2019t get it."}):f2.push({level:"warning",text:`A ${p.level} permission for system apps only; ordinary apps aren\u2019t granted it.`}),p.deprecated&&p.deprecated<=targetSdk&&f2.push({level:"warning",text:`Deprecated in API ${p.deprecated}.`}),p.level==="dangerous"&&f2.push({level:"info",text:`Runtime permission${u.group?` (${u.group} dialog)`:""}: request it in code before use${p.since&&p.since>23?`, on API ${p.since}+`:""}.`}),p.flags?.includes("appop")&&p.level!=="dangerous"&&f2.push({level:"info",text:"Special app access: the user grants it in Settings, not in a dialog."});for(let n2 of NOTES[p.constant??""]??[]){let fixed=n2.fix&&attrs.includes(n2.fix.split("=")[0]);f2.push({level:n2.fix&&!fixed?"warning":"info",text:n2.fix&&!fixed?`${n2.text} Add ${n2.fix}.`:n2.text})}p.constant&&PLAY_RESTRICTED[p.constant]&&f2.push({level:"warning",text:`Google Play: ${PLAY_RESTRICTED[p.constant]}`}),out.push(u)}return out}function levenshtein(a,b){let dp=Array.from({length:b.length+1},(_,i)=>i);for(let i=1;i<=a.length;i++){let prev=dp[0];dp[0]=i;for(let j=1;j<=b.length;j++){let tmp=dp[j];dp[j]=Math.min(dp[j]+1,dp[j-1]+1,prev+(a[i-1]===b[j-1]?0:1)),prev=tmp}}return dp[b.length]}var VERSION_NAMES={31:"Android 12",32:"Android 12L",33:"Android 13",34:"Android 14",35:"Android 15",36:"Android 16",37:"Android 17"},PAGE={31:"https://developer.android.com/about/versions/12/behavior-changes-12",33:"https://developer.android.com/about/versions/13/behavior-changes-13",34:"https://developer.android.com/about/versions/14/behavior-changes-14",35:"https://developer.android.com/about/versions/15/behavior-changes-15",36:"https://developer.android.com/about/versions/16/behavior-changes-16",37:"https://developer.android.com/about/versions/17/behavior-changes-17"};var has=(m,p)=>m.permissions.has(p.includes(".")?p:`android.permission.${p}`),servicesOfType=(m,type)=>m.services.filter(s=>s.types.includes(type)),receiversFor=(m,action)=>m.receivers.filter(r=>r.actions.includes(action)),names=list=>list.map(x=>x.name).join(", "),changes=[{id:"exported",api:31,area:"Intents & components",title:"Declare android:exported on components with intent filters",summary:"Activities, services and receivers that have an intent filter must say explicitly whether other apps can start them. Without it the app fails to build or install.",action:'Set android:exported="true" on the launcher activity and anything other apps start; "false" everywhere else.',link:"#exported",detect:m=>m.unexported.length?{severity:"must",reason:`No android:exported on ${m.unexported.join(", ")}.`}:null},{id:"pending-intent-mutability",api:31,area:"Intents & components",title:"Specify PendingIntent mutability",summary:"Every PendingIntent needs FLAG_IMMUTABLE or FLAG_MUTABLE, or creating it throws.",action:"Use FLAG_IMMUTABLE unless something must fill in the intent (inline replies, bubbles). Lint reports UnspecifiedImmutableFlag.",link:"#pending-intent-mutability"},{id:"fgs-background-start",api:31,area:"Background work",title:"No starting foreground services from the background",summary:"Starting a foreground service while the app is in the background throws, apart from a few exemptions.",action:"Use WorkManager expedited work, or start the service while the app is visible.",link:"#foreground-service-launch-restrictions",detect:m=>m.services.some(s=>s.types.length)||has(m,"FOREGROUND_SERVICE")?{severity:"check",reason:"The app declares foreground services."}:null},{id:"exact-alarm",api:31,area:"Background work",title:'Exact alarms need the "Alarms & reminders" access',summary:"setExact and similar calls need SCHEDULE_EXACT_ALARM, which the user can turn off in Settings.",action:"Declare SCHEDULE_EXACT_ALARM, check AlarmManager.canScheduleExactAlarms() and fall back to inexact alarms.",link:"#exact-alarm-permission",detect:m=>has(m,"SCHEDULE_EXACT_ALARM")||has(m,"USE_EXACT_ALARM")?{severity:"check",reason:"The app uses exact alarms."}:null},{id:"notification-trampolines",api:31,area:"Background work",title:"No activity starts from notification trampolines",summary:"A service or broadcast receiver started from a notification tap can no longer start an activity.",action:"Point the notification\u2019s content intent straight at the activity with a PendingIntent.",link:"#notification-trampolines"},{id:"bluetooth-permissions",api:31,area:"Permissions & privacy",title:"New Bluetooth permissions",summary:"BLUETOOTH_SCAN, BLUETOOTH_CONNECT and BLUETOOTH_ADVERTISE replace BLUETOOTH, BLUETOOTH_ADMIN and the location requirement for scans.",action:'Declare the new permissions, request them at runtime, and limit the old ones with android:maxSdkVersion="30".',link:"#bluetooth-permissions",detect:m=>has(m,"BLUETOOTH")||has(m,"BLUETOOTH_ADMIN")?{severity:has(m,"BLUETOOTH_CONNECT")||has(m,"BLUETOOTH_SCAN")?"check":"must",reason:"The app declares the legacy BLUETOOTH or BLUETOOTH_ADMIN permission."}:null},{id:"approximate-location",api:31,area:"Permissions & privacy",title:"Users can grant approximate location only",summary:"The location dialog lets users pick approximate instead of precise.",action:"Request ACCESS_COARSE_LOCATION together with ACCESS_FINE_LOCATION and handle getting only coarse.",link:"#approximate-location",detect:m=>has(m,"ACCESS_FINE_LOCATION")?{severity:has(m,"ACCESS_COARSE_LOCATION")?"check":"must",reason:has(m,"ACCESS_COARSE_LOCATION")?"The app requests precise location.":"ACCESS_FINE_LOCATION is declared without ACCESS_COARSE_LOCATION."}:null},{id:"app-links-12",api:31,area:"Intents & components",title:"App Links verification changes",summary:"Verified link filters must include the BROWSABLE category and the https scheme.",action:"Check every android:autoVerify filter, then re-verify with adb shell pm verify-app-links --re-verify.",link:"#android-app-links-verification-changes",detect:m=>/android:autoVerify\s*=\s*"true"/.test(m.text)?{severity:"check",reason:"The app has verified App Link filters."}:null},{id:"custom-notifications",api:31,area:"UI",title:"Custom notifications get the standard template",summary:"Notifications with custom content views no longer use the whole area; the collapsed height drops to 48dp.",action:"Test every notification built with setCustomContentView and provide an expanded layout.",link:"#custom-notifications"},{id:"backup-rules",api:31,area:"Permissions & privacy",title:"New backup and device-transfer rules format",summary:"fullBackupContent rules don\u2019t apply to device-to-device transfers on Android 12+; a new data extraction rules file separates cloud backup and transfer.",action:"Add android:dataExtractionRules pointing to a <data-extraction-rules> file, and keep the old file for Android 11 and lower.",link:"#backup-restore",detect:m=>/android:fullBackupContent\s*=/.test(m.text)&&!/android:dataExtractionRules\s*=/.test(m.text)?{severity:"must",reason:"android:fullBackupContent is set without android:dataExtractionRules."}:null},{id:"hibernation",api:31,area:"Background work",title:"App hibernation",summary:"After a few months without use, the app\u2019s permissions are reset and it stops running jobs and alarms.",action:"If the app works mostly in the background, ask users to exempt it from hibernation.",link:"#app-hibernation"},{id:"samesite-cookies",api:31,area:"Security",title:"Modern SameSite cookies in WebView",summary:"Cookies without SameSite are treated as Lax, and SameSite=None needs Secure.",action:"Test sign-in and payment flows that run in a WebView.",link:"#samesite",detect:m=>/WebView|webkit/.test(m.text)?{severity:"check",reason:"The manifest mentions WebView."}:null},{id:"native-vendor-libs",api:31,area:"Runtime",title:"Vendor native libraries need <uses-native-library>",summary:"Non-NDK native libraries from the device vendor aren\u2019t accessible unless the manifest asks for them.",action:"Declare each vendor library with <uses-native-library>.",link:"#vendor-libraries"},{id:"notification-permission",api:33,area:"Permissions & privacy",title:"Notification runtime permission",summary:"Apps targeting Android 13 must request POST_NOTIFICATIONS before posting; denied notifications are silently dropped.",action:"Declare POST_NOTIFICATIONS and ask at a moment the user understands why.",link:"https://developer.android.com/develop/ui/views/notifications/notification-permission",detect:m=>has(m,"POST_NOTIFICATIONS")?{severity:"check",reason:"POST_NOTIFICATIONS is declared: make sure it\u2019s requested at runtime."}:null},{id:"granular-media",api:33,area:"Permissions & privacy",title:"Granular media permissions",summary:"READ_EXTERNAL_STORAGE no longer gives access to other apps\u2019 media; use READ_MEDIA_IMAGES, READ_MEDIA_VIDEO or READ_MEDIA_AUDIO.",action:'Switch to the READ_MEDIA_* permissions or the photo picker, and add android:maxSdkVersion="32" to READ_EXTERNAL_STORAGE.',link:"#granular-media-permissions",detect:m=>has(m,"READ_EXTERNAL_STORAGE")&&!/READ_EXTERNAL_STORAGE"[^>]*maxSdkVersion/.test(m.text)?{severity:"must",reason:"READ_EXTERNAL_STORAGE is declared without maxSdkVersion."}:null},{id:"nearby-wifi",api:33,area:"Permissions & privacy",title:"NEARBY_WIFI_DEVICES for Wi-Fi APIs",summary:"Wi-Fi features such as Wi-Fi Direct, local-only hotspots and connecting to a known SSID use NEARBY_WIFI_DEVICES instead of fine location.",action:'Declare NEARBY_WIFI_DEVICES with android:usesPermissionFlags="neverForLocation" if you don\u2019t derive location.',link:"#nearby-wifi-devices-permission",detect:m=>has(m,"CHANGE_WIFI_STATE")||has(m,"ACCESS_WIFI_STATE")?{severity:"check",reason:"The app uses Wi-Fi state permissions."}:null},{id:"body-sensors-background",api:33,area:"Permissions & privacy",title:"Background body sensor access needs a new permission",summary:"Reading body sensors in the background needs BODY_SENSORS_BACKGROUND in addition to BODY_SENSORS.",action:"Declare and request BODY_SENSORS_BACKGROUND if you read sensors in the background.",link:"#body-sensors-background-permission",detect:m=>has(m,"BODY_SENSORS")?{severity:"check",reason:"The app uses body sensors."}:null},{id:"battery-restricted-boot",api:33,area:"Background work",title:"No BOOT_COMPLETED for battery-restricted apps",summary:"If the user restricts the app\u2019s battery use, it no longer receives BOOT_COMPLETED until it is opened.",action:"Don\u2019t rely on boot broadcasts for important work; reschedule when the app starts.",link:"#battery-resource-utilization",detect:m=>receiversFor(m,"android.intent.action.BOOT_COMPLETED").length?{severity:"check",reason:`Boot receiver: ${names(receiversFor(m,"android.intent.action.BOOT_COMPLETED"))}.`}:null},{id:"ad-id",api:33,area:"Permissions & privacy",title:"AD_ID permission for the advertising ID",summary:"Without com.google.android.gms.permission.AD_ID the advertising ID becomes zeros.",action:"Declare the permission if you or an SDK use the advertising ID (SDKs often merge it in already).",link:"#ad-id"},{id:"media-controls",api:33,area:"Media",title:"Media controls come from PlaybackState",summary:"System media controls are built from the session\u2019s PlaybackState actions, not the notification\u2019s action list.",action:"Set the right PlaybackState actions and custom actions on your MediaSession.",link:"#playback-controls",detect:m=>servicesOfType(m,"mediaPlayback").length?{severity:"check",reason:"The app has a media playback service."}:null},{id:"webview-force-dark",api:33,area:"UI",title:"WebView follows the app theme",summary:"setForceDark does nothing; WebView sets prefers-color-scheme from the app\u2019s isLightTheme.",action:"Use setAlgorithmicDarkeningAllowed instead and test web content in dark theme.",link:"#webview-color-theme"},{id:"bluetooth-enable",api:33,area:"Connectivity",title:"BluetoothAdapter enable() and disable() return false",summary:"Ordinary apps can no longer switch Bluetooth on or off.",action:"Ask the user with ACTION_REQUEST_ENABLE instead.",link:"#bluetooth-adapter"},{id:"fgs-types",api:34,area:"Background work",title:"Foreground service types are required",summary:"Every foreground service must declare a foregroundServiceType and the matching FOREGROUND_SERVICE_<TYPE> permission.",action:"Add android:foregroundServiceType to each service and declare its permission; describe the types in Play Console.",link:"#fgs-types",detect:m=>{let missing=m.services.filter(s=>!s.types.length&&/foreground/i.test(s.name));if(missing.length)return{severity:"must",reason:`No foregroundServiceType on ${names(missing)}.`};let typed=m.services.filter(s=>s.types.length);return typed.length?{severity:"check",reason:`Typed services: ${typed.map(s=>`${s.name} (${s.types.join(", ")})`).join("; ")}. Check each type\u2019s FOREGROUND_SERVICE_ permission.`}:has(m,"FOREGROUND_SERVICE")?{severity:"must",reason:"FOREGROUND_SERVICE is declared but no service has a foregroundServiceType."}:null}},{id:"runtime-receivers",api:34,area:"Intents & components",title:"Runtime-registered receivers must say whether they\u2019re exported",summary:"registerReceiver for non-system broadcasts needs RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED.",action:"Use ContextCompat.registerReceiver with the right flag.",link:"#runtime-receivers-exported"},{id:"implicit-intents",api:34,area:"Intents & components",title:"Implicit intents only reach exported components",summary:"An implicit intent no longer reaches your own non-exported components, and mutable PendingIntents need an explicit target.",action:"Set the package or component on intents meant for your own app.",link:"#safer-intents",detect:m=>/android:exported\s*=\s*"false"[^>]*>\s*<intent-filter/.test(m.text.replace(/\n/g," "))?{severity:"check",reason:"Some non-exported components have intent filters: start them with explicit intents."}:null},{id:"full-screen-intent",api:34,area:"Permissions & privacy",title:"Full-screen intents limited to calls and alarms",summary:"USE_FULL_SCREEN_INTENT is only granted by default to calling and alarm apps.",action:"Check NotificationManager.canUseFullScreenIntent() and send other users to the settings page.",link:"#secure-fsi",detect:m=>has(m,"USE_FULL_SCREEN_INTENT")?{severity:"must",reason:"USE_FULL_SCREEN_INTENT is declared."}:null},{id:"partial-photo-access",api:34,area:"Permissions & privacy",title:"Partial photo and video access",summary:"Users can grant access to selected photos and videos only.",action:"Use the photo picker, or handle READ_MEDIA_VISUAL_USER_SELECTED in your own gallery.",link:"#partial-photo-library-access",detect:m=>has(m,"READ_MEDIA_IMAGES")||has(m,"READ_MEDIA_VIDEO")?{severity:"check",reason:"The app reads photos or videos."}:null},{id:"background-activity-14",api:34,area:"Security",title:"More restrictions on starting activities from the background",summary:"Sending a PendingIntent or binding a service no longer passes on your background-start privilege unless you opt in.",action:"Opt in with ActivityOptions or BIND_ALLOW_ACTIVITY_STARTS only where needed.",link:"#background-activity-restrictions"},{id:"dynamic-code-14",api:34,area:"Security",title:"Dynamically loaded code must be read-only",summary:"DEX, JAR and APK files loaded at runtime must be marked read-only, or loading throws.",action:"Call setReadOnly() before writing the file, or stop loading code dynamically.",link:"#safer-dynamic-code-loading"},{id:"zip-traversal",api:34,area:"Security",title:"Zip path traversal blocked",summary:'ZipFile and ZipInputStream throw for entries containing ".." or starting with "/".',action:"Make sure archives you read don\u2019t use such paths.",link:"#zip-path-traversal"},{id:"media-projection-consent",api:34,area:"Media",title:"User consent for each screen capture session",summary:"Each MediaProjection can be used for one capture session, with consent each time.",action:"Don\u2019t cache the capture intent; register a MediaProjection.Callback.",link:"#media-projection-consent",detect:m=>servicesOfType(m,"mediaProjection").length?{severity:"must",reason:"The app has a mediaProjection service."}:null},{id:"jobscheduler-14",api:34,area:"Background work",title:"JobScheduler callbacks and network permission",summary:"Slow onStartJob/onStopJob now cause ANRs, and network constraints need ACCESS_NETWORK_STATE.",action:"Keep job callbacks fast (WorkManager does this) and declare ACCESS_NETWORK_STATE.",link:"#jobscheduler-reinforces-behavior",detect:m=>!has(m,"ACCESS_NETWORK_STATE")&&has(m,"INTERNET")?{severity:"check",reason:"INTERNET is declared without ACCESS_NETWORK_STATE: needed if jobs use network constraints."}:null},{id:"tiles-launch",api:34,area:"UI",title:"Quick Settings tiles launch with a PendingIntent",summary:"TileService.startActivityAndCollapse(Intent) throws; use the PendingIntent overload.",action:"Switch to startActivityAndCollapse(PendingIntent).",link:"#tiles-launch-api",detect:m=>/BIND_QUICK_SETTINGS_TILE/.test(m.text)?{severity:"must",reason:"The app has a Quick Settings tile."}:null},{id:"bluetooth-connect-enforced",api:34,area:"Connectivity",title:"BLUETOOTH_CONNECT enforced for getProfileConnectionState",summary:"BluetoothAdapter.getProfileConnectionState needs BLUETOOTH_CONNECT.",action:"Declare and check BLUETOOTH_CONNECT before calling it.",link:"#enforce-bluetooth_connect"},{id:"edge-to-edge-15",api:35,area:"UI",title:"Edge-to-edge is enforced",summary:"Content draws behind the status and navigation bars; status bar colour APIs have no effect.",action:"Apply window insets (Material 3 components and Scaffold do most of it) and check every screen, including rarely visited ones.",link:"#edge-to-edge",detect:m=>m.activities.length?{severity:"must",reason:`${m.activities.length} activit${m.activities.length===1?"y":"ies"} will draw edge to edge.`}:null},{id:"datasync-timeout",api:35,area:"Background work",title:"dataSync and mediaProcessing services time out after 6 hours",summary:"These foreground service types get 6 hours per 24 hours, then onTimeout is called.",action:"Implement Service.onTimeout and stop the service there, or move the work to WorkManager or user-initiated data transfer jobs.",link:"#datasync-timeout",detect:m=>{let s=[...servicesOfType(m,"dataSync"),...servicesOfType(m,"mediaProcessing")];return s.length?{severity:"must",reason:`Affected services: ${names(s)}.`}:null}},{id:"boot-completed-fgs",api:35,area:"Background work",title:"BOOT_COMPLETED can\u2019t start some foreground service types",summary:"Boot receivers can\u2019t start dataSync, camera, mediaPlayback, phoneCall, mediaProjection or microphone services.",action:"Defer that work until the user opens the app, or use WorkManager.",link:"#fgs-boot-completed",detect:m=>{let banned=["dataSync","camera","mediaPlayback","phoneCall","mediaProjection","microphone"],s=m.services.filter(x=>x.types.some(t=>banned.includes(t)));return receiversFor(m,"android.intent.action.BOOT_COMPLETED").length&&s.length?{severity:"check",reason:`A boot receiver and services of restricted types (${names(s)}).`}:null}},{id:"saw-fgs",api:35,area:"Background work",title:"SYSTEM_ALERT_WINDOW needs a visible overlay to start services",summary:"The overlay permission alone no longer lets the app start foreground services from the background.",action:"Show the overlay window before starting the service.",link:"#fgs-sysalert",detect:m=>has(m,"SYSTEM_ALERT_WINDOW")&&m.services.some(s=>s.types.length)?{severity:"check",reason:"The app has the overlay permission and foreground services."}:null},{id:"dnd-global",api:35,area:"Permissions & privacy",title:"Apps can\u2019t change global Do Not Disturb",summary:"setInterruptionFilter and setNotificationPolicy create an AutomaticZenRule instead of changing the global state.",action:"Contribute an AutomaticZenRule.",link:"#dnd-changes",detect:m=>has(m,"ACCESS_NOTIFICATION_POLICY")?{severity:"must",reason:"ACCESS_NOTIFICATION_POLICY is declared."}:null},{id:"openjdk-15",api:35,area:"Runtime",title:"Stricter String.format and other OpenJDK changes",summary:"Format strings are validated more strictly (%0 throws), Arrays.asList().toArray() returns Object[], and iw/ji/in locale codes are no longer converted.",action:"Run the app\u2019s formatting and locale code; with compileSdk 35, replace removeFirst()/removeLast() on lists when minSdk is below 35.",link:"#openjdk-api-changes"},{id:"tls-10-11",api:35,area:"Security",title:"TLS 1.0 and 1.1 disallowed",summary:"Connections that need TLS 1.0 or 1.1 fail.",action:"Make sure every server you talk to supports TLS 1.2 or newer.",link:"#restricted-tls-versions"},{id:"audio-focus-15",api:35,area:"Media",title:"Audio focus only for the top app or a foreground service",summary:"requestAudioFocus fails from the background unless a foreground service is running.",action:"Request focus while visible or from your playback service.",link:"#audio-focus",detect:m=>servicesOfType(m,"mediaPlayback").length?{severity:"check",reason:"The app plays media."}:null},{id:"stable-configuration",api:35,area:"UI",title:"Configuration sizes include the system bars",summary:"Configuration.screenWidthDp and screenHeightDp no longer exclude the system bars.",action:"Use WindowInsets or WindowMetrics for layout, not Configuration sizes.",link:"#stable-configuration"},{id:"elegant-text-15",api:35,area:"UI",title:"elegantTextHeight defaults to true",summary:"Scripts such as Arabic, Thai and Tamil use the taller, more readable font.",action:"Check layouts in those languages.",link:"#elegant-text-height"},{id:"edge-to-edge-16",api:36,area:"UI",title:"The edge-to-edge opt-out is gone",summary:"windowOptOutEdgeToEdgeEnforcement is ignored on Android 16.",action:"Remove the opt-out from your themes and handle insets everywhere.",link:"#edge-to-edge"},{id:"predictive-back",api:36,area:"UI",title:"Predictive back is on: onBackPressed isn\u2019t called",summary:"Back-to-home, cross-task and cross-activity animations are enabled, onBackPressed isn\u2019t called and KEYCODE_BACK isn\u2019t dispatched.",action:'Move back handling to OnBackPressedCallback or BackHandler; android:enableOnBackInvokedCallback="false" opts out temporarily.',link:"#predictive-back",detect:m=>/enableOnBackInvokedCallback\s*=\s*"false"/.test(m.text)?{severity:"must",reason:'Predictive back is switched off with enableOnBackInvokedCallback="false": a temporary opt-out.'}:m.activities.length?{severity:"check",reason:"Check any custom back handling."}:null},{id:"large-screen-restrictions",api:36,area:"UI",title:"Orientation and resizability locks ignored on large screens",summary:'On screens at least 600dp wide, screenOrientation, resizeableActivity="false" and min/max aspect ratio are ignored (games excepted).',action:"Make layouts adapt to any size and orientation, and save UI state across recreation.",link:"#ignore-orientation",detect:m=>{let locked=m.activities.filter(a=>/screenOrientation\s*=\s*"(portrait|landscape|sensorPortrait|sensorLandscape|userPortrait|userLandscape|reversePortrait|reverseLandscape)"|resizeableActivity\s*=\s*"false"|(min|max)AspectRatio/.test(a.tag));return locked.length?{severity:"must",reason:`Locked orientation or size on ${names(locked)}.`}:null}},{id:"health-permissions",api:36,area:"Permissions & privacy",title:"Body sensor permissions become health permissions",summary:"Heart rate and similar APIs need android.permission.health.* permissions instead of BODY_SENSORS.",action:"Request READ_HEART_RATE and READ_HEALTH_DATA_IN_BACKGROUND, and declare a privacy policy activity.",link:"#health-fitness-permissions",detect:m=>has(m,"BODY_SENSORS")||has(m,"BODY_SENSORS_BACKGROUND")?{severity:"must",reason:"BODY_SENSORS is declared."}:null},{id:"fixed-rate",api:36,area:"Runtime",title:"scheduleAtFixedRate runs at most one missed execution",summary:"When the app comes back, only one missed periodic task runs immediately instead of all of them.",action:"Check code that counts on catching up missed runs.",link:"#schedule-at-fixed-rate"},{id:"elegant-text-16",api:36,area:"UI",title:"elegantTextHeight is ignored",summary:"The compact UI fonts are discontinued; the attribute no longer has an effect.",action:"Check text in Arabic, Thai, Tamil and other affected scripts.",link:"#elegant-text-height"},{id:"mediastore-version",api:36,area:"Security",title:"MediaStore.getVersion() is unique per app",summary:"The version string no longer carries identifying details.",action:"Don\u2019t parse the version; only compare it for changes.",link:"#mediastore-lockdown"},{id:"local-network",api:37,area:"Permissions & privacy",title:"Local network access needs ACCESS_LOCAL_NETWORK",summary:"Reaching devices on the local network needs the new runtime permission (Nearby devices group), unless you use a system device picker.",action:"Declare and request ACCESS_LOCAL_NETWORK if you talk to LAN devices (casting, smart home, local servers).",link:"#local-network-protection-permission",detect:m=>has(m,"INTERNET")?{severity:"check",reason:"The app has INTERNET: check whether it talks to devices on the local network."}:null},{id:"large-screen-opt-out-removed",api:37,area:"UI",title:"No more opt-out from large-screen resizability",summary:"PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY no longer works.",action:"Finish making the app adaptive before targeting API 37.",link:"#large-screen-ignore-constraints",detect:m=>/PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY/.test(m.text)?{severity:"must",reason:"The manifest uses the temporary opt-out property."}:null},{id:"messagequeue",api:37,area:"Runtime",title:"Lock-free MessageQueue",summary:"A new MessageQueue implementation breaks code that reflects on its private fields.",action:"Remove reflection on MessageQueue (some test and profiling libraries do this).",link:"#lock-free-messagequeue"},{id:"static-final",api:37,area:"Runtime",title:"static final fields can\u2019t be changed",summary:"Changing a static final field with reflection throws, and through JNI crashes.",action:"Find reflection that writes final fields, often in tests or mocking setups.",link:"#static-final-fields"},{id:"widget-memory",api:37,area:"UI",title:"Strict bitmap memory limit for widgets",summary:"updateAppWidget throws when the RemoteViews images exceed the memory budget.",action:"Downsample widget bitmaps and decode them once per update (see the glance-appwidget-updates-and-memory skill).",link:"#memory-limit-widget",detect:m=>receiversFor(m,"android.appwidget.action.APPWIDGET_UPDATE").length?{severity:"must",reason:`Widget provider: ${names(receiversFor(m,"android.appwidget.action.APPWIDGET_UPDATE"))}.`}:null},{id:"sms-otp-delay",api:37,area:"Permissions & privacy",title:"Standard SMS with OTPs are delayed three hours",summary:"For most apps, SMS containing a one-time code aren\u2019t delivered or queryable for three hours.",action:"Use the SMS Retriever or SMS User Consent API for verification codes.",link:"#sms-otp-protection",detect:m=>has(m,"RECEIVE_SMS")||has(m,"READ_SMS")?{severity:"must",reason:"The app reads SMS."}:null},{id:"background-audio",api:37,area:"Media",title:"Background audio needs a while-in-use foreground service",summary:"Playing audio, requesting focus or changing volume from the background needs a foreground service with while-in-use capabilities, or exact alarm access for alarm streams.",action:"Play background audio from a mediaPlayback foreground service.",link:"#bg-audio",detect:m=>servicesOfType(m,"mediaPlayback").length?{severity:"check",reason:"The app plays media."}:null},{id:"bal-17",api:37,area:"Security",title:"Background activity launch hardening",summary:"Restrictions extend to IntentSender, and MODE_BACKGROUND_ACTIVITY_START_ALLOWED is replaced by narrower modes.",action:"Use MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE and check lint and StrictMode.",link:"#activity-security"},{id:"ct-default",api:37,area:"Security",title:"Certificate transparency on by default",summary:"TLS connections require certificate transparency.",action:"Check connections to servers with private or self-issued certificates.",link:"#ct-default"},{id:"native-dcl",api:37,area:"Security",title:"Native libraries loaded at runtime must be read-only",summary:"System.load() throws UnsatisfiedLinkError for writable files.",action:"Mark downloaded .so files read-only, or ship them in the APK.",link:"#safer-dcl"},{id:"contacts-pii",api:37,area:"Permissions & privacy",title:"Contacts data view hides account columns",summary:"ACCOUNT_NAME, ACCOUNT_TYPE and ACCOUNT_TYPE_AND_DATA_SET are removed from ContactsContract.Data, and queries without READ_CONTACTS are validated strictly.",action:"Read account columns from RawContacts, joined on RAW_CONTACT_ID.",link:"#restrict-pii-fields-cp2-data-view",detect:m=>has(m,"READ_CONTACTS")?{severity:"check",reason:"The app reads contacts."}:null},{id:"content-capture",api:37,area:"Permissions & privacy",title:"setContentCaptureEnabled(false) no longer works",summary:"Content Capture can\u2019t be turned off with the old API.",action:"Use FLAG_SECURE on windows whose content must not be captured.",link:"#deprecate-setcontentcaptureenabled"},{id:"passwords-keyboard",api:37,area:"UI",title:"Passwords hidden while typing on physical keyboards",summary:"With an external keyboard, password fields hide every character by default.",action:"Nothing to change; test sign-in with a keyboard.",link:"#hide-pwd-kbd"},{id:"rfcomm-read",api:37,area:"Connectivity",title:"Bluetooth RFCOMM read() returns -1 when closed",summary:"read() on an RFCOMM BluetoothSocket returns -1 instead of only throwing when the connection drops.",action:"Stop read loops on a -1 return value.",link:"#bluetooth-rfcomm-socket-change",detect:m=>has(m,"BLUETOOTH_CONNECT")||has(m,"BLUETOOTH")?{severity:"check",reason:"The app uses Bluetooth."}:null}];function changeUrl(c){return c.link.startsWith("http")?c.link:`${PAGE[c.api]}${c.link}`}function changesBetween(from,to){return changes.filter(c=>c.api>from&&c.api<=to)}function readManifest(text2){let permissions2=new Set([...text2.matchAll(/<uses-permission(?:-sdk-23)?\b[^>]*android:name\s*=\s*"([^"]+)"/g)].map(m=>m[1])),nameOf=tag=>tag.match(/android:name\s*=\s*"([^"]+)"/)?.[1]??"(unnamed)",unexported=[],services=[],receivers=[],activities=[];for(let m of text2.matchAll(/<(activity|activity-alias|service|receiver)\b([^>]*?)(\/>|>([\s\S]*?)<\/\1>)/g)){let[,kind,attrs,,body=""]=m,name2=nameOf(attrs);/<intent-filter/.test(body)&&!/android:exported\s*=/.test(attrs)&&unexported.push(name2),kind==="service"&&services.push({name:name2,types:(attrs.match(/android:foregroundServiceType\s*=\s*"([^"]+)"/)?.[1]??"").split("|").filter(Boolean),tag:attrs}),kind==="receiver"&&receivers.push({name:name2,actions:[...body.matchAll(/<action\b[^>]*android:name\s*=\s*"([^"]+)"/g)].map(a=>a[1])}),kind==="activity"&&activities.push({name:name2,tag:attrs})}return{text:text2,permissions:permissions2,unexported,services,receivers,activities}}function findTargetSdk(text2){let v=text2.match(/android:targetSdkVersion\s*=\s*"(\d+)"/)?.[1]??text2.match(/targetSdk(?:Version)?\s*(?:=|\()?\s*(\d{2})/)?.[1];return v?Number(v):void 0}var SERVER_INFO={name:"androidboss",title:"AndroidBoss",version:"0.1.0",websiteUrl:"https://androidboss.info/agents/mcp-server/"},INSTRUCTIONS=`Tools for Android and Kotlin Multiplatform work, from androidboss.info. Each one is deterministic and checked against real toolchains (R8, Gradle, Kotlin/Native, swiftc, the Android CLI). Inputs are processed in memory and not stored.
|
|
203
|
+
Prefer these over guessing: retrace obfuscated stack traces with a mapping, check Kotlin/AGP/Gradle compatibility before changing versions, look up a permission or a targetSdk change before editing a manifest, and use find_kmp_libraries for current library versions.`,LIMIT={mapping:5e6,large:5e5,medium:1e5,small:1e4},LOCAL_LIMIT={mapping:1e8,large:2e7,medium:1e7,small:1e6},STDIO_MAX_BYTES=128*1024*1024;var text=(max,describe2)=>string2().min(1).max(max).describe(describe2),READ_ONLY={readOnlyHint:!0,idempotentHint:!0,destructiveHint:!1,openWorldHint:!1};function result(summary,data){return{content:[{type:"text",text:summary}],structuredContent:data}}function createServer(onTool,limits=LIMIT){let L=limits,server=new McpServer(SERVER_INFO,{instructions:INSTRUCTIONS});if(onTool){let register3=server.registerTool.bind(server);server.registerTool=(name2,config2,cb)=>(onTool({name:name2,title:config2.title??name2,description:config2.description??""}),register3(name2,config2,cb))}return server.registerTool("retrace",{title:"R8 retrace",description:"Deobfuscate an Android stack trace with the mapping.txt from the same R8/ProGuard build. Output matches Google\u2019s retrace tool.",inputSchema:object({mapping:text(L.mapping,"Contents of mapping.txt (app/build/outputs/mapping/<variant>/mapping.txt)."),stackTrace:text(L.medium,"The obfuscated stack trace or logcat excerpt.")}),outputSchema:object({text:string2(),framesTotal:number2(),framesRetraced:number2(),ambiguous:number2()}),annotations:READ_ONLY},async({mapping,stackTrace})=>{let r=retrace(mapping,stackTrace);return result(r.text,{...r})}),server.registerTool("json_to_kotlin",{title:"JSON to Kotlin data classes",description:"Turn a JSON sample into Kotlin data classes for kotlinx.serialization (default), Moshi or Gson. Types are inferred across array items; nullable when a value is null or missing.",inputSchema:object({json:text(L.large,"A JSON object or array."),rootName:string2().max(100).optional().describe("Name of the top-level class. Default: Root."),library:_enum(["kotlinx","moshi","gson","none"]).optional().describe("Serialization library. Default: kotlinx."),packageName:string2().max(200).optional()}),outputSchema:object({code:string2(),classCount:number2(),warnings:array(string2())}),annotations:READ_ONLY},async({json,rootName,library,packageName})=>{let r=jsonToKotlin(json,{...rootName?{rootName}:{},...library?{library}:{},...packageName?{packageName}:{}});return result([r.code,...r.warnings.map(w=>`// Warning: ${w}`)].join(`
|
|
204
|
+
`),{...r})}),server.registerTool("check_compatibility",{title:"Kotlin, AGP and Gradle compatibility",description:`Check whether Kotlin, Android Gradle Plugin, Gradle, Compose Compiler, KSP, Compose Multiplatform and compileSdk versions work together, using the official compatibility tables (checked ${CHECKED_ON}). Pass the versions you have or plan to use.`,inputSchema:object({kotlin:string2().max(40).optional(),agp:string2().max(40).optional().describe("Android Gradle Plugin version."),gradle:string2().max(40).optional(),composeCompiler:string2().max(40).optional().describe("Only for Kotlin before 2.0."),ksp:string2().max(60).optional(),cmp:string2().max(40).optional().describe("Compose Multiplatform version."),compileSdk:string2().max(10).optional()}),outputSchema:object({checks:array(object({status:string2(),title:string2(),detail:string2(),source:string2()}))}),annotations:READ_ONLY},async versions=>{let checks=checkVersions(versions);return result(checks.length?checks.map(c=>`[${c.status}] ${c.title}: ${c.detail} (${c.source})`).join(`
|
|
205
|
+
`):"Nothing to check: pass at least two versions.",{checks})}),server.registerTool("android_cli_tasks",{title:"Android CLI tasks",description:`List what the Android CLI can do (Android CLI ${CHECKED_VERSION}): task ids, what each does, and the fields android_cli_command takes for it.`,inputSchema:object({query:string2().max(100).optional().describe("Filter by words in the title or summary.")}),outputSchema:object({tasks:array(object({id:string2(),group:string2(),title:string2(),summary:string2(),fields:array(object({id:string2(),label:string2(),required:boolean2()}))}))}),annotations:READ_ONLY},async({query})=>{let words2=(query??"").toLowerCase().split(/\s+/).filter(Boolean),list=tasks.filter(t=>words2.every(w=>`${t.title} ${t.summary}`.toLowerCase().includes(w))).map(t=>({id:t.id,group:t.group,title:t.title,summary:t.summary,fields:t.fields.map(f2=>({id:f2.id,label:f2.label,required:!!f2.required}))}));return result(list.map(t=>`${t.id}: ${t.title}. ${t.summary}`).join(`
|
|
206
|
+
`)||"No task matches.",{tasks:list})}),server.registerTool("android_cli_command",{title:"Android CLI command",description:`Build the exact Android CLI command for a task from android_cli_tasks, validated against Android CLI ${CHECKED_VERSION}. Fields you leave out use the task's defaults.`,inputSchema:object({taskId:string2().max(100).describe("A task id from android_cli_tasks."),values:record(string2(),union([string2(),boolean2()])).optional().describe("Field id to value.")}),outputSchema:object({commands:array(string2()),missing:array(string2()),note:string2().optional()}),annotations:READ_ONLY},async({taskId,values})=>{let task=tasks.find(t=>t.id===taskId);if(!task)return{isError:!0,content:[{type:"text",text:`Unknown task "${taskId}". Call android_cli_tasks for the list.`}]};let merged={...defaults(task),...values??{}},r=buildCommand(taskId,merged),missing=r.missing.length?`
|
|
207
|
+
Missing required: ${r.missing.join(", ")}`:"";return result(`${r.commands.join(`
|
|
208
|
+
`)}${missing}`,{...r,...task.note?{note:task.note}:{}})}),server.registerTool("crash_to_prompt",{title:"Crash to agent prompt",description:"Turn an Android crash or ANR (logcat, Play Console or Crashlytics text) into a compact, redacted prompt: root cause, app frames to open first, and the trimmed trace. Removes emails, tokens, IPs and similar secrets.",inputSchema:object({crash:text(L.medium,"The stack trace or logcat output."),goal:_enum(Object.keys(goals)).optional().describe(`What the prompt asks for: ${Object.entries(goals).map(([k,v])=>`${k} (${v})`).join(", ")}.`),appPackage:string2().max(200).optional().describe("Your app\u2019s package, to tell app frames from library frames. Detected when omitted.")}),outputSchema:object({prompt:string2(),appPackage:string2(),rootCause:object({type:string2(),message:string2()}).optional(),files:array(string2()),obfuscated:boolean2(),warnings:array(string2())}),annotations:READ_ONLY},async({crash,goal,appPackage})=>{let r=crashToPrompt(crash,{...goal?{goal}:{},...appPackage?{appPackage}:{}});return result(r.prompt,{prompt:r.prompt,appPackage:r.appPackage,...r.rootCause?{rootCause:r.rootCause}:{},files:r.files,obfuscated:r.obfuscated,warnings:r.warnings})}),server.registerTool("version_catalog",{title:"Convert to a version catalog",description:"Move the dependencies and plugins of a build.gradle(.kts) file into libs.versions.toml, and rewrite the build file to use the catalog accessors. Accessors are checked to compile with Gradle.",inputSchema:object({buildFile:text(L.medium,"Contents of build.gradle.kts or build.gradle."),dsl:_enum(["kts","groovy"]).optional().describe("Default: kts.")}),outputSchema:object({toml:string2(),buildFile:string2(),warnings:array(string2())}),annotations:READ_ONLY},async({buildFile,dsl})=>{let r=convertToCatalog(buildFile,dsl??"kts");return result(`# gradle/libs.versions.toml
|
|
209
|
+
${r.toml}
|
|
210
|
+
|
|
211
|
+
# build file
|
|
212
|
+
${r.buildFile}`,{toml:r.toml,buildFile:r.buildFile,warnings:r.warnings})}),server.registerTool("convert_vector",{title:"Convert SVG and vectors",description:"Convert between SVG, Android VectorDrawable XML and Compose ImageVector Kotlin. Output compiles with aapt2 and the Compose compiler.",inputSchema:object({input:text(L.large,"An SVG document or a VectorDrawable XML."),to:_enum(["image-vector","vector-drawable","svg"]).describe("Target format."),name:string2().max(100).optional().describe("ImageVector property name. Default: MyIcon."),packageName:string2().max(200).optional()}),outputSchema:object({output:string2(),warnings:array(string2())}),annotations:READ_ONLY},async({input,to,name:name2,packageName})=>{let r=convertVector(input,to,{...name2?{name:name2}:{},...packageName?{packageName}:{}});return result(r.output,{output:r.output,warnings:r.warnings})}),server.registerTool("keep_rules",{title:"R8 keep rules",description:`Generate R8 keep rules for code R8 can't see being used (reflection, JSON models, JNI, JavaScript interfaces), and/or lint an existing proguard-rules.pro for rules that disable shrinking or keep too much. Rule kinds: ${Object.entries(ruleKinds).map(([k,v])=>`${k} (${v.label}${v.target?`; target: ${v.target}`:""})`).join("; ")}.`,inputSchema:object({rules:array(object({kind:_enum(Object.keys(ruleKinds)),target:string2().max(300).optional()})).max(50).optional(),lint:string2().max(L.medium).optional().describe("An existing proguard-rules.pro to check.")}),outputSchema:object({rules:string2(),findings:array(object({level:string2(),line:number2(),message:string2()}))}),annotations:READ_ONLY},async({rules,lint})=>{let generated=rules?.length?generateRules(rules):"",findings=(lint?lintRules(lint):[]).map(f2=>({level:f2.level,line:f2.line,message:f2.message}));return result([generated,...findings.map(f2=>`${f2.level}${f2.line?` (line ${f2.line})`:""}: ${f2.message}`)].filter(Boolean).join(`
|
|
213
|
+
`)||"Pass rules to generate or lint to check.",{rules:generated,findings})}),server.registerTool("expect_actual",{title:"Generate actual declarations",description:"Write actual declarations for each Kotlin Multiplatform target from commonMain expect code, with KMP wizard file names. Stubs compile with Kotlin 2.4 for Android, iOS, JVM, JS and Wasm.",inputSchema:object({common:text(L.medium,"commonMain code with expect declarations, including its package line."),fileName:string2().max(100).optional().describe("Base file name, e.g. Platform. Default: Platform."),module:string2().max(100).optional().describe("Gradle module, for paths. Default: shared."),targets:array(_enum(TARGETS.map(t=>t.id))).optional().describe("Default: android, ios, jvm.")}),outputSchema:object({files:array(object({path:string2(),content:string2()})),notices:array(object({level:string2(),text:string2()})),usesExpectClasses:boolean2()}),annotations:READ_ONLY},async({common,fileName,module,targets})=>{let r=generateActuals(common,{fileName:fileName??"Platform",module:module??"shared",targets:targets??["android","ios","jvm"]}),files=r.files.map(f2=>({path:f2.path,content:f2.content}));return result([...files.map(f2=>`// ${f2.path}
|
|
214
|
+
${f2.content}`),...r.notices.map(n2=>`// ${n2.level}: ${n2.text}`)].join(`
|
|
215
|
+
`),{files,notices:r.notices,usesExpectClasses:r.usesExpectClasses})}),server.registerTool("kotlin_to_swift",{title:"How Kotlin reads from Swift",description:"Show how a shared-module Kotlin file is called from Swift through a Kotlin/Native framework (Objective-C export): Int32 and KotlinInt, suspend as async, sealed classes, enums, renamed methods. The Swift it writes type-checks with swiftc against a real framework.",inputSchema:object({kotlin:text(L.medium,"One Kotlin file from commonMain."),fileName:string2().max(100).optional().describe("Kotlin file name; top-level code lives on <Name>Kt. Default: Shared.kt."),module:string2().max(100).optional().describe("Framework baseName. Default: Shared.")}),outputSchema:object({swiftFile:string2(),rows:array(object({kotlin:string2(),swift:string2(),notes:array(string2())})),notes:array(string2())}),annotations:READ_ONLY},async({kotlin,fileName,module})=>{let r=swiftInterop(kotlin,{fileName:fileName??"Shared.kt",module:module??"Shared"}),rows=r.rows.map(x=>({kotlin:x.kotlin,swift:x.swift,notes:x.notes.map(n2=>n2.text)}));return result([r.swiftFile,...r.notes.map(n2=>`// Note: ${n2.text}`)].join(`
|
|
216
|
+
`),{swiftFile:r.swiftFile,rows,notes:r.notes.map(n2=>n2.text)})}),server.registerTool("find_kmp_libraries",{title:"Find KMP libraries",description:`Find Kotlin Multiplatform libraries by task and target, with the newest stable version and targets read from Maven (checked ${KMP_LIBRARIES_CHECKED_ON}), plus a libs.versions.toml and dependency block for the ones you pick. Categories: ${LIBRARY_CATEGORIES.map(c=>c.id).join(", ")}.`,inputSchema:object({query:string2().max(100).optional().describe("Words to match in the name, description or coordinates."),category:_enum(LIBRARY_CATEGORIES.map(c=>c.id)).optional(),targets:array(_enum(TARGET_GROUPS.map(t=>t.id))).optional().describe("Only libraries that publish all of these. Default: android, ios.")}),outputSchema:object({libraries:array(object({name:string2(),coordinates:string2(),version:string2(),released:string2(),targets:array(string2()),description:string2(),url:string2()})),toml:string2(),kts:string2()}),annotations:READ_ONLY},async({query,category,targets})=>{let want=targets?.length?targets:["android","ios"],words2=(query??"").toLowerCase().split(/\s+/).filter(Boolean),found=kmpLibraries.filter(l=>(!category||l.category===category)&&want.every(t=>l.targets.includes(t))&&words2.every(w=>`${l.name} ${l.description} ${l.coordinates}`.toLowerCase().includes(w))),bundle=bundleSnippets(found,want),libraries=found.map(l=>({name:l.name,coordinates:l.coordinates,version:l.version,released:l.released,targets:l.targets,description:l.description,url:l.url}));return result(libraries.length?libraries.map(l=>`${l.name} ${l.coordinates}:${l.version} (${l.released}): ${l.description}`).join(`
|
|
217
|
+
`):"No library matches. Try fewer words or targets.",{libraries,toml:found.length?bundle.toml:"",kts:found.length?bundle.kts:""})}),server.registerTool("android_permissions",{title:"Android permissions",description:`Look up Android permissions (protection level, API level, runtime group) and/or check an AndroidManifest.xml for runtime permissions, Play-restricted ones and maxSdkVersion mistakes. Data from ${PERMISSIONS_SOURCE}.`,inputSchema:object({names:array(string2().max(200)).max(50).optional().describe("Permission names, e.g. ACCESS_FINE_LOCATION or android.permission.CAMERA."),manifest:string2().max(L.medium).optional().describe("AndroidManifest.xml (the merged one is best)."),targetSdk:number2().int().min(21).max(40).optional().describe("Default: 36.")}),outputSchema:object({permissions:array(object({name:string2(),level:string2().optional(),since:number2().optional(),description:string2().optional(),found:boolean2()})),manifest:array(object({name:string2(),line:number2(),findings:array(object({level:string2(),text:string2()}))}))}),annotations:READ_ONLY},async({names:names2,manifest,targetSdk})=>{let permissions2=(names2??[]).map(n2=>{let p=findPermission(n2);return p?{name:p.name,level:p.level,...p.since?{since:p.since}:{},...p.description?{description:p.description}:{},found:!0}:{name:n2,found:!1}}),checked=manifest?checkManifest(manifest,targetSdk??36).map(u=>({name:u.name,line:u.line,findings:u.findings})):[],lines2=[...permissions2.map(p=>p.found?`${p.name}: ${p.level}${p.since?`, API ${p.since}`:""}${p.description?`. ${p.description}`:""}`:`${p.name}: not a known platform permission`),...checked.flatMap(u=>u.findings.map(f2=>`${u.name} (line ${u.line}) [${f2.level}]: ${f2.text}`))];return result(lines2.join(`
|
|
218
|
+
`)||"Pass names to look up or a manifest to check.",{permissions:permissions2,manifest:checked})}),server.registerTool("target_sdk_changes",{title:"targetSdk behavior changes",description:`What changes when an app raises targetSdk, from Google's behavior change pages for Android 12 to 17. With a manifest, marks the changes it shows signs of. Versions: ${Object.entries(VERSION_NAMES).map(([k,v])=>`${k} (${v})`).join(", ")}.`,inputSchema:object({from:number2().int().min(30).max(40).optional().describe("Current targetSdk. Read from the manifest when omitted."),to:number2().int().min(31).max(40).describe("New targetSdk."),manifest:string2().max(L.medium).optional()}),outputSchema:object({changes:array(object({api:number2(),area:string2(),title:string2(),action:string2(),url:string2(),appliesBecause:string2().optional()}))}),annotations:READ_ONLY},async({from,to,manifest})=>{let start=from??(manifest?findTargetSdk(manifest):void 0)??to-1,facts=manifest?readManifest(manifest):null,changes2=changesBetween(start,to).map(c=>{let hit=facts&&c.detect?c.detect(facts):null;return{api:c.api,area:c.area,title:c.title,action:c.action,url:changeUrl(c),...hit?{appliesBecause:hit.reason}:{}}});return result(changes2.map(c=>`API ${c.api} ${c.title}${c.appliesBecause?` (applies: ${c.appliesBecause})`:""}: ${c.action}`).join(`
|
|
219
|
+
`)||"No behavior changes between those versions.",{changes:changes2})}),server}var UsageError=class extends Error{},camel=s=>s.replace(/-([a-z0-9])/g,(_,c)=>c.toUpperCase()),kebab=s=>s.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`),types=s=>s?s.anyOf?s.anyOf.flatMap(types):Array.isArray(s.type)?s.type:s.type?[s.type]:s.enum?["string"]:[]:[];function scalar(raw,schema,flag){let t=types(schema);if(t.includes("integer")||t.includes("number")){let n2=Number(raw);if(raw.trim()===""||!Number.isFinite(n2))throw new UsageError(`${flag} needs a number, not "${raw}".`);return n2}if(t.includes("boolean")&&(raw==="true"||raw==="false"))return raw==="true";if(t.includes("object")&&/^\s*\{/.test(raw))return parseJson(raw,flag);if(schema?.enum&&!schema.enum.includes(raw))throw new UsageError(`${flag} must be one of: ${schema.enum.join(", ")}.`);return raw}function parseJson(raw,flag){try{return JSON.parse(raw)}catch{throw new UsageError(`${flag} isn't valid JSON.`)}}function parseToolArgs(schema,argv,io2){let props=schema.properties??{},args={},json=!1,stdinUsed=!1,stdin=flag=>{if(stdinUsed)throw new UsageError(`Only one option can read standard input (${flag}).`);stdinUsed=!0;let text2=io2.readStdin();if(text2===void 0)throw new UsageError(`${flag} is "-", but nothing was piped in.`);return text2},resolve=(raw,flag)=>{if(raw==="-")return stdin(flag);if(raw.startsWith("@@"))return raw.slice(1);if(raw.startsWith("@")&&raw.length>1)try{return io2.readFile(raw.slice(1))}catch(e){throw new UsageError(`Can't read ${raw.slice(1)}: ${e.message}`)}return raw};for(let i=0;i<argv.length;i++){let token=argv[i];if(token==="--json"){json=!0;continue}if(!token.startsWith("--"))throw new UsageError(`Unexpected "${token}". Options start with --; run "androidboss help <tool>".`);let[name2,inline]=token.slice(2).split(/=(.*)/s,2),[head,...path]=name2.split("."),key=camel(head),prop=props[key];if(!prop)throw new UsageError(`Unknown option --${head}. Options: ${Object.keys(props).map(k=>`--${kebab(k)}`).join(", ")||"none"}.`);let flag=`--${kebab(key)}`,t=types(prop),raw=inline;if(raw===void 0){let next=argv[i+1];if(next===void 0||next.startsWith("--")&&next!=="--"){if(t.includes("boolean")&&!path.length){args[key]=!0;continue}throw new UsageError(`${flag} needs a value.`)}raw=next,i++}let value=resolve(raw,flag);if(path.length){if(!t.includes("object"))throw new UsageError(`${flag} isn't an object, so --${head}.${path.join(".")} doesn't apply.`);let obj=args[key]??={},v=value==="true"?!0:value==="false"?!1:value;obj[path.join(".")]=v}else if(t.includes("array")){let list=args[key]??=[];if(/^\s*\[/.test(value)){let parsed=parseJson(value,flag);if(!Array.isArray(parsed))throw new UsageError(`${flag} needs a JSON array.`);list.push(...parsed)}else types(prop.items).includes("object")?list.push(parseJson(value,flag)):list.push(...value.split(",").map(s=>s.trim()).filter(Boolean).map(s=>scalar(s,prop.items,flag)))}else t.includes("object")?args[key]=parseJson(value,flag):args[key]=scalar(value,prop,flag)}let missing=(schema.required??[]).filter(k=>args[k]===void 0);if(missing.length===1&&!stdinUsed&&types(props[missing[0]]).includes("string")&&!props[missing[0]].enum){let text2=io2.readStdin();text2!==void 0&&(args[missing[0]]=text2)}let still=(schema.required??[]).filter(k=>args[k]===void 0);if(still.length)throw new UsageError(`Missing ${still.map(k=>`--${kebab(k)}`).join(", ")}.`);return{args,json}}function describeOptions(schema){let required2=new Set(schema.required??[]);return Object.entries(schema.properties??{}).map(([k,p])=>{let t=p.enum?p.enum.join("|"):types(p).filter(x=>x!=="null").join("|")||"value",item=p.items?p.items.enum?p.items.enum.join("|"):types(p.items).join("|"):"",objectItems=types(p.items).includes("object"),kind=types(p).includes("array")?objectItems?"json":`${item||"value"},\u2026`:types(p).includes("object")?"json":t,shape=objectItems&&p.items?.properties?`
|
|
220
|
+
Each: {${Object.entries(p.items.properties).map(([f2,s])=>`"${f2}": ${s.enum?s.enum.join("|"):types(s).join("|")}`).join(", ")}}. Repeat the option or pass a JSON array.`:types(p).includes("object")&&!types(p).includes("array")?`
|
|
221
|
+
As JSON, or one key at a time: --${kebab(k)}.<key> <value>.`:"";return` --${kebab(k)} <${kind}>${required2.has(k)?" (required)":""}${p.description?`
|
|
222
|
+
${p.description}`:""}${shape}`})}var VERSION="0.1.1",localServer=()=>createServer(void 0,LOCAL_LIMIT),USAGE=`androidboss ${VERSION}: Android and Kotlin Multiplatform tools from androidboss.info, run on your machine.
|
|
223
|
+
|
|
224
|
+
Usage:
|
|
225
|
+
androidboss <tool> [--option value]... [--json]
|
|
226
|
+
androidboss tools list the tools
|
|
227
|
+
androidboss help <tool> a tool's options
|
|
228
|
+
androidboss mcp run as a local MCP server (stdio) for your coding agent
|
|
229
|
+
|
|
230
|
+
Values: @file reads a file, - reads standard input. Piped input fills a tool's one missing text option.
|
|
231
|
+
|
|
232
|
+
Examples:
|
|
233
|
+
androidboss retrace --mapping @app/build/outputs/mapping/release/mapping.txt < crash.txt
|
|
234
|
+
androidboss check-compatibility --kotlin 2.4.0 --agp 9.5.0 --gradle 9.6.0
|
|
235
|
+
androidboss json-to-kotlin --root-name User < user.json
|
|
236
|
+
|
|
237
|
+
Docs: https://androidboss.info/agents/mcp-server/`;async function connect(){let[clientSide,serverSide]=InMemoryTransport2.createLinkedPair();serveStdio(localServer,{transport:serverSide});let client=new Client({name:"androidboss-cli",version:VERSION});return await client.connect(clientSide),client}var toolName=s=>s.replace(/-/g,"_"),cliName=s=>s.replace(/_/g,"-");function suggest(name2,tools){let near=tools.filter(t=>t.name.includes(toolName(name2))||toolName(name2).includes(t.name.split("_")[0])).map(t=>cliName(t.name));return`Unknown tool "${name2}".${near.length?` Did you mean ${near.join(" or ")}?`:""} Run "androidboss tools" for the list.`}async function run(argv,io2,out){let[command,...rest]=argv;if(!command||command==="--help"||command==="-h"||command==="help"&&!rest.length)return out.stdout(USAGE),0;if(command==="--version"||command==="-v")return out.stdout(VERSION),0;if(command==="mcp")return serveStdio(localServer,{transport:new StdioServerTransport(void 0,void 0,{maxBufferSize:STDIO_MAX_BYTES})}),-1;let client=await connect();try{let{tools}=await client.listTools();if(command==="tools"){let width=Math.max(...tools.map(t=>cliName(t.name).length));return out.stdout(tools.map(t=>`${cliName(t.name).padEnd(width)} ${t.title??""}`).join(`
|
|
238
|
+
`)),0}let wanted=command==="help"?rest[0]:command,tool=tools.find(t=>t.name===toolName(wanted));if(!tool)return out.stderr(suggest(wanted,tools)),2;if(command==="help"||rest.includes("--help")||rest.includes("-h")){let options=describeOptions(tool.inputSchema);return out.stdout([`androidboss ${cliName(tool.name)}: ${tool.title??tool.name}`,"",tool.description??"","","Options:",...options.length?options:[" (none)"]," --json print the structured result as JSON"].join(`
|
|
239
|
+
`)),0}let parsed;try{parsed=parseToolArgs(tool.inputSchema,rest,io2)}catch(e){if(!(e instanceof UsageError))throw e;return out.stderr(`${e.message}
|
|
240
|
+
Run "androidboss help ${cliName(tool.name)}" for its options.`),2}let r;try{r=await client.callTool({name:tool.name,arguments:parsed.args})}catch(e){return out.stderr(e.message),2}let text2=(r.content??[]).map(c=>c.text??"").join(`
|
|
241
|
+
`);return r.isError?(out.stderr(text2),1):(out.stdout(parsed.json?JSON.stringify(r.structuredContent??{},null,2):text2),0)}finally{await client.close()}}var io={readFile:path=>readFileSync(path,"utf8"),readStdin:()=>{if(process.stdin.isTTY)return;let text2=readFileSync(0,"utf8");return text2===""?void 0:text2}},code=await run(process.argv.slice(2),io,{stdout:t=>process.stdout.write(t.endsWith(`
|
|
242
|
+
`)?t:`${t}
|
|
243
|
+
`),stderr:t=>process.stderr.write(t.endsWith(`
|
|
244
|
+
`)?t:`${t}
|
|
245
|
+
`)});code>=0&&(process.exitCode=code);
|