proofboard-mcp 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
3
- var U_=Object.create;var Zl=Object.defineProperty;var q_=Object.getOwnPropertyDescriptor;var K_=Object.getOwnPropertyNames;var H_=Object.getPrototypeOf,W_=Object.prototype.hasOwnProperty;var ut=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var B=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pf=(e,t)=>{for(var r in t)Zl(e,r,{get:t[r],enumerable:!0})},J_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of K_(t))!W_.call(e,o)&&o!==r&&Zl(e,o,{get:()=>t[o],enumerable:!(n=q_(t,o))||n.enumerable});return e};var yn=(e,t,r)=>(r=e!=null?U_(H_(e)):{},J_(t||!e||!e.__esModule?Zl(r,"default",{value:e,enumerable:!0}):r,e));var zs=B(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.regexpCode=je.getEsmExportName=je.getProperty=je.safeStringify=je.stringify=je.strConcat=je.addCodeArg=je.str=je._=je.nil=je._Code=je.Name=je.IDENTIFIER=je._CodeOrName=void 0;var ks=class{};je._CodeOrName=ks;je.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var _n=class extends ks{constructor(t){if(super(),!je.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};je.Name=_n;var tr=class extends ks{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((r,n)=>(n instanceof _n&&(r[n.str]=(r[n.str]||0)+1),r),{})}};je._Code=tr;je.nil=new tr("");function ay(e,...t){let r=[e[0]],n=0;for(;n<t.length;)pu(r,t[n]),r.push(e[++n]);return new tr(r)}je._=ay;var du=new tr("+");function iy(e,...t){let r=[vs(e[0])],n=0;for(;n<t.length;)r.push(du),pu(r,t[n]),r.push(du,vs(e[++n]));return iP(r),new tr(r)}je.str=iy;function pu(e,t){t instanceof tr?e.push(...t._items):t instanceof _n?e.push(t):e.push(uP(t))}je.addCodeArg=pu;function iP(e){let t=1;for(;t<e.length-1;){if(e[t]===du){let r=lP(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function lP(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof _n||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof _n))return`"${e}${t.slice(1)}`}function cP(e,t){return t.emptyStr()?e:e.emptyStr()?t:iy`${e}${t}`}je.strConcat=cP;function uP(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:vs(Array.isArray(e)?e.join(","):e)}function dP(e){return new tr(vs(e))}je.stringify=dP;function vs(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}je.safeStringify=vs;function pP(e){return typeof e=="string"&&je.IDENTIFIER.test(e)?new tr(`.${e}`):ay`[${e}]`}je.getProperty=pP;function fP(e){if(typeof e=="string"&&je.IDENTIFIER.test(e))return new tr(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}je.getEsmExportName=fP;function mP(e){return new tr(e.toString())}je.regexpCode=mP});var hu=B(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.ValueScope=Vt.ValueScopeName=Vt.Scope=Vt.varKinds=Vt.UsedValueState=void 0;var Lt=zs(),fu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},wi;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(wi||(Vt.UsedValueState=wi={}));Vt.varKinds={const:new Lt.Name("const"),let:new Lt.Name("let"),var:new Lt.Name("var")};var xi=class{constructor({prefixes:t,parent:r}={}){this._names={},this._prefixes=t,this._parent=r}toName(t){return t instanceof Lt.Name?t:this.name(t)}name(t){return new Lt.Name(this._newName(t))}_newName(t){let r=this._names[t]||this._nameGroup(t);return`${t}${r.index++}`}_nameGroup(t){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Vt.Scope=xi;var Si=class extends Lt.Name{constructor(t,r){super(r),this.prefix=t}setValue(t,{property:r,itemIndex:n}){this.value=t,this.scopePath=(0,Lt._)`.${new Lt.Name(r)}[${n}]`}};Vt.ValueScopeName=Si;var hP=(0,Lt._)`\n`,mu=class extends xi{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts={...t,_n:t.lines?hP:Lt.nil}}get(){return this._scope}name(t){return new Si(t,this._newName(t))}value(t,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(t),{prefix:s}=o,a=(n=r.key)!==null&&n!==void 0?n:r.ref,i=this._values[s];if(i){let u=i.get(a);if(u)return u}else i=this._values[s]=new Map;i.set(a,o);let c=this._scope[s]||(this._scope[s]=[]),l=c.length;return c[l]=r.ref,o.setValue(r,{property:s,itemIndex:l}),o}getValue(t,r){let n=this._values[t];if(n)return n.get(r)}scopeRefs(t,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Lt._)`${t}${n.scopePath}`})}scopeCode(t=this._values,r,n){return this._reduceValues(t,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(t,r,n={},o){let s=Lt.nil;for(let a in t){let i=t[a];if(!i)continue;let c=n[a]=n[a]||new Map;i.forEach(l=>{if(c.has(l))return;c.set(l,wi.Started);let u=r(l);if(u){let d=this.opts.es5?Vt.varKinds.var:Vt.varKinds.const;s=(0,Lt._)`${s}${d} ${l} = ${u};${this.opts._n}`}else if(u=o?.(l))s=(0,Lt._)`${s}${u}${this.opts._n}`;else throw new fu(l);c.set(l,wi.Completed)})}return s}};Vt.ValueScope=mu});var ge=B(ye=>{"use strict";Object.defineProperty(ye,"__esModule",{value:!0});ye.or=ye.and=ye.not=ye.CodeGen=ye.operators=ye.varKinds=ye.ValueScopeName=ye.ValueScope=ye.Scope=ye.Name=ye.regexpCode=ye.stringify=ye.getProperty=ye.nil=ye.strConcat=ye.str=ye._=void 0;var Ie=zs(),pr=hu(),on=zs();Object.defineProperty(ye,"_",{enumerable:!0,get:function(){return on._}});Object.defineProperty(ye,"str",{enumerable:!0,get:function(){return on.str}});Object.defineProperty(ye,"strConcat",{enumerable:!0,get:function(){return on.strConcat}});Object.defineProperty(ye,"nil",{enumerable:!0,get:function(){return on.nil}});Object.defineProperty(ye,"getProperty",{enumerable:!0,get:function(){return on.getProperty}});Object.defineProperty(ye,"stringify",{enumerable:!0,get:function(){return on.stringify}});Object.defineProperty(ye,"regexpCode",{enumerable:!0,get:function(){return on.regexpCode}});Object.defineProperty(ye,"Name",{enumerable:!0,get:function(){return on.Name}});var Ai=hu();Object.defineProperty(ye,"Scope",{enumerable:!0,get:function(){return Ai.Scope}});Object.defineProperty(ye,"ValueScope",{enumerable:!0,get:function(){return Ai.ValueScope}});Object.defineProperty(ye,"ValueScopeName",{enumerable:!0,get:function(){return Ai.ValueScopeName}});Object.defineProperty(ye,"varKinds",{enumerable:!0,get:function(){return Ai.varKinds}});ye.operators={GT:new Ie._Code(">"),GTE:new Ie._Code(">="),LT:new Ie._Code("<"),LTE:new Ie._Code("<="),EQ:new Ie._Code("==="),NEQ:new Ie._Code("!=="),NOT:new Ie._Code("!"),OR:new Ie._Code("||"),AND:new Ie._Code("&&"),ADD:new Ie._Code("+")};var Vr=class{optimizeNodes(){return this}optimizeNames(t,r){return this}},gu=class extends Vr{constructor(t,r,n){super(),this.varKind=t,this.name=r,this.rhs=n}render({es5:t,_n:r}){let n=t?pr.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(t,r){if(t[this.name.str])return this.rhs&&(this.rhs=ao(this.rhs,t,r)),this}get names(){return this.rhs instanceof Ie._CodeOrName?this.rhs.names:{}}},Pi=class extends Vr{constructor(t,r,n){super(),this.lhs=t,this.rhs=r,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,r){if(!(this.lhs instanceof Ie.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=ao(this.rhs,t,r),this}get names(){let t=this.lhs instanceof Ie.Name?{}:{...this.lhs.names};return Ei(t,this.rhs)}},bu=class extends Pi{constructor(t,r,n,o){super(t,n,o),this.op=r}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},yu=class extends Vr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},ku=class extends Vr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},vu=class extends Vr{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},zu=class extends Vr{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,r){return this.code=ao(this.code,t,r),this}get names(){return this.code instanceof Ie._CodeOrName?this.code.names:{}}},_s=class extends Vr{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((r,n)=>r+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,r=t.length;for(;r--;){let n=t[r].optimizeNodes();Array.isArray(n)?t.splice(r,1,...n):n?t[r]=n:t.splice(r,1)}return t.length>0?this:void 0}optimizeNames(t,r){let{nodes:n}=this,o=n.length;for(;o--;){let s=n[o];s.optimizeNames(t,r)||(gP(t,s.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,r)=>Sn(t,r.names),{})}},Fr=class extends _s{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},_u=class extends _s{},so=class extends Fr{};so.kind="else";var wn=class e extends Fr{constructor(t,r){super(r),this.condition=t}render(t){let r=`if(${this.condition})`+super.render(t);return this.else&&(r+="else "+this.else.render(t)),r}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new so(n):n}if(r)return t===!1?r instanceof e?r:r.nodes:this.nodes.length?this:new e(ly(t),r instanceof e?[r]:r.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,r),!!(super.optimizeNames(t,r)||this.else))return this.condition=ao(this.condition,t,r),this}get names(){let t=super.names;return Ei(t,this.condition),this.else&&Sn(t,this.else.names),t}};wn.kind="if";var xn=class extends Fr{};xn.kind="for";var wu=class extends xn{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iteration=ao(this.iteration,t,r),this}get names(){return Sn(super.names,this.iteration.names)}},xu=class extends xn{constructor(t,r,n,o){super(),this.varKind=t,this.name=r,this.from=n,this.to=o}render(t){let r=t.es5?pr.varKinds.var:this.varKind,{name:n,from:o,to:s}=this;return`for(${r} ${n}=${o}; ${n}<${s}; ${n}++)`+super.render(t)}get names(){let t=Ei(super.names,this.from);return Ei(t,this.to)}},$i=class extends xn{constructor(t,r,n,o){super(),this.loop=t,this.varKind=r,this.name=n,this.iterable=o}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iterable=ao(this.iterable,t,r),this}get names(){return Sn(super.names,this.iterable.names)}},ws=class extends Fr{constructor(t,r,n){super(),this.name=t,this.args=r,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}};ws.kind="func";var xs=class extends _s{render(t){return"return "+super.render(t)}};xs.kind="return";var Su=class extends Fr{render(t){let r="try"+super.render(t);return this.catch&&(r+=this.catch.render(t)),this.finally&&(r+=this.finally.render(t)),r}optimizeNodes(){var t,r;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(t,r){var n,o;return super.optimizeNames(t,r),(n=this.catch)===null||n===void 0||n.optimizeNames(t,r),(o=this.finally)===null||o===void 0||o.optimizeNames(t,r),this}get names(){let t=super.names;return this.catch&&Sn(t,this.catch.names),this.finally&&Sn(t,this.finally.names),t}},Ss=class extends Fr{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}};Ss.kind="catch";var Ps=class extends Fr{render(t){return"finally"+super.render(t)}};Ps.kind="finally";var Pu=class{constructor(t,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
4
- `:""},this._extScope=t,this._scope=new pr.Scope({parent:t}),this._nodes=[new _u]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,r){let n=this._extScope.value(t,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(t,r){return this._extScope.getValue(t,r)}scopeRefs(t){return this._extScope.scopeRefs(t,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(t,r,n,o){let s=this._scope.toName(r);return n!==void 0&&o&&(this._constants[s.str]=n),this._leafNode(new gu(t,s,n)),s}const(t,r,n){return this._def(pr.varKinds.const,t,r,n)}let(t,r,n){return this._def(pr.varKinds.let,t,r,n)}var(t,r,n){return this._def(pr.varKinds.var,t,r,n)}assign(t,r,n){return this._leafNode(new Pi(t,r,n))}add(t,r){return this._leafNode(new bu(t,ye.operators.ADD,r))}code(t){return typeof t=="function"?t():t!==Ie.nil&&this._leafNode(new zu(t)),this}object(...t){let r=["{"];for(let[n,o]of t)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,Ie.addCodeArg)(r,o));return r.push("}"),new Ie._Code(r)}if(t,r,n){if(this._blockNode(new wn(t)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(t){return this._elseNode(new wn(t))}else(){return this._elseNode(new so)}endIf(){return this._endBlockNode(wn,so)}_for(t,r){return this._blockNode(t),r&&this.code(r).endFor(),this}for(t,r){return this._for(new wu(t),r)}forRange(t,r,n,o,s=this.opts.es5?pr.varKinds.var:pr.varKinds.let){let a=this._scope.toName(t);return this._for(new xu(s,a,r,n),()=>o(a))}forOf(t,r,n,o=pr.varKinds.const){let s=this._scope.toName(t);if(this.opts.es5){let a=r instanceof Ie.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,Ie._)`${a}.length`,i=>{this.var(s,(0,Ie._)`${a}[${i}]`),n(s)})}return this._for(new $i("of",o,s,r),()=>n(s))}forIn(t,r,n,o=this.opts.es5?pr.varKinds.var:pr.varKinds.const){if(this.opts.ownProperties)return this.forOf(t,(0,Ie._)`Object.keys(${r})`,n);let s=this._scope.toName(t);return this._for(new $i("in",o,s,r),()=>n(s))}endFor(){return this._endBlockNode(xn)}label(t){return this._leafNode(new yu(t))}break(t){return this._leafNode(new ku(t))}return(t){let r=new xs;if(this._blockNode(r),this.code(t),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(xs)}try(t,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Su;if(this._blockNode(o),this.code(t),r){let s=this.name("e");this._currNode=o.catch=new Ss(s),r(s)}return n&&(this._currNode=o.finally=new Ps,this.code(n)),this._endBlockNode(Ss,Ps)}throw(t){return this._leafNode(new vu(t))}block(t,r){return this._blockStarts.push(this._nodes.length),t&&this.code(t).endBlock(r),this}endBlock(t){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||t!==void 0&&n!==t)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`);return this._nodes.length=r,this}func(t,r=Ie.nil,n,o){return this._blockNode(new ws(t,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(ws)}optimize(t=1){for(;t-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(t){return this._currNode.nodes.push(t),this}_blockNode(t){this._currNode.nodes.push(t),this._nodes.push(t)}_endBlockNode(t,r){let n=this._currNode;if(n instanceof t||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${t.kind}/${r.kind}`:t.kind}"`)}_elseNode(t){let r=this._currNode;if(!(r instanceof wn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=t,this}get _root(){return this._nodes[0]}get _currNode(){let t=this._nodes;return t[t.length-1]}set _currNode(t){let r=this._nodes;r[r.length-1]=t}};ye.CodeGen=Pu;function Sn(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function Ei(e,t){return t instanceof Ie._CodeOrName?Sn(e,t.names):e}function ao(e,t,r){if(e instanceof Ie.Name)return n(e);if(!o(e))return e;return new Ie._Code(e._items.reduce((s,a)=>(a instanceof Ie.Name&&(a=n(a)),a instanceof Ie._Code?s.push(...a._items):s.push(a),s),[]));function n(s){let a=r[s.str];return a===void 0||t[s.str]!==1?s:(delete t[s.str],a)}function o(s){return s instanceof Ie._Code&&s._items.some(a=>a instanceof Ie.Name&&t[a.str]===1&&r[a.str]!==void 0)}}function gP(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function ly(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,Ie._)`!${$u(e)}`}ye.not=ly;var bP=cy(ye.operators.AND);function yP(...e){return e.reduce(bP)}ye.and=yP;var kP=cy(ye.operators.OR);function vP(...e){return e.reduce(kP)}ye.or=vP;function cy(e){return(t,r)=>t===Ie.nil?r:r===Ie.nil?t:(0,Ie._)`${$u(t)} ${e} ${$u(r)}`}function $u(e){return e instanceof Ie.Name?e:(0,Ie._)`(${e})`}});var Ce=B(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.checkStrictMode=ve.getErrorPath=ve.Type=ve.useFunc=ve.setEvaluated=ve.evaluatedPropsToName=ve.mergeEvaluated=ve.eachItem=ve.unescapeJsonPointer=ve.escapeJsonPointer=ve.escapeFragment=ve.unescapeFragment=ve.schemaRefOrVal=ve.schemaHasRulesButRef=ve.schemaHasRules=ve.checkUnknownRules=ve.alwaysValidSchema=ve.toHash=void 0;var Ve=ge(),zP=zs();function _P(e){let t={};for(let r of e)t[r]=!0;return t}ve.toHash=_P;function wP(e,t){return typeof t=="boolean"?t:Object.keys(t).length===0?!0:(py(e,t),!fy(t,e.self.RULES.all))}ve.alwaysValidSchema=wP;function py(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema||typeof t=="boolean")return;let o=n.RULES.keywords;for(let s in t)o[s]||gy(e,`unknown keyword: "${s}"`)}ve.checkUnknownRules=py;function fy(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}ve.schemaHasRules=fy;function xP(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}ve.schemaHasRulesButRef=xP;function SP({topSchemaRef:e,schemaPath:t},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,Ve._)`${r}`}return(0,Ve._)`${e}${t}${(0,Ve.getProperty)(n)}`}ve.schemaRefOrVal=SP;function PP(e){return my(decodeURIComponent(e))}ve.unescapeFragment=PP;function $P(e){return encodeURIComponent(Au(e))}ve.escapeFragment=$P;function Au(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}ve.escapeJsonPointer=Au;function my(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}ve.unescapeJsonPointer=my;function EP(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}ve.eachItem=EP;function uy({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(o,s,a,i)=>{let c=a===void 0?s:a instanceof Ve.Name?(s instanceof Ve.Name?e(o,s,a):t(o,s,a),a):s instanceof Ve.Name?(t(o,a,s),s):r(s,a);return i===Ve.Name&&!(c instanceof Ve.Name)?n(o,c):c}}ve.mergeEvaluated={props:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>{e.if((0,Ve._)`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,Ve._)`${r} || {}`).code((0,Ve._)`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>{t===!0?e.assign(r,!0):(e.assign(r,(0,Ve._)`${r} || {}`),Ou(e,r,t))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:hy}),items:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>e.assign(r,(0,Ve._)`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>e.assign(r,t===!0?!0:(0,Ve._)`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function hy(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",(0,Ve._)`{}`);return t!==void 0&&Ou(e,r,t),r}ve.evaluatedPropsToName=hy;function Ou(e,t,r){Object.keys(r).forEach(n=>e.assign((0,Ve._)`${t}${(0,Ve.getProperty)(n)}`,!0))}ve.setEvaluated=Ou;var dy={};function AP(e,t){return e.scopeValue("func",{ref:t,code:dy[t.code]||(dy[t.code]=new zP._Code(t.code))})}ve.useFunc=AP;var Eu;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(Eu||(ve.Type=Eu={}));function OP(e,t,r){if(e instanceof Ve.Name){let n=t===Eu.Num;return r?n?(0,Ve._)`"[" + ${e} + "]"`:(0,Ve._)`"['" + ${e} + "']"`:n?(0,Ve._)`"/" + ${e}`:(0,Ve._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,Ve.getProperty)(e).toString():"/"+Au(e)}ve.getErrorPath=OP;function gy(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,r===!0)throw new Error(t);e.self.logger.warn(t)}}ve.checkStrictMode=gy});var Zr=B(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});var $t=ge(),IP={data:new $t.Name("data"),valCxt:new $t.Name("valCxt"),instancePath:new $t.Name("instancePath"),parentData:new $t.Name("parentData"),parentDataProperty:new $t.Name("parentDataProperty"),rootData:new $t.Name("rootData"),dynamicAnchors:new $t.Name("dynamicAnchors"),vErrors:new $t.Name("vErrors"),errors:new $t.Name("errors"),this:new $t.Name("this"),self:new $t.Name("self"),scope:new $t.Name("scope"),json:new $t.Name("json"),jsonPos:new $t.Name("jsonPos"),jsonLen:new $t.Name("jsonLen"),jsonPart:new $t.Name("jsonPart")};Iu.default=IP});var $s=B(Et=>{"use strict";Object.defineProperty(Et,"__esModule",{value:!0});Et.extendErrors=Et.resetErrorsCount=Et.reportExtraError=Et.reportError=Et.keyword$DataError=Et.keywordError=void 0;var Ne=ge(),Oi=Ce(),Rt=Zr();Et.keywordError={message:({keyword:e})=>(0,Ne.str)`must pass "${e}" keyword validation`};Et.keyword$DataError={message:({keyword:e,schemaType:t})=>t?(0,Ne.str)`"${e}" keyword must be ${t} ($data)`:(0,Ne.str)`"${e}" keyword is invalid ($data)`};function TP(e,t=Et.keywordError,r,n){let{it:o}=e,{gen:s,compositeRule:a,allErrors:i}=o,c=ky(e,t,r);n??(a||i)?by(s,c):yy(o,(0,Ne._)`[${c}]`)}Et.reportError=TP;function CP(e,t=Et.keywordError,r){let{it:n}=e,{gen:o,compositeRule:s,allErrors:a}=n,i=ky(e,t,r);by(o,i),s||a||yy(n,Rt.default.vErrors)}Et.reportExtraError=CP;function NP(e,t){e.assign(Rt.default.errors,t),e.if((0,Ne._)`${Rt.default.vErrors} !== null`,()=>e.if(t,()=>e.assign((0,Ne._)`${Rt.default.vErrors}.length`,t),()=>e.assign(Rt.default.vErrors,null)))}Et.resetErrorsCount=NP;function RP({gen:e,keyword:t,schemaValue:r,data:n,errsCount:o,it:s}){if(o===void 0)throw new Error("ajv implementation error");let a=e.name("err");e.forRange("i",o,Rt.default.errors,i=>{e.const(a,(0,Ne._)`${Rt.default.vErrors}[${i}]`),e.if((0,Ne._)`${a}.instancePath === undefined`,()=>e.assign((0,Ne._)`${a}.instancePath`,(0,Ne.strConcat)(Rt.default.instancePath,s.errorPath))),e.assign((0,Ne._)`${a}.schemaPath`,(0,Ne.str)`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign((0,Ne._)`${a}.schema`,r),e.assign((0,Ne._)`${a}.data`,n))})}Et.extendErrors=RP;function by(e,t){let r=e.const("err",t);e.if((0,Ne._)`${Rt.default.vErrors} === null`,()=>e.assign(Rt.default.vErrors,(0,Ne._)`[${r}]`),(0,Ne._)`${Rt.default.vErrors}.push(${r})`),e.code((0,Ne._)`${Rt.default.errors}++`)}function yy(e,t){let{gen:r,validateName:n,schemaEnv:o}=e;o.$async?r.throw((0,Ne._)`new ${e.ValidationError}(${t})`):(r.assign((0,Ne._)`${n}.errors`,t),r.return(!1))}var Pn={keyword:new Ne.Name("keyword"),schemaPath:new Ne.Name("schemaPath"),params:new Ne.Name("params"),propertyName:new Ne.Name("propertyName"),message:new Ne.Name("message"),schema:new Ne.Name("schema"),parentSchema:new Ne.Name("parentSchema")};function ky(e,t,r){let{createErrors:n}=e.it;return n===!1?(0,Ne._)`{}`:jP(e,t,r)}function jP(e,t,r={}){let{gen:n,it:o}=e,s=[MP(o,r),DP(e,r)];return LP(e,t,s),n.object(...s)}function MP({errorPath:e},{instancePath:t}){let r=t?(0,Ne.str)`${e}${(0,Oi.getErrorPath)(t,Oi.Type.Str)}`:e;return[Rt.default.instancePath,(0,Ne.strConcat)(Rt.default.instancePath,r)]}function DP({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:n}){let o=n?t:(0,Ne.str)`${t}/${e}`;return r&&(o=(0,Ne.str)`${o}${(0,Oi.getErrorPath)(r,Oi.Type.Str)}`),[Pn.schemaPath,o]}function LP(e,{params:t,message:r},n){let{keyword:o,data:s,schemaValue:a,it:i}=e,{opts:c,propertyName:l,topSchemaRef:u,schemaPath:d}=i;n.push([Pn.keyword,o],[Pn.params,typeof t=="function"?t(e):t||(0,Ne._)`{}`]),c.messages&&n.push([Pn.message,typeof r=="function"?r(e):r]),c.verbose&&n.push([Pn.schema,a],[Pn.parentSchema,(0,Ne._)`${u}${d}`],[Rt.default.data,s]),l&&n.push([Pn.propertyName,l])}});var zy=B(io=>{"use strict";Object.defineProperty(io,"__esModule",{value:!0});io.boolOrEmptySchema=io.topBoolOrEmptySchema=void 0;var VP=$s(),FP=ge(),ZP=Zr(),BP={message:"boolean schema is false"};function GP(e){let{gen:t,schema:r,validateName:n}=e;r===!1?vy(e,!1):typeof r=="object"&&r.$async===!0?t.return(ZP.default.data):(t.assign((0,FP._)`${n}.errors`,null),t.return(!0))}io.topBoolOrEmptySchema=GP;function UP(e,t){let{gen:r,schema:n}=e;n===!1?(r.var(t,!1),vy(e)):r.var(t,!0)}io.boolOrEmptySchema=UP;function vy(e,t){let{gen:r,data:n}=e,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,VP.reportError)(o,BP,void 0,t)}});var Tu=B(lo=>{"use strict";Object.defineProperty(lo,"__esModule",{value:!0});lo.getRules=lo.isJSONType=void 0;var qP=["string","number","integer","boolean","null","object","array"],KP=new Set(qP);function HP(e){return typeof e=="string"&&KP.has(e)}lo.isJSONType=HP;function WP(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}lo.getRules=WP});var Cu=B(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.shouldUseRule=sn.shouldUseGroup=sn.schemaHasRulesForType=void 0;function JP({schema:e,self:t},r){let n=t.RULES.types[r];return n&&n!==!0&&_y(e,n)}sn.schemaHasRulesForType=JP;function _y(e,t){return t.rules.some(r=>wy(e,r))}sn.shouldUseGroup=_y;function wy(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some(n=>e[n]!==void 0))}sn.shouldUseRule=wy});var Es=B(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.reportTypeError=At.checkDataTypes=At.checkDataType=At.coerceAndCheckDataType=At.getJSONTypes=At.getSchemaTypes=At.DataType=void 0;var YP=Tu(),XP=Cu(),QP=$s(),he=ge(),xy=Ce(),co;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(co||(At.DataType=co={}));function e$(e){let t=Sy(e.type);if(t.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&t.push("null")}return t}At.getSchemaTypes=e$;function Sy(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(YP.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}At.getJSONTypes=Sy;function t$(e,t){let{gen:r,data:n,opts:o}=e,s=r$(t,o.coerceTypes),a=t.length>0&&!(s.length===0&&t.length===1&&(0,XP.schemaHasRulesForType)(e,t[0]));if(a){let i=Ru(t,n,o.strictNumbers,co.Wrong);r.if(i,()=>{s.length?n$(e,t,s):ju(e)})}return a}At.coerceAndCheckDataType=t$;var Py=new Set(["string","number","integer","boolean","null"]);function r$(e,t){return t?e.filter(r=>Py.has(r)||t==="array"&&r==="array"):[]}function n$(e,t,r){let{gen:n,data:o,opts:s}=e,a=n.let("dataType",(0,he._)`typeof ${o}`),i=n.let("coerced",(0,he._)`undefined`);s.coerceTypes==="array"&&n.if((0,he._)`${a} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,he._)`${o}[0]`).assign(a,(0,he._)`typeof ${o}`).if(Ru(t,o,s.strictNumbers),()=>n.assign(i,o))),n.if((0,he._)`${i} !== undefined`);for(let l of r)(Py.has(l)||l==="array"&&s.coerceTypes==="array")&&c(l);n.else(),ju(e),n.endIf(),n.if((0,he._)`${i} !== undefined`,()=>{n.assign(o,i),o$(e,i)});function c(l){switch(l){case"string":n.elseIf((0,he._)`${a} == "number" || ${a} == "boolean"`).assign(i,(0,he._)`"" + ${o}`).elseIf((0,he._)`${o} === null`).assign(i,(0,he._)`""`);return;case"number":n.elseIf((0,he._)`${a} == "boolean" || ${o} === null
5
- || (${a} == "string" && ${o} && ${o} == +${o})`).assign(i,(0,he._)`+${o}`);return;case"integer":n.elseIf((0,he._)`${a} === "boolean" || ${o} === null
6
- || (${a} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(i,(0,he._)`+${o}`);return;case"boolean":n.elseIf((0,he._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(i,!1).elseIf((0,he._)`${o} === "true" || ${o} === 1`).assign(i,!0);return;case"null":n.elseIf((0,he._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(i,null);return;case"array":n.elseIf((0,he._)`${a} === "string" || ${a} === "number"
7
- || ${a} === "boolean" || ${o} === null`).assign(i,(0,he._)`[${o}]`)}}}function o$({gen:e,parentData:t,parentDataProperty:r},n){e.if((0,he._)`${t} !== undefined`,()=>e.assign((0,he._)`${t}[${r}]`,n))}function Nu(e,t,r,n=co.Correct){let o=n===co.Correct?he.operators.EQ:he.operators.NEQ,s;switch(e){case"null":return(0,he._)`${t} ${o} null`;case"array":s=(0,he._)`Array.isArray(${t})`;break;case"object":s=(0,he._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=a((0,he._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=a();break;default:return(0,he._)`typeof ${t} ${o} ${e}`}return n===co.Correct?s:(0,he.not)(s);function a(i=he.nil){return(0,he.and)((0,he._)`typeof ${t} == "number"`,i,r?(0,he._)`isFinite(${t})`:he.nil)}}At.checkDataType=Nu;function Ru(e,t,r,n){if(e.length===1)return Nu(e[0],t,r,n);let o,s=(0,xy.toHash)(e);if(s.array&&s.object){let a=(0,he._)`typeof ${t} != "object"`;o=s.null?a:(0,he._)`!${t} || ${a}`,delete s.null,delete s.array,delete s.object}else o=he.nil;s.number&&delete s.integer;for(let a in s)o=(0,he.and)(o,Nu(a,t,r,n));return o}At.checkDataTypes=Ru;var s$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,he._)`{type: ${e}}`:(0,he._)`{type: ${t}}`};function ju(e){let t=a$(e);(0,QP.reportError)(t,s$)}At.reportTypeError=ju;function a$(e){let{gen:t,data:r,schema:n}=e,o=(0,xy.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:e}}});var Ey=B(Ii=>{"use strict";Object.defineProperty(Ii,"__esModule",{value:!0});Ii.assignDefaults=void 0;var uo=ge(),i$=Ce();function l$(e,t){let{properties:r,items:n}=e.schema;if(t==="object"&&r)for(let o in r)$y(e,o,r[o].default);else t==="array"&&Array.isArray(n)&&n.forEach((o,s)=>$y(e,s,o.default))}Ii.assignDefaults=l$;function $y(e,t,r){let{gen:n,compositeRule:o,data:s,opts:a}=e;if(r===void 0)return;let i=(0,uo._)`${s}${(0,uo.getProperty)(t)}`;if(o){(0,i$.checkStrictMode)(e,`default is ignored for: ${i}`);return}let c=(0,uo._)`${i} === undefined`;a.useDefaults==="empty"&&(c=(0,uo._)`${c} || ${i} === null || ${i} === ""`),n.if(c,(0,uo._)`${i} = ${(0,uo.stringify)(r)}`)}});var rr=B(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.validateUnion=Le.validateArray=Le.usePattern=Le.callValidateCode=Le.schemaProperties=Le.allSchemaProperties=Le.noPropertyInData=Le.propertyInData=Le.isOwnProperty=Le.hasPropFunc=Le.reportMissingProp=Le.checkMissingProp=Le.checkReportMissingProp=void 0;var We=ge(),Mu=Ce(),an=Zr(),c$=Ce();function u$(e,t){let{gen:r,data:n,it:o}=e;r.if(Lu(r,n,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:(0,We._)`${t}`},!0),e.error()})}Le.checkReportMissingProp=u$;function d$({gen:e,data:t,it:{opts:r}},n,o){return(0,We.or)(...n.map(s=>(0,We.and)(Lu(e,t,s,r.ownProperties),(0,We._)`${o} = ${s}`)))}Le.checkMissingProp=d$;function p$(e,t){e.setParams({missingProperty:t},!0),e.error()}Le.reportMissingProp=p$;function Ay(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,We._)`Object.prototype.hasOwnProperty`})}Le.hasPropFunc=Ay;function Du(e,t,r){return(0,We._)`${Ay(e)}.call(${t}, ${r})`}Le.isOwnProperty=Du;function f$(e,t,r,n){let o=(0,We._)`${t}${(0,We.getProperty)(r)} !== undefined`;return n?(0,We._)`${o} && ${Du(e,t,r)}`:o}Le.propertyInData=f$;function Lu(e,t,r,n){let o=(0,We._)`${t}${(0,We.getProperty)(r)} === undefined`;return n?(0,We.or)(o,(0,We.not)(Du(e,t,r))):o}Le.noPropertyInData=Lu;function Oy(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}Le.allSchemaProperties=Oy;function m$(e,t){return Oy(t).filter(r=>!(0,Mu.alwaysValidSchema)(e,t[r]))}Le.schemaProperties=m$;function h$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:s},it:a},i,c,l){let u=l?(0,We._)`${e}, ${t}, ${n}${o}`:t,d=[[an.default.instancePath,(0,We.strConcat)(an.default.instancePath,s)],[an.default.parentData,a.parentData],[an.default.parentDataProperty,a.parentDataProperty],[an.default.rootData,an.default.rootData]];a.opts.dynamicRef&&d.push([an.default.dynamicAnchors,an.default.dynamicAnchors]);let f=(0,We._)`${u}, ${r.object(...d)}`;return c!==We.nil?(0,We._)`${i}.call(${c}, ${f})`:(0,We._)`${i}(${f})`}Le.callValidateCode=h$;var g$=(0,We._)`new RegExp`;function b$({gen:e,it:{opts:t}},r){let n=t.unicodeRegExp?"u":"",{regExp:o}=t.code,s=o(r,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,We._)`${o.code==="new RegExp"?g$:(0,c$.useFunc)(e,o)}(${r}, ${n})`})}Le.usePattern=b$;function y$(e){let{gen:t,data:r,keyword:n,it:o}=e,s=t.name("valid");if(o.allErrors){let i=t.let("valid",!0);return a(()=>t.assign(i,!1)),i}return t.var(s,!0),a(()=>t.break()),s;function a(i){let c=t.const("len",(0,We._)`${r}.length`);t.forRange("i",0,c,l=>{e.subschema({keyword:n,dataProp:l,dataPropType:Mu.Type.Num},s),t.if((0,We.not)(s),i)})}}Le.validateArray=y$;function k$(e){let{gen:t,schema:r,keyword:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,Mu.alwaysValidSchema)(o,c))&&!o.opts.unevaluated)return;let a=t.let("valid",!1),i=t.name("_valid");t.block(()=>r.forEach((c,l)=>{let u=e.subschema({keyword:n,schemaProp:l,compositeRule:!0},i);t.assign(a,(0,We._)`${a} || ${i}`),e.mergeValidEvaluated(u,i)||t.if((0,We.not)(a))})),e.result(a,()=>e.reset(),()=>e.error(!0))}Le.validateUnion=k$});var Cy=B(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.validateKeywordUsage=xr.validSchemaType=xr.funcKeywordCode=xr.macroKeywordCode=void 0;var jt=ge(),$n=Zr(),v$=rr(),z$=$s();function _$(e,t){let{gen:r,keyword:n,schema:o,parentSchema:s,it:a}=e,i=t.macro.call(a.self,o,s,a),c=Ty(r,n,i);a.opts.validateSchema!==!1&&a.self.validateSchema(i,!0);let l=r.name("valid");e.subschema({schema:i,schemaPath:jt.nil,errSchemaPath:`${a.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},l),e.pass(l,()=>e.error(!0))}xr.macroKeywordCode=_$;function w$(e,t){var r;let{gen:n,keyword:o,schema:s,parentSchema:a,$data:i,it:c}=e;S$(c,t);let l=!i&&t.compile?t.compile.call(c.self,s,a,c):t.validate,u=Ty(n,o,l),d=n.let("valid");e.block$data(d,f),e.ok((r=t.valid)!==null&&r!==void 0?r:d);function f(){if(t.errors===!1)p(),t.modifying&&Iy(e),m(()=>e.error());else{let g=t.async?h():b();t.modifying&&Iy(e),m(()=>x$(e,g))}}function h(){let g=n.let("ruleErrs",null);return n.try(()=>p((0,jt._)`await `),v=>n.assign(d,!1).if((0,jt._)`${v} instanceof ${c.ValidationError}`,()=>n.assign(g,(0,jt._)`${v}.errors`),()=>n.throw(v))),g}function b(){let g=(0,jt._)`${u}.errors`;return n.assign(g,null),p(jt.nil),g}function p(g=t.async?(0,jt._)`await `:jt.nil){let v=c.opts.passContext?$n.default.this:$n.default.self,_=!("compile"in t&&!i||t.schema===!1);n.assign(d,(0,jt._)`${g}${(0,v$.callValidateCode)(e,u,v,_)}`,t.modifying)}function m(g){var v;n.if((0,jt.not)((v=t.valid)!==null&&v!==void 0?v:d),g)}}xr.funcKeywordCode=w$;function Iy(e){let{gen:t,data:r,it:n}=e;t.if(n.parentData,()=>t.assign(r,(0,jt._)`${n.parentData}[${n.parentDataProperty}]`))}function x$(e,t){let{gen:r}=e;r.if((0,jt._)`Array.isArray(${t})`,()=>{r.assign($n.default.vErrors,(0,jt._)`${$n.default.vErrors} === null ? ${t} : ${$n.default.vErrors}.concat(${t})`).assign($n.default.errors,(0,jt._)`${$n.default.vErrors}.length`),(0,z$.extendErrors)(e)},()=>e.error())}function S$({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function Ty(e,t,r){if(r===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,jt.stringify)(r)})}function P$(e,t,r=!1){return!t.length||t.some(n=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||r&&typeof e>"u")}xr.validSchemaType=P$;function $$({schema:e,opts:t,self:r,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw new Error("ajv implementation error");let a=o.dependencies;if(a?.some(i=>!Object.prototype.hasOwnProperty.call(e,i)))throw new Error(`parent schema must have dependencies of ${s}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(e[s])){let c=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}xr.validateKeywordUsage=$$});var Ry=B(ln=>{"use strict";Object.defineProperty(ln,"__esModule",{value:!0});ln.extendSubschemaMode=ln.extendSubschemaData=ln.getSubschema=void 0;var Sr=ge(),Ny=Ce();function E$(e,{keyword:t,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:a}){if(t!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let i=e.schema[t];return r===void 0?{schema:i,schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[r],schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}${(0,Sr.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Ny.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||s===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:a,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}ln.getSubschema=E$;function A$(e,t,{dataProp:r,dataPropType:n,data:o,dataTypes:s,propertyName:a}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:i}=t;if(r!==void 0){let{errorPath:l,dataPathArr:u,opts:d}=t,f=i.let("data",(0,Sr._)`${t.data}${(0,Sr.getProperty)(r)}`,!0);c(f),e.errorPath=(0,Sr.str)`${l}${(0,Ny.getErrorPath)(r,n,d.jsPropertySyntax)}`,e.parentDataProperty=(0,Sr._)`${r}`,e.dataPathArr=[...u,e.parentDataProperty]}if(o!==void 0){let l=o instanceof Sr.Name?o:i.let("data",o,!0);c(l),a!==void 0&&(e.propertyName=a)}s&&(e.dataTypes=s);function c(l){e.data=l,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,l]}}ln.extendSubschemaData=A$;function O$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:s}){n!==void 0&&(e.compositeRule=n),o!==void 0&&(e.createErrors=o),s!==void 0&&(e.allErrors=s),e.jtdDiscriminator=t,e.jtdMetadata=r}ln.extendSubschemaMode=O$});var Vu=B((N3,jy)=>{"use strict";jy.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,o,s;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[o]))return!1;for(o=n;o--!==0;){var a=s[o];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Dy=B((R3,My)=>{"use strict";var cn=My.exports=function(e,t,r){typeof t=="function"&&(r=t,t={}),r=t.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};Ti(t,n,o,e,"",e)};cn.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};cn.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};cn.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};cn.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 Ti(e,t,r,n,o,s,a,i,c,l){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,o,s,a,i,c,l);for(var u in n){var d=n[u];if(Array.isArray(d)){if(u in cn.arrayKeywords)for(var f=0;f<d.length;f++)Ti(e,t,r,d[f],o+"/"+u+"/"+f,s,o,u,n,f)}else if(u in cn.propsKeywords){if(d&&typeof d=="object")for(var h in d)Ti(e,t,r,d[h],o+"/"+u+"/"+I$(h),s,o,u,n,h)}else(u in cn.keywords||e.allKeys&&!(u in cn.skipKeywords))&&Ti(e,t,r,d,o+"/"+u,s,o,u,n)}r(n,o,s,a,i,c,l)}}function I$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var As=B(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.getSchemaRefs=Ft.resolveUrl=Ft.normalizeId=Ft._getFullPath=Ft.getFullPath=Ft.inlineRef=void 0;var T$=Ce(),C$=Vu(),N$=Dy(),R$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function j$(e,t=!0){return typeof e=="boolean"?!0:t===!0?!Fu(e):t?Ly(e)<=t:!1}Ft.inlineRef=j$;var M$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Fu(e){for(let t in e){if(M$.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(Fu)||typeof r=="object"&&Fu(r))return!0}return!1}function Ly(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,!R$.has(r)&&(typeof e[r]=="object"&&(0,T$.eachItem)(e[r],n=>t+=Ly(n)),t===1/0))return 1/0}return t}function Vy(e,t="",r){r!==!1&&(t=po(t));let n=e.parse(t);return Fy(e,n)}Ft.getFullPath=Vy;function Fy(e,t){return e.serialize(t).split("#")[0]+"#"}Ft._getFullPath=Fy;var D$=/#\/?$/;function po(e){return e?e.replace(D$,""):""}Ft.normalizeId=po;function L$(e,t,r){return r=po(r),e.resolve(t,r)}Ft.resolveUrl=L$;var V$=/^[a-z_][-a-z0-9._]*$/i;function F$(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=po(e[r]||t),s={"":o},a=Vy(n,o,!1),i={},c=new Set;return N$(e,{allKeys:!0},(d,f,h,b)=>{if(b===void 0)return;let p=a+f,m=s[b];typeof d[r]=="string"&&(m=g.call(this,d[r])),v.call(this,d.$anchor),v.call(this,d.$dynamicAnchor),s[f]=m;function g(_){let w=this.opts.uriResolver.resolve;if(_=po(m?w(m,_):_),c.has(_))throw u(_);c.add(_);let k=this.refs[_];return typeof k=="string"&&(k=this.refs[k]),typeof k=="object"?l(d,k.schema,_):_!==po(p)&&(_[0]==="#"?(l(d,i[_],_),i[_]=d):this.refs[_]=p),_}function v(_){if(typeof _=="string"){if(!V$.test(_))throw new Error(`invalid anchor "${_}"`);g.call(this,`#${_}`)}}}),i;function l(d,f,h){if(f!==void 0&&!C$(d,f))throw u(h)}function u(d){return new Error(`reference "${d}" resolves to more than one schema`)}}Ft.getSchemaRefs=F$});var Ts=B(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.getData=un.KeywordCxt=un.validateFunctionCode=void 0;var qy=zy(),Zy=Es(),Bu=Cu(),Ci=Es(),Z$=Ey(),Is=Cy(),Zu=Ry(),se=ge(),de=Zr(),B$=As(),Br=Ce(),Os=$s();function G$(e){if(Wy(e)&&(Jy(e),Hy(e))){K$(e);return}Ky(e,()=>(0,qy.topBoolOrEmptySchema)(e))}un.validateFunctionCode=G$;function Ky({gen:e,validateName:t,schema:r,schemaEnv:n,opts:o},s){o.code.es5?e.func(t,(0,se._)`${de.default.data}, ${de.default.valCxt}`,n.$async,()=>{e.code((0,se._)`"use strict"; ${By(r,o)}`),q$(e,o),e.code(s)}):e.func(t,(0,se._)`${de.default.data}, ${U$(o)}`,n.$async,()=>e.code(By(r,o)).code(s))}function U$(e){return(0,se._)`{${de.default.instancePath}="", ${de.default.parentData}, ${de.default.parentDataProperty}, ${de.default.rootData}=${de.default.data}${e.dynamicRef?(0,se._)`, ${de.default.dynamicAnchors}={}`:se.nil}}={}`}function q$(e,t){e.if(de.default.valCxt,()=>{e.var(de.default.instancePath,(0,se._)`${de.default.valCxt}.${de.default.instancePath}`),e.var(de.default.parentData,(0,se._)`${de.default.valCxt}.${de.default.parentData}`),e.var(de.default.parentDataProperty,(0,se._)`${de.default.valCxt}.${de.default.parentDataProperty}`),e.var(de.default.rootData,(0,se._)`${de.default.valCxt}.${de.default.rootData}`),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`${de.default.valCxt}.${de.default.dynamicAnchors}`)},()=>{e.var(de.default.instancePath,(0,se._)`""`),e.var(de.default.parentData,(0,se._)`undefined`),e.var(de.default.parentDataProperty,(0,se._)`undefined`),e.var(de.default.rootData,de.default.data),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`{}`)})}function K$(e){let{schema:t,opts:r,gen:n}=e;Ky(e,()=>{r.$comment&&t.$comment&&Xy(e),X$(e),n.let(de.default.vErrors,null),n.let(de.default.errors,0),r.unevaluated&&H$(e),Yy(e),tE(e)})}function H$(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",(0,se._)`${r}.evaluated`),t.if((0,se._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,se._)`${e.evaluated}.props`,(0,se._)`undefined`)),t.if((0,se._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,se._)`${e.evaluated}.items`,(0,se._)`undefined`))}function By(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?(0,se._)`/*# sourceURL=${r} */`:se.nil}function W$(e,t){if(Wy(e)&&(Jy(e),Hy(e))){J$(e,t);return}(0,qy.boolOrEmptySchema)(e,t)}function Hy({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function Wy(e){return typeof e.schema!="boolean"}function J$(e,t){let{schema:r,gen:n,opts:o}=e;o.$comment&&r.$comment&&Xy(e),Q$(e),eE(e);let s=n.const("_errs",de.default.errors);Yy(e,s),n.var(t,(0,se._)`${s} === ${de.default.errors}`)}function Jy(e){(0,Br.checkUnknownRules)(e),Y$(e)}function Yy(e,t){if(e.opts.jtd)return Gy(e,[],!1,t);let r=(0,Zy.getSchemaTypes)(e.schema),n=(0,Zy.coerceAndCheckDataType)(e,r);Gy(e,r,!n,t)}function Y$(e){let{schema:t,errSchemaPath:r,opts:n,self:o}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,Br.schemaHasRulesButRef)(t,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function X$(e){let{schema:t,opts:r}=e;t.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,Br.checkStrictMode)(e,"default is ignored in the schema root")}function Q$(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,B$.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function eE(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function Xy({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:o}){let s=r.$comment;if(o.$comment===!0)e.code((0,se._)`${de.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let a=(0,se.str)`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code((0,se._)`${de.default.self}.opts.$comment(${s}, ${a}, ${i}.schema)`)}}function tE(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:o,opts:s}=e;r.$async?t.if((0,se._)`${de.default.errors} === 0`,()=>t.return(de.default.data),()=>t.throw((0,se._)`new ${o}(${de.default.vErrors})`)):(t.assign((0,se._)`${n}.errors`,de.default.vErrors),s.unevaluated&&rE(e),t.return((0,se._)`${de.default.errors} === 0`))}function rE({gen:e,evaluated:t,props:r,items:n}){r instanceof se.Name&&e.assign((0,se._)`${t}.props`,r),n instanceof se.Name&&e.assign((0,se._)`${t}.items`,n)}function Gy(e,t,r,n){let{gen:o,schema:s,data:a,allErrors:i,opts:c,self:l}=e,{RULES:u}=l;if(s.$ref&&(c.ignoreKeywordsWithRef||!(0,Br.schemaHasRulesButRef)(s,u))){o.block(()=>ek(e,"$ref",u.all.$ref.definition));return}c.jtd||nE(e,t),o.block(()=>{for(let f of u.rules)d(f);d(u.post)});function d(f){(0,Bu.shouldUseGroup)(s,f)&&(f.type?(o.if((0,Ci.checkDataType)(f.type,a,c.strictNumbers)),Uy(e,f),t.length===1&&t[0]===f.type&&r&&(o.else(),(0,Ci.reportTypeError)(e)),o.endIf()):Uy(e,f),i||o.if((0,se._)`${de.default.errors} === ${n||0}`))}}function Uy(e,t){let{gen:r,schema:n,opts:{useDefaults:o}}=e;o&&(0,Z$.assignDefaults)(e,t.type),r.block(()=>{for(let s of t.rules)(0,Bu.shouldUseRule)(n,s)&&ek(e,s.keyword,s.definition,t.type)})}function nE(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(oE(e,t),e.opts.allowUnionTypes||sE(e,t),aE(e,e.dataTypes))}function oE(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(r=>{Qy(e.dataTypes,r)||Gu(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),lE(e,t)}}function sE(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&Gu(e,"use allowUnionTypes to allow union type keyword")}function aE(e,t){let r=e.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Bu.shouldUseRule)(e.schema,o)){let{type:s}=o.definition;s.length&&!s.some(a=>iE(t,a))&&Gu(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function iE(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Qy(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function lE(e,t){let r=[];for(let n of e.dataTypes)Qy(t,n)?r.push(n):t.includes("integer")&&n==="number"&&r.push("integer");e.dataTypes=r}function Gu(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,Br.checkStrictMode)(e,t,e.opts.strictTypes)}var Ni=class{constructor(t,r,n){if((0,Is.validateKeywordUsage)(t,r,n),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=n,this.data=t.data,this.schema=t.schema[n],this.$data=r.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Br.schemaRefOrVal)(t,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=r,this.$data)this.schemaCode=t.gen.const("vSchema",tk(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,Is.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=t.gen.const("_errs",de.default.errors))}result(t,r,n){this.failResult((0,se.not)(t),r,n)}failResult(t,r,n){this.gen.if(t),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,r){this.failResult((0,se.not)(t),void 0,r)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);let{schemaCode:r}=this;this.fail((0,se._)`${r} !== undefined && (${(0,se.or)(this.invalid$data(),t)})`)}error(t,r,n){if(r){this.setParams(r),this._error(t,n),this.setParams({});return}this._error(t,n)}_error(t,r){(t?Os.reportExtraError:Os.reportError)(this,this.def.error,r)}$dataError(){(0,Os.reportError)(this,this.def.$dataError||Os.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Os.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,r){r?Object.assign(this.params,t):this.params=t}block$data(t,r,n=se.nil){this.gen.block(()=>{this.check$data(t,n),r()})}check$data(t=se.nil,r=se.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:s,def:a}=this;n.if((0,se.or)((0,se._)`${o} === undefined`,r)),t!==se.nil&&n.assign(t,!0),(s.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),t!==se.nil&&n.assign(t,!1)),n.else()}invalid$data(){let{gen:t,schemaCode:r,schemaType:n,def:o,it:s}=this;return(0,se.or)(a(),i());function a(){if(n.length){if(!(r instanceof se.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,se._)`${(0,Ci.checkDataTypes)(c,r,s.opts.strictNumbers,Ci.DataType.Wrong)}`}return se.nil}function i(){if(o.validateSchema){let c=t.scopeValue("validate$data",{ref:o.validateSchema});return(0,se._)`!${c}(${r})`}return se.nil}}subschema(t,r){let n=(0,Zu.getSubschema)(this.it,t);(0,Zu.extendSubschemaData)(n,this.it,t),(0,Zu.extendSubschemaMode)(n,t);let o={...this.it,...n,items:void 0,props:void 0};return W$(o,r),o}mergeEvaluated(t,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&t.props!==void 0&&(n.props=Br.mergeEvaluated.props(o,t.props,n.props,r)),n.items!==!0&&t.items!==void 0&&(n.items=Br.mergeEvaluated.items(o,t.items,n.items,r)))}mergeValidEvaluated(t,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(t,se.Name)),!0}};un.KeywordCxt=Ni;function ek(e,t,r,n){let o=new Ni(e,r,t);"code"in r?r.code(o,n):o.$data&&r.validate?(0,Is.funcKeywordCode)(o,r):"macro"in r?(0,Is.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,Is.funcKeywordCode)(o,r)}var cE=/^\/(?:[^~]|~0|~1)*$/,uE=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function tk(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let o,s;if(e==="")return de.default.rootData;if(e[0]==="/"){if(!cE.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);o=e,s=de.default.rootData}else{let l=uE.exec(e);if(!l)throw new Error(`Invalid JSON-pointer: ${e}`);let u=+l[1];if(o=l[2],o==="#"){if(u>=t)throw new Error(c("property/index",u));return n[t-u]}if(u>t)throw new Error(c("data",u));if(s=r[t-u],!o)return s}let a=s,i=o.split("/");for(let l of i)l&&(s=(0,se._)`${s}${(0,se.getProperty)((0,Br.unescapeJsonPointer)(l))}`,a=(0,se._)`${a} && ${s}`);return a;function c(l,u){return`Cannot access ${l} ${u} levels up, current level is ${t}`}}un.getData=tk});var Ri=B(qu=>{"use strict";Object.defineProperty(qu,"__esModule",{value:!0});var Uu=class extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}};qu.default=Uu});var Cs=B(Wu=>{"use strict";Object.defineProperty(Wu,"__esModule",{value:!0});var Ku=As(),Hu=class extends Error{constructor(t,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Ku.resolveUrl)(t,r,n),this.missingSchema=(0,Ku.normalizeId)((0,Ku.getFullPath)(t,this.missingRef))}};Wu.default=Hu});var Mi=B(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.resolveSchema=nr.getCompilingSchema=nr.resolveRef=nr.compileSchema=nr.SchemaEnv=void 0;var fr=ge(),dE=Ri(),En=Zr(),mr=As(),rk=Ce(),pE=Ts(),fo=class{constructor(t){var r;this.refs={},this.dynamicAnchors={};let n;typeof t.schema=="object"&&(n=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(r=t.baseId)!==null&&r!==void 0?r:(0,mr.normalizeId)(n?.[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=n?.$async,this.refs={}}};nr.SchemaEnv=fo;function Yu(e){let t=nk.call(this,e);if(t)return t;let r=(0,mr.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,a=new fr.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),i;e.$async&&(i=a.scopeValue("Error",{ref:dE.default,code:(0,fr._)`require("ajv/dist/runtime/validation_error").default`}));let c=a.scopeName("validate");e.validateName=c;let l={gen:a,allErrors:this.opts.allErrors,data:En.default.data,parentData:En.default.parentData,parentDataProperty:En.default.parentDataProperty,dataNames:[En.default.data],dataPathArr:[fr.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,fr.stringify)(e.schema)}:{ref:e.schema}),validateName:c,ValidationError:i,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:fr.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,fr._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(e),(0,pE.validateFunctionCode)(l),a.optimize(this.opts.code.optimize);let d=a.toString();u=`${a.scopeRefs(En.default.scope)}return ${d}`,this.opts.code.process&&(u=this.opts.code.process(u,e));let h=new Function(`${En.default.self}`,`${En.default.scope}`,u)(this,this.scope.get());if(this.scope.value(c,{ref:h}),h.errors=null,h.schema=e.schema,h.schemaEnv=e,e.$async&&(h.$async=!0),this.opts.code.source===!0&&(h.source={validateName:c,validateCode:d,scopeValues:a._values}),this.opts.unevaluated){let{props:b,items:p}=l;h.evaluated={props:b instanceof fr.Name?void 0:b,items:p instanceof fr.Name?void 0:p,dynamicProps:b instanceof fr.Name,dynamicItems:p instanceof fr.Name},h.source&&(h.source.evaluated=(0,fr.stringify)(h.evaluated))}return e.validate=h,e}catch(d){throw delete e.validate,delete e.validateName,u&&this.logger.error("Error compiling schema, function code:",u),d}finally{this._compilations.delete(e)}}nr.compileSchema=Yu;function fE(e,t,r){var n;r=(0,mr.resolveUrl)(this.opts.uriResolver,t,r);let o=e.refs[r];if(o)return o;let s=gE.call(this,e,r);if(s===void 0){let a=(n=e.localRefs)===null||n===void 0?void 0:n[r],{schemaId:i}=this.opts;a&&(s=new fo({schema:a,schemaId:i,root:e,baseId:t}))}if(s!==void 0)return e.refs[r]=mE.call(this,s)}nr.resolveRef=fE;function mE(e){return(0,mr.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:Yu.call(this,e)}function nk(e){for(let t of this._compilations)if(hE(t,e))return t}nr.getCompilingSchema=nk;function hE(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function gE(e,t){let r;for(;typeof(r=this.refs[t])=="string";)t=r;return r||this.schemas[t]||ji.call(this,e,t)}function ji(e,t){let r=this.opts.uriResolver.parse(t),n=(0,mr._getFullPath)(this.opts.uriResolver,r),o=(0,mr.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===o)return Ju.call(this,r,e);let s=(0,mr.normalizeId)(n),a=this.refs[s]||this.schemas[s];if(typeof a=="string"){let i=ji.call(this,e,a);return typeof i?.schema!="object"?void 0:Ju.call(this,r,i)}if(typeof a?.schema=="object"){if(a.validate||Yu.call(this,a),s===(0,mr.normalizeId)(t)){let{schema:i}=a,{schemaId:c}=this.opts,l=i[c];return l&&(o=(0,mr.resolveUrl)(this.opts.uriResolver,o,l)),new fo({schema:i,schemaId:c,root:e,baseId:o})}return Ju.call(this,r,a)}}nr.resolveSchema=ji;var bE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function Ju(e,{baseId:t,schema:r,root:n}){var o;if(((o=e.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let i of e.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,rk.unescapeFragment)(i)];if(c===void 0)return;r=c;let l=typeof r=="object"&&r[this.opts.schemaId];!bE.has(i)&&l&&(t=(0,mr.resolveUrl)(this.opts.uriResolver,t,l))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,rk.schemaHasRulesButRef)(r,this.RULES)){let i=(0,mr.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=ji.call(this,n,i)}let{schemaId:a}=this.opts;if(s=s||new fo({schema:r,schemaId:a,root:n,baseId:t}),s.schema!==s.root.schema)return s}});var ok=B((F3,yE)=>{yE.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}});var nd=B((Z3,pk)=>{"use strict";var kE=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),Qu=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),vE=RegExp.prototype.test.bind(/^\d*$/u),An=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),ed=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),ak=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),td=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),zE=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),Zt=new Array(256);{let e="0123456789ABCDEF";for(let t=0;t<256;t++)Zt[t]="%"+e[t>>4]+e[t&15]}function Ot(e){return e<2048?Zt[192|e>>6]+Zt[128|e&63]:e<65536?Zt[224|e>>12]+Zt[128|e>>6&63]+Zt[128|e&63]:Zt[240|e>>18]+Zt[128|e>>12&63]+Zt[128|e>>6&63]+Zt[128|e&63]}function _E(e){let t="",r=0,n=0;for(n=0;n<e.length;n++)if(r=e[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}var wE=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),xE=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),SE=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),PE=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function $E(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(!SE(e[t])){if(e[t]==="%"&&t+2<e.length&&An(e.slice(t+1,t+3))){t+=2;continue}return!1}return!0}function sk(e){let t=-1,r=0,n=-1,o=0;for(let i=0;i<e.length;i++)e[i]==="0"?(n===-1&&(n=i),o++,o>r&&(r=o,t=n)):(n=-1,o=0);if(r<2)return e.join(":");let s=e.slice(0,t).join(":"),a=e.slice(t+r).join(":");return s+"::"+a}function EE(e){let t=e.indexOf("::");if(t!==-1&&e.indexOf("::",t+1)!==-1)return;let r=t===-1?e.split(":"):e.slice(0,t).split(":"),n=t===-1?[]:e.slice(t+2).split(":");t!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let o=r.concat(n),s=0;for(let i=0;i<o.length;i++){let c=o[i];if(c==="")return;if(c.indexOf(".")!==-1){if(i!==o.length-1||t!==-1&&n.length===0||!Qu(c))return;s+=2;continue}if(!wE(c))return;o[i]=parseInt(c,16).toString(16),s++}if(t===-1)return s!==8?void 0:sk(o);if(s>=8)return;let a=o.slice(0,r.length);for(let i=s;i<8;i++)a.push("0");for(let i=r.length;i<o.length;i++)a.push(o[i]);return sk(a)}function Xu(e){let t=e[0]==="["&&e[e.length-1]==="]";if((e[0]==="["||e[e.length-1]==="]")&&!t)return{host:e,isIPV6:!1,error:!0};let n=t?e.slice(1,-1):e;if(t&&xE(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(AE(n,":")<2)return{host:e,isIPV6:!1,error:t};let o="",s=n.indexOf("%");if(s!==-1){let i=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(o=n.slice(s+i),!$E(o))return{host:e,isIPV6:!1,error:!0};n=n.slice(0,s)}let a=EE(n);return a===void 0?{host:e,isIPV6:!1,error:!0}:{host:a+(o?"%"+o:""),escapedHost:a+(o?"%25"+o:""),isIPV6:!0}}function AE(e,t){let r=0;for(let n=0;n<e.length;n++)e[n]===t&&r++;return r}function ik(e){let t=e,r=[],n=-1,o=0;for(;o=t.length;){if(o===1){if(t===".")break;if(t==="/"){r.push("/");break}else{r.push(t);break}}else if(o===2){if(t[0]==="."){if(t[1]===".")break;if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&(t[1]==="."||t[1]==="/")){r.push("/");break}}else if(o===3&&t==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."&&t[3]==="/"){t=t.slice(3),r.length!==0&&r.pop();continue}}if((n=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")}function OE(e){if(e===""||e[0]==="/")return ik(e);let t=e.split("/"),r=t.length-1,n=[],o=!1;for(let s=0;s<=r;s++){let a=t[s];a==="."||a===".."?(a===".."&&(n.length!==0&&n[n.length-1]!==".."?n.pop():n.push("..")),o=s===r):n.push(a)}return o&&n[n.length-1]!==".."&&n.push(""),(n.length===0||n[0]===""||n[0].includes(":"))&&n.unshift("."),n.join("/")}var IE={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},TE=/[@/?#:]/g,CE=/[@/?#]/g;function lk(e,t){let r=t?CE:TE;return r.lastIndex=0,e.replace(r,n=>IE[n])}function ck(e,t=!1){if(e.indexOf("%")===-1)return e;let r="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){let o=e.slice(n+1,n+3);if(An(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));t&&ed(a)?r+=a:r+="%"+s,n+=2;continue}}r+=e[n]}return r}function NE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(An(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));a!=="."&&ed(a)?t+=a:t+="%"+s,r+=2;continue}}if(ak(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function RE(e,t=!1){let r="",n=t&&e[0]!=="/";for(let o=0;o<e.length;o++){let s=e[o];if(s==="%"&&o+2<e.length){let a=e.slice(o+1,o+3);if(An(a)){r+="%"+a.toUpperCase(),o+=2;continue}}if(s==="/"&&(n=!1),ak(s)&&(s!==":"||!n))r+=s;else{let a=e.charCodeAt(o);if(a<128)r+=Zt[a];else if(a<55296||a>57343)r+=Ot(a);else if(a<=56319&&o+1<e.length){let i=e.charCodeAt(o+1);i>=56320&&i<=57343?(r+=Ot(65536+(a-55296<<10)+(i-56320)),o++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function rd(e,t){let r="";for(let n=0;n<e.length;n++){let o=e[n];if(o==="%"&&n+2<e.length){let s=e.slice(n+1,n+3);if(An(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(t(o))r+=o;else{let s=e.charCodeAt(n);if(s<128)r+=Zt[s];else if(s<55296||s>57343)r+=Ot(s);else if(s<=56319&&n+1<e.length){let a=e.charCodeAt(n+1);a>=56320&&a<=57343?(r+=Ot(65536+(s-55296<<10)+(a-56320)),n++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function uk(e){return rd(e,zE)}function jE(e){return rd(e,td)}function ME(e){return rd(e,td)}function dk(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===42||e===43||e===45||e===46||e===47||e===64||e===95}function DE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(An(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));ed(a)?t+=a:t+="%"+s,r+=2;continue}}if(td(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function LE(e){let t="";for(let r=0;r<e.length;r++){if(e[r]==="%"&&r+2<e.length){let n=e.slice(r+1,r+3);if(An(n)){t+="%"+n.toUpperCase(),r+=2;continue}}t+=escape(e[r])}return t}function VE(e){let t=[];if(e.userinfo!==void 0&&(t.push(uk(e.userinfo)),t.push("@")),e.host!==void 0){let r=e.host;if(!Qu(r)){let n=Xu(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=ck(r,!0),n=Xu(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=lk(r,!1)}t.push(r)}if(typeof e.port=="number"||typeof e.port=="string"){let r=String(e.port);if(!vE(r))throw new TypeError("URI port is malformed.");t.push(":"),t.push(r)}return t.length?t.join(""):void 0}pk.exports={nonSimpleDomain:PE,recomposeAuthority:VE,reescapeHostDelimiters:lk,normalizePercentEncoding:ck,normalizePathEncoding:NE,serializePathEncoding:RE,normalizeQueryFragmentEncoding:DE,encodeUserinfo:uk,encodeQuery:jE,encodeFragment:ME,escapePreservingEscapes:LE,removeDotSegments:ik,removeDotSegmentsRelative:OE,isIPv4:Qu,isUUID:kE,normalizeIPv6:Xu,stringArrayToHexStripped:_E}});var bk=B((B3,gk)=>{"use strict";var{isUUID:FE}=nd(),ZE=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,BE=["http","https","ws","wss","urn","urn:uuid"];function GE(e){return BE.indexOf(e)!==-1}function od(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S"):!1}function fk(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function mk(e){let t=String(e.scheme).toLowerCase()==="https";return(e.port===(t?443:80)||e.port==="")&&(e.port=void 0),e.path||(e.path="/"),e}function UE(e){return e.secure=od(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function qE(e){if((e.port===(od(e)?443:80)||e.port==="")&&(e.port=void 0),typeof e.secure=="boolean"&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){let t=e.resourceName.indexOf("?"),r=t===-1?e.resourceName:e.resourceName.slice(0,t);e.path=r&&r!=="/"?r:void 0,e.query=t===-1?void 0:e.resourceName.slice(t+1),e.resourceName=void 0}return e.fragment=void 0,e}function KE(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(ZE);if(r&&r[0]===e.path){let n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let o=`${n}:${t.nid||e.nid}`,s=sd(o);e.path=void 0,s&&(e=s.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e}function HE(e,t){if(e.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),o=`${r}:${t.nid||n}`,s=sd(o);s&&(e=s.serialize(e,t));let a=e,i=e.nss;return a.path=`${n||t.nid}:${i}`,t.skipEscape=!0,a}function WE(e,t){let r=e;return r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!FE(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function JE(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var hk={scheme:"http",domainHost:!0,parse:fk,serialize:mk},YE={scheme:"https",domainHost:hk.domainHost,parse:fk,serialize:mk},Di={scheme:"ws",domainHost:!0,parse:UE,serialize:qE},XE={scheme:"wss",domainHost:Di.domainHost,parse:Di.parse,serialize:Di.serialize},QE={scheme:"urn",parse:KE,serialize:HE,skipNormalize:!0},eA={scheme:"urn:uuid",parse:WE,serialize:JE,skipNormalize:!0},Li={http:hk,https:YE,ws:Di,wss:XE,urn:QE,"urn:uuid":eA};Object.setPrototypeOf(Li,null);function sd(e){return e&&(Li[e]||Li[e.toLowerCase()])||void 0}gk.exports={wsIsSecure:od,SCHEMES:Li,isValidSchemeName:GE,getSchemeHandler:sd}});var Tk=B((G3,Gi)=>{"use strict";var{normalizeIPv6:_k,removeDotSegments:Rs,removeDotSegmentsRelative:wk,recomposeAuthority:tA,normalizePercentEncoding:ad,normalizePathEncoding:rA,serializePathEncoding:yk,normalizeQueryFragmentEncoding:kk,encodeQuery:nA,encodeFragment:oA,reescapeHostDelimiters:sA,isIPv4:xk,nonSimpleDomain:aA}=nd(),{SCHEMES:Sk,getSchemeHandler:id}=bk(),Pk=/^[A-Za-z][A-Za-z0-9+.-]*$/u,$k="URI scheme is malformed.",Vi="URI host is malformed.",iA=/[\0-\x20"#/:<>?@[\\\]^`{|}\x7F]/u;function vk(e){let t=String(e);if(!Pk.test(t))throw new TypeError($k);return t}function lA(e,t){return typeof e=="string"?e=bA(e,t):typeof e=="object"&&(e=Zi(On(e,t),t)),e}function cA(e,t,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:s,malformedPercentEncoding:a,malformedSchemeSpecific:i,malformedHost:c,malformedScheme:l}=Fi(e,n),{parsed:u,malformedAuthorityOrPort:d,malformedPercentEncoding:f,malformedSchemeSpecific:h,malformedHost:b,malformedScheme:p}=Fi(t,n);if(s||d||a||f||i||h||c||b||l||p)throw new Error(o.error||u.error||"URI is malformed.");let m=Ek(o,u,n,!0),g=id(r&&r.scheme||m.scheme),v=m.host,_=v!==void 0&&v!==""&&(xk(v)||_k(v).isIPV6);if(Ok(m,r||{},g,_))throw new Error(Vi);Ak(m,r||{},g,_);let w=v&&v.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(v);if(m.error&&!w)throw new Error(m.error);return n.skipEscape=!0,On(m,n)}function Ek(e,t,r,n){let o={};if(n||(e=Zi(On(e,r),r),t=Zi(On(t,r),r)),r=r||{},!r.tolerant&&t.scheme)o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Rs(t.path||""),o.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=Rs(t.path||""),o.query=t.query;else{if(!t.path)o.path=e.path,t.query!==void 0?o.query=t.query:o.query=e.query;else{if(t.path[0]==="/")o.path=Rs(t.path);else{let s=e.userinfo!==void 0||e.host!==void 0||e.port!==void 0;s&&!e.path?o.path="/"+t.path:e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:o.path=t.path,o.path=e.scheme===void 0&&!s&&o.path[0]!=="/"?wk(o.path):Rs(o.path)}o.query=t.query}o.userinfo=e.userinfo,o.host=e.host,o.port=e.port}o.scheme=e.scheme}return o.fragment=t.fragment,o}function uA(e,t,r){let n=zk(e,r),o=zk(t,r);return n!==void 0&&o!==void 0&&n===o}function On(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),o=[];r.scheme&&(r.scheme=vk(r.scheme));let s=id(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let a=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,i=(r.scheme===void 0||n.reference==="suffix")&&!a,c=!n.skipEscape&&i;r.path!==void 0&&(n.skipEscape?r.path=ad(r.path):r.path=yk(r.path,c)),n.reference!=="suffix"&&r.scheme&&(r.scheme=vk(r.scheme),o.push(r.scheme,":"));let l=tA(r);if(l!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(l),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let u=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(u=i&&u[0]!=="/"?wk(u):Rs(u)),i&&(u=yk(u,!0)),l===void 0&&u[0]==="/"&&u[1]==="/"&&(u="/%2F"+u.slice(2)),o.push(u)}return r.query!==void 0&&o.push("?",nA(r.query)),r.fragment!==void 0&&o.push("#",oA(r.fragment)),o.join("")}var dA=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,pA=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,fA=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function mA(e,t){if(t[2]!==void 0&&e.path&&e.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof e.port=="number"&&(e.port<0||e.port>65535))return"URI port is malformed."}function Ns(e){if(e===void 0)return!1;let t=e.indexOf("%");for(;t!==-1;){if(t+2>=e.length||!/^[\da-f]{2}$/iu.test(e.slice(t+1,t+3)))return!0;t=e.indexOf("%",t+3)}return!1}function Bi(e){return e[0]==="["&&e[e.length-1]==="]"}function hA(e){let t=e[4];return Ns(e[3])||t!==void 0&&!Bi(t)&&Ns(t)||Ns(e[6])||Ns(e[7])||Ns(e[8])}function Ak(e,t,r,n){if(Ok(e,t,r,n))return e.error=e.error||Vi,!0;if(!t.unicodeSupport&&(!r||!r.unicodeSupport)&&e.host&&!Bi(e.host)&&(t.domainHost||r&&r.domainHost)&&n===!1&&aA(e.host)){let o;try{o=new URL("http://"+e.host)}catch(s){return e.error=e.error||"Host's domain name can not be converted to ASCII: "+s,!0}if(!gA(o))return e.error=e.error||Vi,!0;e.host=o.hostname}return!1}function Ok(e,t,r,n){return!!(e.host&&n===!1&&!Bi(e.host)&&(t.domainHost||r&&r.domainHost)&&iA.test(e.host))}function gA(e){return e.username===""&&e.password===""&&e.port===""&&e.pathname==="/"&&e.search===""&&e.hash===""&&e.hostname!==""}function Fi(e,t){let r=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,s=!1,a=!1,i=!1,c=!1,l=!1,u=!1;r.reference==="suffix"&&(r.scheme?e=r.scheme+":"+e:e="//"+e);let d=e.match(pA);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let f=e.match(fA);if(f!==null){let b=f[1],p=b.replace(/[\t\n\r]/g,"");p.length>=2&&(p.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):b.length!==p.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let h=e.match(dA);if(h){n.scheme=h[1],n.userinfo=h[3],n.host=h[4],n.port=parseInt(h[5],10),n.path=h[6]||"",n.query=h[7],n.fragment=h[8],n.scheme!==void 0&&(Pk.test(n.scheme)?n.scheme=n.scheme.toLowerCase():(n.error=n.error||$k,l=!0)),s=hA(h),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=h[5]);let b=mA(n,h);if(b!==void 0&&(n.error=n.error||b,o=!0),n.host)if(xk(n.host)===!1){let g=Bi(n.host),v=n.host.indexOf("[")!==-1||n.host.indexOf("]")!==-1,_=_k(n.host);u=_.isIPV6||_.isIPVFuture===!0,c=v&&(!g||_.error===!0),n.host=u?_.host:_.host.toLowerCase(),c&&(n.error=n.error||Vi,o=!0)}else u=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let p=id(r.scheme||n.scheme);if(c||(i=Ak(n,r,p,u)),e.indexOf("%")!==-1&&n.host!==void 0&&!c){let m=u?n.host:ad(n.host,!0);u||(m=ad(m.toLowerCase())),n.host=u||r.scheme!=="null"?sA(m,u):m}(!p||p&&!p.skipNormalize)&&(n.path&&(n.path=rA(n.path)),n.query&&(n.query=kk(n.query)),n.fragment&&(n.fragment=kk(n.fragment))),p&&p.parse&&(p.parse(n,r),p===Sk.urn&&n.nid===void 0&&(a=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:l}}function Zi(e,t){return Fi(e,t).parsed}function bA(e,t){return Ik(e,t).normalized}function Ik(e,t){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}=Fi(e,t);return{normalized:n||o||s||a||i?e:On(r,t),malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}}function zk(e,t){if(typeof e!="string"&&typeof e!="object")return;let r;try{r=typeof e=="string"?e:On(e,t)}catch{return}let{normalized:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:c}=Ik(r,t);return o||s||a||i||c?void 0:n}var ld={SCHEMES:Sk,normalize:lA,resolve:cA,resolveComponent:Ek,equal:uA,serialize:On,parse:Zi};Gi.exports=ld;Gi.exports.default=ld;Gi.exports.fastUri=ld});var Nk=B(cd=>{"use strict";Object.defineProperty(cd,"__esModule",{value:!0});var Ck=Tk();Ck.code='require("ajv/dist/runtime/uri").default';cd.default=Ck});var Zk=B(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.CodeGen=St.Name=St.nil=St.stringify=St.str=St._=St.KeywordCxt=void 0;var yA=Ts();Object.defineProperty(St,"KeywordCxt",{enumerable:!0,get:function(){return yA.KeywordCxt}});var mo=ge();Object.defineProperty(St,"_",{enumerable:!0,get:function(){return mo._}});Object.defineProperty(St,"str",{enumerable:!0,get:function(){return mo.str}});Object.defineProperty(St,"stringify",{enumerable:!0,get:function(){return mo.stringify}});Object.defineProperty(St,"nil",{enumerable:!0,get:function(){return mo.nil}});Object.defineProperty(St,"Name",{enumerable:!0,get:function(){return mo.Name}});Object.defineProperty(St,"CodeGen",{enumerable:!0,get:function(){return mo.CodeGen}});var kA=Ri(),Lk=Cs(),vA=Tu(),js=Mi(),zA=ge(),Ms=As(),Ui=Es(),dd=Ce(),Rk=ok(),_A=Nk(),Vk=(e,t)=>new RegExp(e,t);Vk.code="new RegExp";var wA=["removeAdditional","useDefaults","coerceTypes"],xA=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),SA={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."},PA={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},jk=200;function $A(e){var t,r,n,o,s,a,i,c,l,u,d,f,h,b,p,m,g,v,_,w,k,P,I,W,F;let G=e.strict,K=(t=e.code)===null||t===void 0?void 0:t.optimize,x=K===!0||K===void 0?1:K||0,$=(n=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:Vk,V=(o=e.uriResolver)!==null&&o!==void 0?o:_A.default;return{strictSchema:(a=(s=e.strictSchema)!==null&&s!==void 0?s:G)!==null&&a!==void 0?a:!0,strictNumbers:(c=(i=e.strictNumbers)!==null&&i!==void 0?i:G)!==null&&c!==void 0?c:!0,strictTypes:(u=(l=e.strictTypes)!==null&&l!==void 0?l:G)!==null&&u!==void 0?u:"log",strictTuples:(f=(d=e.strictTuples)!==null&&d!==void 0?d:G)!==null&&f!==void 0?f:"log",strictRequired:(b=(h=e.strictRequired)!==null&&h!==void 0?h:G)!==null&&b!==void 0?b:!1,code:e.code?{...e.code,optimize:x,regExp:$}:{optimize:x,regExp:$},loopRequired:(p=e.loopRequired)!==null&&p!==void 0?p:jk,loopEnum:(m=e.loopEnum)!==null&&m!==void 0?m:jk,meta:(g=e.meta)!==null&&g!==void 0?g:!0,messages:(v=e.messages)!==null&&v!==void 0?v:!0,inlineRefs:(_=e.inlineRefs)!==null&&_!==void 0?_:!0,schemaId:(w=e.schemaId)!==null&&w!==void 0?w:"$id",addUsedSchema:(k=e.addUsedSchema)!==null&&k!==void 0?k:!0,validateSchema:(P=e.validateSchema)!==null&&P!==void 0?P:!0,validateFormats:(I=e.validateFormats)!==null&&I!==void 0?I:!0,unicodeRegExp:(W=e.unicodeRegExp)!==null&&W!==void 0?W:!0,int32range:(F=e.int32range)!==null&&F!==void 0?F:!0,uriResolver:V}}var Ds=class{constructor(t={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,t=this.opts={...t,...$A(t)};let{es5:r,lines:n}=this.opts.code;this.scope=new zA.ValueScope({scope:{},prefixes:xA,es5:r,lines:n}),this.logger=CA(t.logger);let o=t.validateFormats;t.validateFormats=!1,this.RULES=(0,vA.getRules)(),Mk.call(this,SA,t,"NOT SUPPORTED"),Mk.call(this,PA,t,"DEPRECATED","warn"),this._metaOpts=IA.call(this),t.formats&&AA.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),t.keywords&&OA.call(this,t.keywords),typeof t.meta=="object"&&this.addMetaSchema(t.meta),EA.call(this),t.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:t,meta:r,schemaId:n}=this.opts,o=Rk;n==="id"&&(o={...Rk},o.id=o.$id,delete o.$id),r&&t&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:t,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof t=="object"?t[r]||t:void 0}validate(t,r){let n;if(typeof t=="string"){if(n=this.getSchema(t),!n)throw new Error(`no schema with key or ref "${t}"`)}else n=this.compile(t);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(t,r){let n=this._addSchema(t,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(t,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,t,r);async function o(u,d){await s.call(this,u.$schema);let f=this._addSchema(u,d);return f.validate||a.call(this,f)}async function s(u){u&&!this.getSchema(u)&&await o.call(this,{$ref:u},!0)}async function a(u){try{return this._compileSchemaEnv(u)}catch(d){if(!(d instanceof Lk.default))throw d;return i.call(this,d),await c.call(this,d.missingSchema),a.call(this,u)}}function i({missingSchema:u,missingRef:d}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${d} cannot be resolved`)}async function c(u){let d=await l.call(this,u);this.refs[u]||await s.call(this,d.$schema),this.refs[u]||this.addSchema(d,u,r)}async function l(u){let d=this._loading[u];if(d)return d;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(t,r,n,o=this.opts.validateSchema){if(Array.isArray(t)){for(let a of t)this.addSchema(a,void 0,n,o);return this}let s;if(typeof t=="object"){let{schemaId:a}=this.opts;if(s=t[a],s!==void 0&&typeof s!="string")throw new Error(`schema ${a} must be string`)}return r=(0,Ms.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(t,n,r,o,!0),this}addMetaSchema(t,r,n=this.opts.validateSchema){return this.addSchema(t,r,!0,n),this}validateSchema(t,r){if(typeof t=="boolean")return!0;let n;if(n=t.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,t);if(!o&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return o}getSchema(t){let r;for(;typeof(r=Dk.call(this,t))=="string";)t=r;if(r===void 0){let{schemaId:n}=this.opts,o=new js.SchemaEnv({schema:{},schemaId:n});if(r=js.resolveSchema.call(this,o,t),!r)return;this.refs[t]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(t){if(t instanceof RegExp)return this._removeAllSchemas(this.schemas,t),this._removeAllSchemas(this.refs,t),this;switch(typeof t){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=Dk.call(this,t);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[t],delete this.refs[t],this}case"object":{let r=t;this._cache.delete(r);let n=t[this.opts.schemaId];return n&&(n=(0,Ms.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(t){for(let r of t)this.addKeyword(r);return this}addKeyword(t,r){let n;if(typeof t=="string")n=t,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof t=="object"&&r===void 0){if(r=t,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(RA.call(this,n,r),!r)return(0,dd.eachItem)(n,s=>ud.call(this,s)),this;MA.call(this,r);let o={...r,type:(0,Ui.getJSONTypes)(r.type),schemaType:(0,Ui.getJSONTypes)(r.schemaType)};return(0,dd.eachItem)(n,o.type.length===0?s=>ud.call(this,s,o):s=>o.type.forEach(a=>ud.call(this,s,o,a))),this}getKeyword(t){let r=this.RULES.all[t];return typeof r=="object"?r.definition:!!r}removeKeyword(t){let{RULES:r}=this;delete r.keywords[t],delete r.all[t];for(let n of r.rules){let o=n.rules.findIndex(s=>s.keyword===t);o>=0&&n.rules.splice(o,1)}return this}addFormat(t,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[t]=r,this}errorsText(t=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!t||t.length===0?"No errors":t.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,s)=>o+r+s)}$dataMetaSchema(t,r){let n=this.RULES.all;t=JSON.parse(JSON.stringify(t));for(let o of r){let s=o.split("/").slice(1),a=t;for(let i of s)a=a[i];for(let i in n){let c=n[i];if(typeof c!="object")continue;let{$data:l}=c.definition,u=a[i];l&&u&&(a[i]=Fk(u))}}return t}_removeAllSchemas(t,r){for(let n in t){let o=t[n];(!r||r.test(n))&&(typeof o=="string"?delete t[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete t[n]))}}_addSchema(t,r,n,o=this.opts.validateSchema,s=this.opts.addUsedSchema){let a,{schemaId:i}=this.opts;if(typeof t=="object")a=t[i];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof t!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(t);if(c!==void 0)return c;n=(0,Ms.normalizeId)(a||n);let l=Ms.getSchemaRefs.call(this,t,n);return c=new js.SchemaEnv({schema:t,schemaId:i,meta:r,baseId:n,localRefs:l}),this._cache.set(c.schema,c),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),o&&this.validateSchema(t,!0),c}_checkUnique(t){if(this.schemas[t]||this.refs[t])throw new Error(`schema with key or id "${t}" already exists`)}_compileSchemaEnv(t){if(t.meta?this._compileMetaSchema(t):js.compileSchema.call(this,t),!t.validate)throw new Error("ajv implementation error");return t.validate}_compileMetaSchema(t){let r=this.opts;this.opts=this._metaOpts;try{js.compileSchema.call(this,t)}finally{this.opts=r}}};Ds.ValidationError=kA.default;Ds.MissingRefError=Lk.default;St.default=Ds;function Mk(e,t,r,n="error"){for(let o in e){let s=o;s in t&&this.logger[n](`${r}: option ${o}. ${e[s]}`)}}function Dk(e){return e=(0,Ms.normalizeId)(e),this.schemas[e]||this.refs[e]}function EA(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function AA(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}function OA(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}function IA(){let e={...this.opts};for(let t of wA)delete e[t];return e}var TA={log(){},warn(){},error(){}};function CA(e){if(e===!1)return TA;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}var NA=/^[a-z_$][a-z0-9_$:-]*$/i;function RA(e,t){let{RULES:r}=this;if((0,dd.eachItem)(e,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!NA.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!t&&t.$data&&!("code"in t||"validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function ud(e,t,r){var n;let o=t?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,a=o?s.post:s.rules.find(({type:c})=>c===r);if(a||(a={type:r,rules:[]},s.rules.push(a)),s.keywords[e]=!0,!t)return;let i={keyword:e,definition:{...t,type:(0,Ui.getJSONTypes)(t.type),schemaType:(0,Ui.getJSONTypes)(t.schemaType)}};t.before?jA.call(this,a,i,t.before):a.rules.push(i),s.all[e]=i,(n=t.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function jA(e,t,r){let n=e.rules.findIndex(o=>o.keyword===r);n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function MA(e){let{metaSchema:t}=e;t!==void 0&&(e.$data&&this.opts.$data&&(t=Fk(t)),e.validateSchema=this.compile(t,!0))}var DA={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Fk(e){return{anyOf:[e,DA]}}});var Bk=B(pd=>{"use strict";Object.defineProperty(pd,"__esModule",{value:!0});var LA={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};pd.default=LA});var Kk=B(In=>{"use strict";Object.defineProperty(In,"__esModule",{value:!0});In.callRef=In.getValidate=void 0;var VA=Cs(),Gk=rr(),Bt=ge(),ho=Zr(),Uk=Mi(),qi=Ce(),FA={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:n}=e,{baseId:o,schemaEnv:s,validateName:a,opts:i,self:c}=n,{root:l}=s;if((r==="#"||r==="#/")&&o===l.baseId)return d();let u=Uk.resolveRef.call(c,l,o,r);if(u===void 0)throw new VA.default(n.opts.uriResolver,o,r);if(u instanceof Uk.SchemaEnv)return f(u);return h(u);function d(){if(s===l)return Ki(e,a,s,s.$async);let b=t.scopeValue("root",{ref:l});return Ki(e,(0,Bt._)`${b}.validate`,l,l.$async)}function f(b){let p=qk(e,b);Ki(e,p,b,b.$async)}function h(b){let p=t.scopeValue("schema",i.code.source===!0?{ref:b,code:(0,Bt.stringify)(b)}:{ref:b}),m=t.name("valid"),g=e.subschema({schema:b,dataTypes:[],schemaPath:Bt.nil,topSchemaRef:p,errSchemaPath:r},m);e.mergeEvaluated(g),e.ok(m)}}};function qk(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):(0,Bt._)`${r.scopeValue("wrapper",{ref:t})}.validate`}In.getValidate=qk;function Ki(e,t,r,n){let{gen:o,it:s}=e,{allErrors:a,schemaEnv:i,opts:c}=s,l=c.passContext?ho.default.this:Bt.nil;n?u():d();function u(){if(!i.$async)throw new Error("async schema referenced by sync schema");let b=o.let("valid");o.try(()=>{o.code((0,Bt._)`await ${(0,Gk.callValidateCode)(e,t,l)}`),h(t),a||o.assign(b,!0)},p=>{o.if((0,Bt._)`!(${p} instanceof ${s.ValidationError})`,()=>o.throw(p)),f(p),a||o.assign(b,!1)}),e.ok(b)}function d(){e.result((0,Gk.callValidateCode)(e,t,l),()=>h(t),()=>f(t))}function f(b){let p=(0,Bt._)`${b}.errors`;o.assign(ho.default.vErrors,(0,Bt._)`${ho.default.vErrors} === null ? ${p} : ${ho.default.vErrors}.concat(${p})`),o.assign(ho.default.errors,(0,Bt._)`${ho.default.vErrors}.length`)}function h(b){var p;if(!s.opts.unevaluated)return;let m=(p=r?.validate)===null||p===void 0?void 0:p.evaluated;if(s.props!==!0)if(m&&!m.dynamicProps)m.props!==void 0&&(s.props=qi.mergeEvaluated.props(o,m.props,s.props));else{let g=o.var("props",(0,Bt._)`${b}.evaluated.props`);s.props=qi.mergeEvaluated.props(o,g,s.props,Bt.Name)}if(s.items!==!0)if(m&&!m.dynamicItems)m.items!==void 0&&(s.items=qi.mergeEvaluated.items(o,m.items,s.items));else{let g=o.var("items",(0,Bt._)`${b}.evaluated.items`);s.items=qi.mergeEvaluated.items(o,g,s.items,Bt.Name)}}}In.callRef=Ki;In.default=FA});var Hk=B(fd=>{"use strict";Object.defineProperty(fd,"__esModule",{value:!0});var ZA=Bk(),BA=Kk(),GA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",ZA.default,BA.default];fd.default=GA});var Wk=B(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});var Hi=ge(),dn=Hi.operators,Wi={maximum:{okStr:"<=",ok:dn.LTE,fail:dn.GT},minimum:{okStr:">=",ok:dn.GTE,fail:dn.LT},exclusiveMaximum:{okStr:"<",ok:dn.LT,fail:dn.GTE},exclusiveMinimum:{okStr:">",ok:dn.GT,fail:dn.LTE}},UA={message:({keyword:e,schemaCode:t})=>(0,Hi.str)`must be ${Wi[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,Hi._)`{comparison: ${Wi[e].okStr}, limit: ${t}}`},qA={keyword:Object.keys(Wi),type:"number",schemaType:"number",$data:!0,error:UA,code(e){let{keyword:t,data:r,schemaCode:n}=e;e.fail$data((0,Hi._)`${r} ${Wi[t].fail} ${n} || isNaN(${r})`)}};md.default=qA});var Jk=B(hd=>{"use strict";Object.defineProperty(hd,"__esModule",{value:!0});var Ls=ge(),KA={message:({schemaCode:e})=>(0,Ls.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Ls._)`{multipleOf: ${e}}`},HA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:KA,code(e){let{gen:t,data:r,schemaCode:n,it:o}=e,s=o.opts.multipleOfPrecision,a=t.let("res"),i=s?(0,Ls._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${s}`:(0,Ls._)`${a} !== parseInt(${a})`;e.fail$data((0,Ls._)`(${n} === 0 || (${a} = ${r}/${n}, ${i}))`)}};hd.default=HA});var Xk=B(gd=>{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});function Yk(e){let t=e.length,r=0,n=0,o;for(;n<t;)r++,o=e.charCodeAt(n++),o>=55296&&o<=56319&&n<t&&(o=e.charCodeAt(n),(o&64512)===56320&&n++);return r}gd.default=Yk;Yk.code='require("ajv/dist/runtime/ucs2length").default'});var Qk=B(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});var Tn=ge(),WA=Ce(),JA=Xk(),YA={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return(0,Tn.str)`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>(0,Tn._)`{limit: ${e}}`},XA={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:YA,code(e){let{keyword:t,data:r,schemaCode:n,it:o}=e,s=t==="maxLength"?Tn.operators.GT:Tn.operators.LT,a=o.opts.unicode===!1?(0,Tn._)`${r}.length`:(0,Tn._)`${(0,WA.useFunc)(e.gen,JA.default)}(${r})`;e.fail$data((0,Tn._)`${a} ${s} ${n}`)}};bd.default=XA});var e0=B(yd=>{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});var QA=rr(),eO=Ce(),go=ge(),tO={message:({schemaCode:e})=>(0,go.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,go._)`{pattern: ${e}}`},rO={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:tO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e,i=a.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=a.opts.code,l=c.code==="new RegExp"?(0,go._)`new RegExp`:(0,eO.useFunc)(t,c),u=t.let("valid");t.try(()=>t.assign(u,(0,go._)`${l}(${s}, ${i}).test(${r})`),()=>t.assign(u,!1)),e.fail$data((0,go._)`!${u}`)}else{let c=(0,QA.usePattern)(e,o);e.fail$data((0,go._)`!${c}.test(${r})`)}}};yd.default=rO});var t0=B(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});var Vs=ge(),nO={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return(0,Vs.str)`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>(0,Vs._)`{limit: ${e}}`},oO={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:nO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxProperties"?Vs.operators.GT:Vs.operators.LT;e.fail$data((0,Vs._)`Object.keys(${r}).length ${o} ${n}`)}};kd.default=oO});var r0=B(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var Fs=rr(),Zs=ge(),sO=Ce(),aO={message:({params:{missingProperty:e}})=>(0,Zs.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,Zs._)`{missingProperty: ${e}}`},iO={keyword:"required",type:"object",schemaType:"array",$data:!0,error:aO,code(e){let{gen:t,schema:r,schemaCode:n,data:o,$data:s,it:a}=e,{opts:i}=a;if(!s&&r.length===0)return;let c=r.length>=i.loopRequired;if(a.allErrors?l():u(),i.strictRequired){let h=e.parentSchema.properties,{definedProperties:b}=e.it;for(let p of r)if(h?.[p]===void 0&&!b.has(p)){let m=a.schemaEnv.baseId+a.errSchemaPath,g=`required property "${p}" is not defined at "${m}" (strictRequired)`;(0,sO.checkStrictMode)(a,g,a.opts.strictRequired)}}function l(){if(c||s)e.block$data(Zs.nil,d);else for(let h of r)(0,Fs.checkReportMissingProp)(e,h)}function u(){let h=t.let("missing");if(c||s){let b=t.let("valid",!0);e.block$data(b,()=>f(h,b)),e.ok(b)}else t.if((0,Fs.checkMissingProp)(e,r,h)),(0,Fs.reportMissingProp)(e,h),t.else()}function d(){t.forOf("prop",n,h=>{e.setParams({missingProperty:h}),t.if((0,Fs.noPropertyInData)(t,o,h,i.ownProperties),()=>e.error())})}function f(h,b){e.setParams({missingProperty:h}),t.forOf(h,n,()=>{t.assign(b,(0,Fs.propertyInData)(t,o,h,i.ownProperties)),t.if((0,Zs.not)(b),()=>{e.error(),t.break()})},Zs.nil)}}};vd.default=iO});var n0=B(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});var Bs=ge(),lO={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return(0,Bs.str)`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>(0,Bs._)`{limit: ${e}}`},cO={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:lO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxItems"?Bs.operators.GT:Bs.operators.LT;e.fail$data((0,Bs._)`${r}.length ${o} ${n}`)}};zd.default=cO});var Ji=B(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});var o0=Vu();o0.code='require("ajv/dist/runtime/equal").default';_d.default=o0});var s0=B(xd=>{"use strict";Object.defineProperty(xd,"__esModule",{value:!0});var wd=Es(),Pt=ge(),uO=Ce(),dO=Ji(),pO={message:({params:{i:e,j:t}})=>(0,Pt.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,Pt._)`{i: ${e}, j: ${t}}`},fO={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:pO,code(e){let{gen:t,data:r,$data:n,schema:o,parentSchema:s,schemaCode:a,it:i}=e;if(!n&&!o)return;let c=t.let("valid"),l=s.items?(0,wd.getSchemaTypes)(s.items):[];e.block$data(c,u,(0,Pt._)`${a} === false`),e.ok(c);function u(){let b=t.let("i",(0,Pt._)`${r}.length`),p=t.let("j");e.setParams({i:b,j:p}),t.assign(c,!0),t.if((0,Pt._)`${b} > 1`,()=>(d()?f:h)(b,p))}function d(){return l.length>0&&!l.some(b=>b==="object"||b==="array")}function f(b,p){let m=t.name("item"),g=(0,wd.checkDataTypes)(l,m,i.opts.strictNumbers,wd.DataType.Wrong),v=t.const("indices",(0,Pt._)`{}`);t.for((0,Pt._)`;${b}--;`,()=>{t.let(m,(0,Pt._)`${r}[${b}]`),t.if(g,(0,Pt._)`continue`),l.length>1&&t.if((0,Pt._)`typeof ${m} == "string"`,(0,Pt._)`${m} += "_"`),t.if((0,Pt._)`typeof ${v}[${m}] == "number"`,()=>{t.assign(p,(0,Pt._)`${v}[${m}]`),e.error(),t.assign(c,!1).break()}).code((0,Pt._)`${v}[${m}] = ${b}`)})}function h(b,p){let m=(0,uO.useFunc)(t,dO.default),g=t.name("outer");t.label(g).for((0,Pt._)`;${b}--;`,()=>t.for((0,Pt._)`${p} = ${b}; ${p}--;`,()=>t.if((0,Pt._)`${m}(${r}[${b}], ${r}[${p}])`,()=>{e.error(),t.assign(c,!1).break(g)})))}}};xd.default=fO});var a0=B(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});var Sd=ge(),mO=Ce(),hO=Ji(),gO={message:"must be equal to constant",params:({schemaCode:e})=>(0,Sd._)`{allowedValue: ${e}}`},bO={keyword:"const",$data:!0,error:gO,code(e){let{gen:t,data:r,$data:n,schemaCode:o,schema:s}=e;n||s&&typeof s=="object"?e.fail$data((0,Sd._)`!${(0,mO.useFunc)(t,hO.default)}(${r}, ${o})`):e.fail((0,Sd._)`${s} !== ${r}`)}};Pd.default=bO});var i0=B($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});var Gs=ge(),yO=Ce(),kO=Ji(),vO={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Gs._)`{allowedValues: ${e}}`},zO={keyword:"enum",schemaType:"array",$data:!0,error:vO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let i=o.length>=a.opts.loopEnum,c,l=()=>c??(c=(0,yO.useFunc)(t,kO.default)),u;if(i||n)u=t.let("valid"),e.block$data(u,d);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let h=t.const("vSchema",s);u=(0,Gs.or)(...o.map((b,p)=>f(h,p)))}e.pass(u);function d(){t.assign(u,!1),t.forOf("v",s,h=>t.if((0,Gs._)`${l()}(${r}, ${h})`,()=>t.assign(u,!0).break()))}function f(h,b){let p=o[b];return typeof p=="object"&&p!==null?(0,Gs._)`${l()}(${r}, ${h}[${b}])`:(0,Gs._)`${r} === ${p}`}}};$d.default=zO});var l0=B(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});var _O=Wk(),wO=Jk(),xO=Qk(),SO=e0(),PO=t0(),$O=r0(),EO=n0(),AO=s0(),OO=a0(),IO=i0(),TO=[_O.default,wO.default,xO.default,SO.default,PO.default,$O.default,EO.default,AO.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},OO.default,IO.default];Ed.default=TO});var Od=B(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.validateAdditionalItems=void 0;var Cn=ge(),Ad=Ce(),CO={message:({params:{len:e}})=>(0,Cn.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Cn._)`{limit: ${e}}`},NO={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:CO,code(e){let{parentSchema:t,it:r}=e,{items:n}=t;if(!Array.isArray(n)){(0,Ad.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}c0(e,n)}};function c0(e,t){let{gen:r,schema:n,data:o,keyword:s,it:a}=e;a.items=!0;let i=r.const("len",(0,Cn._)`${o}.length`);if(n===!1)e.setParams({len:t.length}),e.pass((0,Cn._)`${i} <= ${t.length}`);else if(typeof n=="object"&&!(0,Ad.alwaysValidSchema)(a,n)){let l=r.var("valid",(0,Cn._)`${i} <= ${t.length}`);r.if((0,Cn.not)(l),()=>c(l)),e.ok(l)}function c(l){r.forRange("i",t.length,i,u=>{e.subschema({keyword:s,dataProp:u,dataPropType:Ad.Type.Num},l),a.allErrors||r.if((0,Cn.not)(l),()=>r.break())})}}Us.validateAdditionalItems=c0;Us.default=NO});var Id=B(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.validateTuple=void 0;var u0=ge(),Yi=Ce(),RO=rr(),jO={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return d0(e,"additionalItems",t);r.items=!0,!(0,Yi.alwaysValidSchema)(r,t)&&e.ok((0,RO.validateArray)(e))}};function d0(e,t,r=e.schema){let{gen:n,parentSchema:o,data:s,keyword:a,it:i}=e;u(o),i.opts.unevaluated&&r.length&&i.items!==!0&&(i.items=Yi.mergeEvaluated.items(n,r.length,i.items));let c=n.name("valid"),l=n.const("len",(0,u0._)`${s}.length`);r.forEach((d,f)=>{(0,Yi.alwaysValidSchema)(i,d)||(n.if((0,u0._)`${l} > ${f}`,()=>e.subschema({keyword:a,schemaProp:f,dataProp:f},c)),e.ok(c))});function u(d){let{opts:f,errSchemaPath:h}=i,b=r.length,p=b===d.minItems&&(b===d.maxItems||d[t]===!1);if(f.strictTuples&&!p){let m=`"${a}" is ${b}-tuple, but minItems or maxItems/${t} are not specified or different at path "${h}"`;(0,Yi.checkStrictMode)(i,m,f.strictTuples)}}}qs.validateTuple=d0;qs.default=jO});var p0=B(Td=>{"use strict";Object.defineProperty(Td,"__esModule",{value:!0});var MO=Id(),DO={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,MO.validateTuple)(e,"items")};Td.default=DO});var m0=B(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});var f0=ge(),LO=Ce(),VO=rr(),FO=Od(),ZO={message:({params:{len:e}})=>(0,f0.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,f0._)`{limit: ${e}}`},BO={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:ZO,code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:o}=r;n.items=!0,!(0,LO.alwaysValidSchema)(n,t)&&(o?(0,FO.validateAdditionalItems)(e,o):e.ok((0,VO.validateArray)(e)))}};Cd.default=BO});var h0=B(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});var or=ge(),Xi=Ce(),GO={message:({params:{min:e,max:t}})=>t===void 0?(0,or.str)`must contain at least ${e} valid item(s)`:(0,or.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,or._)`{minContains: ${e}}`:(0,or._)`{minContains: ${e}, maxContains: ${t}}`},UO={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:GO,code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e,a,i,{minContains:c,maxContains:l}=n;s.opts.next?(a=c===void 0?1:c,i=l):a=1;let u=t.const("len",(0,or._)`${o}.length`);if(e.setParams({min:a,max:i}),i===void 0&&a===0){(0,Xi.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(i!==void 0&&a>i){(0,Xi.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,Xi.alwaysValidSchema)(s,r)){let p=(0,or._)`${u} >= ${a}`;i!==void 0&&(p=(0,or._)`${p} && ${u} <= ${i}`),e.pass(p);return}s.items=!0;let d=t.name("valid");i===void 0&&a===1?h(d,()=>t.if(d,()=>t.break())):a===0?(t.let(d,!0),i!==void 0&&t.if((0,or._)`${o}.length > 0`,f)):(t.let(d,!1),f()),e.result(d,()=>e.reset());function f(){let p=t.name("_valid"),m=t.let("count",0);h(p,()=>t.if(p,()=>b(m)))}function h(p,m){t.forRange("i",0,u,g=>{e.subschema({keyword:"contains",dataProp:g,dataPropType:Xi.Type.Num,compositeRule:!0},p),m()})}function b(p){t.code((0,or._)`${p}++`),i===void 0?t.if((0,or._)`${p} >= ${a}`,()=>t.assign(d,!0).break()):(t.if((0,or._)`${p} > ${i}`,()=>t.assign(d,!1).break()),a===1?t.assign(d,!0):t.if((0,or._)`${p} >= ${a}`,()=>t.assign(d,!0)))}}};Nd.default=UO});var y0=B(Pr=>{"use strict";Object.defineProperty(Pr,"__esModule",{value:!0});Pr.validateSchemaDeps=Pr.validatePropertyDeps=Pr.error=void 0;var Rd=ge(),qO=Ce(),Ks=rr();Pr.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let n=t===1?"property":"properties";return(0,Rd.str)`must have ${n} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:n}})=>(0,Rd._)`{property: ${e},
3
+ var K_=Object.create;var Bl=Object.defineProperty;var H_=Object.getOwnPropertyDescriptor;var W_=Object.getOwnPropertyNames;var J_=Object.getPrototypeOf,Y_=Object.prototype.hasOwnProperty;var ut=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),pf=(e,t)=>{for(var r in t)Bl(e,r,{get:t[r],enumerable:!0})},X_=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W_(t))!Y_.call(e,o)&&o!==r&&Bl(e,o,{get:()=>t[o],enumerable:!(n=H_(t,o))||n.enumerable});return e};var kn=(e,t,r)=>(r=e!=null?K_(J_(e)):{},X_(t||!e||!e.__esModule?Bl(r,"default",{value:e,enumerable:!0}):r,e));var _s=U(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.regexpCode=je.getEsmExportName=je.getProperty=je.safeStringify=je.stringify=je.strConcat=je.addCodeArg=je.str=je._=je.nil=je._Code=je.Name=je.IDENTIFIER=je._CodeOrName=void 0;var vs=class{};je._CodeOrName=vs;je.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var wn=class extends vs{constructor(t){if(super(),!je.IDENTIFIER.test(t))throw new Error("CodeGen: name must be a valid identifier");this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};je.Name=wn;var tr=class extends vs{constructor(t){super(),this._items=typeof t=="string"?[t]:t}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let t=this._items[0];return t===""||t==='""'}get str(){var t;return(t=this._str)!==null&&t!==void 0?t:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var t;return(t=this._names)!==null&&t!==void 0?t:this._names=this._items.reduce((r,n)=>(n instanceof wn&&(r[n.str]=(r[n.str]||0)+1),r),{})}};je._Code=tr;je.nil=new tr("");function ay(e,...t){let r=[e[0]],n=0;for(;n<t.length;)fu(r,t[n]),r.push(e[++n]);return new tr(r)}je._=ay;var pu=new tr("+");function iy(e,...t){let r=[zs(e[0])],n=0;for(;n<t.length;)r.push(pu),fu(r,t[n]),r.push(pu,zs(e[++n]));return cP(r),new tr(r)}je.str=iy;function fu(e,t){t instanceof tr?e.push(...t._items):t instanceof wn?e.push(t):e.push(pP(t))}je.addCodeArg=fu;function cP(e){let t=1;for(;t<e.length-1;){if(e[t]===pu){let r=uP(e[t-1],e[t+1]);if(r!==void 0){e.splice(t-1,3,r);continue}e[t++]="+"}t++}}function uP(e,t){if(t==='""')return e;if(e==='""')return t;if(typeof e=="string")return t instanceof wn||e[e.length-1]!=='"'?void 0:typeof t!="string"?`${e.slice(0,-1)}${t}"`:t[0]==='"'?e.slice(0,-1)+t.slice(1):void 0;if(typeof t=="string"&&t[0]==='"'&&!(e instanceof wn))return`"${e}${t.slice(1)}`}function dP(e,t){return t.emptyStr()?e:e.emptyStr()?t:iy`${e}${t}`}je.strConcat=dP;function pP(e){return typeof e=="number"||typeof e=="boolean"||e===null?e:zs(Array.isArray(e)?e.join(","):e)}function fP(e){return new tr(zs(e))}je.stringify=fP;function zs(e){return JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}je.safeStringify=zs;function mP(e){return typeof e=="string"&&je.IDENTIFIER.test(e)?new tr(`.${e}`):ay`[${e}]`}je.getProperty=mP;function hP(e){if(typeof e=="string"&&je.IDENTIFIER.test(e))return new tr(`${e}`);throw new Error(`CodeGen: invalid export name: ${e}, use explicit $id name mapping`)}je.getEsmExportName=hP;function gP(e){return new tr(e.toString())}je.regexpCode=gP});var gu=U(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.ValueScope=Vt.ValueScopeName=Vt.Scope=Vt.varKinds=Vt.UsedValueState=void 0;var Lt=_s(),mu=class extends Error{constructor(t){super(`CodeGen: "code" for ${t} not defined`),this.value=t.value}},Pi;(function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"})(Pi||(Vt.UsedValueState=Pi={}));Vt.varKinds={const:new Lt.Name("const"),let:new Lt.Name("let"),var:new Lt.Name("var")};var $i=class{constructor({prefixes:t,parent:r}={}){this._names={},this._prefixes=t,this._parent=r}toName(t){return t instanceof Lt.Name?t:this.name(t)}name(t){return new Lt.Name(this._newName(t))}_newName(t){let r=this._names[t]||this._nameGroup(t);return`${t}${r.index++}`}_nameGroup(t){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(t)||this._prefixes&&!this._prefixes.has(t))throw new Error(`CodeGen: prefix "${t}" is not allowed in this scope`);return this._names[t]={prefix:t,index:0}}};Vt.Scope=$i;var Ei=class extends Lt.Name{constructor(t,r){super(r),this.prefix=t}setValue(t,{property:r,itemIndex:n}){this.value=t,this.scopePath=(0,Lt._)`.${new Lt.Name(r)}[${n}]`}};Vt.ValueScopeName=Ei;var bP=(0,Lt._)`\n`,hu=class extends $i{constructor(t){super(t),this._values={},this._scope=t.scope,this.opts={...t,_n:t.lines?bP:Lt.nil}}get(){return this._scope}name(t){return new Ei(t,this._newName(t))}value(t,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let o=this.toName(t),{prefix:s}=o,a=(n=r.key)!==null&&n!==void 0?n:r.ref,i=this._values[s];if(i){let u=i.get(a);if(u)return u}else i=this._values[s]=new Map;i.set(a,o);let l=this._scope[s]||(this._scope[s]=[]),c=l.length;return l[c]=r.ref,o.setValue(r,{property:s,itemIndex:c}),o}getValue(t,r){let n=this._values[t];if(n)return n.get(r)}scopeRefs(t,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,Lt._)`${t}${n.scopePath}`})}scopeCode(t=this._values,r,n){return this._reduceValues(t,o=>{if(o.value===void 0)throw new Error(`CodeGen: name "${o}" has no value`);return o.value.code},r,n)}_reduceValues(t,r,n={},o){let s=Lt.nil;for(let a in t){let i=t[a];if(!i)continue;let l=n[a]=n[a]||new Map;i.forEach(c=>{if(l.has(c))return;l.set(c,Pi.Started);let u=r(c);if(u){let d=this.opts.es5?Vt.varKinds.var:Vt.varKinds.const;s=(0,Lt._)`${s}${d} ${c} = ${u};${this.opts._n}`}else if(u=o?.(c))s=(0,Lt._)`${s}${u}${this.opts._n}`;else throw new mu(c);l.set(c,Pi.Completed)})}return s}};Vt.ValueScope=hu});var be=U(ke=>{"use strict";Object.defineProperty(ke,"__esModule",{value:!0});ke.or=ke.and=ke.not=ke.CodeGen=ke.operators=ke.varKinds=ke.ValueScopeName=ke.ValueScope=ke.Scope=ke.Name=ke.regexpCode=ke.stringify=ke.getProperty=ke.nil=ke.strConcat=ke.str=ke._=void 0;var Te=_s(),pr=gu(),sn=_s();Object.defineProperty(ke,"_",{enumerable:!0,get:function(){return sn._}});Object.defineProperty(ke,"str",{enumerable:!0,get:function(){return sn.str}});Object.defineProperty(ke,"strConcat",{enumerable:!0,get:function(){return sn.strConcat}});Object.defineProperty(ke,"nil",{enumerable:!0,get:function(){return sn.nil}});Object.defineProperty(ke,"getProperty",{enumerable:!0,get:function(){return sn.getProperty}});Object.defineProperty(ke,"stringify",{enumerable:!0,get:function(){return sn.stringify}});Object.defineProperty(ke,"regexpCode",{enumerable:!0,get:function(){return sn.regexpCode}});Object.defineProperty(ke,"Name",{enumerable:!0,get:function(){return sn.Name}});var Ti=gu();Object.defineProperty(ke,"Scope",{enumerable:!0,get:function(){return Ti.Scope}});Object.defineProperty(ke,"ValueScope",{enumerable:!0,get:function(){return Ti.ValueScope}});Object.defineProperty(ke,"ValueScopeName",{enumerable:!0,get:function(){return Ti.ValueScopeName}});Object.defineProperty(ke,"varKinds",{enumerable:!0,get:function(){return Ti.varKinds}});ke.operators={GT:new Te._Code(">"),GTE:new Te._Code(">="),LT:new Te._Code("<"),LTE:new Te._Code("<="),EQ:new Te._Code("==="),NEQ:new Te._Code("!=="),NOT:new Te._Code("!"),OR:new Te._Code("||"),AND:new Te._Code("&&"),ADD:new Te._Code("+")};var Fr=class{optimizeNodes(){return this}optimizeNames(t,r){return this}},bu=class extends Fr{constructor(t,r,n){super(),this.varKind=t,this.name=r,this.rhs=n}render({es5:t,_n:r}){let n=t?pr.varKinds.var:this.varKind,o=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${o};`+r}optimizeNames(t,r){if(t[this.name.str])return this.rhs&&(this.rhs=io(this.rhs,t,r)),this}get names(){return this.rhs instanceof Te._CodeOrName?this.rhs.names:{}}},Ai=class extends Fr{constructor(t,r,n){super(),this.lhs=t,this.rhs=r,this.sideEffects=n}render({_n:t}){return`${this.lhs} = ${this.rhs};`+t}optimizeNames(t,r){if(!(this.lhs instanceof Te.Name&&!t[this.lhs.str]&&!this.sideEffects))return this.rhs=io(this.rhs,t,r),this}get names(){let t=this.lhs instanceof Te.Name?{}:{...this.lhs.names};return Ii(t,this.rhs)}},yu=class extends Ai{constructor(t,r,n,o){super(t,n,o),this.op=r}render({_n:t}){return`${this.lhs} ${this.op}= ${this.rhs};`+t}},ku=class extends Fr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`${this.label}:`+t}},vu=class extends Fr{constructor(t){super(),this.label=t,this.names={}}render({_n:t}){return`break${this.label?` ${this.label}`:""};`+t}},zu=class extends Fr{constructor(t){super(),this.error=t}render({_n:t}){return`throw ${this.error};`+t}get names(){return this.error.names}},_u=class extends Fr{constructor(t){super(),this.code=t}render({_n:t}){return`${this.code};`+t}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(t,r){return this.code=io(this.code,t,r),this}get names(){return this.code instanceof Te._CodeOrName?this.code.names:{}}},ws=class extends Fr{constructor(t=[]){super(),this.nodes=t}render(t){return this.nodes.reduce((r,n)=>r+n.render(t),"")}optimizeNodes(){let{nodes:t}=this,r=t.length;for(;r--;){let n=t[r].optimizeNodes();Array.isArray(n)?t.splice(r,1,...n):n?t[r]=n:t.splice(r,1)}return t.length>0?this:void 0}optimizeNames(t,r){let{nodes:n}=this,o=n.length;for(;o--;){let s=n[o];s.optimizeNames(t,r)||(yP(t,s.names),n.splice(o,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((t,r)=>Pn(t,r.names),{})}},Zr=class extends ws{render(t){return"{"+t._n+super.render(t)+"}"+t._n}},wu=class extends ws{},ao=class extends Zr{};ao.kind="else";var xn=class e extends Zr{constructor(t,r){super(r),this.condition=t}render(t){let r=`if(${this.condition})`+super.render(t);return this.else&&(r+="else "+this.else.render(t)),r}optimizeNodes(){super.optimizeNodes();let t=this.condition;if(t===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new ao(n):n}if(r)return t===!1?r instanceof e?r:r.nodes:this.nodes.length?this:new e(ly(t),r instanceof e?[r]:r.nodes);if(!(t===!1||!this.nodes.length))return this}optimizeNames(t,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(t,r),!!(super.optimizeNames(t,r)||this.else))return this.condition=io(this.condition,t,r),this}get names(){let t=super.names;return Ii(t,this.condition),this.else&&Pn(t,this.else.names),t}};xn.kind="if";var Sn=class extends Zr{};Sn.kind="for";var xu=class extends Sn{constructor(t){super(),this.iteration=t}render(t){return`for(${this.iteration})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iteration=io(this.iteration,t,r),this}get names(){return Pn(super.names,this.iteration.names)}},Su=class extends Sn{constructor(t,r,n,o){super(),this.varKind=t,this.name=r,this.from=n,this.to=o}render(t){let r=t.es5?pr.varKinds.var:this.varKind,{name:n,from:o,to:s}=this;return`for(${r} ${n}=${o}; ${n}<${s}; ${n}++)`+super.render(t)}get names(){let t=Ii(super.names,this.from);return Ii(t,this.to)}},Oi=class extends Sn{constructor(t,r,n,o){super(),this.loop=t,this.varKind=r,this.name=n,this.iterable=o}render(t){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(t)}optimizeNames(t,r){if(super.optimizeNames(t,r))return this.iterable=io(this.iterable,t,r),this}get names(){return Pn(super.names,this.iterable.names)}},xs=class extends Zr{constructor(t,r,n){super(),this.name=t,this.args=r,this.async=n}render(t){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(t)}};xs.kind="func";var Ss=class extends ws{render(t){return"return "+super.render(t)}};Ss.kind="return";var Pu=class extends Zr{render(t){let r="try"+super.render(t);return this.catch&&(r+=this.catch.render(t)),this.finally&&(r+=this.finally.render(t)),r}optimizeNodes(){var t,r;return super.optimizeNodes(),(t=this.catch)===null||t===void 0||t.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(t,r){var n,o;return super.optimizeNames(t,r),(n=this.catch)===null||n===void 0||n.optimizeNames(t,r),(o=this.finally)===null||o===void 0||o.optimizeNames(t,r),this}get names(){let t=super.names;return this.catch&&Pn(t,this.catch.names),this.finally&&Pn(t,this.finally.names),t}},Ps=class extends Zr{constructor(t){super(),this.error=t}render(t){return`catch(${this.error})`+super.render(t)}};Ps.kind="catch";var $s=class extends Zr{render(t){return"finally"+super.render(t)}};$s.kind="finally";var $u=class{constructor(t,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
4
+ `:""},this._extScope=t,this._scope=new pr.Scope({parent:t}),this._nodes=[new wu]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,r){let n=this._extScope.value(t,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(t,r){return this._extScope.getValue(t,r)}scopeRefs(t){return this._extScope.scopeRefs(t,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(t,r,n,o){let s=this._scope.toName(r);return n!==void 0&&o&&(this._constants[s.str]=n),this._leafNode(new bu(t,s,n)),s}const(t,r,n){return this._def(pr.varKinds.const,t,r,n)}let(t,r,n){return this._def(pr.varKinds.let,t,r,n)}var(t,r,n){return this._def(pr.varKinds.var,t,r,n)}assign(t,r,n){return this._leafNode(new Ai(t,r,n))}add(t,r){return this._leafNode(new yu(t,ke.operators.ADD,r))}code(t){return typeof t=="function"?t():t!==Te.nil&&this._leafNode(new _u(t)),this}object(...t){let r=["{"];for(let[n,o]of t)r.length>1&&r.push(","),r.push(n),(n!==o||this.opts.es5)&&(r.push(":"),(0,Te.addCodeArg)(r,o));return r.push("}"),new Te._Code(r)}if(t,r,n){if(this._blockNode(new xn(t)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(t){return this._elseNode(new xn(t))}else(){return this._elseNode(new ao)}endIf(){return this._endBlockNode(xn,ao)}_for(t,r){return this._blockNode(t),r&&this.code(r).endFor(),this}for(t,r){return this._for(new xu(t),r)}forRange(t,r,n,o,s=this.opts.es5?pr.varKinds.var:pr.varKinds.let){let a=this._scope.toName(t);return this._for(new Su(s,a,r,n),()=>o(a))}forOf(t,r,n,o=pr.varKinds.const){let s=this._scope.toName(t);if(this.opts.es5){let a=r instanceof Te.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,Te._)`${a}.length`,i=>{this.var(s,(0,Te._)`${a}[${i}]`),n(s)})}return this._for(new Oi("of",o,s,r),()=>n(s))}forIn(t,r,n,o=this.opts.es5?pr.varKinds.var:pr.varKinds.const){if(this.opts.ownProperties)return this.forOf(t,(0,Te._)`Object.keys(${r})`,n);let s=this._scope.toName(t);return this._for(new Oi("in",o,s,r),()=>n(s))}endFor(){return this._endBlockNode(Sn)}label(t){return this._leafNode(new ku(t))}break(t){return this._leafNode(new vu(t))}return(t){let r=new Ss;if(this._blockNode(r),this.code(t),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Ss)}try(t,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let o=new Pu;if(this._blockNode(o),this.code(t),r){let s=this.name("e");this._currNode=o.catch=new Ps(s),r(s)}return n&&(this._currNode=o.finally=new $s,this.code(n)),this._endBlockNode(Ps,$s)}throw(t){return this._leafNode(new zu(t))}block(t,r){return this._blockStarts.push(this._nodes.length),t&&this.code(t).endBlock(r),this}endBlock(t){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||t!==void 0&&n!==t)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${t} expected`);return this._nodes.length=r,this}func(t,r=Te.nil,n,o){return this._blockNode(new xs(t,r,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(xs)}optimize(t=1){for(;t-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(t){return this._currNode.nodes.push(t),this}_blockNode(t){this._currNode.nodes.push(t),this._nodes.push(t)}_endBlockNode(t,r){let n=this._currNode;if(n instanceof t||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${t.kind}/${r.kind}`:t.kind}"`)}_elseNode(t){let r=this._currNode;if(!(r instanceof xn))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=t,this}get _root(){return this._nodes[0]}get _currNode(){let t=this._nodes;return t[t.length-1]}set _currNode(t){let r=this._nodes;r[r.length-1]=t}};ke.CodeGen=$u;function Pn(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function Ii(e,t){return t instanceof Te._CodeOrName?Pn(e,t.names):e}function io(e,t,r){if(e instanceof Te.Name)return n(e);if(!o(e))return e;return new Te._Code(e._items.reduce((s,a)=>(a instanceof Te.Name&&(a=n(a)),a instanceof Te._Code?s.push(...a._items):s.push(a),s),[]));function n(s){let a=r[s.str];return a===void 0||t[s.str]!==1?s:(delete t[s.str],a)}function o(s){return s instanceof Te._Code&&s._items.some(a=>a instanceof Te.Name&&t[a.str]===1&&r[a.str]!==void 0)}}function yP(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function ly(e){return typeof e=="boolean"||typeof e=="number"||e===null?!e:(0,Te._)`!${Eu(e)}`}ke.not=ly;var kP=cy(ke.operators.AND);function vP(...e){return e.reduce(kP)}ke.and=vP;var zP=cy(ke.operators.OR);function _P(...e){return e.reduce(zP)}ke.or=_P;function cy(e){return(t,r)=>t===Te.nil?r:r===Te.nil?t:(0,Te._)`${Eu(t)} ${e} ${Eu(r)}`}function Eu(e){return e instanceof Te.Name?e:(0,Te._)`(${e})`}});var Ce=U(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.checkStrictMode=ze.getErrorPath=ze.Type=ze.useFunc=ze.setEvaluated=ze.evaluatedPropsToName=ze.mergeEvaluated=ze.eachItem=ze.unescapeJsonPointer=ze.escapeJsonPointer=ze.escapeFragment=ze.unescapeFragment=ze.schemaRefOrVal=ze.schemaHasRulesButRef=ze.schemaHasRules=ze.checkUnknownRules=ze.alwaysValidSchema=ze.toHash=void 0;var Ve=be(),wP=_s();function xP(e){let t={};for(let r of e)t[r]=!0;return t}ze.toHash=xP;function SP(e,t){return typeof t=="boolean"?t:Object.keys(t).length===0?!0:(py(e,t),!fy(t,e.self.RULES.all))}ze.alwaysValidSchema=SP;function py(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema||typeof t=="boolean")return;let o=n.RULES.keywords;for(let s in t)o[s]||gy(e,`unknown keyword: "${s}"`)}ze.checkUnknownRules=py;function fy(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(t[r])return!0;return!1}ze.schemaHasRules=fy;function PP(e,t){if(typeof e=="boolean")return!e;for(let r in e)if(r!=="$ref"&&t.all[r])return!0;return!1}ze.schemaHasRulesButRef=PP;function $P({topSchemaRef:e,schemaPath:t},r,n,o){if(!o){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,Ve._)`${r}`}return(0,Ve._)`${e}${t}${(0,Ve.getProperty)(n)}`}ze.schemaRefOrVal=$P;function EP(e){return my(decodeURIComponent(e))}ze.unescapeFragment=EP;function AP(e){return encodeURIComponent(Ou(e))}ze.escapeFragment=AP;function Ou(e){return typeof e=="number"?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}ze.escapeJsonPointer=Ou;function my(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}ze.unescapeJsonPointer=my;function OP(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)}ze.eachItem=OP;function uy({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(o,s,a,i)=>{let l=a===void 0?s:a instanceof Ve.Name?(s instanceof Ve.Name?e(o,s,a):t(o,s,a),a):s instanceof Ve.Name?(t(o,a,s),s):r(s,a);return i===Ve.Name&&!(l instanceof Ve.Name)?n(o,l):l}}ze.mergeEvaluated={props:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>{e.if((0,Ve._)`${t} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,Ve._)`${r} || {}`).code((0,Ve._)`Object.assign(${r}, ${t})`))}),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>{t===!0?e.assign(r,!0):(e.assign(r,(0,Ve._)`${r} || {}`),Iu(e,r,t))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:hy}),items:uy({mergeNames:(e,t,r)=>e.if((0,Ve._)`${r} !== true && ${t} !== undefined`,()=>e.assign(r,(0,Ve._)`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`)),mergeToName:(e,t,r)=>e.if((0,Ve._)`${r} !== true`,()=>e.assign(r,t===!0?!0:(0,Ve._)`${r} > ${t} ? ${r} : ${t}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})};function hy(e,t){if(t===!0)return e.var("props",!0);let r=e.var("props",(0,Ve._)`{}`);return t!==void 0&&Iu(e,r,t),r}ze.evaluatedPropsToName=hy;function Iu(e,t,r){Object.keys(r).forEach(n=>e.assign((0,Ve._)`${t}${(0,Ve.getProperty)(n)}`,!0))}ze.setEvaluated=Iu;var dy={};function IP(e,t){return e.scopeValue("func",{ref:t,code:dy[t.code]||(dy[t.code]=new wP._Code(t.code))})}ze.useFunc=IP;var Au;(function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"})(Au||(ze.Type=Au={}));function TP(e,t,r){if(e instanceof Ve.Name){let n=t===Au.Num;return r?n?(0,Ve._)`"[" + ${e} + "]"`:(0,Ve._)`"['" + ${e} + "']"`:n?(0,Ve._)`"/" + ${e}`:(0,Ve._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,Ve.getProperty)(e).toString():"/"+Ou(e)}ze.getErrorPath=TP;function gy(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,r===!0)throw new Error(t);e.self.logger.warn(t)}}ze.checkStrictMode=gy});var Br=U(Tu=>{"use strict";Object.defineProperty(Tu,"__esModule",{value:!0});var $t=be(),CP={data:new $t.Name("data"),valCxt:new $t.Name("valCxt"),instancePath:new $t.Name("instancePath"),parentData:new $t.Name("parentData"),parentDataProperty:new $t.Name("parentDataProperty"),rootData:new $t.Name("rootData"),dynamicAnchors:new $t.Name("dynamicAnchors"),vErrors:new $t.Name("vErrors"),errors:new $t.Name("errors"),this:new $t.Name("this"),self:new $t.Name("self"),scope:new $t.Name("scope"),json:new $t.Name("json"),jsonPos:new $t.Name("jsonPos"),jsonLen:new $t.Name("jsonLen"),jsonPart:new $t.Name("jsonPart")};Tu.default=CP});var Es=U(Et=>{"use strict";Object.defineProperty(Et,"__esModule",{value:!0});Et.extendErrors=Et.resetErrorsCount=Et.reportExtraError=Et.reportError=Et.keyword$DataError=Et.keywordError=void 0;var Ne=be(),Ci=Ce(),Rt=Br();Et.keywordError={message:({keyword:e})=>(0,Ne.str)`must pass "${e}" keyword validation`};Et.keyword$DataError={message:({keyword:e,schemaType:t})=>t?(0,Ne.str)`"${e}" keyword must be ${t} ($data)`:(0,Ne.str)`"${e}" keyword is invalid ($data)`};function NP(e,t=Et.keywordError,r,n){let{it:o}=e,{gen:s,compositeRule:a,allErrors:i}=o,l=ky(e,t,r);n??(a||i)?by(s,l):yy(o,(0,Ne._)`[${l}]`)}Et.reportError=NP;function RP(e,t=Et.keywordError,r){let{it:n}=e,{gen:o,compositeRule:s,allErrors:a}=n,i=ky(e,t,r);by(o,i),s||a||yy(n,Rt.default.vErrors)}Et.reportExtraError=RP;function jP(e,t){e.assign(Rt.default.errors,t),e.if((0,Ne._)`${Rt.default.vErrors} !== null`,()=>e.if(t,()=>e.assign((0,Ne._)`${Rt.default.vErrors}.length`,t),()=>e.assign(Rt.default.vErrors,null)))}Et.resetErrorsCount=jP;function MP({gen:e,keyword:t,schemaValue:r,data:n,errsCount:o,it:s}){if(o===void 0)throw new Error("ajv implementation error");let a=e.name("err");e.forRange("i",o,Rt.default.errors,i=>{e.const(a,(0,Ne._)`${Rt.default.vErrors}[${i}]`),e.if((0,Ne._)`${a}.instancePath === undefined`,()=>e.assign((0,Ne._)`${a}.instancePath`,(0,Ne.strConcat)(Rt.default.instancePath,s.errorPath))),e.assign((0,Ne._)`${a}.schemaPath`,(0,Ne.str)`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign((0,Ne._)`${a}.schema`,r),e.assign((0,Ne._)`${a}.data`,n))})}Et.extendErrors=MP;function by(e,t){let r=e.const("err",t);e.if((0,Ne._)`${Rt.default.vErrors} === null`,()=>e.assign(Rt.default.vErrors,(0,Ne._)`[${r}]`),(0,Ne._)`${Rt.default.vErrors}.push(${r})`),e.code((0,Ne._)`${Rt.default.errors}++`)}function yy(e,t){let{gen:r,validateName:n,schemaEnv:o}=e;o.$async?r.throw((0,Ne._)`new ${e.ValidationError}(${t})`):(r.assign((0,Ne._)`${n}.errors`,t),r.return(!1))}var $n={keyword:new Ne.Name("keyword"),schemaPath:new Ne.Name("schemaPath"),params:new Ne.Name("params"),propertyName:new Ne.Name("propertyName"),message:new Ne.Name("message"),schema:new Ne.Name("schema"),parentSchema:new Ne.Name("parentSchema")};function ky(e,t,r){let{createErrors:n}=e.it;return n===!1?(0,Ne._)`{}`:DP(e,t,r)}function DP(e,t,r={}){let{gen:n,it:o}=e,s=[LP(o,r),VP(e,r)];return FP(e,t,s),n.object(...s)}function LP({errorPath:e},{instancePath:t}){let r=t?(0,Ne.str)`${e}${(0,Ci.getErrorPath)(t,Ci.Type.Str)}`:e;return[Rt.default.instancePath,(0,Ne.strConcat)(Rt.default.instancePath,r)]}function VP({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:n}){let o=n?t:(0,Ne.str)`${t}/${e}`;return r&&(o=(0,Ne.str)`${o}${(0,Ci.getErrorPath)(r,Ci.Type.Str)}`),[$n.schemaPath,o]}function FP(e,{params:t,message:r},n){let{keyword:o,data:s,schemaValue:a,it:i}=e,{opts:l,propertyName:c,topSchemaRef:u,schemaPath:d}=i;n.push([$n.keyword,o],[$n.params,typeof t=="function"?t(e):t||(0,Ne._)`{}`]),l.messages&&n.push([$n.message,typeof r=="function"?r(e):r]),l.verbose&&n.push([$n.schema,a],[$n.parentSchema,(0,Ne._)`${u}${d}`],[Rt.default.data,s]),c&&n.push([$n.propertyName,c])}});var zy=U(lo=>{"use strict";Object.defineProperty(lo,"__esModule",{value:!0});lo.boolOrEmptySchema=lo.topBoolOrEmptySchema=void 0;var ZP=Es(),BP=be(),GP=Br(),UP={message:"boolean schema is false"};function qP(e){let{gen:t,schema:r,validateName:n}=e;r===!1?vy(e,!1):typeof r=="object"&&r.$async===!0?t.return(GP.default.data):(t.assign((0,BP._)`${n}.errors`,null),t.return(!0))}lo.topBoolOrEmptySchema=qP;function KP(e,t){let{gen:r,schema:n}=e;n===!1?(r.var(t,!1),vy(e)):r.var(t,!0)}lo.boolOrEmptySchema=KP;function vy(e,t){let{gen:r,data:n}=e,o={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,ZP.reportError)(o,UP,void 0,t)}});var Cu=U(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.getRules=co.isJSONType=void 0;var HP=["string","number","integer","boolean","null","object","array"],WP=new Set(HP);function JP(e){return typeof e=="string"&&WP.has(e)}co.isJSONType=JP;function YP(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}co.getRules=YP});var Nu=U(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.shouldUseRule=an.shouldUseGroup=an.schemaHasRulesForType=void 0;function XP({schema:e,self:t},r){let n=t.RULES.types[r];return n&&n!==!0&&_y(e,n)}an.schemaHasRulesForType=XP;function _y(e,t){return t.rules.some(r=>wy(e,r))}an.shouldUseGroup=_y;function wy(e,t){var r;return e[t.keyword]!==void 0||((r=t.definition.implements)===null||r===void 0?void 0:r.some(n=>e[n]!==void 0))}an.shouldUseRule=wy});var As=U(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.reportTypeError=At.checkDataTypes=At.checkDataType=At.coerceAndCheckDataType=At.getJSONTypes=At.getSchemaTypes=At.DataType=void 0;var QP=Cu(),e$=Nu(),t$=Es(),ge=be(),xy=Ce(),uo;(function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"})(uo||(At.DataType=uo={}));function r$(e){let t=Sy(e.type);if(t.includes("null")){if(e.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&e.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');e.nullable===!0&&t.push("null")}return t}At.getSchemaTypes=r$;function Sy(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(QP.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}At.getJSONTypes=Sy;function n$(e,t){let{gen:r,data:n,opts:o}=e,s=o$(t,o.coerceTypes),a=t.length>0&&!(s.length===0&&t.length===1&&(0,e$.schemaHasRulesForType)(e,t[0]));if(a){let i=ju(t,n,o.strictNumbers,uo.Wrong);r.if(i,()=>{s.length?s$(e,t,s):Mu(e)})}return a}At.coerceAndCheckDataType=n$;var Py=new Set(["string","number","integer","boolean","null"]);function o$(e,t){return t?e.filter(r=>Py.has(r)||t==="array"&&r==="array"):[]}function s$(e,t,r){let{gen:n,data:o,opts:s}=e,a=n.let("dataType",(0,ge._)`typeof ${o}`),i=n.let("coerced",(0,ge._)`undefined`);s.coerceTypes==="array"&&n.if((0,ge._)`${a} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,()=>n.assign(o,(0,ge._)`${o}[0]`).assign(a,(0,ge._)`typeof ${o}`).if(ju(t,o,s.strictNumbers),()=>n.assign(i,o))),n.if((0,ge._)`${i} !== undefined`);for(let c of r)(Py.has(c)||c==="array"&&s.coerceTypes==="array")&&l(c);n.else(),Mu(e),n.endIf(),n.if((0,ge._)`${i} !== undefined`,()=>{n.assign(o,i),a$(e,i)});function l(c){switch(c){case"string":n.elseIf((0,ge._)`${a} == "number" || ${a} == "boolean"`).assign(i,(0,ge._)`"" + ${o}`).elseIf((0,ge._)`${o} === null`).assign(i,(0,ge._)`""`);return;case"number":n.elseIf((0,ge._)`${a} == "boolean" || ${o} === null
5
+ || (${a} == "string" && ${o} && ${o} == +${o})`).assign(i,(0,ge._)`+${o}`);return;case"integer":n.elseIf((0,ge._)`${a} === "boolean" || ${o} === null
6
+ || (${a} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(i,(0,ge._)`+${o}`);return;case"boolean":n.elseIf((0,ge._)`${o} === "false" || ${o} === 0 || ${o} === null`).assign(i,!1).elseIf((0,ge._)`${o} === "true" || ${o} === 1`).assign(i,!0);return;case"null":n.elseIf((0,ge._)`${o} === "" || ${o} === 0 || ${o} === false`),n.assign(i,null);return;case"array":n.elseIf((0,ge._)`${a} === "string" || ${a} === "number"
7
+ || ${a} === "boolean" || ${o} === null`).assign(i,(0,ge._)`[${o}]`)}}}function a$({gen:e,parentData:t,parentDataProperty:r},n){e.if((0,ge._)`${t} !== undefined`,()=>e.assign((0,ge._)`${t}[${r}]`,n))}function Ru(e,t,r,n=uo.Correct){let o=n===uo.Correct?ge.operators.EQ:ge.operators.NEQ,s;switch(e){case"null":return(0,ge._)`${t} ${o} null`;case"array":s=(0,ge._)`Array.isArray(${t})`;break;case"object":s=(0,ge._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":s=a((0,ge._)`!(${t} % 1) && !isNaN(${t})`);break;case"number":s=a();break;default:return(0,ge._)`typeof ${t} ${o} ${e}`}return n===uo.Correct?s:(0,ge.not)(s);function a(i=ge.nil){return(0,ge.and)((0,ge._)`typeof ${t} == "number"`,i,r?(0,ge._)`isFinite(${t})`:ge.nil)}}At.checkDataType=Ru;function ju(e,t,r,n){if(e.length===1)return Ru(e[0],t,r,n);let o,s=(0,xy.toHash)(e);if(s.array&&s.object){let a=(0,ge._)`typeof ${t} != "object"`;o=s.null?a:(0,ge._)`!${t} || ${a}`,delete s.null,delete s.array,delete s.object}else o=ge.nil;s.number&&delete s.integer;for(let a in s)o=(0,ge.and)(o,Ru(a,t,r,n));return o}At.checkDataTypes=ju;var i$={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e=="string"?(0,ge._)`{type: ${e}}`:(0,ge._)`{type: ${t}}`};function Mu(e){let t=l$(e);(0,t$.reportError)(t,i$)}At.reportTypeError=Mu;function l$(e){let{gen:t,data:r,schema:n}=e,o=(0,xy.schemaRefOrVal)(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:o,schemaValue:o,parentSchema:n,params:{},it:e}}});var Ey=U(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});Ni.assignDefaults=void 0;var po=be(),c$=Ce();function u$(e,t){let{properties:r,items:n}=e.schema;if(t==="object"&&r)for(let o in r)$y(e,o,r[o].default);else t==="array"&&Array.isArray(n)&&n.forEach((o,s)=>$y(e,s,o.default))}Ni.assignDefaults=u$;function $y(e,t,r){let{gen:n,compositeRule:o,data:s,opts:a}=e;if(r===void 0)return;let i=(0,po._)`${s}${(0,po.getProperty)(t)}`;if(o){(0,c$.checkStrictMode)(e,`default is ignored for: ${i}`);return}let l=(0,po._)`${i} === undefined`;a.useDefaults==="empty"&&(l=(0,po._)`${l} || ${i} === null || ${i} === ""`),n.if(l,(0,po._)`${i} = ${(0,po.stringify)(r)}`)}});var rr=U(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.validateUnion=Le.validateArray=Le.usePattern=Le.callValidateCode=Le.schemaProperties=Le.allSchemaProperties=Le.noPropertyInData=Le.propertyInData=Le.isOwnProperty=Le.hasPropFunc=Le.reportMissingProp=Le.checkMissingProp=Le.checkReportMissingProp=void 0;var Je=be(),Du=Ce(),ln=Br(),d$=Ce();function p$(e,t){let{gen:r,data:n,it:o}=e;r.if(Vu(r,n,t,o.opts.ownProperties),()=>{e.setParams({missingProperty:(0,Je._)`${t}`},!0),e.error()})}Le.checkReportMissingProp=p$;function f$({gen:e,data:t,it:{opts:r}},n,o){return(0,Je.or)(...n.map(s=>(0,Je.and)(Vu(e,t,s,r.ownProperties),(0,Je._)`${o} = ${s}`)))}Le.checkMissingProp=f$;function m$(e,t){e.setParams({missingProperty:t},!0),e.error()}Le.reportMissingProp=m$;function Ay(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,Je._)`Object.prototype.hasOwnProperty`})}Le.hasPropFunc=Ay;function Lu(e,t,r){return(0,Je._)`${Ay(e)}.call(${t}, ${r})`}Le.isOwnProperty=Lu;function h$(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} !== undefined`;return n?(0,Je._)`${o} && ${Lu(e,t,r)}`:o}Le.propertyInData=h$;function Vu(e,t,r,n){let o=(0,Je._)`${t}${(0,Je.getProperty)(r)} === undefined`;return n?(0,Je.or)(o,(0,Je.not)(Lu(e,t,r))):o}Le.noPropertyInData=Vu;function Oy(e){return e?Object.keys(e).filter(t=>t!=="__proto__"):[]}Le.allSchemaProperties=Oy;function g$(e,t){return Oy(t).filter(r=>!(0,Du.alwaysValidSchema)(e,t[r]))}Le.schemaProperties=g$;function b$({schemaCode:e,data:t,it:{gen:r,topSchemaRef:n,schemaPath:o,errorPath:s},it:a},i,l,c){let u=c?(0,Je._)`${e}, ${t}, ${n}${o}`:t,d=[[ln.default.instancePath,(0,Je.strConcat)(ln.default.instancePath,s)],[ln.default.parentData,a.parentData],[ln.default.parentDataProperty,a.parentDataProperty],[ln.default.rootData,ln.default.rootData]];a.opts.dynamicRef&&d.push([ln.default.dynamicAnchors,ln.default.dynamicAnchors]);let p=(0,Je._)`${u}, ${r.object(...d)}`;return l!==Je.nil?(0,Je._)`${i}.call(${l}, ${p})`:(0,Je._)`${i}(${p})`}Le.callValidateCode=b$;var y$=(0,Je._)`new RegExp`;function k$({gen:e,it:{opts:t}},r){let n=t.unicodeRegExp?"u":"",{regExp:o}=t.code,s=o(r,n);return e.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,Je._)`${o.code==="new RegExp"?y$:(0,d$.useFunc)(e,o)}(${r}, ${n})`})}Le.usePattern=k$;function v$(e){let{gen:t,data:r,keyword:n,it:o}=e,s=t.name("valid");if(o.allErrors){let i=t.let("valid",!0);return a(()=>t.assign(i,!1)),i}return t.var(s,!0),a(()=>t.break()),s;function a(i){let l=t.const("len",(0,Je._)`${r}.length`);t.forRange("i",0,l,c=>{e.subschema({keyword:n,dataProp:c,dataPropType:Du.Type.Num},s),t.if((0,Je.not)(s),i)})}}Le.validateArray=v$;function z$(e){let{gen:t,schema:r,keyword:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(l=>(0,Du.alwaysValidSchema)(o,l))&&!o.opts.unevaluated)return;let a=t.let("valid",!1),i=t.name("_valid");t.block(()=>r.forEach((l,c)=>{let u=e.subschema({keyword:n,schemaProp:c,compositeRule:!0},i);t.assign(a,(0,Je._)`${a} || ${i}`),e.mergeValidEvaluated(u,i)||t.if((0,Je.not)(a))})),e.result(a,()=>e.reset(),()=>e.error(!0))}Le.validateUnion=z$});var Cy=U(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.validateKeywordUsage=xr.validSchemaType=xr.funcKeywordCode=xr.macroKeywordCode=void 0;var jt=be(),En=Br(),_$=rr(),w$=Es();function x$(e,t){let{gen:r,keyword:n,schema:o,parentSchema:s,it:a}=e,i=t.macro.call(a.self,o,s,a),l=Ty(r,n,i);a.opts.validateSchema!==!1&&a.self.validateSchema(i,!0);let c=r.name("valid");e.subschema({schema:i,schemaPath:jt.nil,errSchemaPath:`${a.errSchemaPath}/${n}`,topSchemaRef:l,compositeRule:!0},c),e.pass(c,()=>e.error(!0))}xr.macroKeywordCode=x$;function S$(e,t){var r;let{gen:n,keyword:o,schema:s,parentSchema:a,$data:i,it:l}=e;$$(l,t);let c=!i&&t.compile?t.compile.call(l.self,s,a,l):t.validate,u=Ty(n,o,c),d=n.let("valid");e.block$data(d,p),e.ok((r=t.valid)!==null&&r!==void 0?r:d);function p(){if(t.errors===!1)f(),t.modifying&&Iy(e),h(()=>e.error());else{let g=t.async?m():b();t.modifying&&Iy(e),h(()=>P$(e,g))}}function m(){let g=n.let("ruleErrs",null);return n.try(()=>f((0,jt._)`await `),v=>n.assign(d,!1).if((0,jt._)`${v} instanceof ${l.ValidationError}`,()=>n.assign(g,(0,jt._)`${v}.errors`),()=>n.throw(v))),g}function b(){let g=(0,jt._)`${u}.errors`;return n.assign(g,null),f(jt.nil),g}function f(g=t.async?(0,jt._)`await `:jt.nil){let v=l.opts.passContext?En.default.this:En.default.self,_=!("compile"in t&&!i||t.schema===!1);n.assign(d,(0,jt._)`${g}${(0,_$.callValidateCode)(e,u,v,_)}`,t.modifying)}function h(g){var v;n.if((0,jt.not)((v=t.valid)!==null&&v!==void 0?v:d),g)}}xr.funcKeywordCode=S$;function Iy(e){let{gen:t,data:r,it:n}=e;t.if(n.parentData,()=>t.assign(r,(0,jt._)`${n.parentData}[${n.parentDataProperty}]`))}function P$(e,t){let{gen:r}=e;r.if((0,jt._)`Array.isArray(${t})`,()=>{r.assign(En.default.vErrors,(0,jt._)`${En.default.vErrors} === null ? ${t} : ${En.default.vErrors}.concat(${t})`).assign(En.default.errors,(0,jt._)`${En.default.vErrors}.length`),(0,w$.extendErrors)(e)},()=>e.error())}function $$({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}function Ty(e,t,r){if(r===void 0)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,jt.stringify)(r)})}function E$(e,t,r=!1){return!t.length||t.some(n=>n==="array"?Array.isArray(e):n==="object"?e&&typeof e=="object"&&!Array.isArray(e):typeof e==n||r&&typeof e>"u")}xr.validSchemaType=E$;function A$({schema:e,opts:t,self:r,errSchemaPath:n},o,s){if(Array.isArray(o.keyword)?!o.keyword.includes(s):o.keyword!==s)throw new Error("ajv implementation error");let a=o.dependencies;if(a?.some(i=>!Object.prototype.hasOwnProperty.call(e,i)))throw new Error(`parent schema must have dependencies of ${s}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(e[s])){let l=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(o.validateSchema.errors);if(t.validateSchema==="log")r.logger.error(l);else throw new Error(l)}}xr.validateKeywordUsage=A$});var Ry=U(cn=>{"use strict";Object.defineProperty(cn,"__esModule",{value:!0});cn.extendSubschemaMode=cn.extendSubschemaData=cn.getSubschema=void 0;var Sr=be(),Ny=Ce();function O$(e,{keyword:t,schemaProp:r,schema:n,schemaPath:o,errSchemaPath:s,topSchemaRef:a}){if(t!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(t!==void 0){let i=e.schema[t];return r===void 0?{schema:i,schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[r],schemaPath:(0,Sr._)`${e.schemaPath}${(0,Sr.getProperty)(t)}${(0,Sr.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${(0,Ny.escapeFragment)(r)}`}}if(n!==void 0){if(o===void 0||s===void 0||a===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:o,topSchemaRef:a,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}cn.getSubschema=O$;function I$(e,t,{dataProp:r,dataPropType:n,data:o,dataTypes:s,propertyName:a}){if(o!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:i}=t;if(r!==void 0){let{errorPath:c,dataPathArr:u,opts:d}=t,p=i.let("data",(0,Sr._)`${t.data}${(0,Sr.getProperty)(r)}`,!0);l(p),e.errorPath=(0,Sr.str)`${c}${(0,Ny.getErrorPath)(r,n,d.jsPropertySyntax)}`,e.parentDataProperty=(0,Sr._)`${r}`,e.dataPathArr=[...u,e.parentDataProperty]}if(o!==void 0){let c=o instanceof Sr.Name?o:i.let("data",o,!0);l(c),a!==void 0&&(e.propertyName=a)}s&&(e.dataTypes=s);function l(c){e.data=c,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,c]}}cn.extendSubschemaData=I$;function T$(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:o,allErrors:s}){n!==void 0&&(e.compositeRule=n),o!==void 0&&(e.createErrors=o),s!==void 0&&(e.allErrors=s),e.jtdDiscriminator=t,e.jtdMetadata=r}cn.extendSubschemaMode=T$});var Fu=U((j3,jy)=>{"use strict";jy.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var n,o,s;if(Array.isArray(t)){if(n=t.length,n!=r.length)return!1;for(o=n;o--!==0;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(s=Object.keys(t),n=s.length,n!==Object.keys(r).length)return!1;for(o=n;o--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[o]))return!1;for(o=n;o--!==0;){var a=s[o];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Dy=U((M3,My)=>{"use strict";var un=My.exports=function(e,t,r){typeof t=="function"&&(r=t,t={}),r=t.cb||r;var n=typeof r=="function"?r:r.pre||function(){},o=r.post||function(){};Ri(t,n,o,e,"",e)};un.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};un.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};un.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};un.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 Ri(e,t,r,n,o,s,a,i,l,c){if(n&&typeof n=="object"&&!Array.isArray(n)){t(n,o,s,a,i,l,c);for(var u in n){var d=n[u];if(Array.isArray(d)){if(u in un.arrayKeywords)for(var p=0;p<d.length;p++)Ri(e,t,r,d[p],o+"/"+u+"/"+p,s,o,u,n,p)}else if(u in un.propsKeywords){if(d&&typeof d=="object")for(var m in d)Ri(e,t,r,d[m],o+"/"+u+"/"+C$(m),s,o,u,n,m)}else(u in un.keywords||e.allKeys&&!(u in un.skipKeywords))&&Ri(e,t,r,d,o+"/"+u,s,o,u,n)}r(n,o,s,a,i,l,c)}}function C$(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}});var Os=U(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Ft.getSchemaRefs=Ft.resolveUrl=Ft.normalizeId=Ft._getFullPath=Ft.getFullPath=Ft.inlineRef=void 0;var N$=Ce(),R$=Fu(),j$=Dy(),M$=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function D$(e,t=!0){return typeof e=="boolean"?!0:t===!0?!Zu(e):t?Ly(e)<=t:!1}Ft.inlineRef=D$;var L$=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function Zu(e){for(let t in e){if(L$.has(t))return!0;let r=e[t];if(Array.isArray(r)&&r.some(Zu)||typeof r=="object"&&Zu(r))return!0}return!1}function Ly(e){let t=0;for(let r in e){if(r==="$ref")return 1/0;if(t++,!M$.has(r)&&(typeof e[r]=="object"&&(0,N$.eachItem)(e[r],n=>t+=Ly(n)),t===1/0))return 1/0}return t}function Vy(e,t="",r){r!==!1&&(t=fo(t));let n=e.parse(t);return Fy(e,n)}Ft.getFullPath=Vy;function Fy(e,t){return e.serialize(t).split("#")[0]+"#"}Ft._getFullPath=Fy;var V$=/#\/?$/;function fo(e){return e?e.replace(V$,""):""}Ft.normalizeId=fo;function F$(e,t,r){return r=fo(r),e.resolve(t,r)}Ft.resolveUrl=F$;var Z$=/^[a-z_][-a-z0-9._]*$/i;function B$(e,t){if(typeof e=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,o=fo(e[r]||t),s={"":o},a=Vy(n,o,!1),i={},l=new Set;return j$(e,{allKeys:!0},(d,p,m,b)=>{if(b===void 0)return;let f=a+p,h=s[b];typeof d[r]=="string"&&(h=g.call(this,d[r])),v.call(this,d.$anchor),v.call(this,d.$dynamicAnchor),s[p]=h;function g(_){let w=this.opts.uriResolver.resolve;if(_=fo(h?w(h,_):_),l.has(_))throw u(_);l.add(_);let k=this.refs[_];return typeof k=="string"&&(k=this.refs[k]),typeof k=="object"?c(d,k.schema,_):_!==fo(f)&&(_[0]==="#"?(c(d,i[_],_),i[_]=d):this.refs[_]=f),_}function v(_){if(typeof _=="string"){if(!Z$.test(_))throw new Error(`invalid anchor "${_}"`);g.call(this,`#${_}`)}}}),i;function c(d,p,m){if(p!==void 0&&!R$(d,p))throw u(m)}function u(d){return new Error(`reference "${d}" resolves to more than one schema`)}}Ft.getSchemaRefs=B$});var Cs=U(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0});dn.getData=dn.KeywordCxt=dn.validateFunctionCode=void 0;var qy=zy(),Zy=As(),Gu=Nu(),ji=As(),G$=Ey(),Ts=Cy(),Bu=Ry(),se=be(),de=Br(),U$=Os(),Gr=Ce(),Is=Es();function q$(e){if(Wy(e)&&(Jy(e),Hy(e))){W$(e);return}Ky(e,()=>(0,qy.topBoolOrEmptySchema)(e))}dn.validateFunctionCode=q$;function Ky({gen:e,validateName:t,schema:r,schemaEnv:n,opts:o},s){o.code.es5?e.func(t,(0,se._)`${de.default.data}, ${de.default.valCxt}`,n.$async,()=>{e.code((0,se._)`"use strict"; ${By(r,o)}`),H$(e,o),e.code(s)}):e.func(t,(0,se._)`${de.default.data}, ${K$(o)}`,n.$async,()=>e.code(By(r,o)).code(s))}function K$(e){return(0,se._)`{${de.default.instancePath}="", ${de.default.parentData}, ${de.default.parentDataProperty}, ${de.default.rootData}=${de.default.data}${e.dynamicRef?(0,se._)`, ${de.default.dynamicAnchors}={}`:se.nil}}={}`}function H$(e,t){e.if(de.default.valCxt,()=>{e.var(de.default.instancePath,(0,se._)`${de.default.valCxt}.${de.default.instancePath}`),e.var(de.default.parentData,(0,se._)`${de.default.valCxt}.${de.default.parentData}`),e.var(de.default.parentDataProperty,(0,se._)`${de.default.valCxt}.${de.default.parentDataProperty}`),e.var(de.default.rootData,(0,se._)`${de.default.valCxt}.${de.default.rootData}`),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`${de.default.valCxt}.${de.default.dynamicAnchors}`)},()=>{e.var(de.default.instancePath,(0,se._)`""`),e.var(de.default.parentData,(0,se._)`undefined`),e.var(de.default.parentDataProperty,(0,se._)`undefined`),e.var(de.default.rootData,de.default.data),t.dynamicRef&&e.var(de.default.dynamicAnchors,(0,se._)`{}`)})}function W$(e){let{schema:t,opts:r,gen:n}=e;Ky(e,()=>{r.$comment&&t.$comment&&Xy(e),eE(e),n.let(de.default.vErrors,null),n.let(de.default.errors,0),r.unevaluated&&J$(e),Yy(e),nE(e)})}function J$(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",(0,se._)`${r}.evaluated`),t.if((0,se._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,se._)`${e.evaluated}.props`,(0,se._)`undefined`)),t.if((0,se._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,se._)`${e.evaluated}.items`,(0,se._)`undefined`))}function By(e,t){let r=typeof e=="object"&&e[t.schemaId];return r&&(t.code.source||t.code.process)?(0,se._)`/*# sourceURL=${r} */`:se.nil}function Y$(e,t){if(Wy(e)&&(Jy(e),Hy(e))){X$(e,t);return}(0,qy.boolOrEmptySchema)(e,t)}function Hy({schema:e,self:t}){if(typeof e=="boolean")return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function Wy(e){return typeof e.schema!="boolean"}function X$(e,t){let{schema:r,gen:n,opts:o}=e;o.$comment&&r.$comment&&Xy(e),tE(e),rE(e);let s=n.const("_errs",de.default.errors);Yy(e,s),n.var(t,(0,se._)`${s} === ${de.default.errors}`)}function Jy(e){(0,Gr.checkUnknownRules)(e),Q$(e)}function Yy(e,t){if(e.opts.jtd)return Gy(e,[],!1,t);let r=(0,Zy.getSchemaTypes)(e.schema),n=(0,Zy.coerceAndCheckDataType)(e,r);Gy(e,r,!n,t)}function Q$(e){let{schema:t,errSchemaPath:r,opts:n,self:o}=e;t.$ref&&n.ignoreKeywordsWithRef&&(0,Gr.schemaHasRulesButRef)(t,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function eE(e){let{schema:t,opts:r}=e;t.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,Gr.checkStrictMode)(e,"default is ignored in the schema root")}function tE(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,U$.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function rE(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}function Xy({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:o}){let s=r.$comment;if(o.$comment===!0)e.code((0,se._)`${de.default.self}.logger.log(${s})`);else if(typeof o.$comment=="function"){let a=(0,se.str)`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code((0,se._)`${de.default.self}.opts.$comment(${s}, ${a}, ${i}.schema)`)}}function nE(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:o,opts:s}=e;r.$async?t.if((0,se._)`${de.default.errors} === 0`,()=>t.return(de.default.data),()=>t.throw((0,se._)`new ${o}(${de.default.vErrors})`)):(t.assign((0,se._)`${n}.errors`,de.default.vErrors),s.unevaluated&&oE(e),t.return((0,se._)`${de.default.errors} === 0`))}function oE({gen:e,evaluated:t,props:r,items:n}){r instanceof se.Name&&e.assign((0,se._)`${t}.props`,r),n instanceof se.Name&&e.assign((0,se._)`${t}.items`,n)}function Gy(e,t,r,n){let{gen:o,schema:s,data:a,allErrors:i,opts:l,self:c}=e,{RULES:u}=c;if(s.$ref&&(l.ignoreKeywordsWithRef||!(0,Gr.schemaHasRulesButRef)(s,u))){o.block(()=>ek(e,"$ref",u.all.$ref.definition));return}l.jtd||sE(e,t),o.block(()=>{for(let p of u.rules)d(p);d(u.post)});function d(p){(0,Gu.shouldUseGroup)(s,p)&&(p.type?(o.if((0,ji.checkDataType)(p.type,a,l.strictNumbers)),Uy(e,p),t.length===1&&t[0]===p.type&&r&&(o.else(),(0,ji.reportTypeError)(e)),o.endIf()):Uy(e,p),i||o.if((0,se._)`${de.default.errors} === ${n||0}`))}}function Uy(e,t){let{gen:r,schema:n,opts:{useDefaults:o}}=e;o&&(0,G$.assignDefaults)(e,t.type),r.block(()=>{for(let s of t.rules)(0,Gu.shouldUseRule)(n,s)&&ek(e,s.keyword,s.definition,t.type)})}function sE(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(aE(e,t),e.opts.allowUnionTypes||iE(e,t),lE(e,e.dataTypes))}function aE(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(r=>{Qy(e.dataTypes,r)||Uu(e,`type "${r}" not allowed by context "${e.dataTypes.join(",")}"`)}),uE(e,t)}}function iE(e,t){t.length>1&&!(t.length===2&&t.includes("null"))&&Uu(e,"use allowUnionTypes to allow union type keyword")}function lE(e,t){let r=e.self.RULES.all;for(let n in r){let o=r[n];if(typeof o=="object"&&(0,Gu.shouldUseRule)(e.schema,o)){let{type:s}=o.definition;s.length&&!s.some(a=>cE(t,a))&&Uu(e,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function cE(e,t){return e.includes(t)||t==="number"&&e.includes("integer")}function Qy(e,t){return e.includes(t)||t==="integer"&&e.includes("number")}function uE(e,t){let r=[];for(let n of e.dataTypes)Qy(t,n)?r.push(n):t.includes("integer")&&n==="number"&&r.push("integer");e.dataTypes=r}function Uu(e,t){let r=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${r}" (strictTypes)`,(0,Gr.checkStrictMode)(e,t,e.opts.strictTypes)}var Mi=class{constructor(t,r,n){if((0,Ts.validateKeywordUsage)(t,r,n),this.gen=t.gen,this.allErrors=t.allErrors,this.keyword=n,this.data=t.data,this.schema=t.schema[n],this.$data=r.$data&&t.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,Gr.schemaRefOrVal)(t,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=t.schema,this.params={},this.it=t,this.def=r,this.$data)this.schemaCode=t.gen.const("vSchema",tk(this.$data,t));else if(this.schemaCode=this.schemaValue,!(0,Ts.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=t.gen.const("_errs",de.default.errors))}result(t,r,n){this.failResult((0,se.not)(t),r,n)}failResult(t,r,n){this.gen.if(t),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(t,r){this.failResult((0,se.not)(t),void 0,r)}fail(t){if(t===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(t),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(t){if(!this.$data)return this.fail(t);let{schemaCode:r}=this;this.fail((0,se._)`${r} !== undefined && (${(0,se.or)(this.invalid$data(),t)})`)}error(t,r,n){if(r){this.setParams(r),this._error(t,n),this.setParams({});return}this._error(t,n)}_error(t,r){(t?Is.reportExtraError:Is.reportError)(this,this.def.error,r)}$dataError(){(0,Is.reportError)(this,this.def.$dataError||Is.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Is.resetErrorsCount)(this.gen,this.errsCount)}ok(t){this.allErrors||this.gen.if(t)}setParams(t,r){r?Object.assign(this.params,t):this.params=t}block$data(t,r,n=se.nil){this.gen.block(()=>{this.check$data(t,n),r()})}check$data(t=se.nil,r=se.nil){if(!this.$data)return;let{gen:n,schemaCode:o,schemaType:s,def:a}=this;n.if((0,se.or)((0,se._)`${o} === undefined`,r)),t!==se.nil&&n.assign(t,!0),(s.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),t!==se.nil&&n.assign(t,!1)),n.else()}invalid$data(){let{gen:t,schemaCode:r,schemaType:n,def:o,it:s}=this;return(0,se.or)(a(),i());function a(){if(n.length){if(!(r instanceof se.Name))throw new Error("ajv implementation error");let l=Array.isArray(n)?n:[n];return(0,se._)`${(0,ji.checkDataTypes)(l,r,s.opts.strictNumbers,ji.DataType.Wrong)}`}return se.nil}function i(){if(o.validateSchema){let l=t.scopeValue("validate$data",{ref:o.validateSchema});return(0,se._)`!${l}(${r})`}return se.nil}}subschema(t,r){let n=(0,Bu.getSubschema)(this.it,t);(0,Bu.extendSubschemaData)(n,this.it,t),(0,Bu.extendSubschemaMode)(n,t);let o={...this.it,...n,items:void 0,props:void 0};return Y$(o,r),o}mergeEvaluated(t,r){let{it:n,gen:o}=this;n.opts.unevaluated&&(n.props!==!0&&t.props!==void 0&&(n.props=Gr.mergeEvaluated.props(o,t.props,n.props,r)),n.items!==!0&&t.items!==void 0&&(n.items=Gr.mergeEvaluated.items(o,t.items,n.items,r)))}mergeValidEvaluated(t,r){let{it:n,gen:o}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return o.if(r,()=>this.mergeEvaluated(t,se.Name)),!0}};dn.KeywordCxt=Mi;function ek(e,t,r,n){let o=new Mi(e,r,t);"code"in r?r.code(o,n):o.$data&&r.validate?(0,Ts.funcKeywordCode)(o,r):"macro"in r?(0,Ts.macroKeywordCode)(o,r):(r.compile||r.validate)&&(0,Ts.funcKeywordCode)(o,r)}var dE=/^\/(?:[^~]|~0|~1)*$/,pE=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function tk(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let o,s;if(e==="")return de.default.rootData;if(e[0]==="/"){if(!dE.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);o=e,s=de.default.rootData}else{let c=pE.exec(e);if(!c)throw new Error(`Invalid JSON-pointer: ${e}`);let u=+c[1];if(o=c[2],o==="#"){if(u>=t)throw new Error(l("property/index",u));return n[t-u]}if(u>t)throw new Error(l("data",u));if(s=r[t-u],!o)return s}let a=s,i=o.split("/");for(let c of i)c&&(s=(0,se._)`${s}${(0,se.getProperty)((0,Gr.unescapeJsonPointer)(c))}`,a=(0,se._)`${a} && ${s}`);return a;function l(c,u){return`Cannot access ${c} ${u} levels up, current level is ${t}`}}dn.getData=tk});var Di=U(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});var qu=class extends Error{constructor(t){super("validation failed"),this.errors=t,this.ajv=this.validation=!0}};Ku.default=qu});var Ns=U(Ju=>{"use strict";Object.defineProperty(Ju,"__esModule",{value:!0});var Hu=Os(),Wu=class extends Error{constructor(t,r,n,o){super(o||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,Hu.resolveUrl)(t,r,n),this.missingSchema=(0,Hu.normalizeId)((0,Hu.getFullPath)(t,this.missingRef))}};Ju.default=Wu});var Vi=U(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.resolveSchema=nr.getCompilingSchema=nr.resolveRef=nr.compileSchema=nr.SchemaEnv=void 0;var fr=be(),fE=Di(),An=Br(),mr=Os(),rk=Ce(),mE=Cs(),mo=class{constructor(t){var r;this.refs={},this.dynamicAnchors={};let n;typeof t.schema=="object"&&(n=t.schema),this.schema=t.schema,this.schemaId=t.schemaId,this.root=t.root||this,this.baseId=(r=t.baseId)!==null&&r!==void 0?r:(0,mr.normalizeId)(n?.[t.schemaId||"$id"]),this.schemaPath=t.schemaPath,this.localRefs=t.localRefs,this.meta=t.meta,this.$async=n?.$async,this.refs={}}};nr.SchemaEnv=mo;function Xu(e){let t=nk.call(this,e);if(t)return t;let r=(0,mr.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:n,lines:o}=this.opts.code,{ownProperties:s}=this.opts,a=new fr.CodeGen(this.scope,{es5:n,lines:o,ownProperties:s}),i;e.$async&&(i=a.scopeValue("Error",{ref:fE.default,code:(0,fr._)`require("ajv/dist/runtime/validation_error").default`}));let l=a.scopeName("validate");e.validateName=l;let c={gen:a,allErrors:this.opts.allErrors,data:An.default.data,parentData:An.default.parentData,parentDataProperty:An.default.parentDataProperty,dataNames:[An.default.data],dataPathArr:[fr.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:a.scopeValue("schema",this.opts.code.source===!0?{ref:e.schema,code:(0,fr.stringify)(e.schema)}:{ref:e.schema}),validateName:l,ValidationError:i,schema:e.schema,schemaEnv:e,rootId:r,baseId:e.baseId||r,schemaPath:fr.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,fr._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(e),(0,mE.validateFunctionCode)(c),a.optimize(this.opts.code.optimize);let d=a.toString();u=`${a.scopeRefs(An.default.scope)}return ${d}`,this.opts.code.process&&(u=this.opts.code.process(u,e));let m=new Function(`${An.default.self}`,`${An.default.scope}`,u)(this,this.scope.get());if(this.scope.value(l,{ref:m}),m.errors=null,m.schema=e.schema,m.schemaEnv=e,e.$async&&(m.$async=!0),this.opts.code.source===!0&&(m.source={validateName:l,validateCode:d,scopeValues:a._values}),this.opts.unevaluated){let{props:b,items:f}=c;m.evaluated={props:b instanceof fr.Name?void 0:b,items:f instanceof fr.Name?void 0:f,dynamicProps:b instanceof fr.Name,dynamicItems:f instanceof fr.Name},m.source&&(m.source.evaluated=(0,fr.stringify)(m.evaluated))}return e.validate=m,e}catch(d){throw delete e.validate,delete e.validateName,u&&this.logger.error("Error compiling schema, function code:",u),d}finally{this._compilations.delete(e)}}nr.compileSchema=Xu;function hE(e,t,r){var n;r=(0,mr.resolveUrl)(this.opts.uriResolver,t,r);let o=e.refs[r];if(o)return o;let s=yE.call(this,e,r);if(s===void 0){let a=(n=e.localRefs)===null||n===void 0?void 0:n[r],{schemaId:i}=this.opts;a&&(s=new mo({schema:a,schemaId:i,root:e,baseId:t}))}if(s!==void 0)return e.refs[r]=gE.call(this,s)}nr.resolveRef=hE;function gE(e){return(0,mr.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:Xu.call(this,e)}function nk(e){for(let t of this._compilations)if(bE(t,e))return t}nr.getCompilingSchema=nk;function bE(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function yE(e,t){let r;for(;typeof(r=this.refs[t])=="string";)t=r;return r||this.schemas[t]||Li.call(this,e,t)}function Li(e,t){let r=this.opts.uriResolver.parse(t),n=(0,mr._getFullPath)(this.opts.uriResolver,r),o=(0,mr.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&n===o)return Yu.call(this,r,e);let s=(0,mr.normalizeId)(n),a=this.refs[s]||this.schemas[s];if(typeof a=="string"){let i=Li.call(this,e,a);return typeof i?.schema!="object"?void 0:Yu.call(this,r,i)}if(typeof a?.schema=="object"){if(a.validate||Xu.call(this,a),s===(0,mr.normalizeId)(t)){let{schema:i}=a,{schemaId:l}=this.opts,c=i[l];return c&&(o=(0,mr.resolveUrl)(this.opts.uriResolver,o,c)),new mo({schema:i,schemaId:l,root:e,baseId:o})}return Yu.call(this,r,a)}}nr.resolveSchema=Li;var kE=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function Yu(e,{baseId:t,schema:r,root:n}){var o;if(((o=e.fragment)===null||o===void 0?void 0:o[0])!=="/")return;for(let i of e.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let l=r[(0,rk.unescapeFragment)(i)];if(l===void 0)return;r=l;let c=typeof r=="object"&&r[this.opts.schemaId];!kE.has(i)&&c&&(t=(0,mr.resolveUrl)(this.opts.uriResolver,t,c))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,rk.schemaHasRulesButRef)(r,this.RULES)){let i=(0,mr.resolveUrl)(this.opts.uriResolver,t,r.$ref);s=Li.call(this,n,i)}let{schemaId:a}=this.opts;if(s=s||new mo({schema:r,schemaId:a,root:n,baseId:t}),s.schema!==s.root.schema)return s}});var ok=U((B3,vE)=>{vE.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}});var od=U((G3,pk)=>{"use strict";var zE=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),ed=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),_E=RegExp.prototype.test.bind(/^\d*$/u),On=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),td=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),ak=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),rd=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),wE=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),Zt=new Array(256);{let e="0123456789ABCDEF";for(let t=0;t<256;t++)Zt[t]="%"+e[t>>4]+e[t&15]}function Ot(e){return e<2048?Zt[192|e>>6]+Zt[128|e&63]:e<65536?Zt[224|e>>12]+Zt[128|e>>6&63]+Zt[128|e&63]:Zt[240|e>>18]+Zt[128|e>>12&63]+Zt[128|e>>6&63]+Zt[128|e&63]}function xE(e){let t="",r=0,n=0;for(n=0;n<e.length;n++)if(r=e[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n];break}for(n+=1;n<e.length;n++){if(r=e[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";t+=e[n]}return t}var SE=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),PE=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),$E=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),EE=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function AE(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(!$E(e[t])){if(e[t]==="%"&&t+2<e.length&&On(e.slice(t+1,t+3))){t+=2;continue}return!1}return!0}function sk(e){let t=-1,r=0,n=-1,o=0;for(let i=0;i<e.length;i++)e[i]==="0"?(n===-1&&(n=i),o++,o>r&&(r=o,t=n)):(n=-1,o=0);if(r<2)return e.join(":");let s=e.slice(0,t).join(":"),a=e.slice(t+r).join(":");return s+"::"+a}function OE(e){let t=e.indexOf("::");if(t!==-1&&e.indexOf("::",t+1)!==-1)return;let r=t===-1?e.split(":"):e.slice(0,t).split(":"),n=t===-1?[]:e.slice(t+2).split(":");t!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let o=r.concat(n),s=0;for(let i=0;i<o.length;i++){let l=o[i];if(l==="")return;if(l.indexOf(".")!==-1){if(i!==o.length-1||t!==-1&&n.length===0||!ed(l))return;s+=2;continue}if(!SE(l))return;o[i]=parseInt(l,16).toString(16),s++}if(t===-1)return s!==8?void 0:sk(o);if(s>=8)return;let a=o.slice(0,r.length);for(let i=s;i<8;i++)a.push("0");for(let i=r.length;i<o.length;i++)a.push(o[i]);return sk(a)}function Qu(e){let t=e[0]==="["&&e[e.length-1]==="]";if((e[0]==="["||e[e.length-1]==="]")&&!t)return{host:e,isIPV6:!1,error:!0};let n=t?e.slice(1,-1):e;if(t&&PE(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(IE(n,":")<2)return{host:e,isIPV6:!1,error:t};let o="",s=n.indexOf("%");if(s!==-1){let i=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(o=n.slice(s+i),!AE(o))return{host:e,isIPV6:!1,error:!0};n=n.slice(0,s)}let a=OE(n);return a===void 0?{host:e,isIPV6:!1,error:!0}:{host:a+(o?"%"+o:""),escapedHost:a+(o?"%25"+o:""),isIPV6:!0}}function IE(e,t){let r=0;for(let n=0;n<e.length;n++)e[n]===t&&r++;return r}function ik(e){let t=e,r=[],n=-1,o=0;for(;o=t.length;){if(o===1){if(t===".")break;if(t==="/"){r.push("/");break}else{r.push(t);break}}else if(o===2){if(t[0]==="."){if(t[1]===".")break;if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&(t[1]==="."||t[1]==="/")){r.push("/");break}}else if(o===3&&t==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(t[0]==="."){if(t[1]==="."){if(t[2]==="/"){t=t.slice(3);continue}}else if(t[1]==="/"){t=t.slice(2);continue}}else if(t[0]==="/"&&t[1]==="."){if(t[2]==="/"){t=t.slice(2);continue}else if(t[2]==="."&&t[3]==="/"){t=t.slice(3),r.length!==0&&r.pop();continue}}if((n=t.indexOf("/",1))===-1){r.push(t);break}else r.push(t.slice(0,n)),t=t.slice(n)}return r.join("")}function TE(e){if(e===""||e[0]==="/")return ik(e);let t=e.split("/"),r=t.length-1,n=[],o=!1;for(let s=0;s<=r;s++){let a=t[s];a==="."||a===".."?(a===".."&&(n.length!==0&&n[n.length-1]!==".."?n.pop():n.push("..")),o=s===r):n.push(a)}return o&&n[n.length-1]!==".."&&n.push(""),(n.length===0||n[0]===""||n[0].includes(":"))&&n.unshift("."),n.join("/")}var CE={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},NE=/[@/?#:]/g,RE=/[@/?#]/g;function lk(e,t){let r=t?RE:NE;return r.lastIndex=0,e.replace(r,n=>CE[n])}function ck(e,t=!1){if(e.indexOf("%")===-1)return e;let r="";for(let n=0;n<e.length;n++){if(e[n]==="%"&&n+2<e.length){let o=e.slice(n+1,n+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));t&&td(a)?r+=a:r+="%"+s,n+=2;continue}}r+=e[n]}return r}function jE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));a!=="."&&td(a)?t+=a:t+="%"+s,r+=2;continue}}if(ak(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function ME(e,t=!1){let r="",n=t&&e[0]!=="/";for(let o=0;o<e.length;o++){let s=e[o];if(s==="%"&&o+2<e.length){let a=e.slice(o+1,o+3);if(On(a)){r+="%"+a.toUpperCase(),o+=2;continue}}if(s==="/"&&(n=!1),ak(s)&&(s!==":"||!n))r+=s;else{let a=e.charCodeAt(o);if(a<128)r+=Zt[a];else if(a<55296||a>57343)r+=Ot(a);else if(a<=56319&&o+1<e.length){let i=e.charCodeAt(o+1);i>=56320&&i<=57343?(r+=Ot(65536+(a-55296<<10)+(i-56320)),o++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function nd(e,t){let r="";for(let n=0;n<e.length;n++){let o=e[n];if(o==="%"&&n+2<e.length){let s=e.slice(n+1,n+3);if(On(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(t(o))r+=o;else{let s=e.charCodeAt(n);if(s<128)r+=Zt[s];else if(s<55296||s>57343)r+=Ot(s);else if(s<=56319&&n+1<e.length){let a=e.charCodeAt(n+1);a>=56320&&a<=57343?(r+=Ot(65536+(s-55296<<10)+(a-56320)),n++):r+=Ot(65533)}else r+=Ot(65533)}}return r}function uk(e){return nd(e,wE)}function DE(e){return nd(e,rd)}function LE(e){return nd(e,rd)}function dk(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===42||e===43||e===45||e===46||e===47||e===64||e===95}function VE(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n==="%"&&r+2<e.length){let o=e.slice(r+1,r+3);if(On(o)){let s=o.toUpperCase(),a=String.fromCharCode(parseInt(s,16));td(a)?t+=a:t+="%"+s,r+=2;continue}}if(rd(n))t+=n;else{let o=e.charCodeAt(r);if(o<128)t+=dk(o)?n:Zt[o];else if(o<55296||o>57343)t+=Ot(o);else if(o<=56319&&r+1<e.length){let s=e.charCodeAt(r+1);s>=56320&&s<=57343?(t+=Ot(65536+(o-55296<<10)+(s-56320)),r++):t+=Ot(65533)}else t+=Ot(65533)}}return t}function FE(e){let t="";for(let r=0;r<e.length;r++){if(e[r]==="%"&&r+2<e.length){let n=e.slice(r+1,r+3);if(On(n)){t+="%"+n.toUpperCase(),r+=2;continue}}t+=escape(e[r])}return t}function ZE(e){let t=[];if(e.userinfo!==void 0&&(t.push(uk(e.userinfo)),t.push("@")),e.host!==void 0){let r=e.host;if(!ed(r)){let n=Qu(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=ck(r,!0),n=Qu(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=lk(r,!1)}t.push(r)}if(typeof e.port=="number"||typeof e.port=="string"){let r=String(e.port);if(!_E(r))throw new TypeError("URI port is malformed.");t.push(":"),t.push(r)}return t.length?t.join(""):void 0}pk.exports={nonSimpleDomain:EE,recomposeAuthority:ZE,reescapeHostDelimiters:lk,normalizePercentEncoding:ck,normalizePathEncoding:jE,serializePathEncoding:ME,normalizeQueryFragmentEncoding:VE,encodeUserinfo:uk,encodeQuery:DE,encodeFragment:LE,escapePreservingEscapes:FE,removeDotSegments:ik,removeDotSegmentsRelative:TE,isIPv4:ed,isUUID:zE,normalizeIPv6:Qu,stringArrayToHexStripped:xE}});var bk=U((U3,gk)=>{"use strict";var{isUUID:BE}=od(),GE=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,UE=["http","https","ws","wss","urn","urn:uuid"];function qE(e){return UE.indexOf(e)!==-1}function sd(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]==="w"||e.scheme[0]==="W")&&(e.scheme[1]==="s"||e.scheme[1]==="S")&&(e.scheme[2]==="s"||e.scheme[2]==="S"):!1}function fk(e){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e}function mk(e){let t=String(e.scheme).toLowerCase()==="https";return(e.port===(t?443:80)||e.port==="")&&(e.port=void 0),e.path||(e.path="/"),e}function KE(e){return e.secure=sd(e),e.resourceName=(e.path||"/")+(e.query?"?"+e.query:""),e.path=void 0,e.query=void 0,e}function HE(e){if((e.port===(sd(e)?443:80)||e.port==="")&&(e.port=void 0),typeof e.secure=="boolean"&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){let t=e.resourceName.indexOf("?"),r=t===-1?e.resourceName:e.resourceName.slice(0,t);e.path=r&&r!=="/"?r:void 0,e.query=t===-1?void 0:e.resourceName.slice(t+1),e.resourceName=void 0}return e.fragment=void 0,e}function WE(e,t){if(!e.path)return e.error="URN can not be parsed",e;let r=e.path.match(GE);if(r&&r[0]===e.path){let n=t.scheme||e.scheme||"urn";e.nid=r[1].toLowerCase(),e.nss=r[2];let o=`${n}:${t.nid||e.nid}`,s=ad(o);e.path=void 0,s&&(e=s.parse(e,t))}else e.error=e.error||"URN can not be parsed.";return e}function JE(e,t){if(e.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=t.scheme||e.scheme||"urn",n=e.nid.toLowerCase(),o=`${r}:${t.nid||n}`,s=ad(o);s&&(e=s.serialize(e,t));let a=e,i=e.nss;return a.path=`${n||t.nid}:${i}`,t.skipEscape=!0,a}function YE(e,t){let r=e;return r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!BE(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function XE(e){let t=e;return t.nss=(e.uuid||"").toLowerCase(),t}var hk={scheme:"http",domainHost:!0,parse:fk,serialize:mk},QE={scheme:"https",domainHost:hk.domainHost,parse:fk,serialize:mk},Fi={scheme:"ws",domainHost:!0,parse:KE,serialize:HE},eA={scheme:"wss",domainHost:Fi.domainHost,parse:Fi.parse,serialize:Fi.serialize},tA={scheme:"urn",parse:WE,serialize:JE,skipNormalize:!0},rA={scheme:"urn:uuid",parse:YE,serialize:XE,skipNormalize:!0},Zi={http:hk,https:QE,ws:Fi,wss:eA,urn:tA,"urn:uuid":rA};Object.setPrototypeOf(Zi,null);function ad(e){return e&&(Zi[e]||Zi[e.toLowerCase()])||void 0}gk.exports={wsIsSecure:sd,SCHEMES:Zi,isValidSchemeName:qE,getSchemeHandler:ad}});var Tk=U((q3,Ki)=>{"use strict";var{normalizeIPv6:_k,removeDotSegments:js,removeDotSegmentsRelative:wk,recomposeAuthority:nA,normalizePercentEncoding:id,normalizePathEncoding:oA,serializePathEncoding:yk,normalizeQueryFragmentEncoding:kk,encodeQuery:sA,encodeFragment:aA,reescapeHostDelimiters:iA,isIPv4:xk,nonSimpleDomain:lA}=od(),{SCHEMES:Sk,getSchemeHandler:ld}=bk(),Pk=/^[A-Za-z][A-Za-z0-9+.-]*$/u,$k="URI scheme is malformed.",Bi="URI host is malformed.",cA=/[\0-\x20"#/:<>?@[\\\]^`{|}\x7F]/u;function vk(e){let t=String(e);if(!Pk.test(t))throw new TypeError($k);return t}function uA(e,t){return typeof e=="string"?e=kA(e,t):typeof e=="object"&&(e=Ui(In(e,t),t)),e}function dA(e,t,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:o,malformedAuthorityOrPort:s,malformedPercentEncoding:a,malformedSchemeSpecific:i,malformedHost:l,malformedScheme:c}=Gi(e,n),{parsed:u,malformedAuthorityOrPort:d,malformedPercentEncoding:p,malformedSchemeSpecific:m,malformedHost:b,malformedScheme:f}=Gi(t,n);if(s||d||a||p||i||m||l||b||c||f)throw new Error(o.error||u.error||"URI is malformed.");let h=Ek(o,u,n,!0),g=ld(r&&r.scheme||h.scheme),v=h.host,_=v!==void 0&&v!==""&&(xk(v)||_k(v).isIPV6);if(Ok(h,r||{},g,_))throw new Error(Bi);Ak(h,r||{},g,_);let w=v&&v.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(v);if(h.error&&!w)throw new Error(h.error);return n.skipEscape=!0,In(h,n)}function Ek(e,t,r,n){let o={};if(n||(e=Ui(In(e,r),r),t=Ui(In(t,r),r)),r=r||{},!r.tolerant&&t.scheme)o.scheme=t.scheme,o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=js(t.path||""),o.query=t.query;else{if(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)o.userinfo=t.userinfo,o.host=t.host,o.port=t.port,o.path=js(t.path||""),o.query=t.query;else{if(!t.path)o.path=e.path,t.query!==void 0?o.query=t.query:o.query=e.query;else{if(t.path[0]==="/")o.path=js(t.path);else{let s=e.userinfo!==void 0||e.host!==void 0||e.port!==void 0;s&&!e.path?o.path="/"+t.path:e.path?o.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:o.path=t.path,o.path=e.scheme===void 0&&!s&&o.path[0]!=="/"?wk(o.path):js(o.path)}o.query=t.query}o.userinfo=e.userinfo,o.host=e.host,o.port=e.port}o.scheme=e.scheme}return o.fragment=t.fragment,o}function pA(e,t,r){let n=zk(e,r),o=zk(t,r);return n!==void 0&&o!==void 0&&n===o}function In(e,t){let r={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:""},n=Object.assign({},t),o=[];r.scheme&&(r.scheme=vk(r.scheme));let s=ld(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let a=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,i=(r.scheme===void 0||n.reference==="suffix")&&!a,l=!n.skipEscape&&i;r.path!==void 0&&(n.skipEscape?r.path=id(r.path):r.path=yk(r.path,l)),n.reference!=="suffix"&&r.scheme&&(r.scheme=vk(r.scheme),o.push(r.scheme,":"));let c=nA(r);if(c!==void 0&&(n.reference!=="suffix"&&o.push("//"),o.push(c),r.path&&r.path[0]!=="/"&&o.push("/")),r.path!==void 0){let u=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(u=i&&u[0]!=="/"?wk(u):js(u)),i&&(u=yk(u,!0)),c===void 0&&u[0]==="/"&&u[1]==="/"&&(u="/%2F"+u.slice(2)),o.push(u)}return r.query!==void 0&&o.push("?",sA(r.query)),r.fragment!==void 0&&o.push("#",aA(r.fragment)),o.join("")}var fA=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,mA=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,hA=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function gA(e,t){if(t[2]!==void 0&&e.path&&e.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof e.port=="number"&&(e.port<0||e.port>65535))return"URI port is malformed."}function Rs(e){if(e===void 0)return!1;let t=e.indexOf("%");for(;t!==-1;){if(t+2>=e.length||!/^[\da-f]{2}$/iu.test(e.slice(t+1,t+3)))return!0;t=e.indexOf("%",t+3)}return!1}function qi(e){return e[0]==="["&&e[e.length-1]==="]"}function bA(e){let t=e[4];return Rs(e[3])||t!==void 0&&!qi(t)&&Rs(t)||Rs(e[6])||Rs(e[7])||Rs(e[8])}function Ak(e,t,r,n){if(Ok(e,t,r,n))return e.error=e.error||Bi,!0;if(!t.unicodeSupport&&(!r||!r.unicodeSupport)&&e.host&&!qi(e.host)&&(t.domainHost||r&&r.domainHost)&&n===!1&&lA(e.host)){let o;try{o=new URL("http://"+e.host)}catch(s){return e.error=e.error||"Host's domain name can not be converted to ASCII: "+s,!0}if(!yA(o))return e.error=e.error||Bi,!0;e.host=o.hostname}return!1}function Ok(e,t,r,n){return!!(e.host&&n===!1&&!qi(e.host)&&(t.domainHost||r&&r.domainHost)&&cA.test(e.host))}function yA(e){return e.username===""&&e.password===""&&e.port===""&&e.pathname==="/"&&e.search===""&&e.hash===""&&e.hostname!==""}function Gi(e,t){let r=Object.assign({},t),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},o=!1,s=!1,a=!1,i=!1,l=!1,c=!1,u=!1;r.reference==="suffix"&&(r.scheme?e=r.scheme+":"+e:e="//"+e);let d=e.match(mA);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",o=!0);let p=e.match(hA);if(p!==null){let b=p[1],f=b.replace(/[\t\n\r]/g,"");f.length>=2&&(f.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",o=!0):b.length!==f.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",o=!0))}let m=e.match(fA);if(m){n.scheme=m[1],n.userinfo=m[3],n.host=m[4],n.port=parseInt(m[5],10),n.path=m[6]||"",n.query=m[7],n.fragment=m[8],n.scheme!==void 0&&(Pk.test(n.scheme)?n.scheme=n.scheme.toLowerCase():(n.error=n.error||$k,c=!0)),s=bA(m),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=m[5]);let b=gA(n,m);if(b!==void 0&&(n.error=n.error||b,o=!0),n.host)if(xk(n.host)===!1){let g=qi(n.host),v=n.host.indexOf("[")!==-1||n.host.indexOf("]")!==-1,_=_k(n.host);u=_.isIPV6||_.isIPVFuture===!0,l=v&&(!g||_.error===!0),n.host=u?_.host:_.host.toLowerCase(),l&&(n.error=n.error||Bi,o=!0)}else u=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let f=ld(r.scheme||n.scheme);if(l||(i=Ak(n,r,f,u)),e.indexOf("%")!==-1&&n.host!==void 0&&!l){let h=u?n.host:id(n.host,!0);u||(h=id(h.toLowerCase())),n.host=u||r.scheme!=="null"?iA(h,u):h}(!f||f&&!f.skipNormalize)&&(n.path&&(n.path=oA(n.path)),n.query&&(n.query=kk(n.query)),n.fragment&&(n.fragment=kk(n.fragment))),f&&f.parse&&(f.parse(n,r),f===Sk.urn&&n.nid===void 0&&(a=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:c}}function Ui(e,t){return Gi(e,t).parsed}function kA(e,t){return Ik(e,t).normalized}function Ik(e,t){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}=Gi(e,t);return{normalized:n||o||s||a||i?e:In(r,t),malformedAuthorityOrPort:n,malformedPercentEncoding:o,malformedSchemeSpecific:s,malformedHost:a,malformedScheme:i}}function zk(e,t){if(typeof e!="string"&&typeof e!="object")return;let r;try{r=typeof e=="string"?e:In(e,t)}catch{return}let{normalized:n,malformedAuthorityOrPort:o,malformedPercentEncoding:s,malformedSchemeSpecific:a,malformedHost:i,malformedScheme:l}=Ik(r,t);return o||s||a||i||l?void 0:n}var cd={SCHEMES:Sk,normalize:uA,resolve:dA,resolveComponent:Ek,equal:pA,serialize:In,parse:Ui};Ki.exports=cd;Ki.exports.default=cd;Ki.exports.fastUri=cd});var Nk=U(ud=>{"use strict";Object.defineProperty(ud,"__esModule",{value:!0});var Ck=Tk();Ck.code='require("ajv/dist/runtime/uri").default';ud.default=Ck});var Zk=U(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.CodeGen=St.Name=St.nil=St.stringify=St.str=St._=St.KeywordCxt=void 0;var vA=Cs();Object.defineProperty(St,"KeywordCxt",{enumerable:!0,get:function(){return vA.KeywordCxt}});var ho=be();Object.defineProperty(St,"_",{enumerable:!0,get:function(){return ho._}});Object.defineProperty(St,"str",{enumerable:!0,get:function(){return ho.str}});Object.defineProperty(St,"stringify",{enumerable:!0,get:function(){return ho.stringify}});Object.defineProperty(St,"nil",{enumerable:!0,get:function(){return ho.nil}});Object.defineProperty(St,"Name",{enumerable:!0,get:function(){return ho.Name}});Object.defineProperty(St,"CodeGen",{enumerable:!0,get:function(){return ho.CodeGen}});var zA=Di(),Lk=Ns(),_A=Cu(),Ms=Vi(),wA=be(),Ds=Os(),Hi=As(),pd=Ce(),Rk=ok(),xA=Nk(),Vk=(e,t)=>new RegExp(e,t);Vk.code="new RegExp";var SA=["removeAdditional","useDefaults","coerceTypes"],PA=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),$A={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."},EA={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},jk=200;function AA(e){var t,r,n,o,s,a,i,l,c,u,d,p,m,b,f,h,g,v,_,w,k,P,A,Z,D;let B=e.strict,K=(t=e.code)===null||t===void 0?void 0:t.optimize,x=K===!0||K===void 0?1:K||0,$=(n=(r=e.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:Vk,F=(o=e.uriResolver)!==null&&o!==void 0?o:xA.default;return{strictSchema:(a=(s=e.strictSchema)!==null&&s!==void 0?s:B)!==null&&a!==void 0?a:!0,strictNumbers:(l=(i=e.strictNumbers)!==null&&i!==void 0?i:B)!==null&&l!==void 0?l:!0,strictTypes:(u=(c=e.strictTypes)!==null&&c!==void 0?c:B)!==null&&u!==void 0?u:"log",strictTuples:(p=(d=e.strictTuples)!==null&&d!==void 0?d:B)!==null&&p!==void 0?p:"log",strictRequired:(b=(m=e.strictRequired)!==null&&m!==void 0?m:B)!==null&&b!==void 0?b:!1,code:e.code?{...e.code,optimize:x,regExp:$}:{optimize:x,regExp:$},loopRequired:(f=e.loopRequired)!==null&&f!==void 0?f:jk,loopEnum:(h=e.loopEnum)!==null&&h!==void 0?h:jk,meta:(g=e.meta)!==null&&g!==void 0?g:!0,messages:(v=e.messages)!==null&&v!==void 0?v:!0,inlineRefs:(_=e.inlineRefs)!==null&&_!==void 0?_:!0,schemaId:(w=e.schemaId)!==null&&w!==void 0?w:"$id",addUsedSchema:(k=e.addUsedSchema)!==null&&k!==void 0?k:!0,validateSchema:(P=e.validateSchema)!==null&&P!==void 0?P:!0,validateFormats:(A=e.validateFormats)!==null&&A!==void 0?A:!0,unicodeRegExp:(Z=e.unicodeRegExp)!==null&&Z!==void 0?Z:!0,int32range:(D=e.int32range)!==null&&D!==void 0?D:!0,uriResolver:F}}var Ls=class{constructor(t={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,t=this.opts={...t,...AA(t)};let{es5:r,lines:n}=this.opts.code;this.scope=new wA.ValueScope({scope:{},prefixes:PA,es5:r,lines:n}),this.logger=RA(t.logger);let o=t.validateFormats;t.validateFormats=!1,this.RULES=(0,_A.getRules)(),Mk.call(this,$A,t,"NOT SUPPORTED"),Mk.call(this,EA,t,"DEPRECATED","warn"),this._metaOpts=CA.call(this),t.formats&&IA.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),t.keywords&&TA.call(this,t.keywords),typeof t.meta=="object"&&this.addMetaSchema(t.meta),OA.call(this),t.validateFormats=o}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:t,meta:r,schemaId:n}=this.opts,o=Rk;n==="id"&&(o={...Rk},o.id=o.$id,delete o.$id),r&&t&&this.addMetaSchema(o,o[n],!1)}defaultMeta(){let{meta:t,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof t=="object"?t[r]||t:void 0}validate(t,r){let n;if(typeof t=="string"){if(n=this.getSchema(t),!n)throw new Error(`no schema with key or ref "${t}"`)}else n=this.compile(t);let o=n(r);return"$async"in n||(this.errors=n.errors),o}compile(t,r){let n=this._addSchema(t,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(t,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return o.call(this,t,r);async function o(u,d){await s.call(this,u.$schema);let p=this._addSchema(u,d);return p.validate||a.call(this,p)}async function s(u){u&&!this.getSchema(u)&&await o.call(this,{$ref:u},!0)}async function a(u){try{return this._compileSchemaEnv(u)}catch(d){if(!(d instanceof Lk.default))throw d;return i.call(this,d),await l.call(this,d.missingSchema),a.call(this,u)}}function i({missingSchema:u,missingRef:d}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${d} cannot be resolved`)}async function l(u){let d=await c.call(this,u);this.refs[u]||await s.call(this,d.$schema),this.refs[u]||this.addSchema(d,u,r)}async function c(u){let d=this._loading[u];if(d)return d;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(t,r,n,o=this.opts.validateSchema){if(Array.isArray(t)){for(let a of t)this.addSchema(a,void 0,n,o);return this}let s;if(typeof t=="object"){let{schemaId:a}=this.opts;if(s=t[a],s!==void 0&&typeof s!="string")throw new Error(`schema ${a} must be string`)}return r=(0,Ds.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(t,n,r,o,!0),this}addMetaSchema(t,r,n=this.opts.validateSchema){return this.addSchema(t,r,!0,n),this}validateSchema(t,r){if(typeof t=="boolean")return!0;let n;if(n=t.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let o=this.validate(n,t);if(!o&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return o}getSchema(t){let r;for(;typeof(r=Dk.call(this,t))=="string";)t=r;if(r===void 0){let{schemaId:n}=this.opts,o=new Ms.SchemaEnv({schema:{},schemaId:n});if(r=Ms.resolveSchema.call(this,o,t),!r)return;this.refs[t]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(t){if(t instanceof RegExp)return this._removeAllSchemas(this.schemas,t),this._removeAllSchemas(this.refs,t),this;switch(typeof t){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=Dk.call(this,t);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[t],delete this.refs[t],this}case"object":{let r=t;this._cache.delete(r);let n=t[this.opts.schemaId];return n&&(n=(0,Ds.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(t){for(let r of t)this.addKeyword(r);return this}addKeyword(t,r){let n;if(typeof t=="string")n=t,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof t=="object"&&r===void 0){if(r=t,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(MA.call(this,n,r),!r)return(0,pd.eachItem)(n,s=>dd.call(this,s)),this;LA.call(this,r);let o={...r,type:(0,Hi.getJSONTypes)(r.type),schemaType:(0,Hi.getJSONTypes)(r.schemaType)};return(0,pd.eachItem)(n,o.type.length===0?s=>dd.call(this,s,o):s=>o.type.forEach(a=>dd.call(this,s,o,a))),this}getKeyword(t){let r=this.RULES.all[t];return typeof r=="object"?r.definition:!!r}removeKeyword(t){let{RULES:r}=this;delete r.keywords[t],delete r.all[t];for(let n of r.rules){let o=n.rules.findIndex(s=>s.keyword===t);o>=0&&n.rules.splice(o,1)}return this}addFormat(t,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[t]=r,this}errorsText(t=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!t||t.length===0?"No errors":t.map(o=>`${n}${o.instancePath} ${o.message}`).reduce((o,s)=>o+r+s)}$dataMetaSchema(t,r){let n=this.RULES.all;t=JSON.parse(JSON.stringify(t));for(let o of r){let s=o.split("/").slice(1),a=t;for(let i of s)a=a[i];for(let i in n){let l=n[i];if(typeof l!="object")continue;let{$data:c}=l.definition,u=a[i];c&&u&&(a[i]=Fk(u))}}return t}_removeAllSchemas(t,r){for(let n in t){let o=t[n];(!r||r.test(n))&&(typeof o=="string"?delete t[n]:o&&!o.meta&&(this._cache.delete(o.schema),delete t[n]))}}_addSchema(t,r,n,o=this.opts.validateSchema,s=this.opts.addUsedSchema){let a,{schemaId:i}=this.opts;if(typeof t=="object")a=t[i];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof t!="boolean")throw new Error("schema must be object or boolean")}let l=this._cache.get(t);if(l!==void 0)return l;n=(0,Ds.normalizeId)(a||n);let c=Ds.getSchemaRefs.call(this,t,n);return l=new Ms.SchemaEnv({schema:t,schemaId:i,meta:r,baseId:n,localRefs:c}),this._cache.set(l.schema,l),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=l),o&&this.validateSchema(t,!0),l}_checkUnique(t){if(this.schemas[t]||this.refs[t])throw new Error(`schema with key or id "${t}" already exists`)}_compileSchemaEnv(t){if(t.meta?this._compileMetaSchema(t):Ms.compileSchema.call(this,t),!t.validate)throw new Error("ajv implementation error");return t.validate}_compileMetaSchema(t){let r=this.opts;this.opts=this._metaOpts;try{Ms.compileSchema.call(this,t)}finally{this.opts=r}}};Ls.ValidationError=zA.default;Ls.MissingRefError=Lk.default;St.default=Ls;function Mk(e,t,r,n="error"){for(let o in e){let s=o;s in t&&this.logger[n](`${r}: option ${o}. ${e[s]}`)}}function Dk(e){return e=(0,Ds.normalizeId)(e),this.schemas[e]||this.refs[e]}function OA(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function IA(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}function TA(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let t in e){let r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}function CA(){let e={...this.opts};for(let t of SA)delete e[t];return e}var NA={log(){},warn(){},error(){}};function RA(e){if(e===!1)return NA;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}var jA=/^[a-z_$][a-z0-9_$:-]*$/i;function MA(e,t){let{RULES:r}=this;if((0,pd.eachItem)(e,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!jA.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!t&&t.$data&&!("code"in t||"validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function dd(e,t,r){var n;let o=t?.post;if(r&&o)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,a=o?s.post:s.rules.find(({type:l})=>l===r);if(a||(a={type:r,rules:[]},s.rules.push(a)),s.keywords[e]=!0,!t)return;let i={keyword:e,definition:{...t,type:(0,Hi.getJSONTypes)(t.type),schemaType:(0,Hi.getJSONTypes)(t.schemaType)}};t.before?DA.call(this,a,i,t.before):a.rules.push(i),s.all[e]=i,(n=t.implements)===null||n===void 0||n.forEach(l=>this.addKeyword(l))}function DA(e,t,r){let n=e.rules.findIndex(o=>o.keyword===r);n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function LA(e){let{metaSchema:t}=e;t!==void 0&&(e.$data&&this.opts.$data&&(t=Fk(t)),e.validateSchema=this.compile(t,!0))}var VA={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Fk(e){return{anyOf:[e,VA]}}});var Bk=U(fd=>{"use strict";Object.defineProperty(fd,"__esModule",{value:!0});var FA={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};fd.default=FA});var Kk=U(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.callRef=Tn.getValidate=void 0;var ZA=Ns(),Gk=rr(),Bt=be(),go=Br(),Uk=Vi(),Wi=Ce(),BA={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:n}=e,{baseId:o,schemaEnv:s,validateName:a,opts:i,self:l}=n,{root:c}=s;if((r==="#"||r==="#/")&&o===c.baseId)return d();let u=Uk.resolveRef.call(l,c,o,r);if(u===void 0)throw new ZA.default(n.opts.uriResolver,o,r);if(u instanceof Uk.SchemaEnv)return p(u);return m(u);function d(){if(s===c)return Ji(e,a,s,s.$async);let b=t.scopeValue("root",{ref:c});return Ji(e,(0,Bt._)`${b}.validate`,c,c.$async)}function p(b){let f=qk(e,b);Ji(e,f,b,b.$async)}function m(b){let f=t.scopeValue("schema",i.code.source===!0?{ref:b,code:(0,Bt.stringify)(b)}:{ref:b}),h=t.name("valid"),g=e.subschema({schema:b,dataTypes:[],schemaPath:Bt.nil,topSchemaRef:f,errSchemaPath:r},h);e.mergeEvaluated(g),e.ok(h)}}};function qk(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):(0,Bt._)`${r.scopeValue("wrapper",{ref:t})}.validate`}Tn.getValidate=qk;function Ji(e,t,r,n){let{gen:o,it:s}=e,{allErrors:a,schemaEnv:i,opts:l}=s,c=l.passContext?go.default.this:Bt.nil;n?u():d();function u(){if(!i.$async)throw new Error("async schema referenced by sync schema");let b=o.let("valid");o.try(()=>{o.code((0,Bt._)`await ${(0,Gk.callValidateCode)(e,t,c)}`),m(t),a||o.assign(b,!0)},f=>{o.if((0,Bt._)`!(${f} instanceof ${s.ValidationError})`,()=>o.throw(f)),p(f),a||o.assign(b,!1)}),e.ok(b)}function d(){e.result((0,Gk.callValidateCode)(e,t,c),()=>m(t),()=>p(t))}function p(b){let f=(0,Bt._)`${b}.errors`;o.assign(go.default.vErrors,(0,Bt._)`${go.default.vErrors} === null ? ${f} : ${go.default.vErrors}.concat(${f})`),o.assign(go.default.errors,(0,Bt._)`${go.default.vErrors}.length`)}function m(b){var f;if(!s.opts.unevaluated)return;let h=(f=r?.validate)===null||f===void 0?void 0:f.evaluated;if(s.props!==!0)if(h&&!h.dynamicProps)h.props!==void 0&&(s.props=Wi.mergeEvaluated.props(o,h.props,s.props));else{let g=o.var("props",(0,Bt._)`${b}.evaluated.props`);s.props=Wi.mergeEvaluated.props(o,g,s.props,Bt.Name)}if(s.items!==!0)if(h&&!h.dynamicItems)h.items!==void 0&&(s.items=Wi.mergeEvaluated.items(o,h.items,s.items));else{let g=o.var("items",(0,Bt._)`${b}.evaluated.items`);s.items=Wi.mergeEvaluated.items(o,g,s.items,Bt.Name)}}}Tn.callRef=Ji;Tn.default=BA});var Hk=U(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});var GA=Bk(),UA=Kk(),qA=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",GA.default,UA.default];md.default=qA});var Wk=U(hd=>{"use strict";Object.defineProperty(hd,"__esModule",{value:!0});var Yi=be(),pn=Yi.operators,Xi={maximum:{okStr:"<=",ok:pn.LTE,fail:pn.GT},minimum:{okStr:">=",ok:pn.GTE,fail:pn.LT},exclusiveMaximum:{okStr:"<",ok:pn.LT,fail:pn.GTE},exclusiveMinimum:{okStr:">",ok:pn.GT,fail:pn.LTE}},KA={message:({keyword:e,schemaCode:t})=>(0,Yi.str)`must be ${Xi[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,Yi._)`{comparison: ${Xi[e].okStr}, limit: ${t}}`},HA={keyword:Object.keys(Xi),type:"number",schemaType:"number",$data:!0,error:KA,code(e){let{keyword:t,data:r,schemaCode:n}=e;e.fail$data((0,Yi._)`${r} ${Xi[t].fail} ${n} || isNaN(${r})`)}};hd.default=HA});var Jk=U(gd=>{"use strict";Object.defineProperty(gd,"__esModule",{value:!0});var Vs=be(),WA={message:({schemaCode:e})=>(0,Vs.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,Vs._)`{multipleOf: ${e}}`},JA={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:WA,code(e){let{gen:t,data:r,schemaCode:n,it:o}=e,s=o.opts.multipleOfPrecision,a=t.let("res"),i=s?(0,Vs._)`Math.abs(Math.round(${a}) - ${a}) > 1e-${s}`:(0,Vs._)`${a} !== parseInt(${a})`;e.fail$data((0,Vs._)`(${n} === 0 || (${a} = ${r}/${n}, ${i}))`)}};gd.default=JA});var Xk=U(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});function Yk(e){let t=e.length,r=0,n=0,o;for(;n<t;)r++,o=e.charCodeAt(n++),o>=55296&&o<=56319&&n<t&&(o=e.charCodeAt(n),(o&64512)===56320&&n++);return r}bd.default=Yk;Yk.code='require("ajv/dist/runtime/ucs2length").default'});var Qk=U(yd=>{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});var Cn=be(),YA=Ce(),XA=Xk(),QA={message({keyword:e,schemaCode:t}){let r=e==="maxLength"?"more":"fewer";return(0,Cn.str)`must NOT have ${r} than ${t} characters`},params:({schemaCode:e})=>(0,Cn._)`{limit: ${e}}`},eO={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:QA,code(e){let{keyword:t,data:r,schemaCode:n,it:o}=e,s=t==="maxLength"?Cn.operators.GT:Cn.operators.LT,a=o.opts.unicode===!1?(0,Cn._)`${r}.length`:(0,Cn._)`${(0,YA.useFunc)(e.gen,XA.default)}(${r})`;e.fail$data((0,Cn._)`${a} ${s} ${n}`)}};yd.default=eO});var e0=U(kd=>{"use strict";Object.defineProperty(kd,"__esModule",{value:!0});var tO=rr(),rO=Ce(),bo=be(),nO={message:({schemaCode:e})=>(0,bo.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,bo._)`{pattern: ${e}}`},oO={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:nO,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e,i=a.opts.unicodeRegExp?"u":"";if(n){let{regExp:l}=a.opts.code,c=l.code==="new RegExp"?(0,bo._)`new RegExp`:(0,rO.useFunc)(t,l),u=t.let("valid");t.try(()=>t.assign(u,(0,bo._)`${c}(${s}, ${i}).test(${r})`),()=>t.assign(u,!1)),e.fail$data((0,bo._)`!${u}`)}else{let l=(0,tO.usePattern)(e,o);e.fail$data((0,bo._)`!${l}.test(${r})`)}}};kd.default=oO});var t0=U(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var Fs=be(),sO={message({keyword:e,schemaCode:t}){let r=e==="maxProperties"?"more":"fewer";return(0,Fs.str)`must NOT have ${r} than ${t} properties`},params:({schemaCode:e})=>(0,Fs._)`{limit: ${e}}`},aO={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:sO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxProperties"?Fs.operators.GT:Fs.operators.LT;e.fail$data((0,Fs._)`Object.keys(${r}).length ${o} ${n}`)}};vd.default=aO});var r0=U(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});var Zs=rr(),Bs=be(),iO=Ce(),lO={message:({params:{missingProperty:e}})=>(0,Bs.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,Bs._)`{missingProperty: ${e}}`},cO={keyword:"required",type:"object",schemaType:"array",$data:!0,error:lO,code(e){let{gen:t,schema:r,schemaCode:n,data:o,$data:s,it:a}=e,{opts:i}=a;if(!s&&r.length===0)return;let l=r.length>=i.loopRequired;if(a.allErrors?c():u(),i.strictRequired){let m=e.parentSchema.properties,{definedProperties:b}=e.it;for(let f of r)if(m?.[f]===void 0&&!b.has(f)){let h=a.schemaEnv.baseId+a.errSchemaPath,g=`required property "${f}" is not defined at "${h}" (strictRequired)`;(0,iO.checkStrictMode)(a,g,a.opts.strictRequired)}}function c(){if(l||s)e.block$data(Bs.nil,d);else for(let m of r)(0,Zs.checkReportMissingProp)(e,m)}function u(){let m=t.let("missing");if(l||s){let b=t.let("valid",!0);e.block$data(b,()=>p(m,b)),e.ok(b)}else t.if((0,Zs.checkMissingProp)(e,r,m)),(0,Zs.reportMissingProp)(e,m),t.else()}function d(){t.forOf("prop",n,m=>{e.setParams({missingProperty:m}),t.if((0,Zs.noPropertyInData)(t,o,m,i.ownProperties),()=>e.error())})}function p(m,b){e.setParams({missingProperty:m}),t.forOf(m,n,()=>{t.assign(b,(0,Zs.propertyInData)(t,o,m,i.ownProperties)),t.if((0,Bs.not)(b),()=>{e.error(),t.break()})},Bs.nil)}}};zd.default=cO});var n0=U(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});var Gs=be(),uO={message({keyword:e,schemaCode:t}){let r=e==="maxItems"?"more":"fewer";return(0,Gs.str)`must NOT have ${r} than ${t} items`},params:({schemaCode:e})=>(0,Gs._)`{limit: ${e}}`},dO={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:uO,code(e){let{keyword:t,data:r,schemaCode:n}=e,o=t==="maxItems"?Gs.operators.GT:Gs.operators.LT;e.fail$data((0,Gs._)`${r}.length ${o} ${n}`)}};_d.default=dO});var Qi=U(wd=>{"use strict";Object.defineProperty(wd,"__esModule",{value:!0});var o0=Fu();o0.code='require("ajv/dist/runtime/equal").default';wd.default=o0});var s0=U(Sd=>{"use strict";Object.defineProperty(Sd,"__esModule",{value:!0});var xd=As(),Pt=be(),pO=Ce(),fO=Qi(),mO={message:({params:{i:e,j:t}})=>(0,Pt.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,Pt._)`{i: ${e}, j: ${t}}`},hO={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:mO,code(e){let{gen:t,data:r,$data:n,schema:o,parentSchema:s,schemaCode:a,it:i}=e;if(!n&&!o)return;let l=t.let("valid"),c=s.items?(0,xd.getSchemaTypes)(s.items):[];e.block$data(l,u,(0,Pt._)`${a} === false`),e.ok(l);function u(){let b=t.let("i",(0,Pt._)`${r}.length`),f=t.let("j");e.setParams({i:b,j:f}),t.assign(l,!0),t.if((0,Pt._)`${b} > 1`,()=>(d()?p:m)(b,f))}function d(){return c.length>0&&!c.some(b=>b==="object"||b==="array")}function p(b,f){let h=t.name("item"),g=(0,xd.checkDataTypes)(c,h,i.opts.strictNumbers,xd.DataType.Wrong),v=t.const("indices",(0,Pt._)`{}`);t.for((0,Pt._)`;${b}--;`,()=>{t.let(h,(0,Pt._)`${r}[${b}]`),t.if(g,(0,Pt._)`continue`),c.length>1&&t.if((0,Pt._)`typeof ${h} == "string"`,(0,Pt._)`${h} += "_"`),t.if((0,Pt._)`typeof ${v}[${h}] == "number"`,()=>{t.assign(f,(0,Pt._)`${v}[${h}]`),e.error(),t.assign(l,!1).break()}).code((0,Pt._)`${v}[${h}] = ${b}`)})}function m(b,f){let h=(0,pO.useFunc)(t,fO.default),g=t.name("outer");t.label(g).for((0,Pt._)`;${b}--;`,()=>t.for((0,Pt._)`${f} = ${b}; ${f}--;`,()=>t.if((0,Pt._)`${h}(${r}[${b}], ${r}[${f}])`,()=>{e.error(),t.assign(l,!1).break(g)})))}}};Sd.default=hO});var a0=U($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});var Pd=be(),gO=Ce(),bO=Qi(),yO={message:"must be equal to constant",params:({schemaCode:e})=>(0,Pd._)`{allowedValue: ${e}}`},kO={keyword:"const",$data:!0,error:yO,code(e){let{gen:t,data:r,$data:n,schemaCode:o,schema:s}=e;n||s&&typeof s=="object"?e.fail$data((0,Pd._)`!${(0,gO.useFunc)(t,bO.default)}(${r}, ${o})`):e.fail((0,Pd._)`${s} !== ${r}`)}};$d.default=kO});var i0=U(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});var Us=be(),vO=Ce(),zO=Qi(),_O={message:"must be equal to one of the allowed values",params:({schemaCode:e})=>(0,Us._)`{allowedValues: ${e}}`},wO={keyword:"enum",schemaType:"array",$data:!0,error:_O,code(e){let{gen:t,data:r,$data:n,schema:o,schemaCode:s,it:a}=e;if(!n&&o.length===0)throw new Error("enum must have non-empty array");let i=o.length>=a.opts.loopEnum,l,c=()=>l??(l=(0,vO.useFunc)(t,zO.default)),u;if(i||n)u=t.let("valid"),e.block$data(u,d);else{if(!Array.isArray(o))throw new Error("ajv implementation error");let m=t.const("vSchema",s);u=(0,Us.or)(...o.map((b,f)=>p(m,f)))}e.pass(u);function d(){t.assign(u,!1),t.forOf("v",s,m=>t.if((0,Us._)`${c()}(${r}, ${m})`,()=>t.assign(u,!0).break()))}function p(m,b){let f=o[b];return typeof f=="object"&&f!==null?(0,Us._)`${c()}(${r}, ${m}[${b}])`:(0,Us._)`${r} === ${f}`}}};Ed.default=wO});var l0=U(Ad=>{"use strict";Object.defineProperty(Ad,"__esModule",{value:!0});var xO=Wk(),SO=Jk(),PO=Qk(),$O=e0(),EO=t0(),AO=r0(),OO=n0(),IO=s0(),TO=a0(),CO=i0(),NO=[xO.default,SO.default,PO.default,$O.default,EO.default,AO.default,OO.default,IO.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},TO.default,CO.default];Ad.default=NO});var Id=U(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.validateAdditionalItems=void 0;var Nn=be(),Od=Ce(),RO={message:({params:{len:e}})=>(0,Nn.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,Nn._)`{limit: ${e}}`},jO={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:RO,code(e){let{parentSchema:t,it:r}=e,{items:n}=t;if(!Array.isArray(n)){(0,Od.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}c0(e,n)}};function c0(e,t){let{gen:r,schema:n,data:o,keyword:s,it:a}=e;a.items=!0;let i=r.const("len",(0,Nn._)`${o}.length`);if(n===!1)e.setParams({len:t.length}),e.pass((0,Nn._)`${i} <= ${t.length}`);else if(typeof n=="object"&&!(0,Od.alwaysValidSchema)(a,n)){let c=r.var("valid",(0,Nn._)`${i} <= ${t.length}`);r.if((0,Nn.not)(c),()=>l(c)),e.ok(c)}function l(c){r.forRange("i",t.length,i,u=>{e.subschema({keyword:s,dataProp:u,dataPropType:Od.Type.Num},c),a.allErrors||r.if((0,Nn.not)(c),()=>r.break())})}}qs.validateAdditionalItems=c0;qs.default=jO});var Td=U(Ks=>{"use strict";Object.defineProperty(Ks,"__esModule",{value:!0});Ks.validateTuple=void 0;var u0=be(),el=Ce(),MO=rr(),DO={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return d0(e,"additionalItems",t);r.items=!0,!(0,el.alwaysValidSchema)(r,t)&&e.ok((0,MO.validateArray)(e))}};function d0(e,t,r=e.schema){let{gen:n,parentSchema:o,data:s,keyword:a,it:i}=e;u(o),i.opts.unevaluated&&r.length&&i.items!==!0&&(i.items=el.mergeEvaluated.items(n,r.length,i.items));let l=n.name("valid"),c=n.const("len",(0,u0._)`${s}.length`);r.forEach((d,p)=>{(0,el.alwaysValidSchema)(i,d)||(n.if((0,u0._)`${c} > ${p}`,()=>e.subschema({keyword:a,schemaProp:p,dataProp:p},l)),e.ok(l))});function u(d){let{opts:p,errSchemaPath:m}=i,b=r.length,f=b===d.minItems&&(b===d.maxItems||d[t]===!1);if(p.strictTuples&&!f){let h=`"${a}" is ${b}-tuple, but minItems or maxItems/${t} are not specified or different at path "${m}"`;(0,el.checkStrictMode)(i,h,p.strictTuples)}}}Ks.validateTuple=d0;Ks.default=DO});var p0=U(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});var LO=Td(),VO={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>(0,LO.validateTuple)(e,"items")};Cd.default=VO});var m0=U(Nd=>{"use strict";Object.defineProperty(Nd,"__esModule",{value:!0});var f0=be(),FO=Ce(),ZO=rr(),BO=Id(),GO={message:({params:{len:e}})=>(0,f0.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,f0._)`{limit: ${e}}`},UO={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:GO,code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:o}=r;n.items=!0,!(0,FO.alwaysValidSchema)(n,t)&&(o?(0,BO.validateAdditionalItems)(e,o):e.ok((0,ZO.validateArray)(e)))}};Nd.default=UO});var h0=U(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var or=be(),tl=Ce(),qO={message:({params:{min:e,max:t}})=>t===void 0?(0,or.str)`must contain at least ${e} valid item(s)`:(0,or.str)`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>t===void 0?(0,or._)`{minContains: ${e}}`:(0,or._)`{minContains: ${e}, maxContains: ${t}}`},KO={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:qO,code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e,a,i,{minContains:l,maxContains:c}=n;s.opts.next?(a=l===void 0?1:l,i=c):a=1;let u=t.const("len",(0,or._)`${o}.length`);if(e.setParams({min:a,max:i}),i===void 0&&a===0){(0,tl.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(i!==void 0&&a>i){(0,tl.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),e.fail();return}if((0,tl.alwaysValidSchema)(s,r)){let f=(0,or._)`${u} >= ${a}`;i!==void 0&&(f=(0,or._)`${f} && ${u} <= ${i}`),e.pass(f);return}s.items=!0;let d=t.name("valid");i===void 0&&a===1?m(d,()=>t.if(d,()=>t.break())):a===0?(t.let(d,!0),i!==void 0&&t.if((0,or._)`${o}.length > 0`,p)):(t.let(d,!1),p()),e.result(d,()=>e.reset());function p(){let f=t.name("_valid"),h=t.let("count",0);m(f,()=>t.if(f,()=>b(h)))}function m(f,h){t.forRange("i",0,u,g=>{e.subschema({keyword:"contains",dataProp:g,dataPropType:tl.Type.Num,compositeRule:!0},f),h()})}function b(f){t.code((0,or._)`${f}++`),i===void 0?t.if((0,or._)`${f} >= ${a}`,()=>t.assign(d,!0).break()):(t.if((0,or._)`${f} > ${i}`,()=>t.assign(d,!1).break()),a===1?t.assign(d,!0):t.if((0,or._)`${f} >= ${a}`,()=>t.assign(d,!0)))}}};Rd.default=KO});var y0=U(Pr=>{"use strict";Object.defineProperty(Pr,"__esModule",{value:!0});Pr.validateSchemaDeps=Pr.validatePropertyDeps=Pr.error=void 0;var jd=be(),HO=Ce(),Hs=rr();Pr.error={message:({params:{property:e,depsCount:t,deps:r}})=>{let n=t===1?"property":"properties";return(0,jd.str)`must have ${n} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:r,missingProperty:n}})=>(0,jd._)`{property: ${e},
8
8
  missingProperty: ${n},
9
9
  depsCount: ${t},
10
- deps: ${r}}`};var KO={keyword:"dependencies",type:"object",schemaType:"object",error:Pr.error,code(e){let[t,r]=HO(e);g0(e,t),b0(e,r)}};function HO({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:r;o[n]=e[n]}return[t,r]}function g0(e,t=e.schema){let{gen:r,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let a in t){let i=t[a];if(i.length===0)continue;let c=(0,Ks.propertyInData)(r,n,a,o.opts.ownProperties);e.setParams({property:a,depsCount:i.length,deps:i.join(", ")}),o.allErrors?r.if(c,()=>{for(let l of i)(0,Ks.checkReportMissingProp)(e,l)}):(r.if((0,Rd._)`${c} && (${(0,Ks.checkMissingProp)(e,i,s)})`),(0,Ks.reportMissingProp)(e,s),r.else())}}Pr.validatePropertyDeps=g0;function b0(e,t=e.schema){let{gen:r,data:n,keyword:o,it:s}=e,a=r.name("valid");for(let i in t)(0,qO.alwaysValidSchema)(s,t[i])||(r.if((0,Ks.propertyInData)(r,n,i,s.opts.ownProperties),()=>{let c=e.subschema({keyword:o,schemaProp:i},a);e.mergeValidEvaluated(c,a)},()=>r.var(a,!0)),e.ok(a))}Pr.validateSchemaDeps=b0;Pr.default=KO});var v0=B(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});var k0=ge(),WO=Ce(),JO={message:"property name must be valid",params:({params:e})=>(0,k0._)`{propertyName: ${e.propertyName}}`},YO={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:JO,code(e){let{gen:t,schema:r,data:n,it:o}=e;if((0,WO.alwaysValidSchema)(o,r))return;let s=t.name("valid");t.forIn("key",n,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},s),t.if((0,k0.not)(s),()=>{e.error(!0),o.allErrors||t.break()})}),e.ok(s)}};jd.default=YO});var Dd=B(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});var Qi=rr(),hr=ge(),XO=Zr(),el=Ce(),QO={message:"must NOT have additional properties",params:({params:e})=>(0,hr._)`{additionalProperty: ${e.additionalProperty}}`},eI={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:QO,code(e){let{gen:t,schema:r,parentSchema:n,data:o,errsCount:s,it:a}=e;if(!s)throw new Error("ajv implementation error");let{allErrors:i,opts:c}=a;if(a.props=!0,c.removeAdditional!=="all"&&(0,el.alwaysValidSchema)(a,r))return;let l=(0,Qi.allSchemaProperties)(n.properties),u=(0,Qi.allSchemaProperties)(n.patternProperties);d(),e.ok((0,hr._)`${s} === ${XO.default.errors}`);function d(){t.forIn("key",o,m=>{!l.length&&!u.length?b(m):t.if(f(m),()=>b(m))})}function f(m){let g;if(l.length>8){let v=(0,el.schemaRefOrVal)(a,n.properties,"properties");g=(0,Qi.isOwnProperty)(t,v,m)}else l.length?g=(0,hr.or)(...l.map(v=>(0,hr._)`${m} === ${v}`)):g=hr.nil;return u.length&&(g=(0,hr.or)(g,...u.map(v=>(0,hr._)`${(0,Qi.usePattern)(e,v)}.test(${m})`))),(0,hr.not)(g)}function h(m){t.code((0,hr._)`delete ${o}[${m}]`)}function b(m){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){h(m);return}if(r===!1){e.setParams({additionalProperty:m}),e.error(),i||t.break();return}if(typeof r=="object"&&!(0,el.alwaysValidSchema)(a,r)){let g=t.name("valid");c.removeAdditional==="failing"?(p(m,g,!1),t.if((0,hr.not)(g),()=>{e.reset(),h(m)})):(p(m,g),i||t.if((0,hr.not)(g),()=>t.break()))}}function p(m,g,v){let _={keyword:"additionalProperties",dataProp:m,dataPropType:el.Type.Str};v===!1&&Object.assign(_,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(_,g)}}};Md.default=eI});var w0=B(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});var tI=Ts(),z0=rr(),Ld=Ce(),_0=Dd(),rI={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&_0.default.code(new tI.KeywordCxt(s,_0.default,"additionalProperties"));let a=(0,z0.allSchemaProperties)(r);for(let d of a)s.definedProperties.add(d);s.opts.unevaluated&&a.length&&s.props!==!0&&(s.props=Ld.mergeEvaluated.props(t,(0,Ld.toHash)(a),s.props));let i=a.filter(d=>!(0,Ld.alwaysValidSchema)(s,r[d]));if(i.length===0)return;let c=t.name("valid");for(let d of i)l(d)?u(d):(t.if((0,z0.propertyInData)(t,o,d,s.opts.ownProperties)),u(d),s.allErrors||t.else().var(c,!0),t.endIf()),e.it.definedProperties.add(d),e.ok(c);function l(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};Vd.default=rI});var $0=B(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});var x0=rr(),tl=ge(),S0=Ce(),P0=Ce(),nI={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:o,it:s}=e,{opts:a}=s,i=(0,x0.allSchemaProperties)(r),c=i.filter(p=>(0,S0.alwaysValidSchema)(s,r[p]));if(i.length===0||c.length===i.length&&(!s.opts.unevaluated||s.props===!0))return;let l=a.strictSchema&&!a.allowMatchingProperties&&o.properties,u=t.name("valid");s.props!==!0&&!(s.props instanceof tl.Name)&&(s.props=(0,P0.evaluatedPropsToName)(t,s.props));let{props:d}=s;f();function f(){for(let p of i)l&&h(p),s.allErrors?b(p):(t.var(u,!0),b(p),t.if(u))}function h(p){for(let m in l)new RegExp(p).test(m)&&(0,S0.checkStrictMode)(s,`property ${m} matches pattern ${p} (use allowMatchingProperties)`)}function b(p){t.forIn("key",n,m=>{t.if((0,tl._)`${(0,x0.usePattern)(e,p)}.test(${m})`,()=>{let g=c.includes(p);g||e.subschema({keyword:"patternProperties",schemaProp:p,dataProp:m,dataPropType:P0.Type.Str},u),s.opts.unevaluated&&d!==!0?t.assign((0,tl._)`${d}[${m}]`,!0):!g&&!s.allErrors&&t.if((0,tl.not)(u),()=>t.break())})})}}};Fd.default=nI});var E0=B(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});var oI=Ce(),sI={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,oI.alwaysValidSchema)(n,r)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Zd.default=sI});var A0=B(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var aI=rr(),iI={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:aI.validateUnion,error:{message:"must match a schema in anyOf"}};Bd.default=iI});var O0=B(Gd=>{"use strict";Object.defineProperty(Gd,"__esModule",{value:!0});var rl=ge(),lI=Ce(),cI={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,rl._)`{passingSchemas: ${e.passing}}`},uI={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:cI,code(e){let{gen:t,schema:r,parentSchema:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,a=t.let("valid",!1),i=t.let("passing",null),c=t.name("_valid");e.setParams({passing:i}),t.block(l),e.result(a,()=>e.reset(),()=>e.error(!0));function l(){s.forEach((u,d)=>{let f;(0,lI.alwaysValidSchema)(o,u)?t.var(c,!0):f=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&t.if((0,rl._)`${c} && ${a}`).assign(a,!1).assign(i,(0,rl._)`[${i}, ${d}]`).else(),t.if(c,()=>{t.assign(a,!0),t.assign(i,d),f&&e.mergeEvaluated(f,rl.Name)})})}}};Gd.default=uI});var I0=B(Ud=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var dI=Ce(),pI={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=t.name("valid");r.forEach((s,a)=>{if((0,dI.alwaysValidSchema)(n,s))return;let i=e.subschema({keyword:"allOf",schemaProp:a},o);e.ok(o),e.mergeEvaluated(i)})}};Ud.default=pI});var N0=B(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});var nl=ge(),C0=Ce(),fI={message:({params:e})=>(0,nl.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,nl._)`{failingKeyword: ${e.ifClause}}`},mI={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:fI,code(e){let{gen:t,parentSchema:r,it:n}=e;r.then===void 0&&r.else===void 0&&(0,C0.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=T0(n,"then"),s=T0(n,"else");if(!o&&!s)return;let a=t.let("valid",!0),i=t.name("_valid");if(c(),e.reset(),o&&s){let u=t.let("ifClause");e.setParams({ifClause:u}),t.if(i,l("then",u),l("else",u))}else o?t.if(i,l("then")):t.if((0,nl.not)(i),l("else"));e.pass(a,()=>e.error(!0));function c(){let u=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(u)}function l(u,d){return()=>{let f=e.subschema({keyword:u},i);t.assign(a,i),e.mergeValidEvaluated(f,a),d?t.assign(d,(0,nl._)`${u}`):e.setParams({ifClause:u})}}}};function T0(e,t){let r=e.schema[t];return r!==void 0&&!(0,C0.alwaysValidSchema)(e,r)}qd.default=mI});var R0=B(Kd=>{"use strict";Object.defineProperty(Kd,"__esModule",{value:!0});var hI=Ce(),gI={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){t.if===void 0&&(0,hI.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};Kd.default=gI});var j0=B(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});var bI=Od(),yI=p0(),kI=Id(),vI=m0(),zI=h0(),_I=y0(),wI=v0(),xI=Dd(),SI=w0(),PI=$0(),$I=E0(),EI=A0(),AI=O0(),OI=I0(),II=N0(),TI=R0();function CI(e=!1){let t=[$I.default,EI.default,AI.default,OI.default,II.default,TI.default,wI.default,xI.default,_I.default,SI.default,PI.default];return e?t.push(yI.default,vI.default):t.push(bI.default,kI.default),t.push(zI.default),t}Hd.default=CI});var M0=B(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});var at=ge(),NI={message:({schemaCode:e})=>(0,at.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,at._)`{format: ${e}}`},RI={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:NI,code(e,t){let{gen:r,data:n,$data:o,schema:s,schemaCode:a,it:i}=e,{opts:c,errSchemaPath:l,schemaEnv:u,self:d}=i;if(!c.validateFormats)return;o?f():h();function f(){let b=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),p=r.const("fDef",(0,at._)`${b}[${a}]`),m=r.let("fType"),g=r.let("format");r.if((0,at._)`typeof ${p} == "object" && !(${p} instanceof RegExp)`,()=>r.assign(m,(0,at._)`${p}.type || "string"`).assign(g,(0,at._)`${p}.validate`),()=>r.assign(m,(0,at._)`"string"`).assign(g,p)),e.fail$data((0,at.or)(v(),_()));function v(){return c.strictSchema===!1?at.nil:(0,at._)`${a} && !${g}`}function _(){let w=u.$async?(0,at._)`(${p}.async ? await ${g}(${n}) : ${g}(${n}))`:(0,at._)`${g}(${n})`,k=(0,at._)`(typeof ${g} == "function" ? ${w} : ${g}.test(${n}))`;return(0,at._)`${g} && ${g} !== true && ${m} === ${t} && !${k}`}}function h(){let b=d.formats[s];if(!b){v();return}if(b===!0)return;let[p,m,g]=_(b);p===t&&e.pass(w());function v(){if(c.strictSchema===!1){d.logger.warn(k());return}throw new Error(k());function k(){return`unknown format "${s}" ignored in schema at path "${l}"`}}function _(k){let P=k instanceof RegExp?(0,at.regexpCode)(k):c.code.formats?(0,at._)`${c.code.formats}${(0,at.getProperty)(s)}`:void 0,I=r.scopeValue("formats",{key:s,ref:k,code:P});return typeof k=="object"&&!(k instanceof RegExp)?[k.type||"string",k.validate,(0,at._)`${I}.validate`]:["string",k,I]}function w(){if(typeof b=="object"&&!(b instanceof RegExp)&&b.async){if(!u.$async)throw new Error("async format in sync schema");return(0,at._)`await ${g}(${n})`}return typeof m=="function"?(0,at._)`${g}(${n})`:(0,at._)`${g}.test(${n})`}}}};Wd.default=RI});var D0=B(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});var jI=M0(),MI=[jI.default];Jd.default=MI});var L0=B(bo=>{"use strict";Object.defineProperty(bo,"__esModule",{value:!0});bo.contentVocabulary=bo.metadataVocabulary=void 0;bo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];bo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var F0=B(Yd=>{"use strict";Object.defineProperty(Yd,"__esModule",{value:!0});var DI=Hk(),LI=l0(),VI=j0(),FI=D0(),V0=L0(),ZI=[DI.default,LI.default,(0,VI.default)(),FI.default,V0.metadataVocabulary,V0.contentVocabulary];Yd.default=ZI});var B0=B(ol=>{"use strict";Object.defineProperty(ol,"__esModule",{value:!0});ol.DiscrError=void 0;var Z0;(function(e){e.Tag="tag",e.Mapping="mapping"})(Z0||(ol.DiscrError=Z0={}))});var U0=B(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});var yo=ge(),Xd=B0(),G0=Mi(),BI=Cs(),GI=Ce(),UI={message:({params:{discrError:e,tagName:t}})=>e===Xd.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>(0,yo._)`{error: ${e}, tag: ${r}, tagValue: ${t}}`},qI={keyword:"discriminator",type:"object",schemaType:"object",error:UI,code(e){let{gen:t,data:r,schema:n,parentSchema:o,it:s}=e,{oneOf:a}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let i=n.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");let c=t.let("valid",!1),l=t.const("tag",(0,yo._)`${r}${(0,yo.getProperty)(i)}`);t.if((0,yo._)`typeof ${l} == "string"`,()=>u(),()=>e.error(!1,{discrError:Xd.DiscrError.Tag,tag:l,tagName:i})),e.ok(c);function u(){let h=f();t.if(!1);for(let b in h)t.elseIf((0,yo._)`${l} === ${b}`),t.assign(c,d(h[b]));t.else(),e.error(!1,{discrError:Xd.DiscrError.Mapping,tag:l,tagName:i}),t.endIf()}function d(h){let b=t.name("valid"),p=e.subschema({keyword:"oneOf",schemaProp:h},b);return e.mergeEvaluated(p,yo.Name),b}function f(){var h;let b={},p=g(o),m=!0;for(let w=0;w<a.length;w++){let k=a[w];if(k?.$ref&&!(0,GI.schemaHasRulesButRef)(k,s.self.RULES)){let I=k.$ref;if(k=G0.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,I),k instanceof G0.SchemaEnv&&(k=k.schema),k===void 0)throw new BI.default(s.opts.uriResolver,s.baseId,I)}let P=(h=k?.properties)===null||h===void 0?void 0:h[i];if(typeof P!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);m=m&&(p||g(k)),v(P,w)}if(!m)throw new Error(`discriminator: "${i}" must be required`);return b;function g({required:w}){return Array.isArray(w)&&w.includes(i)}function v(w,k){if(w.const)_(w.const,k);else if(w.enum)for(let P of w.enum)_(P,k);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function _(w,k){if(typeof w!="string"||w in b)throw new Error(`discriminator: "${i}" values must be unique strings`);b[w]=k}}}};Qd.default=qI});var q0=B((T4,KI)=>{KI.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}});var tp=B((Je,ep)=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.MissingRefError=Je.ValidationError=Je.CodeGen=Je.Name=Je.nil=Je.stringify=Je.str=Je._=Je.KeywordCxt=Je.Ajv=void 0;var HI=Zk(),WI=F0(),JI=U0(),K0=q0(),YI=["/properties"],sl="http://json-schema.org/draft-07/schema",ko=class extends HI.default{_addVocabularies(){super._addVocabularies(),WI.default.forEach(t=>this.addVocabulary(t)),this.opts.discriminator&&this.addKeyword(JI.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let t=this.opts.$data?this.$dataMetaSchema(K0,YI):K0;this.addMetaSchema(t,sl,!1),this.refs["http://json-schema.org/schema"]=sl}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(sl)?sl:void 0)}};Je.Ajv=ko;ep.exports=Je=ko;ep.exports.Ajv=ko;Object.defineProperty(Je,"__esModule",{value:!0});Je.default=ko;var XI=Ts();Object.defineProperty(Je,"KeywordCxt",{enumerable:!0,get:function(){return XI.KeywordCxt}});var vo=ge();Object.defineProperty(Je,"_",{enumerable:!0,get:function(){return vo._}});Object.defineProperty(Je,"str",{enumerable:!0,get:function(){return vo.str}});Object.defineProperty(Je,"stringify",{enumerable:!0,get:function(){return vo.stringify}});Object.defineProperty(Je,"nil",{enumerable:!0,get:function(){return vo.nil}});Object.defineProperty(Je,"Name",{enumerable:!0,get:function(){return vo.Name}});Object.defineProperty(Je,"CodeGen",{enumerable:!0,get:function(){return vo.CodeGen}});var QI=Ri();Object.defineProperty(Je,"ValidationError",{enumerable:!0,get:function(){return QI.default}});var eT=Cs();Object.defineProperty(Je,"MissingRefError",{enumerable:!0,get:function(){return eT.default}})});var tv=B(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.formatNames=Er.fastFormats=Er.fullFormats=void 0;function $r(e,t){return{validate:e,compare:t}}Er.fullFormats={date:$r(Y0,sp),time:$r(np(!0),ap),"date-time":$r(H0(!0),Q0),"iso-time":$r(np(),X0),"iso-date-time":$r(H0(),ev),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:aT,"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:fT,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:iT,int32:{type:"number",validate:uT},int64:{type:"number",validate:dT},float:{type:"number",validate:J0},double:{type:"number",validate:J0},password:!0,binary:!0};Er.fastFormats={...Er.fullFormats,date:$r(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,sp),time:$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ap),"date-time":$r(/^\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,Q0),"iso-time":$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,X0),"iso-date-time":$r(/^\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,ev),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};Er.formatNames=Object.keys(Er.fullFormats);function tT(e){return e%4===0&&(e%100!==0||e%400===0)}var rT=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,nT=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Y0(e){let t=rT.exec(e);if(!t)return!1;let r=+t[1],n=+t[2],o=+t[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&tT(r)?29:nT[n])}function sp(e,t){if(e&&t)return e>t?1:e<t?-1:0}var rp=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function np(e){return function(r){let n=rp.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],a=+n[3],i=n[4],c=n[5]==="-"?-1:1,l=+(n[6]||0),u=+(n[7]||0);if(l>23||u>59||e&&!i)return!1;if(o<=23&&s<=59&&a<60)return!0;let d=s-u*c,f=o-l*c-(d<0?1:0);return(f===23||f===-1)&&(d===59||d===-1)&&a<61}}function ap(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(r&&n)return r-n}function X0(e,t){if(!(e&&t))return;let r=rp.exec(e),n=rp.exec(t);if(r&&n)return e=r[1]+r[2]+r[3],t=n[1]+n[2]+n[3],e>t?1:e<t?-1:0}var op=/t|\s/i;function H0(e){let t=np(e);return function(n){let o=n.split(op);return o.length===2&&Y0(o[0])&&t(o[1])}}function Q0(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),n=new Date(t).valueOf();if(r&&n)return r-n}function ev(e,t){if(!(e&&t))return;let[r,n]=e.split(op),[o,s]=t.split(op),a=sp(r,o);if(a!==void 0)return a||ap(n,s)}var oT=/\/|:/,sT=/^(?:[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 aT(e){return oT.test(e)&&sT.test(e)}var W0=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function iT(e){return W0.lastIndex=0,W0.test(e)}var lT=-(2**31),cT=2**31-1;function uT(e){return Number.isInteger(e)&&e<=cT&&e>=lT}function dT(e){return Number.isInteger(e)}function J0(){return!0}var pT=/[^\\]\\Z/;function fT(e){if(pT.test(e))return!1;try{return new RegExp(e),!0}catch{return!1}}});var rv=B(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});zo.formatLimitDefinition=void 0;var mT=tp(),gr=ge(),pn=gr.operators,al={formatMaximum:{okStr:"<=",ok:pn.LTE,fail:pn.GT},formatMinimum:{okStr:">=",ok:pn.GTE,fail:pn.LT},formatExclusiveMaximum:{okStr:"<",ok:pn.LT,fail:pn.GTE},formatExclusiveMinimum:{okStr:">",ok:pn.GT,fail:pn.LTE}},hT={message:({keyword:e,schemaCode:t})=>(0,gr.str)`should be ${al[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,gr._)`{comparison: ${al[e].okStr}, limit: ${t}}`};zo.formatLimitDefinition={keyword:Object.keys(al),type:"string",schemaType:"string",$data:!0,error:hT,code(e){let{gen:t,data:r,schemaCode:n,keyword:o,it:s}=e,{opts:a,self:i}=s;if(!a.validateFormats)return;let c=new mT.KeywordCxt(s,i.RULES.all.format.definition,"format");c.$data?l():u();function l(){let f=t.scopeValue("formats",{ref:i.formats,code:a.code.formats}),h=t.const("fmt",(0,gr._)`${f}[${c.schemaCode}]`);e.fail$data((0,gr.or)((0,gr._)`typeof ${h} != "object"`,(0,gr._)`${h} instanceof RegExp`,(0,gr._)`typeof ${h}.compare != "function"`,d(h)))}function u(){let f=c.schema,h=i.formats[f];if(!h||h===!0)return;if(typeof h!="object"||h instanceof RegExp||typeof h.compare!="function")throw new Error(`"${o}": format "${f}" does not define "compare" function`);let b=t.scopeValue("formats",{key:f,ref:h,code:a.code.formats?(0,gr._)`${a.code.formats}${(0,gr.getProperty)(f)}`:void 0});e.fail$data(d(b))}function d(f){return(0,gr._)`${f}.compare(${r}, ${n}) ${al[o].fail} 0`}},dependencies:["format"]};var gT=e=>(e.addKeyword(zo.formatLimitDefinition),e);zo.default=gT});var av=B((Hs,sv)=>{"use strict";Object.defineProperty(Hs,"__esModule",{value:!0});var _o=tv(),bT=rv(),ip=ge(),nv=new ip.Name("fullFormats"),yT=new ip.Name("fastFormats"),lp=(e,t={keywords:!0})=>{if(Array.isArray(t))return ov(e,t,_o.fullFormats,nv),e;let[r,n]=t.mode==="fast"?[_o.fastFormats,yT]:[_o.fullFormats,nv],o=t.formats||_o.formatNames;return ov(e,o,r,n),t.keywords&&(0,bT.default)(e),e};lp.get=(e,t="full")=>{let n=(t==="fast"?_o.fastFormats:_o.fullFormats)[e];if(!n)throw new Error(`Unknown format "${e}"`);return n};function ov(e,t,r,n){var o,s;(o=(s=e.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,ip._)`require("ajv-formats/dist/formats").${n}`);for(let a of t)e.addFormat(a,r[a])}sv.exports=Hs=lp;Object.defineProperty(Hs,"__esModule",{value:!0});Hs.default=lp});var Gr=B((q4,fv)=>{"use strict";var dv=["nodebuffer","arraybuffer","fragments"],pv=typeof Blob<"u";pv&&dv.push("blob");fv.exports={BINARY_TYPES:dv,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:pv,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Ws=B((K4,ul)=>{"use strict";var{EMPTY_BUFFER:vT}=Gr(),cp=Buffer[Symbol.species];function zT(e,t){if(e.length===0)return vT;if(e.length===1)return e[0];let r=Buffer.allocUnsafe(t),n=0;for(let o=0;o<e.length;o++){let s=e[o];r.set(s,n),n+=s.length}return n<t?new cp(r.buffer,r.byteOffset,n):r}function mv(e,t,r,n,o){for(let s=0;s<o;s++)r[n+s]=e[s]^t[s&3]}function hv(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r&3]}function _T(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function up(e){if(up.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new cp(e):ArrayBuffer.isView(e)?t=new cp(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),up.readOnly=!1),t}ul.exports={concat:zT,mask:mv,toArrayBuffer:_T,toBuffer:up,unmask:hv};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=ut("bufferutil");ul.exports.mask=function(t,r,n,o,s){s<48?mv(t,r,n,o,s):e.mask(t,r,n,o,s)},ul.exports.unmask=function(t,r){t.length<32?hv(t,r):e.unmask(t,r)}}catch{}});var yv=B((H4,bv)=>{"use strict";var gv=Symbol("kDone"),dp=Symbol("kRun"),pp=class{constructor(t){this[gv]=()=>{this.pending--,this[dp]()},this.concurrency=t||1/0,this.jobs=[],this.pending=0}add(t){this.jobs.push(t),this[dp]()}[dp](){if(this.pending!==this.concurrency&&this.jobs.length){let t=this.jobs.shift();this.pending++,t(this[gv])}}};bv.exports=pp});var Ys=B((W4,_v)=>{"use strict";var Js=ut("zlib"),kv=Ws(),wT=yv(),{kStatusCode:vv}=Gr(),xT=Buffer[Symbol.species],ST=Buffer.from([0,0,255,255]),pl=Symbol("permessage-deflate"),Ur=Symbol("total-length"),wo=Symbol("callback"),fn=Symbol("buffers"),xo=Symbol("error"),dl,fp=class{constructor(t,r,n){if(this._maxPayload=n|0,this._options=t||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!dl){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;dl=new wT(o)}}static get extensionName(){return"permessage-deflate"}offer(){let t={};return this._options.serverNoContextTakeover&&(t.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(t.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(t.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?t.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(t.client_max_window_bits=!0),t}accept(t){return t=this.normalizeParams(t),this.params=this._isServer?this.acceptAsServer(t):this.acceptAsClient(t),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let t=this._deflate[wo];this._deflate.close(),this._deflate=null,t&&t(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(t){let r=this._options,n=t.find(o=>!(r.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>o.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(t){let r=t[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(t){return t.forEach(r=>{Object.keys(r).forEach(n=>{let o=r[n];if(o.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(o=o[0],n==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else if(n==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=o})}),t}decompress(t,r,n){dl.add(o=>{this._decompress(t,r,(s,a)=>{o(),n(s,a)})})}compress(t,r,n){dl.add(o=>{this._compress(t,r,(s,a)=>{o(),n(s,a)})})}_decompress(t,r,n){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Js.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Js.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[pl]=this,this._inflate[Ur]=0,this._inflate[fn]=[],this._inflate.on("error",$T),this._inflate.on("data",zv)}this._inflate[wo]=n,this._inflate.write(t),r&&this._inflate.write(ST),this._inflate.flush(()=>{let s=this._inflate[xo];if(s){this._inflate.close(),this._inflate=null,n(s);return}let a=kv.concat(this._inflate[fn],this._inflate[Ur]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Ur]=0,this._inflate[fn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),n(null,a)})}_compress(t,r,n){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Js.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Js.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[Ur]=0,this._deflate[fn]=[],this._deflate.on("data",PT)}this._deflate[wo]=n,this._deflate.write(t),this._deflate.flush(Js.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=kv.concat(this._deflate[fn],this._deflate[Ur]);r&&(s=new xT(s.buffer,s.byteOffset,s.length-4)),this._deflate[wo]=null,this._deflate[Ur]=0,this._deflate[fn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};_v.exports=fp;function PT(e){this[fn].push(e),this[Ur]+=e.length}function zv(e){if(this[Ur]+=e.length,this[pl]._maxPayload<1||this[Ur]<=this[pl]._maxPayload){this[fn].push(e);return}this[xo]=new RangeError("Max payload size exceeded"),this[xo].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[xo][vv]=1009,this.removeListener("data",zv),this.reset()}function $T(e){if(this[pl]._inflate=null,this[xo]){this[wo](this[xo]);return}e[vv]=1007,this[wo](e)}});var So=B((J4,fl)=>{"use strict";var{isUtf8:wv}=ut("buffer"),{hasBlob:ET}=Gr(),AT=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function OT(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function mp(e){let t=e.length,r=0;for(;r<t;)if((e[r]&128)===0)r++;else if((e[r]&224)===192){if(r+1===t||(e[r+1]&192)!==128||(e[r]&254)===192)return!1;r+=2}else if((e[r]&240)===224){if(r+2>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||e[r]===224&&(e[r+1]&224)===128||e[r]===237&&(e[r+1]&224)===160)return!1;r+=3}else if((e[r]&248)===240){if(r+3>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||(e[r+3]&192)!==128||e[r]===240&&(e[r+1]&240)===128||e[r]===244&&e[r+1]>143||e[r]>244)return!1;r+=4}else return!1;return!0}function IT(e){return ET&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}fl.exports={isBlob:IT,isValidStatusCode:OT,isValidUTF8:mp,tokenChars:AT};if(wv)fl.exports.isValidUTF8=function(e){return e.length<24?mp(e):wv(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=ut("utf-8-validate");fl.exports.isValidUTF8=function(t){return t.length<32?mp(t):e(t)}}catch{}});var kp=B((Y4,Ov)=>{"use strict";var{Writable:TT}=ut("stream"),xv=Ys(),{BINARY_TYPES:CT,EMPTY_BUFFER:Sv,kStatusCode:NT,kWebSocket:RT}=Gr(),{concat:hp,toArrayBuffer:jT,unmask:MT}=Ws(),{isValidStatusCode:DT,isValidUTF8:Pv}=So(),ml=Buffer[Symbol.species],sr=0,$v=1,Ev=2,Av=3,gp=4,bp=5,hl=6,yp=class extends TT{constructor(t={}){super(),this._allowSynchronousEvents=t.allowSynchronousEvents!==void 0?t.allowSynchronousEvents:!0,this._binaryType=t.binaryType||CT[0],this._extensions=t.extensions||{},this._isServer=!!t.isServer,this._maxPayload=t.maxPayload|0,this._skipUTF8Validation=!!t.skipUTF8Validation,this[RT]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=sr}_write(t,r,n){if(this._opcode===8&&this._state==sr)return n();this._bufferedBytes+=t.length,this._buffers.push(t),this.startLoop(n)}consume(t){if(this._bufferedBytes-=t,t===this._buffers[0].length)return this._buffers.shift();if(t<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new ml(n.buffer,n.byteOffset+t,n.length-t),new ml(n.buffer,n.byteOffset,t)}let r=Buffer.allocUnsafe(t);do{let n=this._buffers[0],o=r.length-t;t>=n.length?r.set(this._buffers.shift(),o):(r.set(new Uint8Array(n.buffer,n.byteOffset,t),o),this._buffers[0]=new ml(n.buffer,n.byteOffset+t,n.length-t)),t-=n.length}while(t>0);return r}startLoop(t){this._loop=!0;do switch(this._state){case sr:this.getInfo(t);break;case $v:this.getPayloadLength16(t);break;case Ev:this.getPayloadLength64(t);break;case Av:this.getMask();break;case gp:this.getData(t);break;case bp:case hl:this._loop=!1;return}while(this._loop);this._errored||t()}getInfo(t){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");t(o);return}let n=(r[0]&64)===64;if(n&&!this._extensions[xv.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");t(o);return}if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");t(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");t(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");t(o);return}this._payloadLength===126?this._state=$v:this._payloadLength===127?this._state=Ev:this.haveLength(t)}getPayloadLength16(t){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(t)}getPayloadLength64(t){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");t(o);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(t)}haveLength(t){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(r);return}this._masked?this._state=Av:this._state=gp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=gp}getData(t){let r=Sv;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&MT(r,this._mask)}if(this._opcode>7){this.controlMessage(r,t);return}if(this._compressed){this._state=bp,this.decompress(r,t);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(t)}decompress(t,r){this._extensions[xv.extensionName].decompress(t,this._fin,(o,s)=>{if(o)return r(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let a=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(a);return}this._fragments.push(s)}this.dataMessage(r),this._state===sr&&this.startLoop(r)})}dataMessage(t){if(!this._fin){this._state=sr;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=hp(n,r):this._binaryType==="arraybuffer"?o=jT(hp(n,r)):this._binaryType==="blob"?o=new Blob(n):o=n,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=sr):(this._state=hl,setImmediate(()=>{this.emit("message",o,!0),this._state=sr,this.startLoop(t)}))}else{let o=hp(n,r);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._state===bp||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=sr):(this._state=hl,setImmediate(()=>{this.emit("message",o,!1),this._state=sr,this.startLoop(t)}))}}controlMessage(t,r){if(this._opcode===8){if(t.length===0)this._loop=!1,this.emit("conclude",1005,Sv),this.end();else{let n=t.readUInt16BE(0);if(!DT(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let o=new ml(t.buffer,t.byteOffset+2,t.length-2);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,o),this.end()}this._state=sr;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",t),this._state=sr):(this._state=hl,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",t),this._state=sr,this.startLoop(r)}))}createError(t,r,n,o,s){this._loop=!1,this._errored=!0;let a=new t(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(a,this.createError),a.code=s,a[NT]=o,a}};Ov.exports=yp});var _p=B((Q4,Cv)=>{"use strict";var{Duplex:X4}=ut("stream"),{randomFillSync:LT}=ut("crypto"),Iv=Ys(),{EMPTY_BUFFER:VT,kWebSocket:FT,NOOP:ZT}=Gr(),{isBlob:Po,isValidStatusCode:BT}=So(),{mask:Tv,toBuffer:Nn}=Ws(),ar=Symbol("kByteLength"),GT=Buffer.alloc(4),gl=8*1024,Rn,$o=gl,br=0,UT=1,qT=2,vp=class e{constructor(t,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=t,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=br,this.onerror=ZT,this[FT]=void 0}static frame(t,r){let n,o=!1,s=2,a=!1;r.mask&&(n=r.maskBuffer||GT,r.generateMask?r.generateMask(n):($o===gl&&(Rn===void 0&&(Rn=Buffer.alloc(gl)),LT(Rn,0,gl),$o=0),n[0]=Rn[$o++],n[1]=Rn[$o++],n[2]=Rn[$o++],n[3]=Rn[$o++]),a=(n[0]|n[1]|n[2]|n[3])===0,s=6);let i;typeof t=="string"?(!r.mask||a)&&r[ar]!==void 0?i=r[ar]:(t=Buffer.from(t),i=t.length):(i=t.length,o=r.mask&&r.readOnly&&!a);let c=i;i>=65536?(s+=8,c=127):i>125&&(s+=2,c=126);let l=Buffer.allocUnsafe(o?i+s:s);return l[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(i,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(i,4,6)),r.mask?(l[1]|=128,l[s-4]=n[0],l[s-3]=n[1],l[s-2]=n[2],l[s-1]=n[3],a?[l,t]:o?(Tv(t,n,l,s,i),[l]):(Tv(t,n,t,0,i),[l,t])):[l,t]}close(t,r,n,o){let s;if(t===void 0)s=VT;else{if(typeof t!="number"||!BT(t))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let i=Buffer.byteLength(r);if(i>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+i),s.writeUInt16BE(t,0),typeof r=="string"?s.write(r,2):s.set(r,2)}}let a={[ar]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==br?this.enqueue([this.dispatch,s,!1,a,o]):this.sendFrame(e.frame(s,a),o)}ping(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):Po(t)?(o=t.size,s=!1):(t=Nn(t),o=t.length,s=Nn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};Po(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}pong(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):Po(t)?(o=t.size,s=!1):(t=Nn(t),o=t.length,s=Nn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};Po(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}send(t,r,n){let o=this._extensions[Iv.extensionName],s=r.binary?2:1,a=r.compress,i,c;typeof t=="string"?(i=Buffer.byteLength(t),c=!1):Po(t)?(i=t.size,c=!1):(t=Nn(t),i=t.length,c=Nn.readOnly),this._firstFragment?(this._firstFragment=!1,a&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=o._threshold),this._compress=a):(a=!1,s=0),r.fin&&(this._firstFragment=!0);let l={[ar]:i,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:a};Po(t)?this._state!==br?this.enqueue([this.getBlobData,t,this._compress,l,n]):this.getBlobData(t,this._compress,l,n):this._state!==br?this.enqueue([this.dispatch,t,this._compress,l,n]):this.dispatch(t,this._compress,l,n)}getBlobData(t,r,n,o){this._bufferedBytes+=n[ar],this._state=qT,t.arrayBuffer().then(s=>{if(this._socket.destroyed){let i=new Error("The socket was closed while the blob was being read");process.nextTick(zp,this,i,o);return}this._bufferedBytes-=n[ar];let a=Nn(s);r?this.dispatch(a,r,n,o):(this._state=br,this.sendFrame(e.frame(a,n),o),this.dequeue())}).catch(s=>{process.nextTick(KT,this,s,o)})}dispatch(t,r,n,o){if(!r){this.sendFrame(e.frame(t,n),o);return}let s=this._extensions[Iv.extensionName];this._bufferedBytes+=n[ar],this._state=UT,s.compress(t,n.fin,(a,i)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");zp(this,c,o);return}this._bufferedBytes-=n[ar],this._state=br,n.readOnly=!1,this.sendFrame(e.frame(i,n),o),this.dequeue()})}dequeue(){for(;this._state===br&&this._queue.length;){let t=this._queue.shift();this._bufferedBytes-=t[3][ar],Reflect.apply(t[0],this,t.slice(1))}}enqueue(t){this._bufferedBytes+=t[3][ar],this._queue.push(t)}sendFrame(t,r){t.length===2?(this._socket.cork(),this._socket.write(t[0]),this._socket.write(t[1],r),this._socket.uncork()):this._socket.write(t[0],r)}};Cv.exports=vp;function zp(e,t,r){typeof r=="function"&&r(t);for(let n=0;n<e._queue.length;n++){let o=e._queue[n],s=o[o.length-1];typeof s=="function"&&s(t)}}function KT(e,t,r){zp(e,t,r),e.onerror(t)}});var Zv=B((e5,Fv)=>{"use strict";var{kForOnEventAttribute:Xs,kListener:wp}=Gr(),Nv=Symbol("kCode"),Rv=Symbol("kData"),jv=Symbol("kError"),Mv=Symbol("kMessage"),Dv=Symbol("kReason"),Eo=Symbol("kTarget"),Lv=Symbol("kType"),Vv=Symbol("kWasClean"),qr=class{constructor(t){this[Eo]=null,this[Lv]=t}get target(){return this[Eo]}get type(){return this[Lv]}};Object.defineProperty(qr.prototype,"target",{enumerable:!0});Object.defineProperty(qr.prototype,"type",{enumerable:!0});var jn=class extends qr{constructor(t,r={}){super(t),this[Nv]=r.code===void 0?0:r.code,this[Dv]=r.reason===void 0?"":r.reason,this[Vv]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Nv]}get reason(){return this[Dv]}get wasClean(){return this[Vv]}};Object.defineProperty(jn.prototype,"code",{enumerable:!0});Object.defineProperty(jn.prototype,"reason",{enumerable:!0});Object.defineProperty(jn.prototype,"wasClean",{enumerable:!0});var Ao=class extends qr{constructor(t,r={}){super(t),this[jv]=r.error===void 0?null:r.error,this[Mv]=r.message===void 0?"":r.message}get error(){return this[jv]}get message(){return this[Mv]}};Object.defineProperty(Ao.prototype,"error",{enumerable:!0});Object.defineProperty(Ao.prototype,"message",{enumerable:!0});var Qs=class extends qr{constructor(t,r={}){super(t),this[Rv]=r.data===void 0?null:r.data}get data(){return this[Rv]}};Object.defineProperty(Qs.prototype,"data",{enumerable:!0});var HT={addEventListener(e,t,r={}){for(let o of this.listeners(e))if(!r[Xs]&&o[wp]===t&&!o[Xs])return;let n;if(e==="message")n=function(s,a){let i=new Qs("message",{data:a?s:s.toString()});i[Eo]=this,bl(t,this,i)};else if(e==="close")n=function(s,a){let i=new jn("close",{code:s,reason:a.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});i[Eo]=this,bl(t,this,i)};else if(e==="error")n=function(s){let a=new Ao("error",{error:s,message:s.message});a[Eo]=this,bl(t,this,a)};else if(e==="open")n=function(){let s=new qr("open");s[Eo]=this,bl(t,this,s)};else return;n[Xs]=!!r[Xs],n[wp]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[wp]===t&&!r[Xs]){this.removeListener(e,r);break}}};Fv.exports={CloseEvent:jn,ErrorEvent:Ao,Event:qr,EventTarget:HT,MessageEvent:Qs};function bl(e,t,r){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,r):e.call(t,r)}});var xp=B((t5,Bv)=>{"use strict";var{tokenChars:ea}=So();function Ar(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function WT(e){let t=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,a,i,c=-1,l=-1,u=-1,d=0;for(;d<e.length;d++)if(l=e.charCodeAt(d),a===void 0)if(u===-1&&ea[l]===1)c===-1&&(c=d);else if(d!==0&&(l===32||l===9))u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=e.slice(c,u);l===44?(Ar(t,h,r),r=Object.create(null)):a=h,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(i===void 0)if(u===-1&&ea[l]===1)c===-1&&(c=d);else if(l===32||l===9)u===-1&&c!==-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Ar(r,e.slice(c,u),!0),l===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),c=u=-1}else if(l===61&&c!==-1&&u===-1)i=e.slice(c,d),c=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(o){if(ea[l]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:n||(n=!0),o=!1}else if(s)if(ea[l]===1)c===-1&&(c=d);else if(l===34&&c!==-1)s=!1,u=d;else if(l===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(l===34&&e.charCodeAt(d-1)===61)s=!0;else if(u===-1&&ea[l]===1)c===-1&&(c=d);else if(c!==-1&&(l===32||l===9))u===-1&&(u=d);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=e.slice(c,u);n&&(h=h.replace(/\\/g,""),n=!1),Ar(r,i,h),l===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),i=void 0,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||s||l===32||l===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let f=e.slice(c,u);return a===void 0?Ar(t,f,r):(i===void 0?Ar(r,f,!0):n?Ar(r,i,f.replace(/\\/g,"")):Ar(r,i,f),Ar(t,a,r)),t}function JT(e){return Object.keys(e).map(t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map(n=>[t].concat(Object.keys(n).map(o=>{let s=n[o];return Array.isArray(s)||(s=[s]),s.map(a=>a===!0?o:`${o}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Bv.exports={format:JT,parse:WT}});var zl=B((o5,tz)=>{"use strict";var YT=ut("events"),XT=ut("https"),QT=ut("http"),qv=ut("net"),eC=ut("tls"),{randomBytes:tC,createHash:rC}=ut("crypto"),{Duplex:r5,Readable:n5}=ut("stream"),{URL:Sp}=ut("url"),mn=Ys(),nC=kp(),oC=_p(),{isBlob:sC}=So(),{BINARY_TYPES:Gv,EMPTY_BUFFER:yl,GUID:aC,kForOnEventAttribute:Pp,kListener:iC,kStatusCode:lC,kWebSocket:ht,NOOP:Kv}=Gr(),{EventTarget:{addEventListener:cC,removeEventListener:uC}}=Zv(),{format:dC,parse:pC}=xp(),{toBuffer:fC}=Ws(),mC=30*1e3,Hv=Symbol("kAborted"),$p=[8,13],Kr=["CONNECTING","OPEN","CLOSING","CLOSED"],hC=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,tt=class e extends YT{constructor(t,r,n){super(),this._binaryType=Gv[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=yl,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),Wv(this,t,r,n)):(this._autoPong=n.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(t){Gv.includes(t)&&(this._binaryType=t,this._receiver&&(this._receiver._binaryType=t))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,r,n){let o=new nC({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new oC(t,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=t,o[ht]=this,s[ht]=this,t[ht]=this,o.on("conclude",yC),o.on("drain",kC),o.on("error",vC),o.on("message",zC),o.on("ping",_C),o.on("pong",wC),s.onerror=xC,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),r.length>0&&t.unshift(r),t.on("close",Xv),t.on("data",vl),t.on("end",Qv),t.on("error",ez),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[mn.extensionName]&&this._extensions[mn.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,r){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yv(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ep(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(t||yl,r,n)}pong(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ep(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(t||yl,r,n)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ep(this,t,n);return}let o={binary:typeof t!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[mn.extensionName]||(o.compress=!1),this._sender.send(t||yl,o,n)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(tt,"CONNECTING",{enumerable:!0,value:Kr.indexOf("CONNECTING")});Object.defineProperty(tt.prototype,"CONNECTING",{enumerable:!0,value:Kr.indexOf("CONNECTING")});Object.defineProperty(tt,"OPEN",{enumerable:!0,value:Kr.indexOf("OPEN")});Object.defineProperty(tt.prototype,"OPEN",{enumerable:!0,value:Kr.indexOf("OPEN")});Object.defineProperty(tt,"CLOSING",{enumerable:!0,value:Kr.indexOf("CLOSING")});Object.defineProperty(tt.prototype,"CLOSING",{enumerable:!0,value:Kr.indexOf("CLOSING")});Object.defineProperty(tt,"CLOSED",{enumerable:!0,value:Kr.indexOf("CLOSED")});Object.defineProperty(tt.prototype,"CLOSED",{enumerable:!0,value:Kr.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(tt.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(tt.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[Pp])return t[iC];return null},set(t){for(let r of this.listeners(e))if(r[Pp]){this.removeListener(e,r);break}typeof t=="function"&&this.addEventListener(e,t,{[Pp]:!0})}})});tt.prototype.addEventListener=cC;tt.prototype.removeEventListener=uC;tz.exports=tt;function Wv(e,t,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:$p[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!$p.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${$p.join(", ")})`);let s;if(t instanceof Sp)s=t;else try{s=new Sp(t)}catch{throw new SyntaxError(`Invalid URL: ${t}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let a=s.protocol==="wss:",i=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!a&&!i?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:i&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let p=new SyntaxError(c);if(e._redirects===0)throw p;kl(e,p);return}let l=a?443:80,u=tC(16).toString("base64"),d=a?XT.request:QT.request,f=new Set,h;if(o.createConnection=o.createConnection||(a?bC:gC),o.defaultPort=o.defaultPort||l,o.port=s.port||l,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(h=new mn(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=dC({[mn.extensionName]:h.offer()})),r.length){for(let p of r){if(typeof p!="string"||!hC.test(p)||f.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");f.add(p)}o.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),i){let p=o.path.split(":");o.socketPath=p[0],o.path=p[1]}let b;if(o.followRedirects){if(e._redirects===0){e._originalIpc=i,e._originalSecure=a,e._originalHostOrSocketPath=i?o.socketPath:s.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,g]of Object.entries(p))n.headers[m.toLowerCase()]=g}else if(e.listenerCount("redirect")===0){let p=i?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!p||e._originalSecure&&!a)&&(delete o.headers.authorization,delete o.headers.cookie,p||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),b=e._req=d(o),e._redirects&&e.emit("redirect",e.url,b)}else b=e._req=d(o);o.timeout&&b.on("timeout",()=>{Jt(e,b,"Opening handshake has timed out")}),b.on("error",p=>{b===null||b[Hv]||(b=e._req=null,kl(e,p))}),b.on("response",p=>{let m=p.headers.location,g=p.statusCode;if(m&&o.followRedirects&&g>=300&&g<400){if(++e._redirects>o.maxRedirects){Jt(e,b,"Maximum redirects exceeded");return}b.abort();let v;try{v=new Sp(m,t)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);kl(e,w);return}Wv(e,v,r,n)}else e.emit("unexpected-response",b,p)||Jt(e,b,`Unexpected server response: ${p.statusCode}`)}),b.on("upgrade",(p,m,g)=>{if(e.emit("upgrade",p),e.readyState!==tt.CONNECTING)return;b=e._req=null;let v=p.headers.upgrade;if(v===void 0||v.toLowerCase()!=="websocket"){Jt(e,m,"Invalid Upgrade header");return}let _=rC("sha1").update(u+aC).digest("base64");if(p.headers["sec-websocket-accept"]!==_){Jt(e,m,"Invalid Sec-WebSocket-Accept header");return}let w=p.headers["sec-websocket-protocol"],k;if(w!==void 0?f.size?f.has(w)||(k="Server sent an invalid subprotocol"):k="Server sent a subprotocol but none was requested":f.size&&(k="Server sent no subprotocol"),k){Jt(e,m,k);return}w&&(e._protocol=w);let P=p.headers["sec-websocket-extensions"];if(P!==void 0){if(!h){Jt(e,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let I;try{I=pC(P)}catch{Jt(e,m,"Invalid Sec-WebSocket-Extensions header");return}let W=Object.keys(I);if(W.length!==1||W[0]!==mn.extensionName){Jt(e,m,"Server indicated an extension that was not requested");return}try{h.accept(I[mn.extensionName])}catch{Jt(e,m,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[mn.extensionName]=h}e.setSocket(m,g,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(b,e):b.end()}function kl(e,t){e._readyState=tt.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function gC(e){return e.path=e.socketPath,qv.connect(e)}function bC(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=qv.isIP(e.host)?"":e.host),eC.connect(e)}function Jt(e,t,r){e._readyState=tt.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Jt),t.setHeader?(t[Hv]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(kl,e,n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ep(e,t,r){if(t){let n=sC(t)?t.size:fC(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${e.readyState} (${Kr[e.readyState]})`);process.nextTick(r,n)}}function yC(e,t){let r=this[ht];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,r._socket[ht]!==void 0&&(r._socket.removeListener("data",vl),process.nextTick(Jv,r._socket),e===1005?r.close():r.close(e,t))}function kC(){let e=this[ht];e.isPaused||e._socket.resume()}function vC(e){let t=this[ht];t._socket[ht]!==void 0&&(t._socket.removeListener("data",vl),process.nextTick(Jv,t._socket),t.close(e[lC])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Uv(){this[ht].emitClose()}function zC(e,t){this[ht].emit("message",e,t)}function _C(e){let t=this[ht];t._autoPong&&t.pong(e,!this._isServer,Kv),t.emit("ping",e)}function wC(e){this[ht].emit("pong",e)}function Jv(e){e.resume()}function xC(e){let t=this[ht];t.readyState!==tt.CLOSED&&(t.readyState===tt.OPEN&&(t._readyState=tt.CLOSING,Yv(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Yv(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),mC)}function Xv(){let e=this[ht];this.removeListener("close",Xv),this.removeListener("data",vl),this.removeListener("end",Qv),e._readyState=tt.CLOSING;let t;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(t=e._socket.read())!==null&&e._receiver.write(t),e._receiver.end(),this[ht]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Uv),e._receiver.on("finish",Uv))}function vl(e){this[ht]._receiver.write(e)||this.pause()}function Qv(){let e=this[ht];e._readyState=tt.CLOSING,e._receiver.end(),this.end()}function ez(){let e=this[ht];this.removeListener("error",ez),this.on("error",Kv),e&&(e._readyState=tt.CLOSING,this.destroy())}});var sz=B((a5,oz)=>{"use strict";var s5=zl(),{Duplex:SC}=ut("stream");function rz(e){e.emit("close")}function PC(){!this.destroyed&&this._writableState.finished&&this.destroy()}function nz(e){this.removeListener("error",nz),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function $C(e,t){let r=!0,n=new SC({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,a){let i=!a&&n._readableState.objectMode?s.toString():s;n.push(i)||e.pause()}),e.once("error",function(s){n.destroyed||(r=!1,n.destroy(s))}),e.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(rz,n);return}let a=!1;e.once("error",function(c){a=!0,s(c)}),e.once("close",function(){a||s(o),process.nextTick(rz,n)}),r&&e.terminate()},n._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){n._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},n._read=function(){e.isPaused&&e.resume()},n._write=function(o,s,a){if(e.readyState===e.CONNECTING){e.once("open",function(){n._write(o,s,a)});return}e.send(o,a)},n.on("end",PC),n.on("error",nz),n}oz.exports=$C});var iz=B((i5,az)=>{"use strict";var{tokenChars:EC}=So();function AC(e){let t=new Set,r=-1,n=-1,o=0;for(o;o<e.length;o++){let a=e.charCodeAt(o);if(n===-1&&EC[a]===1)r===-1&&(r=o);else if(o!==0&&(a===32||a===9))n===-1&&r!==-1&&(n=o);else if(a===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${o}`);n===-1&&(n=o);let i=e.slice(r,n);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);t.add(i),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(r,o);if(t.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return t.add(s),t}az.exports={parse:AC}});var mz=B((c5,fz)=>{"use strict";var OC=ut("events"),_l=ut("http"),{Duplex:l5}=ut("stream"),{createHash:IC}=ut("crypto"),lz=xp(),Mn=Ys(),TC=iz(),CC=zl(),{GUID:NC,kWebSocket:RC}=Gr(),jC=/^[+/0-9A-Za-z]{22}==$/,cz=0,uz=1,pz=2,Ap=class extends OC{constructor(t,r){if(super(),t={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:CC,...t},t.port==null&&!t.server&&!t.noServer||t.port!=null&&(t.server||t.noServer)||t.server&&t.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(t.port!=null?(this._server=_l.createServer((n,o)=>{let s=_l.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(t.port,t.host,t.backlog,r)):t.server&&(this._server=t.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=MC(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,a)=>{this.handleUpgrade(o,s,a,n)}})}t.perMessageDeflate===!0&&(t.perMessageDeflate={}),t.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=t,this._state=cz}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(t){if(this._state===pz){t&&this.once("close",()=>{t(new Error("The server is not running"))}),process.nextTick(ta,this);return}if(t&&this.once("close",t),this._state!==uz)if(this._state=uz,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(ta,this):process.nextTick(ta,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{ta(this)})}}shouldHandle(t){if(this.options.path){let r=t.url.indexOf("?");if((r!==-1?t.url.slice(0,r):t.url)!==this.options.path)return!1}return!0}handleUpgrade(t,r,n,o){r.on("error",dz);let s=t.headers["sec-websocket-key"],a=t.headers.upgrade,i=+t.headers["sec-websocket-version"];if(t.method!=="GET"){Dn(this,t,r,405,"Invalid HTTP method");return}if(a===void 0||a.toLowerCase()!=="websocket"){Dn(this,t,r,400,"Invalid Upgrade header");return}if(s===void 0||!jC.test(s)){Dn(this,t,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(i!==13&&i!==8){Dn(this,t,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(t)){ra(r,400);return}let c=t.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=TC.parse(c)}catch{Dn(this,t,r,400,"Invalid Sec-WebSocket-Protocol header");return}let u=t.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let f=new Mn(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let h=lz.parse(u);h[Mn.extensionName]&&(f.accept(h[Mn.extensionName]),d[Mn.extensionName]=f)}catch{Dn(this,t,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:t.headers[`${i===8?"sec-websocket-origin":"origin"}`],secure:!!(t.socket.authorized||t.socket.encrypted),req:t};if(this.options.verifyClient.length===2){this.options.verifyClient(f,(h,b,p,m)=>{if(!h)return ra(r,b||401,p,m);this.completeUpgrade(d,s,l,t,r,n,o)});return}if(!this.options.verifyClient(f))return ra(r,401)}this.completeUpgrade(d,s,l,t,r,n,o)}completeUpgrade(t,r,n,o,s,a,i){if(!s.readable||!s.writable)return s.destroy();if(s[RC])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>cz)return ra(s,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${IC("sha1").update(r+NC).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(n.size){let d=this.options.handleProtocols?this.options.handleProtocols(n,o):n.values().next().value;d&&(l.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(t[Mn.extensionName]){let d=t[Mn.extensionName].params,f=lz.format({[Mn.extensionName]:[d]});l.push(`Sec-WebSocket-Extensions: ${f}`),u._extensions=t}this.emit("headers",l,o),s.write(l.concat(`\r
10
+ deps: ${r}}`};var WO={keyword:"dependencies",type:"object",schemaType:"object",error:Pr.error,code(e){let[t,r]=JO(e);g0(e,t),b0(e,r)}};function JO({schema:e}){let t={},r={};for(let n in e){if(n==="__proto__")continue;let o=Array.isArray(e[n])?t:r;o[n]=e[n]}return[t,r]}function g0(e,t=e.schema){let{gen:r,data:n,it:o}=e;if(Object.keys(t).length===0)return;let s=r.let("missing");for(let a in t){let i=t[a];if(i.length===0)continue;let l=(0,Hs.propertyInData)(r,n,a,o.opts.ownProperties);e.setParams({property:a,depsCount:i.length,deps:i.join(", ")}),o.allErrors?r.if(l,()=>{for(let c of i)(0,Hs.checkReportMissingProp)(e,c)}):(r.if((0,jd._)`${l} && (${(0,Hs.checkMissingProp)(e,i,s)})`),(0,Hs.reportMissingProp)(e,s),r.else())}}Pr.validatePropertyDeps=g0;function b0(e,t=e.schema){let{gen:r,data:n,keyword:o,it:s}=e,a=r.name("valid");for(let i in t)(0,HO.alwaysValidSchema)(s,t[i])||(r.if((0,Hs.propertyInData)(r,n,i,s.opts.ownProperties),()=>{let l=e.subschema({keyword:o,schemaProp:i},a);e.mergeValidEvaluated(l,a)},()=>r.var(a,!0)),e.ok(a))}Pr.validateSchemaDeps=b0;Pr.default=WO});var v0=U(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});var k0=be(),YO=Ce(),XO={message:"property name must be valid",params:({params:e})=>(0,k0._)`{propertyName: ${e.propertyName}}`},QO={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:XO,code(e){let{gen:t,schema:r,data:n,it:o}=e;if((0,YO.alwaysValidSchema)(o,r))return;let s=t.name("valid");t.forIn("key",n,a=>{e.setParams({propertyName:a}),e.subschema({keyword:"propertyNames",data:a,dataTypes:["string"],propertyName:a,compositeRule:!0},s),t.if((0,k0.not)(s),()=>{e.error(!0),o.allErrors||t.break()})}),e.ok(s)}};Md.default=QO});var Ld=U(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var rl=rr(),hr=be(),eI=Br(),nl=Ce(),tI={message:"must NOT have additional properties",params:({params:e})=>(0,hr._)`{additionalProperty: ${e.additionalProperty}}`},rI={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:tI,code(e){let{gen:t,schema:r,parentSchema:n,data:o,errsCount:s,it:a}=e;if(!s)throw new Error("ajv implementation error");let{allErrors:i,opts:l}=a;if(a.props=!0,l.removeAdditional!=="all"&&(0,nl.alwaysValidSchema)(a,r))return;let c=(0,rl.allSchemaProperties)(n.properties),u=(0,rl.allSchemaProperties)(n.patternProperties);d(),e.ok((0,hr._)`${s} === ${eI.default.errors}`);function d(){t.forIn("key",o,h=>{!c.length&&!u.length?b(h):t.if(p(h),()=>b(h))})}function p(h){let g;if(c.length>8){let v=(0,nl.schemaRefOrVal)(a,n.properties,"properties");g=(0,rl.isOwnProperty)(t,v,h)}else c.length?g=(0,hr.or)(...c.map(v=>(0,hr._)`${h} === ${v}`)):g=hr.nil;return u.length&&(g=(0,hr.or)(g,...u.map(v=>(0,hr._)`${(0,rl.usePattern)(e,v)}.test(${h})`))),(0,hr.not)(g)}function m(h){t.code((0,hr._)`delete ${o}[${h}]`)}function b(h){if(l.removeAdditional==="all"||l.removeAdditional&&r===!1){m(h);return}if(r===!1){e.setParams({additionalProperty:h}),e.error(),i||t.break();return}if(typeof r=="object"&&!(0,nl.alwaysValidSchema)(a,r)){let g=t.name("valid");l.removeAdditional==="failing"?(f(h,g,!1),t.if((0,hr.not)(g),()=>{e.reset(),m(h)})):(f(h,g),i||t.if((0,hr.not)(g),()=>t.break()))}}function f(h,g,v){let _={keyword:"additionalProperties",dataProp:h,dataPropType:nl.Type.Str};v===!1&&Object.assign(_,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(_,g)}}};Dd.default=rI});var w0=U(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});var nI=Cs(),z0=rr(),Vd=Ce(),_0=Ld(),oI={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:n,data:o,it:s}=e;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&_0.default.code(new nI.KeywordCxt(s,_0.default,"additionalProperties"));let a=(0,z0.allSchemaProperties)(r);for(let d of a)s.definedProperties.add(d);s.opts.unevaluated&&a.length&&s.props!==!0&&(s.props=Vd.mergeEvaluated.props(t,(0,Vd.toHash)(a),s.props));let i=a.filter(d=>!(0,Vd.alwaysValidSchema)(s,r[d]));if(i.length===0)return;let l=t.name("valid");for(let d of i)c(d)?u(d):(t.if((0,z0.propertyInData)(t,o,d,s.opts.ownProperties)),u(d),s.allErrors||t.else().var(l,!0),t.endIf()),e.it.definedProperties.add(d),e.ok(l);function c(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){e.subschema({keyword:"properties",schemaProp:d,dataProp:d},l)}}};Fd.default=oI});var $0=U(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});var x0=rr(),ol=be(),S0=Ce(),P0=Ce(),sI={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:n,parentSchema:o,it:s}=e,{opts:a}=s,i=(0,x0.allSchemaProperties)(r),l=i.filter(f=>(0,S0.alwaysValidSchema)(s,r[f]));if(i.length===0||l.length===i.length&&(!s.opts.unevaluated||s.props===!0))return;let c=a.strictSchema&&!a.allowMatchingProperties&&o.properties,u=t.name("valid");s.props!==!0&&!(s.props instanceof ol.Name)&&(s.props=(0,P0.evaluatedPropsToName)(t,s.props));let{props:d}=s;p();function p(){for(let f of i)c&&m(f),s.allErrors?b(f):(t.var(u,!0),b(f),t.if(u))}function m(f){for(let h in c)new RegExp(f).test(h)&&(0,S0.checkStrictMode)(s,`property ${h} matches pattern ${f} (use allowMatchingProperties)`)}function b(f){t.forIn("key",n,h=>{t.if((0,ol._)`${(0,x0.usePattern)(e,f)}.test(${h})`,()=>{let g=l.includes(f);g||e.subschema({keyword:"patternProperties",schemaProp:f,dataProp:h,dataPropType:P0.Type.Str},u),s.opts.unevaluated&&d!==!0?t.assign((0,ol._)`${d}[${h}]`,!0):!g&&!s.allErrors&&t.if((0,ol.not)(u),()=>t.break())})})}}};Zd.default=sI});var E0=U(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var aI=Ce(),iI={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:n}=e;if((0,aI.alwaysValidSchema)(n,r)){e.fail();return}let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.failResult(o,()=>e.reset(),()=>e.error())},error:{message:"must NOT be valid"}};Bd.default=iI});var A0=U(Gd=>{"use strict";Object.defineProperty(Gd,"__esModule",{value:!0});var lI=rr(),cI={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:lI.validateUnion,error:{message:"must match a schema in anyOf"}};Gd.default=cI});var O0=U(Ud=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var sl=be(),uI=Ce(),dI={message:"must match exactly one schema in oneOf",params:({params:e})=>(0,sl._)`{passingSchemas: ${e.passing}}`},pI={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:dI,code(e){let{gen:t,schema:r,parentSchema:n,it:o}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");if(o.opts.discriminator&&n.discriminator)return;let s=r,a=t.let("valid",!1),i=t.let("passing",null),l=t.name("_valid");e.setParams({passing:i}),t.block(c),e.result(a,()=>e.reset(),()=>e.error(!0));function c(){s.forEach((u,d)=>{let p;(0,uI.alwaysValidSchema)(o,u)?t.var(l,!0):p=e.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},l),d>0&&t.if((0,sl._)`${l} && ${a}`).assign(a,!1).assign(i,(0,sl._)`[${i}, ${d}]`).else(),t.if(l,()=>{t.assign(a,!0),t.assign(i,d),p&&e.mergeEvaluated(p,sl.Name)})})}}};Ud.default=pI});var I0=U(qd=>{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});var fI=Ce(),mI={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:n}=e;if(!Array.isArray(r))throw new Error("ajv implementation error");let o=t.name("valid");r.forEach((s,a)=>{if((0,fI.alwaysValidSchema)(n,s))return;let i=e.subschema({keyword:"allOf",schemaProp:a},o);e.ok(o),e.mergeEvaluated(i)})}};qd.default=mI});var N0=U(Kd=>{"use strict";Object.defineProperty(Kd,"__esModule",{value:!0});var al=be(),C0=Ce(),hI={message:({params:e})=>(0,al.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,al._)`{failingKeyword: ${e.ifClause}}`},gI={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:hI,code(e){let{gen:t,parentSchema:r,it:n}=e;r.then===void 0&&r.else===void 0&&(0,C0.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let o=T0(n,"then"),s=T0(n,"else");if(!o&&!s)return;let a=t.let("valid",!0),i=t.name("_valid");if(l(),e.reset(),o&&s){let u=t.let("ifClause");e.setParams({ifClause:u}),t.if(i,c("then",u),c("else",u))}else o?t.if(i,c("then")):t.if((0,al.not)(i),c("else"));e.pass(a,()=>e.error(!0));function l(){let u=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},i);e.mergeEvaluated(u)}function c(u,d){return()=>{let p=e.subschema({keyword:u},i);t.assign(a,i),e.mergeValidEvaluated(p,a),d?t.assign(d,(0,al._)`${u}`):e.setParams({ifClause:u})}}}};function T0(e,t){let r=e.schema[t];return r!==void 0&&!(0,C0.alwaysValidSchema)(e,r)}Kd.default=gI});var R0=U(Hd=>{"use strict";Object.defineProperty(Hd,"__esModule",{value:!0});var bI=Ce(),yI={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){t.if===void 0&&(0,bI.checkStrictMode)(r,`"${e}" without "if" is ignored`)}};Hd.default=yI});var j0=U(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});var kI=Id(),vI=p0(),zI=Td(),_I=m0(),wI=h0(),xI=y0(),SI=v0(),PI=Ld(),$I=w0(),EI=$0(),AI=E0(),OI=A0(),II=O0(),TI=I0(),CI=N0(),NI=R0();function RI(e=!1){let t=[AI.default,OI.default,II.default,TI.default,CI.default,NI.default,SI.default,PI.default,xI.default,$I.default,EI.default];return e?t.push(vI.default,_I.default):t.push(kI.default,zI.default),t.push(wI.default),t}Wd.default=RI});var M0=U(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});var at=be(),jI={message:({schemaCode:e})=>(0,at.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,at._)`{format: ${e}}`},MI={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:jI,code(e,t){let{gen:r,data:n,$data:o,schema:s,schemaCode:a,it:i}=e,{opts:l,errSchemaPath:c,schemaEnv:u,self:d}=i;if(!l.validateFormats)return;o?p():m();function p(){let b=r.scopeValue("formats",{ref:d.formats,code:l.code.formats}),f=r.const("fDef",(0,at._)`${b}[${a}]`),h=r.let("fType"),g=r.let("format");r.if((0,at._)`typeof ${f} == "object" && !(${f} instanceof RegExp)`,()=>r.assign(h,(0,at._)`${f}.type || "string"`).assign(g,(0,at._)`${f}.validate`),()=>r.assign(h,(0,at._)`"string"`).assign(g,f)),e.fail$data((0,at.or)(v(),_()));function v(){return l.strictSchema===!1?at.nil:(0,at._)`${a} && !${g}`}function _(){let w=u.$async?(0,at._)`(${f}.async ? await ${g}(${n}) : ${g}(${n}))`:(0,at._)`${g}(${n})`,k=(0,at._)`(typeof ${g} == "function" ? ${w} : ${g}.test(${n}))`;return(0,at._)`${g} && ${g} !== true && ${h} === ${t} && !${k}`}}function m(){let b=d.formats[s];if(!b){v();return}if(b===!0)return;let[f,h,g]=_(b);f===t&&e.pass(w());function v(){if(l.strictSchema===!1){d.logger.warn(k());return}throw new Error(k());function k(){return`unknown format "${s}" ignored in schema at path "${c}"`}}function _(k){let P=k instanceof RegExp?(0,at.regexpCode)(k):l.code.formats?(0,at._)`${l.code.formats}${(0,at.getProperty)(s)}`:void 0,A=r.scopeValue("formats",{key:s,ref:k,code:P});return typeof k=="object"&&!(k instanceof RegExp)?[k.type||"string",k.validate,(0,at._)`${A}.validate`]:["string",k,A]}function w(){if(typeof b=="object"&&!(b instanceof RegExp)&&b.async){if(!u.$async)throw new Error("async format in sync schema");return(0,at._)`await ${g}(${n})`}return typeof h=="function"?(0,at._)`${g}(${n})`:(0,at._)`${g}.test(${n})`}}}};Jd.default=MI});var D0=U(Yd=>{"use strict";Object.defineProperty(Yd,"__esModule",{value:!0});var DI=M0(),LI=[DI.default];Yd.default=LI});var L0=U(yo=>{"use strict";Object.defineProperty(yo,"__esModule",{value:!0});yo.contentVocabulary=yo.metadataVocabulary=void 0;yo.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];yo.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var F0=U(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});var VI=Hk(),FI=l0(),ZI=j0(),BI=D0(),V0=L0(),GI=[VI.default,FI.default,(0,ZI.default)(),BI.default,V0.metadataVocabulary,V0.contentVocabulary];Xd.default=GI});var B0=U(il=>{"use strict";Object.defineProperty(il,"__esModule",{value:!0});il.DiscrError=void 0;var Z0;(function(e){e.Tag="tag",e.Mapping="mapping"})(Z0||(il.DiscrError=Z0={}))});var U0=U(ep=>{"use strict";Object.defineProperty(ep,"__esModule",{value:!0});var ko=be(),Qd=B0(),G0=Vi(),UI=Ns(),qI=Ce(),KI={message:({params:{discrError:e,tagName:t}})=>e===Qd.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>(0,ko._)`{error: ${e}, tag: ${r}, tagValue: ${t}}`},HI={keyword:"discriminator",type:"object",schemaType:"object",error:KI,code(e){let{gen:t,data:r,schema:n,parentSchema:o,it:s}=e,{oneOf:a}=o;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let i=n.propertyName;if(typeof i!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!a)throw new Error("discriminator: requires oneOf keyword");let l=t.let("valid",!1),c=t.const("tag",(0,ko._)`${r}${(0,ko.getProperty)(i)}`);t.if((0,ko._)`typeof ${c} == "string"`,()=>u(),()=>e.error(!1,{discrError:Qd.DiscrError.Tag,tag:c,tagName:i})),e.ok(l);function u(){let m=p();t.if(!1);for(let b in m)t.elseIf((0,ko._)`${c} === ${b}`),t.assign(l,d(m[b]));t.else(),e.error(!1,{discrError:Qd.DiscrError.Mapping,tag:c,tagName:i}),t.endIf()}function d(m){let b=t.name("valid"),f=e.subschema({keyword:"oneOf",schemaProp:m},b);return e.mergeEvaluated(f,ko.Name),b}function p(){var m;let b={},f=g(o),h=!0;for(let w=0;w<a.length;w++){let k=a[w];if(k?.$ref&&!(0,qI.schemaHasRulesButRef)(k,s.self.RULES)){let A=k.$ref;if(k=G0.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,A),k instanceof G0.SchemaEnv&&(k=k.schema),k===void 0)throw new UI.default(s.opts.uriResolver,s.baseId,A)}let P=(m=k?.properties)===null||m===void 0?void 0:m[i];if(typeof P!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${i}"`);h=h&&(f||g(k)),v(P,w)}if(!h)throw new Error(`discriminator: "${i}" must be required`);return b;function g({required:w}){return Array.isArray(w)&&w.includes(i)}function v(w,k){if(w.const)_(w.const,k);else if(w.enum)for(let P of w.enum)_(P,k);else throw new Error(`discriminator: "properties/${i}" must have "const" or "enum"`)}function _(w,k){if(typeof w!="string"||w in b)throw new Error(`discriminator: "${i}" values must be unique strings`);b[w]=k}}}};ep.default=HI});var q0=U((N4,WI)=>{WI.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}});var rp=U((Ye,tp)=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.MissingRefError=Ye.ValidationError=Ye.CodeGen=Ye.Name=Ye.nil=Ye.stringify=Ye.str=Ye._=Ye.KeywordCxt=Ye.Ajv=void 0;var JI=Zk(),YI=F0(),XI=U0(),K0=q0(),QI=["/properties"],ll="http://json-schema.org/draft-07/schema",vo=class extends JI.default{_addVocabularies(){super._addVocabularies(),YI.default.forEach(t=>this.addVocabulary(t)),this.opts.discriminator&&this.addKeyword(XI.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let t=this.opts.$data?this.$dataMetaSchema(K0,QI):K0;this.addMetaSchema(t,ll,!1),this.refs["http://json-schema.org/schema"]=ll}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(ll)?ll:void 0)}};Ye.Ajv=vo;tp.exports=Ye=vo;tp.exports.Ajv=vo;Object.defineProperty(Ye,"__esModule",{value:!0});Ye.default=vo;var eT=Cs();Object.defineProperty(Ye,"KeywordCxt",{enumerable:!0,get:function(){return eT.KeywordCxt}});var zo=be();Object.defineProperty(Ye,"_",{enumerable:!0,get:function(){return zo._}});Object.defineProperty(Ye,"str",{enumerable:!0,get:function(){return zo.str}});Object.defineProperty(Ye,"stringify",{enumerable:!0,get:function(){return zo.stringify}});Object.defineProperty(Ye,"nil",{enumerable:!0,get:function(){return zo.nil}});Object.defineProperty(Ye,"Name",{enumerable:!0,get:function(){return zo.Name}});Object.defineProperty(Ye,"CodeGen",{enumerable:!0,get:function(){return zo.CodeGen}});var tT=Di();Object.defineProperty(Ye,"ValidationError",{enumerable:!0,get:function(){return tT.default}});var rT=Ns();Object.defineProperty(Ye,"MissingRefError",{enumerable:!0,get:function(){return rT.default}})});var tv=U(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.formatNames=Er.fastFormats=Er.fullFormats=void 0;function $r(e,t){return{validate:e,compare:t}}Er.fullFormats={date:$r(Y0,ap),time:$r(op(!0),ip),"date-time":$r(H0(!0),Q0),"iso-time":$r(op(),X0),"iso-date-time":$r(H0(),ev),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:lT,"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:hT,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:cT,int32:{type:"number",validate:pT},int64:{type:"number",validate:fT},float:{type:"number",validate:J0},double:{type:"number",validate:J0},password:!0,binary:!0};Er.fastFormats={...Er.fullFormats,date:$r(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,ap),time:$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,ip),"date-time":$r(/^\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,Q0),"iso-time":$r(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,X0),"iso-date-time":$r(/^\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,ev),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};Er.formatNames=Object.keys(Er.fullFormats);function nT(e){return e%4===0&&(e%100!==0||e%400===0)}var oT=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,sT=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Y0(e){let t=oT.exec(e);if(!t)return!1;let r=+t[1],n=+t[2],o=+t[3];return n>=1&&n<=12&&o>=1&&o<=(n===2&&nT(r)?29:sT[n])}function ap(e,t){if(e&&t)return e>t?1:e<t?-1:0}var np=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function op(e){return function(r){let n=np.exec(r);if(!n)return!1;let o=+n[1],s=+n[2],a=+n[3],i=n[4],l=n[5]==="-"?-1:1,c=+(n[6]||0),u=+(n[7]||0);if(c>23||u>59||e&&!i)return!1;if(o<=23&&s<=59&&a<60)return!0;let d=s-u*l,p=o-c*l-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&a<61}}function ip(e,t){if(!(e&&t))return;let r=new Date("2020-01-01T"+e).valueOf(),n=new Date("2020-01-01T"+t).valueOf();if(r&&n)return r-n}function X0(e,t){if(!(e&&t))return;let r=np.exec(e),n=np.exec(t);if(r&&n)return e=r[1]+r[2]+r[3],t=n[1]+n[2]+n[3],e>t?1:e<t?-1:0}var sp=/t|\s/i;function H0(e){let t=op(e);return function(n){let o=n.split(sp);return o.length===2&&Y0(o[0])&&t(o[1])}}function Q0(e,t){if(!(e&&t))return;let r=new Date(e).valueOf(),n=new Date(t).valueOf();if(r&&n)return r-n}function ev(e,t){if(!(e&&t))return;let[r,n]=e.split(sp),[o,s]=t.split(sp),a=ap(r,o);if(a!==void 0)return a||ip(n,s)}var aT=/\/|:/,iT=/^(?:[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 lT(e){return aT.test(e)&&iT.test(e)}var W0=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function cT(e){return W0.lastIndex=0,W0.test(e)}var uT=-(2**31),dT=2**31-1;function pT(e){return Number.isInteger(e)&&e<=dT&&e>=uT}function fT(e){return Number.isInteger(e)}function J0(){return!0}var mT=/[^\\]\\Z/;function hT(e){if(mT.test(e))return!1;try{return new RegExp(e),!0}catch{return!1}}});var rv=U(_o=>{"use strict";Object.defineProperty(_o,"__esModule",{value:!0});_o.formatLimitDefinition=void 0;var gT=rp(),gr=be(),fn=gr.operators,cl={formatMaximum:{okStr:"<=",ok:fn.LTE,fail:fn.GT},formatMinimum:{okStr:">=",ok:fn.GTE,fail:fn.LT},formatExclusiveMaximum:{okStr:"<",ok:fn.LT,fail:fn.GTE},formatExclusiveMinimum:{okStr:">",ok:fn.GT,fail:fn.LTE}},bT={message:({keyword:e,schemaCode:t})=>(0,gr.str)`should be ${cl[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,gr._)`{comparison: ${cl[e].okStr}, limit: ${t}}`};_o.formatLimitDefinition={keyword:Object.keys(cl),type:"string",schemaType:"string",$data:!0,error:bT,code(e){let{gen:t,data:r,schemaCode:n,keyword:o,it:s}=e,{opts:a,self:i}=s;if(!a.validateFormats)return;let l=new gT.KeywordCxt(s,i.RULES.all.format.definition,"format");l.$data?c():u();function c(){let p=t.scopeValue("formats",{ref:i.formats,code:a.code.formats}),m=t.const("fmt",(0,gr._)`${p}[${l.schemaCode}]`);e.fail$data((0,gr.or)((0,gr._)`typeof ${m} != "object"`,(0,gr._)`${m} instanceof RegExp`,(0,gr._)`typeof ${m}.compare != "function"`,d(m)))}function u(){let p=l.schema,m=i.formats[p];if(!m||m===!0)return;if(typeof m!="object"||m instanceof RegExp||typeof m.compare!="function")throw new Error(`"${o}": format "${p}" does not define "compare" function`);let b=t.scopeValue("formats",{key:p,ref:m,code:a.code.formats?(0,gr._)`${a.code.formats}${(0,gr.getProperty)(p)}`:void 0});e.fail$data(d(b))}function d(p){return(0,gr._)`${p}.compare(${r}, ${n}) ${cl[o].fail} 0`}},dependencies:["format"]};var yT=e=>(e.addKeyword(_o.formatLimitDefinition),e);_o.default=yT});var av=U((Ws,sv)=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});var wo=tv(),kT=rv(),lp=be(),nv=new lp.Name("fullFormats"),vT=new lp.Name("fastFormats"),cp=(e,t={keywords:!0})=>{if(Array.isArray(t))return ov(e,t,wo.fullFormats,nv),e;let[r,n]=t.mode==="fast"?[wo.fastFormats,vT]:[wo.fullFormats,nv],o=t.formats||wo.formatNames;return ov(e,o,r,n),t.keywords&&(0,kT.default)(e),e};cp.get=(e,t="full")=>{let n=(t==="fast"?wo.fastFormats:wo.fullFormats)[e];if(!n)throw new Error(`Unknown format "${e}"`);return n};function ov(e,t,r,n){var o,s;(o=(s=e.opts.code).formats)!==null&&o!==void 0||(s.formats=(0,lp._)`require("ajv-formats/dist/formats").${n}`);for(let a of t)e.addFormat(a,r[a])}sv.exports=Ws=cp;Object.defineProperty(Ws,"__esModule",{value:!0});Ws.default=cp});var Ur=U((H4,fv)=>{"use strict";var dv=["nodebuffer","arraybuffer","fragments"],pv=typeof Blob<"u";pv&&dv.push("blob");fv.exports={BINARY_TYPES:dv,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:pv,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Js=U((W4,fl)=>{"use strict";var{EMPTY_BUFFER:_T}=Ur(),up=Buffer[Symbol.species];function wT(e,t){if(e.length===0)return _T;if(e.length===1)return e[0];let r=Buffer.allocUnsafe(t),n=0;for(let o=0;o<e.length;o++){let s=e[o];r.set(s,n),n+=s.length}return n<t?new up(r.buffer,r.byteOffset,n):r}function mv(e,t,r,n,o){for(let s=0;s<o;s++)r[n+s]=e[s]^t[s&3]}function hv(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r&3]}function xT(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function dp(e){if(dp.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new up(e):ArrayBuffer.isView(e)?t=new up(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),dp.readOnly=!1),t}fl.exports={concat:wT,mask:mv,toArrayBuffer:xT,toBuffer:dp,unmask:hv};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=ut("bufferutil");fl.exports.mask=function(t,r,n,o,s){s<48?mv(t,r,n,o,s):e.mask(t,r,n,o,s)},fl.exports.unmask=function(t,r){t.length<32?hv(t,r):e.unmask(t,r)}}catch{}});var yv=U((J4,bv)=>{"use strict";var gv=Symbol("kDone"),pp=Symbol("kRun"),fp=class{constructor(t){this[gv]=()=>{this.pending--,this[pp]()},this.concurrency=t||1/0,this.jobs=[],this.pending=0}add(t){this.jobs.push(t),this[pp]()}[pp](){if(this.pending!==this.concurrency&&this.jobs.length){let t=this.jobs.shift();this.pending++,t(this[gv])}}};bv.exports=fp});var Xs=U((Y4,_v)=>{"use strict";var Ys=ut("zlib"),kv=Js(),ST=yv(),{kStatusCode:vv}=Ur(),PT=Buffer[Symbol.species],$T=Buffer.from([0,0,255,255]),hl=Symbol("permessage-deflate"),qr=Symbol("total-length"),xo=Symbol("callback"),mn=Symbol("buffers"),So=Symbol("error"),ml,mp=class{constructor(t,r,n){if(this._maxPayload=n|0,this._options=t||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!ml){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;ml=new ST(o)}}static get extensionName(){return"permessage-deflate"}offer(){let t={};return this._options.serverNoContextTakeover&&(t.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(t.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(t.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?t.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(t.client_max_window_bits=!0),t}accept(t){return t=this.normalizeParams(t),this.params=this._isServer?this.acceptAsServer(t):this.acceptAsClient(t),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let t=this._deflate[xo];this._deflate.close(),this._deflate=null,t&&t(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(t){let r=this._options,n=t.find(o=>!(r.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>o.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(t){let r=t[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(t){return t.forEach(r=>{Object.keys(r).forEach(n=>{let o=r[n];if(o.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(o=o[0],n==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else if(n==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=o})}),t}decompress(t,r,n){ml.add(o=>{this._decompress(t,r,(s,a)=>{o(),n(s,a)})})}compress(t,r,n){ml.add(o=>{this._compress(t,r,(s,a)=>{o(),n(s,a)})})}_decompress(t,r,n){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Ys.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Ys.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[hl]=this,this._inflate[qr]=0,this._inflate[mn]=[],this._inflate.on("error",AT),this._inflate.on("data",zv)}this._inflate[xo]=n,this._inflate.write(t),r&&this._inflate.write($T),this._inflate.flush(()=>{let s=this._inflate[So];if(s){this._inflate.close(),this._inflate=null,n(s);return}let a=kv.concat(this._inflate[mn],this._inflate[qr]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[qr]=0,this._inflate[mn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),n(null,a)})}_compress(t,r,n){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,a=typeof this.params[s]!="number"?Ys.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Ys.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[qr]=0,this._deflate[mn]=[],this._deflate.on("data",ET)}this._deflate[xo]=n,this._deflate.write(t),this._deflate.flush(Ys.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=kv.concat(this._deflate[mn],this._deflate[qr]);r&&(s=new PT(s.buffer,s.byteOffset,s.length-4)),this._deflate[xo]=null,this._deflate[qr]=0,this._deflate[mn]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};_v.exports=mp;function ET(e){this[mn].push(e),this[qr]+=e.length}function zv(e){if(this[qr]+=e.length,this[hl]._maxPayload<1||this[qr]<=this[hl]._maxPayload){this[mn].push(e);return}this[So]=new RangeError("Max payload size exceeded"),this[So].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[So][vv]=1009,this.removeListener("data",zv),this.reset()}function AT(e){if(this[hl]._inflate=null,this[So]){this[xo](this[So]);return}e[vv]=1007,this[xo](e)}});var Po=U((X4,gl)=>{"use strict";var{isUtf8:wv}=ut("buffer"),{hasBlob:OT}=Ur(),IT=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function TT(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function hp(e){let t=e.length,r=0;for(;r<t;)if((e[r]&128)===0)r++;else if((e[r]&224)===192){if(r+1===t||(e[r+1]&192)!==128||(e[r]&254)===192)return!1;r+=2}else if((e[r]&240)===224){if(r+2>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||e[r]===224&&(e[r+1]&224)===128||e[r]===237&&(e[r+1]&224)===160)return!1;r+=3}else if((e[r]&248)===240){if(r+3>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||(e[r+3]&192)!==128||e[r]===240&&(e[r+1]&240)===128||e[r]===244&&e[r+1]>143||e[r]>244)return!1;r+=4}else return!1;return!0}function CT(e){return OT&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}gl.exports={isBlob:CT,isValidStatusCode:TT,isValidUTF8:hp,tokenChars:IT};if(wv)gl.exports.isValidUTF8=function(e){return e.length<24?hp(e):wv(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=ut("utf-8-validate");gl.exports.isValidUTF8=function(t){return t.length<32?hp(t):e(t)}}catch{}});var vp=U((Q4,Ov)=>{"use strict";var{Writable:NT}=ut("stream"),xv=Xs(),{BINARY_TYPES:RT,EMPTY_BUFFER:Sv,kStatusCode:jT,kWebSocket:MT}=Ur(),{concat:gp,toArrayBuffer:DT,unmask:LT}=Js(),{isValidStatusCode:VT,isValidUTF8:Pv}=Po(),bl=Buffer[Symbol.species],sr=0,$v=1,Ev=2,Av=3,bp=4,yp=5,yl=6,kp=class extends NT{constructor(t={}){super(),this._allowSynchronousEvents=t.allowSynchronousEvents!==void 0?t.allowSynchronousEvents:!0,this._binaryType=t.binaryType||RT[0],this._extensions=t.extensions||{},this._isServer=!!t.isServer,this._maxPayload=t.maxPayload|0,this._skipUTF8Validation=!!t.skipUTF8Validation,this[MT]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=sr}_write(t,r,n){if(this._opcode===8&&this._state==sr)return n();this._bufferedBytes+=t.length,this._buffers.push(t),this.startLoop(n)}consume(t){if(this._bufferedBytes-=t,t===this._buffers[0].length)return this._buffers.shift();if(t<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new bl(n.buffer,n.byteOffset+t,n.length-t),new bl(n.buffer,n.byteOffset,t)}let r=Buffer.allocUnsafe(t);do{let n=this._buffers[0],o=r.length-t;t>=n.length?r.set(this._buffers.shift(),o):(r.set(new Uint8Array(n.buffer,n.byteOffset,t),o),this._buffers[0]=new bl(n.buffer,n.byteOffset+t,n.length-t)),t-=n.length}while(t>0);return r}startLoop(t){this._loop=!0;do switch(this._state){case sr:this.getInfo(t);break;case $v:this.getPayloadLength16(t);break;case Ev:this.getPayloadLength64(t);break;case Av:this.getMask();break;case bp:this.getData(t);break;case yp:case yl:this._loop=!1;return}while(this._loop);this._errored||t()}getInfo(t){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");t(o);return}let n=(r[0]&64)===64;if(n&&!this._extensions[xv.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");t(o);return}if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");t(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");t(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");t(o);return}this._payloadLength===126?this._state=$v:this._payloadLength===127?this._state=Ev:this.haveLength(t)}getPayloadLength16(t){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(t)}getPayloadLength64(t){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");t(o);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(t)}haveLength(t){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(r);return}this._masked?this._state=Av:this._state=bp}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=bp}getData(t){let r=Sv;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&LT(r,this._mask)}if(this._opcode>7){this.controlMessage(r,t);return}if(this._compressed){this._state=yp,this.decompress(r,t);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(t)}decompress(t,r){this._extensions[xv.extensionName].decompress(t,this._fin,(o,s)=>{if(o)return r(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let a=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(a);return}this._fragments.push(s)}this.dataMessage(r),this._state===sr&&this.startLoop(r)})}dataMessage(t){if(!this._fin){this._state=sr;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=gp(n,r):this._binaryType==="arraybuffer"?o=DT(gp(n,r)):this._binaryType==="blob"?o=new Blob(n):o=n,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit("message",o,!0),this._state=sr,this.startLoop(t)}))}else{let o=gp(n,r);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._state===yp||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit("message",o,!1),this._state=sr,this.startLoop(t)}))}}controlMessage(t,r){if(this._opcode===8){if(t.length===0)this._loop=!1,this.emit("conclude",1005,Sv),this.end();else{let n=t.readUInt16BE(0);if(!VT(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let o=new bl(t.buffer,t.byteOffset+2,t.length-2);if(!this._skipUTF8Validation&&!Pv(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,o),this.end()}this._state=sr;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",t),this._state=sr):(this._state=yl,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",t),this._state=sr,this.startLoop(r)}))}createError(t,r,n,o,s){this._loop=!1,this._errored=!0;let a=new t(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(a,this.createError),a.code=s,a[jT]=o,a}};Ov.exports=kp});var wp=U((t5,Cv)=>{"use strict";var{Duplex:e5}=ut("stream"),{randomFillSync:FT}=ut("crypto"),Iv=Xs(),{EMPTY_BUFFER:ZT,kWebSocket:BT,NOOP:GT}=Ur(),{isBlob:$o,isValidStatusCode:UT}=Po(),{mask:Tv,toBuffer:Rn}=Js(),ar=Symbol("kByteLength"),qT=Buffer.alloc(4),kl=8*1024,jn,Eo=kl,br=0,KT=1,HT=2,zp=class e{constructor(t,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=t,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=br,this.onerror=GT,this[BT]=void 0}static frame(t,r){let n,o=!1,s=2,a=!1;r.mask&&(n=r.maskBuffer||qT,r.generateMask?r.generateMask(n):(Eo===kl&&(jn===void 0&&(jn=Buffer.alloc(kl)),FT(jn,0,kl),Eo=0),n[0]=jn[Eo++],n[1]=jn[Eo++],n[2]=jn[Eo++],n[3]=jn[Eo++]),a=(n[0]|n[1]|n[2]|n[3])===0,s=6);let i;typeof t=="string"?(!r.mask||a)&&r[ar]!==void 0?i=r[ar]:(t=Buffer.from(t),i=t.length):(i=t.length,o=r.mask&&r.readOnly&&!a);let l=i;i>=65536?(s+=8,l=127):i>125&&(s+=2,l=126);let c=Buffer.allocUnsafe(o?i+s:s);return c[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(c[0]|=64),c[1]=l,l===126?c.writeUInt16BE(i,2):l===127&&(c[2]=c[3]=0,c.writeUIntBE(i,4,6)),r.mask?(c[1]|=128,c[s-4]=n[0],c[s-3]=n[1],c[s-2]=n[2],c[s-1]=n[3],a?[c,t]:o?(Tv(t,n,c,s,i),[c]):(Tv(t,n,t,0,i),[c,t])):[c,t]}close(t,r,n,o){let s;if(t===void 0)s=ZT;else{if(typeof t!="number"||!UT(t))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let i=Buffer.byteLength(r);if(i>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+i),s.writeUInt16BE(t,0),typeof r=="string"?s.write(r,2):s.set(r,2)}}let a={[ar]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==br?this.enqueue([this.dispatch,s,!1,a,o]):this.sendFrame(e.frame(s,a),o)}ping(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):$o(t)?(o=t.size,s=!1):(t=Rn(t),o=t.length,s=Rn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}pong(t,r,n){let o,s;if(typeof t=="string"?(o=Buffer.byteLength(t),s=!1):$o(t)?(o=t.size,s=!1):(t=Rn(t),o=t.length,s=Rn.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ar]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==br?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}send(t,r,n){let o=this._extensions[Iv.extensionName],s=r.binary?2:1,a=r.compress,i,l;typeof t=="string"?(i=Buffer.byteLength(t),l=!1):$o(t)?(i=t.size,l=!1):(t=Rn(t),i=t.length,l=Rn.readOnly),this._firstFragment?(this._firstFragment=!1,a&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=o._threshold),this._compress=a):(a=!1,s=0),r.fin&&(this._firstFragment=!0);let c={[ar]:i,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:l,rsv1:a};$o(t)?this._state!==br?this.enqueue([this.getBlobData,t,this._compress,c,n]):this.getBlobData(t,this._compress,c,n):this._state!==br?this.enqueue([this.dispatch,t,this._compress,c,n]):this.dispatch(t,this._compress,c,n)}getBlobData(t,r,n,o){this._bufferedBytes+=n[ar],this._state=HT,t.arrayBuffer().then(s=>{if(this._socket.destroyed){let i=new Error("The socket was closed while the blob was being read");process.nextTick(_p,this,i,o);return}this._bufferedBytes-=n[ar];let a=Rn(s);r?this.dispatch(a,r,n,o):(this._state=br,this.sendFrame(e.frame(a,n),o),this.dequeue())}).catch(s=>{process.nextTick(WT,this,s,o)})}dispatch(t,r,n,o){if(!r){this.sendFrame(e.frame(t,n),o);return}let s=this._extensions[Iv.extensionName];this._bufferedBytes+=n[ar],this._state=KT,s.compress(t,n.fin,(a,i)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");_p(this,l,o);return}this._bufferedBytes-=n[ar],this._state=br,n.readOnly=!1,this.sendFrame(e.frame(i,n),o),this.dequeue()})}dequeue(){for(;this._state===br&&this._queue.length;){let t=this._queue.shift();this._bufferedBytes-=t[3][ar],Reflect.apply(t[0],this,t.slice(1))}}enqueue(t){this._bufferedBytes+=t[3][ar],this._queue.push(t)}sendFrame(t,r){t.length===2?(this._socket.cork(),this._socket.write(t[0]),this._socket.write(t[1],r),this._socket.uncork()):this._socket.write(t[0],r)}};Cv.exports=zp;function _p(e,t,r){typeof r=="function"&&r(t);for(let n=0;n<e._queue.length;n++){let o=e._queue[n],s=o[o.length-1];typeof s=="function"&&s(t)}}function WT(e,t,r){_p(e,t,r),e.onerror(t)}});var Zv=U((r5,Fv)=>{"use strict";var{kForOnEventAttribute:Qs,kListener:xp}=Ur(),Nv=Symbol("kCode"),Rv=Symbol("kData"),jv=Symbol("kError"),Mv=Symbol("kMessage"),Dv=Symbol("kReason"),Ao=Symbol("kTarget"),Lv=Symbol("kType"),Vv=Symbol("kWasClean"),Kr=class{constructor(t){this[Ao]=null,this[Lv]=t}get target(){return this[Ao]}get type(){return this[Lv]}};Object.defineProperty(Kr.prototype,"target",{enumerable:!0});Object.defineProperty(Kr.prototype,"type",{enumerable:!0});var Mn=class extends Kr{constructor(t,r={}){super(t),this[Nv]=r.code===void 0?0:r.code,this[Dv]=r.reason===void 0?"":r.reason,this[Vv]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Nv]}get reason(){return this[Dv]}get wasClean(){return this[Vv]}};Object.defineProperty(Mn.prototype,"code",{enumerable:!0});Object.defineProperty(Mn.prototype,"reason",{enumerable:!0});Object.defineProperty(Mn.prototype,"wasClean",{enumerable:!0});var Oo=class extends Kr{constructor(t,r={}){super(t),this[jv]=r.error===void 0?null:r.error,this[Mv]=r.message===void 0?"":r.message}get error(){return this[jv]}get message(){return this[Mv]}};Object.defineProperty(Oo.prototype,"error",{enumerable:!0});Object.defineProperty(Oo.prototype,"message",{enumerable:!0});var ea=class extends Kr{constructor(t,r={}){super(t),this[Rv]=r.data===void 0?null:r.data}get data(){return this[Rv]}};Object.defineProperty(ea.prototype,"data",{enumerable:!0});var JT={addEventListener(e,t,r={}){for(let o of this.listeners(e))if(!r[Qs]&&o[xp]===t&&!o[Qs])return;let n;if(e==="message")n=function(s,a){let i=new ea("message",{data:a?s:s.toString()});i[Ao]=this,vl(t,this,i)};else if(e==="close")n=function(s,a){let i=new Mn("close",{code:s,reason:a.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});i[Ao]=this,vl(t,this,i)};else if(e==="error")n=function(s){let a=new Oo("error",{error:s,message:s.message});a[Ao]=this,vl(t,this,a)};else if(e==="open")n=function(){let s=new Kr("open");s[Ao]=this,vl(t,this,s)};else return;n[Qs]=!!r[Qs],n[xp]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[xp]===t&&!r[Qs]){this.removeListener(e,r);break}}};Fv.exports={CloseEvent:Mn,ErrorEvent:Oo,Event:Kr,EventTarget:JT,MessageEvent:ea};function vl(e,t,r){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,r):e.call(t,r)}});var Sp=U((n5,Bv)=>{"use strict";var{tokenChars:ta}=Po();function Ar(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function YT(e){let t=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,a,i,l=-1,c=-1,u=-1,d=0;for(;d<e.length;d++)if(c=e.charCodeAt(d),a===void 0)if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(d!==0&&(c===32||c===9))u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let m=e.slice(l,u);c===44?(Ar(t,m,r),r=Object.create(null)):a=m,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(i===void 0)if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(c===32||c===9)u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),Ar(r,e.slice(l,u),!0),c===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),l=u=-1}else if(c===61&&l!==-1&&u===-1)i=e.slice(l,d),l=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(o){if(ta[c]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:n||(n=!0),o=!1}else if(s)if(ta[c]===1)l===-1&&(l=d);else if(c===34&&l!==-1)s=!1,u=d;else if(c===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(c===34&&e.charCodeAt(d-1)===61)s=!0;else if(u===-1&&ta[c]===1)l===-1&&(l=d);else if(l!==-1&&(c===32||c===9))u===-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let m=e.slice(l,u);n&&(m=m.replace(/\\/g,""),n=!1),Ar(r,i,m),c===44&&(Ar(t,a,r),r=Object.create(null),a=void 0),i=void 0,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||s||c===32||c===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let p=e.slice(l,u);return a===void 0?Ar(t,p,r):(i===void 0?Ar(r,p,!0):n?Ar(r,i,p.replace(/\\/g,"")):Ar(r,i,p),Ar(t,a,r)),t}function XT(e){return Object.keys(e).map(t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map(n=>[t].concat(Object.keys(n).map(o=>{let s=n[o];return Array.isArray(s)||(s=[s]),s.map(a=>a===!0?o:`${o}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Bv.exports={format:XT,parse:YT}});var xl=U((a5,tz)=>{"use strict";var QT=ut("events"),eC=ut("https"),tC=ut("http"),qv=ut("net"),rC=ut("tls"),{randomBytes:nC,createHash:oC}=ut("crypto"),{Duplex:o5,Readable:s5}=ut("stream"),{URL:Pp}=ut("url"),hn=Xs(),sC=vp(),aC=wp(),{isBlob:iC}=Po(),{BINARY_TYPES:Gv,EMPTY_BUFFER:zl,GUID:lC,kForOnEventAttribute:$p,kListener:cC,kStatusCode:uC,kWebSocket:gt,NOOP:Kv}=Ur(),{EventTarget:{addEventListener:dC,removeEventListener:pC}}=Zv(),{format:fC,parse:mC}=Sp(),{toBuffer:hC}=Js(),gC=30*1e3,Hv=Symbol("kAborted"),Ep=[8,13],Hr=["CONNECTING","OPEN","CLOSING","CLOSED"],bC=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,tt=class e extends QT{constructor(t,r,n){super(),this._binaryType=Gv[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=zl,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),Wv(this,t,r,n)):(this._autoPong=n.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(t){Gv.includes(t)&&(this._binaryType=t,this._receiver&&(this._receiver._binaryType=t))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,r,n){let o=new sC({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new aC(t,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=t,o[gt]=this,s[gt]=this,t[gt]=this,o.on("conclude",vC),o.on("drain",zC),o.on("error",_C),o.on("message",wC),o.on("ping",xC),o.on("pong",SC),s.onerror=PC,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),r.length>0&&t.unshift(r),t.on("close",Xv),t.on("data",wl),t.on("end",Qv),t.on("error",ez),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[hn.extensionName]&&this._extensions[hn.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,r){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yv(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(t||zl,r,n)}pong(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(t||zl,r,n)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){Ap(this,t,n);return}let o={binary:typeof t!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[hn.extensionName]||(o.compress=!1),this._sender.send(t||zl,o,n)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){Jt(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(tt,"CONNECTING",{enumerable:!0,value:Hr.indexOf("CONNECTING")});Object.defineProperty(tt.prototype,"CONNECTING",{enumerable:!0,value:Hr.indexOf("CONNECTING")});Object.defineProperty(tt,"OPEN",{enumerable:!0,value:Hr.indexOf("OPEN")});Object.defineProperty(tt.prototype,"OPEN",{enumerable:!0,value:Hr.indexOf("OPEN")});Object.defineProperty(tt,"CLOSING",{enumerable:!0,value:Hr.indexOf("CLOSING")});Object.defineProperty(tt.prototype,"CLOSING",{enumerable:!0,value:Hr.indexOf("CLOSING")});Object.defineProperty(tt,"CLOSED",{enumerable:!0,value:Hr.indexOf("CLOSED")});Object.defineProperty(tt.prototype,"CLOSED",{enumerable:!0,value:Hr.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(tt.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(tt.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[$p])return t[cC];return null},set(t){for(let r of this.listeners(e))if(r[$p]){this.removeListener(e,r);break}typeof t=="function"&&this.addEventListener(e,t,{[$p]:!0})}})});tt.prototype.addEventListener=dC;tt.prototype.removeEventListener=pC;tz.exports=tt;function Wv(e,t,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Ep[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!Ep.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Ep.join(", ")})`);let s;if(t instanceof Pp)s=t;else try{s=new Pp(t)}catch{throw new SyntaxError(`Invalid URL: ${t}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let a=s.protocol==="wss:",i=s.protocol==="ws+unix:",l;if(s.protocol!=="ws:"&&!a&&!i?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:i&&!s.pathname?l="The URL's pathname is empty":s.hash&&(l="The URL contains a fragment identifier"),l){let f=new SyntaxError(l);if(e._redirects===0)throw f;_l(e,f);return}let c=a?443:80,u=nC(16).toString("base64"),d=a?eC.request:tC.request,p=new Set,m;if(o.createConnection=o.createConnection||(a?kC:yC),o.defaultPort=o.defaultPort||c,o.port=s.port||c,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(m=new hn(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=fC({[hn.extensionName]:m.offer()})),r.length){for(let f of r){if(typeof f!="string"||!bC.test(f)||p.has(f))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(f)}o.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),i){let f=o.path.split(":");o.socketPath=f[0],o.path=f[1]}let b;if(o.followRedirects){if(e._redirects===0){e._originalIpc=i,e._originalSecure=a,e._originalHostOrSocketPath=i?o.socketPath:s.host;let f=n&&n.headers;if(n={...n,headers:{}},f)for(let[h,g]of Object.entries(f))n.headers[h.toLowerCase()]=g}else if(e.listenerCount("redirect")===0){let f=i?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!f||e._originalSecure&&!a)&&(delete o.headers.authorization,delete o.headers.cookie,f||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),b=e._req=d(o),e._redirects&&e.emit("redirect",e.url,b)}else b=e._req=d(o);o.timeout&&b.on("timeout",()=>{Jt(e,b,"Opening handshake has timed out")}),b.on("error",f=>{b===null||b[Hv]||(b=e._req=null,_l(e,f))}),b.on("response",f=>{let h=f.headers.location,g=f.statusCode;if(h&&o.followRedirects&&g>=300&&g<400){if(++e._redirects>o.maxRedirects){Jt(e,b,"Maximum redirects exceeded");return}b.abort();let v;try{v=new Pp(h,t)}catch{let w=new SyntaxError(`Invalid URL: ${h}`);_l(e,w);return}Wv(e,v,r,n)}else e.emit("unexpected-response",b,f)||Jt(e,b,`Unexpected server response: ${f.statusCode}`)}),b.on("upgrade",(f,h,g)=>{if(e.emit("upgrade",f),e.readyState!==tt.CONNECTING)return;b=e._req=null;let v=f.headers.upgrade;if(v===void 0||v.toLowerCase()!=="websocket"){Jt(e,h,"Invalid Upgrade header");return}let _=oC("sha1").update(u+lC).digest("base64");if(f.headers["sec-websocket-accept"]!==_){Jt(e,h,"Invalid Sec-WebSocket-Accept header");return}let w=f.headers["sec-websocket-protocol"],k;if(w!==void 0?p.size?p.has(w)||(k="Server sent an invalid subprotocol"):k="Server sent a subprotocol but none was requested":p.size&&(k="Server sent no subprotocol"),k){Jt(e,h,k);return}w&&(e._protocol=w);let P=f.headers["sec-websocket-extensions"];if(P!==void 0){if(!m){Jt(e,h,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let A;try{A=mC(P)}catch{Jt(e,h,"Invalid Sec-WebSocket-Extensions header");return}let Z=Object.keys(A);if(Z.length!==1||Z[0]!==hn.extensionName){Jt(e,h,"Server indicated an extension that was not requested");return}try{m.accept(A[hn.extensionName])}catch{Jt(e,h,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[hn.extensionName]=m}e.setSocket(h,g,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(b,e):b.end()}function _l(e,t){e._readyState=tt.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function yC(e){return e.path=e.socketPath,qv.connect(e)}function kC(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=qv.isIP(e.host)?"":e.host),rC.connect(e)}function Jt(e,t,r){e._readyState=tt.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Jt),t.setHeader?(t[Hv]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(_l,e,n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function Ap(e,t,r){if(t){let n=iC(t)?t.size:hC(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${e.readyState} (${Hr[e.readyState]})`);process.nextTick(r,n)}}function vC(e,t){let r=this[gt];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,r._socket[gt]!==void 0&&(r._socket.removeListener("data",wl),process.nextTick(Jv,r._socket),e===1005?r.close():r.close(e,t))}function zC(){let e=this[gt];e.isPaused||e._socket.resume()}function _C(e){let t=this[gt];t._socket[gt]!==void 0&&(t._socket.removeListener("data",wl),process.nextTick(Jv,t._socket),t.close(e[uC])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function Uv(){this[gt].emitClose()}function wC(e,t){this[gt].emit("message",e,t)}function xC(e){let t=this[gt];t._autoPong&&t.pong(e,!this._isServer,Kv),t.emit("ping",e)}function SC(e){this[gt].emit("pong",e)}function Jv(e){e.resume()}function PC(e){let t=this[gt];t.readyState!==tt.CLOSED&&(t.readyState===tt.OPEN&&(t._readyState=tt.CLOSING,Yv(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function Yv(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),gC)}function Xv(){let e=this[gt];this.removeListener("close",Xv),this.removeListener("data",wl),this.removeListener("end",Qv),e._readyState=tt.CLOSING;let t;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(t=e._socket.read())!==null&&e._receiver.write(t),e._receiver.end(),this[gt]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Uv),e._receiver.on("finish",Uv))}function wl(e){this[gt]._receiver.write(e)||this.pause()}function Qv(){let e=this[gt];e._readyState=tt.CLOSING,e._receiver.end(),this.end()}function ez(){let e=this[gt];this.removeListener("error",ez),this.on("error",Kv),e&&(e._readyState=tt.CLOSING,this.destroy())}});var sz=U((l5,oz)=>{"use strict";var i5=xl(),{Duplex:$C}=ut("stream");function rz(e){e.emit("close")}function EC(){!this.destroyed&&this._writableState.finished&&this.destroy()}function nz(e){this.removeListener("error",nz),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function AC(e,t){let r=!0,n=new $C({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,a){let i=!a&&n._readableState.objectMode?s.toString():s;n.push(i)||e.pause()}),e.once("error",function(s){n.destroyed||(r=!1,n.destroy(s))}),e.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(rz,n);return}let a=!1;e.once("error",function(l){a=!0,s(l)}),e.once("close",function(){a||s(o),process.nextTick(rz,n)}),r&&e.terminate()},n._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){n._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},n._read=function(){e.isPaused&&e.resume()},n._write=function(o,s,a){if(e.readyState===e.CONNECTING){e.once("open",function(){n._write(o,s,a)});return}e.send(o,a)},n.on("end",EC),n.on("error",nz),n}oz.exports=AC});var iz=U((c5,az)=>{"use strict";var{tokenChars:OC}=Po();function IC(e){let t=new Set,r=-1,n=-1,o=0;for(o;o<e.length;o++){let a=e.charCodeAt(o);if(n===-1&&OC[a]===1)r===-1&&(r=o);else if(o!==0&&(a===32||a===9))n===-1&&r!==-1&&(n=o);else if(a===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${o}`);n===-1&&(n=o);let i=e.slice(r,n);if(t.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);t.add(i),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(r,o);if(t.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return t.add(s),t}az.exports={parse:IC}});var mz=U((d5,fz)=>{"use strict";var TC=ut("events"),Sl=ut("http"),{Duplex:u5}=ut("stream"),{createHash:CC}=ut("crypto"),lz=Sp(),Dn=Xs(),NC=iz(),RC=xl(),{GUID:jC,kWebSocket:MC}=Ur(),DC=/^[+/0-9A-Za-z]{22}==$/,cz=0,uz=1,pz=2,Op=class extends TC{constructor(t,r){if(super(),t={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:RC,...t},t.port==null&&!t.server&&!t.noServer||t.port!=null&&(t.server||t.noServer)||t.server&&t.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(t.port!=null?(this._server=Sl.createServer((n,o)=>{let s=Sl.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(t.port,t.host,t.backlog,r)):t.server&&(this._server=t.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=LC(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,a)=>{this.handleUpgrade(o,s,a,n)}})}t.perMessageDeflate===!0&&(t.perMessageDeflate={}),t.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=t,this._state=cz}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(t){if(this._state===pz){t&&this.once("close",()=>{t(new Error("The server is not running"))}),process.nextTick(ra,this);return}if(t&&this.once("close",t),this._state!==uz)if(this._state=uz,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(ra,this):process.nextTick(ra,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{ra(this)})}}shouldHandle(t){if(this.options.path){let r=t.url.indexOf("?");if((r!==-1?t.url.slice(0,r):t.url)!==this.options.path)return!1}return!0}handleUpgrade(t,r,n,o){r.on("error",dz);let s=t.headers["sec-websocket-key"],a=t.headers.upgrade,i=+t.headers["sec-websocket-version"];if(t.method!=="GET"){Ln(this,t,r,405,"Invalid HTTP method");return}if(a===void 0||a.toLowerCase()!=="websocket"){Ln(this,t,r,400,"Invalid Upgrade header");return}if(s===void 0||!DC.test(s)){Ln(this,t,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(i!==13&&i!==8){Ln(this,t,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(t)){na(r,400);return}let l=t.headers["sec-websocket-protocol"],c=new Set;if(l!==void 0)try{c=NC.parse(l)}catch{Ln(this,t,r,400,"Invalid Sec-WebSocket-Protocol header");return}let u=t.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let p=new Dn(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=lz.parse(u);m[Dn.extensionName]&&(p.accept(m[Dn.extensionName]),d[Dn.extensionName]=p)}catch{Ln(this,t,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={origin:t.headers[`${i===8?"sec-websocket-origin":"origin"}`],secure:!!(t.socket.authorized||t.socket.encrypted),req:t};if(this.options.verifyClient.length===2){this.options.verifyClient(p,(m,b,f,h)=>{if(!m)return na(r,b||401,f,h);this.completeUpgrade(d,s,c,t,r,n,o)});return}if(!this.options.verifyClient(p))return na(r,401)}this.completeUpgrade(d,s,c,t,r,n,o)}completeUpgrade(t,r,n,o,s,a,i){if(!s.readable||!s.writable)return s.destroy();if(s[MC])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>cz)return na(s,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${CC("sha1").update(r+jC).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(n.size){let d=this.options.handleProtocols?this.options.handleProtocols(n,o):n.values().next().value;d&&(c.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(t[Dn.extensionName]){let d=t[Dn.extensionName].params,p=lz.format({[Dn.extensionName]:[d]});c.push(`Sec-WebSocket-Extensions: ${p}`),u._extensions=t}this.emit("headers",c,o),s.write(c.concat(`\r
11
11
  `).join(`\r
12
- `)),s.removeListener("error",dz),u.setSocket(s,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(ta,this)})),i(u,o)}};fz.exports=Ap;function MC(e,t){for(let r of Object.keys(t))e.on(r,t[r]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function ta(e){e._state=pz,e.emit("close")}function dz(){this.destroy()}function ra(e,t,r,n){r=r||_l.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${_l.STATUS_CODES[t]}\r
12
+ `)),s.removeListener("error",dz),u.setSocket(s,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(ra,this)})),i(u,o)}};fz.exports=Op;function LC(e,t){for(let r of Object.keys(t))e.on(r,t[r]);return function(){for(let n of Object.keys(t))e.removeListener(n,t[n])}}function ra(e){e._state=pz,e.emit("close")}function dz(){this.destroy()}function na(e,t,r,n){r=r||Sl.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${Sl.STATUS_CODES[t]}\r
13
13
  `+Object.keys(n).map(o=>`${o}: ${n[o]}`).join(`\r
14
14
  `)+`\r
15
15
  \r
16
- `+r)}function Dn(e,t,r,n,o,s){if(e.listenerCount("wsClientError")){let a=new Error(o);Error.captureStackTrace(a,Dn),e.emit("wsClientError",a,r,t)}else ra(r,n,o,s)}});import ey from"node:process";var le={};pf(le,{BIGINT_FORMAT_RANGES:()=>za,CONSTANT_CATCH:()=>wf,Class:()=>Ul,NUMBER_FORMAT_RANGES:()=>Zo,aborted:()=>cr,allowsEval:()=>Jl,assert:()=>rw,assertEqual:()=>Y_,assertIs:()=>ew,assertNever:()=>tw,assertNotEqual:()=>X_,assignProp:()=>qt,attachSchema:()=>Bo,base64ToUint8Array:()=>zf,base64urlToUint8Array:()=>zw,cached:()=>Hn,captureStackTrace:()=>ka,cleanEnum:()=>vw,cleanRegex:()=>Fo,clone:()=>lr,cloneDef:()=>sw,codePointLength:()=>Go,constantCatch:()=>xf,createTransparentProxy:()=>dw,defineLazy:()=>mf,defineLazyInternal:()=>Re,derived:()=>Sw,esc:()=>Hl,escapeRegex:()=>jr,explicitlyAborted:()=>Ql,extend:()=>mw,finalizeIssue:()=>ur,floatSafeRemainder:()=>Kl,getElementAtPath:()=>aw,getEnumValues:()=>qn,getLengthableOrigin:()=>Uo,getParsedType:()=>uw,getSizableOrigin:()=>vf,hexToUint8Array:()=>ww,hide:()=>xa,installLazyProp:()=>Aw,isObject:()=>vn,isPlainObject:()=>Qr,issue:()=>Jn,joinValues:()=>ya,jsonStringifyReplacer:()=>Kn,members:()=>tc,merge:()=>gw,mergeDefs:()=>Rr,normalizeParams:()=>ie,nullish:()=>ql,numKeys:()=>cw,objectClone:()=>nw,omit:()=>fw,optionalKeys:()=>Xl,own:()=>Xr,parsedType:()=>ec,partial:()=>bw,pick:()=>pw,prefixIssues:()=>Mr,primitiveTypes:()=>yf,promiseAllObject:()=>iw,propertyKeyTypes:()=>Yl,randomString:()=>lw,rawShape:()=>Wn,required:()=>yw,safeExtend:()=>hw,shallowClone:()=>bf,sizeCaps:()=>wa,slugify:()=>Wl,stringifyPrimitive:()=>va,toZod:()=>Q_,uint8ArrayToBase64:()=>_f,uint8ArrayToBase64url:()=>_w,uint8ArrayToHex:()=>xw,unwrapMessage:()=>Un});function Y_(e){return e}function X_(e){return e}function Q_(){return e=>e}function ew(e){}function tw(e){throw new Error("Unexpected value in exhaustive check")}function rw(e){}function qn(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function ya(e,t="|"){return e.map(r=>va(r)).join(t)}function Kn(e,t){return typeof t=="bigint"?t.toString():t}var Gl=class{constructor(t){this._getter=t,this._value=void 0}get value(){let t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}};function Hn(e){return new Gl(e)}function ql(e){return e==null}function Fo(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Kl(e,t){let r=e/t,n=Math.round(r),o=4*Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var ff=Symbol("evaluating");function mf(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==ff)return n===void 0&&(n=ff,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function nw(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function qt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function Wn(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function Nr(e){return Wn(e._zod.def)??e._zod.def.shape}function hf(e,t,r){Object.defineProperty(e,t,{get(){let n=r();return qt(this,t,n),n},enumerable:!0,configurable:!0})}function gf(e,t,r){t in e?qt(e,t,r):e[t]=r}function kn(e,t,r,n){let o=Nr(t);for(let s of r){let a=Object.getOwnPropertyDescriptor(o,s);a.enumerable&&(a.get?hf(e,s,()=>{let i=t._zod.def.shape[s];return n?n(i,s):i}):gf(e,s,n?n(a.value,s):a.value))}}function ow(e,t){for(let r of Reflect.ownKeys(t)){let n=Object.getOwnPropertyDescriptor(t,r);n.enumerable&&(n.get?hf(e,r,()=>t[r]):gf(e,r,n.value))}}function Rr(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function sw(e){return Rr(e._zod.def)}function aw(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function iw(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function lw(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Hl(e){return JSON.stringify(e)}function Wl(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var ka="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function vn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Jl=Hn(()=>{if(Mt.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function Qr(e){if(vn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(vn(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function bf(e){return Qr(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function cw(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var uw=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},Yl=new Set(["string","number","symbol"]),yf=new Set(["string","number","bigint","boolean","symbol","undefined"]);function jr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lr(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function ie(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function dw(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function va(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Xl(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var Zo={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]},za={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function pw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s={};return kn(s,e,_a(e,t)),lr(e,Rr(r,{shape:s,checks:[]}))}function _a(e,t){let r=Nr(e),n=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(r,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&n.push(o)}return n}function fw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=new Set(_a(e,t)),a={};return kn(a,e,Reflect.ownKeys(Nr(e)).filter(i=>!s.has(i))),lr(e,Rr(r,{shape:a,checks:[]}))}function mw(e,t){if(!Qr(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=Nr(e);for(let s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return lr(e,Rr(e._zod.def,{shape:kf(e,t)}))}function kf(e,t){let r={};return kn(r,e,Reflect.ownKeys(Nr(e))),ow(r,t),r}function hw(e,t){if(!Qr(t))throw new Error("Invalid input to safeExtend: expected a plain object");return lr(e,Rr(e._zod.def,{shape:kf(e,t)}))}function gw(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r={};kn(r,e,Reflect.ownKeys(Nr(e))),kn(r,t,Reflect.ownKeys(Nr(t)));let n=Rr(e._zod.def,{shape:r,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return lr(e,n)}function bw(e,t,r,n="partial"){let s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${n}() cannot be used on object schemas containing refinements`);let i=r?new Set(_a(t,r)):void 0,c={};return kn(c,t,Reflect.ownKeys(Nr(t)),e&&((l,u)=>i&&!i.has(u)?l:new e({type:"optional",innerType:l}))),lr(t,Rr(t._zod.def,{shape:c,checks:[]}))}function yw(e,t,r){let n=r?new Set(_a(t,r)):void 0,o={};return kn(o,t,Reflect.ownKeys(Nr(t)),(s,a)=>n&&!n.has(a)?s:new e({type:"nonoptional",innerType:s})),lr(t,Rr(t._zod.def,{shape:o}))}function cr(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Ql(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function Mr(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function Un(e){return typeof e=="string"?e:e?.message}function wa(e){let t=[];for(let r of e??[]){let n=r._zod.def;if(!/_(length|size)$|_equals$/.test(n.check))break;let o=n.maximum??n.length??n.size;o>=0&&t.push([o,r])}return t}function Bo(e,t,r){var n;for(let o=t;o<e.length;o++)(n=e[o]).schema??(n.schema=r)}function ur(e,t,r){var n;let o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(n=e).schema??(n.schema=e.inst):e.schema=e.inst);let s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,a=e.message?e.message:Un(e.inst?._zod.def?.error?.(e))??Un(s?.(e))??Un(t?.error?.(e))??Un(r.customError?.(e))??Un(r.localeError?.(e))??"Invalid input",i={};for(let c of Object.keys(e))c==="inst"||c==="schema"||c==="continue"||c==="input"||c==="__proto__"||(i[c]=e[c]);return i.path??(i.path=[]),i.message=a,t?.reportInput&&(i.input=e.input),i}function vf(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}var kw=/[\uD800-\uDBFF]/;function Go(e){let t=e.length;if(!kw.test(e))return t;let r=t;for(let n=0;n<t-1;n++)(e.charCodeAt(n)&64512)===55296&&(e.charCodeAt(n+1)&64512)===56320&&(r--,n++);return r}function Uo(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ec(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function Jn(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function vw(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function zf(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function _f(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function zw(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return zf(t+r)}function _w(e){return _f(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ww(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function xw(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var Ul=class{constructor(...t){}};function tc(e,t){for(let r in t){let n=Object.getOwnPropertyDescriptor(t,r);n.get?Object.defineProperty(e,r,{...n,enumerable:!1}):Pw(e,r,n.value)}}function Xr(e,t,r,n=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:n,value:r}),r}function xa(e,t,r){return Xr(e,t,r,!1)}function Sw(e,t){for(let r in e){let n=e[r];Object.defineProperty(t,r,{configurable:!0,enumerable:!0,get(){return Xr(this,r,n(this))},set(o){Xr(this,r,o)}})}return t}function Pw(e,t,r){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?r:Xr(this,t,r.bind(this))},set(n){Xr(this,t,n)}})}function $w(e,t){let r=Object.getPrototypeOf(e);return t in r?void 0:r}var Bl,Yr=!1,Ew={configurable:!0,get(){Yr=!0}};function Re(e,t,r){let n=Object.getPrototypeOf(e._zod);if(t in n&&Bl!==e._zod){Bl=void 0;return}Bl=e._zod,Object.defineProperty(n,t,{configurable:!0,get(){Object.defineProperty(this,t,Ew);let o=Yr;Yr=!1;try{let s=r(this);return Yr?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),Yr=Yr||o,s}catch(s){throw delete this[t],Yr=Yr||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function Aw(e,t,r,n){let o=$w(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){let s={configurable:!0,writable:!0,enumerable:n,value:void 0};return Object.defineProperty(this,t,s),s.value=r(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:n,value:s})}})}var wf="~constantCatch";function xf(e){let t=()=>e;return t[wf]=!0,t}var Sf;var rc={value:void 0,enumerable:!1},Pf="captureStackTrace"in Error?Error:null;function Ow(e){let t=Pf;if(t){let r=t.stackTraceLimit;if(typeof r=="number"){try{t.stackTraceLimit=0}catch{return Pf=null,new e}try{return new e}finally{t.stackTraceLimit=r}}}return new e}function C(e,t,r,n){let o={};function s(f){this.def=f,this.constr=d,this.traits=new Set}s.prototype=o;let a=r,i=a&&new WeakSet;function c(f,h){if(f._zod){if(f._zod.traits.has(e))return}else{rc.value=new s(h);try{Object.defineProperty(f,"_zod",rc)}finally{rc.value=void 0}}if(f._zod.traits.add(e),t(f,h),i){let p=Object.getPrototypeOf(f),m=f._zod.constr.prototype,g=p;for(;g&&g!==m;)g=Object.getPrototypeOf(g);let v=g??p;i.has(v)||(i.add(v),tc(v,a))}let b=d.prototype;for(let p in b)Object.prototype.hasOwnProperty.call(b,p)&&(p in f||(f[p]=b[p].bind(f)))}let l=n?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(f){let h=n?.Parent?Ow(u):this;c(h,f);let b=h._zod.deferred;if(b){for(let m of b)m();h._zod.deferred=void 0}let p=globalThis.__zod_globalConfig?.postProcessor;return p&&p(h),h}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:f=>n?.Parent&&f instanceof n.Parent?!0:f?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var dr=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Yn=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Sf=globalThis).__zod_globalConfig??(Sf.__zod_globalConfig={});var Mt=globalThis.__zod_globalConfig;function Kt(e){return e&&Object.assign(Mt,e),Mt}function Iw(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Kn,2)),e.message}function Tw(e){this._zod.message=e}var Cw={get:Iw,set:Tw,enumerable:!0,configurable:!0},oc={value:void 0,enumerable:!1},$f=new WeakSet([Object.prototype,Error.prototype]),Ef=(e,t)=>{e.name="$ZodError",oc.value=t,Object.defineProperty(e,"issues",oc),oc.value=void 0,Object.defineProperty(e,"message",Cw);let r=Object.getPrototypeOf(e);$f.has(r)||($f.add(r),Object.defineProperty(r,"toString",{configurable:!0,enumerable:!1,get(){let n=()=>this.message;return Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0})}}))},Af=C("$ZodError",Ef),Of=C("$ZodError",Ef,void 0,{Parent:Error});function Nw(e,t,r){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:r(),writable:!0,enumerable:!0,configurable:!0}):e[t]=r()),e[t]}function If(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?Nw(r,o.path[0],()=>[]).push(t(o)):n.push(t(o));return{formErrors:n,fieldErrors:r}}function Tf(e,t=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let a of o.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(i=>n({issues:i},[...s,...a.path]));else if(a.code==="invalid_key")n({issues:a.issues},[...s,...a.path]);else if(a.code==="invalid_element")n({issues:a.issues},[...s,...a.path]);else{let i=[...s,...a.path];if(i.length===0)r._errors.push(t(a));else{let c=r,l=0;for(;l<i.length;){let u=i[l],d=l===i.length-1;if(u==="_errors"){d&&c._errors.push(t(a)),l++;continue}Object.prototype.hasOwnProperty.call(c,u)||Object.defineProperty(c,u,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let f=c[u];d&&f._errors.push(t(a)),c=f,l++}}}};return n(e),r}function Sa(e,t){return{callee:t?.callee??e,Err:t?.Err}}var Pa=e=>{let t=(r,n,o,s)=>{let a=o?{...o,async:!1}:{async:!1},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise)throw new dr;if(i.issues.length){let c=new(s?.Err??e)(i.issues.map(l=>ur(l,a,Kt())));throw ka(c,s?.callee??t),c}return i.value};return t};var $a=e=>{let t=async(r,n,o,s)=>{let a=o?{...o,async:!0}:{async:!0},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise&&(i=await i),i.issues.length){let c=new(s?.Err??e)(i.issues.map(l=>ur(l,a,Kt())));throw ka(c,s?.callee??t),c}return i.value};return t};var qo=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new dr;return s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}},sc=qo(Of);function Cf(e,t,r){let n;return{success:!1,get error(){return n||(n=new e(t.map(o=>ur(o,r,Kt()))),t=void 0,r=void 0),n},set error(o){n=o,t=void 0,r=void 0}}}var Ea=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}};var jw=Symbol.for("zod.compile.invalid"),Mw=Symbol.for("zod.compile.fallback"),Aa=((e,t,r)=>{let n=e._zod.bag.validator;if(n!==void 0){if(n(t)!==jw)return!0;if(n.definite===!0&&r===void 0)return!1}return Dw(e,t,r)});function Dw(e,t,r){let n=r?{...r,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,s;if(o?(n[Mw]=!0,s=o({value:t,issues:[]},n)):s=e._zod.run({value:t,issues:[]},n),s instanceof Promise)throw new dr;return s.issues.length===0}var Oa=async(e,t,r)=>{let n=r?{...r,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},n);return o instanceof Promise&&(o=await o),o.issues.length===0},Nf=e=>{let t=Pa(e),r=(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return t(n,o,i,Sa(r,a))};return r};var Rf=e=>{let t=Pa(e),r=(n,o,s,a)=>t(n,o,s,Sa(r,a));return r};var jf=e=>{let t=$a(e),r=async(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return await t(n,o,i,Sa(r,a))};return r};var Mf=e=>{let t=$a(e),r=async(n,o,s,a)=>await t(n,o,s,Sa(r,a));return r};var Df=e=>(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return qo(e)(t,r,o)};var Lf=e=>(t,r,n)=>qo(e)(t,r,n);var Vf=e=>async(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ea(e)(t,r,o)};var Ff=e=>async(t,r,n)=>Ea(e)(t,r,n);var Zf=/^[cC][0-9a-z]{6,}$/,Bf=/^[0-9a-z]+$/,Gf=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Uf=/^[0-9a-vA-V]{20}$/,qf=/^[A-Za-z0-9]{27}$/,Kf=/^[a-zA-Z0-9_-]{21}$/;function Hf(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Wf=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Jf=/^([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})$/,ic=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[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 Yf=/^(?:[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 Lw="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Xf(){return new RegExp(Lw,"u")}var Qf=/^(?:(?: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])$/,em=/^(([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 tm=/^((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])$/,rm=/^(([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])$/,nm=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,om=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var sm=/^https?$/,am=/^\+[1-9]\d{6,14}$/;var im="(?:(?:\\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 Vw(e){return new RegExp(`^${e}$`)}var lm=Vw(im);function ac(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function cm(e){return new RegExp(`^${ac(e)}$`)}function um(e){let t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${ac({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,n=e.local?`${r}|${ac({precision:e.precision})}`:r;return new RegExp(`^${im}T(?:${n})$`)}var dm=/^[\s\S]{0,}$/;var lc=/^-?\d+$/,Ko=/^-?\d+(?:\.\d+)?$/,pm=/^(?:true|false)$/i,fm=/^null$/i;var mm=/^[^A-Z]*$/,hm=/^[^a-z]*$/;var zt=C("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var cc=e=>{let t=e.value;return!ql(t)&&t.length!==void 0},Ia={number:"number",bigint:"bigint",object:"date"},uc=C("$ZodCheckLessThan",(e,t)=>{zt.init(e,t);let r=Ia[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:Ia[typeof n.value]??r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),dc=C("$ZodCheckGreaterThan",(e,t)=>{zt.init(e,t);let r=Ia[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:Ia[typeof n.value]??r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gm=C("$ZodCheckMultipleOf",(e,t)=>{zt.init(e,t),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?t.value!==BigInt(0)&&r.value%t.value===BigInt(0):Kl(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),bm=C("$ZodCheckNumberFormat",(e,t)=>{zt.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=Zo[t.format];e._zod.check=a=>{let i=a.value;if(r){if(!Number.isInteger(i)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:i,inst:e});return}if(!Number.isSafeInteger(i)){i>0?a.issues.push({input:i,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):a.issues.push({input:i,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}i<o&&a.issues.push({origin:"number",input:i,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),i>s&&a.issues.push({origin:"number",input:i,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var ym=C("$ZodCheckMaxLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=cc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Go(o):s)<=t.maximum)return;let i=Uo(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),km=C("$ZodCheckMinLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=cc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Go(o):s)>=t.minimum)return;let i=Uo(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),vm=C("$ZodCheckLengthEquals",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=cc),e._zod.check=n=>{let o=n.value,s=o.length,a=typeof o=="string"&&s>=t.length&&s<=t.length*2?Go(o):s;if(a===t.length)return;let i=Uo(o),c=a>t.length;n.issues.push({origin:i,...c?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Wo=C("$ZodCheckStringFormat",(e,t)=>{var r,n;zt.init(e,t),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),zm=C("$ZodCheckRegex",(e,t)=>{Wo.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),_m=C("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=mm),Wo.init(e,t)}),wm=C("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=hm),Wo.init(e,t)}),xm=C("$ZodCheckIncludes",(e,t)=>{zt.init(e,t);let r=jr(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position},}${r}`:r);t.pattern=n,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),Sm=C("$ZodCheckStartsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`^${jr(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Pm=C("$ZodCheckEndsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`.*${jr(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var $m=C("$ZodCheckOverwrite",(e,t)=>{zt.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var Ta=class{constructor(t=[],r={}){this.content=[],this.indent=0,this.args=t,this.closed=r}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
16
+ `+r)}function Ln(e,t,r,n,o,s){if(e.listenerCount("wsClientError")){let a=new Error(o);Error.captureStackTrace(a,Ln),e.emit("wsClientError",a,r,t)}else na(r,n,o,s)}});import ey from"node:process";var le={};pf(le,{BIGINT_FORMAT_RANGES:()=>xa,CONSTANT_CATCH:()=>wf,Class:()=>ql,NUMBER_FORMAT_RANGES:()=>Bo,aborted:()=>cr,allowsEval:()=>Yl,assert:()=>ow,assertEqual:()=>Q_,assertIs:()=>rw,assertNever:()=>nw,assertNotEqual:()=>ew,assignProp:()=>qt,attachSchema:()=>Go,base64ToUint8Array:()=>zf,base64urlToUint8Array:()=>ww,cached:()=>Wn,captureStackTrace:()=>_a,cleanEnum:()=>_w,cleanRegex:()=>Zo,clone:()=>lr,cloneDef:()=>iw,codePointLength:()=>Uo,constantCatch:()=>xf,createTransparentProxy:()=>fw,defineLazy:()=>mf,defineLazyInternal:()=>Re,derived:()=>$w,esc:()=>Wl,escapeRegex:()=>Mr,explicitlyAborted:()=>ec,extend:()=>gw,finalizeIssue:()=>ur,floatSafeRemainder:()=>Hl,getElementAtPath:()=>lw,getEnumValues:()=>Kn,getLengthableOrigin:()=>qo,getParsedType:()=>pw,getSizableOrigin:()=>vf,hexToUint8Array:()=>Sw,hide:()=>$a,installLazyProp:()=>Iw,isObject:()=>zn,isPlainObject:()=>en,issue:()=>Yn,joinValues:()=>za,jsonStringifyReplacer:()=>Hn,members:()=>rc,merge:()=>yw,mergeDefs:()=>jr,normalizeParams:()=>ie,nullish:()=>Kl,numKeys:()=>dw,objectClone:()=>sw,omit:()=>hw,optionalKeys:()=>Ql,own:()=>Qr,parsedType:()=>tc,partial:()=>kw,pick:()=>mw,prefixIssues:()=>Dr,primitiveTypes:()=>yf,promiseAllObject:()=>cw,propertyKeyTypes:()=>Xl,randomString:()=>uw,rawShape:()=>Jn,required:()=>vw,safeExtend:()=>bw,shallowClone:()=>bf,sizeCaps:()=>Pa,slugify:()=>Jl,stringifyPrimitive:()=>wa,toZod:()=>tw,uint8ArrayToBase64:()=>_f,uint8ArrayToBase64url:()=>xw,uint8ArrayToHex:()=>Pw,unwrapMessage:()=>qn});function Q_(e){return e}function ew(e){return e}function tw(){return e=>e}function rw(e){}function nw(e){throw new Error("Unexpected value in exhaustive check")}function ow(e){}function Kn(e){let t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function za(e,t="|"){return e.map(r=>wa(r)).join(t)}function Hn(e,t){return typeof t=="bigint"?t.toString():t}var Ul=class{constructor(t){this._getter=t,this._value=void 0}get value(){let t=this._getter;return t!==void 0&&(this._value=t(),this._getter=void 0),this._value}};function Wn(e){return new Ul(e)}function Kl(e){return e==null}function Zo(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Hl(e,t){let r=e/t,n=Math.round(r),o=4*Number.EPSILON*Math.max(Math.abs(r),1);return Math.abs(r-n)<o?0:r-n}var ff=Symbol("evaluating");function mf(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==ff)return n===void 0&&(n=ff,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}function sw(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function qt(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function Jn(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function Rr(e){return Jn(e._zod.def)??e._zod.def.shape}function hf(e,t,r){Object.defineProperty(e,t,{get(){let n=r();return qt(this,t,n),n},enumerable:!0,configurable:!0})}function gf(e,t,r){t in e?qt(e,t,r):e[t]=r}function vn(e,t,r,n){let o=Rr(t);for(let s of r){let a=Object.getOwnPropertyDescriptor(o,s);a.enumerable&&(a.get?hf(e,s,()=>{let i=t._zod.def.shape[s];return n?n(i,s):i}):gf(e,s,n?n(a.value,s):a.value))}}function aw(e,t){for(let r of Reflect.ownKeys(t)){let n=Object.getOwnPropertyDescriptor(t,r);n.enumerable&&(n.get?hf(e,r,()=>t[r]):gf(e,r,n.value))}}function jr(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function iw(e){return jr(e._zod.def)}function lw(e,t){return t?t.reduce((r,n)=>r?.[n],e):e}function cw(e){let t=Object.keys(e),r=t.map(n=>e[n]);return Promise.all(r).then(n=>{let o={};for(let s=0;s<t.length;s++)o[t[s]]=n[s];return o})}function uw(e=10){let t="abcdefghijklmnopqrstuvwxyz",r="";for(let n=0;n<e;n++)r+=t[Math.floor(Math.random()*t.length)];return r}function Wl(e){return JSON.stringify(e)}function Jl(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var _a="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function zn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var Yl=Wn(()=>{if(Mt.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function en(e){if(zn(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!="function")return!0;let r=t.prototype;return!(zn(r)===!1||Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)}function bf(e){return en(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function dw(e){let t=0;for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t++;return t}var pw=e=>{let t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},Xl=new Set(["string","number","symbol"]),yf=new Set(["string","number","bigint","boolean","symbol","undefined"]);function Mr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lr(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function ie(e){let t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function fw(e){let t;return new Proxy({},{get(r,n,o){return t??(t=e()),Reflect.get(t,n,o)},set(r,n,o,s){return t??(t=e()),Reflect.set(t,n,o,s)},has(r,n){return t??(t=e()),Reflect.has(t,n)},deleteProperty(r,n){return t??(t=e()),Reflect.deleteProperty(t,n)},ownKeys(r){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(r,n){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,n)},defineProperty(r,n,o){return t??(t=e()),Reflect.defineProperty(t,n,o)}})}function wa(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function Ql(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var Bo={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]},xa={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function mw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let s={};return vn(s,e,Sa(e,t)),lr(e,jr(r,{shape:s,checks:[]}))}function Sa(e,t){let r=Rr(e),n=[];for(let o of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(r,o)?.enumerable)throw new Error(`Unrecognized key: "${String(o)}"`);t[o]&&n.push(o)}return n}function hw(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let s=new Set(Sa(e,t)),a={};return vn(a,e,Reflect.ownKeys(Rr(e)).filter(i=>!s.has(i))),lr(e,jr(r,{shape:a,checks:[]}))}function gw(e,t){if(!en(t))throw new Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=Rr(e);for(let s of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return lr(e,jr(e._zod.def,{shape:kf(e,t)}))}function kf(e,t){let r={};return vn(r,e,Reflect.ownKeys(Rr(e))),aw(r,t),r}function bw(e,t){if(!en(t))throw new Error("Invalid input to safeExtend: expected a plain object");return lr(e,jr(e._zod.def,{shape:kf(e,t)}))}function yw(e,t){if(!t?._zod?.def)throw new Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r={};vn(r,e,Reflect.ownKeys(Rr(e))),vn(r,t,Reflect.ownKeys(Rr(t)));let n=jr(e._zod.def,{shape:r,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return lr(e,n)}function kw(e,t,r,n="partial"){let s=t._zod.def.checks;if(s&&s.length>0)throw new Error(`.${n}() cannot be used on object schemas containing refinements`);let i=r?new Set(Sa(t,r)):void 0,l={};return vn(l,t,Reflect.ownKeys(Rr(t)),e&&((c,u)=>i&&!i.has(u)?c:new e({type:"optional",innerType:c}))),lr(t,jr(t._zod.def,{shape:l,checks:[]}))}function vw(e,t,r){let n=r?new Set(Sa(t,r)):void 0,o={};return vn(o,t,Reflect.ownKeys(Rr(t)),(s,a)=>n&&!n.has(a)?s:new e({type:"nonoptional",innerType:s})),lr(t,jr(t._zod.def,{shape:o}))}function cr(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function ec(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function Dr(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function qn(e){return typeof e=="string"?e:e?.message}function Pa(e){let t=[];for(let r of e??[]){let n=r._zod.def;if(!/_(length|size)$|_equals$/.test(n.check))break;let o=n.maximum??n.length??n.size;o>=0&&t.push([o,r])}return t}function Go(e,t,r){var n;for(let o=t;o<e.length;o++)(n=e[o]).schema??(n.schema=r)}function ur(e,t,r){var n;let o=e.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(n=e).schema??(n.schema=e.inst):e.schema=e.inst);let s=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,a=e.message?e.message:qn(e.inst?._zod.def?.error?.(e))??qn(s?.(e))??qn(t?.error?.(e))??qn(r.customError?.(e))??qn(r.localeError?.(e))??"Invalid input",i={};for(let l of Object.keys(e))l==="inst"||l==="schema"||l==="continue"||l==="input"||l==="__proto__"||(i[l]=e[l]);return i.path??(i.path=[]),i.message=a,t?.reportInput&&(i.input=e.input),i}function vf(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}var zw=/[\uD800-\uDBFF]/;function Uo(e){let t=e.length;if(!zw.test(e))return t;let r=t;for(let n=0;n<t-1;n++)(e.charCodeAt(n)&64512)===55296&&(e.charCodeAt(n+1)&64512)===56320&&(r--,n++);return r}function qo(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function tc(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function Yn(...e){let[t,r,n]=e;return typeof t=="string"?{message:t,code:"custom",input:r,inst:n}:{...t}}function _w(e){return Object.entries(e).filter(([t,r])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}function zf(e){let t=atob(e),r=new Uint8Array(t.length);for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function _f(e){let t="";for(let r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function ww(e){let t=e.replace(/-/g,"+").replace(/_/g,"/"),r="=".repeat((4-t.length%4)%4);return zf(t+r)}function xw(e){return _f(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Sw(e){let t=e.replace(/^0x/,"");if(t.length%2!==0)throw new Error("Invalid hex string length");let r=new Uint8Array(t.length/2);for(let n=0;n<t.length;n+=2)r[n/2]=Number.parseInt(t.slice(n,n+2),16);return r}function Pw(e){return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join("")}var ql=class{constructor(...t){}};function rc(e,t){for(let r in t){let n=Object.getOwnPropertyDescriptor(t,r);n.get?Object.defineProperty(e,r,{...n,enumerable:!1}):Ew(e,r,n.value)}}function Qr(e,t,r,n=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:n,value:r}),r}function $a(e,t,r){return Qr(e,t,r,!1)}function $w(e,t){for(let r in e){let n=e[r];Object.defineProperty(t,r,{configurable:!0,enumerable:!0,get(){return Qr(this,r,n(this))},set(o){Qr(this,r,o)}})}return t}function Ew(e,t,r){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?r:Qr(this,t,r.bind(this))},set(n){Qr(this,t,n)}})}function Aw(e,t){let r=Object.getPrototypeOf(e);return t in r?void 0:r}var Gl,Xr=!1,Ow={configurable:!0,get(){Xr=!0}};function Re(e,t,r){let n=Object.getPrototypeOf(e._zod);if(t in n&&Gl!==e._zod){Gl=void 0;return}Gl=e._zod,Object.defineProperty(n,t,{configurable:!0,get(){Object.defineProperty(this,t,Ow);let o=Xr;Xr=!1;try{let s=r(this);return Xr?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:s}),Xr=Xr||o,s}catch(s){throw delete this[t],Xr=Xr||o,s}},set(o){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:o})}})}function Iw(e,t,r,n){let o=Aw(e,t);o&&Object.defineProperty(o,t,{configurable:!0,get(){let s={configurable:!0,writable:!0,enumerable:n,value:void 0};return Object.defineProperty(this,t,s),s.value=r(this),Object.defineProperty(this,t,s),s.value},set(s){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:n,value:s})}})}var wf="~constantCatch";function xf(e){let t=()=>e;return t[wf]=!0,t}var Sf;var nc={value:void 0,enumerable:!1},Pf="captureStackTrace"in Error?Error:null;function Tw(e){let t=Pf;if(t){let r=t.stackTraceLimit;if(typeof r=="number"){try{t.stackTraceLimit=0}catch{return Pf=null,new e}try{return new e}finally{t.stackTraceLimit=r}}}return new e}function C(e,t,r,n){let o={};function s(p){this.def=p,this.constr=d,this.traits=new Set}s.prototype=o;let a=r,i=a&&new WeakSet;function l(p,m){if(p._zod){if(p._zod.traits.has(e))return}else{nc.value=new s(m);try{Object.defineProperty(p,"_zod",nc)}finally{nc.value=void 0}}if(p._zod.traits.add(e),t(p,m),i){let f=Object.getPrototypeOf(p),h=p._zod.constr.prototype,g=f;for(;g&&g!==h;)g=Object.getPrototypeOf(g);let v=g??f;i.has(v)||(i.add(v),rc(v,a))}let b=d.prototype;for(let f in b)Object.prototype.hasOwnProperty.call(b,f)&&(f in p||(p[f]=b[f].bind(p)))}let c=n?.Parent??Object;class u extends c{}Object.defineProperty(u,"name",{value:e});function d(p){let m=n?.Parent?Tw(u):this;l(m,p);let b=m._zod.deferred;if(b){for(let h of b)h();m._zod.deferred=void 0}let f=globalThis.__zod_globalConfig?.postProcessor;return f&&f(m),m}return Object.defineProperty(d,"init",{value:l}),Object.defineProperty(d,Symbol.hasInstance,{value:p=>n?.Parent&&p instanceof n.Parent?!0:p?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var dr=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},Xn=class extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}};(Sf=globalThis).__zod_globalConfig??(Sf.__zod_globalConfig={});var Mt=globalThis.__zod_globalConfig;function Kt(e){return e&&Object.assign(Mt,e),Mt}function Cw(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Hn,2)),e.message}function Nw(e){this._zod.message=e}var Rw={get:Cw,set:Nw,enumerable:!0,configurable:!0},sc={value:void 0,enumerable:!1},$f=new WeakSet([Object.prototype,Error.prototype]),Ef=(e,t)=>{e.name="$ZodError",sc.value=t,Object.defineProperty(e,"issues",sc),sc.value=void 0,Object.defineProperty(e,"message",Rw);let r=Object.getPrototypeOf(e);$f.has(r)||($f.add(r),Object.defineProperty(r,"toString",{configurable:!0,enumerable:!1,get(){let n=()=>this.message;return Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,"toString",{value:n,configurable:!0,writable:!0})}}))},Af=C("$ZodError",Ef),Of=C("$ZodError",Ef,void 0,{Parent:Error});function jw(e,t,r){return Object.prototype.hasOwnProperty.call(e,t)||(t==="__proto__"?Object.defineProperty(e,t,{value:r(),writable:!0,enumerable:!0,configurable:!0}):e[t]=r()),e[t]}function If(e,t=r=>r.message){let r={},n=[];for(let o of e.issues)o.path.length>0?jw(r,o.path[0],()=>[]).push(t(o)):n.push(t(o));return{formErrors:n,fieldErrors:r}}function Tf(e,t=r=>r.message){let r={_errors:[]},n=(o,s=[])=>{for(let a of o.issues)if(a.code==="invalid_union"&&a.errors.length)a.errors.map(i=>n({issues:i},[...s,...a.path]));else if(a.code==="invalid_key")n({issues:a.issues},[...s,...a.path]);else if(a.code==="invalid_element")n({issues:a.issues},[...s,...a.path]);else{let i=[...s,...a.path];if(i.length===0)r._errors.push(t(a));else{let l=r,c=0;for(;c<i.length;){let u=i[c],d=c===i.length-1;if(u==="_errors"){d&&l._errors.push(t(a)),c++;continue}Object.prototype.hasOwnProperty.call(l,u)||Object.defineProperty(l,u,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let p=l[u];d&&p._errors.push(t(a)),l=p,c++}}}};return n(e),r}function Ea(e,t){return{callee:t?.callee??e,Err:t?.Err}}var Aa=e=>{let t=(r,n,o,s)=>{let a=o?{...o,async:!1}:{async:!1},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise)throw new dr;if(i.issues.length){let l=new(s?.Err??e)(i.issues.map(c=>ur(c,a,Kt())));throw _a(l,s?.callee??t),l}return i.value};return t};var Oa=e=>{let t=async(r,n,o,s)=>{let a=o?{...o,async:!0}:{async:!0},i=r._zod.run({value:n,issues:[]},a);if(i instanceof Promise&&(i=await i),i.issues.length){let l=new(s?.Err??e)(i.issues.map(c=>ur(c,a,Kt())));throw _a(l,s?.callee??t),l}return i.value};return t};var Ko=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new dr;return s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}},ac=Ko(Of);function Cf(e,t,r){let n;return{success:!1,get error(){return n||(n=new e(t.map(o=>ur(o,r,Kt()))),t=void 0,r=void 0),n},set error(o){n=o,t=void 0,r=void 0}}}var Ia=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?Cf(e,s.issues,o):{success:!0,data:s.value}};var Dw=Symbol.for("zod.compile.invalid"),Lw=Symbol.for("zod.compile.fallback"),Ta=((e,t,r)=>{let n=e._zod.bag.validator;if(n!==void 0){if(n(t)!==Dw)return!0;if(n.definite===!0&&r===void 0)return!1}return Vw(e,t,r)});function Vw(e,t,r){let n=r?{...r,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},o=e._zod.bag.fallbackRun,s;if(o?(n[Lw]=!0,s=o({value:t,issues:[]},n)):s=e._zod.run({value:t,issues:[]},n),s instanceof Promise)throw new dr;return s.issues.length===0}var Ca=async(e,t,r)=>{let n=r?{...r,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},o=e._zod.run({value:t,issues:[]},n);return o instanceof Promise&&(o=await o),o.issues.length===0},Nf=e=>{let t=Aa(e),r=(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return t(n,o,i,Ea(r,a))};return r};var Rf=e=>{let t=Aa(e),r=(n,o,s,a)=>t(n,o,s,Ea(r,a));return r};var jf=e=>{let t=Oa(e),r=async(n,o,s,a)=>{let i=s?{...s,direction:"backward"}:{direction:"backward"};return await t(n,o,i,Ea(r,a))};return r};var Mf=e=>{let t=Oa(e),r=async(n,o,s,a)=>await t(n,o,s,Ea(r,a));return r};var Df=e=>(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ko(e)(t,r,o)};var Lf=e=>(t,r,n)=>Ko(e)(t,r,n);var Vf=e=>async(t,r,n)=>{let o=n?{...n,direction:"backward"}:{direction:"backward"};return Ia(e)(t,r,o)};var Ff=e=>async(t,r,n)=>Ia(e)(t,r,n);var Zf=/^[cC][0-9a-z]{6,}$/,Bf=/^[0-9a-z]+$/,Gf=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Uf=/^[0-9a-vA-V]{20}$/,qf=/^[A-Za-z0-9]{27}$/,Kf=/^[a-zA-Z0-9_-]{21}$/;function Hf(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Wf=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var Jf=/^([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})$/,lc=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[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 Yf=/^(?:[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 Fw="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Xf(){return new RegExp(Fw,"u")}var Qf=/^(?:(?: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])$/,em=/^(([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 tm=/^((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])$/,rm=/^(([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])$/,nm=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,om=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var sm=/^https?$/,am=/^\+[1-9]\d{6,14}$/;var im="(?:(?:\\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 Zw(e){return new RegExp(`^${e}$`)}var lm=Zw(im);function ic(e){let t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function cm(e){return new RegExp(`^${ic(e)}$`)}function um(e){let t=["Z"];e.offset&&t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${ic({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,n=e.local?`${r}|${ic({precision:e.precision})}`:r;return new RegExp(`^${im}T(?:${n})$`)}var dm=/^[\s\S]{0,}$/;var cc=/^-?\d+$/,Ho=/^-?\d+(?:\.\d+)?$/,pm=/^(?:true|false)$/i,fm=/^null$/i;var mm=/^[^A-Z]*$/,hm=/^[^a-z]*$/;var zt=C("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var uc=e=>{let t=e.value;return!Kl(t)&&t.length!==void 0},Na={number:"number",bigint:"bigint",object:"date"},dc=C("$ZodCheckLessThan",(e,t)=>{zt.init(e,t);let r=Na[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:Na[typeof n.value]??r,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),pc=C("$ZodCheckGreaterThan",(e,t)=>{zt.init(e,t);let r=Na[typeof t.value];e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:Na[typeof n.value]??r,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),gm=C("$ZodCheckMultipleOf",(e,t)=>{zt.init(e,t),e._zod.check=r=>{if(typeof r.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof r.value=="bigint"?t.value!==BigInt(0)&&r.value%t.value===BigInt(0):Hl(r.value,t.value)===0)||r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),bm=C("$ZodCheckNumberFormat",(e,t)=>{zt.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[o,s]=Bo[t.format];e._zod.check=a=>{let i=a.value;if(r){if(!Number.isInteger(i)){a.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:i,inst:e});return}if(!Number.isSafeInteger(i)){i>0?a.issues.push({input:i,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort}):a.issues.push({input:i,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}i<o&&a.issues.push({origin:"number",input:i,code:"too_small",minimum:o,inclusive:!0,inst:e,continue:!t.abort}),i>s&&a.issues.push({origin:"number",input:i,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}});var ym=C("$ZodCheckMaxLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>t.maximum?Uo(o):s)<=t.maximum)return;let i=qo(o);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),km=C("$ZodCheckMinLength",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length;if((typeof o=="string"&&s>=t.minimum&&s<t.minimum*2?Uo(o):s)>=t.minimum)return;let i=qo(o);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),vm=C("$ZodCheckLengthEquals",(e,t)=>{var r;zt.init(e,t),(r=e._zod.def).when??(r.when=uc),e._zod.check=n=>{let o=n.value,s=o.length,a=typeof o=="string"&&s>=t.length&&s<=t.length*2?Uo(o):s;if(a===t.length)return;let i=qo(o),l=a>t.length;n.issues.push({origin:i,...l?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Jo=C("$ZodCheckStringFormat",(e,t)=>{var r,n;zt.init(e,t),t.pattern?(r=e._zod).check??(r.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:t.format,input:o.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),zm=C("$ZodCheckRegex",(e,t)=>{Jo.init(e,t),e._zod.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),_m=C("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=mm),Jo.init(e,t)}),wm=C("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=hm),Jo.init(e,t)}),xm=C("$ZodCheckIncludes",(e,t)=>{zt.init(e,t);let r=Mr(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position},}${r}`:r);t.pattern=n,e._zod.check=o=>{o.value.includes(t.includes,t.position)||o.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:o.value,inst:e,continue:!t.abort})}}),Sm=C("$ZodCheckStartsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`^${Mr(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Pm=C("$ZodCheckEndsWith",(e,t)=>{zt.init(e,t);let r=new RegExp(`.*${Mr(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}});var $m=C("$ZodCheckOverwrite",(e,t)=>{zt.init(e,t),e._zod.check=r=>{r.value=t.tx(r.value)}});var Ra=class{constructor(t=[],r={}){this.content=[],this.indent=0,this.args=t,this.closed=r}indented(t){this.indent+=1;try{t(this)}finally{this.indent-=1}}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}let n=t.split(`
17
17
  `).filter(a=>a),o=Math.min(...n.map(a=>a.length-a.trimStart().length)),s=n.map(a=>a.slice(o)).map(a=>" ".repeat(this.indent*2)+a);for(let a of s)this.content.push(a)}compile(){let t=Function,r=this?.content??[""];return new t(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
18
18
  ${r.join(`
19
19
  `)}
20
- };`)(...Object.values(this.closed))}};var Am={major:4,minor:6,patch:7};var qe=C("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Am;let n=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...n??[]]:n?.length?[...n]:[];for(let s of o)for(let a of s._zod.onattach)a(e);if(o.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let s=(i,c,l)=>{if(i.memo)return i;let u=cr(i),d;for(let f of c){if(f._zod.def.when){if(Ql(i)||!f._zod.def.when(i))continue}else if(u)continue;let h=i.issues.length,b=f._zod.check(i);if(b instanceof Promise&&l?.async===!1)throw new dr;if(d||b instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await b,i.issues.length!==h&&(Bo(i.issues,h,e),u||(u=cr(i,h)))});else{if(i.issues.length===h)continue;Bo(i.issues,h,e),u||(u=cr(i,h))}}return d?d.then(()=>i):i},a=(i,c,l)=>{if(cr(i))return i.aborted=!0,i;let u=s(c,o,l);if(u instanceof Promise){if(l.async===!1)throw new dr;return u.then(d=>e._zod.parse(d,l))}return e._zod.parse(u,l)};e._zod.run=(i,c)=>{if(c.skipChecks)return e._zod.parse(i,c);if(c.direction==="backward"){let u=e._zod.parse({value:i.value,issues:[]},{...c,skipChecks:!0});return u instanceof Promise?u.then(d=>a(d,i,c)):a(u,i,c)}let l=e._zod.parse(i,c);if(l instanceof Promise){if(c.async===!1)throw new dr;return l.then(u=>s(u,o,c))}return s(l,o,c)}}},{get"~standard"(){return xa(this,"~standard",fc(this))},set"~standard"(e){Xr(this,"~standard",e)}}),Vm=(e,t)=>e.issues.length?{issues:e.issues.map(r=>ur(r,t,Kt()))}:{value:e.value};async function Fw(e,t){let r={async:!0};return Vm(await e._zod.run({value:t,issues:[]},r),r)}function fc(e){return{validate:t=>{let r={async:!1};try{let n=e._zod.run({value:t,issues:[]},r);if(!(n instanceof Promise))return Vm(n,r)}catch{}return Fw(e,t)},vendor:"zod",version:1}}var ja=C("$ZodString",(e,t)=>{qe.init(e,t),e._zod.pattern=t.pattern??dm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),Ke=C("$ZodStringFormat",(e,t)=>{Wo.init(e,t),ja.init(e,t)}),Fm=C("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Jf),Ke.init(e,t)}),Zm=C("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=ic(n))}else t.pattern??(t.pattern=ic());Ke.init(e,t)}),Bm=C("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Yf),Ke.init(e,t)}),Gm=1,Na=2;function Um(e){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Zw(e,t){return!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t)?Um(e)||Na:Bw(e,t)}function Bw(e,t){if(!t.normalize&&t.protocol?.source===sm.source&&!/^https?:\/\//i.test(e))return Gm;try{if(typeof URL<"u"){let r=URL;if(typeof r.parse=="function")return r.parse(e)??Na}return new URL(e)}catch{return Na}}var Gw=/[\t\n\r]/g;function Om(e){return e.replace(Gw,"")}function Uw(e,t){return t.lastIndex=0,t.test(e.hostname)}function qw(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var qm=C("$ZodURL",(e,t)=>{Ke.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=Zw(n,t);if(o===Gm){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}if(o===Na){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort});return}if(o===!0){r.value=Om(n);return}t.hostname&&!Uw(o,t.hostname)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort}),t.protocol&&!qw(o,t.protocol)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort}),r.value=t.normalize?o.href:Om(n);return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Km=C("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Xf()),Ke.init(e,t)}),Hm=C("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw new Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?Kf:Hf(t.length)),Ke.init(e,t)}),Wm=C("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Zf),Ke.init(e,t)}),Jm=C("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Bf),Ke.init(e,t)}),Ym=C("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Gf),Ke.init(e,t)}),Xm=C("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Uf),Ke.init(e,t)}),Qm=C("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=qf),Ke.init(e,t)}),eh=C("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=um(t)),Ke.init(e,t)}),th=C("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=lm),Ke.init(e,t)}),rh=C("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=cm(t)),Ke.init(e,t)}),nh=C("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Wf),Ke.init(e,t)}),oh=C("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Qf),Ke.init(e,t)}),Kw=/^[0-9a-fA-F:.]+$/;function sh(e){return Kw.test(e)?Um(`http://[${e}]`):!1}var ah=C("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=em),Ke.init(e,t),e._zod.check=r=>{sh(r.value)||r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}});var ih=C("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=tm),Ke.init(e,t)});function Hw(e){let t=e.split("/");if(t.length!==2)return!1;let[r,n]=t;if(!n)return!1;let o=Number(n);return`${o}`!==n||o<0||o>128?!1:sh(r)}var lh=C("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=rm),Ke.init(e,t),e._zod.check=r=>{Hw(r.value)||r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}});function ch(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var mc=/^[0-9a-zA-Z+/]*={0,2}$/,uh=C("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=mc),Ke.init(e,t),e._zod.check=r=>{ch(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}}),Ma=/^[A-Za-z0-9_-]*$/;function Ww(e){if(!Ma.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return ch(r)}var dh=C("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Ma),Ke.init(e,t),e._zod.check=r=>{Ww(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),ph=C("$ZodE164",(e,t)=>{t.pattern??(t.pattern=am),Ke.init(e,t)});function Jw(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var fh=C("$ZodJWT",(e,t)=>{Ke.init(e,t),e._zod.check=r=>{Jw(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var hc=C("$ZodNumber",(e,t)=>{qe.init(e,t),e._zod.pattern=Ko,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),mh=C("$ZodNumberFormat",(e,t)=>{bm.init(e,t),hc.init(e,t)}),hh=C("$ZodBoolean",(e,t)=>{qe.init(e,t),e._zod.pattern=pm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}});var gh=C("$ZodNull",(e,t)=>{qe.init(e,t),e._zod.pattern=fm,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}});var bh=C("$ZodUnknown",(e,t)=>{qe.init(e,t),e._zod.parse=r=>r}),yh=C("$ZodNever",(e,t)=>{qe.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function Yw(e,t){let r=wa(e._zod.def.checks);if(!r.length)return;let n=Math.min(...r.map(s=>s[0])),o=e._zod.parse;e._zod.parse=(s,a)=>{let i=t(s.value);if(i>n&&!a?.skipChecks&&a?.direction!=="backward"){for(let[c,l]of wa(e._zod.def.checks))if(i>c&&l._zod.def.when(s)){let u=s.issues.length;return l._zod.check(s),s.issues[u].continue=!1,Bo(s.issues,u,e),s}}return o(s,a)}}var Xw=e=>Array.isArray(e)?e.length:-1;function Im(e,t,r){e.issues.length&&t.issues.push(...Mr(r,e.issues)),t.value[r]=e.value}var kh=C("$ZodArray",(e,t)=>{qe.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({expected:"array",code:"invalid_type",input:s,inst:e}),n;n.value=r?r.alloc(e,n,Array(s.length),o):Array(s.length);let a=[],i=o?.abortEarly;for(let c=0;c<s.length;c++){let l=s[c],u=t.element._zod.run({value:l,issues:[]},o);if(u instanceof Promise)a.push(u.then(d=>Im(d,n,c)));else if(Im(u,n,c),i&&u.issues.length!==0&&cr(u))break}return a.length?Promise.all(a).then(()=>n):n},Yw(e,Xw)});function Ra(e,t,r,n,o,s){let a=r in n,i=s==="optional";if(!(!a&&i&&o==="optional")){if(e.issues.length){if(o!==void 0&&i&&!a)return;t.issues.push(...Mr(r,e.issues))}if(!a&&o===void 0){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}e.value===void 0?(a||o==="defaulted"&&!i)&&(t.value[r]=void 0):t.value[r]=e.value}}var Qw=[];function vh(e){let t=Object.keys(e.shape),r=Object.getOwnPropertySymbols(e.shape),n=r.length?r:Qw,o=n.length?[...t,...n]:t;for(let a of o)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(a)}": expected a Zod schema`);let s=Xl(e.shape);return{...e,allKeys:o,symbolKeys:n,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(s)}}function zh(e,t,r,n,o,s,a){let i=[],c=o.keySet,l=o.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,h=0;for(let b in t){if(a&&r.issues.length!==h){if(cr(r,h))break;h=r.issues.length}if(c.has(b))continue;if(b==="__proto__"){u==="never"&&i.push(b);continue}if(u==="never"){i.push(b);continue}let p=l.run({value:t[b],issues:[]},n);p instanceof Promise?e.push(p.then(m=>Ra(m,r,b,t,d,f))):Ra(p,r,b,t,d,f)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s,continue:!0}),e.length?Promise.all(e).then(()=>r):r}var ex=C("$ZodObject",(e,t)=>{qe.init(e,t);let r=Object.getOwnPropertyDescriptor(t,"shape"),n=r?.get?r.get.raw:t.shape??{};if(n){let l=()=>{let u={...n};return Object.defineProperty(t,"shape",{value:u}),l.raw=u,u};l.raw=n,Object.defineProperty(t,"shape",{get:l})}let o=Hn(()=>vh(t));Re(e,"propValues",l=>{let u=l.def.shape,d={};for(let f in u){let h=u[f]._zod;if(h.values){Object.prototype.hasOwnProperty.call(d,f)||qt(d,f,new Set);for(let b of h.values)d[f].add(b);h.optin!==void 0&&d[f].add(void 0)}}return d});let s=vn,a=t.catchall,i,c=Mt.memoizer;c?.attach(e),e._zod.parse=(l,u)=>{i??(i=o.value);let d=l.value;if(!s(d))return l.issues.push({expected:"object",code:"invalid_type",input:d,inst:e}),l;l.value=c?c.alloc(e,l,{},u):{};let f=[],h=i.shape,b=u?.abortEarly,p=l.issues.length;for(let m of i.allKeys){if(b&&l.issues.length!==p){if(cr(l,p))break;p=l.issues.length}if(m==="__proto__")continue;let g=h[m],v=g._zod.optin,_=g._zod.optout,w=g._zod.run({value:d[m],issues:[]},u);w instanceof Promise?f.push(w.then(k=>Ra(k,l,m,d,v,_))):Ra(w,l,m,d,v,_)}return a?zh(f,d,l,u,o.value,e,b===!0):f.length?Promise.all(f).then(()=>l):l}}),_h=C("$ZodObjectJIT",(e,t)=>{ex.init(e,t);let r=e._zod.parse,n=Hn(()=>vh(t)),o=Mt.memoizer,s=h=>{let b=n.value,p=b.symbolKeys,m=new Ta(["payload","ctx"],{shape:h,inst:e,memo:o,syms:p}),g=k=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,v=(k,P)=>`
20
+ };`)(...Object.values(this.closed))}};var Am={major:4,minor:6,patch:7};var Ke=C("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Am;let n=e._zod.def.checks,o=e._zod.traits.has("$ZodCheck")?[e,...n??[]]:n?.length?[...n]:[];for(let s of o)for(let a of s._zod.onattach)a(e);if(o.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let s=(i,l,c)=>{if(i.memo)return i;let u=cr(i),d;for(let p of l){if(p._zod.def.when){if(ec(i)||!p._zod.def.when(i))continue}else if(u)continue;let m=i.issues.length,b=p._zod.check(i);if(b instanceof Promise&&c?.async===!1)throw new dr;if(d||b instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await b,i.issues.length!==m&&(Go(i.issues,m,e),u||(u=cr(i,m)))});else{if(i.issues.length===m)continue;Go(i.issues,m,e),u||(u=cr(i,m))}}return d?d.then(()=>i):i},a=(i,l,c)=>{if(cr(i))return i.aborted=!0,i;let u=s(l,o,c);if(u instanceof Promise){if(c.async===!1)throw new dr;return u.then(d=>e._zod.parse(d,c))}return e._zod.parse(u,c)};e._zod.run=(i,l)=>{if(l.skipChecks)return e._zod.parse(i,l);if(l.direction==="backward"){let u=e._zod.parse({value:i.value,issues:[]},{...l,skipChecks:!0});return u instanceof Promise?u.then(d=>a(d,i,l)):a(u,i,l)}let c=e._zod.parse(i,l);if(c instanceof Promise){if(l.async===!1)throw new dr;return c.then(u=>s(u,o,l))}return s(c,o,l)}}},{get"~standard"(){return $a(this,"~standard",mc(this))},set"~standard"(e){Qr(this,"~standard",e)}}),Vm=(e,t)=>e.issues.length?{issues:e.issues.map(r=>ur(r,t,Kt()))}:{value:e.value};async function Bw(e,t){let r={async:!0};return Vm(await e._zod.run({value:t,issues:[]},r),r)}function mc(e){return{validate:t=>{let r={async:!1};try{let n=e._zod.run({value:t,issues:[]},r);if(!(n instanceof Promise))return Vm(n,r)}catch{}return Bw(e,t)},vendor:"zod",version:1}}var La=C("$ZodString",(e,t)=>{Ke.init(e,t),e._zod.pattern=t.pattern??dm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value=="string"||r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),He=C("$ZodStringFormat",(e,t)=>{Jo.init(e,t),La.init(e,t)}),Fm=C("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Jf),He.init(e,t)}),Zm=C("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=lc(n))}else t.pattern??(t.pattern=lc());He.init(e,t)}),Bm=C("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Yf),He.init(e,t)}),Gm=1,Ma=2;function Um(e){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function Gw(e,t){return!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t)?Um(e)||Ma:Uw(e,t)}function Uw(e,t){if(!t.normalize&&t.protocol?.source===sm.source&&!/^https?:\/\//i.test(e))return Gm;try{if(typeof URL<"u"){let r=URL;if(typeof r.parse=="function")return r.parse(e)??Ma}return new URL(e)}catch{return Ma}}var qw=/[\t\n\r]/g;function Om(e){return e.replace(qw,"")}function Kw(e,t){return t.lastIndex=0,t.test(e.hostname)}function Hw(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var qm=C("$ZodURL",(e,t)=>{He.init(e,t),e._zod.check=r=>{try{let n=r.value.trim(),o=Gw(n,t);if(o===Gm){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}if(o===Ma){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort});return}if(o===!0){r.value=Om(n);return}t.hostname&&!Kw(o,t.hostname)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort}),t.protocol&&!Hw(o,t.protocol)&&r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort}),r.value=t.normalize?o.href:Om(n);return}catch{r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Km=C("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Xf()),He.init(e,t)}),Hm=C("$ZodNanoID",(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw new Error(`Invalid nanoid length: ${t.length}`);t.pattern??(t.pattern=t.length===void 0?Kf:Hf(t.length)),He.init(e,t)}),Wm=C("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Zf),He.init(e,t)}),Jm=C("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Bf),He.init(e,t)}),Ym=C("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Gf),He.init(e,t)}),Xm=C("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Uf),He.init(e,t)}),Qm=C("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=qf),He.init(e,t)}),eh=C("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=um(t)),He.init(e,t)}),th=C("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=lm),He.init(e,t)}),rh=C("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=cm(t)),He.init(e,t)}),nh=C("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Wf),He.init(e,t)}),oh=C("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Qf),He.init(e,t)}),Ww=/^[0-9a-fA-F:.]+$/;function sh(e){return Ww.test(e)?Um(`http://[${e}]`):!1}var ah=C("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=em),He.init(e,t),e._zod.check=r=>{sh(r.value)||r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}});var ih=C("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=tm),He.init(e,t)});function Jw(e){let t=e.split("/");if(t.length!==2)return!1;let[r,n]=t;if(!n)return!1;let o=Number(n);return`${o}`!==n||o<0||o>128?!1:sh(r)}var lh=C("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=rm),He.init(e,t),e._zod.check=r=>{Jw(r.value)||r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}});function ch(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var hc=/^[0-9a-zA-Z+/]*={0,2}$/,uh=C("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=hc),He.init(e,t),e._zod.check=r=>{ch(r.value)||r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}}),Va=/^[A-Za-z0-9_-]*$/;function Yw(e){if(!Va.test(e))return!1;let t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return ch(r)}var dh=C("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Va),He.init(e,t),e._zod.check=r=>{Yw(r.value)||r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),ph=C("$ZodE164",(e,t)=>{t.pattern??(t.pattern=am),He.init(e,t)});function Xw(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let o=JSON.parse(atob(n));return!("typ"in o&&o?.typ!=="JWT"||!o.alg||t&&(!("alg"in o)||o.alg!==t))}catch{return!1}}var fh=C("$ZodJWT",(e,t)=>{He.init(e,t),e._zod.check=r=>{Xw(r.value,t.alg)||r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var gc=C("$ZodNumber",(e,t)=>{Ke.init(e,t),e._zod.pattern=Ho,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch{}let o=r.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return r;let s=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return r.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...s?{received:s}:{}}),r}}),mh=C("$ZodNumberFormat",(e,t)=>{bm.init(e,t),gc.init(e,t)}),hh=C("$ZodBoolean",(e,t)=>{Ke.init(e,t),e._zod.pattern=pm,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=!!r.value}catch{}let o=r.value;return typeof o=="boolean"||r.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),r}});var gh=C("$ZodNull",(e,t)=>{Ke.init(e,t),e._zod.pattern=fm,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let o=r.value;return o===null||r.issues.push({expected:"null",code:"invalid_type",input:o,inst:e}),r}});var bh=C("$ZodUnknown",(e,t)=>{Ke.init(e,t),e._zod.parse=r=>r}),yh=C("$ZodNever",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});function Qw(e,t){let r=Pa(e._zod.def.checks);if(!r.length)return;let n=Math.min(...r.map(s=>s[0])),o=e._zod.parse;e._zod.parse=(s,a)=>{let i=t(s.value);if(i>n&&!a?.skipChecks&&a?.direction!=="backward"){for(let[l,c]of Pa(e._zod.def.checks))if(i>l&&c._zod.def.when(s)){let u=s.issues.length;return c._zod.check(s),s.issues[u].continue=!1,Go(s.issues,u,e),s}}return o(s,a)}}var ex=e=>Array.isArray(e)?e.length:-1;function Im(e,t,r){e.issues.length&&t.issues.push(...Dr(r,e.issues)),t.value[r]=e.value}var kh=C("$ZodArray",(e,t)=>{Ke.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!Array.isArray(s))return n.issues.push({expected:"array",code:"invalid_type",input:s,inst:e}),n;n.value=r?r.alloc(e,n,Array(s.length),o):Array(s.length);let a=[],i=o?.abortEarly;for(let l=0;l<s.length;l++){let c=s[l],u=t.element._zod.run({value:c,issues:[]},o);if(u instanceof Promise)a.push(u.then(d=>Im(d,n,l)));else if(Im(u,n,l),i&&u.issues.length!==0&&cr(u))break}return a.length?Promise.all(a).then(()=>n):n},Qw(e,ex)});function Da(e,t,r,n,o,s){let a=r in n,i=s==="optional";if(!(!a&&i&&o==="optional")){if(e.issues.length){if(o!==void 0&&i&&!a)return;t.issues.push(...Dr(r,e.issues))}if(!a&&o===void 0){e.issues.length||t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}e.value===void 0?(a||o==="defaulted"&&!i)&&(t.value[r]=void 0):t.value[r]=e.value}}var tx=[];function vh(e){let t=Object.keys(e.shape),r=Object.getOwnPropertySymbols(e.shape),n=r.length?r:tx,o=n.length?[...t,...n]:t;for(let a of o)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(a)}": expected a Zod schema`);let s=Ql(e.shape);return{...e,allKeys:o,symbolKeys:n,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(s)}}function zh(e,t,r,n,o,s,a){let i=[],l=o.keySet,c=o.catchall._zod,u=c.def.type,d=c.optin,p=c.optout,m=0;for(let b in t){if(a&&r.issues.length!==m){if(cr(r,m))break;m=r.issues.length}if(l.has(b))continue;if(b==="__proto__"){u==="never"&&i.push(b);continue}if(u==="never"){i.push(b);continue}let f=c.run({value:t[b],issues:[]},n);f instanceof Promise?e.push(f.then(h=>Da(h,r,b,t,d,p))):Da(f,r,b,t,d,p)}return i.length&&r.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s,continue:!0}),e.length?Promise.all(e).then(()=>r):r}var rx=C("$ZodObject",(e,t)=>{Ke.init(e,t);let r=Object.getOwnPropertyDescriptor(t,"shape"),n=r?.get?r.get.raw:t.shape??{};if(n){let c=()=>{let u={...n};return Object.defineProperty(t,"shape",{value:u}),c.raw=u,u};c.raw=n,Object.defineProperty(t,"shape",{get:c})}let o=Wn(()=>vh(t));Re(e,"propValues",c=>{let u=c.def.shape,d={};for(let p in u){let m=u[p]._zod;if(m.values){Object.prototype.hasOwnProperty.call(d,p)||qt(d,p,new Set);for(let b of m.values)d[p].add(b);m.optin!==void 0&&d[p].add(void 0)}}return d});let s=zn,a=t.catchall,i,l=Mt.memoizer;l?.attach(e),e._zod.parse=(c,u)=>{i??(i=o.value);let d=c.value;if(!s(d))return c.issues.push({expected:"object",code:"invalid_type",input:d,inst:e}),c;c.value=l?l.alloc(e,c,{},u):{};let p=[],m=i.shape,b=u?.abortEarly,f=c.issues.length;for(let h of i.allKeys){if(b&&c.issues.length!==f){if(cr(c,f))break;f=c.issues.length}if(h==="__proto__")continue;let g=m[h],v=g._zod.optin,_=g._zod.optout,w=g._zod.run({value:d[h],issues:[]},u);w instanceof Promise?p.push(w.then(k=>Da(k,c,h,d,v,_))):Da(w,c,h,d,v,_)}return a?zh(p,d,c,u,o.value,e,b===!0):p.length?Promise.all(p).then(()=>c):c}}),_h=C("$ZodObjectJIT",(e,t)=>{rx.init(e,t);let r=e._zod.parse,n=Wn(()=>vh(t)),o=Mt.memoizer,s=m=>{let b=n.value,f=b.symbolKeys,h=new Ra(["payload","ctx"],{shape:m,inst:e,memo:o,syms:f}),g=k=>`shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`,v=(k,P)=>`
21
21
  let ${k}_ab = false;
22
22
  for (let i = 0; i < ${k}.issues.length; i++) {
23
23
  const iss = ${k}.issues[i];
@@ -28,34 +28,34 @@ ${r.join(`
28
28
  if (${k}_ab && ctx && ctx.abortEarly) {
29
29
  payload.value = newResult;
30
30
  return payload;
31
- }`;m.write("const input = payload.value;");let _=Object.create(null),w=0;for(let k of b.allKeys)_[k]=`key_${w++}`;m.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of b.allKeys){if(k==="__proto__")continue;let P=_[k],I=typeof k=="symbol"?`syms[${p.indexOf(k)}]`:Hl(k),W=`${I} in input`,F=h[k],G=F?._zod?.optin,K=G!==void 0,x=F?._zod?.optout==="optional";if(m.write(`const ${P} = ${g(I)};`),K&&x){let $=G==="optional"?`${P}_present`:`${P}.value !== undefined || ${P}_present`;m.write(`
32
- const ${P}_present = ${W};
31
+ }`;h.write("const input = payload.value;");let _=Object.create(null),w=0;for(let k of b.allKeys)_[k]=`key_${w++}`;h.write(o?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let k of b.allKeys){if(k==="__proto__")continue;let P=_[k],A=typeof k=="symbol"?`syms[${f.indexOf(k)}]`:Wl(k),Z=`${A} in input`,D=m[k],B=D?._zod?.optin,K=B!==void 0,x=D?._zod?.optout==="optional";if(h.write(`const ${P} = ${g(A)};`),K&&x){let $=B==="optional"?`${P}_present`:`${P}.value !== undefined || ${P}_present`;h.write(`
32
+ const ${P}_present = ${Z};
33
33
  if (!${P}.issues.length || ${P}_present) {
34
- if (${P}.issues.length) {${v(P,I)}
34
+ if (${P}.issues.length) {${v(P,A)}
35
35
  }
36
36
 
37
37
  if (${$}) {
38
- newResult[${I}] = ${P}.value;
38
+ newResult[${A}] = ${P}.value;
39
39
  }
40
40
  }
41
41
 
42
- `)}else K?(m.write(`
43
- if (${P}.issues.length) {${v(P,I)}
42
+ `)}else K?(h.write(`
43
+ if (${P}.issues.length) {${v(P,A)}
44
44
  }
45
- `),G==="defaulted"?m.write(`newResult[${I}] = ${P}.value;`):m.write(`
46
- if (${P}.value !== undefined || ${W}) {
47
- newResult[${I}] = ${P}.value;
45
+ `),B==="defaulted"?h.write(`newResult[${A}] = ${P}.value;`):h.write(`
46
+ if (${P}.value !== undefined || ${Z}) {
47
+ newResult[${A}] = ${P}.value;
48
48
  }
49
- `)):m.write(`
50
- const ${P}_present = ${W};
51
- if (${P}.issues.length) {${v(P,I)}
49
+ `)):h.write(`
50
+ const ${P}_present = ${Z};
51
+ if (${P}.issues.length) {${v(P,A)}
52
52
  }
53
53
  if (!${P}_present && !${P}.issues.length) {
54
54
  payload.issues.push({
55
55
  code: "invalid_type",
56
56
  expected: "nonoptional",
57
57
  input: undefined,
58
- path: [${I}]
58
+ path: [${A}]
59
59
  });
60
60
  if (ctx && ctx.abortEarly) {
61
61
  payload.value = newResult;
@@ -64,14 +64,14 @@ ${r.join(`
64
64
  }
65
65
 
66
66
  if (${P}_present) {
67
- newResult[${I}] = ${P}.value;
67
+ newResult[${A}] = ${P}.value;
68
68
  }
69
69
 
70
- `)}return m.write("payload.value = newResult;"),m.write("return payload;"),m.compile()},a,i=vn,c=!Mt.jitless,u=c&&Jl.value,d=t.catchall,f;e._zod.parse=(h,b)=>{f??(f=n.value);let p=h.value;return i(p)?c&&u&&b?.async===!1&&b.jitless!==!0?(a||(a=s(t.shape)),h=a(h,b),d?zh([],p,h,b,f,e,b?.abortEarly===!0):h):r(h,b):(h.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),h)}});function Tm(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!cr(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(a=>ur(a,n,Kt())))}),t)}var gc=C("$ZodUnion",(e,t)=>{qe.init(e,t),Re(e,"optin",n=>n.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":n.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Re(e,"optout",n=>n.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Re(e,"values",n=>{if(n.def.options.every(o=>o._zod.values))return new Set(n.def.options.flatMap(o=>Array.from(o._zod.values)))}),Re(e,"pattern",n=>{if(n.def.options.every(o=>o._zod.pattern)){let o=n.def.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>Fo(s.source)).join("|")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let s=!1,a=[];for(let i of t.options){let c=i._zod.run({value:n.value,issues:[]},o);if(c instanceof Promise)a.push(c),s=!0;else{if(c.issues.length===0)return c;a.push(c)}}return s?Promise.all(a).then(i=>Tm(i,n,e,o)):Tm(a,n,e,o)}});function tx(e){let t=new Map;for(let r of e.options){let n=r._zod.propValues?.[e.discriminator];if(!n||n.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(let o of n)if(t.has(o)){if(o!==void 0)throw new Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,r)}return t}var wh=C("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,gc.init(e,t);let r=e._zod.parse;Re(e,"propValues",o=>{let s={},a=0;for(let i of o.def.options){let c=i._zod.propValues;if(!c||Object.keys(c).length===0)throw new Error(`Invalid discriminated union option at index "${o.def.options.indexOf(i)}"`);c[o.def.discriminator]?.has(void 0)&&a++;for(let[l,u]of Object.entries(c)){Object.prototype.hasOwnProperty.call(s,l)||qt(s,l,new Set);for(let d of u)s[l].add(d)}}return!o.def.unionFallback&&a>1&&s[o.def.discriminator]?.delete(void 0),s}),t.options.forEach((o,s)=>{let a=Wn(o._zod.def);if(a&&!Object.prototype.hasOwnProperty.call(a,t.discriminator))throw new Error(`Invalid discriminated union option at index "${s}"`)});let n=Hn(()=>tx(t));e._zod.parse=(o,s)=>{let a=o.value;if(!vn(a))return o.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),o;let i=a?.[t.discriminator],c=n.value.get(i);return c&&(i!==void 0||s.direction!=="backward")?c._zod.run(o,s):t.unionFallback||s.direction==="backward"?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(n.value.keys()).filter(l=>n.value.get(l)!==null),input:a,path:[t.discriminator],inst:e}),o)}}),xh=C("$ZodIntersection",(e,t)=>{qe.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),a=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||a instanceof Promise?Promise.all([s,a]).then(([c,l])=>Cm(r,c,l)):Cm(r,s,a)}});function pc(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Qr(e)&&Qr(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};Object.prototype.hasOwnProperty.call(o,"__proto__")&&delete o.__proto__;for(let s of n){if(s==="__proto__")continue;let a=pc(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};o[s]=a.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],a=pc(o,s);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r.push(a.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function Cm(e,t,r){let n=new Map,o,s=new Map,a=(l,u)=>{let d;if(l.code==="unrecognized_keys"&&!l.path?.length)o??(o=l),d=l.keys;else if(l.code==="invalid_key"&&l.origin==="record"&&l.path?.length===1){let f=String(l.path[0]);s.has(f)||s.set(f,l),d=[f]}else return!1;for(let f of d)n.has(f)||n.set(f,{}),n.get(f)[u]=!0;return!0};for(let l of t.issues)a(l,"l")||e.issues.push(l);for(let l of r.issues)a(l,"r")||e.issues.push(l);let i=[...n].filter(([,l])=>l.l&&l.r).map(([l])=>l);if(i.length){let l=o?i.filter(u=>o.keys.includes(u)):[];l.length&&e.issues.push({...o,keys:l});for(let u of i)!l.includes(u)&&s.has(u)&&e.issues.push(s.get(u))}let c=pc(t.value,r.value);if(!c.valid){if(cr(e))return e;throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var Sh=C("$ZodRecord",(e,t)=>{qe.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!Qr(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:e}),n;let a=[],i=t.keyType._zod.values;if(i&&!t.partial){n.value=r?r.alloc(e,n,{},o):{};let c=new Set;for(let u of i)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(c.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let d=t.keyType._zod.run({value:u,issues:[]},o);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(b=>ur(b,o,Kt())),input:u,path:[u],inst:e});continue}let f=d.value;if(f==="__proto__")continue;let h=t.valueType._zod.run({value:s[u],issues:[]},o);h instanceof Promise?a.push(h.then(b=>{b.issues.length&&n.issues.push(...Mr(u,b.issues)),n.value[f]=b.value})):(h.issues.length&&n.issues.push(...Mr(u,h.issues)),n.value[f]=h.value)}let l;for(let u in s)if(!c.has(u))if(t.mode==="loose"){if(u==="__proto__")continue;n.value[u]=s[u]}else l=l??[],l.push(u);l&&l.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:l,continue:!0})}else{n.value=r?r.alloc(e,n,{},o):{};let c;for(let l of Reflect.ownKeys(s)){if(l==="__proto__"||!Object.prototype.propertyIsEnumerable.call(s,l))continue;let u=t.keyType._zod.run({value:l,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof l=="string"&&Ko.test(l)&&u.issues.length){let b=t.keyType._zod.run({value:Number(l),issues:[]},o);if(b instanceof Promise)throw new Error("Async schemas not supported in object keys currently");b.issues.length===0&&(u=b)}if(u.issues.length){t.mode==="loose"?n.value[l]=s[l]:i?(c=c??[],c.push(l)):n.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(b=>ur(b,o,Kt())),input:l,path:[l],inst:e});continue}let f=u.value;if(f==="__proto__")continue;let h=t.valueType._zod.run({value:s[l],issues:[]},o);h instanceof Promise?a.push(h.then(b=>{b.issues.length&&n.issues.push(...Mr(l,b.issues)),n.value[f]=b.value})):(h.issues.length&&n.issues.push(...Mr(l,h.issues)),n.value[f]=h.value)}c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:c,continue:!0})}return a.length?Promise.all(a).then(()=>n):n}});var Ph=C("$ZodEnum",(e,t)=>{qe.init(e,t);let r=qn(t.entries),n=new Set(r);e._zod.values=n,Re(e,"pattern",o=>{let s=qn(o.def.entries).filter(a=>Yl.has(typeof a));return new RegExp(s.length?`^(${s.map(a=>jr(a.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,s)=>{let a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:r,input:a,inst:e}),o}}),$h=C("$ZodLiteral",(e,t)=>{qe.init(e,t);let r=new Set(t.values);e._zod.values=r,Re(e,"pattern",n=>{let o=n.def.values;return new RegExp(o.length?`^(${o.map(s=>typeof s=="string"?jr(s):s?jr(s.toString()):String(s)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}});var Eh=C("$ZodTransform",(e,t)=>{qe.init(e,t),e._zod.optin="optional",Mt.memoizer?.guard(e),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Yn(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(a=>(r.value=a,r));if(o instanceof Promise)throw new dr;return r.value=o,r}});function Nm(e,t){return e.value=t.issues.length?void 0:t.value,e}var bc=C("$ZodOptional",(e,t)=>{qe.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n,void 0]):void 0}),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Fo(n.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(r.value===void 0){if(t.innerType._zod.optin!=="defaulted")return r;let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Nm(r,s)):Nm(r,o)}return t.innerType._zod.run(r,n)}}),Ah=C("$ZodExactOptional",(e,t)=>{bc.init(e,t),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"pattern",r=>r.def.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),Oh=C("$ZodNullable",(e,t)=>{qe.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Fo(n.source)}|null)$`):void 0}),Re(e,"values",r=>r.def.innerType._zod.values?new Set([...r.def.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),Ih=C("$ZodDefault",(e,t)=>{qe.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Rm(s,t)):Rm(o,t)}});function Rm(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Th=C("$ZodPrefault",(e,t)=>{qe.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Ch=C("$ZodNonOptional",(e,t)=>{qe.init(e,t),Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>jm(s,e)):jm(o,e)}});function jm(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}function Mm(e,t,r,n){return t.issues.length?(e.value=r.catchValue({...t,value:e.value,error:{issues:t.issues.map(o=>ur(o,n,Kt()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Nh=C("$ZodCatch",(e,t)=>{qe.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Mm(r,s,t,n)):Mm(r,o,t,n)}});var yc=C("$ZodPipe",(e,t)=>{qe.init(e,t),Re(e,"values",r=>r.def.in._zod.values),Re(e,"optin",r=>r.def.in._zod.optin),Re(e,"optout",r=>r.def.out._zod.optout),Re(e,"propValues",r=>r.def.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(a=>Ca(a,t.in,n)):Ca(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>Ca(s,t.out,n)):Ca(o,t.out,n)}});function Ca(e,t,r){return e.issues.some(n=>n.code!=="unrecognized_keys")?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var Rh=C("$ZodPreprocess",(e,t)=>{yc.init(e,t)}),jh=C("$ZodReadonly",(e,t)=>{qe.init(e,t),Re(e,"propValues",r=>r.def.innerType._zod.propValues),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"optin",r=>r.def.innerType?._zod?.optin),Re(e,"optout",r=>r.def.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(Dm):Dm(o)}});function Dm(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Mh=C("$ZodCustom",(e,t)=>{zt.init(e,t),qe.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Lm(s,r,n,e));Lm(o,r,n,e)}});function Lm(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(Jn(o))}}var vc=class extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform"),this.name="ZodCyclicError"}},zc="~memo",Dh=[];function Lh(e){return e!==null&&typeof e=="object"}function kc(e){return e.map(t=>t.path?{...t,path:t.path.slice()}:{...t})}var Vh=new WeakMap,Jo=0,Va=1,Yo=2;function Fa(e,t,r){let n=Vh.get(e);if(n!==void 0)return n?Yo:Jo;if(t.has(e))return Yo;t.add(e);let o=Jo,s=u=>{if(o!==Yo&&u?._zod){let d=Fa(u,t,r);d>o&&(o=d)}},a=(u,d)=>{let f=Jo;for(let h of Reflect.ownKeys(u)){let b=Object.getOwnPropertyDescriptor(u,h);if(d&&!b.enumerable)continue;let p=b.get?Va:b.value?._zod?Fa(b.value,t,r):Jo;p>f&&(f=p)}return f},i=u=>{u>o&&(o=u)},c=e._zod.def,l=c.type;switch(l){case"object":{let u=Wn(c);i(u?a(u,!0):Va),s(c.catchall);break}case"array":s(c.element);break;case"tuple":for(let u of c.items)s(u);s(c.rest);break;case"record":case"map":s(c.keyType),s(c.valueType);break;case"set":s(c.valueType);break;case"union":for(let u of c.options)s(u);break;case"intersection":s(c.left),s(c.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":s(c.innerType);break;case"pipe":s(c.in),s(c.out);break;case"function":s(c.input),s(c.output);break;case"lazy":{let u=c._cachedInner??(r?e._zod.innerType:void 0);i(u?Fa(u,t,!1):Va);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 u in c){let d=Object.getOwnPropertyDescriptor(c,u);if(!d||d.get)continue;let f=d.value;if(!(!f||typeof f!="object")){if(f._zod)s(f);else if(Array.isArray(f))for(let h of f)s(h)}}}return t.delete(e),rx(e,o)}function rx(e,t){return t!==Va&&Vh.set(e,t===Yo),t}function nx(e,t){let r=e.buckets.get(t);return r||(r=new WeakMap,e.buckets.set(t,r)),r}var Da,La=[],ox={alloc(e,t,r){let n=Da;if(!n)return r;Da=void 0;let o={value:r,issues:null};return n.set(t.value,o),La.push(o),r},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let r=e._zod.parse,n=(o,s)=>{if(s.direction!=="backward"&&sx(s,o.value))throw new vc;return r(o,s)};e._zod.parse=n,e._zod.run===r&&(e._zod.run=n)})},attach(e){var t;let r,n=!1,o,s;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let a=e._zod.parse,i=(c,l)=>{if(r===void 0){let g=Fa(e,new Set,!1);if(g===Jo)return e._zod.parse=a,e._zod.run===i&&(e._zod.run=a),a(c,l);g===Yo||n?r=!0:n=!0}let u=c.value;if(!Lh(u))return a(c,l);let d=l[zc];d||(d={buckets:new WeakMap,backEdges:void 0},l[zc]=d);let f;o===l?f=s:(f=nx(d,e),o=l,s=f);let h=f.get(u);if(h)return c.value=h.value,h.issues?h.issues.length&&c.issues.push(...kc(h.issues)):(c.memo=!0,d.backEdges??(d.backEdges=new WeakSet),d.backEdges.add(h.value)),c;Da=f;let b=La.length,p=a(c,l);Da=void 0;let m=La.length>b?La.pop():void 0;return p instanceof Promise?p.then(g=>(m&&(m.issues=g.issues.length?kc(g.issues):Dh),g)):(m&&(m.issues=p.issues.length?kc(p.issues):Dh),p)};e._zod.parse=i,e._zod.run===a&&(e._zod.run=i)})}};function Fh(){return ox}function sx(e,t){let r=e[zc]?.backEdges;return r!==void 0&&Lh(t)&&r.has(t)}var ax=()=>{let e={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 t(s){return e[s]??null}let r={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"},n={nan:"NaN"};function o(s,a){return s==="number"&&typeof a=="number"&&!Number.isFinite(a)?String(a):n[s]??s}return s=>{switch(s.code){case"invalid_type":{let a=o(s.expected),i=ec(s.input),c=o(i,s.input);return`Invalid input: expected ${a}, received ${c}`}case"invalid_value":return s.values.length===1?`Invalid input: expected ${va(s.values[0])}`:`Invalid option: expected one of ${ya(s.values,"|")}`;case"too_big":{let a=s.exact?"exactly ":s.inclusive?"<=":"<",i=t(s.origin);return i?`Too big: expected ${s.origin??"value"} to have ${a}${s.maximum.toString()} ${i.unit??"elements"}`:`Too big: expected ${s.origin??"value"} to be ${a}${s.maximum.toString()}`}case"too_small":{let a=s.exact?"exactly ":s.inclusive?">=":">",i=t(s.origin);return i?`Too small: expected ${s.origin} to have ${a}${s.minimum.toString()} ${i.unit}`:`Too small: expected ${s.origin} to be ${a}${s.minimum.toString()}`}case"invalid_format":{let a=s;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??s.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${s.divisor}`;case"unrecognized_keys":return`Unrecognized key${s.keys.length>1?"s":""}: ${ya(s.keys,", ")}`;case"invalid_key":return`Invalid key in ${s.origin}`;case"invalid_union":return s.options&&Array.isArray(s.options)&&s.options.length>0?`Invalid discriminator value. Expected ${s.options.map(i=>`'${i}'`).join(" | ")}`:s.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${s.origin}`;default:return"Invalid input"}}};function Zh(){return{localeError:ax()}}var Bh;var _c=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function ix(){return new _c}(Bh=globalThis).__zod_globalRegistry??(Bh.__zod_globalRegistry=ix());var zn=globalThis.__zod_globalRegistry;function Gh(e){return e.checks&&(e.checks=[...e.checks]),e}function Uh(e,t){return new e(Gh({type:"string",...ie(t)}))}function qh(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ie(t)})}function Kh(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ie(t)})}function Hh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ie(t)})}function Wh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ie(t)})}function Jh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ie(t)})}function Yh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ie(t)})}function Xh(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ie(t)})}function Qh(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ie(t)})}function eg(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ie(t)})}function tg(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ie(t)})}function rg(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ie(t)})}function ng(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ie(t)})}function og(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ie(t)})}function sg(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ie(t)})}function ag(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ie(t)})}function ig(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ie(t)})}function lg(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ie(t)})}function cg(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ie(t)})}function ug(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ie(t)})}function dg(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ie(t)})}function pg(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ie(t)})}function fg(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ie(t)})}function Za(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ie(t)})}function Ba(e,t){return new e({type:"string",format:"date",check:"string_format",...ie(t)})}function Ga(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...ie(t)})}function Ua(e,t){return new e({type:"string",format:"duration",check:"string_format",...ie(t)})}function mg(e,t){return new e(Gh({type:"number",checks:[],...ie(t)}))}function hg(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ie(t)})}function gg(e,t){return new e({type:"boolean",...ie(t)})}function bg(e,t){return new e({type:"null",...ie(t)})}function yg(e){return new e({type:"unknown"})}function kg(e,t){return new e({type:"never",...ie(t)})}function qa(e,t){return new uc({check:"less_than",...ie(t),value:e,inclusive:!1})}function Xo(e,t){return new uc({check:"less_than",...ie(t),value:e,inclusive:!0})}function Ka(e,t){return new dc({check:"greater_than",...ie(t),value:e,inclusive:!1})}function Qo(e,t){return new dc({check:"greater_than",...ie(t),value:e,inclusive:!0})}function Ha(e,t){return new gm({check:"multiple_of",...ie(t),value:e})}function Wa(e,t){return new ym({check:"max_length",...ie(t),maximum:e})}function Xn(e,t){return new km({check:"min_length",...ie(t),minimum:e})}function Ja(e,t){return new vm({check:"length_equals",...ie(t),length:e})}function wc(e,t){return new zm({check:"string_format",format:"regex",...ie(t),pattern:e})}function xc(e){return new _m({check:"string_format",format:"lowercase",...ie(e)})}function Sc(e){return new wm({check:"string_format",format:"uppercase",...ie(e)})}function Pc(e,t){return new xm({check:"string_format",format:"includes",...ie(t),includes:e})}function $c(e,t){return new Sm({check:"string_format",format:"starts_with",...ie(t),prefix:e})}function Ec(e,t){return new Pm({check:"string_format",format:"ends_with",...ie(t),suffix:e})}function en(e){return new $m({check:"overwrite",tx:e})}function Ac(e){return en(t=>t.normalize(e))}function Oc(){return en(e=>e.trim())}function Ic(){return en(e=>e.toLowerCase())}function Tc(){return en(e=>e.toUpperCase())}function Cc(){return en(e=>Wl(e))}function vg(e,t,r){return new e({type:"array",element:t,...ie(r)})}function zg(e,t,r){let n=ie(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function _g(e,t,r){return new e({type:"custom",check:"custom",fn:t,...ie(r)})}function wg(e,t){let r=lx(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(Jn(o,n.value,r._zod.def));else{let s=o;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),"input"in s||(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(Jn(s))}},e(n.value,n)),t);return r}function lx(e,t){let r=new zt({check:"custom",...ie(t)});return r._zod.check=e,r}function es(e,...t){for(let r of t)for(let n of Reflect.ownKeys(r))Object.prototype.propertyIsEnumerable.call(r,n)&&qt(e,n,r[n]);return e}function Rc(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??zn,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Dr(e,t,r,n,o){let s=typeof t.unrepresentable=="function"?t.unrepresentable({zodSchema:e,path:n.path,message:o}):t.unrepresentable;if(s==="any")return!1;if(s===void 0||s==="throw")throw new Error(o);return Object.assign(r,s),!0}function st(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let a={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,a),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let i=e._zod.toJSONSchema?.();if(i)a.schema=i;else{let u={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,u);else{let f=a.schema,h=t.processors[o.type];if(!h)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);h(e,t,f,u)}let d=e._zod.parent;d&&(a.ref||(a.ref=d),st(d,t,u),t.seen.get(d).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&es(a.schema,c),t.io==="input"&&Ct(e)&&(delete a.schema.examples,delete a.schema.default),t.io==="input"&&"_prefault"in a.schema&&((n=a.schema).default??(n.default=a.schema._prefault)),delete a.schema._prefault,t.seen.get(e).schema}function xg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function jc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let n=new Map;for(let a of e.seen.entries()){let i=e.metadataRegistry.get(a[0])?.id;if(i){let c=n.get(i);if(c&&c!==a[0])throw new Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,a[0])}}let o=a=>{let i=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,f=e.external.uri??(b=>b);if(d)return{ref:f(d)};let h=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=h,{defId:h,ref:`${f("__shared")}#/${i}/${xg(h)}`}}let c="#",l=`${c}/${i}/`;if(a[1]===r&&!a[1].schema.id)return{ref:c};let u=a[1].schema.id??`__schema${e.counter++}`;return{defId:u,ref:l+xg(u)}},s=a=>{if(a[1].schema.$ref)return;let i=a[1],{ref:c,defId:l}=o(a);i.def={...i.schema},l&&(i.defId=l);let u=i.schema;for(let d in u)delete u[d];u.$ref=c};if(e.cycles==="throw")for(let a of e.seen.entries()){let i=a[1];if(i.cycle)throw new Error(`Cycle detected: #/${i.cycle?.join("/")}/<root>
70
+ `)}return h.write("payload.value = newResult;"),h.write("return payload;"),h.compile()},a,i=zn,l=!Mt.jitless,u=l&&Yl.value,d=t.catchall,p;e._zod.parse=(m,b)=>{p??(p=n.value);let f=m.value;return i(f)?l&&u&&b?.async===!1&&b.jitless!==!0?(a||(a=s(t.shape)),m=a(m,b),d?zh([],f,m,b,p,e,b?.abortEarly===!0):m):r(m,b):(m.issues.push({expected:"object",code:"invalid_type",input:f,inst:e}),m)}});function Tm(e,t,r,n){for(let s of e)if(s.issues.length===0)return t.value=s.value,t;let o=e.filter(s=>!cr(s));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map(s=>s.issues.map(a=>ur(a,n,Kt())))}),t)}var bc=C("$ZodUnion",(e,t)=>{Ke.init(e,t),Re(e,"optin",n=>n.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":n.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Re(e,"optout",n=>n.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Re(e,"values",n=>{if(n.def.options.every(o=>o._zod.values))return new Set(n.def.options.flatMap(o=>Array.from(o._zod.values)))}),Re(e,"pattern",n=>{if(n.def.options.every(o=>o._zod.pattern)){let o=n.def.options.map(s=>s._zod.pattern);return new RegExp(`^(${o.map(s=>Zo(s.source)).join("|")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let s=!1,a=[];for(let i of t.options){let l=i._zod.run({value:n.value,issues:[]},o);if(l instanceof Promise)a.push(l),s=!0;else{if(l.issues.length===0)return l;a.push(l)}}return s?Promise.all(a).then(i=>Tm(i,n,e,o)):Tm(a,n,e,o)}});function nx(e){let t=new Map;for(let r of e.options){let n=r._zod.propValues?.[e.discriminator];if(!n||n.size===0)throw new Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(let o of n)if(t.has(o)){if(o!==void 0)throw new Error(`Duplicate discriminator value "${String(o)}"`);t.set(o,null)}else t.set(o,r)}return t}var wh=C("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,bc.init(e,t);let r=e._zod.parse;Re(e,"propValues",o=>{let s={},a=0;for(let i of o.def.options){let l=i._zod.propValues;if(!l||Object.keys(l).length===0)throw new Error(`Invalid discriminated union option at index "${o.def.options.indexOf(i)}"`);l[o.def.discriminator]?.has(void 0)&&a++;for(let[c,u]of Object.entries(l)){Object.prototype.hasOwnProperty.call(s,c)||qt(s,c,new Set);for(let d of u)s[c].add(d)}}return!o.def.unionFallback&&a>1&&s[o.def.discriminator]?.delete(void 0),s}),t.options.forEach((o,s)=>{let a=Jn(o._zod.def);if(a&&!Object.prototype.hasOwnProperty.call(a,t.discriminator))throw new Error(`Invalid discriminated union option at index "${s}"`)});let n=Wn(()=>nx(t));e._zod.parse=(o,s)=>{let a=o.value;if(!zn(a))return o.issues.push({code:"invalid_type",expected:"object",input:a,inst:e}),o;let i=a?.[t.discriminator],l=n.value.get(i);return l&&(i!==void 0||s.direction!=="backward")?l._zod.run(o,s):t.unionFallback||s.direction==="backward"?r(o,s):(o.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(n.value.keys()).filter(c=>n.value.get(c)!==null),input:a,path:[t.discriminator],inst:e}),o)}}),xh=C("$ZodIntersection",(e,t)=>{Ke.init(e,t),e._zod.parse=(r,n)=>{let o=r.value,s=t.left._zod.run({value:o,issues:[]},n),a=t.right._zod.run({value:o,issues:[]},n);return s instanceof Promise||a instanceof Promise?Promise.all([s,a]).then(([l,c])=>Cm(r,l,c)):Cm(r,s,a)}});function fc(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(en(e)&&en(t)){let r=Object.keys(t),n=Object.keys(e).filter(s=>r.indexOf(s)!==-1),o={...e,...t};Object.prototype.hasOwnProperty.call(o,"__proto__")&&delete o.__proto__;for(let s of n){if(s==="__proto__")continue;let a=fc(e[s],t[s]);if(!a.valid)return{valid:!1,mergeErrorPath:[s,...a.mergeErrorPath]};o[s]=a.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let o=e[n],s=t[n],a=fc(o,s);if(!a.valid)return{valid:!1,mergeErrorPath:[n,...a.mergeErrorPath]};r.push(a.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function Cm(e,t,r){let n=new Map,o,s=new Map,a=(c,u)=>{let d;if(c.code==="unrecognized_keys"&&!c.path?.length)o??(o=c),d=c.keys;else if(c.code==="invalid_key"&&c.origin==="record"&&c.path?.length===1){let p=String(c.path[0]);s.has(p)||s.set(p,c),d=[p]}else return!1;for(let p of d)n.has(p)||n.set(p,{}),n.get(p)[u]=!0;return!0};for(let c of t.issues)a(c,"l")||e.issues.push(c);for(let c of r.issues)a(c,"r")||e.issues.push(c);let i=[...n].filter(([,c])=>c.l&&c.r).map(([c])=>c);if(i.length){let c=o?i.filter(u=>o.keys.includes(u)):[];c.length&&e.issues.push({...o,keys:c});for(let u of i)!c.includes(u)&&s.has(u)&&e.issues.push(s.get(u))}let l=fc(t.value,r.value);if(!l.valid){if(cr(e))return e;throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(l.mergeErrorPath)}`)}return e.value=l.data,e}var Sh=C("$ZodRecord",(e,t)=>{Ke.init(e,t);let r=Mt.memoizer;r?.attach(e),e._zod.parse=(n,o)=>{let s=n.value;if(!en(s))return n.issues.push({expected:"record",code:"invalid_type",input:s,inst:e}),n;let a=[],i=t.keyType._zod.values;if(i&&!t.partial){n.value=r?r.alloc(e,n,{},o):{};let l=new Set;for(let u of i)if(typeof u=="string"||typeof u=="number"||typeof u=="symbol"){if(l.add(typeof u=="number"?u.toString():u),u==="__proto__")continue;let d=t.keyType._zod.run({value:u,issues:[]},o);if(d instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(d.issues.length){n.issues.push({code:"invalid_key",origin:"record",issues:d.issues.map(b=>ur(b,o,Kt())),input:u,path:[u],inst:e});continue}let p=d.value;if(p==="__proto__")continue;let m=t.valueType._zod.run({value:s[u],issues:[]},o);m instanceof Promise?a.push(m.then(b=>{b.issues.length&&n.issues.push(...Dr(u,b.issues)),n.value[p]=b.value})):(m.issues.length&&n.issues.push(...Dr(u,m.issues)),n.value[p]=m.value)}let c;for(let u in s)if(!l.has(u))if(t.mode==="loose"){if(u==="__proto__")continue;n.value[u]=s[u]}else c=c??[],c.push(u);c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:c,continue:!0})}else{n.value=r?r.alloc(e,n,{},o):{};let l;for(let c of Reflect.ownKeys(s)){if(c==="__proto__"||!Object.prototype.propertyIsEnumerable.call(s,c))continue;let u=t.keyType._zod.run({value:c,issues:[]},o);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof c=="string"&&Ho.test(c)&&u.issues.length){let b=t.keyType._zod.run({value:Number(c),issues:[]},o);if(b instanceof Promise)throw new Error("Async schemas not supported in object keys currently");b.issues.length===0&&(u=b)}if(u.issues.length){t.mode==="loose"?n.value[c]=s[c]:i?(l=l??[],l.push(c)):n.issues.push({code:"invalid_key",origin:"record",issues:u.issues.map(b=>ur(b,o,Kt())),input:c,path:[c],inst:e});continue}let p=u.value;if(p==="__proto__")continue;let m=t.valueType._zod.run({value:s[c],issues:[]},o);m instanceof Promise?a.push(m.then(b=>{b.issues.length&&n.issues.push(...Dr(c,b.issues)),n.value[p]=b.value})):(m.issues.length&&n.issues.push(...Dr(c,m.issues)),n.value[p]=m.value)}l&&l.length>0&&n.issues.push({code:"unrecognized_keys",input:s,inst:e,keys:l,continue:!0})}return a.length?Promise.all(a).then(()=>n):n}});var Ph=C("$ZodEnum",(e,t)=>{Ke.init(e,t);let r=Kn(t.entries),n=new Set(r);e._zod.values=n,Re(e,"pattern",o=>{let s=Kn(o.def.entries).filter(a=>Xl.has(typeof a));return new RegExp(s.length?`^(${s.map(a=>Mr(a.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,s)=>{let a=o.value;return n.has(a)||o.issues.push({code:"invalid_value",values:r,input:a,inst:e}),o}}),$h=C("$ZodLiteral",(e,t)=>{Ke.init(e,t);let r=new Set(t.values);e._zod.values=r,Re(e,"pattern",n=>{let o=n.def.values;return new RegExp(o.length?`^(${o.map(s=>typeof s=="string"?Mr(s):s?Mr(s.toString()):String(s)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(n,o)=>{let s=n.value;return r.has(s)||n.issues.push({code:"invalid_value",values:t.values,input:s,inst:e}),n}});var Eh=C("$ZodTransform",(e,t)=>{Ke.init(e,t),e._zod.optin="optional",Mt.memoizer?.guard(e),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Xn(e.constructor.name);let o=t.transform(r.value,r);if(n.async)return(o instanceof Promise?o:Promise.resolve(o)).then(a=>(r.value=a,r));if(o instanceof Promise)throw new dr;return r.value=o,r}});function Nm(e,t){return e.value=t.issues.length?void 0:t.value,e}var yc=C("$ZodOptional",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n,void 0]):void 0}),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Zo(n.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(r.value===void 0){if(t.innerType._zod.optin!=="defaulted")return r;let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Nm(r,s)):Nm(r,o)}return t.innerType._zod.run(r,n)}}),Ah=C("$ZodExactOptional",(e,t)=>{yc.init(e,t),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"pattern",r=>r.def.innerType._zod.pattern),e._zod.parse=(r,n)=>t.innerType._zod.run(r,n)}),Oh=C("$ZodNullable",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"pattern",r=>{let n=r.def.innerType._zod.pattern;return n?new RegExp(`^(${Zo(n.source)}|null)$`):void 0}),Re(e,"values",r=>r.def.innerType._zod.values?new Set([...r.def.innerType._zod.values,null]):void 0),e._zod.parse=(r,n)=>r.value===null?r:t.innerType._zod.run(r,n)}),Ih=C("$ZodDefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);if(r.value===void 0)return r.value=t.defaultValue,r;let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>Rm(s,t)):Rm(o,t)}});function Rm(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Th=C("$ZodPrefault",(e,t)=>{Ke.init(e,t),e._zod.optin="defaulted",Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>(n.direction==="backward"||r.value===void 0&&(r.value=t.defaultValue),t.innerType._zod.run(r,n))}),Ch=C("$ZodNonOptional",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>{let n=r.def.innerType._zod.values;return n?new Set([...n].filter(o=>o!==void 0)):void 0}),e._zod.parse=(r,n)=>{let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(s=>jm(s,e)):jm(o,e)}});function jm(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}function Mm(e,t,r,n){return t.issues.length?(e.value=r.catchValue({...t,value:e.value,error:{issues:t.issues.map(o=>ur(o,n,Kt()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Nh=C("$ZodCatch",(e,t)=>{Ke.init(e,t),Re(e,"optin",r=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),Re(e,"optout",r=>r.def.innerType._zod.optout),Re(e,"values",r=>r.def.innerType._zod.values),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run({value:r.value,issues:[]},n);return o instanceof Promise?o.then(s=>Mm(r,s,t,n)):Mm(r,o,t,n)}});var kc=C("$ZodPipe",(e,t)=>{Ke.init(e,t),Re(e,"values",r=>r.def.in._zod.values),Re(e,"optin",r=>r.def.in._zod.optin),Re(e,"optout",r=>r.def.out._zod.optout),Re(e,"propValues",r=>r.def.in._zod.propValues),e._zod.parse=(r,n)=>{if(n.direction==="backward"){let s=t.out._zod.run(r,n);return s instanceof Promise?s.then(a=>ja(a,t.in,n)):ja(s,t.in,n)}let o=t.in._zod.run(r,n);return o instanceof Promise?o.then(s=>ja(s,t.out,n)):ja(o,t.out,n)}});function ja(e,t,r){return e.issues.some(n=>n.code!=="unrecognized_keys")?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},r)}var Rh=C("$ZodPreprocess",(e,t)=>{kc.init(e,t)}),jh=C("$ZodReadonly",(e,t)=>{Ke.init(e,t),Re(e,"propValues",r=>r.def.innerType._zod.propValues),Re(e,"values",r=>r.def.innerType._zod.values),Re(e,"optin",r=>r.def.innerType?._zod?.optin),Re(e,"optout",r=>r.def.innerType?._zod?.optout),e._zod.parse=(r,n)=>{if(n.direction==="backward")return t.innerType._zod.run(r,n);let o=t.innerType._zod.run(r,n);return o instanceof Promise?o.then(Dm):Dm(o)}});function Dm(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Mh=C("$ZodCustom",(e,t)=>{zt.init(e,t),Ke.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(s=>Lm(s,r,n,e));Lm(o,r,n,e)}});function Lm(e,t,r,n){if(!e){let o={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(Yn(o))}}var zc=class extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform"),this.name="ZodCyclicError"}},_c="~memo",Dh=[];function Lh(e){return e!==null&&typeof e=="object"}function vc(e){return e.map(t=>t.path?{...t,path:t.path.slice()}:{...t})}var Vh=new WeakMap,Yo=0,Ba=1,Xo=2;function Ga(e,t,r){let n=Vh.get(e);if(n!==void 0)return n?Xo:Yo;if(t.has(e))return Xo;t.add(e);let o=Yo,s=u=>{if(o!==Xo&&u?._zod){let d=Ga(u,t,r);d>o&&(o=d)}},a=(u,d)=>{let p=Yo;for(let m of Reflect.ownKeys(u)){let b=Object.getOwnPropertyDescriptor(u,m);if(d&&!b.enumerable)continue;let f=b.get?Ba:b.value?._zod?Ga(b.value,t,r):Yo;f>p&&(p=f)}return p},i=u=>{u>o&&(o=u)},l=e._zod.def,c=l.type;switch(c){case"object":{let u=Jn(l);i(u?a(u,!0):Ba),s(l.catchall);break}case"array":s(l.element);break;case"tuple":for(let u of l.items)s(u);s(l.rest);break;case"record":case"map":s(l.keyType),s(l.valueType);break;case"set":s(l.valueType);break;case"union":for(let u of l.options)s(u);break;case"intersection":s(l.left),s(l.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":s(l.innerType);break;case"pipe":s(l.in),s(l.out);break;case"function":s(l.input),s(l.output);break;case"lazy":{let u=l._cachedInner??(r?e._zod.innerType:void 0);i(u?Ga(u,t,!1):Ba);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 u in l){let d=Object.getOwnPropertyDescriptor(l,u);if(!d||d.get)continue;let p=d.value;if(!(!p||typeof p!="object")){if(p._zod)s(p);else if(Array.isArray(p))for(let m of p)s(m)}}}return t.delete(e),ox(e,o)}function ox(e,t){return t!==Ba&&Vh.set(e,t===Xo),t}function sx(e,t){let r=e.buckets.get(t);return r||(r=new WeakMap,e.buckets.set(t,r)),r}var Fa,Za=[],ax={alloc(e,t,r){let n=Fa;if(!n)return r;Fa=void 0;let o={value:r,issues:null};return n.set(t.value,o),Za.push(o),r},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let r=e._zod.parse,n=(o,s)=>{if(s.direction!=="backward"&&ix(s,o.value))throw new zc;return r(o,s)};e._zod.parse=n,e._zod.run===r&&(e._zod.run=n)})},attach(e){var t;let r,n=!1,o,s;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let a=e._zod.parse,i=(l,c)=>{if(r===void 0){let g=Ga(e,new Set,!1);if(g===Yo)return e._zod.parse=a,e._zod.run===i&&(e._zod.run=a),a(l,c);g===Xo||n?r=!0:n=!0}let u=l.value;if(!Lh(u))return a(l,c);let d=c[_c];d||(d={buckets:new WeakMap,backEdges:void 0},c[_c]=d);let p;o===c?p=s:(p=sx(d,e),o=c,s=p);let m=p.get(u);if(m)return l.value=m.value,m.issues?m.issues.length&&l.issues.push(...vc(m.issues)):(l.memo=!0,d.backEdges??(d.backEdges=new WeakSet),d.backEdges.add(m.value)),l;Fa=p;let b=Za.length,f=a(l,c);Fa=void 0;let h=Za.length>b?Za.pop():void 0;return f instanceof Promise?f.then(g=>(h&&(h.issues=g.issues.length?vc(g.issues):Dh),g)):(h&&(h.issues=f.issues.length?vc(f.issues):Dh),f)};e._zod.parse=i,e._zod.run===a&&(e._zod.run=i)})}};function Fh(){return ax}function ix(e,t){let r=e[_c]?.backEdges;return r!==void 0&&Lh(t)&&r.has(t)}var lx=()=>{let e={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 t(s){return e[s]??null}let r={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"},n={nan:"NaN"};function o(s,a){return s==="number"&&typeof a=="number"&&!Number.isFinite(a)?String(a):n[s]??s}return s=>{switch(s.code){case"invalid_type":{let a=o(s.expected),i=tc(s.input),l=o(i,s.input);return`Invalid input: expected ${a}, received ${l}`}case"invalid_value":return s.values.length===1?`Invalid input: expected ${wa(s.values[0])}`:`Invalid option: expected one of ${za(s.values,"|")}`;case"too_big":{let a=s.exact?"exactly ":s.inclusive?"<=":"<",i=t(s.origin);return i?`Too big: expected ${s.origin??"value"} to have ${a}${s.maximum.toString()} ${i.unit??"elements"}`:`Too big: expected ${s.origin??"value"} to be ${a}${s.maximum.toString()}`}case"too_small":{let a=s.exact?"exactly ":s.inclusive?">=":">",i=t(s.origin);return i?`Too small: expected ${s.origin} to have ${a}${s.minimum.toString()} ${i.unit}`:`Too small: expected ${s.origin} to be ${a}${s.minimum.toString()}`}case"invalid_format":{let a=s;return a.format==="starts_with"?`Invalid string: must start with "${a.prefix}"`:a.format==="ends_with"?`Invalid string: must end with "${a.suffix}"`:a.format==="includes"?`Invalid string: must include "${a.includes}"`:a.format==="regex"?`Invalid string: must match pattern ${a.pattern}`:`Invalid ${r[a.format]??s.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${s.divisor}`;case"unrecognized_keys":return`Unrecognized key${s.keys.length>1?"s":""}: ${za(s.keys,", ")}`;case"invalid_key":return`Invalid key in ${s.origin}`;case"invalid_union":return s.options&&Array.isArray(s.options)&&s.options.length>0?`Invalid discriminator value. Expected ${s.options.map(i=>`'${i}'`).join(" | ")}`:s.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${s.origin}`;default:return"Invalid input"}}};function Zh(){return{localeError:lx()}}var Bh;var wc=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(t,...r){let n=r[0];return this._map.set(t,n),n&&typeof n=="object"&&"id"in n&&this._idmap.set(n.id,t),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(t){let r=this._map.get(t);return r&&typeof r=="object"&&"id"in r&&this._idmap.delete(r.id),this._map.delete(t),this}get(t){let r=t._zod.parent;if(r){let n={...this.get(r)??{}};delete n.id;let o={...n,...this._map.get(t)};return Object.keys(o).length?o:void 0}return this._map.get(t)}has(t){return this._map.has(t)}};function cx(){return new wc}(Bh=globalThis).__zod_globalRegistry??(Bh.__zod_globalRegistry=cx());var _n=globalThis.__zod_globalRegistry;function Gh(e){return e.checks&&(e.checks=[...e.checks]),e}function Uh(e,t){return new e(Gh({type:"string",...ie(t)}))}function qh(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...ie(t)})}function Kh(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...ie(t)})}function Hh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...ie(t)})}function Wh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...ie(t)})}function Jh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...ie(t)})}function Yh(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...ie(t)})}function Xh(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...ie(t)})}function Qh(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...ie(t)})}function eg(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...ie(t)})}function tg(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...ie(t)})}function rg(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...ie(t)})}function ng(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...ie(t)})}function og(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...ie(t)})}function sg(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...ie(t)})}function ag(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...ie(t)})}function ig(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...ie(t)})}function lg(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...ie(t)})}function cg(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...ie(t)})}function ug(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...ie(t)})}function dg(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...ie(t)})}function pg(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...ie(t)})}function fg(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...ie(t)})}function Ua(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...ie(t)})}function qa(e,t){return new e({type:"string",format:"date",check:"string_format",...ie(t)})}function Ka(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...ie(t)})}function Ha(e,t){return new e({type:"string",format:"duration",check:"string_format",...ie(t)})}function mg(e,t){return new e(Gh({type:"number",checks:[],...ie(t)}))}function hg(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...ie(t)})}function gg(e,t){return new e({type:"boolean",...ie(t)})}function bg(e,t){return new e({type:"null",...ie(t)})}function yg(e){return new e({type:"unknown"})}function kg(e,t){return new e({type:"never",...ie(t)})}function Wa(e,t){return new dc({check:"less_than",...ie(t),value:e,inclusive:!1})}function Qo(e,t){return new dc({check:"less_than",...ie(t),value:e,inclusive:!0})}function Ja(e,t){return new pc({check:"greater_than",...ie(t),value:e,inclusive:!1})}function es(e,t){return new pc({check:"greater_than",...ie(t),value:e,inclusive:!0})}function Ya(e,t){return new gm({check:"multiple_of",...ie(t),value:e})}function Xa(e,t){return new ym({check:"max_length",...ie(t),maximum:e})}function Qn(e,t){return new km({check:"min_length",...ie(t),minimum:e})}function Qa(e,t){return new vm({check:"length_equals",...ie(t),length:e})}function xc(e,t){return new zm({check:"string_format",format:"regex",...ie(t),pattern:e})}function Sc(e){return new _m({check:"string_format",format:"lowercase",...ie(e)})}function Pc(e){return new wm({check:"string_format",format:"uppercase",...ie(e)})}function $c(e,t){return new xm({check:"string_format",format:"includes",...ie(t),includes:e})}function Ec(e,t){return new Sm({check:"string_format",format:"starts_with",...ie(t),prefix:e})}function Ac(e,t){return new Pm({check:"string_format",format:"ends_with",...ie(t),suffix:e})}function tn(e){return new $m({check:"overwrite",tx:e})}function Oc(e){return tn(t=>t.normalize(e))}function Ic(){return tn(e=>e.trim())}function Tc(){return tn(e=>e.toLowerCase())}function Cc(){return tn(e=>e.toUpperCase())}function Nc(){return tn(e=>Jl(e))}function vg(e,t,r){return new e({type:"array",element:t,...ie(r)})}function zg(e,t,r){let n=ie(r);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function _g(e,t,r){return new e({type:"custom",check:"custom",fn:t,...ie(r)})}function wg(e,t){let r=ux(n=>(n.addIssue=o=>{if(typeof o=="string")n.issues.push(Yn(o,n.value,r._zod.def));else{let s=o;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),"input"in s||(s.input=n.value),s.inst??(s.inst=r),s.continue??(s.continue=!r._zod.def.abort),n.issues.push(Yn(s))}},e(n.value,n)),t);return r}function ux(e,t){let r=new zt({check:"custom",...ie(t)});return r._zod.check=e,r}function ts(e,...t){for(let r of t)for(let n of Reflect.ownKeys(r))Object.prototype.propertyIsEnumerable.call(r,n)&&qt(e,n,r[n]);return e}function jc(e){let t=e?.target??"draft-2020-12";return t==="draft-4"&&(t="draft-04"),t==="draft-7"&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??_n,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function Lr(e,t,r,n,o){let s=typeof t.unrepresentable=="function"?t.unrepresentable({zodSchema:e,path:n.path,message:o}):t.unrepresentable;if(s==="any")return!1;if(s===void 0||s==="throw")throw new Error(o);return Object.assign(r,s),!0}function st(e,t,r={path:[],schemaPath:[]}){var n;let o=e._zod.def,s=t.seen.get(e);if(s)return s.count++,r.schemaPath.includes(e)&&(s.cycle=r.path),s.schema;let a={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,a),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let i=e._zod.toJSONSchema?.();if(i)a.schema=i;else{let u={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,a.schema,u);else{let p=a.schema,m=t.processors[o.type];if(!m)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);m(e,t,p,u)}let d=e._zod.parent;d&&(a.ref||(a.ref=d),st(d,t,u),t.seen.get(d).isParent=!0)}let l=t.metadataRegistry.get(e);return l&&ts(a.schema,l),t.io==="input"&&Ct(e)&&(delete a.schema.examples,delete a.schema.default),t.io==="input"&&"_prefault"in a.schema&&((n=a.schema).default??(n.default=a.schema._prefault)),delete a.schema._prefault,t.seen.get(e).schema}function xg(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Mc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let n=new Map;for(let a of e.seen.entries()){let i=e.metadataRegistry.get(a[0])?.id;if(i){let l=n.get(i);if(l&&l!==a[0])throw new Error(`Duplicate schema id "${i}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);n.set(i,a[0])}}let o=a=>{let i=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let d=e.external.registry.get(a[0])?.id,p=e.external.uri??(b=>b);if(d)return{ref:p(d)};let m=a[1].defId??a[1].schema.id??`schema${e.counter++}`;return a[1].defId=m,{defId:m,ref:`${p("__shared")}#/${i}/${xg(m)}`}}let l="#",c=`${l}/${i}/`;if(a[1]===r&&!a[1].schema.id)return{ref:l};let u=a[1].schema.id??`__schema${e.counter++}`;return{defId:u,ref:c+xg(u)}},s=a=>{if(a[1].schema.$ref)return;let i=a[1],{ref:l,defId:c}=o(a);i.def={...i.schema},c&&(i.defId=c);let u=i.schema;for(let d in u)delete u[d];u.$ref=l};if(e.cycles==="throw")for(let a of e.seen.entries()){let i=a[1];if(i.cycle)throw new Error(`Cycle detected: #/${i.cycle?.join("/")}/<root>
71
71
 
72
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let i=a[1];if(t===a[0]){s(a);continue}if(e.external){let l=e.external.registry.get(a[0])?.id;if(t!==a[0]&&l){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(i.cycle){s(a);continue}i.count>1&&e.reused==="ref"&&s(a)}e.external&&(e.sharedDefsExtractedFor=e.external)}function $g(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let r=[];for(let n of t){if(!n||typeof n!="object")return;$g(n);let o=Object.keys(n);if(o.length!==1||o[0]!=="type")return;let s=n.type;for(let a of Array.isArray(s)?s:[s]){if(typeof a!="string")return;r.includes(a)||r.push(a)}}delete e.anyOf,e.type=r.length===1?r[0]:r}var Eg=new Set(["type","properties","required","additionalProperties"]),Sg=["oneOf","anyOf"];function Pg(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!="object"||t===null?null:Object.keys(t).length?t:null}function Nc(e){let t=[];for(let s of e){if(typeof s!="object"||s.type!=="object")return null;for(let a in s)if(!Eg.has(a))return null;t.push(s)}let r={},n=new Set;for(let s of t){for(let a in s.properties){if(Object.prototype.hasOwnProperty.call(r,a))continue;let i=[];for(let l of t){let u=l.properties?.[a]??Pg(l);u!=null&&(i.some(d=>JSON.stringify(d)===JSON.stringify(u))||i.push(u))}let c=i.length===1?i[0]:Nc(i)??{allOf:i};qt(r,a,c)}for(let a of s.required??[])n.add(a)}let o={type:"object",properties:r};if(n.size&&(o.required=[...n]),t.every(s=>s.additionalProperties===!1))o.additionalProperties=!1;else{let s=[];for(let a of t){let i=Pg(a);i&&!s.some(c=>JSON.stringify(c)===JSON.stringify(i))&&s.push(i)}s.length===1?o.additionalProperties=s[0]:s.length>1&&(o.additionalProperties={allOf:s})}return o}function cx(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of Eg)if(o in e)return;let r=t.filter(o=>Sg.some(s=>Array.isArray(o[s]))),n=null;if(!r.length)n=Nc(t);else{let o=r[0],s=Sg.find(c=>Array.isArray(o[c]));if(Object.keys(o).length!==1)return;let a=t.filter(c=>c!==o),i=o[s].map(c=>Nc([...a,c]));if(i.some(c=>!c))return;n={[s]:i}}n&&(delete e.allOf,es(e,n))}function Mc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let c=e.seen.get(i);if(c.ref===null)return;let l=c.def??c.schema,u={...l},d=c.ref;if(c.ref=null,d){n(d);let h=e.seen.get(d),b=h.schema;if(b.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(b)):es(l,b),es(l,u),i._zod.parent===d)for(let m in l)m==="$ref"||m==="allOf"||m in u||delete l[m];if(b.$ref&&h.def)for(let m in l)m==="$ref"||m==="allOf"||m in h.def&&JSON.stringify(l[m])===JSON.stringify(h.def[m])&&delete l[m]}let f=i._zod.parent;if(f&&f!==d){n(f);let h=e.seen.get(f);if(h?.schema.$ref&&(l.$ref=h.schema.$ref,h.def))for(let b in l)b==="$ref"||b==="allOf"||b in h.def&&JSON.stringify(l[b])===JSON.stringify(h.def[b])&&delete l[b]}e.override({zodSchema:i,jsonSchema:l,path:c.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let i of[...e.seen.entries()].reverse())n(i[0]);if(e.target!=="openapi-3.0")for(let i of e.seen.entries())$g(i[1].def??i[1].schema);for(let i of e.deferred)i();if(e.intersections.length){let i=new Map;for(let c of e.seen.values())for(let l of[c.schema,c.def]){let u=l?.allOf;if(!Array.isArray(u))continue;let d=i.get(u);d?d.push(l):i.set(u,[l])}for(let c of e.intersections)for(let l of i.get(c)??[])cx(l)}}let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}es(o,r.defId?r.schema:r.def??r.schema);let s=e.metadataRegistry.get(t)?.id;s!==void 0&&o.id===s&&delete o.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let i of e.seen.entries()){let c=i[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,qt(a,c.defId,c.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?o.$defs=a:o.definitions=a);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:ts(t,"input",e.processors),output:ts(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function Ct(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ct(n.element,r);if(n.type==="set")return Ct(n.valueType,r);if(n.type==="lazy")return Ct(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault"||n.type==="catch")return Ct(n.innerType,r);if(n.type==="intersection")return Ct(n.left,r)||Ct(n.right,r);if(n.type==="record"||n.type==="map")return Ct(n.keyType,r)||Ct(n.valueType,r);if(n.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Ct(n.in,r)||Ct(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Ct(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Ct(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Ct(o,r))return!0;return!!(n.rest&&Ct(n.rest,r))}return!1}var Ag=(e,t={})=>r=>{let n=Rc({...r,processors:t});return st(e,n),jc(n,e),Mc(n,e)},ts=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},a=Rc({...o??{},target:s,io:t,processors:r});return st(e,a),jc(a,e),Mc(a,e)};var Qn=(e,t,r)=>{(e[t]===void 0||r>e[t])&&(e[t]=r)},eo=(e,t,r)=>{(e[t]===void 0||r<e[t])&&(e[t]=r)},Og=(e,t)=>{Qn(e,"minimum",t),eo(e,"maximum",t)},Ng=(e,t)=>{e.multipleOf??(e.multipleOf=[]),e.multipleOf.includes(t)||e.multipleOf.push(t)},Rg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},jg=(e,t)=>{e.mime=e.mime?e.mime.filter(r=>t.includes(r)):[...t]},Mg=(e,t)=>{e.format=t,t.includes("int")&&(e.isInt=!0)},Ig=(e,t)=>Qn(e,"minimum",t.minimum),Tg=(e,t)=>eo(e,"maximum",t.maximum),Cg=e=>(t,r)=>{Mg(t,r.format);let[n,o]=e[r.format];Qn(t,"minimum",n),eo(t,"maximum",o)},ux={greater_than:(e,t)=>Qn(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>eo(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Ng(e,t.value),number_format:Cg(Zo),bigint_format:Cg(za),min_length:Ig,max_length:Tg,length_equals:(e,t)=>Og(e,t.length),min_size:Ig,max_size:Tg,size_equals:(e,t)=>Og(e,t.size),string_format:(e,t)=>{Mg(e,t.format),t.pattern&&Rg(e,t.pattern),(t.format==="base64"||t.format==="base64url")&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>jg(e,t.mime)};function Xt(e){let t={},r=e._zod.def,n=e._zod.traits.has("$ZodCheck")?[e,...r.checks??[]]:r.checks??[];for(let s of n)ux[s._zod.def.check]?.(t,s._zod.def);let o=e._zod.bag;o.minimum!==void 0&&Qn(t,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&Qn(t,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&eo(t,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&eo(t,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Ng(t,o.multipleOf),o.format!==void 0&&(t.format??(t.format=o.format),o.format.includes("int")&&(t.isInt=!0)),o.mime&&jg(t,o.mime);for(let s of o.patterns??[])Rg(t,s);return t}var dx={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},px=new Map([[mc,nm],[Ma,om]]),Dg=e=>px.get(e)??e,Lg=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:a,format:i,patterns:c,contentEncoding:l,laxFormat:u}=Xt(e);if(typeof s=="number"&&(o.minLength=s),typeof a=="number"&&(o.maxLength=a),i&&(o.format=dx[i]??i,o.format===""&&delete o.format,(i==="time"||u)&&delete o.format),l&&(o.contentEncoding=l),c&&c.size>0){let d=[...c].map(Dg);d.length===1?o.pattern=d[0].source:d.length>1&&(o.allOf=[...d.map(f=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))])}},Vg=(e,t,r,n)=>{let o=r,{minimum:s,maximum:a,multipleOf:i,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=Xt(e);o.type=u?"integer":"number";let d=typeof l=="number"&&l>=(s??Number.NEGATIVE_INFINITY),f=typeof c=="number"&&c<=(a??Number.POSITIVE_INFINITY),h=t.target==="draft-04"||t.target==="openapi-3.0";if(d?h?(o.minimum=l,o.exclusiveMinimum=!0):o.exclusiveMinimum=l:typeof s=="number"&&(o.minimum=s),f?h?(o.maximum=c,o.exclusiveMaximum=!0):o.exclusiveMaximum=c:typeof a=="number"&&(o.maximum=a),i){let b=new Set;for(let g of i)Number.isFinite(g)&&g!==0?b.add(Math.abs(g)):Dr(e,t,o,n,`A multipleOf divisor of ${g} cannot be represented in JSON Schema`);let[p,...m]=b;p!==void 0&&(o.multipleOf=p),m.length&&(o.allOf=[...o.allOf??[],...m.map(g=>({multipleOf:g}))])}},Fg=(e,t,r,n)=>{r.type="boolean"};var Zg=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"};var Bg=(e,t,r,n)=>{r.not={}};var Gg=(e,t,r,n)=>{};var Ug=(e,t,r,n)=>{let o=e._zod.def,s=qn(o.entries);if(s.length===0){r.not={};return}s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),r.enum=s},qg=(e,t,r,n)=>{let o=e._zod.def;if(o.values.length===0){r.not={};return}let s=[];for(let a of o.values)if(a===void 0){if(Dr(e,t,r,n,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(Dr(e,t,r,n,"BigInt literals cannot be represented in JSON Schema"))return;s.push(Number(a))}else s.push(a);if(s.length!==0)if(s.length===1){let a=s[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),s.every(a=>typeof a=="boolean")&&(r.type="boolean"),s.every(a=>a===null)&&(r.type="null"),r.enum=s};var Kg=(e,t,r,n)=>{Dr(e,t,r,n,"Custom types cannot be represented in JSON Schema")};var Hg=(e,t,r,n)=>{Dr(e,t,r,n,"Transforms cannot be represented in JSON Schema")};var Wg=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:a,maximum:i}=Xt(e);typeof a=="number"&&(o.minItems=a),typeof i=="number"&&(o.maxItems=i),o.type="array",o.items=st(s.element,t,{...n,path:[...n.path,"items"]})};function Ya(e){let t=e._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?Ya(t.out):t.type==="catch"?Ya(t.innerType):e._zod.optin}var Jg=(e,t,r,n)=>{let o=r,s=e._zod.def,a=s.shape;if(Object.getOwnPropertySymbols(a).length&&Dr(e,t,o,n,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let l in a)qt(o.properties,l,st(a[l],t,{...n,path:[...n.path,"properties",l]}));let c=[];for(let l of Object.keys(a)){let u=s.shape[l];(t.io==="input"?Ya(u)===void 0:u._zod.optout===void 0)&&c.push(l)}c.length>0&&(o.required=c),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=st(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},Yg=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,a=o.options.map((i,c)=>st(i,t,{...n,path:[...n.path,s?"oneOf":"anyOf",c]}));s?r.oneOf=a:r.anyOf=a},Xg=(e,t,r,n)=>{let o=e._zod.def,s=st(o.left,t,{...n,path:[...n.path,"allOf",0]}),a=st(o.right,t,{...n,path:[...n.path,"allOf",1]}),i=l=>"allOf"in l&&Object.keys(l).length===1,c=[...i(s)?s.allOf:[s],...i(a)?a.allOf:[a]];r.allOf=c,t.intersections.push(c)};function Dc(e,t,r){if(t.$ref){if(r.has(t))return t;r.add(t);let b=e.get(t)?.def;if(!b)return t;let p=Dc(e,b,r);return p===b?t:p}for(let b of["anyOf","oneOf"]){let p=t[b];if(!Array.isArray(p))continue;let m=p.map(g=>Dc(e,g,r));m.some((g,v)=>g!==p[v])&&(t={...t,[b]:m})}let n=Array.isArray(t.type)?t.type:[t.type],o=!n.includes("string")&&n.some(b=>b==="number"||b==="integer"),s=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!s?.some(b=>typeof b=="number"))return t;let{minimum:a,maximum:i,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...h}=t;return h.enum?h.enum=h.enum.map(b=>typeof b=="number"?String(b):b):typeof h.const=="number"&&(h.const=String(h.const)),o&&(h.type="string",s||(h.pattern=(n.includes("number")?Ko:lc).source)),h}var Lc=new WeakMap;function fx(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let r=new Map;for(let n of Lc.get(e)??[]){let o=e.seen.get(n),s=(o?.def??o?.schema)?.propertyNames;if(!s||s===!0||r.has(s))continue;let a=Dc(t,s,new Set);a!==s&&r.set(s,a)}if(r.size)for(let n of e.seen.values())for(let o of[n.schema,n.def]){let s=o&&r.get(o.propertyNames);s&&(o.propertyNames=s)}}var Qg=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let a=s.keyType,i=Xt(a).patterns;if(s.mode==="loose"&&i&&i.size>0){let u=st(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let d of i)qt(o.patternProperties,Dg(d).source,u)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=st(s.keyType,t,{...n,path:[...n.path,"propertyNames"]});let u=Lc.get(t);u||(u=[],Lc.set(t,u),t.deferred.push(()=>fx(t))),u.push(e)}o.additionalProperties=st(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]})}let c=a._zod.values,l=t.io==="input"&&Ya(s.valueType)!==void 0;if(c&&!s.partial&&!l){let u=[...c].filter(d=>typeof d=="string"||typeof d=="number");u.length>0&&(o.required=u.map(String))}},eb=(e,t,r,n)=>{let o=e._zod.def,s=st(o.innerType,t,n),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},tb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Vc=Symbol();function rb(e,t,r,n,o){let s=!1,a=JSON.stringify(e,(i,c)=>typeof c!="bigint"?c:(s=!0,null));return s?(Dr(t,r,n,o,"BigInt defaults cannot be represented in JSON Schema"),Vc):JSON.parse(a)}var nb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a=rb(o.defaultValue,e,t,r,n);a!==Vc&&(r.default=a)},ob=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);if(s.ref=o.innerType,t.io!=="input")return;let a=rb(o.defaultValue,e,t,r,n);a!==Vc&&(r._prefault=a)},sb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a;try{a=o.catchValue(void 0)}catch{Dr(e,t,r,n,"Dynamic catch values are not supported in JSON Schema");return}r.default=a},ab=(e,t,r,n)=>{let o=e._zod.def,s=o.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?s?o.out:o.in:o.out;st(a,t,n);let i=t.seen.get(e);i.ref=a},ib=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0};var Fc=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType};var lb=new WeakSet([Object.prototype,Error.prototype]);function Xa(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let n=r(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0})}})}var _x=(e,t)=>{Af.init(e,t),e.name="ZodError";let r=Object.getPrototypeOf(e);lb.has(r)||(lb.add(r),Xa(r,"format",n=>o=>Tf(n,o)),Xa(r,"flatten",n=>o=>If(n,o)),Xa(r,"addIssue",n=>o=>{n.issues.push(o),n.message=JSON.stringify(n.issues,Kn,2)}),Xa(r,"addIssues",n=>o=>{n.issues.push(...o),n.message=JSON.stringify(n.issues,Kn,2)}),Object.defineProperty(r,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))};var Ht=C("ZodError",_x,void 0,{Parent:Error});var cb=Pa(Ht),ub=$a(Ht),db=qo(Ht),pb=Ea(Ht),fb=Nf(Ht),mb=Rf(Ht),hb=jf(Ht),gb=Mf(Ht),bb=Df(Ht),yb=Lf(Ht),kb=Vf(Ht),vb=Ff(Ht);function xx(){Mt.localeError||Kt(Zh())}function ei(){Mt.memoizer||Kt({memoizer:Fh()})}var et=C("ZodType",(e,t)=>(xx(),qe.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(le.mergeDefs(t,{checks:[...t.checks??[],...e.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return lr(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(fS(e,t))},superRefine(e,t){return this.check(mS(e,t))},overwrite(e){return this.check(en(e))},optional(){return Qe(this)},exactOptional(){return tS(this)},nullable(){return wb(this)},nullish(){return Qe(wb(this))},nonoptional(e){return iS(this,e)},array(){return Oe(this)},or(e){return He([this,e])},and(e){return ti(this,e)},transform(e){return xb(this,Ob(e))},default(e){return oS(this,e)},prefault(e){return aS(this,e)},catch(e){return cS(this,e)},pipe(e){return xb(this,e)},readonly(){return pS(this)},describe(e){let t=this.clone();return zn.add(t,{description:e}),t},meta(...e){if(e.length===0)return zn.get(this);let t=this.clone();return zn.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return le.hide(this,"~standard",{...fc(this),jsonSchema:{input:ts(this,"input"),output:ts(this,"output")}})},set"~standard"(e){le.own(this,"~standard",e)},parse:function e(t,r){return cb(this,t,r,{callee:e})},parseAsync:async function e(t,r){return await ub(this,t,r,{callee:e})},safeParse(e,t){return db(this,e,t)},async safeParseAsync(e,t){return pb(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){le.own(this,"spa",e)},validate(e,t){return Aa(this,e,t)},validateAsync(e,t){return Oa(this,e,t)},encode:function e(t,r){return fb(this,t,r,{callee:e})},decode:function e(t,r){return mb(this,t,r,{callee:e})},encodeAsync:async function e(t,r){return await hb(this,t,r,{callee:e})},decodeAsync:async function e(t,r){return await gb(this,t,r,{callee:e})},safeEncode(e,t){return bb(this,e,t)},safeDecode(e,t){return yb(this,e,t)},async safeEncodeAsync(e,t){return kb(this,e,t)},async safeDecodeAsync(e,t){return vb(this,e,t)},toJSONSchema(e){return Ag(this,{})(e)},get description(){return zn.get(this)?.description},get _def(){return this._zod.def}}),Sb=C("_ZodString",(e,t)=>{ja.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Lg(e,r,n,o)},le.derived({format:e=>Xt(e).format??null,minLength:e=>Xt(e).minimum??null,maxLength:e=>Xt(e).maximum??null},{regex(...e){return this.check(wc(...e))},includes(...e){return this.check(Pc(...e))},startsWith(...e){return this.check($c(...e))},endsWith(...e){return this.check(Ec(...e))},min(...e){return this.check(Xn(...e))},max(...e){return this.check(Wa(...e))},length(...e){return this.check(Ja(...e))},nonempty(...e){return this.check(Xn(1,...e))},lowercase(e){return this.check(xc(e))},uppercase(e){return this.check(Sc(e))},trim(){return this.check(Oc())},normalize(...e){return this.check(Ac(...e))},toLowerCase(){return this.check(Ic())},toUpperCase(){return this.check(Tc())},slugify(){return this.check(Cc())}})),Sx=C("ZodString",(e,t)=>{ja.init(e,t),Sb.init(e,t)},{email(e){return this.check(qh(Px,e))},url(e){return this.check(Xh(Ex,e))},jwt(e){return this.check(fg(Bx,e))},emoji(e){return this.check(Qh(Ax,e))},guid(e){return this.check(Kh($x,e))},uuid(e){return this.check(Hh(Qa,e))},uuidv4(e){return this.check(Wh(Qa,e))},uuidv6(e){return this.check(Jh(Qa,e))},uuidv7(e){return this.check(Yh(Qa,e))},nanoid(e){return this.check(eg(Ox,e))},cuid(e){return this.check(tg(Ix,e))},cuid2(e){return this.check(rg(Tx,e))},ulid(e){return this.check(ng(Cx,e))},base64(e){return this.check(ug(Vx,e))},base64url(e){return this.check(dg(Fx,e))},xid(e){return this.check(og(Nx,e))},ksuid(e){return this.check(sg(Rx,e))},ipv4(e){return this.check(ag(jx,e))},ipv6(e){return this.check(ig(Mx,e))},cidrv4(e){return this.check(lg(Dx,e))},cidrv6(e){return this.check(cg(Lx,e))},e164(e){return this.check(pg(Zx,e))},datetime(e){return this.check(Za(ns,e))},date(e){return this.check(Ba(os,e))},time(e){return this.check(Ga(ss,e))},duration(e){return this.check(Ua(as,e))}});function O(e){return Uh(Sx,e)}var rt=C("ZodStringFormat",(e,t)=>{Ke.init(e,t),Sb.init(e,t)}),ns=C("ZodISODateTime",(e,t)=>{eh.init(e,t),rt.init(e,t)}),os=C("ZodISODate",(e,t)=>{th.init(e,t),rt.init(e,t)}),ss=C("ZodISOTime",(e,t)=>{rh.init(e,t),rt.init(e,t)}),as=C("ZodISODuration",(e,t)=>{nh.init(e,t),rt.init(e,t)}),Px=C("ZodEmail",(e,t)=>{Bm.init(e,t),rt.init(e,t)});var $x=C("ZodGUID",(e,t)=>{Fm.init(e,t),rt.init(e,t)});var Qa=C("ZodUUID",(e,t)=>{Zm.init(e,t),rt.init(e,t)});var Ex=C("ZodURL",(e,t)=>{qm.init(e,t),rt.init(e,t)});var Ax=C("ZodEmoji",(e,t)=>{Km.init(e,t),rt.init(e,t)});var Ox=C("ZodNanoID",(e,t)=>{Hm.init(e,t),rt.init(e,t)});var Ix=C("ZodCUID",(e,t)=>{Wm.init(e,t),rt.init(e,t)});var Tx=C("ZodCUID2",(e,t)=>{Jm.init(e,t),rt.init(e,t)});var Cx=C("ZodULID",(e,t)=>{Ym.init(e,t),rt.init(e,t)});var Nx=C("ZodXID",(e,t)=>{Xm.init(e,t),rt.init(e,t)});var Rx=C("ZodKSUID",(e,t)=>{Qm.init(e,t),rt.init(e,t)});var jx=C("ZodIPv4",(e,t)=>{oh.init(e,t),rt.init(e,t)});var Mx=C("ZodIPv6",(e,t)=>{ah.init(e,t),rt.init(e,t)});var Dx=C("ZodCIDRv4",(e,t)=>{ih.init(e,t),rt.init(e,t)});var Lx=C("ZodCIDRv6",(e,t)=>{lh.init(e,t),rt.init(e,t)});var Vx=C("ZodBase64",(e,t)=>{uh.init(e,t),rt.init(e,t)});var Fx=C("ZodBase64URL",(e,t)=>{dh.init(e,t),rt.init(e,t)});var Zx=C("ZodE164",(e,t)=>{ph.init(e,t),rt.init(e,t)});var Bx=C("ZodJWT",(e,t)=>{fh.init(e,t),rt.init(e,t)});var Pb=C("ZodNumber",(e,t)=>{hc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Vg(e,r,n,o),e.isFinite=!0},le.derived({minValue:e=>{let{minimum:t,exclusiveMinimum:r}=Xt(e);return Math.max(t??Number.NEGATIVE_INFINITY,r??Number.NEGATIVE_INFINITY)},maxValue:e=>{let{maximum:t,exclusiveMaximum:r}=Xt(e);return Math.min(t??Number.POSITIVE_INFINITY,r??Number.POSITIVE_INFINITY)},isInt:e=>{let{isInt:t,multipleOf:r}=Xt(e);return!!t||!!r?.some(Number.isSafeInteger)},format:e=>Xt(e).format??null},{gt(e,t){return this.check(Ka(e,t))},gte(e,t){return this.check(Qo(e,t))},min(e,t){return this.check(Qo(e,t))},lt(e,t){return this.check(qa(e,t))},lte(e,t){return this.check(Xo(e,t))},max(e,t){return this.check(Xo(e,t))},int(e){return this.check(zb(e))},safe(e){return this.check(zb(e))},positive(e){return this.check(Ka(0,e))},nonnegative(e){return this.check(Qo(0,e))},negative(e){return this.check(qa(0,e))},nonpositive(e){return this.check(Xo(0,e))},multipleOf(e,t){return this.check(Ha(e,t))},step(e,t){return this.check(Ha(e,t))},finite(){return this}}));function De(e){return mg(Pb,e)}var Gx=C("ZodNumberFormat",(e,t)=>{mh.init(e,t),Pb.init(e,t)});function zb(e){return hg(Gx,e)}var Ux=C("ZodBoolean",(e,t)=>{hh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Fg(e,r,n,o)});function mt(e){return gg(Ux,e)}var qx=C("ZodNull",(e,t)=>{gh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zg(e,r,n,o)});function $b(e){return bg(qx,e)}var Kx=C("ZodUnknown",(e,t)=>{bh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Gg(e,r,n,o)});function Xe(){return yg(Kx)}var Hx=C("ZodNever",(e,t)=>{yh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Bg(e,r,n,o)});function Wx(e){return kg(Hx,e)}var Jx=C("ZodArray",(e,t)=>{ei(),kh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wg(e,r,n,o),e.element=t.element},{min(e,t){return this.check(Xn(e,t))},nonempty(e){return this.check(Xn(1,e))},max(e,t){return this.check(Wa(e,t))},length(e,t){return this.check(Ja(e,t))},unwrap(){return this.element}});function Oe(e,t){return vg(Jx,e,t)}var Eb=C("ZodObject",(e,t)=>{ei(),_h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Jg(e,r,n,o),le.installLazyProp(e,"shape",r=>r._zod.def.shape,!1)},{keyof(){return Dt(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(le.mergeDefs(this._zod.def,{catchall:e}))},passthrough(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},loose(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},strict(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Wx()}))},strip(){return this.clone(le.mergeDefs(this._zod.def,{catchall:void 0}))},extend(e){return le.extend(this,e)},safeExtend(e){return le.safeExtend(this,e)},merge(e){return le.merge(this,e)},pick(e){return le.pick(this,e)},omit(e){return le.omit(this,e)},partial(...e){return le.partial(Ib,this,e[0])},exactPartial(...e){return le.partial(Tb,this,e[0],"exactPartial")},required(...e){return le.required(Cb,this,e[0])}});function J(e,t){let r={type:"object",shape:e??{},...le.normalizeParams(t)};return new Eb(r)}function Nt(e,t){return new Eb({type:"object",shape:e,catchall:Xe(),...le.normalizeParams(t)})}var Ab=C("ZodUnion",(e,t)=>{gc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Yg(e,r,n,o),e.options=t.options});function He(e,t){return new Ab({type:"union",options:e,...le.normalizeParams(t)})}var Yx=C("ZodDiscriminatedUnion",(e,t)=>{Ab.init(e,t),wh.init(e,t)});function Bc(e,t,r){return new Yx({type:"union",options:t,discriminator:e,...le.normalizeParams(r)})}var Xx=C("ZodIntersection",(e,t)=>{xh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Xg(e,r,n,o)});function ti(e,t){return new Xx({type:"intersection",left:e,right:t})}var _b=C("ZodRecord",(e,t)=>{ei(),Sh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Qg(e,r,n,o),e.keyType=t.keyType,e.valueType=t.valueType});function Ze(e,t,r){return!t||!t._zod?new _b({type:"record",keyType:O(),valueType:e,...le.normalizeParams(t)}):new _b({type:"record",keyType:e,valueType:t,...le.normalizeParams(r)})}var Zc=C("ZodEnum",(e,t)=>{Ph.init(e,t),et.init(e,t),e._zod.processJSONSchema=(n,o,s)=>Ug(e,n,o,s),e.enum=t.entries,e.options=[...e._zod.values];let r=new Set(Object.keys(t.entries));e.extract=(n,o)=>{let s={};for(let a of n)if(r.has(a))s[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Zc({...t,checks:[],...le.normalizeParams(o),entries:s})},e.exclude=(n,o)=>{let s={...t.entries};for(let a of n)if(r.has(a))delete s[a];else throw new Error(`Key ${a} not found in enum`);return new Zc({...t,checks:[],...le.normalizeParams(o),entries:s})}});function Dt(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new Zc({type:"enum",entries:r,...le.normalizeParams(t)})}var Qx=C("ZodLiteral",(e,t)=>{$h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>qg(e,r,n,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function oe(e,t){return new Qx({type:"literal",values:Array.isArray(e)?e:[e],...le.normalizeParams(t)})}var eS=C("ZodTransform",(e,t)=>{ei(),Eh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Hg(e,r,n,o),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Yn(e.constructor.name);r.addIssue=s=>{if(typeof s=="string")r.issues.push(le.issue(s,r.value,t));else{let a=s;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),"input"in a||(a.input=r.value),a.inst??(a.inst=e),r.issues.push(le.issue(a))}};let o=t.transform(r.value,r);return o instanceof Promise?o.then(s=>(r.value=s,r)):(r.value=o,r)}});function Ob(e){return new eS({type:"transform",transform:e})}var Ib=C("ZodOptional",(e,t)=>{bc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Fc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function Qe(e){return new Ib({type:"optional",innerType:e})}var Tb=C("ZodExactOptional",(e,t)=>{Ah.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Fc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function tS(e){return new Tb({type:"optional",innerType:e})}var rS=C("ZodNullable",(e,t)=>{Oh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>eb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function wb(e){return new rS({type:"nullable",innerType:e})}var nS=C("ZodDefault",(e,t)=>{Ih.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>nb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function oS(e,t){return new nS({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var sS=C("ZodPrefault",(e,t)=>{Th.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ob(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function aS(e,t){return new sS({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var Cb=C("ZodNonOptional",(e,t)=>{Ch.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>tb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function iS(e,t){return new Cb({type:"nonoptional",innerType:e,...le.normalizeParams(t)})}var lS=C("ZodCatch",(e,t)=>{Nh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>sb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function cS(e,t){return new lS({type:"catch",innerType:e,catchValue:typeof t=="function"?t:le.constantCatch(t)})}var Nb=C("ZodPipe",(e,t)=>{yc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ab(e,r,n,o),e.in=t.in,e.out=t.out});function xb(e,t){return new Nb({type:"pipe",in:e,out:t})}var uS=C("ZodPreprocess",(e,t)=>{Nb.init(e,t),Rh.init(e,t)}),dS=C("ZodReadonly",(e,t)=>{jh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ib(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function pS(e){return new dS({type:"readonly",innerType:e})}var Rb=C("ZodCustom",(e,t)=>{Mh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Kg(e,r,n,o)});function jb(e,t){return zg(Rb,e??(()=>!0),t)}function fS(e,t={}){return _g(Rb,e,t)}function mS(e,t){return wg(e,t)}function Gc(e,t){return new uS({type:"pipe",in:Ob(e),out:t})}var ri={};pf(ri,{ZodISODate:()=>os,ZodISODateTime:()=>ns,ZodISODuration:()=>as,ZodISOTime:()=>ss,date:()=>gS,datetime:()=>hS,duration:()=>yS,time:()=>bS});function hS(e){return Za(ns,e)}function gS(e){return Ba(os,e)}function bS(e){return Ga(ss,e)}function yS(e){return Ua(as,e)}var qc="2025-11-25";var Mb=[qc,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],tn="io.modelcontextprotocol/related-task",oi="2.0",pt=jb(e=>e!==null&&(typeof e=="object"||typeof e=="function")),Db=He([O(),De().int()]),Lb=O(),pj=Nt({ttl:De().optional(),pollInterval:De().optional()}),kS=J({ttl:De().optional()}),vS=J({taskId:O()}),Kc=Nt({progressToken:Db.optional(),[tn]:vS.optional()}),Wt=J({_meta:Kc.optional()}),is=Wt.extend({task:kS.optional()}),Vb=e=>is.safeParse(e).success,_t=J({method:O(),params:Wt.loose().optional()}),Qt=J({_meta:Kc.optional()}),er=J({method:O(),params:Qt.loose().optional()}),wt=Nt({_meta:Kc.optional()}),si=He([O(),De().int()]),Fb=J({jsonrpc:oe(oi),id:si,..._t.shape}).strict(),Hc=e=>Fb.safeParse(e).success,Zb=J({jsonrpc:oe(oi),...er.shape}).strict(),Bb=e=>Zb.safeParse(e).success,Wc=J({jsonrpc:oe(oi),id:si,result:wt}).strict(),ls=e=>Wc.safeParse(e).success;var be;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(be||(be={}));var Jc=J({jsonrpc:oe(oi),id:si.optional(),error:J({code:De().int(),message:O(),data:Xe().optional()})}).strict();var Gb=e=>Jc.safeParse(e).success;var Ub=He([Fb,Zb,Wc,Jc]),fj=He([Wc,Jc]),ai=wt.strict(),zS=Qt.extend({requestId:si.optional(),reason:O().optional()}),ii=er.extend({method:oe("notifications/cancelled"),params:zS}),_S=J({src:O(),mimeType:O().optional(),sizes:Oe(O()).optional(),theme:Dt(["light","dark"]).optional()}),cs=J({icons:Oe(_S).optional()}),to=J({name:O(),title:O().optional()}),qb=to.extend({...to.shape,...cs.shape,version:O(),websiteUrl:O().optional(),description:O().optional()}),wS=ti(J({applyDefaults:mt().optional()}),Ze(O(),Xe())),xS=Gc(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,ti(J({form:wS.optional(),url:pt.optional()}),Ze(O(),Xe()).optional())),SS=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({sampling:Nt({createMessage:pt.optional()}).optional(),elicitation:Nt({create:pt.optional()}).optional()}).optional()}),PS=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({tools:Nt({call:pt.optional()}).optional()}).optional()}),$S=J({experimental:Ze(O(),pt).optional(),sampling:J({context:pt.optional(),tools:pt.optional()}).optional(),elicitation:xS.optional(),roots:J({listChanged:mt().optional()}).optional(),tasks:SS.optional(),extensions:Ze(O(),pt).optional()}),ES=Wt.extend({protocolVersion:O(),capabilities:$S,clientInfo:qb}),Yc=_t.extend({method:oe("initialize"),params:ES});var AS=J({experimental:Ze(O(),pt).optional(),logging:pt.optional(),completions:pt.optional(),prompts:J({listChanged:mt().optional()}).optional(),resources:J({subscribe:mt().optional(),listChanged:mt().optional()}).optional(),tools:J({listChanged:mt().optional()}).optional(),tasks:PS.optional(),extensions:Ze(O(),pt).optional()}),OS=wt.extend({protocolVersion:O(),capabilities:AS,serverInfo:qb,instructions:O().optional()}),Xc=er.extend({method:oe("notifications/initialized"),params:Qt.optional()});var li=_t.extend({method:oe("ping"),params:Wt.optional()}),IS=J({progress:De(),total:Qe(De()),message:Qe(O())}),TS=J({...Qt.shape,...IS.shape,progressToken:Db}),ci=er.extend({method:oe("notifications/progress"),params:TS}),CS=Wt.extend({cursor:Lb.optional()}),us=_t.extend({params:CS.optional()}),ds=wt.extend({nextCursor:Lb.optional()}),NS=Dt(["working","input_required","completed","failed","cancelled"]),ps=J({taskId:O(),status:NS,ttl:He([De(),$b()]),createdAt:O(),lastUpdatedAt:O(),pollInterval:Qe(De()),statusMessage:Qe(O())}),ro=wt.extend({task:ps}),RS=Qt.merge(ps),fs=er.extend({method:oe("notifications/tasks/status"),params:RS}),ui=_t.extend({method:oe("tasks/get"),params:Wt.extend({taskId:O()})}),di=wt.merge(ps),pi=_t.extend({method:oe("tasks/result"),params:Wt.extend({taskId:O()})}),mj=wt.loose(),fi=us.extend({method:oe("tasks/list")}),mi=ds.extend({tasks:Oe(ps)}),hi=_t.extend({method:oe("tasks/cancel"),params:Wt.extend({taskId:O()})}),Kb=wt.merge(ps),Hb=J({uri:O(),mimeType:Qe(O()),_meta:Ze(O(),Xe()).optional()}),Wb=Hb.extend({text:O()}),Qc=O().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),Jb=Hb.extend({blob:Qc}),ms=Dt(["user","assistant"]),no=J({audience:Oe(ms).optional(),priority:De().min(0).max(1).optional(),lastModified:ri.datetime({offset:!0}).optional()}),Yb=J({...to.shape,...cs.shape,uri:O(),description:Qe(O()),mimeType:Qe(O()),size:Qe(De()),annotations:no.optional(),_meta:Qe(Nt({}))}),jS=J({...to.shape,...cs.shape,uriTemplate:O(),description:Qe(O()),mimeType:Qe(O()),annotations:no.optional(),_meta:Qe(Nt({}))}),MS=us.extend({method:oe("resources/list")}),DS=ds.extend({resources:Oe(Yb)}),LS=us.extend({method:oe("resources/templates/list")}),VS=ds.extend({resourceTemplates:Oe(jS)}),eu=Wt.extend({uri:O()}),FS=eu,ZS=_t.extend({method:oe("resources/read"),params:FS}),BS=wt.extend({contents:Oe(He([Wb,Jb]))}),GS=er.extend({method:oe("notifications/resources/list_changed"),params:Qt.optional()}),US=eu,qS=_t.extend({method:oe("resources/subscribe"),params:US}),KS=eu,HS=_t.extend({method:oe("resources/unsubscribe"),params:KS}),WS=Qt.extend({uri:O()}),JS=er.extend({method:oe("notifications/resources/updated"),params:WS}),YS=J({name:O(),description:Qe(O()),required:Qe(mt())}),XS=J({...to.shape,...cs.shape,description:Qe(O()),arguments:Qe(Oe(YS)),_meta:Qe(Nt({}))}),QS=us.extend({method:oe("prompts/list")}),e1=ds.extend({prompts:Oe(XS)}),t1=Wt.extend({name:O(),arguments:Ze(O(),O()).optional()}),r1=_t.extend({method:oe("prompts/get"),params:t1}),tu=J({type:oe("text"),text:O(),annotations:no.optional(),_meta:Ze(O(),Xe()).optional()}),ru=J({type:oe("image"),data:Qc,mimeType:O(),annotations:no.optional(),_meta:Ze(O(),Xe()).optional()}),nu=J({type:oe("audio"),data:Qc,mimeType:O(),annotations:no.optional(),_meta:Ze(O(),Xe()).optional()}),n1=J({type:oe("tool_use"),name:O(),id:O(),input:Ze(O(),Xe()),_meta:Ze(O(),Xe()).optional()}),o1=J({type:oe("resource"),resource:He([Wb,Jb]),annotations:no.optional(),_meta:Ze(O(),Xe()).optional()}),s1=Yb.extend({type:oe("resource_link")}),ou=He([tu,ru,nu,s1,o1]),a1=J({role:ms,content:ou}),i1=wt.extend({description:O().optional(),messages:Oe(a1)}),l1=er.extend({method:oe("notifications/prompts/list_changed"),params:Qt.optional()}),c1=J({title:O().optional(),readOnlyHint:mt().optional(),destructiveHint:mt().optional(),idempotentHint:mt().optional(),openWorldHint:mt().optional()}),u1=J({taskSupport:Dt(["required","optional","forbidden"]).optional()}),Xb=J({...to.shape,...cs.shape,description:O().optional(),inputSchema:J({type:oe("object"),properties:Ze(O(),pt).optional(),required:Oe(O()).optional()}).catchall(Xe()),outputSchema:J({type:oe("object"),properties:Ze(O(),pt).optional(),required:Oe(O()).optional()}).catchall(Xe()).optional(),annotations:c1.optional(),execution:u1.optional(),_meta:Ze(O(),Xe()).optional()}),su=us.extend({method:oe("tools/list")}),d1=ds.extend({tools:Oe(Xb)}),gi=wt.extend({content:Oe(ou).default([]),structuredContent:Ze(O(),Xe()).optional(),isError:mt().optional()}),hj=gi.or(wt.extend({toolResult:Xe()})),p1=is.extend({name:O(),arguments:Ze(O(),Xe()).optional()}),hs=_t.extend({method:oe("tools/call"),params:p1}),f1=er.extend({method:oe("notifications/tools/list_changed"),params:Qt.optional()}),gj=J({autoRefresh:mt().default(!0),debounceMs:De().int().nonnegative().default(300)}),gs=Dt(["debug","info","notice","warning","error","critical","alert","emergency"]),m1=Wt.extend({level:gs}),au=_t.extend({method:oe("logging/setLevel"),params:m1}),h1=Qt.extend({level:gs,logger:O().optional(),data:Xe()}),g1=er.extend({method:oe("notifications/message"),params:h1}),b1=J({name:O().optional()}),y1=J({hints:Oe(b1).optional(),costPriority:De().min(0).max(1).optional(),speedPriority:De().min(0).max(1).optional(),intelligencePriority:De().min(0).max(1).optional()}),k1=J({mode:Dt(["auto","required","none"]).optional()}),v1=J({type:oe("tool_result"),toolUseId:O().describe("The unique identifier for the corresponding tool call."),content:Oe(ou).default([]),structuredContent:J({}).loose().optional(),isError:mt().optional(),_meta:Ze(O(),Xe()).optional()}),z1=Bc("type",[tu,ru,nu]),ni=Bc("type",[tu,ru,nu,n1,v1]),_1=J({role:ms,content:He([ni,Oe(ni)]),_meta:Ze(O(),Xe()).optional()}),w1=is.extend({messages:Oe(_1),modelPreferences:y1.optional(),systemPrompt:O().optional(),includeContext:Dt(["none","thisServer","allServers"]).optional(),temperature:De().optional(),maxTokens:De().int(),stopSequences:Oe(O()).optional(),metadata:pt.optional(),tools:Oe(Xb).optional(),toolChoice:k1.optional()}),x1=_t.extend({method:oe("sampling/createMessage"),params:w1}),bs=wt.extend({model:O(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens"]).or(O())),role:ms,content:z1}),iu=wt.extend({model:O(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens","toolUse"]).or(O())),role:ms,content:He([ni,Oe(ni)])}),S1=J({type:oe("boolean"),title:O().optional(),description:O().optional(),default:mt().optional()}),P1=J({type:oe("string"),title:O().optional(),description:O().optional(),minLength:De().optional(),maxLength:De().optional(),format:Dt(["email","uri","date","date-time"]).optional(),default:O().optional()}),$1=J({type:Dt(["number","integer"]),title:O().optional(),description:O().optional(),minimum:De().optional(),maximum:De().optional(),default:De().optional()}),E1=J({type:oe("string"),title:O().optional(),description:O().optional(),enum:Oe(O()),default:O().optional()}),A1=J({type:oe("string"),title:O().optional(),description:O().optional(),oneOf:Oe(J({const:O(),title:O()})),default:O().optional()}),O1=J({type:oe("string"),title:O().optional(),description:O().optional(),enum:Oe(O()),enumNames:Oe(O()).optional(),default:O().optional()}),I1=He([E1,A1]),T1=J({type:oe("array"),title:O().optional(),description:O().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({type:oe("string"),enum:Oe(O())}),default:Oe(O()).optional()}),C1=J({type:oe("array"),title:O().optional(),description:O().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({anyOf:Oe(J({const:O(),title:O()}))}),default:Oe(O()).optional()}),N1=He([T1,C1]),R1=He([O1,I1,N1]),j1=He([R1,S1,P1,$1]),M1=is.extend({mode:oe("form").optional(),message:O(),requestedSchema:J({type:oe("object"),properties:Ze(O(),j1),required:Oe(O()).optional()})}),D1=is.extend({mode:oe("url"),message:O(),elicitationId:O(),url:O().url()}),L1=He([M1,D1]),V1=_t.extend({method:oe("elicitation/create"),params:L1}),F1=Qt.extend({elicitationId:O()}),Z1=er.extend({method:oe("notifications/elicitation/complete"),params:F1}),oo=wt.extend({action:Dt(["accept","decline","cancel"]),content:Gc(e=>e===null?void 0:e,Ze(O(),He([O(),De(),mt(),Oe(O())])).optional())}),B1=J({type:oe("ref/resource"),uri:O()});var G1=J({type:oe("ref/prompt"),name:O()}),U1=Wt.extend({ref:He([G1,B1]),argument:J({name:O(),value:O()}),context:J({arguments:Ze(O(),O()).optional()}).optional()}),q1=_t.extend({method:oe("completion/complete"),params:U1});var K1=wt.extend({completion:Nt({values:Oe(O()).max(100),total:Qe(De().int()),hasMore:Qe(mt())})}),H1=J({uri:O().startsWith("file://"),name:O().optional(),_meta:Ze(O(),Xe()).optional()}),W1=_t.extend({method:oe("roots/list"),params:Wt.optional()}),lu=wt.extend({roots:Oe(H1)}),J1=er.extend({method:oe("notifications/roots/list_changed"),params:Qt.optional()}),bj=He([li,Yc,q1,au,r1,QS,MS,LS,ZS,qS,HS,hs,su,ui,pi,fi,hi]),yj=He([ii,ci,Xc,J1,fs]),kj=He([ai,bs,iu,oo,lu,di,mi,ro]),vj=He([li,x1,V1,W1,ui,pi,fi,hi]),zj=He([ii,ci,g1,JS,GS,f1,l1,fs,Z1]),_j=He([ai,OS,K1,i1,e1,DS,VS,BS,gi,d1,di,mi,ro]),fe=class e extends Error{constructor(t,r,n){super(`MCP error ${t}: ${r}`),this.code=t,this.data=n,this.name="McpError"}static fromError(t,r,n){if(t===be.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new Uc(o.elicitations,r)}return new e(t,r,n)}},Uc=class extends fe{constructor(t,r=`URL elicitation${t.length>1?"s":""} required`){super(be.UrlElicitationRequired,r,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};var Y1=10*1024*1024,bi=class{constructor(t){this._maxBufferSize=t?.maxBufferSize??Y1}append(t){if((this._buffer?.length??0)+t.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
73
- `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),X1(r)}clear(){this._buffer=void 0}};function X1(e){return Ub.parse(JSON.parse(e))}function Qb(e){return JSON.stringify(e)+`
74
- `}var yi=class{constructor(t=ey.stdin,r=ey.stdout,n){this._stdin=t,this._stdout=r,this._started=!1,this._ondata=o=>{try{this._readBuffer.append(o),this.processReadBuffer()}catch(s){this.onerror?.(s),this.close().catch(()=>{})}},this._onerror=o=>{this.onerror?.(o)},this._readBuffer=new bi({maxBufferSize:n?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=Qb(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var ty="__export_design",ry="__import_design";function ny(e){try{let t=JSON.parse(String(e));return t&&typeof t.t=="string"?t:null}catch{return null}}import{readFile as RN,writeFile as jN}from"node:fs/promises";import{resolve as L_}from"node:path";function ki(e){return!!e._zod}function rn(e,t){return ki(e)?sc(e,t):e.safeParse(t)}function vi(e){if(!e)return;let t;if(ki(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function zi(e){if(ki(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let r=e._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=e.value;if(n!==void 0)return n}function nn(e){return e==="completed"||e==="failed"||e==="cancelled"}var eP=Symbol("Let zodToJsonSchema decide on which parser to use");var _M=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function cu(e){let r=vi(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=zi(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function uu(e,t){let r=rn(e,t);if(!r.success)throw r.error;return r.data}var aP=6e4,_i=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(ii,r=>{this._oncancel(r)}),this.setNotificationHandler(ci,r=>{this._onprogress(r)}),this.setRequestHandler(li,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(ui,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(be.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(pi,async(r,n)=>{let o=async()=>{let s=r.params.taskId;if(!await this._taskStore.getTask(s,n.sessionId))throw new fe(be.InvalidParams,`Task not found: ${s}`);if(this._taskMessageQueue){let i;for(;i=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(i.type==="response"||i.type==="error"){let c=i.message,l=c.id,u=this._requestResolvers.get(l);if(u)if(this._requestResolvers.delete(l),i.type==="response")u(c);else{let d=c,f=new fe(d.error.code,d.error.message,d.error.data);u(f)}else{let d=i.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${l}`))}continue}await this._transport?.send(i.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(s,n.sessionId);if(!a)throw new fe(be.InvalidParams,`Task not found: ${s}`);if(!nn(a.status))return await this._waitForTaskUpdate(s,n.signal,n.sessionId),await o();if(nn(a.status)){let i=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s,n.sessionId),{...i,_meta:{...i._meta,[tn]:{taskId:s}}}}return await o()};return await o()}),this.setRequestHandler(fi,async(r,n)=>{try{let{tasks:o,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:s,_meta:{}}}catch(o){throw new fe(be.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(hi,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(be.InvalidParams,`Task not found: ${r.params.taskId}`);if(nn(o.status))throw new fe(be.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId,n.sessionId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new fe(be.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(o){throw o instanceof fe?o:new fe(be.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,o,s=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:o})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),fe.fromError(be.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let o=this._transport?.onmessage;this._transport.onmessage=(s,a)=>{o?.(s,a),ls(s)||Gb(s)?this._onresponse(s):Hc(s)?this._onrequest(s,a):Bb(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=fe.fromError(be.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,o=this._transport,s=t.params?._meta?.[tn]?.taskId,a=o?.sessionId,i=this._taskStore,c=!0,l;if(s&&i&&this._taskMessageQueue&&a!==void 0&&(c=!1,l=(async()=>{if(!await i.getTask(s,a))throw new fe(be.InvalidParams,`Task not found: ${s}`);c=!0})()),n===void 0){let b={jsonrpc:"2.0",id:t.id,error:{code:be.MethodNotFound,message:"Method not found"}};if(s&&l){let p={type:"error",message:b,timestamp:Date.now()};l.then(()=>this._enqueueTaskMessage(s,p,a),()=>o?.send(b)).catch(m=>this._onerror(new Error(`Failed to send an error response: ${m}`)))}else s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:b,timestamp:Date.now()},o?.sessionId).catch(p=>this._onerror(new Error(`Failed to enqueue error response: ${p}`))):o?.send(b).catch(p=>this._onerror(new Error(`Failed to send an error response: ${p}`)));return}let u=new AbortController;this._requestHandlerAbortControllers.set(t.id,u);let d=Vb(t.params)?t.params.task:void 0,f=this._taskStore?this.requestTaskStore(t,o?.sessionId):void 0,h={signal:u.signal,sessionId:o?.sessionId,_meta:t.params?._meta,sendNotification:async b=>{if(u.signal.aborted)return;let p={relatedRequestId:t.id};s&&(p.relatedTask={taskId:s}),await this.notification(b,p)},sendRequest:async(b,p,m)=>{if(u.signal.aborted)throw new fe(be.ConnectionClosed,"Request was cancelled");let g={...m,relatedRequestId:t.id};s&&!g.relatedTask&&(g.relatedTask={taskId:s});let v=g.relatedTask?.taskId??s;return v&&f&&await f.updateTaskStatus(v,"input_required"),await this.request(b,p,g)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:s,taskStore:f,taskRequestedTtl:d?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};(l??Promise.resolve()).then(()=>{if(l&&u.signal.aborted)throw new fe(be.ConnectionClosed,"Request was cancelled");d&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,h)).then(async b=>{if(u.signal.aborted)return;let p={result:b,jsonrpc:"2.0",id:t.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:p,timestamp:Date.now()},o?.sessionId):await o?.send(p)},async b=>{if(u.signal.aborted)return;let p={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(b.code)?b.code:be.InternalError,message:b.message??"Internal error",...b.data!==void 0&&{data:b.data}}};s&&this._taskMessageQueue&&c?await this._enqueueTaskMessage(s,{type:"error",message:p,timestamp:Date.now()},o?.sessionId):await o?.send(p)}).catch(b=>this._onerror(new Error(`Failed to send response: ${b}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===u&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,o=Number(r),s=this._progressHandlers.get(o);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(o),i=this._timeoutInfo.get(o);if(i&&a&&i.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(c){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),a(c);return}s(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),ls(t))n(t);else{let a=new fe(t.error.code,t.error.message,t.error.data);n(a)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(ls(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let i=a.task;typeof i.taskId=="string"&&(s=!0,this._taskProgressTokens.set(i.taskId,r))}}if(s||this._progressHandlers.delete(r),ls(t))o(t);else{let a=fe.fromError(t.error.code,t.error.message,t.error.data);o(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(t,r,n)}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(be.InternalError,String(a))}}return}let s;try{let a=await this.request(t,ro,n);if(a.task)s=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new fe(be.InternalError,"Task creation did not return a task");for(;;){let i=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:i},nn(i.status)){i.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:i.status==="failed"?yield{type:"error",error:new fe(be.InternalError,`Task ${s} failed`)}:i.status==="cancelled"&&(yield{type:"error",error:new fe(be.InternalError,`Task ${s} was cancelled`)});return}if(i.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let c=i.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(l=>setTimeout(l,c)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(be.InternalError,String(a))}}}request(t,r,n){let{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a,task:i,relatedTask:c}=n??{};return new Promise((l,u)=>{let d=v=>{u(v)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),i&&this.assertTaskCapability(t.method)}catch(v){d(v);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,h={...t,jsonrpc:"2.0",id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),h.params={...t.params,_meta:{...t.params?._meta||{},progressToken:f}}),i&&(h.params={...h.params,task:i}),c&&(h.params={...h.params,_meta:{...h.params?._meta||{},[tn]:c}});let b=v=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:f,reason:String(v)}},{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(w=>this._onerror(new Error(`Failed to send cancellation: ${w}`)));let _=v instanceof fe?v:new fe(be.RequestTimeout,String(v));u(_)};this._responseHandlers.set(f,v=>{if(!n?.signal?.aborted){if(v instanceof Error)return u(v);try{let _=rn(r,v.result);_.success?l(_.data):u(_.error)}catch(_){u(_)}}}),n?.signal?.addEventListener("abort",()=>{b(n?.signal?.reason)});let p=n?.timeout??aP,m=()=>b(fe.fromError(be.RequestTimeout,"Request timed out",{timeout:p}));this._setupTimeout(f,p,n?.maxTotalTimeout,m,n?.resetTimeoutOnProgress??!1);let g=c?.taskId;if(g){let v=_=>{let w=this._responseHandlers.get(f);w?w(_):this._onerror(new Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,v),this._enqueueTaskMessage(g,{type:"request",message:h,timestamp:Date.now()}).catch(_=>{this._cleanupTimeout(f),u(_)})}else this._transport.send(h,{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(v=>{this._cleanupTimeout(f),u(v)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},di,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},mi,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},Kb,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let i={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[tn]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:i,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let i={...t,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[tn]:r.relatedTask}}}),this._transport?.send(i,r).catch(c=>this._onerror(c))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[tn]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let n=cu(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,s)=>{let a=uu(t,o);return Promise.resolve(r(a,s))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=cu(t);this._notificationHandlers.set(n,o=>{let s=uu(t,o);return Promise.resolve(r(s))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n??this._transport?.sessionId,o)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let o of n)if(o.type==="request"&&Hc(o.message)){let s=o.message.id,a=this._requestResolvers.get(s);a?(a(new fe(be.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r,n){let o=this._options?.defaultTaskPollInterval??1e3;try{let s=await this._taskStore?.getTask(t,n);s?.pollInterval&&(o=s.pollInterval)}catch{}return new Promise((s,a)=>{if(r.aborted){a(new fe(be.InvalidRequest,"Request cancelled"));return}let i=setTimeout(s,o);r.addEventListener("abort",()=>{clearTimeout(i),a(new fe(be.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!t)throw new Error("No request provided");return await n.createTask(o,t.id,{method:t.method,params:t.params},r)},getTask:async o=>{let s=await n.getTask(o,r);if(!s)throw new fe(be.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(o,s,a)=>{await n.storeTaskResult(o,s,a,r);let i=await n.getTask(o,r);if(i){let c=fs.parse({method:"notifications/tasks/status",params:i});await this.notification(c),nn(i.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,s,a)=>{let i=await n.getTask(o,r);if(!i)throw new fe(be.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(nn(i.status))throw new fe(be.InvalidParams,`Cannot update task "${o}" from terminal status "${i.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,s,a,r);let c=await n.getTask(o,r);if(c){let l=fs.parse({method:"notifications/tasks/status",params:c});await this.notification(l),nn(c.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function oy(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function sy(e,t){let r={...e};for(let n in t){let o=n,s=t[o];if(s===void 0)continue;let a=r[o];oy(a)&&oy(s)?r[o]={...a,...s}:r[o]=s}return r}var iv=yn(tp(),1),lv=yn(av(),1);function kT(){let e=new iv.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,lv.default)(e),e}var il=class{constructor(t){this._ajv=t??kT()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var ll=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],a=s.some(u=>u.type==="tool_result"),i=t.messages.length>1?t.messages[t.messages.length-2]:void 0,c=i?Array.isArray(i.content)?i.content:[i.content]:[],l=c.some(u=>u.type==="tool_use");if(a){if(s.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let u=new Set(c.filter(f=>f.type==="tool_use").map(f=>f.id)),d=new Set(s.filter(f=>f.type==="tool_result").map(f=>f.toolUseId));if(u.size!==d.size||![...u].every(f=>d.has(f)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},bs,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),o=t.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:s},oo,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function cv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function uv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var cl=class extends _i{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(gs.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new il,this.setRequestHandler(Yc,n=>this._oninitialize(n)),this.setNotificationHandler(Xc,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(au,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,i=gs.safeParse(a);return i.success&&this._loggingLevels.set(s,i.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new ll(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=sy(this._capabilities,t)}setRequestHandler(t,r){let o=vi(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=zi(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let i=async(c,l)=>{let u=rn(hs,c);if(!u.success){let b=u.error instanceof Error?u.error.message:String(u.error);throw new fe(be.InvalidParams,`Invalid tools/call request: ${b}`)}let{params:d}=u.data,f=await Promise.resolve(r(c,l));if(d.task){let b=rn(ro,f);if(!b.success){let p=b.error instanceof Error?b.error.message:String(b.error);throw new fe(be.InvalidParams,`Invalid task creation result: ${p}`)}return b.data}let h=rn(gi,f);if(!h.success){let b=h.error instanceof Error?h.error.message:String(h.error);throw new fe(be.InvalidParams,`Invalid tools/call result: ${b}`)}return h.data};return super.setRequestHandler(t,i)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){uv(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&cv(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Mb.includes(r)?r:qc,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},ai)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(l=>l.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,i=a?Array.isArray(a.content)?a.content:[a.content]:[],c=i.some(l=>l.type==="tool_use");if(s){if(o.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let l=new Set(i.filter(d=>d.type==="tool_use").map(d=>d.id)),u=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(l.size!==u.size||![...l].every(d=>u.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},iu,r):this.request({method:"sampling/createMessage",params:t},bs,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},oo,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},s=await this.request({method:"elicitation/create",params:o},oo,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let i=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!i.valid)throw new fe(be.InvalidParams,`Elicitation response content does not match requested schema: ${i.errorMessage}`)}catch(a){throw a instanceof fe?a:new fe(be.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return s}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},lu,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}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"})}};var DC=yn(sz(),1),LC=yn(kp(),1),VC=yn(_p(),1),FC=yn(zl(),1),Op=yn(mz(),1);var hz={Proofboard:"Proofboard","Panel be\xE1ll\xEDt\xE1sai":"Board settings","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve. Kattint\xE1sra kikapcsol.":"Simple mode: advanced parts are hidden. Click to turn it off.","Egyszer\u0171 m\xF3d":"Simple mode",F\u00E1jl:"File","\xDAj terv\u2026":"New design\u2026","Terv bet\xF6lt\xE9se f\xE1jlb\xF3l; a saj\xE1t alkatr\xE9szeid megmaradnak":"Load a design from a file; your own parts are kept","Megnyit\xE1s\u2026":"Open\u2026","A teljes terv (a benne haszn\xE1lt saj\xE1t alkatr\xE9szekkel egy\xFCtt) f\xE1jlba":"The whole design (with the custom parts it uses) to a file","Ment\xE9s f\xE1jlba":"Save to file","P\xE9ld\xE1k\u2026":"Examples\u2026","Panel be\xE1ll\xEDt\xE1sai\u2026":"Board settings\u2026","A halad\xF3 r\xE9szek elrejt\xE9se: cs\xEDkv\xE1g\xE1s, k\xE9zi \u2194 automatikus bek\xF6t\xE9s, JSON, PlatformIO, saj\xE1t alkatr\xE9sz szerkeszt\xE9se; a Probl\xE9m\xE1k k\xF6z\xFCl csak a hib\xE1k":"Hide the advanced parts: strip cuts, manual \u2194 automatic wiring, JSON, PlatformIO, custom part editing; only errors among the Problems","Saj\xE1t alkatr\xE9szk\xF6nyvt\xE1r":"Your part library","A saj\xE1t k\xF6nyvt\xE1r ment\xE9se f\xE1jlba (a tervt\u0151l f\xFCggetlen\xFCl)":"Save your library to a file (independent of the design)","K\xF6nyvt\xE1r export\xE1l\xE1sa":"Export library","Alkatr\xE9szek bet\xF6lt\xE9se f\xE1jlb\xF3l a saj\xE1t k\xF6nyvt\xE1rba":"Load parts from a file into your library","K\xF6nyvt\xE1r import\xE1l\xE1sa\u2026":"Import library\u2026","JSON export / import\u2026":"JSON export / import\u2026","\xD6n\xE1ll\xF3 ablakban fut, \xE9s internet n\xE9lk\xFCl is m\u0171k\xF6dik":"Runs in its own window and works without internet","Telep\xEDt\xE9s alkalmaz\xE1sk\xE9nt\u2026":"Install as an app\u2026","N\xE9vjegy\u2026":"About\u2026",T\u00E9ma:"Theme","A rendszer be\xE1ll\xEDt\xE1sa szerint":"Follow the system setting",Auto:"Auto",Vil\u00E1gos:"Light",S\u00F6t\u00E9t:"Dark",Elrendez\u00E9s:"Layout","Tervez\xE9s: alkatr\xE9szek \xE9s bek\xF6t\xE9s (Alt+1)":"Design: parts and wiring (Alt+1)",Tervez\u00E9s:"Design","Program: a panel \xE9s a program egym\xE1s mellett (Alt+2)":"Program: the board and the program side by side (Alt+2)",Program:"Program","Szimul\xE1ci\xF3: vez\xE9rl\u0151k \xE9s GPIO-k (Alt+3)":"Simulation: controls and GPIOs (Alt+3)",Szimul\u00E1ci\u00F3:"Simulation","Az elrendez\xE9s vissza\xE1ll\xEDt\xE1sa az alap\xE1llapot\xE1ra":"Reset the layout to its default","Az elrendez\xE9s alap\xE1llapota":"Default layout","Panelek ki-be":"Toggle panels","Bal oldals\xE1v: Alkatr\xE9szek ( [ )":"Left sidebar: Parts ( [ )","Bal oldals\xE1v (Alkatr\xE9szek)":"Left sidebar (Parts)","Als\xF3 panel: Probl\xE9m\xE1k, Napl\xF3 (P)":"Bottom panel: Problems, Log (P)","Als\xF3 panel (Probl\xE9m\xE1k, Napl\xF3)":"Bottom panel (Problems, Log)","Jobb oldals\xE1v: Tulajdons\xE1gok, Kapcsolatok, Szimul\xE1ci\xF3 ( ] )":"Right sidebar: Properties, Connections, Simulation ( ] )","Jobb oldals\xE1v":"Right sidebar",Visszavon\u00E1s:"Undo","Visszavon\xE1s (Ctrl+Z)":"Undo (Ctrl+Z)","\xDAjra (Ctrl+Y)":"Redo (Ctrl+Y)",\u00DAjra:"Redo","Szimul\xE1ci\xF3 (S)":"Simulation (S)",Bez\u00E1r\u00E1s:"Close","Bal oldali panel":"Left panel",Tulajdons\u00E1gok:"Properties",Alkatr\u00E9szek:"Parts","Bal oldals\xE1v (\xF6sszecsukva)":"Left sidebar (collapsed)","Kinyit\xE1s ( [ )":"Expand ( [ )","Bal oldals\xE1v kinyit\xE1sa":"Expand the left sidebar","Alkatr\xE9sz keres\xE9se":"Search parts","Keres\xE9s: n\xE9v, l\xE1b, funkci\xF3 (pl. i2c, adc, motor)":"Search: name, pin, function (e.g. i2c, adc, motor)","Saj\xE1t alkatr\xE9sz le\xEDr\xE1sa az Alkatr\xE9sz-szerkeszt\u0151ben":"Describe a custom part in the Part editor","\xDAj alkatr\xE9sz":"New part",Csoportok:"Groups","Minden csoport kinyit\xE1sa":"Expand all groups","Minden csoport becsuk\xE1sa":"Collapse all groups","A saj\xE1t k\xF6nyvt\xE1r":"Your library","a b\xF6ng\xE9sz\u0151dben marad, terv v\xE1lt\xE1sakor is; export\xE1lni \xE9s import\xE1lni a F\xE1jl men\xFCben lehet. Amit egy tervbe leraksz, az a terv r\xE9sze lesz (":"stays in your browser, even when you switch designs; export and import are in the File menu. Whatever you place in a design becomes part of it (",Projekt:"Project","), \xEDgy a tervf\xE1jllal egy\xFCtt utazik.":"), so it travels with the design file.","Lerak\xE1s k\xF6zben:":"While placing:","forgat\xE1s,":"rotate,","t\xFCkr\xF6z\xE9s,":"mirror,","m\xE9gse.":"cancel.","\xC9rint\xE9ssel: egy ujjal h\xFAzva g\xF6rgetsz, alkatr\xE9szen h\xFAzva mozgatod; hosszan nyomva kijel\xF6l\u0151 keret; k\xE9t ujjal nagy\xEDt\xE1s \xE9s g\xF6rget\xE9s. Lerak\xE1skor az el\u0151n\xE9zet az ujjad f\xF6l\xF6tt j\xE1r, felenged\xE9sre ker\xFCl le.":"With touch: drag with one finger to scroll, drag on a part to move it; long press for a selection box; two fingers to zoom and scroll. While placing, the preview follows above your finger and is placed when you lift it.","H\xFAzd a sz\xE9less\xE9g \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: alapm\xE9ret":"Drag to set the width, double-click: default size","Bal oldals\xE1v sz\xE9less\xE9ge":"Left sidebar width",N\u00E9zetek:"Views",N\u00E9zet:"View","A panel: alkatr\xE9szek, bek\xF6t\xE9s (1)":"The board: parts, wiring (1)",Panel:"Board","A program: blokkok, amelyek fut\xE1s k\xF6zben a GPIO-kat vez\xE9rlik (2)":"The program: blocks that drive the GPIOs while running (2)","A panel \xE9s a program egym\xE1s mellett (3)":"The board and the program side by side (3)",Mindkett\u0151:"Both","Mindkett\u0151: egym\xE1s mellett vagy egym\xE1s alatt":"Both: side by side or one above the other","Feloszt\xE1s ir\xE1nya":"Split direction","Alkatr\xE9sz-szerkeszt\u0151k":"Part editors","A panel is l\xE1tszik a szerkeszt\u0151 mellett (bal oldalt)":"Show the board next to the editor (on the left)","Panel a szerkeszt\u0151 mellett":"Board next to the editor","A panel megjelen\xEDt\xE9se":"Board display",Oldal:"Side","Alkatr\xE9szoldal (F)":"Component side (F)",Alkatr\u00E9szoldal:"Component side","R\xE9zoldal, t\xFCkr\xF6zve (F)":"Copper side, mirrored (F)",R\u00E9zoldal:"Copper side","Kapcsolati vonalak: a kapcsolatok egyenes vonallal a k\xE9t l\xE1b k\xF6z\xF6tt (N)":"Connection lines: connections as straight lines between the two pins (N)",Vonalak:"Lines","Minden alkatr\xE9sz r\xF6ntgen n\xE9zetben: csak k\xF6rvonal, l\xE1bak \xE9s l\xE1bnevek (X)":"Every part in X-ray view: outline, pins and pin names only (X)",R\u00F6ntgen:"X-ray","(Shift+W) R\xF6vid vezet\xE9k: a hossz\xFA vezet\xE9kekb\u0151l csak a k\xE9t v\xE9g l\xE1tszik szakad\xE1sjellel; r\xE1mutatva vagy kijel\xF6lve a teljes vonal":"(Shift+W) Short wires: long wires show only their two ends with a break mark; the full line on hover or when selected","R\xF6vid vezet\xE9k":"Short wires","A panel n\xE9zet\xE9nek elforgat\xE1sa 90\xB0-kal (T)":"Rotate the board view by 90\xB0 (T)","Panel elforgat\xE1sa 90\xB0-kal":"Rotate the board by 90\xB0","Kezdj\xFCnk egy panelt":"Let's start a board","A Proofboarddal pr\xF3bany\xE1kot tervezel \xE9s ki is pr\xF3b\xE1lod, miel\u0151tt forrasztan\xE1l.":"With Proofboard you design a perfboard and try it out before you solder.","\u2013 a bal oldali k\xF6nyvt\xE1rb\xF3l rakd le \u0151ket a panelra.":"\u2013 place them on the board from the library on the left.",Bek\u00F6t\u00E9s:"Wiring","\u2013 kapcsolatokkal (az \xFAtvonalat a program keresi meg), vagy k\xE9zzel hidakkal \xE9s vezet\xE9kekkel.":"\u2013 with connections (the app finds the route), or by hand with bridges and wires.",Kipr\u00F3b\u00E1l\u00E1s:"Trying it out","\u2013 a szimul\xE1ci\xF3 megmutatja a fesz\xFClts\xE9geket, a Probl\xE9m\xE1k a hib\xE1kat; a program a vez\xE9rl\u0151lapot m\u0171k\xF6dteti.":"\u2013 the simulation shows the voltages, Problems shows the mistakes; the program drives the controller board.","Tiszta sablon":"Blank template","vagy n\xE9zd meg, hogyan k\xE9sz\xFCl":"or see how it's done","P\xE9lda bet\xF6lt\xE9se":"Load an example","Alkatr\xE9sz-szerkeszt\u0151":"Part editor",Eszk\u00F6z\u00F6k:"Tools","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa / kinyit\xE1sa":"Collapse / expand the toolbar","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa":"Collapse the toolbar",Sz\u00EDn:"Color",V\u00E1g\u00E1s:"Cut","A cs\xEDkv\xE1g\xE1s t\xEDpusa":"Strip cut type",Kijel\u00F6l\u00E9s:"Select","\xD6sszecsuk\xE1s c\xEDmsorra (dupla kattint\xE1s a c\xEDmsoron is)":"Collapse to the title bar (or double-click the title bar)","\xD6sszecsuk\xE1s c\xEDmsorra":"Collapse to the title bar","R\xF6gz\xEDt\xE9s a jobb s\xE1vba (a Tulajdons\xE1gok szakasz tetej\xE9re)":"Dock in the right sidebar (at the top of Properties)","R\xF6gz\xEDt\xE9s a jobb s\xE1vba":"Dock in the right sidebar",Nagy\u00EDt\u00E1s:"Zoom","Kicsiny\xEDt\xE9s (Ctrl+g\xF6rg\u0151)":"Zoom out (Ctrl+wheel)",Kicsiny\u00EDt\u00E9s:"Zoom out","Az eg\xE9sz panel l\xE1tsz\xF3djon (0)":"Show the whole board (0)","Nagy\xEDt\xE1s (Ctrl+g\xF6rg\u0151)":"Zoom in (Ctrl+wheel)","Az eg\xE9sz panel, k\xF6z\xE9pen (0)":"The whole board, centered (0)","Az eg\xE9sz panel":"The whole board","M\u0171veletek a kijel\xF6l\xE9ssel":"Actions on the selection","Probl\xE9m\xE1k \xE9s napl\xF3":"Problems and log","H\xFAzd a magass\xE1g \xE1ll\xEDt\xE1s\xE1hoz":"Drag to set the height","Az als\xF3 panel magass\xE1ga":"Bottom panel height","Als\xF3 panel":"Bottom panel",Probl\u00E9m\u00E1k:"Problems",Napl\u00F3:"Log","Mind elolvasva":"Mark all read","Napl\xF3 t\xF6rl\xE9se":"Clear log","Probl\xE9m\xE1k \xE9s napl\xF3 (P)":"Problems and log (P)","Als\xF3 panel kinyit\xE1sa":"Expand the bottom panel","A Probl\xE9m\xE1k megnyit\xE1sa":"Open Problems","Jobb oldals\xE1v sz\xE9less\xE9ge":"Right sidebar width","Jobb oldali panel":"Right panel",Kapcsolatok:"Connections",K\u00F3d:"Code","Jobb oldals\xE1v (\xF6sszecsukva)":"Right sidebar (collapsed)","Kinyit\xE1s ( ] )":"Expand ( ] )","Jobb oldals\xE1v kinyit\xE1sa":"Expand the right sidebar","\xC1tt\xE9tel a m\xE1sik oldals\xE1vba":"Move to the other sidebar","Lev\xE1laszt\xE1s: lebeg\u0151 ablak a panel f\xF6l\xF6tt":"Detach: floating window above the board","Lev\xE1laszt\xE1s lebeg\u0151 ablakba":"Detach into a floating window","Automatikus \xFAtvonaltervez\xE9s":"Automatic routing","Cs\xEDkos panelen a kapcsolatok szerint elv\xE1gja a cs\xEDkokat az elt\xE9r\u0151 h\xE1l\xF3zat\xFA l\xE1bak k\xF6z\xF6tt":"On a stripboard, cuts the strips between pins of different nets, based on the connections","Automatikus cs\xEDkv\xE1g\xE1s":"Automatic strip cuts","Az automatikus hidak \xFAjratervez\xE9se":"Replan the automatic bridges","\xDAtvonalak keres\xE9se":"Find routes","Az automatikus hidakat k\xE9zi hidakk\xE1 alak\xEDtja":"Turns the automatic bridges into manual ones","R\xF6gz\xEDt\xE9s k\xE9zire":"Make manual","A k\xE9zi bek\xF6t\xE9sb\u0151l kapcsolatokat k\xE9sz\xEDt, \xE9s automatikusan \xFAjrah\xFAzza":"Creates connections from the manual wiring and reroutes them automatically","K\xE9zi \u2192 automatikus":"Manual \u2192 automatic","Auto hidak t\xF6rl\xE9se":"Delete auto bridges","Kapcsolat:":"Connection:","eszk\xF6z, vagy gomb kijel\xF6l\xE9sekor \u201EA \u2192 GPIO, B \u2192 GND\u201D. A k\xE9zi hidakat az \xFAtvonalkeres\u0151 nem m\xF3dos\xEDtja; a \u201EK\xE9zi \u2192 automatikus\u201D kapcsolatokk\xE1 alak\xEDtja \u0151ket, a \u201ER\xF6gz\xEDt\xE9s k\xE9zire\u201D visszafel\xE9.":"tool, or \u201CA \u2192 GPIO, B \u2192 GND\u201D when a button is selected. The router does not change manual bridges; \u201CManual \u2192 automatic\u201D turns them into connections, \u201CMake manual\u201D does the reverse.",Jelmagyar\u00E1zat:"Legend","gomb A / GPIO":"button A / GPIO","gomb B":"button B","GND / kat\xF3d":"GND / cathode","3V3 / an\xF3d / +":"3V3 / anode / +","VBUS / VSYS":"VBUS / VSYS","k\xE9zi h\xEDd":"manual bridge","automatikus h\xEDd":"automatic bridge","kapcsolat \u2192 GPIO":"connection \u2192 GPIO","kapcsolat \u2192 GND":"connection \u2192 GND","kapcsolat l\xE1b\u2013l\xE1b":"pin-to-pin connection","bek\xF6tetlen kapcsolat":"unrouted connection","USB t\xE1p a vez\xE9rl\u0151n":"USB power on the controller","Gomb m\xF3d":"Button mode","Nyomva tart\xE1s":"Hold",Kapcsol\u00F3:"Toggle",Panelek:"Panels",R\u00E9szletek:"Details",N\u00E9vjegy:"About","Pr\xF3bany\xE1k-tervez\u0151 \xE9s -szimul\xE1tor: pontraszteres, szekci\xF3s \xE9s cs\xEDkos panelek, hidak \xE9s vezet\xE9kek, \xFAtvonalkeres\u0151, egyen\xE1ram\xFA szimul\xE1ci\xF3, blokkos program \xE9s k\xF3dgener\xE1l\xE1s Pico \xE9s ESP32 vez\xE9rl\u0151lapokhoz.":"Perfboard designer and simulator: dot, sectioned and strip boards, bridges and wires, a router, DC simulation, a block program and code generation for Pico and ESP32 boards.","A tervek \xE9s a saj\xE1t alkatr\xE9szek csak ebben a b\xF6ng\xE9sz\u0151ben vannak mentve; f\xE1jlba a F\xE1jl \u2192 Ment\xE9s f\xE1jlba menti \u0151ket.":"Designs and custom parts are saved only in this browser; File \u2192 Save to file writes them to a file.","Forr\xE1sk\xF3d a GitHubon":"Source code on GitHub","Hibajelz\xE9s, \xF6tlet":"Report a bug, suggest an idea",Telep\u00EDt\u00E9s:"Install","\xDAj verzi\xF3 \xE9rhet\u0151 el.":"A new version is available.",Friss\u00EDt\u00E9s:"Update","K\xE9s\u0151bb (a k\xF6vetkez\u0151 megnyit\xE1skor friss\xFCl)":"Later (updates on the next launch)",K\u00E9s\u0151bb:"Later",P\u00E9ld\u00E1k:"Examples","Keres\xE9s a p\xE9ld\xE1k k\xF6z\xF6tt":"Search the examples","A bet\xF6lt\xE9s visszavonhat\xF3 (Ctrl+Z).":"Loading can be undone (Ctrl+Z).",T\u00EDpus:"Type",M\u00E9ret:"Size",oszlopok:"columns",sorok:"rows",lyuk:"holes",Szekci\u00F3:"Section","nincs (pontraszter)":"none (dot board)","teljes cs\xEDk (stripboard)":"full strip (stripboard)",Alkalmaz:"Apply","A panel m\xE9ret\xE9nek vagy a r\xE9zoszt\xE1snak a v\xE1ltoz\xE1sa visszavonhat\xF3 (Ctrl+Z). A panelr\xF3l lel\xF3g\xF3 hidak \xE9s vezet\xE9kek t\xF6rl\u0151dnek.":"Changing the board size or the copper layout can be undone (Ctrl+Z). Bridges and wires hanging off the board are deleted.","\xDAj terv":"New design","A mostani terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3; a saj\xE1t k\xF6nyvt\xE1rad nem v\xE1ltozik.":"The current design can be brought back with Undo (Ctrl+Z); your library does not change.",M\u00E9gse:"Cancel",L\u00E9trehoz\u00E1s:"Create","JSON export / import":"JSON export / import",Export:"Export",M\u00E1sol\u00E1s:"Copy",Import:"Import",'Form\xE1tum: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.l\xE1bsz\xE1m":"pullup|pulldown|float|out_high|out_low"}. Koordin\xE1ta: sor:oszlop.':'Format: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.pinNumber":"pullup|pulldown|float|out_high|out_low"}. Coordinate: row:column.',Nyelv:"Language","Verzi\xF3: {v} \xB7 {d}":"Version: {v} \xB7 {d}","Telep\xEDtett alkalmaz\xE1sk\xE9nt fut; internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Running as an installed app; works without internet.","Internet n\xE9lk\xFCl is m\u0171k\xF6dik (a b\xF6ng\xE9sz\u0151 elt\xE1rolta). Telep\xEDthet\u0151 is \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt.":"Works without internet (stored by the browser). It can also be installed as an app.","Telep\xEDtve: a Proofboard \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt is elind\xEDthat\xF3.":"Installed: Proofboard can now be started as an app.","Visszavon\xE1s az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Z)":"Undo in the part editor (Ctrl+Z)","\xDAjra az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Y)":"Redo in the part editor (Ctrl+Y)","Kijel\xF6l\xE9s \xE9s mozgat\xE1s; Shift+kattint\xE1s vagy keret: t\xF6bb elem":"Select and move; Shift+click or a box: several items",H\u00EDd:"Bridge","Forraszt\xF3h\xEDd szomsz\xE9dos lyukak k\xF6z\xF6tt (h\xFAz\xE1ssal t\xF6bb is)":"Solder bridge between neighboring holes (drag for several)",Vezet\u00E9k:"Wire","Huzal k\xE9t tetsz\u0151leges lyuk k\xF6z\xF6tt":"A wire between any two holes",Kapcsolat:"Connection","K\xE9t l\xE1b \xF6sszek\xF6t\xE9se; az \xFAtvonalat a program keresi meg":"Connect two pins; the app finds the route",Cs\u00EDkv\u00E1g\u00E1s:"Strip cut","A r\xE9z megszak\xEDt\xE1sa k\xE9t lyuk k\xF6z\xF6tt, vagy egy lyuk kif\xFAr\xE1sa":"Break the copper between two holes, or drill out a hole",Jegyzet:"Note","Sz\xF6veges c\xE9dula a panelon":"A text note on the board",T\u00F6rl\u00E9s:"Delete","Kattint\xE1sra vagy h\xFAz\xE1ssal t\xF6r\xF6l":"Deletes on click or drag",Mozgat\u00E1s:"Pan","A n\xE9zet mozgat\xE1sa (Sz\xF3k\xF6z + h\xFAz\xE1s is)":"Move the view (or Space + drag)","Hely szerint":"By position","A kattint\xE1s helye d\xF6nt: lyuk k\xF6zep\xE9n furat, k\xE9t lyuk k\xF6z\xF6tt r\xE9s":"Where you click decides: a hole in the middle of a hole, a gap between two holes",Furat:"Hole","A lyuk kif\xFAr\xE1sa: a cs\xEDk ott megszakad":"Drill out the hole: the strip is broken there",R\u00E9s:"Gap","Szakad\xE1s k\xE9t lyuk k\xF6z\xF6tt: a cs\xEDk a k\xE9t lyuk k\xF6z\xF6tt megszakad":"A break between two holes: the strip is cut between them","{p} alkatr\xE9sz \xB7 {b} h\xEDd \xB7 {w} vezet\xE9k":"parts: {p} \xB7 bridges: {b} \xB7 wires: {w}","kif\xFArt lyuk (nincs r\xE9z)":"drilled hole (no copper)",cs\u00EDk:"strip",szekci\u00F3:"section",net:"net",lebeg:"floating","Lerak\xE1s: {x}":"Placing: {x}","Eszk\xF6z: {x}":"Tool: {x}","{n} elem":"{n} item||{n} items",vezet\u00E9k:"wire",h\u00EDd:"bridge",jegyzet:"note","Kijel\xF6lve: {x}":"Selected: {x}",k\u00E9k:"blue",piros:"red",fekete:"black",s\u00E1rga:"yellow",z\u00F6ld:"green",feh\u00E9r:"white",narancs:"orange",sz\u00FCrke:"gray",Forgat\u00E1s:"Rotate",T\u00FCkr\u00F6z\u00E9s:"Mirror",M\u00E1solat:"Copy","sor eltol\xE1s":"row offset",sor:"row","oszlop eltol\xE1s":"column offset",oszlop:"col","pl. GND,VCC,SDA,SCL":"e.g. GND,VCC,SDA,SCL","Pl. 4,7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}":"E.g. 4.7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}","E12-sor":"E12 series",l\u00E9ptet\u00E9s:"step","Nem \xE9rtelmezhet\u0151 \xE9rt\xE9k (pl. 4,7k \xB7 4k7 \xB7 100n)":"Not a valid value (e.g. 4.7k \xB7 4k7 \xB7 100n)","A k\xE9t l\xE1b nem lehet ugyanabban a lyukban":"The two pins cannot be in the same hole","Ennyire nem l\xF3ghat ki (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It cannot hang off this far (at least one pin on the board, at most 8 holes of overhang)",Jelenlegi:"Current","nincs kapcsolat":"no connection","L\xE1bak \xE9s bek\xF6t\xE9s":"Pins and wiring","{n} l\xE1b":"{n} pin||{n} pins","{n} lebeg":"{n} floating","a panelon k\xEDv\xFCl":"off the board",kapcsolat:"connection",bek\u00F6tve:"routed","nincs bek\xF6tve":"not routed",h\u00E1l\u00F3:"net","lebeg (sehova sincs k\xF6tve)":"floating (not connected anywhere)",N\u00E9v:"Name",orig\u00F3:"origin",t\u00FCkr\u00F6zve:"mirrored",Duplik\u00E1l\u00E1s:"Duplicate","\xDAj p\xE9ld\xE1ny ugyanezekkel a be\xE1ll\xEDt\xE1sokkal":"A new instance with the same settings","R\xF6ntgen (csak k\xF6rvonal \xE9s l\xE1bak)":"X-ray (outline and pins only)","Alkatr\xE9sz szerkeszt\xE9se":"Edit part","A be\xE9p\xEDtett le\xEDr\xE1sb\xF3l saj\xE1t, szerkeszthet\u0151 alkatr\xE9sz":"An editable custom part from the built-in description","M\xE1solat saj\xE1t alkatr\xE9szk\xE9nt":"Copy as a custom part","Az alkatr\xE9sz k\xE9zi bek\xF6t\xE9s\xE9t kapcsolatokk\xE1 alak\xEDtja, \xEDgy mozgat\xE1skor k\xF6veti":"Turns the part's manual wiring into connections, so it follows when moved","Bek\xF6t\xE9s automatikusra":"Make wiring automatic","Ennek az alkatr\xE9sznek nincs k\xE9zi bek\xF6t\xE9se":"This part has no manual wiring",Csere:"Swap","M\xE1sik vez\xE9rl\u0151re cser\xE9li; a kapcsolatok megmaradnak, a GPIO-k \xFAjra kioszt\xF3dnak":"Swaps to another controller; connections are kept, GPIOs are reassigned","Csatlakoz\xF3: {x} (t\xFCskesor a panelon)":"Connector: {x} (pin header on the board)","A k\xE1bel kih\xFAz\xE1sa: a t\xFCskesor a panelon marad, a l\xE1bak szabad k\xE1belk\xE9nt k\xF6thet\u0151k be":"Unplug the cable: the pin header stays on the board, the pins can be wired as a loose cable",Kih\u00FAz\u00E1s:"Unplug","T\xFCskesor a panelra a l\xE1bsz\xE1m\xE1val \xE9s l\xE1bneveivel; a k\xE1bel abba dugva, a bek\xF6t\xE9s onnan indul":"A pin header on the board with its pin count and names; the cable plugs into it and wiring starts from there","Csatlakoz\xF3 (t\xFCskesor) a panelra":"Connector (pin header) on the board","Nincs el\xE9g szabad hely a panelon a csatlakoz\xF3nak":"Not enough free space on the board for the connector","{x}: a csatlakoz\xF3 a panelon, a k\xE1bel bedugva. Mozgasd oda, ahov\xE1 forrasztan\xE1d.":"{x}: the connector is on the board, the cable is plugged in. Move it where you would solder it.","Ide csatlakozik: {x} ({y}). A l\xE1bak sorrendje a k\xE1bel\xE9.":"Plugged in here: {x} ({y}). The pin order follows the cable.",K\u00E1bel:"Cable","A k\xFCls\u0151 alkatr\xE9sz k\xE1bele ebbe a csatlakoz\xF3ba":"Plug the external part's cable into this connector",Bedug\u00E1s:"Plug in","Csatlakoz\xF3: k\xFCls\u0151 alkatr\xE9sz (motor, szerv\xF3, szenzor) k\xE1bele dughat\xF3 bele. A l\xE1bnevek a feliratokhoz val\xF3k.":"Connector: the cable of an external part (motor, servo, sensor) plugs into it. The pin names are for the labels.","Kapcsolatok: az A l\xE1b szabad GPIO-ra, a B l\xE1b a f\xF6ldre":"Connections: pin A to a free GPIO, pin B to ground","Kijel\xF6lve: {p} alkatr\xE9sz, {b} k\xE9zi h\xEDd, {w} vezet\xE9k":"Selected: parts {p}, manual bridges {b}, wires {w}","H\xFAz\xE1ssal egy\xFCtt mozognak. Shift+kattint\xE1s: hozz\xE1ad\xE1s/elv\xE9tel.":"They move together when dragged. Shift+click: add/remove.","R\xF6ntgen be/ki":"X-ray on/off","A kijel\xF6l\xE9snek nincs k\xE9zi bek\xF6t\xE9se":"The selection has no manual wiring","nem villamos elem":"not an electrical element","Jegyzet sz\xF6vege":"Note text","\xDAj sor: Enter. {x} sor f\xE9lk\xF6v\xE9r c\xEDmsor. M\xE9ret: h\xFAzd a jobb als\xF3 sark\xE1t, vagy add meg.":"New line: Enter. A {x} line is a bold heading. Size: drag the bottom-right corner, or enter it.",C\u00EDm:"Title",sz\u00E9less\u00E9g:"width",magass\u00E1g:"height","Szaggatott ny\xEDl a jegyzett\u0151l az alkatr\xE9szig; csak jel\xF6l\xE9s, nem kapcsolat":"A dashed arrow from the note to the part; only a marker, not a connection",Mutat:"Points to",semmire:"nothing","Kapcsolat innen: {x}":"Connection from: {x}","Kattints a c\xE9l l\xE1bra, vagy v\xE1lassz:":"Click the target pin, or choose:","szabad GPIO":"free GPIO","Kattints egy l\xE1bra, majd a c\xE9l l\xE1bra (vagy GND / szabad GPIO).":"Click a pin, then the target pin (or GND / free GPIO).","Lerak\xE1s: {x}{y}. Kattints a panelra; Shift+kattint\xE1ssal t\xF6bb p\xE9ld\xE1ny.":"Placing: {x}{y}. Click on the board; Shift+click for several.","({x} m\xE1solata)":"(copy of {x})","H\xFAzd az egeret szomsz\xE9dos lyukakon \xE1t: minden szekci\xF3hat\xE1rn\xE1l h\xEDd keletkezik.":"Drag across neighboring holes: a bridge is made at every section boundary.","Kattints a kezd\u0151, majd a c\xE9l lyukra.":"Click the start hole, then the target hole.","Kattints vagy h\xFAzz a t\xF6rlend\u0151 elemen.":"Click or drag over what to delete.","Kattints egy alkatr\xE9szre, vezet\xE9kre vagy h\xEDdra. Shift+kattint\xE1s vagy keret h\xFAz\xE1sa \xFCres helyen: t\xF6bb elem. Ctrl+A: minden.":"Click a part, wire or bridge. Shift+click or drag a box on an empty area: several items. Ctrl+A: everything.","\xC9rintsd meg a panelt, h\xFAzd a hely\xE9re, \xE9s engedd fel":"Touch the board, drag it into place, and let go",f\u00F6ld:"ground",t\u00E1pbemenet:"power input",t\u00E1p:"power","3,3 V":"3.3 V",jel:"signal","anal\xF3g jel":"analog signal",kimenet:"output",t\u00E1pkimenet:"power output","kapcsol\xF3 A":"switch A","kapcsol\xF3 B":"switch B",b\u00E1zis:"base",kollektor:"collector",emitter:"emitter",gate:"gate",drain:"drain",source:"source",an\u00F3d:"anode",kat\u00F3d:"cathode","an\xF3d +":"anode +","kat\xF3d \u2212":"cathode \u2212",tekercs:"coil",t\u00F6lt\u00E9s:"charge",ellen\u00E1ll\u00E1s:"resistor",kondenz\u00E1tor:"capacitor",\u00E1tk\u00F6t\u00E9s:"jumper",t\u00FCske:"pin","GND (f\xF6ld)":"GND (ground)",\u00C1ltal\u00E1nos:"General","szabad GPIO (az \xFAtvonalkeres\u0151 v\xE1laszt)":"free GPIO (the router picks)","{x} (foglalt: {y})":"{x} (used by: {y})","{x}: t\xE1p":"{x}: power","Ide nem tehet\u0151 v\xE1g\xE1s":"No cut can go here","Itt nincs mit elv\xE1gni (szekci\xF3hat\xE1r vagy a cs\xEDk v\xE9ge)":"Nothing to cut here (section boundary or the end of the strip)","\xCDrd ide a le\xEDr\xE1st\u2026":"Write the description here\u2026","Tov\xE1bb nem mozd\xEDthat\xF3 (panel sz\xE9le)":"Cannot move further (edge of the board)","A panel sz\xE9l\xE9n\xE9l tov\xE1bb nem mozd\xEDthat\xF3":"Cannot move past the edge of the board","Kijel\xF6l\u0151 keret: h\xFAzd az ujjad":"Selection box: drag your finger","\xCDgy lel\xF3gna a panelr\xF3l (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It would hang off the board (at least one pin on the board, at most 8 holes of overhang)","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve.":"Simple mode: advanced parts are hidden.","Egyszer\u0171 m\xF3d kikapcsolva.":"Simple mode turned off.","Szimul\xE1ci\xF3 elind\xEDtva.":"Simulation started.","Szimul\xE1ci\xF3 le\xE1ll\xEDtva.":"Simulation stopped.","Egym\xE1s alatt (kattintva: egym\xE1s mellett)":"One above the other (click: side by side)","Egym\xE1s mellett (kattintva: egym\xE1s alatt)":"Side by side (click: one above the other)","Nincs z\xE1rlat vagy bek\xF6t\xE9si hiba.":"No short circuit or wiring error.","t\xE1p van":"powered","nincs t\xE1p":"no power","Nincs vez\xE9rl\u0151 (Pico, ESP32) a panelon.":"No controller (Pico, ESP32) on the board.",Gomb:"Button",\u00C1llapot:"State",Olvas:"Reads",lenyomva:"pressed",fel:"up","Ind\xEDtsd a szimul\xE1ci\xF3t, \xE9s kattints a gombokra a panelon.":"Start the simulation and click the buttons on the board.",M\u00F3d:"Mode",Szint:"Level","{x} m\xF3d":"{x} mode",kit\u00F6lt\u00E9s:"duty","frekv.":"freq.","Lass\xFA PWM: a panelon val\xF3s id\u0151ben villog; a t\xE1bl\xE1zat az \xE1tlagot mutatja.":"Slow PWM: blinks in real time on the board; the table shows the average.","Gyors PWM: a szem az \xE1tlagot l\xE1tja, a szimul\xE1ci\xF3 is \xE1tlagol.":"Fast PWM: the eye sees the average, and the simulation averages too.",villog:"blinking",\u00E1tlagolva:"averaged",nyitva:"on",z\u00E1rva:"off",\u00C1ram:"Current",vil\u00E1g\u00EDt:"lit",s\u00F6t\u00E9t:"dark",akt\u00EDv:"active",tel\u00EDtve:"saturated","Kond.":"Cap.","Id\u0151\xE1lland\xF3: ennyi id\u0151 alatt t\xF6lt\u0151dik fel kb. 63%-ra, 5\u03C4 alatt teljesen":"Time constant: it charges to about 63% in this time, fully in 5\u03C4","nincs t\xF6lt\u0151\xFAt":"no charging path",Logika:"Logic",Bemenet:"Input",Kimenet:"Output",t\u00E1rol\u00F3k:"registers",Motor:"Motor",Fordulat:"Speed",\u00E1ll:"stopped",L\u00E9ptet\u0151:"Stepper",Tekercs:"Coils",L\u00E9p\u00E9s:"Step",Tengely:"Shaft",Szerv\u00F3:"Servo",Jel:"Signal",Sz\u00F6g:"Angle",t\u00F6lt\u0151dik:"charging",mer\u00FCl:"discharging","nincs terhel\xE9s":"no load",Vez\u00E9rl\u0151k:"Controls","Szimul\xE1ci\xF3 le\xE1ll\xEDt\xE1sa":"Stop simulation","Bet\xF6ltve: {x}. Az el\u0151z\u0151 terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"Loaded: {x}. The previous design can be brought back with Undo (Ctrl+Z).","P\xE9ld\xE1k kateg\xF3ri\xE1i":"Example categories","\xD6sszes kateg\xF3ria":"All categories","Mit tanulsz:":"What you learn:","Nincs ilyen p\xE9lda.":"No such example.","\xDAtvonalkeres\xE9s: {ok}/{n} kapcsolat bek\xF6tve, {b} h\xEDd, {w} vezet\xE9k.":"Routing: {ok}/{n} connections routed, bridges: {b}, wires: {w}.","Az automatikus bek\xF6t\xE9s k\xE9ziv\xE9 r\xF6gz\xEDtve.":"The automatic wiring was made manual.","Nincs k\xE9zi bek\xF6t\xE9s, amit \xE1t lehetne alak\xEDtani":"There is no manual wiring to convert","Az automatikus hidak t\xF6r\xF6lve, az \xFAtvonaltervez\xE9s kikapcsolva.":"Automatic bridges deleted, routing turned off.","A Proofboard elt\xE1rolva: internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Proofboard is stored: it works without internet.","\xDAj terv. Az el\u0151z\u0151 visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"New design. The previous one can be brought back with Undo (Ctrl+Z).","{n} hiba":"{n} error||{n} errors","{n} figyelmeztet\xE9s":"{n} warning||{n} warnings","{n} megjegyz\xE9s":"{n} note||{n} notes","Nincs probl\xE9ma":"No problems","Als\xF3 panel \xF6sszecsuk\xE1sa":"Collapse the bottom panel","A terv JSON-ja a mez\u0151ben.":"The design's JSON is in the field.","V\xE1g\xF3lapra m\xE1solva.":"Copied to the clipboard.","Kijel\xF6ltem a sz\xF6veget, m\xE1sold Ctrl+C-vel.":"The text is selected, copy it with Ctrl+C.","Bet\xF6ltve: {p} alkatr\xE9sz, {b} h\xEDd, {w} vezet\xE9k":"Loaded: parts {p}, bridges {b}, wires {w}","a tervvel {n} saj\xE1t alkatr\xE9sz j\xF6tt (a terv r\xE9sze, a k\xF6nyvt\xE1radat nem v\xE1ltoztatta)":"the design brought {n} custom parts (part of the design, your library was not changed)","a k\xF6nyvt\xE1radban m\xE1s azonos nev\u0171 alkatr\xE9sz van, ez\xE9rt a terv v\xE1ltozata \xFAj n\xE9ven: {x}":"your library has a different part with the same name, so the design's version got a new name: {x}","Hib\xE1s JSON: {x}":"Invalid JSON: {x}","Nem siker\xFClt bet\xF6lteni: {x}":"Could not load: {x}","{ok}/{n} bek\xF6tve":"{ok}/{n} routed",nincs:"none",k\u00E1bel:"cable","{n} h\xEDd":"{n} bridge||{n} bridges",k\u00E9zi:"manual","Kattints: kezd\u0151- \xE9s v\xE9gpont, \xFAtvonal kiemel\xE9se":"Click: highlight the start, end and route","Kapcsolat t\xF6rl\xE9se":"Delete connection",C\u00E9l:"Target","M\xE9g nincs kapcsolat.":"No connections yet.","{a} auto + {m} k\xE9zi":"{a} auto + {m} manual","{n} vezet\xE9k":"{n} wire||{n} wires","{n} v\xE1g\xE1s":"{n} cut||{n} cuts","\xD6sszesen: {x}":"Total: {x}","A soronk\xE9nti sz\xE1mok \xF6sszege {n}; a k\xF6z\xF6s szakaszok (pl. GND-t\xF6rzs) t\xF6bb kapcsolatn\xE1l is szerepelnek, de csak egyszer kell beforrasztani.":"The rows add up to {n}; shared sections (e.g. a GND trunk) appear in several connections but only need soldering once.","sorok \xF6sszege: {n} (k\xF6z\xF6s szakaszok)":"rows add up to {n} (shared sections)",c\u00E9l:"target",kezdet:"start","Esc: kiemel\xE9s v\xE9ge":"Esc: end highlight","A saj\xE1t k\xF6nyvt\xE1rba ker\xFClt: {x}":"Added to your library: {x}","Alkatr\xE9sz t\xF6r\xF6lve":"Part deleted","Kattints a panelra a lerak\xE1shoz":"Click on the board to place it","H\xE1tt\xE9rbe: {x}":"To background: {x}","H\xE1tt\xE9rbe (Esc): a nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r":"To background (Esc): the unsaved part waits on its tab","Bez\xE1r\xE1s: {x}":"Close: {x}","Bez\xE1r\xE1s (Esc)":"Close (Esc)","a piszkozat megmarad, az \xDAj alkatr\xE9sz folytatja":"the draft is kept, New part continues it","Az alkatr\xE9sz szerkeszt\xE9se":"Edit the part","Alkatr\xE9sz-szerkeszt\u0151: {x}":"Part editor: {x}","A nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r: kattints r\xE1 a folytat\xE1shoz.":"The unsaved part waits on its tab: click it to continue.","A saj\xE1t k\xF6nyvt\xE1rad m\xE9g \xFCres.":"Your library is still empty.","{n} alkatr\xE9sz export\xE1lva.":"{n} part exported.||{n} parts exported.","{n} alkatr\xE9sz bet\xF6ltve a saj\xE1t k\xF6nyvt\xE1rba":"{n} part loaded into your library||{n} parts loaded into your library","{n} hib\xE1s kihagyva ({x})":"{n} invalid skipped ({x})","10\xD720 cm, 1\xD73 szekci\xF3":"10\xD720 cm, 1\xD73 sections","10\xD716 cm cs\xEDkos (stripboard)":"10\xD716 cm stripboard","7\xD79 cm pontraszter":"7\xD79 cm dot board","5\xD77 cm pontraszter":"5\xD77 cm dot board","4\xD76 cm pontraszter":"4\xD76 cm dot board","teljes cs\xEDk":"full strip",pontraszter:"dot board","1\xD7{n} szekci\xF3":"1\xD7{n} sections",Egyedi:"Custom",Alapok:"Basics",Vez\u00E9rl\u0151:"Controller",F\u00E9lvezet\u0151:"Semiconductor",Passz\u00EDv:"Passive","Saj\xE1t alkatr\xE9sz":"Custom part",Modul:"Module",kezd\u0151:"beginner",halad\u00F3:"advanced","be, felh\xFAzva":"in, pull-up","be, leh\xFAzva":"in, pull-down","be, lebeg\u0151":"in, floating","anal\xF3g (ADC)":"analog (ADC)","ki: 1":"out: 1","ki: 0":"out: 0","ki: PWM":"out: PWM","Sz\u0171r\xE9s c\xEDmk\xE9re":"Filter by tag","Sz\u0171r\xE9s:":"Filter:","Sz\u0171r\u0151k t\xF6rl\xE9se":"Clear filters","Tal\xE1latok minden kateg\xF3ri\xE1ban: {n}":"Results in all categories: {n}",program:"program","Szimul\xE1ci\xF3 fut":"Simulation running","Szimul\xE1ci\xF3 \xE1ll":"Simulation stopped","+ Blokk":"+ Block","A kijel\xF6lt blokk vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected block or edge (Delete)","Az eg\xE9sz program l\xE1tsz\xF3djon":"Show the whole program",Mind:"All","Teljes k\xE9perny\u0151":"Full screen","Teljes k\xE9perny\u0151 (Esc: vissza)":"Full screen (Esc: back)",Programv\u00E1szon:"Program canvas","M\xE9g nincs program. A {x} men\xFCb\u0151l rakj le egy bemenetet (pl. gomb) \xE9s egy kimenetet (pl. LED), majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"No program yet. From the {x} menu place an input (e.g. a button) and an output (e.g. an LED), then drag an edge from the output point to the input point.","nincs l\xE1b kiv\xE1lasztva":"no pin selected","(nincs GPIO-n)":"(not on a GPIO)","ismeretlen l\xE1b":"unknown pin",Sablon:"Template","\xDCtemad\xF3 \u2192 Sorozat (f\xE9ll\xE9ptet\xE9s) \u2192 4 digit\xE1lis kimenet; ha van ULN2003, az IN1\u2013IN4 l\xE1baira":"Clock \u2192 Sequence (half-step) \u2192 4 digital outputs; to the IN1\u2013IN4 pins if there is a ULN2003",L\u00E9ptet\u0151motor:"Stepper motor","v\xE1lassz l\xE1bat":"choose a pin","Blokk t\xF6rl\xE9se":"Delete block",Le\u00E1ll\u00EDt\u00E1s:"Stop",Futtat\u00E1s:"Run","Vissza (Esc)":"Back (Esc)","Kil\xE9p\xE9s a teljes k\xE9perny\u0151b\u0151l":"Exit full screen","M\xE9g nincs bejegyz\xE9s. Ide ker\xFCl a bet\xF6lt\xE9s, a ment\xE9s, az \xFAtvonalkeres\xE9s \xE9s a szimul\xE1ci\xF3 ind\xEDt\xE1sa.":"No entries yet. Loading, saving, routing and starting the simulation are logged here.",Programnyelv:"Programming language","platformio.ini \xE9s src/main.cpp egy zip-ben (VS Code + PlatformIO)":"platformio.ini and src/main.cpp in a zip (VS Code + PlatformIO)","PlatformIO-projekt":"PlatformIO project","Gener\xE1lt k\xF3d":"Generated code","Let\xF6lt\xE9s ({x})":"Download ({x})","M\xE9g nincs program. A Blokkok f\xFCl\xF6n rakd \xF6ssze, \xE9s itt megjelenik a k\xF3dja.":"No program yet. Build it from blocks and its code appears here.","Felt\xF6lt\xE9s: Thonny-val nyisd meg, \xE9s mentsd a lapra {x} n\xE9ven (vagy {y}). A lapon MicroPython-firmware kell.":"Upload: open it in Thonny and save it to the board as {x} (or {y}). The board needs MicroPython firmware.",lap:"board","az alaplapkezel\u0151h\xF6z add hozz\xE1: {x}":"add to the Boards Manager: {x}","v\xE1laszd ki a lapot":"select the board","Halad\xF3knak: PlatformIO-projekt zip-ben.":"For advanced users: a PlatformIO project in a zip.",M\u00E1solva:"Copied","Nem siker\xFClt":"Failed","Alkatr\xE9szek lerak\xE1sa \xE9s bek\xF6t\xE9se":"Placing and wiring parts","A panel \xE9s a program egym\xE1s mellett, jobbra a k\xF3d":"The board and the program side by side, the code on the right","Vez\xE9rl\u0151k \xE9s GPIO-k; a szimul\xE1ci\xF3 ind\xEDt\xE1sakor erre v\xE1lt":"Controls and GPIOs; switches here when the simulation starts","Kedvenc (kattint\xE1sra kiveszi)":"Favorite (click to remove)",Kedvencekhez:"Add to favorites","{x} kedvenc":"{x} favorite","Hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz (m\xE1s tervekben is el\xE9rhet\u0151 lesz)":"Add to your library (available in other designs too)","{x} a k\xF6nyvt\xE1rba":"{x} to the library",Szerkeszt\u00E9s:"Edit","{x} szerkeszt\xE9se":"Edit {x}",Kedvencek:"Favorites","Legut\xF3bb haszn\xE1lt":"Recently used","A megnyitott terv saj\xE1t alkatr\xE9szei, amelyek nincsenek a k\xF6nyvt\xE1radban. \uFF0B: hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz.":"Custom parts of the open design that are not in your library. \uFF0B: add to your library.","Saj\xE1t k\xF6nyvt\xE1r":"Your library","Nincs tal\xE1lat.":"No results.",L\u00E1b:"Pin","f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)":"half step (8 steps)","teljes l\xE9p\xE9s, k\xE9t tekercs (4)":"full step, two coils (4)","egy tekercs (4)":"one coil (4)","bin\xE1ris sz\xE1ml\xE1l\xF3 (16)":"binary counter (16)","saj\xE1t minta":"custom pattern","Ut\xE1nfut\xE1s (ki k\xE9sleltetve)":"Off delay (stays on)","Bekapcsol\xE1si k\xE9sleltet\xE9s":"On delay",Impulzus:"Pulse","Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)":"Filter (both changes)",Id\u0151:"Time","Digit\xE1lis bemenet":"Digital input","Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony.":"The level of a pin (e.g. a push button). With a pull-up the pressed button reads low, so \u201Cactive\u201D is low by default.",Felh\u00FAz\u00E1s:"Pull","fel (3,3 V)":"up (3.3 V)","le (GND)":"down (GND)",Akt\u00EDv:"Active","alacsony szinten":"when low","magas szinten":"when high","Anal\xF3g bemenet":"Analog input","Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick.":"The voltage of an ADC-capable pin as 0\u20261 (0 V \u2192 0, 3.3 V \u2192 1), e.g. a potentiometer or joystick.",\u00E9rt\u00E9k:"value",\u00C1lland\u00F3:"Constant","R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz).":"A fixed number (0\u20261 for PWM duty, or for comparison).",\u00C9rt\u00E9k:"Value",NEM:"NOT","Megford\xEDtja a jelet.":"Inverts the signal.",be:"in",ki:"out",\u00C9S:"AND","Akkor igaz, ha mindk\xE9t bemenet igaz.":"True when both inputs are true.",A:"A",B:"B",C:"C",D:"D",VAGY:"OR","Akkor igaz, ha legal\xE1bb az egyik bemenet igaz.":"True when at least one input is true.","KIZ\xC1R\xD3 VAGY":"XOR","Akkor igaz, ha pontosan az egyik bemenet igaz.":"True when exactly one input is true.",\u00D6sszehasonl\u00EDt\u00E1s:"Compare","Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D.":"True when the input is above (or below) the threshold, e.g. \u201Cthe potentiometer is turned past halfway\u201D.",igaz:"true",Felt\u00E9tel:"Condition","nagyobb, mint":"greater than","kisebb, mint":"less than",Hat\u00E1r:"Threshold",\u00DCtemad\u00F3:"Clock","N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED).":"Square wave: true for the duty share of each period (blinking LED).",Peri\u00F3dus:"Period",Kit\u00F6lt\u00E9s:"Duty",V\u00E1lt\u00F3kapcsol\u00F3:"Toggle","Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026":"Flips on every rising edge (e.g. a button press): on, off, on\u2026",v\u00E1lt\u00E1s:"toggle",\u00E1llapot:"state",Sz\u00E1ml\u00E1l\u00F3:"Counter","Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez).":"Adds one on every rising edge and starts over at the limit; reset sets it to zero. \u201CRatio\u201D is 0\u20261 (for PWM).",sz\u00E1mol:"count",t\u00F6rl\u00E9s:"reset",ar\u00E1ny:"ratio",L\u00E9p\u00E9ssz\u00E1m:"Steps",Id\u0151z\u00EDt\u0151:"Timer","K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s).":"Delay or hold for the given time. Off delay: turns on at once and stays true this long after the input ends (staircase light). On delay: turns on only when the input has been true for this long. Pulse: true for this long on a rising edge. Filter: passes on both changes only if they last this long (debouncing).",M\u0171k\u00F6d\u00E9s:"Mode",Sorozat:"Sequence","Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet.":"On every rising edge (e.g. from a clock) the next row of the pattern goes to outputs A\u2013D: stepper coils, chaser lights, counter. The \u201Cback\u201D input (or the direction) steps backwards.",l\u00E9p\u00E9s:"step",vissza:"back",Minta:"Pattern","Saj\xE1t minta (sorok sz\xF3k\xF6zzel)":"Custom pattern (rows separated by spaces)",Ir\u00E1ny:"Direction",el\u0151re:"forward","Digit\xE1lis kimenet":"Digital output","Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja).":"True \u2192 the pin is high (3.3 V), false \u2192 low (e.g. LED, relay, MOSFET gate).","PWM kimenet":"PWM output","Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %.":"Duty: LED brightness, motor speed. If the input is not connected, the set duty applies; when connected, the input (0\u20261) sets it, e.g. Constant 0.3 = 30 % or a potentiometer. A logic signal (e.g. Clock) is 0 % or 100 %. For a servo, 50 Hz and 2.5\u202612.5 %.","Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)":"Duty (without input)",Frekvencia:"Frequency","jel / adat":"signal / data","f\xF6ld (GND)":"ground (GND)","an\xF3d / +":"anode / +","kat\xF3d / \u2212":"cathode / \u2212",\u00E1ltal\u00E1nos:"general","GPIO (vez\xE9rl\u0151lap)":"GPIO (controller board)","3,3 V kimenet":"3.3 V output","t\xE1p (VSYS, 5V\u2026)":"power (VSYS, 5V\u2026)","egy\xE9b (RUN, EN\u2026)":"other (RUN, EN\u2026)","adc, adc2, in (csak bemenet), nopull, strap, uart0, led, valamint buszfunkci\xF3k: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026":"adc, adc2, in (input only), nopull, strap, uart0, led, and bus functions: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026","{n} l\xE1b egy sorban":"{n} pins in a row","k\xFCls\u0151 \xB7 {n} kivezet\xE9s":"external \xB7 {n} lead||external \xB7 {n} leads",n\u00E9v:"name",el\u0151tag:"prefix",kateg\u00F3ria:"category",szerel\u00E9s:"mounting","l\xE1bak (kifejez\xE9sek, ism\xE9tl\xE9s vagy extra mez\u0151k)":"pins (expressions, repeats or extra fields)",l\u00E1bcsoportok:"pin groups",param\u00E9terek:"parameters",l\u00E1bt\u00E1bla:"pin table","a test m\xE9rete":"the body size","saj\xE1t rajzelemek":"custom drawing elements",l\u00E1bfeliratok:"pin labels","a villamos modell r\xE9szletei":"details of the electrical model",vez\u00E9rl\u0151k:"controls",l\u00E1bak:"pins","\xDAj modul":"New module","Villamos modell":"Electrical model","(m\xE1solat)":"(copy)","Alkatr\xE9sz: {x}":"Part: {x}",\u00FAj:"new","jav\xEDtsd, miel\u0151tt az \u0171rlapra v\xE1ltasz.":"fix it before switching to the form.","Az \u0171rlapon legal\xE1bb egy, fix hely\u0171 l\xE1b kell (sz\xE1mmal megadott sor \xE9s oszlop).":"The form needs at least one pin at a fixed place (row and column given as numbers).","Nincs le\xEDr\xE1s.":"No description.","Adj hozz\xE1 l\xE1bakat: kattints az el\u0151n\xE9zetre, vagy haszn\xE1ld a l\xE1bsor-gener\xE1tort.":"Add pins: click on the preview, or use the pin row generator.",Alapadatok:"Basics",L\u00E1bak:"Pins","nincs l\xE1bhoz k\xF6tve.":"not connected to a pin.","A logik\xE1hoz kell egy t\xE1pbemenet szerep\u0171 l\xE1b.":"The logic needs a pin with the power input role.","A logik\xE1hoz kell egy f\xF6ld (GND) szerep\u0171 l\xE1b.":"The logic needs a pin with the ground (GND) role.",T\u00E1rol\u00F3:"Register","az \xE9rt\xE9k bemenete nincs bek\xF6tve.":"the value input is not connected.",Nyom\u00F3gomb:"Push button",Megjelen\u00E9s:"Appearance",El\u0151n\u00E9zet:"Preview","Az alkatr\xE9sz adatai":"Part data","Az alkatr\xE9sz probl\xE9m\xE1i":"Problems of the part","Szerkeszt\xE9si m\xF3d":"Editing mode","L\xE1bak: hely, n\xE9v, szerep, csoport, funkci\xF3":"Pins: position, name, role, group, function","M\u0171k\xF6d\xE9s: villamos modell, digit\xE1lis logika, vez\xE9rl\u0151 a szimul\xE1ci\xF3ban":"Behavior: electrical model, digital logic, control in the simulation","A le\xEDr\xE1s teljes JSON-form\xE1ja":"The full JSON form of the description",Elvet\u00E9s:"Discard","Elvet\xE9s: a nem mentett m\xF3dos\xEDt\xE1sok eldob\xE1sa, vissza a kiindul\xF3 \xE1llapotra":"Discard: drop the unsaved changes and go back to the starting state",Ment\u00E9s:"Save","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba (Ctrl+S)":"Save to your library (Ctrl+S)","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba, \xE9s a lerak\xE1s ind\xEDt\xE1sa a panelon (Ctrl+S)":"Save to your library and start placing it on the board (Ctrl+S)","saj\xE1t alkatr\xE9sz":"custom part","\xFAj, m\xE1solatb\xF3l":"new, from a copy","\xFAj alkatr\xE9sz":"new part","nem mentett m\xF3dos\xEDt\xE1sok":"unsaved changes","JSON-n\xE9zetben az alapadatok a le\xEDr\xE1sban szerkeszthet\u0151k.":"In JSON view the basics are edited in the description.","JSON-n\xE9zetben a megjelen\xE9s a le\xEDr\xE1sban szerkeszthet\u0151.":"In JSON view the appearance is edited in the description.","Az alkatr\xE9sz t\xF6rl\xE9se a saj\xE1t k\xF6nyvt\xE1rb\xF3l":"Delete the part from your library","Alkatr\xE9sz t\xF6rl\xE9se":"Delete part","A tervben m\xE1r lerakott p\xE9ld\xE1nyok megmaradnak (a terv saj\xE1t le\xEDr\xE1s\xE1val).":"Instances already placed in the design are kept (with the design's own description).","A le\xEDr\xE1s rendben, menthet\u0151.":"The description is fine and can be saved.",csoport:"group","Az azonos csoport\xFA l\xE1bak gy\xE1rilag \xF6ssze vannak k\xF6tve":"Pins in the same group are connected internally","pl. 3-5.5":"e.g. 3-5.5","Csak t\xE1pbemenetn\xE9l (vin) adhat\xF3 meg":"Only for a power input (vin)","t\xE1pfesz\xFClts\xE9g-tartom\xE1ny":"supply voltage range","pl. adc i2c0.sda":"e.g. adc i2c0.sda",k\u00E9pess\u00E9gek:"capabilities",buszfunkci\u00F3:"bus function","A buszfunkci\xF3, amire a l\xE1b v\xE1r":"The bus function the pin expects",El\u0151tag:"Prefix","A p\xE9ld\xE1nyok neve: el\u0151tag + sorsz\xE1m, pl. U1, LCD1":"Instance names: prefix + number, e.g. U1, LCD1",Kateg\u00F3ria:"Category","A panel mell\xE9 ker\xFCl; a l\xE1baihoz k\xE1bel (vezet\xE9k) k\xF6t be":"Goes next to the board; a cable (wire) connects its pins","K\xFCls\u0151 alkatr\xE9sz (k\xE1bellel bek\xF6tve)":"External part (connected by cable)",Marg\u00F3:"Margin",Kiterjeszt\u00E9s:"Extension",fent:"top",lent:"bottom",balra:"left",jobbra:"right","A test m\xE9rete a l\xE1bakon t\xFAl, lyukban (pl. egy kijelz\u0151panel nagyobb a l\xE1bsor\xE1n\xE1l).":"The body size beyond the pins, in holes (e.g. a display board is larger than its pin row).","Felirat a testen":"Text on the body","pl. TP4056":"e.g. TP4056",L\u00E1bnevek:"Pin names","a l\xE1bak alatt":"below the pins","a l\xE1bak felett":"above the pins","befel\xE9 (a test k\xF6zepe fel\xE9)":"inward (toward the body center)","kifel\xE9 (a test sz\xE9l\xE9n t\xFAl)":"outward (beyond the body edge)",nincsenek:"none","P\xE9ld\xE1nyn\xE9v ki\xEDr\xE1sa (pl. U1)":"Show the instance name (e.g. U1)","L\xE1bsor:":"Pin row:",l\u00E1bsz\u00E1m:"pin count","db,":"pcs,",ir\u00E1ny:"direction",v\u00EDzszintes:"horizontal",f\u00FCgg\u0151leges:"vertical","innen:":"from:","kezd\u0151 sor":"start row","kezd\u0151 oszlop":"start column","nevek vessz\u0151vel, pl. RST,CE,DC,DIN,CLK,VCC,BL,GND":"names separated by commas, e.g. RST,CE,DC,DIN,CLK,VCC,BL,GND","L\xE1bsor hozz\xE1ad\xE1sa":"Add pin row","A szerepet a n\xE9vb\u0151l tippeli (GND, VCC, VIN\u2026), ut\xE1na a t\xE1bl\xE1zatban \xE1ll\xEDthat\xF3.":"The role is guessed from the name (GND, VCC, VIN\u2026), then it can be set in the table.","Minden oszlop l\xE1tszik.":"All columns are shown.","A kijel\xF6lt l\xE1b tov\xE1bbi adatai (csoport, funkci\xF3, t\xE1p) a sora alatt.":"More data of the selected pin (group, function, supply) below its row.","Minden oszlop":"All columns","Azon.":"ID",Sor:"Row","Oszl.":"Col.",Szerep:"Role",Csoport:"Group","T\xE1pbemenetn\xE9l a megengedett fesz\xFClts\xE9g, pl. 2.7-3.6":"For a power input, the allowed voltage, e.g. 2.7-3.6","T\xE1p (V)":"Supply (V)","GPIO-n\xE1l a k\xE9pess\xE9gek ({x}); perif\xE9ri\xE1n\xE1l a buszfunkci\xF3, amire a l\xE1b v\xE1r":"For a GPIO, its capabilities ({x}); for a peripheral, the bus function the pin expects",Funkci\u00F3:"Function",azonos\u00EDt\u00F3:"ID",szerep:"role","L\xE1b t\xF6rl\xE9se":"Delete pin","Az els\u0151 l\xE1b lesz a lerak\xE1si pont (0:0); ment\xE9skor a t\xF6bbi ehhez igazodik.":"The first pin becomes the placement point (0:0); on saving the others are aligned to it.","Az \u0171rlap ezeket nem tudja megjelen\xEDteni:":"The form cannot show these:","Ha m\xE9gis \xE1tv\xE1ltasz, ezek elvesznek.":"If you switch anyway, they are lost.","V\xE1lt\xE1s az \u0171rlapra (elhagyja \u0151ket)":"Switch to the form (drops them)","Maradok a JSON-n\xE1l":"Stay in JSON","A le\xEDr\xE1s teljes JSON-form\xE1ja; az \u0171rlapon be\xE1ll\xEDtottak itt is megjelennek, \xE9s az itteni m\xF3dos\xEDt\xE1sok az \u0171rlapra v\xE1lt\xE1skor visszaker\xFClnek. Ha a le\xEDr\xE1s olyat tartalmaz, amit az \u0171rlap nem tud (kifejez\xE9sek, param\xE9terek, saj\xE1t rajzelemek), a v\xE1lt\xE1s el\u0151tt sz\xF3l. A mez\u0151k le\xEDr\xE1sa: {x}.":"The full JSON form of the description; what you set on the form appears here, and changes made here go back when you switch to the form. If the description has something the form cannot handle (expressions, parameters, custom drawing elements), you are told before switching. The fields are described in {x}.","Le\xEDr\xE1s JSON":"Description JSON","JSON alkalmaz\xE1sa":"Apply JSON","Kiindul\xE1s be\xE9p\xEDtettb\u0151l:":"Start from a built-in:","be\xE9p\xEDtett alkatr\xE9sz":"built-in part","El\u0151bb adj l\xE1bakat az alkatr\xE9szhez a L\xE1bak f\xFCl\xF6n.":"First add pins to the part on the Pins tab.",Kapcsol\u00E1s:"Circuit",Igazs\u00E1gt\u00E1bla:"Truth table","Logika n\xE9zete":"Logic view","T\xE1rol\xF3s (sorrendi) logik\xE1n\xE1l a t\xE1bl\xE1zat a t\xE1rol\xF3k pillanatnyi \xE9rt\xE9k\xE9t is bemenetnek veszi.":"With registers (sequential logic) the table also takes the registers' current value as an input.","Legfeljebb {max} bemenet f\xE9r a t\xE1bl\xE1zatba (most {n}); enn\xE9l t\xF6bbn\xE9l a Kapcsol\xE1s n\xE9zetet haszn\xE1ld.":"At most {max} inputs fit in the table (now {n}); for more, use the Circuit view.","Itt az enged\xE9lyez\xE9s 0: a kimenet nem hajt":"Enable is 0 here: the output does not drive","Kattints egy kimeneti cell\xE1ra: 0 \u2194 1. A kimenet el\u0151tti kapuk a t\xE1bl\xE1zatb\xF3l a legr\xF6videbb alakban (az \xC9S-ek VAGY-a) \xFAjra\xE9p\xFClnek; a {z} sorokban az enged\xE9lyez\xE9s 0, ott mindegy.":"Click an output cell: 0 \u2194 1. The gates before the output are rebuilt from the table in the shortest form (an OR of ANDs); in {z} rows enable is 0, so it does not matter.","A kijel\xF6lt elem vagy kimenet l\xE1bai kiemelve. Kattints egy l\xE1bra: a L\xE1bak f\xFCl\xF6n kijel\xF6li.":"The pins of the selected element or output are highlighted. Click a pin: it is selected on the Pins tab.","Kattints egy \xFCres lyukra: \xFAj l\xE1b oda. Kattints egy l\xE1bra: kijel\xF6l\xE9s a t\xE1bl\xE1zatban; h\xFAzva \xE1thelyezhet\u0151. A szaggatott keret a lerak\xE1si pont.":"Click an empty hole: a new pin there. Click a pin: selects it in the table; drag to move it. The dashed frame is the placement point.","JSON-n\xE9zetben az el\u0151n\xE9zet csak a l\xE1bakat mutatja (alap\xE9rt\xE9kekkel).":"In JSON view the preview shows only the pins (with default values).","Biztos? Kattints \xFAjra":"Sure? Click again","Biztos? {n} p\xE9ld\xE1ny is t\xF6rl\u0151dik":"Sure? {n} instance is deleted too||Sure? {n} instances are deleted too",Kapu:"Gate","Villamos elem":"Electrical element","Az alkatr\xE9sz egy l\xE1ba: logikai bemenet, \xE9s ide k\xF6tnek a villamos elemek is":"A pin of the part: a logic input, and electrical elements connect here too","Kimenet (l\xE1b)":"Output (pin)","Logikai kimenet: az ide k\xF6t\xF6tt jel hajtja a l\xE1bat":"Logic output: the signal connected here drives the pin",Kapuk:"Gates","{x} kapu":"{x} gate",Egy\u00E9b:"Other","Az \xF3rajel \xE9l\xE9n felveszi a D \xE9rt\xE9k\xE9t, egy\xE9bk\xE9nt megtartja":"Takes the value of D on the clock edge, otherwise holds it","\xC1lland\xF3 0":"Constant 0","Mindig 0":"Always 0","\xC1lland\xF3 1":"Constant 1","Mindig 1":"Always 1","Villamos elemek":"Electrical elements","Kivezet\xE9sei l\xE1bakhoz k\xF6thet\u0151k":"Its leads connect to pins","Szimul\xE1ci\xF3ban lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti":"In the simulation, pressing it connects its two pins","lefut\xF3 \xE9l":"falling edge","felfut\xF3 \xE9l":"rising edge","nem k\xF6telez\u0151":"optional",Ki:"Out","azon.":"ID","Bemenetek sz\xE1ma":"Number of inputs","Erre a n\xE9vre a kifejez\xE9sek is hivatkozhatnak":"Expressions can refer to this name",\u00D3rajel:"Clock","A {r} (0-ra) \xE9s a {s} (1-re) bemenet nem k\xF6telez\u0151; 1 szintn\xE9l azonnal hat.":"The {r} (to 0) and {s} (to 1) inputs are optional; they act at once at level 1.",be\u00E1ll\u00EDt\u00E1s:"set",Elem:"Element","ESP32-szer\u0171 lap: a buszfunkci\xF3 b\xE1rmely GPIO-ra kioszthat\xF3; a k\xE9pess\xE9gek ekkor az alap\xE9rtelmezett l\xE1bak":"ESP32-like board: a bus function can be assigned to any GPIO; the capabilities are then the default pins","szabadon kioszthat\xF3 buszok":"freely assignable buses","A kivezet\xE9seit egy-egy {x} elemhez k\xF6sd (a l\xE1b kimeneti pontj\xE1t\xF3l h\xFAzva).":"Connect each lead to a {x} element (dragging from the pin's output point).","Szimul\xE1ci\xF3 k\xF6zben a gombot lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti. Mindk\xE9t kivezet\xE9s\xE9t egy-egy {x} elemhez k\xF6sd.":"During the simulation, pressing the button connects its two pins. Connect both leads to a {x} element each.","Push-pull: 1-n\xE9l a t\xE1p fel\xE9, 0-n\xE1l a f\xF6ld fel\xE9 hajt. Nyitott drain: csak a f\xF6ld fel\xE9 (felh\xFAz\xF3 ellen\xE1ll\xE1s kell).":"Push-pull: drives toward the supply at 1, toward ground at 0. Open drain: only toward ground (needs a pull-up resistor).","nyitott drain":"open drain","\xC9rt\xE9k kifejez\xE9ssel":"Value as an expression","pl. !(A & B)":"e.g. !(A & B)","Jelek: ! NEM, & \xC9S, | VAGY, ^ KIZ\xC1R\xD3 VAGY, z\xE1r\xF3jel, 0/1. Enterre a diagram ebb\u0151l \xFAjra\xE9p\xFCl.":"Symbols: ! NOT, & AND, | OR, ^ XOR, parentheses, 0/1. On Enter the diagram is rebuilt from it.",Enged\u00E9lyez\u00E9s:"Enable","\xFCres = mindig hajt; pl. !OE":"empty = always drives; e.g. !OE","A kifejez\xE9st \xE1t\xEDrva (Enter) a kimenet el\u0151tti kapuk ebb\u0151l \xFAjra\xE9p\xFClnek.":"Editing the expression (Enter) rebuilds the gates before the output from it.","Elem t\xF6rl\xE9se":"Delete element","Bels\u0151 kapcsol\xE1s":"Internal circuit","+ Elem":"+ Element","A kijel\xF6lt elem vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected element or edge (Delete)","Az eg\xE9sz kapcsol\xE1s l\xE1tsz\xF3djon":"Show the whole circuit","Bels\u0151 kapcsol\xE1s v\xE1szna":"Internal circuit canvas","\xDCres. A {x} men\xFCb\u0151l rakj le bemenetet, kaput \xE9s kimenetet, majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"Empty. From the {x} menu place an input, a gate and an output, then drag an edge from the output point to the input point.",Ellen\u00E1ll\u00E1s:"Resistor","1. v\xE9g":"end 1","2. v\xE9g":"end 2",Di\u00F3da:"Diode","Nyit\xF3fesz.":"Forward V",Fesz\u00FClts\u00E9gforr\u00E1s:"Voltage source",Fesz\u00FClts\u00E9g:"Voltage","N-MOSFET":"N-MOSFET",K\u00FCsz\u00F6b:"Threshold","Nyitott ell.":"On resistance",Kondenz\u00E1tor:"Capacitor","1. v\xE9g (+)":"end 1 (+)",Kapacit\u00E1s:"Capacitance","N\xE9vleges fesz.":"Rated voltage","DC motor":"DC motor","\xDCzemi ell.":"Operating resistance","NPN tranzisztor":"NPN transistor","Er\u0151s\xEDt\xE9s (\u03B2)":"Gain (\u03B2)","Vez\xE9rl\u0151lap (MCU)":"Controller board (MCU)",GND:"GND","t\xE1p be":"power in","USB 5V (ha van)":"USB 5V (if any)","Stab. min.":"Reg. min.","T\xE1p max.":"Supply max.","GPIO max.":"GPIO max.","NEM-\xC9S":"NAND","NEM-VAGY":"NOR",ER\u0150S\u00CDT\u0150:"BUFFER",\u00F3rajel:"clock",enged\u00E9lyez\u00E9s:"enable","1. l\xE1b":"pin 1","2. l\xE1b":"pin 2","Ezt nem lehet \xF6sszek\xF6tni.":"These cannot be connected.","Ennek az elemnek nincs kimenete.":"This element has no output.","Villamos elem \xE9s nyom\xF3gomb kivezet\xE9se csak l\xE1bhoz k\xF6thet\u0151.":"Leads of an electrical element or a push button connect only to a pin.","Bemenet {x}":"Input {x}","\xC1lland\xF3 {x}":"Constant {x}","T\xE1rol\xF3 {x}":"Register {x}","Kimenet {x}":"Output {x}","Bemenet: nincs l\xE1b kiv\xE1lasztva.":"Input: no pin selected.","Kapukb\xF3l \xE1ll\xF3 k\xF6r: a jel \xF6nmag\xE1ba fut vissza (t\xE1rol\xF3val szak\xEDthat\xF3 meg).":"A loop of gates: the signal feeds back into itself (a register can break it).","{g} kapu: a(z) {i}. bemenete nincs bek\xF6tve.":"{g} gate: input {i} is not connected.","Nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {x}":"No such (or ambiguous) pin or register: {x}","Nyom\xF3gomb: mindk\xE9t l\xE1b\xE1t egy-egy l\xE1bhoz kell k\xF6tni.":"Push button: both its pins must be connected to a pin each.","Kattints: ugr\xE1s a mez\u0151h\xF6z":"Click: jump to the field","{a}: teljesen a panelon k\xEDv\xFCl esik":"{a}: lies completely off the board","{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva":"{a}: connector {b} has fewer pins than the cable ({c}), so it is not plugged in","{a}: a {b} l\xE1b sehova sincs k\xF6tve":"{a}: the {b} pin is not connected anywhere","\xDCtk\xF6z\xE9s a {a} lyukban: {b}":"Collision in hole {a}: {b}","{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik":"{a} is in a drilled hole ({b}), there is no copper under it: the pin connects nowhere","Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z":"Wire end in a drilled hole ({a}:{b}): no copper under it","H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})":"Bridge at a drilled hole ({a}:{b}\u2013{c}:{d})","{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt":"{a}: sides A and B are on the same net, the button is shorted","{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve":"{a}: the battery's + and \u2212 terminals are connected","{a}: {b} \xF6ssze van k\xF6tve":"{a}: {b} are connected",\u00E9s:"and"," (egy szekci\xF3ba esnek)":" (they fall in one section)","Z\xE1rlat: GND \u2013 {a}":"Short circuit: GND \u2013 {a}","Z\xE1rlat: 3V3 \u2013 {a}":"Short circuit: 3V3 \u2013 {a}","{a} k\xF6z\xF6s neten van":"{a} are on the same net","{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve":"{a} connected directly to {b}","\xD6ssze\xE9r\u0151 jelek: {a}":"Touching signals: {a}","{a} \xE9s {b} teste \xE1tfed":"The bodies of {a} and {b} overlap","{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.":"{a}: in {b} sections several pins share a section. The pin row cannot run along the sections; rotate it by 90\xB0.","Z\xE1rlat: {a} egy szekci\xF3ba esik":"Short circuit: {a} fall in one section","Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.":"A wire end shares hole {a} with a part pin, which is not stable enough.","Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).":"Move it to hole {a} (same section).","A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.":"The section has no free hole: bridge over to a neighboring section and continue from there.","{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban":"{a} wire ends in the same hole {b}","Kapcsolat nincs bek\xF6tve: {a}":"Connection not routed: {a}","{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)":"{a}: can only be routed with a wire (no free bridge path)","{a}: egyik oldala sincs GPIO-ra k\xF6tve":"{a}: neither side is connected to a GPIO","{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.":"{a}: the motor is connected directly to a GPIO. It needs a transistor or MOSFET to drive it.","{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.":"{a}: no flyback diode on the motor. Put a diode (e.g. 1N5817) across the motor terminals, cathode toward +, otherwise the voltage spike at switch-off can destroy the transistor.","{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g":"{a}.{b}: no supply voltage","(a {a} nincs bek\xF6tve)":"({a} is not connected)","{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l":"{a}.{b}: {c} V, more than the allowed {d} V","{a}.{b}: csak {c} V, legal\xE1bb {d} V kell":"{a}.{b}: only {c} V, at least {d} V is needed","{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}":"{a}.{b} ({c}) \u2192 {d}: this pin is not {e}, so hardware {f} cannot be used on it, only software. Suitable pins: {g}","{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.":"{a}: its {b} pins ended up on different buses ({c}). Connect one peripheral to one bus.","{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).":"{a} are on the same PWM slice ({b}), they can only run at the same frequency (now: {c}).","{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}":"{a}: analog signal on {b}, but it has no ADC. Suitable: {c}","{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}":"{a}: ADC2 channel, it does not measure while WiFi is on. For an analog signal choose an ADC1 pin instead: {b}","{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})":"{a}: set it to ADC mode for analog measurement (now: {b})","Z\xE1rlat a VBUS-on ({a} A)":"Short circuit on VBUS ({a} A)","3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)":"3V3 overloaded or shorted ({a} mA)","{a}: {b} mA, kimenet z\xE1rlatban":"{a}: {b} mA, output shorted","{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)":"{a}: {b} mA, too much (recommended max. ~{c} mA)","{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.":"{a}: floats while the button is not pressed{b}. Add an external pull-up resistor (e.g. 10 k\u03A9 to 3V3), or choose another GPIO.","(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)":"(this pin has no internal pull-up)","{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V":"{a}: the power input ({b}) has only {c} V, the regulator needs at least {d} V, so there is no 3.3 V","{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell":"{a}: {b} mA, it needs a series resistor","{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A, more than the allowed {c}A","{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).":"{a}: floating input: {b}. Do not leave a CMOS input open: connect it to a signal, or tie an unused one to GND (or VCC).","{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}":"{a}.{b}: {c} mA output current, more than the allowed {d}A{e}","(k\xE9t kimenet egym\xE1s ellen?)":"(two outputs fighting?)","{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l":"{a}: {b} V, more than the rated {c} V","{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).":"{a}: no valid servo signal. Connect the signal pin to a GPIO in PWM mode: 50 Hz, 2.5\u201312.5 % duty (7.5 % = center).","{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the base floats. Add a pull-down resistor between B and E (e.g. 10 k\u03A9), or connect it to an output.","{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A collector current, more than the allowed {c}A","{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.":"{a}: not saturated (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). As a switch it needs a smaller base resistor: the base current (now {d}A) should be about a tenth of the desired collector current.","{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.":"{a}: connected in reverse ({b} V). The electrolytic capacitor's + pin goes to the higher voltage.","{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the gate floats. Add a pull-down resistor between G and S (e.g. 100 k\u03A9), or connect it to an output.","{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)":"{a}: short circuit at the power input ({b} A)","{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.":"{a}: the USB of {b} charges the battery directly through the power input ({c}) ({d} A). A Schottky diode is needed between the battery and the power input.","{a}: {b} A t\xF6lt\u0151\xE1ram, sok":"{a}: {b} A charging current, too much","{a}: z\xE1rlat ({b} A)":"{a}: short circuit ({b} A)","{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.":"{a}: the USB charges the battery directly ({b} A). A Schottky diode is needed in front of VSYS.","A l\xE1b nincs GPIO-ra k\xF6tve":"The pin is not connected to a GPIO","Nincs kiv\xE1lasztva l\xE1b":"No pin selected","Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja":"Another block uses this GPIO too","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"strapping pin: its level matters at power-up; at the wrong level the board does not start or enters download mode. If you can, choose another GPIO.","a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the serial port (USB-serial converter): it can interfere with uploading and serial output. If you can, choose another GPIO.","a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the built-in USB. If you can, choose another GPIO.","a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.":"the board's built-in LED is on this pin too.","Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek.":"No controller board in the design; pin numbers are unknown.","{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.":"{a}: its description has no Arduino target; made with the generic Arduino functions.","{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).":"{a}: used by several blocks ({b}, {c}).","0\u20133,3 V-os tartom\xE1ny":"0\u20133.3 V range","anal\xF3g bemenet: {a} \u2192 {b}":"analog input: {a} \u2192 {b}",ut\u00E1nfut\u00E1s:"off delay","felfut\xF3 \xE9l: impulzus":"rising edge: pulse","bekapcsol\xE1si k\xE9sleltet\xE9s":"on delay","indul\xE1skor nem l\xE9p":"does not step at start","felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor":"rising edge: next row","Proofboard \u2013 gener\xE1lt program":"Proofboard \u2013 generated program","\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket.":"Every tick (20 ms) it reads the inputs, computes the blocks and sets the outputs.","blokkok \xE9rt\xE9kei \xE9s \xE1llapota":"block values and state",Lap:"Board",alaplapkezel\u0151:"Boards Manager","A le\xEDr\xE1s nem objektum.":"The description is not an object.","Hi\xE1nyzik a n\xE9v.":"The name is missing.","Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).":"The prefix is 1\u20136 characters and starts with a letter (e.g. U, MOD, J).","Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.":"The short footprint description is missing.","Legal\xE1bb egy l\xE1b kell.":"At least one pin is needed.","\xC9rv\xE9nytelen param\xE9terkulcs.":"Invalid parameter key.","K\xE9tszer szerepel: {a}":"Appears twice: {a}","Ismeretlen param\xE9tert\xEDpus: {a}":"Unknown parameter type: {a}","A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.":"The select type needs options.","Hi\xE1nyzik az alap\xE9rt\xE9k.":"The default value is missing.","A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ":"The pins cannot be evaluated: ","Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja.":"The pin ID is missing.","A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres.":"With default values the pin list is empty.","{a}: a helye nem sz\xE1m.":"{a}: its position is not a number.","{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.":"{a}: a pin can only be at a whole hole position.","K\xE9tszer szerepel a l\xE1b: {a}":"The pin appears twice: {a}","{a} \xE9s {b} ugyanabban a lyukban ({c}).":"{a} and {b} are in the same hole ({c}).","{a}: {b} nem sz\xE1m.":"{a}: {b} is not a number.","{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.":"{a}: the minimum voltage cannot be higher than the maximum.","{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})":"{a}: unknown bus function: {b} (allowed: {c})","{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.":"{a}: a voltage range only matters for a power input (vin).","Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt.":"There is a power input but no GND pin: the supply voltage is measured against the board's ground.","Egy csoportban legal\xE1bb k\xE9t l\xE1b kell.":"A group needs at least two pins.","Nincs ilyen l\xE1b: {a}":"No such pin: {a}","{a} t\xF6bb csoportban is szerepel.":"{a} appears in several groups.","Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.":"The pin of lead {a} is missing.","Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b.":"Two leads of an element cannot be the same pin.","nem sz\xE1m":"not a number","{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.":"{a}: not a valid value.","T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).":"Register name: an identifier starting with a letter is needed (now: \u201C{a}\u201D).","K\xE9tszer szerepel a t\xE1rol\xF3: {a}":"The register appears twice: {a}","{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.":"{a}: a register name cannot be a pin name.","{a}: hi\xE1nyzik.":"{a}: missing.","{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}":"{a}: no such pin or register: {b}","{a}|{b} \xF3rajele":"{a}|clock of {b}","{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)":"{a}|next value of {b} (D)","{a}|{b} t\xF6rl\xE9se":"{a}|reset of {b}","{a}|{b} be\xE1ll\xEDt\xE1sa":"{a}|set of {b}","{a}: az \xE9l rise vagy fall lehet.":"{a}: the edge can be rise or fall.","A logik\xE1hoz legal\xE1bb egy kimenet kell.":"The logic needs at least one output.","Nincs ilyen kimeneti l\xE1b: {a}":"No such output pin: {a}","{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.":"{a}: two expressions drive the same output.","{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.":"{a}: a power or GND pin cannot be an output.",kifejez\u00E9s:"expression","{a}: hi\xE1nyzik a kifejez\xE9s.":"{a}: the expression is missing.","{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}":"{a} {b}: no such (or ambiguous) pin or register: {c}","{a}: a kimenet t\xEDpusa pp vagy od lehet.":"{a}: the output type can be pp or od.","A csatlakoz\xF3 le\xEDr\xE1sa objektum.":"The connector description is an object.","A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.":"The connector's pin count needs an integer (int) parameter.","A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.":"The connector's pin names need a parameter of type names.","A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres.":"The connector's pin list cannot be empty.","A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}":"The connector has no such pin: {a}","A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}":"The slider has no such parameter: {a}","A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.":"The slider's parameter ({a}) must be a number with min and max.","Ismeretlen vez\xE9rl\u0151.":"Unknown control.","Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.":"You must give which pins close together.","Ismeretlen szerel\xE9s: {a} (board vagy off).":"Unknown mounting: {a} (board or off).","Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.":"No body (body layer): the part shows only as pins.","Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel":"The closing parenthesis is missing","Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n":"A term is missing at the end of the expression","Itt nem \xE1llhat: \u201E{x}\u201D":"Not allowed here: \u201C{x}\u201D","\xDCres kifejez\xE9s":"Empty expression","F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D":"Extra part: \u201C{x}\u201D",'Ez nem Proofboard alkatr\xE9szk\xF6nyvt\xE1r (hi\xE1nyzik a "format": "proofboard-parts").':'This is not a Proofboard part library ("format": "proofboard-parts" is missing).',"Raspberry Pi Pico W":"Raspberry Pi Pico W","2\xD720 l\xE1b, sort\xE1v 6":"2\xD720 pins, row spacing 6","Sort\xE1v (oszt\xE1s)":"Row spacing (pitch)","A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat.":"The distance of the two pin rows in holes (0 \u2192 {span}). The datasheet says 17.78 mm = 7 pitches, but with pin headers, a socket or an adapter board it can differ (e.g. 6 or 8). Measure yours with a ruler.","ESP32 DevKit V1 (DOIT, 30 l\xE1b)":"ESP32 DevKit V1 (DOIT, 30 pins)","2\xD715 l\xE1b, sort\xE1v 10":"2\xD715 pins, row spacing 10","\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 25.4 mm = 10 pitches (the board is 28 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.":"ESP32-WROOM-32 module with a USB-serial converter. Power: USB (to VIN through a diode) or VIN 5\u201312 V (AMS1117 regulator, needs at least about 4.2 V), or 3.3 V directly on the 3V3 pin. GPIO34\u201339 are input only, without internal pull-up; the ADC2 pins do not measure while WiFi is on.","ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin (MTDI): if it is high at power-up, the module assumes a 1.8 V flash and does not start. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin (MTDO): it must be high at power-up (internal pull-up). Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin, and the built-in blue LED is on it too: for uploading it must be low or floating at power-up. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.":"strapping pin: it must be high at power-up (internal pull-up). Do not pull it low.","TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"TX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"RX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","ESP32-C3 SuperMini":"ESP32-C3 SuperMini","2\xD78 l\xE1b, sort\xE1v 6":"2\xD78 pins, row spacing 6","\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 15.24 mm = 6 pitches (the board is 18 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).":"ESP32-C3 (RISC-V, WiFi, BLE), native USB-C. Power: USB or the 5V pin (about 3.5\u20136 V, low-dropout regulator), or 3.3 V on the 3V3 pin. The 5V pin connects directly to USB, with no diode: do not connect a battery to it while USB is plugged in. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin: it must be high at power-up. Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.":"strapping pin, and the built-in blue LED is on it too (lit when low): it must be high at power-up. Do not pull it low.","a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.":"the board's BOOT button is on it too (pulls to ground when pressed), and it is a strapping pin: if it is low at power-up, the board enters download mode. Fine for a button if it is not pressed at start.","RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"RX (UART0): used by the serial port when serial output does not go over native USB.","TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"TX (UART0): used by the serial port when serial output does not go over native USB.","Nyom\xF3gomb 12 mm":"Push button 12 mm","A 0:0, 0:5 \xB7 B 2:0, 2:5":"A 0:0, 0:5 \xB7 B 2:0, 2:5","0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:4 (adjustable)",\u03A9:"\u03A9","2. l\xE1b helye":"Pin 2 position","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat.":"Relative to the first pin (before rotation). Default: 0:4. With a larger distance the lead itself can act as a jumper.","\xC1tk\xF6t\u0151 huzal (0 \u03A9)":"Jumper wire (0 \u03A9)","0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:2 (adjustable)","2. v\xE9g helye":"End 2 position","Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat.":"A straight wire jumper on the component side: both ends are one net.","LED 3 mm":"LED 3 mm","an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:1 (adjustable)","{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V":"{color.label}, forward voltage {color.vf} V",lila:"purple","Kat\xF3d helye":"Cathode position","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the anode (before rotation). Default: 0:1.","an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:4 (adjustable)","Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van.":"Conducts only from anode to cathode, above a forward voltage of {kind.vf} V. The band is on the cathode side.","1N5817 Schottky (0,3 V, 1 A)":"1N5817 Schottky (0.3 V, 1 A)","1N4148 jeldi\xF3da (0,7 V, 0,2 A)":"1N4148 signal diode (0.7 V, 0.2 A)","1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)":"1N4007 rectifier (0.7 V, 1 A)","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4.":"Relative to the anode (before rotation). Default: 0:4.","N-MOSFET (2N7000)":"N-MOSFET (2N7000)","S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)":"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)","K\xFCsz\xF6b (Vth)":"Threshold (Vth)","A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb.":"D\u2013S conducts when the gate is higher than this relative to the source.",V:"V","Nyitott ellen\xE1ll\xE1s":"On resistance","Max. \xE1ram":"Max. current","Kondenz\xE1tor (ker\xE1mia)":"Capacitor (ceramic)","0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:1 (adjustable)","Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja.":"An open circuit at DC. The simulation shows the voltage and the time constant (\u03C4 = R\xB7C).",F:"F","N\xE9vleges fesz\xFClts\xE9g":"Rated voltage","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the first pin (before rotation). Default: 0:1.","Elektrolit kondenz\xE1tor":"Electrolytic capacitor","+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)":"+ 0:0 \xB7 \u2212 0:1 (adjustable)","Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van.":"Polarized: the + pin goes to the higher voltage. The band is on the \u2212 pin side.","\u2212 l\xE1b helye":"\u2212 pin position","A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the + pin (before rotation). Default: 0:1.","TO-92, l\xE1bsorrend t\xEDpus szerint":"TO-92, pin order by type","A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2.":"C\u2013E conducts when current flows into the base (Ube \u2248 0.65 V). Ic is at most \u03B2\xB7Ib ({kind.beta}\xB7Ib); as a switch it needs about ten times Ic/\u03B2 of base current.","BC547 (C-B-E, 100 mA)":"BC547 (C-B-E, 100 mA)","2N3904 (E-B-C, 200 mA)":"2N3904 (E-B-C, 200 mA)","2N2222A (E-B-C, 600 mA)":"2N2222A (E-B-C, 600 mA)","74HC00 n\xE9gy NAND kapu":"74HC00 quad NAND gate","DIP-14 \xB7 4\xD7 NAND":"DIP-14 \xB7 4\xD7 NAND","N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re.":"Four two-input NAND gates (nY = NOT(nA AND nB)). Supply 2\u20136 V; tie unused inputs to GND.","74HC74 kett\u0151s D t\xE1rol\xF3":"74HC74 dual D flip-flop","DIP-14 \xB7 2\xD7 D flip-flop":"DIP-14 \xB7 2\xD7 D flip-flop","K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.":"Two D flip-flops: on the rising edge of CLK, Q takes the value of D. CLR = 0 clears it (Q = 0), PRE = 0 sets it (Q = 1), regardless of the clock; in use, tie both to VCC. Qn is the inverse of Q. Supply 2\u20136 V.","74HC595 l\xE9ptet\u0151regiszter":"74HC595 shift register","DIP-16 \xB7 8 bit SIPO":"DIP-16 \xB7 8-bit SIPO","8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.":"8-bit serial-to-parallel converter: on the rising edge of SRCLK the SER bit shifts in and the rest move one step; on the rising edge of RCLK the 8 bits go to outputs QA\u2026QH. OE = 0 enables the outputs, SRCLR = 0 clears the shift register. QHs (QH') can go to the SER input of the next 595. Supply 2\u20136 V.","74HC139 kett\u0151s 2\u21924 dek\xF3der":"74HC139 dual 2\u21924 decoder","DIP-16 \xB7 2\xD7 (2\u21924)":"DIP-16 \xB7 2\xD7 (2\u21924)","K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V.":"Two 2\u21924 decoders: the Y output selected by the binary number A1 A0 goes 0 (active low), the others 1; if E = 1, all are 1. Supply 2\u20136 V.","L\xE9ptet\u0151motor (28BYJ-48)":"Stepper motor (28BYJ-48)",K\u00FCls\u0151:"External","k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)":"external \xB7 5-wire cable (A B C D, common +)",Tekercsellen\u00E1ll\u00E1s:"Coil resistance","5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA).":"5 V unipolar stepper motor with 64:1 gearing: in half-step mode, 4096 steps make one turn of the output shaft. A driver (e.g. ULN2003) switches the coils to ground; the common wire (red) is +5 V. The simulation steps it from the coil excitation order (A, AB, B, BC, C, CD, D, DA).","ULN2003 l\xE9ptet\u0151motor-meghajt\xF3":"ULN2003 stepper driver","IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3":"IN1\u2013IN4 \xB7 power \xB7 motor connector","N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s.":"Four Darlington switches: when input INn is high (\u2265 about 2.2 V, the Pico's 3.3 V is enough), the matching output (A\u2013D) switches to ground and current flows from the common + through the motor coil. VCC (+) is the motor supply, 5 V; COM is shared with it.","DC motor (130-as)":"DC motor (type 130)","k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s":"external \xB7 + and \u2212 leads","A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell.":"The motor sits next to the board; connect its leads to the board with wires (a cable). An inductive load: it cannot be driven directly from a GPIO, it needs a transistor or MOSFET and a flyback diode.","\xDCzemi ellen\xE1ll\xE1s":"Operating resistance","Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos.":"Simplified model: current while running \u2248 U / R. Speed is proportional to the voltage.","Szerv\xF3 (SG90)":"Servo (SG90)","k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel":"external \xB7 GND, V+, signal cable","\xC1ramfelv\xE9tel (ell.)":"Current draw (resistance)","A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V.":"The servo is driven by PWM on its signal wire: 50 Hz, 0.5\u20132.5 ms pulse \u2192 0\u2013180\xB0. Set the Pico GPIO to PWM mode (50 Hz, 7.5 % = center). Supply: 4.8\u20136 V.","T\xFCskesor 1\xD7N":"Pin header 1\xD7N",Csatlakoz\u00F3:"Connector","N l\xE1b egy sorban \xB7 csatlakoz\xF3":"N pins in a row \xB7 connector",L\u00E1bsz\u00E1m:"Pin count","Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja.":"Comma-separated, in order (e.g. GND,VCC,SDA,SCL). As an external part's connector it gets the part's pin names.","Akku csatlakoz\xF3":"Battery connector","TP4056 t\xF6lt\u0151modul":"TP4056 charger module","IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)":"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (approximate)","Saj\xE1t USB":"Own USB","Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel.":"Simplified model: it charges from the input (5 V) toward B+; B+ and OUT+ are shared. The pins are approximate positions of the module's pads; mount it with pin headers.","nincs bedugva":"not plugged in","5 V bedugva":"5 V plugged in","Nokia 5110 kijelz\u0151":"Nokia 5110 display","8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V":"8 pins in a row \xB7 VCC 2.7\u20133.3 V",'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)':'OLED display 0.96" (SSD1306, I\xB2C)',"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban":"GND \xB7 VCC \xB7 SCL \xB7 SDA in a row","128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki.":"128\xD764 dot OLED display on the I\xB2C bus (default address 0x3C). The module has pull-up resistors on the SCL and SDA lines. Supply 3.3\u20135 V; the simulation does not draw the display content.","Joystick (KY-023)":"Joystick (KY-023)","GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban":"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW in a row","X \xE1ll\xE1s":"X position","\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3.":"\u2212100 % left, +100 % right. It can also be set with a slider during the simulation.","Y \xE1ll\xE1s":"Y position","\u2212100 % le, +100 % fel.":"\u2212100 % down, +100 % up.",X:"X",Y:"Y","Csere: {x}":"Swap: {x}","{n} kapcsolat elveszett":"{n} connection lost||{n} connections lost","nem f\xE9r el a panelon, mozgasd":"does not fit on the board, move it","Mentve, {n} saj\xE1t alkatr\xE9sszel egy\xFCtt.":"Saved, together with {n} custom part.||Saved, together with {n} custom parts.","Mentve.":"Saved.","Mentve: {x}":"Saved: {x}","Panel: {c}\xD7{r} lyuk, {s}.":"Board: {c}\xD7{r} holes, {s}.","LED akkur\xF3l \u2013 k\xE9zi hidakkal":"LED from a battery \u2013 manual bridges","Akku, el\u0151t\xE9t-ellen\xE1ll\xE1s \xE9s LED, forraszt\xF3hidakkal bek\xF6tve.":"Battery, series resistor and LED, wired with solder bridges.","el\u0151t\xE9t-ellen\xE1ll\xE1s a LED-hez":"a series resistor for the LED","forraszt\xF3h\xEDd k\xE9zzel":"solder bridges by hand","a szimul\xE1ci\xF3 fesz\xFClts\xE9gei":"voltages in the simulation","K\xE9zi hidak\nA r\xE9z 3 lyukas szakaszokb\xF3l \xE1ll; a hidak (H\xEDd eszk\xF6z, B) k\xF6tik \xF6ssze a szomsz\xE9dos szakaszokat.\nAz \xE1ramk\xF6r: akku + \u2192 R1 \u2192 LED1 \u2192 akku \u2212.":`Manual bridges
72
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let i=a[1];if(t===a[0]){s(a);continue}if(e.external){let c=e.external.registry.get(a[0])?.id;if(t!==a[0]&&c){s(a);continue}}if(e.metadataRegistry.get(a[0])?.id){s(a);continue}if(i.cycle){s(a);continue}i.count>1&&e.reused==="ref"&&s(a)}e.external&&(e.sharedDefsExtractedFor=e.external)}function $g(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let r=[];for(let n of t){if(!n||typeof n!="object")return;$g(n);let o=Object.keys(n);if(o.length!==1||o[0]!=="type")return;let s=n.type;for(let a of Array.isArray(s)?s:[s]){if(typeof a!="string")return;r.includes(a)||r.push(a)}}delete e.anyOf,e.type=r.length===1?r[0]:r}var Eg=new Set(["type","properties","required","additionalProperties"]),Sg=["oneOf","anyOf"];function Pg(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!="object"||t===null?null:Object.keys(t).length?t:null}function Rc(e){let t=[];for(let s of e){if(typeof s!="object"||s.type!=="object")return null;for(let a in s)if(!Eg.has(a))return null;t.push(s)}let r={},n=new Set;for(let s of t){for(let a in s.properties){if(Object.prototype.hasOwnProperty.call(r,a))continue;let i=[];for(let c of t){let u=c.properties?.[a]??Pg(c);u!=null&&(i.some(d=>JSON.stringify(d)===JSON.stringify(u))||i.push(u))}let l=i.length===1?i[0]:Rc(i)??{allOf:i};qt(r,a,l)}for(let a of s.required??[])n.add(a)}let o={type:"object",properties:r};if(n.size&&(o.required=[...n]),t.every(s=>s.additionalProperties===!1))o.additionalProperties=!1;else{let s=[];for(let a of t){let i=Pg(a);i&&!s.some(l=>JSON.stringify(l)===JSON.stringify(i))&&s.push(i)}s.length===1?o.additionalProperties=s[0]:s.length>1&&(o.additionalProperties={allOf:s})}return o}function dx(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let o of Eg)if(o in e)return;let r=t.filter(o=>Sg.some(s=>Array.isArray(o[s]))),n=null;if(!r.length)n=Rc(t);else{let o=r[0],s=Sg.find(l=>Array.isArray(o[l]));if(Object.keys(o).length!==1)return;let a=t.filter(l=>l!==o),i=o[s].map(l=>Rc([...a,l]));if(i.some(l=>!l))return;n={[s]:i}}n&&(delete e.allOf,ts(e,n))}function Dc(e,t){let r=e.seen.get(t);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let l=e.seen.get(i);if(l.ref===null)return;let c=l.def??l.schema,u={...c},d=l.ref;if(l.ref=null,d){n(d);let m=e.seen.get(d),b=m.schema;if(b.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(b)):ts(c,b),ts(c,u),i._zod.parent===d)for(let h in c)h==="$ref"||h==="allOf"||h in u||delete c[h];if(b.$ref&&m.def)for(let h in c)h==="$ref"||h==="allOf"||h in m.def&&JSON.stringify(c[h])===JSON.stringify(m.def[h])&&delete c[h]}let p=i._zod.parent;if(p&&p!==d){n(p);let m=e.seen.get(p);if(m?.schema.$ref&&(c.$ref=m.schema.$ref,m.def))for(let b in c)b==="$ref"||b==="allOf"||b in m.def&&JSON.stringify(c[b])===JSON.stringify(m.def[b])&&delete c[b]}e.override({zodSchema:i,jsonSchema:c,path:l.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let i of[...e.seen.entries()].reverse())n(i[0]);if(e.target!=="openapi-3.0")for(let i of e.seen.entries())$g(i[1].def??i[1].schema);for(let i of e.deferred)i();if(e.intersections.length){let i=new Map;for(let l of e.seen.values())for(let c of[l.schema,l.def]){let u=c?.allOf;if(!Array.isArray(u))continue;let d=i.get(u);d?d.push(c):i.set(u,[c])}for(let l of e.intersections)for(let c of i.get(l)??[])dx(c)}}let o={};if(e.target==="draft-2020-12"?o.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?o.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?o.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let i=e.external.registry.get(t)?.id;if(!i)throw new Error("Schema is missing an `id` property");o.$id=e.external.uri(i)}ts(o,r.defId?r.schema:r.def??r.schema);let s=e.metadataRegistry.get(t)?.id;s!==void 0&&o.id===s&&delete o.id;let a=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let i of e.seen.entries()){let l=i[1];l.def&&l.defId&&(l.def.id===l.defId&&delete l.def.id,qt(a,l.defId,l.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(a).length>0&&(e.target==="draft-2020-12"?o.$defs=a:o.definitions=a);try{let i=JSON.parse(JSON.stringify(o));return Object.defineProperty(i,"~standard",{value:{...t["~standard"],jsonSchema:{input:rs(t,"input",e.processors),output:rs(t,"output",e.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function Ct(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let n=e._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return Ct(n.element,r);if(n.type==="set")return Ct(n.valueType,r);if(n.type==="lazy")return Ct(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault"||n.type==="catch")return Ct(n.innerType,r);if(n.type==="intersection")return Ct(n.left,r)||Ct(n.right,r);if(n.type==="record"||n.type==="map")return Ct(n.keyType,r)||Ct(n.valueType,r);if(n.type==="pipe")return e._zod.traits.has("$ZodCodec")?!0:Ct(n.in,r)||Ct(n.out,r);if(n.type==="object"){for(let o in n.shape)if(Ct(n.shape[o],r))return!0;return!1}if(n.type==="union"){for(let o of n.options)if(Ct(o,r))return!0;return!1}if(n.type==="tuple"){for(let o of n.items)if(Ct(o,r))return!0;return!!(n.rest&&Ct(n.rest,r))}return!1}var Ag=(e,t={})=>r=>{let n=jc({...r,processors:t});return st(e,n),Mc(n,e),Dc(n,e)},rs=(e,t,r={})=>n=>{let{libraryOptions:o,target:s}=n??{},a=jc({...o??{},target:s,io:t,processors:r});return st(e,a),Mc(a,e),Dc(a,e)};var eo=(e,t,r)=>{(e[t]===void 0||r>e[t])&&(e[t]=r)},to=(e,t,r)=>{(e[t]===void 0||r<e[t])&&(e[t]=r)},Og=(e,t)=>{eo(e,"minimum",t),to(e,"maximum",t)},Ng=(e,t)=>{e.multipleOf??(e.multipleOf=[]),e.multipleOf.includes(t)||e.multipleOf.push(t)},Rg=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},jg=(e,t)=>{e.mime=e.mime?e.mime.filter(r=>t.includes(r)):[...t]},Mg=(e,t)=>{e.format=t,t.includes("int")&&(e.isInt=!0)},Ig=(e,t)=>eo(e,"minimum",t.minimum),Tg=(e,t)=>to(e,"maximum",t.maximum),Cg=e=>(t,r)=>{Mg(t,r.format);let[n,o]=e[r.format];eo(t,"minimum",n),to(t,"maximum",o)},px={greater_than:(e,t)=>eo(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>to(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>Ng(e,t.value),number_format:Cg(Bo),bigint_format:Cg(xa),min_length:Ig,max_length:Tg,length_equals:(e,t)=>Og(e,t.length),min_size:Ig,max_size:Tg,size_equals:(e,t)=>Og(e,t.size),string_format:(e,t)=>{Mg(e,t.format),t.pattern&&Rg(e,t.pattern),(t.format==="base64"||t.format==="base64url")&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>jg(e,t.mime)};function Xt(e){let t={},r=e._zod.def,n=e._zod.traits.has("$ZodCheck")?[e,...r.checks??[]]:r.checks??[];for(let s of n)px[s._zod.def.check]?.(t,s._zod.def);let o=e._zod.bag;o.minimum!==void 0&&eo(t,"minimum",o.minimum),o.exclusiveMinimum!==void 0&&eo(t,"exclusiveMinimum",o.exclusiveMinimum),o.maximum!==void 0&&to(t,"maximum",o.maximum),o.exclusiveMaximum!==void 0&&to(t,"exclusiveMaximum",o.exclusiveMaximum),o.multipleOf!==void 0&&Ng(t,o.multipleOf),o.format!==void 0&&(t.format??(t.format=o.format),o.format.includes("int")&&(t.isInt=!0)),o.mime&&jg(t,o.mime);for(let s of o.patterns??[])Rg(t,s);return t}var fx={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},mx=new Map([[hc,nm],[Va,om]]),Dg=e=>mx.get(e)??e,Lg=(e,t,r,n)=>{let o=r;o.type="string";let{minimum:s,maximum:a,format:i,patterns:l,contentEncoding:c,laxFormat:u}=Xt(e);if(typeof s=="number"&&(o.minLength=s),typeof a=="number"&&(o.maxLength=a),i&&(o.format=fx[i]??i,o.format===""&&delete o.format,(i==="time"||u)&&delete o.format),c&&(o.contentEncoding=c),l&&l.size>0){let d=[...l].map(Dg);d.length===1?o.pattern=d[0].source:d.length>1&&(o.allOf=[...d.map(p=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))])}},Vg=(e,t,r,n)=>{let o=r,{minimum:s,maximum:a,multipleOf:i,exclusiveMaximum:l,exclusiveMinimum:c,isInt:u}=Xt(e);o.type=u?"integer":"number";let d=typeof c=="number"&&c>=(s??Number.NEGATIVE_INFINITY),p=typeof l=="number"&&l<=(a??Number.POSITIVE_INFINITY),m=t.target==="draft-04"||t.target==="openapi-3.0";if(d?m?(o.minimum=c,o.exclusiveMinimum=!0):o.exclusiveMinimum=c:typeof s=="number"&&(o.minimum=s),p?m?(o.maximum=l,o.exclusiveMaximum=!0):o.exclusiveMaximum=l:typeof a=="number"&&(o.maximum=a),i){let b=new Set;for(let g of i)Number.isFinite(g)&&g!==0?b.add(Math.abs(g)):Lr(e,t,o,n,`A multipleOf divisor of ${g} cannot be represented in JSON Schema`);let[f,...h]=b;f!==void 0&&(o.multipleOf=f),h.length&&(o.allOf=[...o.allOf??[],...h.map(g=>({multipleOf:g}))])}},Fg=(e,t,r,n)=>{r.type="boolean"};var Zg=(e,t,r,n)=>{t.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"};var Bg=(e,t,r,n)=>{r.not={}};var Gg=(e,t,r,n)=>{};var Ug=(e,t,r,n)=>{let o=e._zod.def,s=Kn(o.entries);if(s.length===0){r.not={};return}s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),r.enum=s},qg=(e,t,r,n)=>{let o=e._zod.def;if(o.values.length===0){r.not={};return}let s=[];for(let a of o.values)if(a===void 0){if(Lr(e,t,r,n,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof a=="bigint"){if(Lr(e,t,r,n,"BigInt literals cannot be represented in JSON Schema"))return;s.push(Number(a))}else s.push(a);if(s.length!==0)if(s.length===1){let a=s[0];r.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?r.enum=[a]:r.const=a}else s.every(a=>typeof a=="number")&&(r.type="number"),s.every(a=>typeof a=="string")&&(r.type="string"),s.every(a=>typeof a=="boolean")&&(r.type="boolean"),s.every(a=>a===null)&&(r.type="null"),r.enum=s};var Kg=(e,t,r,n)=>{Lr(e,t,r,n,"Custom types cannot be represented in JSON Schema")};var Hg=(e,t,r,n)=>{Lr(e,t,r,n,"Transforms cannot be represented in JSON Schema")};var Wg=(e,t,r,n)=>{let o=r,s=e._zod.def,{minimum:a,maximum:i}=Xt(e);typeof a=="number"&&(o.minItems=a),typeof i=="number"&&(o.maxItems=i),o.type="array",o.items=st(s.element,t,{...n,path:[...n.path,"items"]})};function ei(e){let t=e._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?ei(t.out):t.type==="catch"?ei(t.innerType):e._zod.optin}var Jg=(e,t,r,n)=>{let o=r,s=e._zod.def,a=s.shape;if(Object.getOwnPropertySymbols(a).length&&Lr(e,t,o,n,"Symbol keys cannot be represented in JSON Schema"))return;o.type="object",o.properties={};for(let c in a)qt(o.properties,c,st(a[c],t,{...n,path:[...n.path,"properties",c]}));let l=[];for(let c of Object.keys(a)){let u=s.shape[c];(t.io==="input"?ei(u)===void 0:u._zod.optout===void 0)&&l.push(c)}l.length>0&&(o.required=l),s.catchall?._zod.def.type==="never"?o.additionalProperties=!1:s.catchall?s.catchall&&(o.additionalProperties=st(s.catchall,t,{...n,path:[...n.path,"additionalProperties"]})):t.io==="output"&&(o.additionalProperties=!1)},Yg=(e,t,r,n)=>{let o=e._zod.def,s=o.inclusive===!1,a=o.options.map((i,l)=>st(i,t,{...n,path:[...n.path,s?"oneOf":"anyOf",l]}));s?r.oneOf=a:r.anyOf=a},Xg=(e,t,r,n)=>{let o=e._zod.def,s=st(o.left,t,{...n,path:[...n.path,"allOf",0]}),a=st(o.right,t,{...n,path:[...n.path,"allOf",1]}),i=c=>"allOf"in c&&Object.keys(c).length===1,l=[...i(s)?s.allOf:[s],...i(a)?a.allOf:[a]];r.allOf=l,t.intersections.push(l)};function Lc(e,t,r){if(t.$ref){if(r.has(t))return t;r.add(t);let b=e.get(t)?.def;if(!b)return t;let f=Lc(e,b,r);return f===b?t:f}for(let b of["anyOf","oneOf"]){let f=t[b];if(!Array.isArray(f))continue;let h=f.map(g=>Lc(e,g,r));h.some((g,v)=>g!==f[v])&&(t={...t,[b]:h})}let n=Array.isArray(t.type)?t.type:[t.type],o=!n.includes("string")&&n.some(b=>b==="number"||b==="integer"),s=t.enum??(t.const!==void 0?[t.const]:void 0);if(!o&&!s?.some(b=>typeof b=="number"))return t;let{minimum:a,maximum:i,exclusiveMinimum:l,exclusiveMaximum:c,multipleOf:u,format:d,id:p,...m}=t;return m.enum?m.enum=m.enum.map(b=>typeof b=="number"?String(b):b):typeof m.const=="number"&&(m.const=String(m.const)),o&&(m.type="string",s||(m.pattern=(n.includes("number")?Ho:cc).source)),m}var Vc=new WeakMap;function hx(e){let t=new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let r=new Map;for(let n of Vc.get(e)??[]){let o=e.seen.get(n),s=(o?.def??o?.schema)?.propertyNames;if(!s||s===!0||r.has(s))continue;let a=Lc(t,s,new Set);a!==s&&r.set(s,a)}if(r.size)for(let n of e.seen.values())for(let o of[n.schema,n.def]){let s=o&&r.get(o.propertyNames);s&&(o.propertyNames=s)}}var Qg=(e,t,r,n)=>{let o=r,s=e._zod.def;o.type="object";let a=s.keyType,i=Xt(a).patterns;if(s.mode==="loose"&&i&&i.size>0){let u=st(s.valueType,t,{...n,path:[...n.path,"patternProperties","*"]});o.patternProperties={};for(let d of i)qt(o.patternProperties,Dg(d).source,u)}else{if(t.target==="draft-07"||t.target==="draft-2020-12"){o.propertyNames=st(s.keyType,t,{...n,path:[...n.path,"propertyNames"]});let u=Vc.get(t);u||(u=[],Vc.set(t,u),t.deferred.push(()=>hx(t))),u.push(e)}o.additionalProperties=st(s.valueType,t,{...n,path:[...n.path,"additionalProperties"]})}let l=a._zod.values,c=t.io==="input"&&ei(s.valueType)!==void 0;if(l&&!s.partial&&!c){let u=[...l].filter(d=>typeof d=="string"||typeof d=="number");u.length>0&&(o.required=u.map(String))}},eb=(e,t,r,n)=>{let o=e._zod.def,s=st(o.innerType,t,n),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=o.innerType,r.nullable=!0):r.anyOf=[s,{type:"null"}]},tb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType},Fc=Symbol();function rb(e,t,r,n,o){let s=!1,a=JSON.stringify(e,(i,l)=>typeof l!="bigint"?l:(s=!0,null));return s?(Lr(t,r,n,o,"BigInt defaults cannot be represented in JSON Schema"),Fc):JSON.parse(a)}var nb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a=rb(o.defaultValue,e,t,r,n);a!==Fc&&(r.default=a)},ob=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);if(s.ref=o.innerType,t.io!=="input")return;let a=rb(o.defaultValue,e,t,r,n);a!==Fc&&(r._prefault=a)},sb=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType;let a;try{a=o.catchValue(void 0)}catch{Lr(e,t,r,n,"Dynamic catch values are not supported in JSON Schema");return}r.default=a},ab=(e,t,r,n)=>{let o=e._zod.def,s=o.in._zod.traits.has("$ZodTransform"),a=t.io==="input"?s?o.out:o.in:o.out;st(a,t,n);let i=t.seen.get(e);i.ref=a},ib=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType,r.readOnly=!0};var Zc=(e,t,r,n)=>{let o=e._zod.def;st(o.innerType,t,n);let s=t.seen.get(e);s.ref=o.innerType};var lb=new WeakSet([Object.prototype,Error.prototype]);function ti(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let n=r(this);return Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0}),n},set(n){Object.defineProperty(this,t,{value:n,configurable:!0,writable:!0})}})}var xx=(e,t)=>{Af.init(e,t),e.name="ZodError";let r=Object.getPrototypeOf(e);lb.has(r)||(lb.add(r),ti(r,"format",n=>o=>Tf(n,o)),ti(r,"flatten",n=>o=>If(n,o)),ti(r,"addIssue",n=>o=>{n.issues.push(o),n.message=JSON.stringify(n.issues,Hn,2)}),ti(r,"addIssues",n=>o=>{n.issues.push(...o),n.message=JSON.stringify(n.issues,Hn,2)}),Object.defineProperty(r,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))};var Ht=C("ZodError",xx,void 0,{Parent:Error});var cb=Aa(Ht),ub=Oa(Ht),db=Ko(Ht),pb=Ia(Ht),fb=Nf(Ht),mb=Rf(Ht),hb=jf(Ht),gb=Mf(Ht),bb=Df(Ht),yb=Lf(Ht),kb=Vf(Ht),vb=Ff(Ht);function Px(){Mt.localeError||Kt(Zh())}function ni(){Mt.memoizer||Kt({memoizer:Fh()})}var et=C("ZodType",(e,t)=>(Px(),Ke.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(le.mergeDefs(t,{checks:[...t.checks??[],...e.map(r=>typeof r=="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return lr(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(hS(e,t))},superRefine(e,t){return this.check(gS(e,t))},overwrite(e){return this.check(tn(e))},optional(){return Qe(this)},exactOptional(){return nS(this)},nullable(){return wb(this)},nullish(){return Qe(wb(this))},nonoptional(e){return cS(this,e)},array(){return Ie(this)},or(e){return We([this,e])},and(e){return oi(this,e)},transform(e){return xb(this,Ob(e))},default(e){return aS(this,e)},prefault(e){return lS(this,e)},catch(e){return dS(this,e)},pipe(e){return xb(this,e)},readonly(){return mS(this)},describe(e){let t=this.clone();return _n.add(t,{description:e}),t},meta(...e){if(e.length===0)return _n.get(this);let t=this.clone();return _n.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return le.hide(this,"~standard",{...mc(this),jsonSchema:{input:rs(this,"input"),output:rs(this,"output")}})},set"~standard"(e){le.own(this,"~standard",e)},parse:function e(t,r){return cb(this,t,r,{callee:e})},parseAsync:async function e(t,r){return await ub(this,t,r,{callee:e})},safeParse(e,t){return db(this,e,t)},async safeParseAsync(e,t){return pb(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){le.own(this,"spa",e)},validate(e,t){return Ta(this,e,t)},validateAsync(e,t){return Ca(this,e,t)},encode:function e(t,r){return fb(this,t,r,{callee:e})},decode:function e(t,r){return mb(this,t,r,{callee:e})},encodeAsync:async function e(t,r){return await hb(this,t,r,{callee:e})},decodeAsync:async function e(t,r){return await gb(this,t,r,{callee:e})},safeEncode(e,t){return bb(this,e,t)},safeDecode(e,t){return yb(this,e,t)},async safeEncodeAsync(e,t){return kb(this,e,t)},async safeDecodeAsync(e,t){return vb(this,e,t)},toJSONSchema(e){return Ag(this,{})(e)},get description(){return _n.get(this)?.description},get _def(){return this._zod.def}}),Sb=C("_ZodString",(e,t)=>{La.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Lg(e,r,n,o)},le.derived({format:e=>Xt(e).format??null,minLength:e=>Xt(e).minimum??null,maxLength:e=>Xt(e).maximum??null},{regex(...e){return this.check(xc(...e))},includes(...e){return this.check($c(...e))},startsWith(...e){return this.check(Ec(...e))},endsWith(...e){return this.check(Ac(...e))},min(...e){return this.check(Qn(...e))},max(...e){return this.check(Xa(...e))},length(...e){return this.check(Qa(...e))},nonempty(...e){return this.check(Qn(1,...e))},lowercase(e){return this.check(Sc(e))},uppercase(e){return this.check(Pc(e))},trim(){return this.check(Ic())},normalize(...e){return this.check(Oc(...e))},toLowerCase(){return this.check(Tc())},toUpperCase(){return this.check(Cc())},slugify(){return this.check(Nc())}})),$x=C("ZodString",(e,t)=>{La.init(e,t),Sb.init(e,t)},{email(e){return this.check(qh(Ex,e))},url(e){return this.check(Xh(Ox,e))},jwt(e){return this.check(fg(Ux,e))},emoji(e){return this.check(Qh(Ix,e))},guid(e){return this.check(Kh(Ax,e))},uuid(e){return this.check(Hh(ri,e))},uuidv4(e){return this.check(Wh(ri,e))},uuidv6(e){return this.check(Jh(ri,e))},uuidv7(e){return this.check(Yh(ri,e))},nanoid(e){return this.check(eg(Tx,e))},cuid(e){return this.check(tg(Cx,e))},cuid2(e){return this.check(rg(Nx,e))},ulid(e){return this.check(ng(Rx,e))},base64(e){return this.check(ug(Zx,e))},base64url(e){return this.check(dg(Bx,e))},xid(e){return this.check(og(jx,e))},ksuid(e){return this.check(sg(Mx,e))},ipv4(e){return this.check(ag(Dx,e))},ipv6(e){return this.check(ig(Lx,e))},cidrv4(e){return this.check(lg(Vx,e))},cidrv6(e){return this.check(cg(Fx,e))},e164(e){return this.check(pg(Gx,e))},datetime(e){return this.check(Ua(os,e))},date(e){return this.check(qa(ss,e))},time(e){return this.check(Ka(as,e))},duration(e){return this.check(Ha(is,e))}});function I(e){return Uh($x,e)}var rt=C("ZodStringFormat",(e,t)=>{He.init(e,t),Sb.init(e,t)}),os=C("ZodISODateTime",(e,t)=>{eh.init(e,t),rt.init(e,t)}),ss=C("ZodISODate",(e,t)=>{th.init(e,t),rt.init(e,t)}),as=C("ZodISOTime",(e,t)=>{rh.init(e,t),rt.init(e,t)}),is=C("ZodISODuration",(e,t)=>{nh.init(e,t),rt.init(e,t)}),Ex=C("ZodEmail",(e,t)=>{Bm.init(e,t),rt.init(e,t)});var Ax=C("ZodGUID",(e,t)=>{Fm.init(e,t),rt.init(e,t)});var ri=C("ZodUUID",(e,t)=>{Zm.init(e,t),rt.init(e,t)});var Ox=C("ZodURL",(e,t)=>{qm.init(e,t),rt.init(e,t)});var Ix=C("ZodEmoji",(e,t)=>{Km.init(e,t),rt.init(e,t)});var Tx=C("ZodNanoID",(e,t)=>{Hm.init(e,t),rt.init(e,t)});var Cx=C("ZodCUID",(e,t)=>{Wm.init(e,t),rt.init(e,t)});var Nx=C("ZodCUID2",(e,t)=>{Jm.init(e,t),rt.init(e,t)});var Rx=C("ZodULID",(e,t)=>{Ym.init(e,t),rt.init(e,t)});var jx=C("ZodXID",(e,t)=>{Xm.init(e,t),rt.init(e,t)});var Mx=C("ZodKSUID",(e,t)=>{Qm.init(e,t),rt.init(e,t)});var Dx=C("ZodIPv4",(e,t)=>{oh.init(e,t),rt.init(e,t)});var Lx=C("ZodIPv6",(e,t)=>{ah.init(e,t),rt.init(e,t)});var Vx=C("ZodCIDRv4",(e,t)=>{ih.init(e,t),rt.init(e,t)});var Fx=C("ZodCIDRv6",(e,t)=>{lh.init(e,t),rt.init(e,t)});var Zx=C("ZodBase64",(e,t)=>{uh.init(e,t),rt.init(e,t)});var Bx=C("ZodBase64URL",(e,t)=>{dh.init(e,t),rt.init(e,t)});var Gx=C("ZodE164",(e,t)=>{ph.init(e,t),rt.init(e,t)});var Ux=C("ZodJWT",(e,t)=>{fh.init(e,t),rt.init(e,t)});var Pb=C("ZodNumber",(e,t)=>{gc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Vg(e,r,n,o),e.isFinite=!0},le.derived({minValue:e=>{let{minimum:t,exclusiveMinimum:r}=Xt(e);return Math.max(t??Number.NEGATIVE_INFINITY,r??Number.NEGATIVE_INFINITY)},maxValue:e=>{let{maximum:t,exclusiveMaximum:r}=Xt(e);return Math.min(t??Number.POSITIVE_INFINITY,r??Number.POSITIVE_INFINITY)},isInt:e=>{let{isInt:t,multipleOf:r}=Xt(e);return!!t||!!r?.some(Number.isSafeInteger)},format:e=>Xt(e).format??null},{gt(e,t){return this.check(Ja(e,t))},gte(e,t){return this.check(es(e,t))},min(e,t){return this.check(es(e,t))},lt(e,t){return this.check(Wa(e,t))},lte(e,t){return this.check(Qo(e,t))},max(e,t){return this.check(Qo(e,t))},int(e){return this.check(zb(e))},safe(e){return this.check(zb(e))},positive(e){return this.check(Ja(0,e))},nonnegative(e){return this.check(es(0,e))},negative(e){return this.check(Wa(0,e))},nonpositive(e){return this.check(Qo(0,e))},multipleOf(e,t){return this.check(Ya(e,t))},step(e,t){return this.check(Ya(e,t))},finite(){return this}}));function De(e){return mg(Pb,e)}var qx=C("ZodNumberFormat",(e,t)=>{mh.init(e,t),Pb.init(e,t)});function zb(e){return hg(qx,e)}var Kx=C("ZodBoolean",(e,t)=>{hh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Fg(e,r,n,o)});function ht(e){return gg(Kx,e)}var Hx=C("ZodNull",(e,t)=>{gh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zg(e,r,n,o)});function $b(e){return bg(Hx,e)}var Wx=C("ZodUnknown",(e,t)=>{bh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Gg(e,r,n,o)});function Xe(){return yg(Wx)}var Jx=C("ZodNever",(e,t)=>{yh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Bg(e,r,n,o)});function Yx(e){return kg(Jx,e)}var Xx=C("ZodArray",(e,t)=>{ni(),kh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Wg(e,r,n,o),e.element=t.element},{min(e,t){return this.check(Qn(e,t))},nonempty(e){return this.check(Qn(1,e))},max(e,t){return this.check(Xa(e,t))},length(e,t){return this.check(Qa(e,t))},unwrap(){return this.element}});function Ie(e,t){return vg(Xx,e,t)}var Eb=C("ZodObject",(e,t)=>{ni(),_h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Jg(e,r,n,o),le.installLazyProp(e,"shape",r=>r._zod.def.shape,!1)},{keyof(){return Dt(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(le.mergeDefs(this._zod.def,{catchall:e}))},passthrough(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},loose(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Xe()}))},strict(){return this.clone(le.mergeDefs(this._zod.def,{catchall:Yx()}))},strip(){return this.clone(le.mergeDefs(this._zod.def,{catchall:void 0}))},extend(e){return le.extend(this,e)},safeExtend(e){return le.safeExtend(this,e)},merge(e){return le.merge(this,e)},pick(e){return le.pick(this,e)},omit(e){return le.omit(this,e)},partial(...e){return le.partial(Ib,this,e[0])},exactPartial(...e){return le.partial(Tb,this,e[0],"exactPartial")},required(...e){return le.required(Cb,this,e[0])}});function J(e,t){let r={type:"object",shape:e??{},...le.normalizeParams(t)};return new Eb(r)}function Nt(e,t){return new Eb({type:"object",shape:e,catchall:Xe(),...le.normalizeParams(t)})}var Ab=C("ZodUnion",(e,t)=>{bc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Yg(e,r,n,o),e.options=t.options});function We(e,t){return new Ab({type:"union",options:e,...le.normalizeParams(t)})}var Qx=C("ZodDiscriminatedUnion",(e,t)=>{Ab.init(e,t),wh.init(e,t)});function Gc(e,t,r){return new Qx({type:"union",options:t,discriminator:e,...le.normalizeParams(r)})}var eS=C("ZodIntersection",(e,t)=>{xh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Xg(e,r,n,o)});function oi(e,t){return new eS({type:"intersection",left:e,right:t})}var _b=C("ZodRecord",(e,t)=>{ni(),Sh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Qg(e,r,n,o),e.keyType=t.keyType,e.valueType=t.valueType});function Be(e,t,r){return!t||!t._zod?new _b({type:"record",keyType:I(),valueType:e,...le.normalizeParams(t)}):new _b({type:"record",keyType:e,valueType:t,...le.normalizeParams(r)})}var Bc=C("ZodEnum",(e,t)=>{Ph.init(e,t),et.init(e,t),e._zod.processJSONSchema=(n,o,s)=>Ug(e,n,o,s),e.enum=t.entries,e.options=[...e._zod.values];let r=new Set(Object.keys(t.entries));e.extract=(n,o)=>{let s={};for(let a of n)if(r.has(a))s[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Bc({...t,checks:[],...le.normalizeParams(o),entries:s})},e.exclude=(n,o)=>{let s={...t.entries};for(let a of n)if(r.has(a))delete s[a];else throw new Error(`Key ${a} not found in enum`);return new Bc({...t,checks:[],...le.normalizeParams(o),entries:s})}});function Dt(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new Bc({type:"enum",entries:r,...le.normalizeParams(t)})}var tS=C("ZodLiteral",(e,t)=>{$h.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>qg(e,r,n,o),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function oe(e,t){return new tS({type:"literal",values:Array.isArray(e)?e:[e],...le.normalizeParams(t)})}var rS=C("ZodTransform",(e,t)=>{ni(),Eh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Hg(e,r,n,o),e._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Xn(e.constructor.name);r.addIssue=s=>{if(typeof s=="string")r.issues.push(le.issue(s,r.value,t));else{let a=s;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),"input"in a||(a.input=r.value),a.inst??(a.inst=e),r.issues.push(le.issue(a))}};let o=t.transform(r.value,r);return o instanceof Promise?o.then(s=>(r.value=s,r)):(r.value=o,r)}});function Ob(e){return new rS({type:"transform",transform:e})}var Ib=C("ZodOptional",(e,t)=>{yc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function Qe(e){return new Ib({type:"optional",innerType:e})}var Tb=C("ZodExactOptional",(e,t)=>{Ah.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Zc(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function nS(e){return new Tb({type:"optional",innerType:e})}var oS=C("ZodNullable",(e,t)=>{Oh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>eb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function wb(e){return new oS({type:"nullable",innerType:e})}var sS=C("ZodDefault",(e,t)=>{Ih.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>nb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function aS(e,t){return new sS({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var iS=C("ZodPrefault",(e,t)=>{Th.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ob(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function lS(e,t){return new iS({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():le.shallowClone(t)}})}var Cb=C("ZodNonOptional",(e,t)=>{Ch.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>tb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function cS(e,t){return new Cb({type:"nonoptional",innerType:e,...le.normalizeParams(t)})}var uS=C("ZodCatch",(e,t)=>{Nh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>sb(e,r,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function dS(e,t){return new uS({type:"catch",innerType:e,catchValue:typeof t=="function"?t:le.constantCatch(t)})}var Nb=C("ZodPipe",(e,t)=>{kc.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ab(e,r,n,o),e.in=t.in,e.out=t.out});function xb(e,t){return new Nb({type:"pipe",in:e,out:t})}var pS=C("ZodPreprocess",(e,t)=>{Nb.init(e,t),Rh.init(e,t)}),fS=C("ZodReadonly",(e,t)=>{jh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>ib(e,r,n,o),e.unwrap=()=>e._zod.def.innerType});function mS(e){return new fS({type:"readonly",innerType:e})}var Rb=C("ZodCustom",(e,t)=>{Mh.init(e,t),et.init(e,t),e._zod.processJSONSchema=(r,n,o)=>Kg(e,r,n,o)});function jb(e,t){return zg(Rb,e??(()=>!0),t)}function hS(e,t={}){return _g(Rb,e,t)}function gS(e,t){return wg(e,t)}function Uc(e,t){return new pS({type:"pipe",in:Ob(e),out:t})}var si={};pf(si,{ZodISODate:()=>ss,ZodISODateTime:()=>os,ZodISODuration:()=>is,ZodISOTime:()=>as,date:()=>yS,datetime:()=>bS,duration:()=>vS,time:()=>kS});function bS(e){return Ua(os,e)}function yS(e){return qa(ss,e)}function kS(e){return Ka(as,e)}function vS(e){return Ha(is,e)}var Kc="2025-11-25";var Mb=[Kc,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],rn="io.modelcontextprotocol/related-task",ii="2.0",pt=jb(e=>e!==null&&(typeof e=="object"||typeof e=="function")),Db=We([I(),De().int()]),Lb=I(),m2=Nt({ttl:De().optional(),pollInterval:De().optional()}),zS=J({ttl:De().optional()}),_S=J({taskId:I()}),Hc=Nt({progressToken:Db.optional(),[rn]:_S.optional()}),Wt=J({_meta:Hc.optional()}),ls=Wt.extend({task:zS.optional()}),Vb=e=>ls.safeParse(e).success,_t=J({method:I(),params:Wt.loose().optional()}),Qt=J({_meta:Hc.optional()}),er=J({method:I(),params:Qt.loose().optional()}),wt=Nt({_meta:Hc.optional()}),li=We([I(),De().int()]),Fb=J({jsonrpc:oe(ii),id:li,..._t.shape}).strict(),Wc=e=>Fb.safeParse(e).success,Zb=J({jsonrpc:oe(ii),...er.shape}).strict(),Bb=e=>Zb.safeParse(e).success,Jc=J({jsonrpc:oe(ii),id:li,result:wt}).strict(),cs=e=>Jc.safeParse(e).success;var ye;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(ye||(ye={}));var Yc=J({jsonrpc:oe(ii),id:li.optional(),error:J({code:De().int(),message:I(),data:Xe().optional()})}).strict();var Gb=e=>Yc.safeParse(e).success;var Ub=We([Fb,Zb,Jc,Yc]),h2=We([Jc,Yc]),ci=wt.strict(),wS=Qt.extend({requestId:li.optional(),reason:I().optional()}),ui=er.extend({method:oe("notifications/cancelled"),params:wS}),xS=J({src:I(),mimeType:I().optional(),sizes:Ie(I()).optional(),theme:Dt(["light","dark"]).optional()}),us=J({icons:Ie(xS).optional()}),ro=J({name:I(),title:I().optional()}),qb=ro.extend({...ro.shape,...us.shape,version:I(),websiteUrl:I().optional(),description:I().optional()}),SS=oi(J({applyDefaults:ht().optional()}),Be(I(),Xe())),PS=Uc(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,oi(J({form:SS.optional(),url:pt.optional()}),Be(I(),Xe()).optional())),$S=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({sampling:Nt({createMessage:pt.optional()}).optional(),elicitation:Nt({create:pt.optional()}).optional()}).optional()}),ES=Nt({list:pt.optional(),cancel:pt.optional(),requests:Nt({tools:Nt({call:pt.optional()}).optional()}).optional()}),AS=J({experimental:Be(I(),pt).optional(),sampling:J({context:pt.optional(),tools:pt.optional()}).optional(),elicitation:PS.optional(),roots:J({listChanged:ht().optional()}).optional(),tasks:$S.optional(),extensions:Be(I(),pt).optional()}),OS=Wt.extend({protocolVersion:I(),capabilities:AS,clientInfo:qb}),Xc=_t.extend({method:oe("initialize"),params:OS});var IS=J({experimental:Be(I(),pt).optional(),logging:pt.optional(),completions:pt.optional(),prompts:J({listChanged:ht().optional()}).optional(),resources:J({subscribe:ht().optional(),listChanged:ht().optional()}).optional(),tools:J({listChanged:ht().optional()}).optional(),tasks:ES.optional(),extensions:Be(I(),pt).optional()}),TS=wt.extend({protocolVersion:I(),capabilities:IS,serverInfo:qb,instructions:I().optional()}),Qc=er.extend({method:oe("notifications/initialized"),params:Qt.optional()});var di=_t.extend({method:oe("ping"),params:Wt.optional()}),CS=J({progress:De(),total:Qe(De()),message:Qe(I())}),NS=J({...Qt.shape,...CS.shape,progressToken:Db}),pi=er.extend({method:oe("notifications/progress"),params:NS}),RS=Wt.extend({cursor:Lb.optional()}),ds=_t.extend({params:RS.optional()}),ps=wt.extend({nextCursor:Lb.optional()}),jS=Dt(["working","input_required","completed","failed","cancelled"]),fs=J({taskId:I(),status:jS,ttl:We([De(),$b()]),createdAt:I(),lastUpdatedAt:I(),pollInterval:Qe(De()),statusMessage:Qe(I())}),no=wt.extend({task:fs}),MS=Qt.merge(fs),ms=er.extend({method:oe("notifications/tasks/status"),params:MS}),fi=_t.extend({method:oe("tasks/get"),params:Wt.extend({taskId:I()})}),mi=wt.merge(fs),hi=_t.extend({method:oe("tasks/result"),params:Wt.extend({taskId:I()})}),g2=wt.loose(),gi=ds.extend({method:oe("tasks/list")}),bi=ps.extend({tasks:Ie(fs)}),yi=_t.extend({method:oe("tasks/cancel"),params:Wt.extend({taskId:I()})}),Kb=wt.merge(fs),Hb=J({uri:I(),mimeType:Qe(I()),_meta:Be(I(),Xe()).optional()}),Wb=Hb.extend({text:I()}),eu=I().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),Jb=Hb.extend({blob:eu}),hs=Dt(["user","assistant"]),oo=J({audience:Ie(hs).optional(),priority:De().min(0).max(1).optional(),lastModified:si.datetime({offset:!0}).optional()}),Yb=J({...ro.shape,...us.shape,uri:I(),description:Qe(I()),mimeType:Qe(I()),size:Qe(De()),annotations:oo.optional(),_meta:Qe(Nt({}))}),DS=J({...ro.shape,...us.shape,uriTemplate:I(),description:Qe(I()),mimeType:Qe(I()),annotations:oo.optional(),_meta:Qe(Nt({}))}),LS=ds.extend({method:oe("resources/list")}),VS=ps.extend({resources:Ie(Yb)}),FS=ds.extend({method:oe("resources/templates/list")}),ZS=ps.extend({resourceTemplates:Ie(DS)}),tu=Wt.extend({uri:I()}),BS=tu,GS=_t.extend({method:oe("resources/read"),params:BS}),US=wt.extend({contents:Ie(We([Wb,Jb]))}),qS=er.extend({method:oe("notifications/resources/list_changed"),params:Qt.optional()}),KS=tu,HS=_t.extend({method:oe("resources/subscribe"),params:KS}),WS=tu,JS=_t.extend({method:oe("resources/unsubscribe"),params:WS}),YS=Qt.extend({uri:I()}),XS=er.extend({method:oe("notifications/resources/updated"),params:YS}),QS=J({name:I(),description:Qe(I()),required:Qe(ht())}),e1=J({...ro.shape,...us.shape,description:Qe(I()),arguments:Qe(Ie(QS)),_meta:Qe(Nt({}))}),t1=ds.extend({method:oe("prompts/list")}),r1=ps.extend({prompts:Ie(e1)}),n1=Wt.extend({name:I(),arguments:Be(I(),I()).optional()}),o1=_t.extend({method:oe("prompts/get"),params:n1}),ru=J({type:oe("text"),text:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),nu=J({type:oe("image"),data:eu,mimeType:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),ou=J({type:oe("audio"),data:eu,mimeType:I(),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),s1=J({type:oe("tool_use"),name:I(),id:I(),input:Be(I(),Xe()),_meta:Be(I(),Xe()).optional()}),a1=J({type:oe("resource"),resource:We([Wb,Jb]),annotations:oo.optional(),_meta:Be(I(),Xe()).optional()}),i1=Yb.extend({type:oe("resource_link")}),su=We([ru,nu,ou,i1,a1]),l1=J({role:hs,content:su}),c1=wt.extend({description:I().optional(),messages:Ie(l1)}),u1=er.extend({method:oe("notifications/prompts/list_changed"),params:Qt.optional()}),d1=J({title:I().optional(),readOnlyHint:ht().optional(),destructiveHint:ht().optional(),idempotentHint:ht().optional(),openWorldHint:ht().optional()}),p1=J({taskSupport:Dt(["required","optional","forbidden"]).optional()}),Xb=J({...ro.shape,...us.shape,description:I().optional(),inputSchema:J({type:oe("object"),properties:Be(I(),pt).optional(),required:Ie(I()).optional()}).catchall(Xe()),outputSchema:J({type:oe("object"),properties:Be(I(),pt).optional(),required:Ie(I()).optional()}).catchall(Xe()).optional(),annotations:d1.optional(),execution:p1.optional(),_meta:Be(I(),Xe()).optional()}),au=ds.extend({method:oe("tools/list")}),f1=ps.extend({tools:Ie(Xb)}),ki=wt.extend({content:Ie(su).default([]),structuredContent:Be(I(),Xe()).optional(),isError:ht().optional()}),b2=ki.or(wt.extend({toolResult:Xe()})),m1=ls.extend({name:I(),arguments:Be(I(),Xe()).optional()}),gs=_t.extend({method:oe("tools/call"),params:m1}),h1=er.extend({method:oe("notifications/tools/list_changed"),params:Qt.optional()}),y2=J({autoRefresh:ht().default(!0),debounceMs:De().int().nonnegative().default(300)}),bs=Dt(["debug","info","notice","warning","error","critical","alert","emergency"]),g1=Wt.extend({level:bs}),iu=_t.extend({method:oe("logging/setLevel"),params:g1}),b1=Qt.extend({level:bs,logger:I().optional(),data:Xe()}),y1=er.extend({method:oe("notifications/message"),params:b1}),k1=J({name:I().optional()}),v1=J({hints:Ie(k1).optional(),costPriority:De().min(0).max(1).optional(),speedPriority:De().min(0).max(1).optional(),intelligencePriority:De().min(0).max(1).optional()}),z1=J({mode:Dt(["auto","required","none"]).optional()}),_1=J({type:oe("tool_result"),toolUseId:I().describe("The unique identifier for the corresponding tool call."),content:Ie(su).default([]),structuredContent:J({}).loose().optional(),isError:ht().optional(),_meta:Be(I(),Xe()).optional()}),w1=Gc("type",[ru,nu,ou]),ai=Gc("type",[ru,nu,ou,s1,_1]),x1=J({role:hs,content:We([ai,Ie(ai)]),_meta:Be(I(),Xe()).optional()}),S1=ls.extend({messages:Ie(x1),modelPreferences:v1.optional(),systemPrompt:I().optional(),includeContext:Dt(["none","thisServer","allServers"]).optional(),temperature:De().optional(),maxTokens:De().int(),stopSequences:Ie(I()).optional(),metadata:pt.optional(),tools:Ie(Xb).optional(),toolChoice:z1.optional()}),P1=_t.extend({method:oe("sampling/createMessage"),params:S1}),ys=wt.extend({model:I(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens"]).or(I())),role:hs,content:w1}),lu=wt.extend({model:I(),stopReason:Qe(Dt(["endTurn","stopSequence","maxTokens","toolUse"]).or(I())),role:hs,content:We([ai,Ie(ai)])}),$1=J({type:oe("boolean"),title:I().optional(),description:I().optional(),default:ht().optional()}),E1=J({type:oe("string"),title:I().optional(),description:I().optional(),minLength:De().optional(),maxLength:De().optional(),format:Dt(["email","uri","date","date-time"]).optional(),default:I().optional()}),A1=J({type:Dt(["number","integer"]),title:I().optional(),description:I().optional(),minimum:De().optional(),maximum:De().optional(),default:De().optional()}),O1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),default:I().optional()}),I1=J({type:oe("string"),title:I().optional(),description:I().optional(),oneOf:Ie(J({const:I(),title:I()})),default:I().optional()}),T1=J({type:oe("string"),title:I().optional(),description:I().optional(),enum:Ie(I()),enumNames:Ie(I()).optional(),default:I().optional()}),C1=We([O1,I1]),N1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({type:oe("string"),enum:Ie(I())}),default:Ie(I()).optional()}),R1=J({type:oe("array"),title:I().optional(),description:I().optional(),minItems:De().optional(),maxItems:De().optional(),items:J({anyOf:Ie(J({const:I(),title:I()}))}),default:Ie(I()).optional()}),j1=We([N1,R1]),M1=We([T1,C1,j1]),D1=We([M1,$1,E1,A1]),L1=ls.extend({mode:oe("form").optional(),message:I(),requestedSchema:J({type:oe("object"),properties:Be(I(),D1),required:Ie(I()).optional()})}),V1=ls.extend({mode:oe("url"),message:I(),elicitationId:I(),url:I().url()}),F1=We([L1,V1]),Z1=_t.extend({method:oe("elicitation/create"),params:F1}),B1=Qt.extend({elicitationId:I()}),G1=er.extend({method:oe("notifications/elicitation/complete"),params:B1}),so=wt.extend({action:Dt(["accept","decline","cancel"]),content:Uc(e=>e===null?void 0:e,Be(I(),We([I(),De(),ht(),Ie(I())])).optional())}),U1=J({type:oe("ref/resource"),uri:I()});var q1=J({type:oe("ref/prompt"),name:I()}),K1=Wt.extend({ref:We([q1,U1]),argument:J({name:I(),value:I()}),context:J({arguments:Be(I(),I()).optional()}).optional()}),H1=_t.extend({method:oe("completion/complete"),params:K1});var W1=wt.extend({completion:Nt({values:Ie(I()).max(100),total:Qe(De().int()),hasMore:Qe(ht())})}),J1=J({uri:I().startsWith("file://"),name:I().optional(),_meta:Be(I(),Xe()).optional()}),Y1=_t.extend({method:oe("roots/list"),params:Wt.optional()}),cu=wt.extend({roots:Ie(J1)}),X1=er.extend({method:oe("notifications/roots/list_changed"),params:Qt.optional()}),k2=We([di,Xc,H1,iu,o1,t1,LS,FS,GS,HS,JS,gs,au,fi,hi,gi,yi]),v2=We([ui,pi,Qc,X1,ms]),z2=We([ci,ys,lu,so,cu,mi,bi,no]),_2=We([di,P1,Z1,Y1,fi,hi,gi,yi]),w2=We([ui,pi,y1,XS,qS,h1,u1,ms,G1]),x2=We([ci,TS,W1,c1,r1,VS,ZS,US,ki,f1,mi,bi,no]),fe=class e extends Error{constructor(t,r,n){super(`MCP error ${t}: ${r}`),this.code=t,this.data=n,this.name="McpError"}static fromError(t,r,n){if(t===ye.UrlElicitationRequired&&n){let o=n;if(o.elicitations)return new qc(o.elicitations,r)}return new e(t,r,n)}},qc=class extends fe{constructor(t,r=`URL elicitation${t.length>1?"s":""} required`){super(ye.UrlElicitationRequired,r,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};var Q1=10*1024*1024,vi=class{constructor(t){this._maxBufferSize=t?.maxBufferSize??Q1}append(t){if((this._buffer?.length??0)+t.length>this._maxBufferSize)throw this.clear(),new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
73
+ `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),eP(r)}clear(){this._buffer=void 0}};function eP(e){return Ub.parse(JSON.parse(e))}function Qb(e){return JSON.stringify(e)+`
74
+ `}var zi=class{constructor(t=ey.stdin,r=ey.stdout,n){this._stdin=t,this._stdout=r,this._started=!1,this._ondata=o=>{try{this._readBuffer.append(o),this.processReadBuffer()}catch(s){this.onerror?.(s),this.close().catch(()=>{})}},this._onerror=o=>{this.onerror?.(o)},this._readBuffer=new vi({maxBufferSize:n?.maxBufferSize})}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(r=>{let n=Qb(t);this._stdout.write(n)?r():this._stdout.once("drain",r)})}};var ty="__export_design",ry="__import_design";function ny(e){try{let t=JSON.parse(String(e));return t&&typeof t.t=="string"?t:null}catch{return null}}import{readFile as MN,writeFile as DN}from"node:fs/promises";import{resolve as F_}from"node:path";function _i(e){return!!e._zod}function nn(e,t){return _i(e)?ac(e,t):e.safeParse(t)}function wi(e){if(!e)return;let t;if(_i(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function xi(e){if(_i(e)){let s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let r=e._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=e.value;if(n!==void 0)return n}function on(e){return e==="completed"||e==="failed"||e==="cancelled"}var rP=Symbol("Let zodToJsonSchema decide on which parser to use");var xM=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function uu(e){let r=wi(e)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=xi(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function du(e,t){let r=nn(e,t);if(!r.success)throw r.error;return r.data}var lP=6e4,Si=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(ui,r=>{this._oncancel(r)}),this.setNotificationHandler(pi,r=>{this._onprogress(r)}),this.setRequestHandler(di,r=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(fi,async(r,n)=>{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return{...o}}),this.setRequestHandler(hi,async(r,n)=>{let o=async()=>{let s=r.params.taskId;if(!await this._taskStore.getTask(s,n.sessionId))throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(this._taskMessageQueue){let i;for(;i=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(i.type==="response"||i.type==="error"){let l=i.message,c=l.id,u=this._requestResolvers.get(c);if(u)if(this._requestResolvers.delete(c),i.type==="response")u(l);else{let d=l,p=new fe(d.error.code,d.error.message,d.error.data);u(p)}else{let d=i.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${c}`))}continue}await this._transport?.send(i.message,{relatedRequestId:n.requestId})}}let a=await this._taskStore.getTask(s,n.sessionId);if(!a)throw new fe(ye.InvalidParams,`Task not found: ${s}`);if(!on(a.status))return await this._waitForTaskUpdate(s,n.signal,n.sessionId),await o();if(on(a.status)){let i=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s,n.sessionId),{...i,_meta:{...i._meta,[rn]:{taskId:s}}}}return await o()};return await o()}),this.setRequestHandler(gi,async(r,n)=>{try{let{tasks:o,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:o,nextCursor:s,_meta:{}}}catch(o){throw new fe(ye.InvalidParams,`Failed to list tasks: ${o instanceof Error?o.message:String(o)}`)}}),this.setRequestHandler(yi,async(r,n)=>{try{let o=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!o)throw new fe(ye.InvalidParams,`Task not found: ${r.params.taskId}`);if(on(o.status))throw new fe(ye.InvalidParams,`Cannot cancel task in terminal status: ${o.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId,n.sessionId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new fe(ye.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(o){throw o instanceof fe?o:new fe(ye.InvalidRequest,`Failed to cancel task: ${o instanceof Error?o.message:String(o)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,r,n,o,s=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(o,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:o})}_resetTimeout(t){let r=this._timeoutInfo.get(t);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(t),fe.fromError(ye.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(t){let r=this._timeoutInfo.get(t);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let o=this._transport?.onmessage;this._transport.onmessage=(s,a)=>{o?.(s,a),cs(s)||Gb(s)?this._onresponse(s):Wc(s)?this._onrequest(s,a):Bb(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=fe.fromError(ye.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of t.values())n(r)}_onerror(t){this.onerror?.(t)}_onnotification(t){let r=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,r){let n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,o=this._transport,s=t.params?._meta?.[rn]?.taskId,a=o?.sessionId,i=this._taskStore,l=!0,c;if(s&&i&&this._taskMessageQueue&&a!==void 0&&(l=!1,c=(async()=>{if(!await i.getTask(s,a))throw new fe(ye.InvalidParams,`Task not found: ${s}`);l=!0})()),n===void 0){let b={jsonrpc:"2.0",id:t.id,error:{code:ye.MethodNotFound,message:"Method not found"}};if(s&&c){let f={type:"error",message:b,timestamp:Date.now()};c.then(()=>this._enqueueTaskMessage(s,f,a),()=>o?.send(b)).catch(h=>this._onerror(new Error(`Failed to send an error response: ${h}`)))}else s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:b,timestamp:Date.now()},o?.sessionId).catch(f=>this._onerror(new Error(`Failed to enqueue error response: ${f}`))):o?.send(b).catch(f=>this._onerror(new Error(`Failed to send an error response: ${f}`)));return}let u=new AbortController;this._requestHandlerAbortControllers.set(t.id,u);let d=Vb(t.params)?t.params.task:void 0,p=this._taskStore?this.requestTaskStore(t,o?.sessionId):void 0,m={signal:u.signal,sessionId:o?.sessionId,_meta:t.params?._meta,sendNotification:async b=>{if(u.signal.aborted)return;let f={relatedRequestId:t.id};s&&(f.relatedTask={taskId:s}),await this.notification(b,f)},sendRequest:async(b,f,h)=>{if(u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");let g={...h,relatedRequestId:t.id};s&&!g.relatedTask&&(g.relatedTask={taskId:s});let v=g.relatedTask?.taskId??s;return v&&p&&await p.updateTaskStatus(v,"input_required"),await this.request(b,f,g)},authInfo:r?.authInfo,requestId:t.id,requestInfo:r?.requestInfo,taskId:s,taskStore:p,taskRequestedTtl:d?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};(c??Promise.resolve()).then(()=>{if(c&&u.signal.aborted)throw new fe(ye.ConnectionClosed,"Request was cancelled");d&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,m)).then(async b=>{if(u.signal.aborted)return;let f={result:b,jsonrpc:"2.0",id:t.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:f,timestamp:Date.now()},o?.sessionId):await o?.send(f)},async b=>{if(u.signal.aborted)return;let f={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(b.code)?b.code:ye.InternalError,message:b.message??"Internal error",...b.data!==void 0&&{data:b.data}}};s&&this._taskMessageQueue&&l?await this._enqueueTaskMessage(s,{type:"error",message:f,timestamp:Date.now()},o?.sessionId):await o?.send(f)}).catch(b=>this._onerror(new Error(`Failed to send response: ${b}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===u&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:r,...n}=t.params,o=Number(r),s=this._progressHandlers.get(o);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(o),i=this._timeoutInfo.get(o);if(i&&a&&i.resetTimeoutOnProgress)try{this._resetTimeout(o)}catch(l){this._responseHandlers.delete(o),this._progressHandlers.delete(o),this._cleanupTimeout(o),a(l);return}s(n)}_onresponse(t){let r=Number(t.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),cs(t))n(t);else{let a=new fe(t.error.code,t.error.message,t.error.data);n(a)}return}let o=this._responseHandlers.get(r);if(o===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(cs(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let i=a.task;typeof i.taskId=="string"&&(s=!0,this._taskProgressTokens.set(i.taskId,r))}}if(s||this._progressHandlers.delete(r),cs(t))o(t);else{let a=fe.fromError(t.error.code,t.error.message,t.error.data);o(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,r,n){let{task:o}=n??{};if(!o){try{yield{type:"result",result:await this.request(t,r,n)}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}return}let s;try{let a=await this.request(t,no,n);if(a.task)s=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new fe(ye.InternalError,"Task creation did not return a task");for(;;){let i=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:i},on(i.status)){i.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:i.status==="failed"?yield{type:"error",error:new fe(ye.InternalError,`Task ${s} failed`)}:i.status==="cancelled"&&(yield{type:"error",error:new fe(ye.InternalError,`Task ${s} was cancelled`)});return}if(i.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let l=i.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(c=>setTimeout(c,l)),n?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof fe?a:new fe(ye.InternalError,String(a))}}}request(t,r,n){let{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a,task:i,relatedTask:l}=n??{};return new Promise((c,u)=>{let d=v=>{u(v)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),i&&this.assertTaskCapability(t.method)}catch(v){d(v);return}n?.signal?.throwIfAborted();let p=this._requestMessageId++,m={...t,jsonrpc:"2.0",id:p};n?.onprogress&&(this._progressHandlers.set(p,n.onprogress),m.params={...t.params,_meta:{...t.params?._meta||{},progressToken:p}}),i&&(m.params={...m.params,task:i}),l&&(m.params={...m.params,_meta:{...m.params?._meta||{},[rn]:l}});let b=v=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(v)}},{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(w=>this._onerror(new Error(`Failed to send cancellation: ${w}`)));let _=v instanceof fe?v:new fe(ye.RequestTimeout,String(v));u(_)};this._responseHandlers.set(p,v=>{if(!n?.signal?.aborted){if(v instanceof Error)return u(v);try{let _=nn(r,v.result);_.success?c(_.data):u(_.error)}catch(_){u(_)}}}),n?.signal?.addEventListener("abort",()=>{b(n?.signal?.reason)});let f=n?.timeout??lP,h=()=>b(fe.fromError(ye.RequestTimeout,"Request timed out",{timeout:f}));this._setupTimeout(p,f,n?.maxTotalTimeout,h,n?.resetTimeoutOnProgress??!1);let g=l?.taskId;if(g){let v=_=>{let w=this._responseHandlers.get(p);w?w(_):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,v),this._enqueueTaskMessage(g,{type:"request",message:m,timestamp:Date.now()}).catch(_=>{this._cleanupTimeout(p),u(_)})}else this._transport.send(m,{relatedRequestId:o,resumptionToken:s,onresumptiontoken:a}).catch(v=>{this._cleanupTimeout(p),u(v)})})}async getTask(t,r){return this.request({method:"tasks/get",params:t},mi,r)}async getTaskResult(t,r,n){return this.request({method:"tasks/result",params:t},r,n)}async listTasks(t,r){return this.request({method:"tasks/list",params:t},bi,r)}async cancelTask(t,r){return this.request({method:"tasks/cancel",params:t},Kb,r)}async notification(t,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let n=r?.relatedTask?.taskId;if(n){let i={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[rn]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:i,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let i={...t,jsonrpc:"2.0"};r?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[rn]:r.relatedTask}}}),this._transport?.send(i,r).catch(l=>this._onerror(l))});return}let a={...t,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[rn]:r.relatedTask}}}),await this._transport.send(a,r)}setRequestHandler(t,r){let n=uu(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(o,s)=>{let a=du(t,o);return Promise.resolve(r(a,s))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,r){let n=uu(t);this._notificationHandlers.set(n,o=>{let s=du(t,o);return Promise.resolve(r(s))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let r=this._taskProgressTokens.get(t);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let o=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,r,n??this._transport?.sessionId,o)}async _clearTaskQueue(t,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(t,r);for(let o of n)if(o.type==="request"&&Wc(o.message)){let s=o.message.id,a=this._requestResolvers.get(s);a?(a(new fe(ye.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,r,n){let o=this._options?.defaultTaskPollInterval??1e3;try{let s=await this._taskStore?.getTask(t,n);s?.pollInterval&&(o=s.pollInterval)}catch{}return new Promise((s,a)=>{if(r.aborted){a(new fe(ye.InvalidRequest,"Request cancelled"));return}let i=setTimeout(s,o);r.addEventListener("abort",()=>{clearTimeout(i),a(new fe(ye.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async o=>{if(!t)throw new Error("No request provided");return await n.createTask(o,t.id,{method:t.method,params:t.params},r)},getTask:async o=>{let s=await n.getTask(o,r);if(!s)throw new fe(ye.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(o,s,a)=>{await n.storeTaskResult(o,s,a,r);let i=await n.getTask(o,r);if(i){let l=ms.parse({method:"notifications/tasks/status",params:i});await this.notification(l),on(i.status)&&this._cleanupTaskProgressHandler(o)}},getTaskResult:o=>n.getTaskResult(o,r),updateTaskStatus:async(o,s,a)=>{let i=await n.getTask(o,r);if(!i)throw new fe(ye.InvalidParams,`Task "${o}" not found - it may have been cleaned up`);if(on(i.status))throw new fe(ye.InvalidParams,`Cannot update task "${o}" from terminal status "${i.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(o,s,a,r);let l=await n.getTask(o,r);if(l){let c=ms.parse({method:"notifications/tasks/status",params:l});await this.notification(c),on(l.status)&&this._cleanupTaskProgressHandler(o)}},listTasks:o=>n.listTasks(o,r)}}};function oy(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function sy(e,t){let r={...e};for(let n in t){let o=n,s=t[o];if(s===void 0)continue;let a=r[o];oy(a)&&oy(s)?r[o]={...a,...s}:r[o]=s}return r}var iv=kn(rp(),1),lv=kn(av(),1);function zT(){let e=new iv.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,lv.default)(e),e}var ul=class{constructor(t){this._ajv=t??zT()}getValidator(t){let r="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}};var dl=class{constructor(t){this._server=t}requestStream(t,r,n){return this._server.requestStream(t,r,n)}createMessageStream(t,r){let n=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],s=Array.isArray(o.content)?o.content:[o.content],a=s.some(u=>u.type==="tool_result"),i=t.messages.length>1?t.messages[t.messages.length-2]:void 0,l=i?Array.isArray(i.content)?i.content:[i.content]:[],c=l.some(u=>u.type==="tool_use");if(a){if(s.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(l.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(s.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(u.size!==d.size||![...u].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},ys,r)}elicitInputStream(t,r){let n=this._server.getClientCapabilities(),o=t.mode??"form";switch(o){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=o==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:s},so,r)}async getTask(t,r){return this._server.getTask({taskId:t},r)}async getTaskResult(t,r,n){return this._server.getTaskResult({taskId:t},r,n)}async listTasks(t,r){return this._server.listTasks(t?{cursor:t}:void 0,r)}async cancelTask(t,r){return this._server.cancelTask({taskId:t},r)}};function cv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${t})`);break;default:break}}function uv(e,t,r){if(!e)throw new Error(`${r} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var pl=class extends Si{constructor(t,r){super(r),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(bs.options.map((n,o)=>[n,o])),this.isMessageIgnored=(n,o)=>{let s=this._loggingLevels.get(o);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new ul,this.setRequestHandler(Xc,n=>this._oninitialize(n)),this.setNotificationHandler(Qc,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(iu,async(n,o)=>{let s=o.sessionId||o.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=n.params,i=bs.safeParse(a);return i.success&&this._loggingLevels.set(s,i.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new dl(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=sy(this._capabilities,t)}setRequestHandler(t,r){let o=wi(t)?.method;if(!o)throw new Error("Schema is missing a method literal");let s=xi(o);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let i=async(l,c)=>{let u=nn(gs,l);if(!u.success){let b=u.error instanceof Error?u.error.message:String(u.error);throw new fe(ye.InvalidParams,`Invalid tools/call request: ${b}`)}let{params:d}=u.data,p=await Promise.resolve(r(l,c));if(d.task){let b=nn(no,p);if(!b.success){let f=b.error instanceof Error?b.error.message:String(b.error);throw new fe(ye.InvalidParams,`Invalid task creation result: ${f}`)}return b.data}let m=nn(ki,p);if(!m.success){let b=m.error instanceof Error?m.error.message:String(m.error);throw new fe(ye.InvalidParams,`Invalid tools/call result: ${b}`)}return m.data};return super.setRequestHandler(t,i)}return super.setRequestHandler(t,r)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){uv(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&cv(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let r=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Mb.includes(r)?r:Kc,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},ci)}async createMessage(t,r){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let n=t.messages[t.messages.length-1],o=Array.isArray(n.content)?n.content:[n.content],s=o.some(c=>c.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,i=a?Array.isArray(a.content)?a.content:[a.content]:[],l=i.some(c=>c.type==="tool_use");if(s){if(o.some(c=>c.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let c=new Set(i.filter(d=>d.type==="tool_use").map(d=>d.id)),u=new Set(o.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(c.size!==u.size||![...c].every(d=>u.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},lu,r):this.request({method:"sampling/createMessage",params:t},ys,r)}async elicitInput(t,r){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let o=t;return this.request({method:"elicitation/create",params:o},so,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let o=t.mode==="form"?t:{...t,mode:"form"},s=await this.request({method:"elicitation/create",params:o},so,r);if(s.action==="accept"&&s.content&&o.requestedSchema)try{let i=this._jsonSchemaValidator.getValidator(o.requestedSchema)(s.content);if(!i.valid)throw new fe(ye.InvalidParams,`Elicitation response content does not match requested schema: ${i.errorMessage}`)}catch(a){throw a instanceof fe?a:new fe(ye.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return s}}}createElicitationCompletionNotifier(t,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},r)}async listRoots(t,r){return this.request({method:"roots/list",params:t},cu,r)}async sendLoggingMessage(t,r){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,r))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}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"})}};var VC=kn(sz(),1),FC=kn(vp(),1),ZC=kn(wp(),1),BC=kn(xl(),1),Ip=kn(mz(),1);var hz={Proofboard:"Proofboard","Panel be\xE1ll\xEDt\xE1sai":"Board settings","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve. Kattint\xE1sra kikapcsol.":"Simple mode: advanced parts are hidden. Click to turn it off.","Egyszer\u0171 m\xF3d":"Simple mode",F\u00E1jl:"File","\xDAj terv\u2026":"New design\u2026","Terv bet\xF6lt\xE9se f\xE1jlb\xF3l; a saj\xE1t alkatr\xE9szeid megmaradnak":"Load a design from a file; your own parts are kept","Megnyit\xE1s\u2026":"Open\u2026","A teljes terv (a benne haszn\xE1lt saj\xE1t alkatr\xE9szekkel egy\xFCtt) f\xE1jlba":"The whole design (with the custom parts it uses) to a file","Ment\xE9s f\xE1jlba":"Save to file","P\xE9ld\xE1k\u2026":"Examples\u2026","Panel be\xE1ll\xEDt\xE1sai\u2026":"Board settings\u2026","A halad\xF3 r\xE9szek elrejt\xE9se: cs\xEDkv\xE1g\xE1s, k\xE9zi \u2194 automatikus bek\xF6t\xE9s, JSON, PlatformIO, saj\xE1t alkatr\xE9sz szerkeszt\xE9se; a Probl\xE9m\xE1k k\xF6z\xFCl csak a hib\xE1k":"Hide the advanced parts: strip cuts, manual \u2194 automatic wiring, JSON, PlatformIO, custom part editing; only errors among the Problems","Saj\xE1t alkatr\xE9szk\xF6nyvt\xE1r":"Your part library","A saj\xE1t k\xF6nyvt\xE1r ment\xE9se f\xE1jlba (a tervt\u0151l f\xFCggetlen\xFCl)":"Save your library to a file (independent of the design)","K\xF6nyvt\xE1r export\xE1l\xE1sa":"Export library","Alkatr\xE9szek bet\xF6lt\xE9se f\xE1jlb\xF3l a saj\xE1t k\xF6nyvt\xE1rba":"Load parts from a file into your library","K\xF6nyvt\xE1r import\xE1l\xE1sa\u2026":"Import library\u2026","JSON export / import\u2026":"JSON export / import\u2026","\xD6n\xE1ll\xF3 ablakban fut, \xE9s internet n\xE9lk\xFCl is m\u0171k\xF6dik":"Runs in its own window and works without internet","Telep\xEDt\xE9s alkalmaz\xE1sk\xE9nt\u2026":"Install as an app\u2026","N\xE9vjegy\u2026":"About\u2026",T\u00E9ma:"Theme","A rendszer be\xE1ll\xEDt\xE1sa szerint":"Follow the system setting",Auto:"Auto",Vil\u00E1gos:"Light",S\u00F6t\u00E9t:"Dark",Elrendez\u00E9s:"Layout","Tervez\xE9s: alkatr\xE9szek \xE9s bek\xF6t\xE9s (Alt+1)":"Design: parts and wiring (Alt+1)",Tervez\u00E9s:"Design","Program: a panel \xE9s a program egym\xE1s mellett (Alt+2)":"Program: the board and the program side by side (Alt+2)",Program:"Program","Szimul\xE1ci\xF3: vez\xE9rl\u0151k \xE9s GPIO-k (Alt+3)":"Simulation: controls and GPIOs (Alt+3)",Szimul\u00E1ci\u00F3:"Simulation","Az elrendez\xE9s vissza\xE1ll\xEDt\xE1sa az alap\xE1llapot\xE1ra":"Reset the layout to its default","Az elrendez\xE9s alap\xE1llapota":"Default layout","Panelek ki-be":"Toggle panels","Bal oldals\xE1v: Alkatr\xE9szek ( [ )":"Left sidebar: Parts ( [ )","Bal oldals\xE1v (Alkatr\xE9szek)":"Left sidebar (Parts)","Als\xF3 panel: Probl\xE9m\xE1k, Napl\xF3 (P)":"Bottom panel: Problems, Log (P)","Als\xF3 panel (Probl\xE9m\xE1k, Napl\xF3)":"Bottom panel (Problems, Log)","Jobb oldals\xE1v: Tulajdons\xE1gok, Kapcsolatok, Szimul\xE1ci\xF3 ( ] )":"Right sidebar: Properties, Connections, Simulation ( ] )","Jobb oldals\xE1v":"Right sidebar",Visszavon\u00E1s:"Undo","Visszavon\xE1s (Ctrl+Z)":"Undo (Ctrl+Z)","\xDAjra (Ctrl+Y)":"Redo (Ctrl+Y)",\u00DAjra:"Redo","Szimul\xE1ci\xF3 (S)":"Simulation (S)",Bez\u00E1r\u00E1s:"Close","Bal oldali panel":"Left panel",Tulajdons\u00E1gok:"Properties",Alkatr\u00E9szek:"Parts","Bal oldals\xE1v (\xF6sszecsukva)":"Left sidebar (collapsed)","Kinyit\xE1s ( [ )":"Expand ( [ )","Bal oldals\xE1v kinyit\xE1sa":"Expand the left sidebar","Alkatr\xE9sz keres\xE9se":"Search parts","Keres\xE9s: n\xE9v, l\xE1b, funkci\xF3 (pl. i2c, adc, motor)":"Search: name, pin, function (e.g. i2c, adc, motor)","Saj\xE1t alkatr\xE9sz le\xEDr\xE1sa az Alkatr\xE9sz-szerkeszt\u0151ben":"Describe a custom part in the Part editor","\xDAj alkatr\xE9sz":"New part",Csoportok:"Groups","Minden csoport kinyit\xE1sa":"Expand all groups","Minden csoport becsuk\xE1sa":"Collapse all groups","A saj\xE1t k\xF6nyvt\xE1r":"Your library","a b\xF6ng\xE9sz\u0151dben marad, terv v\xE1lt\xE1sakor is; export\xE1lni \xE9s import\xE1lni a F\xE1jl men\xFCben lehet. Amit egy tervbe leraksz, az a terv r\xE9sze lesz (":"stays in your browser, even when you switch designs; export and import are in the File menu. Whatever you place in a design becomes part of it (",Projekt:"Project","), \xEDgy a tervf\xE1jllal egy\xFCtt utazik.":"), so it travels with the design file.","Lerak\xE1s k\xF6zben:":"While placing:","forgat\xE1s,":"rotate,","t\xFCkr\xF6z\xE9s,":"mirror,","m\xE9gse.":"cancel.","\xC9rint\xE9ssel: egy ujjal h\xFAzva g\xF6rgetsz, alkatr\xE9szen h\xFAzva mozgatod; hosszan nyomva kijel\xF6l\u0151 keret; k\xE9t ujjal nagy\xEDt\xE1s \xE9s g\xF6rget\xE9s. Lerak\xE1skor az el\u0151n\xE9zet az ujjad f\xF6l\xF6tt j\xE1r, felenged\xE9sre ker\xFCl le.":"With touch: drag with one finger to scroll, drag on a part to move it; long press for a selection box; two fingers to zoom and scroll. While placing, the preview follows above your finger and is placed when you lift it.","H\xFAzd a sz\xE9less\xE9g \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: alapm\xE9ret":"Drag to set the width, double-click: default size","Bal oldals\xE1v sz\xE9less\xE9ge":"Left sidebar width",N\u00E9zetek:"Views",N\u00E9zet:"View","A panel: alkatr\xE9szek, bek\xF6t\xE9s (1)":"The board: parts, wiring (1)",Panel:"Board","A program: blokkok, amelyek fut\xE1s k\xF6zben a GPIO-kat vez\xE9rlik (2)":"The program: blocks that drive the GPIOs while running (2)","A panel \xE9s a program egym\xE1s mellett (3)":"The board and the program side by side (3)",Mindkett\u0151:"Both","Mindkett\u0151: egym\xE1s mellett vagy egym\xE1s alatt":"Both: side by side or one above the other","Feloszt\xE1s ir\xE1nya":"Split direction","Alkatr\xE9sz-szerkeszt\u0151k":"Part editors","A panel is l\xE1tszik a szerkeszt\u0151 mellett (bal oldalt)":"Show the board next to the editor (on the left)","Panel a szerkeszt\u0151 mellett":"Board next to the editor","A panel megjelen\xEDt\xE9se":"Board display",Oldal:"Side","Alkatr\xE9szoldal (F)":"Component side (F)",Alkatr\u00E9szoldal:"Component side","R\xE9zoldal, t\xFCkr\xF6zve (F)":"Copper side, mirrored (F)",R\u00E9zoldal:"Copper side","Kapcsolati vonalak: a kapcsolatok egyenes vonallal a k\xE9t l\xE1b k\xF6z\xF6tt (N)":"Connection lines: connections as straight lines between the two pins (N)",Vonalak:"Lines","Minden alkatr\xE9sz r\xF6ntgen n\xE9zetben: csak k\xF6rvonal, l\xE1bak \xE9s l\xE1bnevek (X)":"Every part in X-ray view: outline, pins and pin names only (X)",R\u00F6ntgen:"X-ray","(Shift+W) R\xF6vid vezet\xE9k: a hossz\xFA vezet\xE9kekb\u0151l csak a k\xE9t v\xE9g l\xE1tszik szakad\xE1sjellel; r\xE1mutatva vagy kijel\xF6lve a teljes vonal":"(Shift+W) Short wires: long wires show only their two ends with a break mark; the full line on hover or when selected","R\xF6vid vezet\xE9k":"Short wires","A panel n\xE9zet\xE9nek elforgat\xE1sa 90\xB0-kal (T)":"Rotate the board view by 90\xB0 (T)","Panel elforgat\xE1sa 90\xB0-kal":"Rotate the board by 90\xB0","Kezdj\xFCnk egy panelt":"Let's start a board","A Proofboarddal pr\xF3bany\xE1kot tervezel \xE9s ki is pr\xF3b\xE1lod, miel\u0151tt forrasztan\xE1l.":"With Proofboard you design a perfboard and try it out before you solder.","\u2013 a bal oldali k\xF6nyvt\xE1rb\xF3l rakd le \u0151ket a panelra.":"\u2013 place them on the board from the library on the left.",Bek\u00F6t\u00E9s:"Wiring","\u2013 kapcsolatokkal (az \xFAtvonalat a program keresi meg), vagy k\xE9zzel hidakkal \xE9s vezet\xE9kekkel.":"\u2013 with connections (the app finds the route), or by hand with bridges and wires.",Kipr\u00F3b\u00E1l\u00E1s:"Trying it out","\u2013 a szimul\xE1ci\xF3 megmutatja a fesz\xFClts\xE9geket, a Probl\xE9m\xE1k a hib\xE1kat; a program a vez\xE9rl\u0151lapot m\u0171k\xF6dteti.":"\u2013 the simulation shows the voltages, Problems shows the mistakes; the program drives the controller board.","Tiszta sablon":"Blank template","vagy n\xE9zd meg, hogyan k\xE9sz\xFCl":"or see how it's done","P\xE9lda bet\xF6lt\xE9se":"Load an example","Alkatr\xE9sz-szerkeszt\u0151":"Part editor",Eszk\u00F6z\u00F6k:"Tools","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa / kinyit\xE1sa":"Collapse / expand the toolbar","Eszk\xF6zs\xE1v \xF6sszecsuk\xE1sa":"Collapse the toolbar",Sz\u00EDn:"Color",V\u00E1g\u00E1s:"Cut","A cs\xEDkv\xE1g\xE1s t\xEDpusa":"Strip cut type",Kijel\u00F6l\u00E9s:"Select","\xD6sszecsuk\xE1s c\xEDmsorra (dupla kattint\xE1s a c\xEDmsoron is)":"Collapse to the title bar (or double-click the title bar)","\xD6sszecsuk\xE1s c\xEDmsorra":"Collapse to the title bar","R\xF6gz\xEDt\xE9s a jobb s\xE1vba (a Tulajdons\xE1gok szakasz tetej\xE9re)":"Dock in the right sidebar (at the top of Properties)","R\xF6gz\xEDt\xE9s a jobb s\xE1vba":"Dock in the right sidebar",Nagy\u00EDt\u00E1s:"Zoom","Kicsiny\xEDt\xE9s (Ctrl+g\xF6rg\u0151)":"Zoom out (Ctrl+wheel)",Kicsiny\u00EDt\u00E9s:"Zoom out","Az eg\xE9sz panel l\xE1tsz\xF3djon (0)":"Show the whole board (0)","Nagy\xEDt\xE1s (Ctrl+g\xF6rg\u0151)":"Zoom in (Ctrl+wheel)","Az eg\xE9sz panel, k\xF6z\xE9pen (0)":"The whole board, centered (0)","Az eg\xE9sz panel":"The whole board","M\u0171veletek a kijel\xF6l\xE9ssel":"Actions on the selection","Probl\xE9m\xE1k \xE9s napl\xF3":"Problems and log","H\xFAzd a magass\xE1g \xE1ll\xEDt\xE1s\xE1hoz":"Drag to set the height","Az als\xF3 panel magass\xE1ga":"Bottom panel height","Als\xF3 panel":"Bottom panel",Probl\u00E9m\u00E1k:"Problems",Napl\u00F3:"Log","Mind elolvasva":"Mark all read","Napl\xF3 t\xF6rl\xE9se":"Clear log","Probl\xE9m\xE1k \xE9s napl\xF3 (P)":"Problems and log (P)","Als\xF3 panel kinyit\xE1sa":"Expand the bottom panel","A Probl\xE9m\xE1k megnyit\xE1sa":"Open Problems","Jobb oldals\xE1v sz\xE9less\xE9ge":"Right sidebar width","Jobb oldali panel":"Right panel",Kapcsolatok:"Connections",K\u00F3d:"Code","Jobb oldals\xE1v (\xF6sszecsukva)":"Right sidebar (collapsed)","Kinyit\xE1s ( ] )":"Expand ( ] )","Jobb oldals\xE1v kinyit\xE1sa":"Expand the right sidebar","\xC1tt\xE9tel a m\xE1sik oldals\xE1vba":"Move to the other sidebar","Lev\xE1laszt\xE1s: lebeg\u0151 ablak a panel f\xF6l\xF6tt":"Detach: floating window above the board","Lev\xE1laszt\xE1s lebeg\u0151 ablakba":"Detach into a floating window","Automatikus \xFAtvonaltervez\xE9s":"Automatic routing","Cs\xEDkos panelen a kapcsolatok szerint elv\xE1gja a cs\xEDkokat az elt\xE9r\u0151 h\xE1l\xF3zat\xFA l\xE1bak k\xF6z\xF6tt":"On a stripboard, cuts the strips between pins of different nets, based on the connections","Automatikus cs\xEDkv\xE1g\xE1s":"Automatic strip cuts","Az automatikus hidak \xFAjratervez\xE9se":"Replan the automatic bridges","\xDAtvonalak keres\xE9se":"Find routes","Az automatikus hidakat k\xE9zi hidakk\xE1 alak\xEDtja":"Turns the automatic bridges into manual ones","R\xF6gz\xEDt\xE9s k\xE9zire":"Make manual","A k\xE9zi bek\xF6t\xE9sb\u0151l kapcsolatokat k\xE9sz\xEDt, \xE9s automatikusan \xFAjrah\xFAzza":"Creates connections from the manual wiring and reroutes them automatically","K\xE9zi \u2192 automatikus":"Manual \u2192 automatic","Auto hidak t\xF6rl\xE9se":"Delete auto bridges","Kapcsolat:":"Connection:","eszk\xF6z, vagy gomb kijel\xF6l\xE9sekor \u201EA \u2192 GPIO, B \u2192 GND\u201D. A k\xE9zi hidakat az \xFAtvonalkeres\u0151 nem m\xF3dos\xEDtja; a \u201EK\xE9zi \u2192 automatikus\u201D kapcsolatokk\xE1 alak\xEDtja \u0151ket, a \u201ER\xF6gz\xEDt\xE9s k\xE9zire\u201D visszafel\xE9.":"tool, or \u201CA \u2192 GPIO, B \u2192 GND\u201D when a button is selected. The router does not change manual bridges; \u201CManual \u2192 automatic\u201D turns them into connections, \u201CMake manual\u201D does the reverse.",Jelmagyar\u00E1zat:"Legend","gomb A / GPIO":"button A / GPIO","gomb B":"button B","GND / kat\xF3d":"GND / cathode","3V3 / an\xF3d / +":"3V3 / anode / +","VBUS / VSYS":"VBUS / VSYS","k\xE9zi h\xEDd":"manual bridge","automatikus h\xEDd":"automatic bridge","kapcsolat \u2192 GPIO":"connection \u2192 GPIO","kapcsolat \u2192 GND":"connection \u2192 GND","kapcsolat l\xE1b\u2013l\xE1b":"pin-to-pin connection","bek\xF6tetlen kapcsolat":"unrouted connection","USB t\xE1p a vez\xE9rl\u0151n":"USB power on the controller","Gomb m\xF3d":"Button mode","Nyomva tart\xE1s":"Hold",Kapcsol\u00F3:"Toggle",Panelek:"Panels",R\u00E9szletek:"Details",N\u00E9vjegy:"About","Pr\xF3bany\xE1k-tervez\u0151 \xE9s -szimul\xE1tor: pontraszteres, szekci\xF3s \xE9s cs\xEDkos panelek, hidak \xE9s vezet\xE9kek, \xFAtvonalkeres\u0151, egyen\xE1ram\xFA szimul\xE1ci\xF3, blokkos program \xE9s k\xF3dgener\xE1l\xE1s Pico \xE9s ESP32 vez\xE9rl\u0151lapokhoz.":"Perfboard designer and simulator: dot, sectioned and strip boards, bridges and wires, a router, DC simulation, a block program and code generation for Pico and ESP32 boards.","A tervek \xE9s a saj\xE1t alkatr\xE9szek csak ebben a b\xF6ng\xE9sz\u0151ben vannak mentve; f\xE1jlba a F\xE1jl \u2192 Ment\xE9s f\xE1jlba menti \u0151ket.":"Designs and custom parts are saved only in this browser; File \u2192 Save to file writes them to a file.","Forr\xE1sk\xF3d a GitHubon":"Source code on GitHub","Hibajelz\xE9s, \xF6tlet":"Report a bug, suggest an idea",Telep\u00EDt\u00E9s:"Install","\xDAj verzi\xF3 \xE9rhet\u0151 el.":"A new version is available.",Friss\u00EDt\u00E9s:"Update","K\xE9s\u0151bb (a k\xF6vetkez\u0151 megnyit\xE1skor friss\xFCl)":"Later (updates on the next launch)",K\u00E9s\u0151bb:"Later",P\u00E9ld\u00E1k:"Examples","Keres\xE9s a p\xE9ld\xE1k k\xF6z\xF6tt":"Search the examples","A bet\xF6lt\xE9s visszavonhat\xF3 (Ctrl+Z).":"Loading can be undone (Ctrl+Z).",T\u00EDpus:"Type",M\u00E9ret:"Size",oszlopok:"columns",sorok:"rows",lyuk:"holes",Szekci\u00F3:"Section","nincs (pontraszter)":"none (dot board)","teljes cs\xEDk (stripboard)":"full strip (stripboard)",Alkalmaz:"Apply","A panel m\xE9ret\xE9nek vagy a r\xE9zoszt\xE1snak a v\xE1ltoz\xE1sa visszavonhat\xF3 (Ctrl+Z). A panelr\xF3l lel\xF3g\xF3 hidak \xE9s vezet\xE9kek t\xF6rl\u0151dnek.":"Changing the board size or the copper layout can be undone (Ctrl+Z). Bridges and wires hanging off the board are deleted.","\xDAj terv":"New design","A mostani terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3; a saj\xE1t k\xF6nyvt\xE1rad nem v\xE1ltozik.":"The current design can be brought back with Undo (Ctrl+Z); your library does not change.",M\u00E9gse:"Cancel",L\u00E9trehoz\u00E1s:"Create","JSON export / import":"JSON export / import",Export:"Export",M\u00E1sol\u00E1s:"Copy",Import:"Import",'Form\xE1tum: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.l\xE1bsz\xE1m":"pullup|pulldown|float|out_high|out_low"}. Koordin\xE1ta: sor:oszlop.':'Format: parts[{type,label,r,c,rot,mir,props}], bridges[[r1,c1,r2,c2]], wires[{a:[r,c],b:[r,c],color}], gpio{"partId.pinNumber":"pullup|pulldown|float|out_high|out_low"}. Coordinate: row:column.',Nyelv:"Language","Verzi\xF3: {v} \xB7 {d}":"Version: {v} \xB7 {d}","Telep\xEDtett alkalmaz\xE1sk\xE9nt fut; internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Running as an installed app; works without internet.","Internet n\xE9lk\xFCl is m\u0171k\xF6dik (a b\xF6ng\xE9sz\u0151 elt\xE1rolta). Telep\xEDthet\u0151 is \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt.":"Works without internet (stored by the browser). It can also be installed as an app.","Telep\xEDtve: a Proofboard \xF6n\xE1ll\xF3 alkalmaz\xE1sk\xE9nt is elind\xEDthat\xF3.":"Installed: Proofboard can now be started as an app.","Visszavon\xE1s az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Z)":"Undo in the part editor (Ctrl+Z)","\xDAjra az alkatr\xE9sz-szerkeszt\u0151ben (Ctrl+Y)":"Redo in the part editor (Ctrl+Y)","Kijel\xF6l\xE9s \xE9s mozgat\xE1s; Shift+kattint\xE1s vagy keret: t\xF6bb elem":"Select and move; Shift+click or a box: several items",H\u00EDd:"Bridge","Forraszt\xF3h\xEDd szomsz\xE9dos lyukak k\xF6z\xF6tt (h\xFAz\xE1ssal t\xF6bb is)":"Solder bridge between neighboring holes (drag for several)",Vezet\u00E9k:"Wire","Huzal k\xE9t tetsz\u0151leges lyuk k\xF6z\xF6tt":"A wire between any two holes",Kapcsolat:"Connection","K\xE9t l\xE1b \xF6sszek\xF6t\xE9se; az \xFAtvonalat a program keresi meg":"Connect two pins; the app finds the route",Cs\u00EDkv\u00E1g\u00E1s:"Strip cut","A r\xE9z megszak\xEDt\xE1sa k\xE9t lyuk k\xF6z\xF6tt, vagy egy lyuk kif\xFAr\xE1sa":"Break the copper between two holes, or drill out a hole",Jegyzet:"Note","Sz\xF6veges c\xE9dula a panelon":"A text note on the board",T\u00F6rl\u00E9s:"Delete","Kattint\xE1sra vagy h\xFAz\xE1ssal t\xF6r\xF6l":"Deletes on click or drag",Mozgat\u00E1s:"Pan","A n\xE9zet mozgat\xE1sa (Sz\xF3k\xF6z + h\xFAz\xE1s is)":"Move the view (or Space + drag)","Hely szerint":"By position","A kattint\xE1s helye d\xF6nt: lyuk k\xF6zep\xE9n furat, k\xE9t lyuk k\xF6z\xF6tt r\xE9s":"Where you click decides: a hole in the middle of a hole, a gap between two holes",Furat:"Hole","A lyuk kif\xFAr\xE1sa: a cs\xEDk ott megszakad":"Drill out the hole: the strip is broken there",R\u00E9s:"Gap","Szakad\xE1s k\xE9t lyuk k\xF6z\xF6tt: a cs\xEDk a k\xE9t lyuk k\xF6z\xF6tt megszakad":"A break between two holes: the strip is cut between them","{p} alkatr\xE9sz \xB7 {b} h\xEDd \xB7 {w} vezet\xE9k":"parts: {p} \xB7 bridges: {b} \xB7 wires: {w}","kif\xFArt lyuk (nincs r\xE9z)":"drilled hole (no copper)",cs\u00EDk:"strip",szekci\u00F3:"section",net:"net",lebeg:"floating","Lerak\xE1s: {x}":"Placing: {x}","Eszk\xF6z: {x}":"Tool: {x}","{n} elem":"{n} item||{n} items",vezet\u00E9k:"wire",h\u00EDd:"bridge",jegyzet:"note","Kijel\xF6lve: {x}":"Selected: {x}",k\u00E9k:"blue",piros:"red",fekete:"black",s\u00E1rga:"yellow",z\u00F6ld:"green",feh\u00E9r:"white",narancs:"orange",sz\u00FCrke:"gray",Forgat\u00E1s:"Rotate",T\u00FCkr\u00F6z\u00E9s:"Mirror",M\u00E1solat:"Copy","sor eltol\xE1s":"row offset",sor:"row","oszlop eltol\xE1s":"column offset",oszlop:"col","pl. GND,VCC,SDA,SCL":"e.g. GND,VCC,SDA,SCL","Pl. 4,7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}":"E.g. 4.7k \xB7 4k7 \xB7 100n \xB7 2.1 \u2014 \u2191/\u2193: {x}","E12-sor":"E12 series",l\u00E9ptet\u00E9s:"step","Nem \xE9rtelmezhet\u0151 \xE9rt\xE9k (pl. 4,7k \xB7 4k7 \xB7 100n)":"Not a valid value (e.g. 4.7k \xB7 4k7 \xB7 100n)","A k\xE9t l\xE1b nem lehet ugyanabban a lyukban":"The two pins cannot be in the same hole","Ennyire nem l\xF3ghat ki (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It cannot hang off this far (at least one pin on the board, at most 8 holes of overhang)",Jelenlegi:"Current","nincs kapcsolat":"no connection","L\xE1bak \xE9s bek\xF6t\xE9s":"Pins and wiring","{n} l\xE1b":"{n} pin||{n} pins","{n} lebeg":"{n} floating","a panelon k\xEDv\xFCl":"off the board",kapcsolat:"connection",bek\u00F6tve:"routed","nincs bek\xF6tve":"not routed",h\u00E1l\u00F3:"net","lebeg (sehova sincs k\xF6tve)":"floating (not connected anywhere)",N\u00E9v:"Name",orig\u00F3:"origin",t\u00FCkr\u00F6zve:"mirrored",Duplik\u00E1l\u00E1s:"Duplicate","\xDAj p\xE9ld\xE1ny ugyanezekkel a be\xE1ll\xEDt\xE1sokkal":"A new instance with the same settings","R\xF6ntgen (csak k\xF6rvonal \xE9s l\xE1bak)":"X-ray (outline and pins only)","Alkatr\xE9sz szerkeszt\xE9se":"Edit part","A be\xE9p\xEDtett le\xEDr\xE1sb\xF3l saj\xE1t, szerkeszthet\u0151 alkatr\xE9sz":"An editable custom part from the built-in description","M\xE1solat saj\xE1t alkatr\xE9szk\xE9nt":"Copy as a custom part","Az alkatr\xE9sz k\xE9zi bek\xF6t\xE9s\xE9t kapcsolatokk\xE1 alak\xEDtja, \xEDgy mozgat\xE1skor k\xF6veti":"Turns the part's manual wiring into connections, so it follows when moved","Bek\xF6t\xE9s automatikusra":"Make wiring automatic","Ennek az alkatr\xE9sznek nincs k\xE9zi bek\xF6t\xE9se":"This part has no manual wiring",Csere:"Swap","M\xE1sik vez\xE9rl\u0151re cser\xE9li; a kapcsolatok megmaradnak, a GPIO-k \xFAjra kioszt\xF3dnak":"Swaps to another controller; connections are kept, GPIOs are reassigned","Csatlakoz\xF3: {x} (t\xFCskesor a panelon)":"Connector: {x} (pin header on the board)","A k\xE1bel kih\xFAz\xE1sa: a t\xFCskesor a panelon marad, a l\xE1bak szabad k\xE1belk\xE9nt k\xF6thet\u0151k be":"Unplug the cable: the pin header stays on the board, the pins can be wired as a loose cable",Kih\u00FAz\u00E1s:"Unplug","T\xFCskesor a panelra a l\xE1bsz\xE1m\xE1val \xE9s l\xE1bneveivel; a k\xE1bel abba dugva, a bek\xF6t\xE9s onnan indul":"A pin header on the board with its pin count and names; the cable plugs into it and wiring starts from there","Csatlakoz\xF3 (t\xFCskesor) a panelra":"Connector (pin header) on the board","Nincs el\xE9g szabad hely a panelon a csatlakoz\xF3nak":"Not enough free space on the board for the connector","{x}: a csatlakoz\xF3 a panelon, a k\xE1bel bedugva. Mozgasd oda, ahov\xE1 forrasztan\xE1d.":"{x}: the connector is on the board, the cable is plugged in. Move it where you would solder it.","Ide csatlakozik: {x} ({y}). A l\xE1bak sorrendje a k\xE1bel\xE9.":"Plugged in here: {x} ({y}). The pin order follows the cable.",K\u00E1bel:"Cable","A k\xFCls\u0151 alkatr\xE9sz k\xE1bele ebbe a csatlakoz\xF3ba":"Plug the external part's cable into this connector",Bedug\u00E1s:"Plug in","Csatlakoz\xF3: k\xFCls\u0151 alkatr\xE9sz (motor, szerv\xF3, szenzor) k\xE1bele dughat\xF3 bele. A l\xE1bnevek a feliratokhoz val\xF3k.":"Connector: the cable of an external part (motor, servo, sensor) plugs into it. The pin names are for the labels.","Kapcsolatok: az A l\xE1b szabad GPIO-ra, a B l\xE1b a f\xF6ldre":"Connections: pin A to a free GPIO, pin B to ground","Kijel\xF6lve: {p} alkatr\xE9sz, {b} k\xE9zi h\xEDd, {w} vezet\xE9k":"Selected: parts {p}, manual bridges {b}, wires {w}","H\xFAz\xE1ssal egy\xFCtt mozognak. Shift+kattint\xE1s: hozz\xE1ad\xE1s/elv\xE9tel.":"They move together when dragged. Shift+click: add/remove.","R\xF6ntgen be/ki":"X-ray on/off","A kijel\xF6l\xE9snek nincs k\xE9zi bek\xF6t\xE9se":"The selection has no manual wiring","nem villamos elem":"not an electrical element","Jegyzet sz\xF6vege":"Note text","\xDAj sor: Enter. {x} sor f\xE9lk\xF6v\xE9r c\xEDmsor. M\xE9ret: h\xFAzd a jobb als\xF3 sark\xE1t, vagy add meg.":"New line: Enter. A {x} line is a bold heading. Size: drag the bottom-right corner, or enter it.",C\u00EDm:"Title",sz\u00E9less\u00E9g:"width",magass\u00E1g:"height","Szaggatott ny\xEDl a jegyzett\u0151l az alkatr\xE9szig; csak jel\xF6l\xE9s, nem kapcsolat":"A dashed arrow from the note to the part; only a marker, not a connection",Mutat:"Points to",semmire:"nothing","Kapcsolat innen: {x}":"Connection from: {x}","Kattints a c\xE9l l\xE1bra, vagy v\xE1lassz:":"Click the target pin, or choose:","szabad GPIO":"free GPIO","Kattints egy l\xE1bra, majd a c\xE9l l\xE1bra (vagy GND / szabad GPIO).":"Click a pin, then the target pin (or GND / free GPIO).","Lerak\xE1s: {x}{y}. Kattints a panelra; Shift+kattint\xE1ssal t\xF6bb p\xE9ld\xE1ny.":"Placing: {x}{y}. Click on the board; Shift+click for several.","({x} m\xE1solata)":"(copy of {x})","H\xFAzd az egeret szomsz\xE9dos lyukakon \xE1t: minden szekci\xF3hat\xE1rn\xE1l h\xEDd keletkezik.":"Drag across neighboring holes: a bridge is made at every section boundary.","Kattints a kezd\u0151, majd a c\xE9l lyukra.":"Click the start hole, then the target hole.","Kattints vagy h\xFAzz a t\xF6rlend\u0151 elemen.":"Click or drag over what to delete.","Kattints egy alkatr\xE9szre, vezet\xE9kre vagy h\xEDdra. Shift+kattint\xE1s vagy keret h\xFAz\xE1sa \xFCres helyen: t\xF6bb elem. Ctrl+A: minden.":"Click a part, wire or bridge. Shift+click or drag a box on an empty area: several items. Ctrl+A: everything.","\xC9rintsd meg a panelt, h\xFAzd a hely\xE9re, \xE9s engedd fel":"Touch the board, drag it into place, and let go",f\u00F6ld:"ground",t\u00E1pbemenet:"power input",t\u00E1p:"power","3,3 V":"3.3 V",jel:"signal","anal\xF3g jel":"analog signal",kimenet:"output",t\u00E1pkimenet:"power output","kapcsol\xF3 A":"switch A","kapcsol\xF3 B":"switch B",b\u00E1zis:"base",kollektor:"collector",emitter:"emitter",gate:"gate",drain:"drain",source:"source",an\u00F3d:"anode",kat\u00F3d:"cathode","an\xF3d +":"anode +","kat\xF3d \u2212":"cathode \u2212",tekercs:"coil",t\u00F6lt\u00E9s:"charge",ellen\u00E1ll\u00E1s:"resistor",kondenz\u00E1tor:"capacitor",\u00E1tk\u00F6t\u00E9s:"jumper",t\u00FCske:"pin","GND (f\xF6ld)":"GND (ground)",\u00C1ltal\u00E1nos:"General","szabad GPIO (az \xFAtvonalkeres\u0151 v\xE1laszt)":"free GPIO (the router picks)","{x} (foglalt: {y})":"{x} (used by: {y})","{x}: t\xE1p":"{x}: power","Ide nem tehet\u0151 v\xE1g\xE1s":"No cut can go here","Itt nincs mit elv\xE1gni (szekci\xF3hat\xE1r vagy a cs\xEDk v\xE9ge)":"Nothing to cut here (section boundary or the end of the strip)","\xCDrd ide a le\xEDr\xE1st\u2026":"Write the description here\u2026","Tov\xE1bb nem mozd\xEDthat\xF3 (panel sz\xE9le)":"Cannot move further (edge of the board)","A panel sz\xE9l\xE9n\xE9l tov\xE1bb nem mozd\xEDthat\xF3":"Cannot move past the edge of the board","Kijel\xF6l\u0151 keret: h\xFAzd az ujjad":"Selection box: drag your finger","\xCDgy lel\xF3gna a panelr\xF3l (legal\xE1bb egy l\xE1b a panelon, legfeljebb 8 lyuknyi t\xFAll\xF3g\xE1s)":"It would hang off the board (at least one pin on the board, at most 8 holes of overhang)","Egyszer\u0171 m\xF3d: a halad\xF3 r\xE9szek rejtve.":"Simple mode: advanced parts are hidden.","Egyszer\u0171 m\xF3d kikapcsolva.":"Simple mode turned off.","Szimul\xE1ci\xF3 elind\xEDtva.":"Simulation started.","Szimul\xE1ci\xF3 le\xE1ll\xEDtva.":"Simulation stopped.","Egym\xE1s alatt (kattintva: egym\xE1s mellett)":"One above the other (click: side by side)","Egym\xE1s mellett (kattintva: egym\xE1s alatt)":"Side by side (click: one above the other)","Nincs z\xE1rlat vagy bek\xF6t\xE9si hiba.":"No short circuit or wiring error.","t\xE1p van":"powered","nincs t\xE1p":"no power","Nincs vez\xE9rl\u0151 (Pico, ESP32) a panelon.":"No controller (Pico, ESP32) on the board.",Gomb:"Button",\u00C1llapot:"State",Olvas:"Reads",lenyomva:"pressed",fel:"up","Ind\xEDtsd a szimul\xE1ci\xF3t, \xE9s kattints a gombokra a panelon.":"Start the simulation and click the buttons on the board.",M\u00F3d:"Mode",Szint:"Level","{x} m\xF3d":"{x} mode",kit\u00F6lt\u00E9s:"duty","frekv.":"freq.","Lass\xFA PWM: a panelon val\xF3s id\u0151ben villog; a t\xE1bl\xE1zat az \xE1tlagot mutatja.":"Slow PWM: blinks in real time on the board; the table shows the average.","Gyors PWM: a szem az \xE1tlagot l\xE1tja, a szimul\xE1ci\xF3 is \xE1tlagol.":"Fast PWM: the eye sees the average, and the simulation averages too.",villog:"blinking",\u00E1tlagolva:"averaged",nyitva:"on",z\u00E1rva:"off",\u00C1ram:"Current",vil\u00E1g\u00EDt:"lit",s\u00F6t\u00E9t:"dark",akt\u00EDv:"active",tel\u00EDtve:"saturated","Kond.":"Cap.","Id\u0151\xE1lland\xF3: ennyi id\u0151 alatt t\xF6lt\u0151dik fel kb. 63%-ra, 5\u03C4 alatt teljesen":"Time constant: it charges to about 63% in this time, fully in 5\u03C4","nincs t\xF6lt\u0151\xFAt":"no charging path",Logika:"Logic",Bemenet:"Input",Kimenet:"Output",t\u00E1rol\u00F3k:"registers",Motor:"Motor",Fordulat:"Speed",\u00E1ll:"stopped",L\u00E9ptet\u0151:"Stepper",Tekercs:"Coils",L\u00E9p\u00E9s:"Step",Tengely:"Shaft",Szerv\u00F3:"Servo",Jel:"Signal",Sz\u00F6g:"Angle",t\u00F6lt\u0151dik:"charging",mer\u00FCl:"discharging","nincs terhel\xE9s":"no load",Vez\u00E9rl\u0151k:"Controls","Szimul\xE1ci\xF3 le\xE1ll\xEDt\xE1sa":"Stop simulation","Bet\xF6ltve: {x}. Az el\u0151z\u0151 terv visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"Loaded: {x}. The previous design can be brought back with Undo (Ctrl+Z).","P\xE9ld\xE1k kateg\xF3ri\xE1i":"Example categories","\xD6sszes kateg\xF3ria":"All categories","Mit tanulsz:":"What you learn:","Nincs ilyen p\xE9lda.":"No such example.","\xDAtvonalkeres\xE9s: {ok}/{n} kapcsolat bek\xF6tve, {b} h\xEDd, {w} vezet\xE9k.":"Routing: {ok}/{n} connections routed, bridges: {b}, wires: {w}.","Az automatikus bek\xF6t\xE9s k\xE9ziv\xE9 r\xF6gz\xEDtve.":"The automatic wiring was made manual.","Nincs k\xE9zi bek\xF6t\xE9s, amit \xE1t lehetne alak\xEDtani":"There is no manual wiring to convert","Az automatikus hidak t\xF6r\xF6lve, az \xFAtvonaltervez\xE9s kikapcsolva.":"Automatic bridges deleted, routing turned off.","A Proofboard elt\xE1rolva: internet n\xE9lk\xFCl is m\u0171k\xF6dik.":"Proofboard is stored: it works without internet.","\xDAj terv. Az el\u0151z\u0151 visszavon\xE1ssal (Ctrl+Z) visszahozhat\xF3.":"New design. The previous one can be brought back with Undo (Ctrl+Z).","{n} hiba":"{n} error||{n} errors","{n} figyelmeztet\xE9s":"{n} warning||{n} warnings","{n} megjegyz\xE9s":"{n} note||{n} notes","Nincs probl\xE9ma":"No problems","Als\xF3 panel \xF6sszecsuk\xE1sa":"Collapse the bottom panel","A terv JSON-ja a mez\u0151ben.":"The design's JSON is in the field.","V\xE1g\xF3lapra m\xE1solva.":"Copied to the clipboard.","Kijel\xF6ltem a sz\xF6veget, m\xE1sold Ctrl+C-vel.":"The text is selected, copy it with Ctrl+C.","Bet\xF6ltve: {p} alkatr\xE9sz, {b} h\xEDd, {w} vezet\xE9k":"Loaded: parts {p}, bridges {b}, wires {w}","a tervvel {n} saj\xE1t alkatr\xE9sz j\xF6tt (a terv r\xE9sze, a k\xF6nyvt\xE1radat nem v\xE1ltoztatta)":"the design brought {n} custom parts (part of the design, your library was not changed)","a k\xF6nyvt\xE1radban m\xE1s azonos nev\u0171 alkatr\xE9sz van, ez\xE9rt a terv v\xE1ltozata \xFAj n\xE9ven: {x}":"your library has a different part with the same name, so the design's version got a new name: {x}","Hib\xE1s JSON: {x}":"Invalid JSON: {x}","Nem siker\xFClt bet\xF6lteni: {x}":"Could not load: {x}","{ok}/{n} bek\xF6tve":"{ok}/{n} routed",nincs:"none",k\u00E1bel:"cable","{n} h\xEDd":"{n} bridge||{n} bridges",k\u00E9zi:"manual","Kattints: kezd\u0151- \xE9s v\xE9gpont, \xFAtvonal kiemel\xE9se":"Click: highlight the start, end and route","Kapcsolat t\xF6rl\xE9se":"Delete connection",C\u00E9l:"Target","M\xE9g nincs kapcsolat.":"No connections yet.","{a} auto + {m} k\xE9zi":"{a} auto + {m} manual","{n} vezet\xE9k":"{n} wire||{n} wires","{n} v\xE1g\xE1s":"{n} cut||{n} cuts","\xD6sszesen: {x}":"Total: {x}","A soronk\xE9nti sz\xE1mok \xF6sszege {n}; a k\xF6z\xF6s szakaszok (pl. GND-t\xF6rzs) t\xF6bb kapcsolatn\xE1l is szerepelnek, de csak egyszer kell beforrasztani.":"The rows add up to {n}; shared sections (e.g. a GND trunk) appear in several connections but only need soldering once.","sorok \xF6sszege: {n} (k\xF6z\xF6s szakaszok)":"rows add up to {n} (shared sections)",c\u00E9l:"target",kezdet:"start","Esc: kiemel\xE9s v\xE9ge":"Esc: end highlight","A saj\xE1t k\xF6nyvt\xE1rba ker\xFClt: {x}":"Added to your library: {x}","Alkatr\xE9sz t\xF6r\xF6lve":"Part deleted","Kattints a panelra a lerak\xE1shoz":"Click on the board to place it","H\xE1tt\xE9rbe: {x}":"To background: {x}","H\xE1tt\xE9rbe (Esc): a nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r":"To background (Esc): the unsaved part waits on its tab","Bez\xE1r\xE1s: {x}":"Close: {x}","Bez\xE1r\xE1s (Esc)":"Close (Esc)","a piszkozat megmarad, az \xDAj alkatr\xE9sz folytatja":"the draft is kept, New part continues it","Az alkatr\xE9sz szerkeszt\xE9se":"Edit the part","Alkatr\xE9sz-szerkeszt\u0151: {x}":"Part editor: {x}","A nem mentett alkatr\xE9sz a f\xFCl\xE9n v\xE1r: kattints r\xE1 a folytat\xE1shoz.":"The unsaved part waits on its tab: click it to continue.","A saj\xE1t k\xF6nyvt\xE1rad m\xE9g \xFCres.":"Your library is still empty.","{n} alkatr\xE9sz export\xE1lva.":"{n} part exported.||{n} parts exported.","{n} alkatr\xE9sz bet\xF6ltve a saj\xE1t k\xF6nyvt\xE1rba":"{n} part loaded into your library||{n} parts loaded into your library","{n} hib\xE1s kihagyva ({x})":"{n} invalid skipped ({x})","10\xD720 cm, 1\xD73 szekci\xF3":"10\xD720 cm, 1\xD73 sections","10\xD716 cm cs\xEDkos (stripboard)":"10\xD716 cm stripboard","7\xD79 cm pontraszter":"7\xD79 cm dot board","5\xD77 cm pontraszter":"5\xD77 cm dot board","4\xD76 cm pontraszter":"4\xD76 cm dot board","teljes cs\xEDk":"full strip",pontraszter:"dot board","1\xD7{n} szekci\xF3":"1\xD7{n} sections",Egyedi:"Custom",Alapok:"Basics",Vez\u00E9rl\u0151:"Controller",F\u00E9lvezet\u0151:"Semiconductor",Passz\u00EDv:"Passive","Saj\xE1t alkatr\xE9sz":"Custom part",Modul:"Module",kezd\u0151:"beginner",halad\u00F3:"advanced","be, felh\xFAzva":"in, pull-up","be, leh\xFAzva":"in, pull-down","be, lebeg\u0151":"in, floating","anal\xF3g (ADC)":"analog (ADC)","ki: 1":"out: 1","ki: 0":"out: 0","ki: PWM":"out: PWM","Sz\u0171r\xE9s c\xEDmk\xE9re":"Filter by tag","Sz\u0171r\xE9s:":"Filter:","Sz\u0171r\u0151k t\xF6rl\xE9se":"Clear filters","Tal\xE1latok minden kateg\xF3ri\xE1ban: {n}":"Results in all categories: {n}",program:"program","Szimul\xE1ci\xF3 fut":"Simulation running","Szimul\xE1ci\xF3 \xE1ll":"Simulation stopped","+ Blokk":"+ Block","A kijel\xF6lt blokk vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected block or edge (Delete)","Az eg\xE9sz program l\xE1tsz\xF3djon":"Show the whole program",Mind:"All","Teljes k\xE9perny\u0151":"Full screen","Teljes k\xE9perny\u0151 (Esc: vissza)":"Full screen (Esc: back)",Programv\u00E1szon:"Program canvas","M\xE9g nincs program. A {x} men\xFCb\u0151l rakj le egy bemenetet (pl. gomb) \xE9s egy kimenetet (pl. LED), majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"No program yet. From the {x} menu place an input (e.g. a button) and an output (e.g. an LED), then drag an edge from the output point to the input point.","nincs l\xE1b kiv\xE1lasztva":"no pin selected","(nincs GPIO-n)":"(not on a GPIO)","ismeretlen l\xE1b":"unknown pin",Sablon:"Template","\xDCtemad\xF3 \u2192 Sorozat (f\xE9ll\xE9ptet\xE9s) \u2192 4 digit\xE1lis kimenet; ha van ULN2003, az IN1\u2013IN4 l\xE1baira":"Clock \u2192 Sequence (half-step) \u2192 4 digital outputs; to the IN1\u2013IN4 pins if there is a ULN2003",L\u00E9ptet\u0151motor:"Stepper motor","v\xE1lassz l\xE1bat":"choose a pin","Blokk t\xF6rl\xE9se":"Delete block",Le\u00E1ll\u00EDt\u00E1s:"Stop",Futtat\u00E1s:"Run","Vissza (Esc)":"Back (Esc)","Kil\xE9p\xE9s a teljes k\xE9perny\u0151b\u0151l":"Exit full screen","M\xE9g nincs bejegyz\xE9s. Ide ker\xFCl a bet\xF6lt\xE9s, a ment\xE9s, az \xFAtvonalkeres\xE9s \xE9s a szimul\xE1ci\xF3 ind\xEDt\xE1sa.":"No entries yet. Loading, saving, routing and starting the simulation are logged here.",Programnyelv:"Programming language","platformio.ini \xE9s src/main.cpp egy zip-ben (VS Code + PlatformIO)":"platformio.ini and src/main.cpp in a zip (VS Code + PlatformIO)","PlatformIO-projekt":"PlatformIO project","Gener\xE1lt k\xF3d":"Generated code","Let\xF6lt\xE9s ({x})":"Download ({x})","M\xE9g nincs program. A Blokkok f\xFCl\xF6n rakd \xF6ssze, \xE9s itt megjelenik a k\xF3dja.":"No program yet. Build it from blocks and its code appears here.","Felt\xF6lt\xE9s: Thonny-val nyisd meg, \xE9s mentsd a lapra {x} n\xE9ven (vagy {y}). A lapon MicroPython-firmware kell.":"Upload: open it in Thonny and save it to the board as {x} (or {y}). The board needs MicroPython firmware.",lap:"board","az alaplapkezel\u0151h\xF6z add hozz\xE1: {x}":"add to the Boards Manager: {x}","v\xE1laszd ki a lapot":"select the board","Halad\xF3knak: PlatformIO-projekt zip-ben.":"For advanced users: a PlatformIO project in a zip.",M\u00E1solva:"Copied","Nem siker\xFClt":"Failed","Alkatr\xE9szek lerak\xE1sa \xE9s bek\xF6t\xE9se":"Placing and wiring parts","A panel \xE9s a program egym\xE1s mellett, jobbra a k\xF3d":"The board and the program side by side, the code on the right","Vez\xE9rl\u0151k \xE9s GPIO-k; a szimul\xE1ci\xF3 ind\xEDt\xE1sakor erre v\xE1lt":"Controls and GPIOs; switches here when the simulation starts","Kedvenc (kattint\xE1sra kiveszi)":"Favorite (click to remove)",Kedvencekhez:"Add to favorites","{x} kedvenc":"{x} favorite","Hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz (m\xE1s tervekben is el\xE9rhet\u0151 lesz)":"Add to your library (available in other designs too)","{x} a k\xF6nyvt\xE1rba":"{x} to the library",Szerkeszt\u00E9s:"Edit","{x} szerkeszt\xE9se":"Edit {x}",Kedvencek:"Favorites","Legut\xF3bb haszn\xE1lt":"Recently used","A megnyitott terv saj\xE1t alkatr\xE9szei, amelyek nincsenek a k\xF6nyvt\xE1radban. \uFF0B: hozz\xE1ad\xE1s a saj\xE1t k\xF6nyvt\xE1rhoz.":"Custom parts of the open design that are not in your library. \uFF0B: add to your library.","Saj\xE1t k\xF6nyvt\xE1r":"Your library","Nincs tal\xE1lat.":"No results.",L\u00E1b:"Pin","f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)":"half step (8 steps)","teljes l\xE9p\xE9s, k\xE9t tekercs (4)":"full step, two coils (4)","egy tekercs (4)":"one coil (4)","bin\xE1ris sz\xE1ml\xE1l\xF3 (16)":"binary counter (16)","saj\xE1t minta":"custom pattern","Ut\xE1nfut\xE1s (ki k\xE9sleltetve)":"Off delay (stays on)","Bekapcsol\xE1si k\xE9sleltet\xE9s":"On delay",Impulzus:"Pulse","Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)":"Filter (both changes)",Id\u0151:"Time","Digit\xE1lis bemenet":"Digital input","Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony.":"The level of a pin (e.g. a push button). With a pull-up the pressed button reads low, so \u201Cactive\u201D is low by default.",Felh\u00FAz\u00E1s:"Pull","fel (3,3 V)":"up (3.3 V)","le (GND)":"down (GND)",Akt\u00EDv:"Active","alacsony szinten":"when low","magas szinten":"when high","Anal\xF3g bemenet":"Analog input","Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick.":"The voltage of an ADC-capable pin as 0\u20261 (0 V \u2192 0, 3.3 V \u2192 1), e.g. a potentiometer or joystick.",\u00E9rt\u00E9k:"value",\u00C1lland\u00F3:"Constant","R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz).":"A fixed number (0\u20261 for PWM duty, or for comparison).",\u00C9rt\u00E9k:"Value",NEM:"NOT","Megford\xEDtja a jelet.":"Inverts the signal.",be:"in",ki:"out",\u00C9S:"AND","Akkor igaz, ha mindk\xE9t bemenet igaz.":"True when both inputs are true.",A:"A",B:"B",C:"C",D:"D",VAGY:"OR","Akkor igaz, ha legal\xE1bb az egyik bemenet igaz.":"True when at least one input is true.","KIZ\xC1R\xD3 VAGY":"XOR","Akkor igaz, ha pontosan az egyik bemenet igaz.":"True when exactly one input is true.",\u00D6sszehasonl\u00EDt\u00E1s:"Compare","Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D.":"True when the input is above (or below) the threshold, e.g. \u201Cthe potentiometer is turned past halfway\u201D.",igaz:"true",Felt\u00E9tel:"Condition","nagyobb, mint":"greater than","kisebb, mint":"less than",Hat\u00E1r:"Threshold",\u00DCtemad\u00F3:"Clock","N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED).":"Square wave: true for the duty share of each period (blinking LED).",Peri\u00F3dus:"Period",Kit\u00F6lt\u00E9s:"Duty",V\u00E1lt\u00F3kapcsol\u00F3:"Toggle","Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026":"Flips on every rising edge (e.g. a button press): on, off, on\u2026",v\u00E1lt\u00E1s:"toggle",\u00E1llapot:"state",Sz\u00E1ml\u00E1l\u00F3:"Counter","Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez).":"Adds one on every rising edge and starts over at the limit; reset sets it to zero. \u201CRatio\u201D is 0\u20261 (for PWM).",sz\u00E1mol:"count",t\u00F6rl\u00E9s:"reset",ar\u00E1ny:"ratio",L\u00E9p\u00E9ssz\u00E1m:"Steps",Id\u0151z\u00EDt\u0151:"Timer","K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s).":"Delay or hold for the given time. Off delay: turns on at once and stays true this long after the input ends (staircase light). On delay: turns on only when the input has been true for this long. Pulse: true for this long on a rising edge. Filter: passes on both changes only if they last this long (debouncing).",M\u0171k\u00F6d\u00E9s:"Mode",Sorozat:"Sequence","Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet.":"On every rising edge (e.g. from a clock) the next row of the pattern goes to outputs A\u2013D: stepper coils, chaser lights, counter. The \u201Cback\u201D input (or the direction) steps backwards.",l\u00E9p\u00E9s:"step",vissza:"back",Minta:"Pattern","Saj\xE1t minta (sorok sz\xF3k\xF6zzel)":"Custom pattern (rows separated by spaces)",Ir\u00E1ny:"Direction",el\u0151re:"forward","Digit\xE1lis kimenet":"Digital output","Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja).":"True \u2192 the pin is high (3.3 V), false \u2192 low (e.g. LED, relay, MOSFET gate).","PWM kimenet":"PWM output","Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %.":"Duty: LED brightness, motor speed. If the input is not connected, the set duty applies; when connected, the input (0\u20261) sets it, e.g. Constant 0.3 = 30 % or a potentiometer. A logic signal (e.g. Clock) is 0 % or 100 %. For a servo, 50 Hz and 2.5\u202612.5 %.","Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)":"Duty (without input)",Frekvencia:"Frequency","jel / adat":"signal / data","f\xF6ld (GND)":"ground (GND)","an\xF3d / +":"anode / +","kat\xF3d / \u2212":"cathode / \u2212",\u00E1ltal\u00E1nos:"general","GPIO (vez\xE9rl\u0151lap)":"GPIO (controller board)","3,3 V kimenet":"3.3 V output","t\xE1p (VSYS, 5V\u2026)":"power (VSYS, 5V\u2026)","egy\xE9b (RUN, EN\u2026)":"other (RUN, EN\u2026)","adc, adc2, in (csak bemenet), nopull, strap, uart0, led, valamint buszfunkci\xF3k: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026":"adc, adc2, in (input only), nopull, strap, uart0, led, and bus functions: i2c0.sda, spi1.mosi, uart0.tx, pwm3.a\u2026","{n} l\xE1b egy sorban":"{n} pins in a row","k\xFCls\u0151 \xB7 {n} kivezet\xE9s":"external \xB7 {n} lead||external \xB7 {n} leads",n\u00E9v:"name",el\u0151tag:"prefix",kateg\u00F3ria:"category",szerel\u00E9s:"mounting","l\xE1bak (kifejez\xE9sek, ism\xE9tl\xE9s vagy extra mez\u0151k)":"pins (expressions, repeats or extra fields)",l\u00E1bcsoportok:"pin groups",param\u00E9terek:"parameters",l\u00E1bt\u00E1bla:"pin table","a test m\xE9rete":"the body size","saj\xE1t rajzelemek":"custom drawing elements",l\u00E1bfeliratok:"pin labels","a villamos modell r\xE9szletei":"details of the electrical model",vez\u00E9rl\u0151k:"controls",l\u00E1bak:"pins","\xDAj modul":"New module","Villamos modell":"Electrical model","(m\xE1solat)":"(copy)","Alkatr\xE9sz: {x}":"Part: {x}",\u00FAj:"new","jav\xEDtsd, miel\u0151tt az \u0171rlapra v\xE1ltasz.":"fix it before switching to the form.","Az \u0171rlapon legal\xE1bb egy, fix hely\u0171 l\xE1b kell (sz\xE1mmal megadott sor \xE9s oszlop).":"The form needs at least one pin at a fixed place (row and column given as numbers).","Nincs le\xEDr\xE1s.":"No description.","Adj hozz\xE1 l\xE1bakat: kattints az el\u0151n\xE9zetre, vagy haszn\xE1ld a l\xE1bsor-gener\xE1tort.":"Add pins: click on the preview, or use the pin row generator.",Alapadatok:"Basics",L\u00E1bak:"Pins","nincs l\xE1bhoz k\xF6tve.":"not connected to a pin.","A logik\xE1hoz kell egy t\xE1pbemenet szerep\u0171 l\xE1b.":"The logic needs a pin with the power input role.","A logik\xE1hoz kell egy f\xF6ld (GND) szerep\u0171 l\xE1b.":"The logic needs a pin with the ground (GND) role.",T\u00E1rol\u00F3:"Register","az \xE9rt\xE9k bemenete nincs bek\xF6tve.":"the value input is not connected.",Nyom\u00F3gomb:"Push button",Megjelen\u00E9s:"Appearance",El\u0151n\u00E9zet:"Preview","Az alkatr\xE9sz adatai":"Part data","Az alkatr\xE9sz probl\xE9m\xE1i":"Problems of the part","Szerkeszt\xE9si m\xF3d":"Editing mode","L\xE1bak: hely, n\xE9v, szerep, csoport, funkci\xF3":"Pins: position, name, role, group, function","M\u0171k\xF6d\xE9s: villamos modell, digit\xE1lis logika, vez\xE9rl\u0151 a szimul\xE1ci\xF3ban":"Behavior: electrical model, digital logic, control in the simulation","A le\xEDr\xE1s teljes JSON-form\xE1ja":"The full JSON form of the description",Elvet\u00E9s:"Discard","Elvet\xE9s: a nem mentett m\xF3dos\xEDt\xE1sok eldob\xE1sa, vissza a kiindul\xF3 \xE1llapotra":"Discard: drop the unsaved changes and go back to the starting state",Ment\u00E9s:"Save","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba (Ctrl+S)":"Save to your library (Ctrl+S)","Ment\xE9s a saj\xE1t k\xF6nyvt\xE1rba, \xE9s a lerak\xE1s ind\xEDt\xE1sa a panelon (Ctrl+S)":"Save to your library and start placing it on the board (Ctrl+S)","saj\xE1t alkatr\xE9sz":"custom part","\xFAj, m\xE1solatb\xF3l":"new, from a copy","\xFAj alkatr\xE9sz":"new part","nem mentett m\xF3dos\xEDt\xE1sok":"unsaved changes","JSON-n\xE9zetben az alapadatok a le\xEDr\xE1sban szerkeszthet\u0151k.":"In JSON view the basics are edited in the description.","JSON-n\xE9zetben a megjelen\xE9s a le\xEDr\xE1sban szerkeszthet\u0151.":"In JSON view the appearance is edited in the description.","Az alkatr\xE9sz t\xF6rl\xE9se a saj\xE1t k\xF6nyvt\xE1rb\xF3l":"Delete the part from your library","Alkatr\xE9sz t\xF6rl\xE9se":"Delete part","A tervben m\xE1r lerakott p\xE9ld\xE1nyok megmaradnak (a terv saj\xE1t le\xEDr\xE1s\xE1val).":"Instances already placed in the design are kept (with the design's own description).","A le\xEDr\xE1s rendben, menthet\u0151.":"The description is fine and can be saved.",csoport:"group","Az azonos csoport\xFA l\xE1bak gy\xE1rilag \xF6ssze vannak k\xF6tve":"Pins in the same group are connected internally","pl. 3-5.5":"e.g. 3-5.5","Csak t\xE1pbemenetn\xE9l (vin) adhat\xF3 meg":"Only for a power input (vin)","t\xE1pfesz\xFClts\xE9g-tartom\xE1ny":"supply voltage range","pl. adc i2c0.sda":"e.g. adc i2c0.sda",k\u00E9pess\u00E9gek:"capabilities",buszfunkci\u00F3:"bus function","A buszfunkci\xF3, amire a l\xE1b v\xE1r":"The bus function the pin expects",El\u0151tag:"Prefix","A p\xE9ld\xE1nyok neve: el\u0151tag + sorsz\xE1m, pl. U1, LCD1":"Instance names: prefix + number, e.g. U1, LCD1",Kateg\u00F3ria:"Category","A panel mell\xE9 ker\xFCl; a l\xE1baihoz k\xE1bel (vezet\xE9k) k\xF6t be":"Goes next to the board; a cable (wire) connects its pins","K\xFCls\u0151 alkatr\xE9sz (k\xE1bellel bek\xF6tve)":"External part (connected by cable)",Marg\u00F3:"Margin",Kiterjeszt\u00E9s:"Extension",fent:"top",lent:"bottom",balra:"left",jobbra:"right","A test m\xE9rete a l\xE1bakon t\xFAl, lyukban (pl. egy kijelz\u0151panel nagyobb a l\xE1bsor\xE1n\xE1l).":"The body size beyond the pins, in holes (e.g. a display board is larger than its pin row).","Felirat a testen":"Text on the body","pl. TP4056":"e.g. TP4056",L\u00E1bnevek:"Pin names","a l\xE1bak alatt":"below the pins","a l\xE1bak felett":"above the pins","befel\xE9 (a test k\xF6zepe fel\xE9)":"inward (toward the body center)","kifel\xE9 (a test sz\xE9l\xE9n t\xFAl)":"outward (beyond the body edge)",nincsenek:"none","P\xE9ld\xE1nyn\xE9v ki\xEDr\xE1sa (pl. U1)":"Show the instance name (e.g. U1)","L\xE1bsor:":"Pin row:",l\u00E1bsz\u00E1m:"pin count","db,":"pcs,",ir\u00E1ny:"direction",v\u00EDzszintes:"horizontal",f\u00FCgg\u0151leges:"vertical","innen:":"from:","kezd\u0151 sor":"start row","kezd\u0151 oszlop":"start column","nevek vessz\u0151vel, pl. RST,CE,DC,DIN,CLK,VCC,BL,GND":"names separated by commas, e.g. RST,CE,DC,DIN,CLK,VCC,BL,GND","L\xE1bsor hozz\xE1ad\xE1sa":"Add pin row","A szerepet a n\xE9vb\u0151l tippeli (GND, VCC, VIN\u2026), ut\xE1na a t\xE1bl\xE1zatban \xE1ll\xEDthat\xF3.":"The role is guessed from the name (GND, VCC, VIN\u2026), then it can be set in the table.","Minden oszlop l\xE1tszik.":"All columns are shown.","A kijel\xF6lt l\xE1b tov\xE1bbi adatai (csoport, funkci\xF3, t\xE1p) a sora alatt.":"More data of the selected pin (group, function, supply) below its row.","Minden oszlop":"All columns","Azon.":"ID",Sor:"Row","Oszl.":"Col.",Szerep:"Role",Csoport:"Group","T\xE1pbemenetn\xE9l a megengedett fesz\xFClts\xE9g, pl. 2.7-3.6":"For a power input, the allowed voltage, e.g. 2.7-3.6","T\xE1p (V)":"Supply (V)","GPIO-n\xE1l a k\xE9pess\xE9gek ({x}); perif\xE9ri\xE1n\xE1l a buszfunkci\xF3, amire a l\xE1b v\xE1r":"For a GPIO, its capabilities ({x}); for a peripheral, the bus function the pin expects",Funkci\u00F3:"Function",azonos\u00EDt\u00F3:"ID",szerep:"role","L\xE1b t\xF6rl\xE9se":"Delete pin","Az els\u0151 l\xE1b lesz a lerak\xE1si pont (0:0); ment\xE9skor a t\xF6bbi ehhez igazodik.":"The first pin becomes the placement point (0:0); on saving the others are aligned to it.","Az \u0171rlap ezeket nem tudja megjelen\xEDteni:":"The form cannot show these:","Ha m\xE9gis \xE1tv\xE1ltasz, ezek elvesznek.":"If you switch anyway, they are lost.","V\xE1lt\xE1s az \u0171rlapra (elhagyja \u0151ket)":"Switch to the form (drops them)","Maradok a JSON-n\xE1l":"Stay in JSON","A le\xEDr\xE1s teljes JSON-form\xE1ja; az \u0171rlapon be\xE1ll\xEDtottak itt is megjelennek, \xE9s az itteni m\xF3dos\xEDt\xE1sok az \u0171rlapra v\xE1lt\xE1skor visszaker\xFClnek. Ha a le\xEDr\xE1s olyat tartalmaz, amit az \u0171rlap nem tud (kifejez\xE9sek, param\xE9terek, saj\xE1t rajzelemek), a v\xE1lt\xE1s el\u0151tt sz\xF3l. A mez\u0151k le\xEDr\xE1sa: {x}.":"The full JSON form of the description; what you set on the form appears here, and changes made here go back when you switch to the form. If the description has something the form cannot handle (expressions, parameters, custom drawing elements), you are told before switching. The fields are described in {x}.","Le\xEDr\xE1s JSON":"Description JSON","JSON alkalmaz\xE1sa":"Apply JSON","Kiindul\xE1s be\xE9p\xEDtettb\u0151l:":"Start from a built-in:","be\xE9p\xEDtett alkatr\xE9sz":"built-in part","El\u0151bb adj l\xE1bakat az alkatr\xE9szhez a L\xE1bak f\xFCl\xF6n.":"First add pins to the part on the Pins tab.",Kapcsol\u00E1s:"Circuit",Igazs\u00E1gt\u00E1bla:"Truth table","Logika n\xE9zete":"Logic view","T\xE1rol\xF3s (sorrendi) logik\xE1n\xE1l a t\xE1bl\xE1zat a t\xE1rol\xF3k pillanatnyi \xE9rt\xE9k\xE9t is bemenetnek veszi.":"With registers (sequential logic) the table also takes the registers' current value as an input.","Legfeljebb {max} bemenet f\xE9r a t\xE1bl\xE1zatba (most {n}); enn\xE9l t\xF6bbn\xE9l a Kapcsol\xE1s n\xE9zetet haszn\xE1ld.":"At most {max} inputs fit in the table (now {n}); for more, use the Circuit view.","Itt az enged\xE9lyez\xE9s 0: a kimenet nem hajt":"Enable is 0 here: the output does not drive","Kattints egy kimeneti cell\xE1ra: 0 \u2194 1. A kimenet el\u0151tti kapuk a t\xE1bl\xE1zatb\xF3l a legr\xF6videbb alakban (az \xC9S-ek VAGY-a) \xFAjra\xE9p\xFClnek; a {z} sorokban az enged\xE9lyez\xE9s 0, ott mindegy.":"Click an output cell: 0 \u2194 1. The gates before the output are rebuilt from the table in the shortest form (an OR of ANDs); in {z} rows enable is 0, so it does not matter.","A kijel\xF6lt elem vagy kimenet l\xE1bai kiemelve. Kattints egy l\xE1bra: a L\xE1bak f\xFCl\xF6n kijel\xF6li.":"The pins of the selected element or output are highlighted. Click a pin: it is selected on the Pins tab.","Kattints egy \xFCres lyukra: \xFAj l\xE1b oda. Kattints egy l\xE1bra: kijel\xF6l\xE9s a t\xE1bl\xE1zatban; h\xFAzva \xE1thelyezhet\u0151. A szaggatott keret a lerak\xE1si pont.":"Click an empty hole: a new pin there. Click a pin: selects it in the table; drag to move it. The dashed frame is the placement point.","JSON-n\xE9zetben az el\u0151n\xE9zet csak a l\xE1bakat mutatja (alap\xE9rt\xE9kekkel).":"In JSON view the preview shows only the pins (with default values).","Biztos? Kattints \xFAjra":"Sure? Click again","Biztos? {n} p\xE9ld\xE1ny is t\xF6rl\u0151dik":"Sure? {n} instance is deleted too||Sure? {n} instances are deleted too",Kapu:"Gate","Villamos elem":"Electrical element","Az alkatr\xE9sz egy l\xE1ba: logikai bemenet, \xE9s ide k\xF6tnek a villamos elemek is":"A pin of the part: a logic input, and electrical elements connect here too","Kimenet (l\xE1b)":"Output (pin)","Logikai kimenet: az ide k\xF6t\xF6tt jel hajtja a l\xE1bat":"Logic output: the signal connected here drives the pin",Kapuk:"Gates","{x} kapu":"{x} gate",Egy\u00E9b:"Other","Az \xF3rajel \xE9l\xE9n felveszi a D \xE9rt\xE9k\xE9t, egy\xE9bk\xE9nt megtartja":"Takes the value of D on the clock edge, otherwise holds it","\xC1lland\xF3 0":"Constant 0","Mindig 0":"Always 0","\xC1lland\xF3 1":"Constant 1","Mindig 1":"Always 1","Villamos elemek":"Electrical elements","Kivezet\xE9sei l\xE1bakhoz k\xF6thet\u0151k":"Its leads connect to pins","Szimul\xE1ci\xF3ban lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti":"In the simulation, pressing it connects its two pins","lefut\xF3 \xE9l":"falling edge","felfut\xF3 \xE9l":"rising edge","nem k\xF6telez\u0151":"optional",Ki:"Out","azon.":"ID","Bemenetek sz\xE1ma":"Number of inputs","Erre a n\xE9vre a kifejez\xE9sek is hivatkozhatnak":"Expressions can refer to this name",\u00D3rajel:"Clock","A {r} (0-ra) \xE9s a {s} (1-re) bemenet nem k\xF6telez\u0151; 1 szintn\xE9l azonnal hat.":"The {r} (to 0) and {s} (to 1) inputs are optional; they act at once at level 1.",be\u00E1ll\u00EDt\u00E1s:"set",Elem:"Element","ESP32-szer\u0171 lap: a buszfunkci\xF3 b\xE1rmely GPIO-ra kioszthat\xF3; a k\xE9pess\xE9gek ekkor az alap\xE9rtelmezett l\xE1bak":"ESP32-like board: a bus function can be assigned to any GPIO; the capabilities are then the default pins","szabadon kioszthat\xF3 buszok":"freely assignable buses","A kivezet\xE9seit egy-egy {x} elemhez k\xF6sd (a l\xE1b kimeneti pontj\xE1t\xF3l h\xFAzva).":"Connect each lead to a {x} element (dragging from the pin's output point).","Szimul\xE1ci\xF3 k\xF6zben a gombot lenyomva a k\xE9t l\xE1b\xE1t \xF6sszek\xF6ti. Mindk\xE9t kivezet\xE9s\xE9t egy-egy {x} elemhez k\xF6sd.":"During the simulation, pressing the button connects its two pins. Connect both leads to a {x} element each.","Push-pull: 1-n\xE9l a t\xE1p fel\xE9, 0-n\xE1l a f\xF6ld fel\xE9 hajt. Nyitott drain: csak a f\xF6ld fel\xE9 (felh\xFAz\xF3 ellen\xE1ll\xE1s kell).":"Push-pull: drives toward the supply at 1, toward ground at 0. Open drain: only toward ground (needs a pull-up resistor).","nyitott drain":"open drain","\xC9rt\xE9k kifejez\xE9ssel":"Value as an expression","pl. !(A & B)":"e.g. !(A & B)","Jelek: ! NEM, & \xC9S, | VAGY, ^ KIZ\xC1R\xD3 VAGY, z\xE1r\xF3jel, 0/1. Enterre a diagram ebb\u0151l \xFAjra\xE9p\xFCl.":"Symbols: ! NOT, & AND, | OR, ^ XOR, parentheses, 0/1. On Enter the diagram is rebuilt from it.",Enged\u00E9lyez\u00E9s:"Enable","\xFCres = mindig hajt; pl. !OE":"empty = always drives; e.g. !OE","A kifejez\xE9st \xE1t\xEDrva (Enter) a kimenet el\u0151tti kapuk ebb\u0151l \xFAjra\xE9p\xFClnek.":"Editing the expression (Enter) rebuilds the gates before the output from it.","Elem t\xF6rl\xE9se":"Delete element","Bels\u0151 kapcsol\xE1s":"Internal circuit","+ Elem":"+ Element","A kijel\xF6lt elem vagy \xE9l t\xF6rl\xE9se (Delete)":"Delete the selected element or edge (Delete)","Az eg\xE9sz kapcsol\xE1s l\xE1tsz\xF3djon":"Show the whole circuit","Bels\u0151 kapcsol\xE1s v\xE1szna":"Internal circuit canvas","\xDCres. A {x} men\xFCb\u0151l rakj le bemenetet, kaput \xE9s kimenetet, majd h\xFAzz \xE9lt a kimeneti pontj\xE1t\xF3l a bemeneti pontig.":"Empty. From the {x} menu place an input, a gate and an output, then drag an edge from the output point to the input point.",Ellen\u00E1ll\u00E1s:"Resistor","1. v\xE9g":"end 1","2. v\xE9g":"end 2",Di\u00F3da:"Diode","Nyit\xF3fesz.":"Forward V",Fesz\u00FClts\u00E9gforr\u00E1s:"Voltage source",Fesz\u00FClts\u00E9g:"Voltage","N-MOSFET":"N-MOSFET",K\u00FCsz\u00F6b:"Threshold","Nyitott ell.":"On resistance",Kondenz\u00E1tor:"Capacitor","1. v\xE9g (+)":"end 1 (+)",Kapacit\u00E1s:"Capacitance","N\xE9vleges fesz.":"Rated voltage","DC motor":"DC motor","\xDCzemi ell.":"Operating resistance","NPN tranzisztor":"NPN transistor","Er\u0151s\xEDt\xE9s (\u03B2)":"Gain (\u03B2)","Vez\xE9rl\u0151lap (MCU)":"Controller board (MCU)",GND:"GND","t\xE1p be":"power in","USB 5V (ha van)":"USB 5V (if any)","Stab. min.":"Reg. min.","T\xE1p max.":"Supply max.","GPIO max.":"GPIO max.","NEM-\xC9S":"NAND","NEM-VAGY":"NOR",ER\u0150S\u00CDT\u0150:"BUFFER",\u00F3rajel:"clock",enged\u00E9lyez\u00E9s:"enable","1. l\xE1b":"pin 1","2. l\xE1b":"pin 2","Ezt nem lehet \xF6sszek\xF6tni.":"These cannot be connected.","Ennek az elemnek nincs kimenete.":"This element has no output.","Villamos elem \xE9s nyom\xF3gomb kivezet\xE9se csak l\xE1bhoz k\xF6thet\u0151.":"Leads of an electrical element or a push button connect only to a pin.","Bemenet {x}":"Input {x}","\xC1lland\xF3 {x}":"Constant {x}","T\xE1rol\xF3 {x}":"Register {x}","Kimenet {x}":"Output {x}","Bemenet: nincs l\xE1b kiv\xE1lasztva.":"Input: no pin selected.","Kapukb\xF3l \xE1ll\xF3 k\xF6r: a jel \xF6nmag\xE1ba fut vissza (t\xE1rol\xF3val szak\xEDthat\xF3 meg).":"A loop of gates: the signal feeds back into itself (a register can break it).","{g} kapu: a(z) {i}. bemenete nincs bek\xF6tve.":"{g} gate: input {i} is not connected.","Nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {x}":"No such (or ambiguous) pin or register: {x}","Nyom\xF3gomb: mindk\xE9t l\xE1b\xE1t egy-egy l\xE1bhoz kell k\xF6tni.":"Push button: both its pins must be connected to a pin each.","Kattints: ugr\xE1s a mez\u0151h\xF6z":"Click: jump to the field","{a}: teljesen a panelon k\xEDv\xFCl esik":"{a}: lies completely off the board","{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva":"{a}: connector {b} has fewer pins than the cable ({c}), so it is not plugged in","{a}: a {b} l\xE1b sehova sincs k\xF6tve":"{a}: the {b} pin is not connected anywhere","\xDCtk\xF6z\xE9s a {a} lyukban: {b}":"Collision in hole {a}: {b}","{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik":"{a} is in a drilled hole ({b}), there is no copper under it: the pin connects nowhere","Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z":"Wire end in a drilled hole ({a}:{b}): no copper under it","H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})":"Bridge at a drilled hole ({a}:{b}\u2013{c}:{d})","{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt":"{a}: sides A and B are on the same net, the button is shorted","{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve":"{a}: the battery's + and \u2212 terminals are connected","{a}: {b} \xF6ssze van k\xF6tve":"{a}: {b} are connected",\u00E9s:"and"," (egy szekci\xF3ba esnek)":" (they fall in one section)","Z\xE1rlat: GND \u2013 {a}":"Short circuit: GND \u2013 {a}","Z\xE1rlat: 3V3 \u2013 {a}":"Short circuit: 3V3 \u2013 {a}","{a} k\xF6z\xF6s neten van":"{a} are on the same net","{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve":"{a} connected directly to {b}","\xD6ssze\xE9r\u0151 jelek: {a}":"Touching signals: {a}","{a} \xE9s {b} teste \xE1tfed":"The bodies of {a} and {b} overlap","{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.":"{a}: in {b} sections several pins share a section. The pin row cannot run along the sections; rotate it by 90\xB0.","Z\xE1rlat: {a} egy szekci\xF3ba esik":"Short circuit: {a} fall in one section","Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.":"A wire end shares hole {a} with a part pin, which is not stable enough.","Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).":"Move it to hole {a} (same section).","A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.":"The section has no free hole: bridge over to a neighboring section and continue from there.","{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban":"{a} wire ends in the same hole {b}","Kapcsolat nincs bek\xF6tve: {a}":"Connection not routed: {a}","{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)":"{a}: can only be routed with a wire (no free bridge path)","{a}: egyik oldala sincs GPIO-ra k\xF6tve":"{a}: neither side is connected to a GPIO","{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.":"{a}: the motor is connected directly to a GPIO. It needs a transistor or MOSFET to drive it.","{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.":"{a}: no flyback diode on the motor. Put a diode (e.g. 1N5817) across the motor terminals, cathode toward +, otherwise the voltage spike at switch-off can destroy the transistor.","{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g":"{a}.{b}: no supply voltage","(a {a} nincs bek\xF6tve)":"({a} is not connected)","{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l":"{a}.{b}: {c} V, more than the allowed {d} V","{a}.{b}: csak {c} V, legal\xE1bb {d} V kell":"{a}.{b}: only {c} V, at least {d} V is needed","{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}":"{a}.{b} ({c}) \u2192 {d}: this pin is not {e}, so hardware {f} cannot be used on it, only software. Suitable pins: {g}","{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.":"{a}: its {b} pins ended up on different buses ({c}). Connect one peripheral to one bus.","{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).":"{a} are on the same PWM slice ({b}), they can only run at the same frequency (now: {c}).","{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}":"{a}: analog signal on {b}, but it has no ADC. Suitable: {c}","{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}":"{a}: ADC2 channel, it does not measure while WiFi is on. For an analog signal choose an ADC1 pin instead: {b}","{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})":"{a}: set it to ADC mode for analog measurement (now: {b})","Z\xE1rlat a VBUS-on ({a} A)":"Short circuit on VBUS ({a} A)","3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)":"3V3 overloaded or shorted ({a} mA)","{a}: {b} mA, kimenet z\xE1rlatban":"{a}: {b} mA, output shorted","{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)":"{a}: {b} mA, too much (recommended max. ~{c} mA)","{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.":"{a}: floats while the button is not pressed{b}. Add an external pull-up resistor (e.g. 10 k\u03A9 to 3V3), or choose another GPIO.","(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)":"(this pin has no internal pull-up)","{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V":"{a}: the power input ({b}) has only {c} V, the regulator needs at least {d} V, so there is no 3.3 V","{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell":"{a}: {b} mA, it needs a series resistor","{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A, more than the allowed {c}A","{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).":"{a}: floating input: {b}. Do not leave a CMOS input open: connect it to a signal, or tie an unused one to GND (or VCC).","{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}":"{a}.{b}: {c} mA output current, more than the allowed {d}A{e}","(k\xE9t kimenet egym\xE1s ellen?)":"(two outputs fighting?)","{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l":"{a}: {b} V, more than the rated {c} V","{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).":"{a}: no valid servo signal. Connect the signal pin to a GPIO in PWM mode: 50 Hz, 2.5\u201312.5 % duty (7.5 % = center).","{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the base floats. Add a pull-down resistor between B and E (e.g. 10 k\u03A9), or connect it to an output.","{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l":"{a}: {b}A collector current, more than the allowed {c}A","{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.":"{a}: not saturated (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). As a switch it needs a smaller base resistor: the base current (now {d}A) should be about a tenth of the desired collector current.","{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.":"{a}: connected in reverse ({b} V). The electrolytic capacitor's + pin goes to the higher voltage.","{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.":"{a}: the gate floats. Add a pull-down resistor between G and S (e.g. 100 k\u03A9), or connect it to an output.","{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)":"{a}: short circuit at the power input ({b} A)","{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.":"{a}: the USB of {b} charges the battery directly through the power input ({c}) ({d} A). A Schottky diode is needed between the battery and the power input.","{a}: {b} A t\xF6lt\u0151\xE1ram, sok":"{a}: {b} A charging current, too much","{a}: z\xE1rlat ({b} A)":"{a}: short circuit ({b} A)","{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.":"{a}: the USB charges the battery directly ({b} A). A Schottky diode is needed in front of VSYS.","A l\xE1b nincs GPIO-ra k\xF6tve":"The pin is not connected to a GPIO","Nincs kiv\xE1lasztva l\xE1b":"No pin selected","Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja":"Another block uses this GPIO too","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"strapping pin: its level matters at power-up; at the wrong level the board does not start or enters download mode. If you can, choose another GPIO.","a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the serial port (USB-serial converter): it can interfere with uploading and serial output. If you can, choose another GPIO.","a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"used by the built-in USB. If you can, choose another GPIO.","a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.":"the board's built-in LED is on this pin too.","Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek.":"No controller board in the design; pin numbers are unknown.","{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.":"{a}: its description has no Arduino target; made with the generic Arduino functions.","{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).":"{a}: used by several blocks ({b}, {c}).","0\u20133,3 V-os tartom\xE1ny":"0\u20133.3 V range","anal\xF3g bemenet: {a} \u2192 {b}":"analog input: {a} \u2192 {b}",ut\u00E1nfut\u00E1s:"off delay","felfut\xF3 \xE9l: impulzus":"rising edge: pulse","bekapcsol\xE1si k\xE9sleltet\xE9s":"on delay","indul\xE1skor nem l\xE9p":"does not step at start","felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor":"rising edge: next row","Proofboard \u2013 gener\xE1lt program":"Proofboard \u2013 generated program","\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket.":"Every tick (20 ms) it reads the inputs, computes the blocks and sets the outputs.","blokkok \xE9rt\xE9kei \xE9s \xE1llapota":"block values and state",Lap:"Board",alaplapkezel\u0151:"Boards Manager","A le\xEDr\xE1s nem objektum.":"The description is not an object.","Hi\xE1nyzik a n\xE9v.":"The name is missing.","Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).":"The prefix is 1\u20136 characters and starts with a letter (e.g. U, MOD, J).","Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.":"The short footprint description is missing.","Legal\xE1bb egy l\xE1b kell.":"At least one pin is needed.","\xC9rv\xE9nytelen param\xE9terkulcs.":"Invalid parameter key.","K\xE9tszer szerepel: {a}":"Appears twice: {a}","Ismeretlen param\xE9tert\xEDpus: {a}":"Unknown parameter type: {a}","A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.":"The select type needs options.","Hi\xE1nyzik az alap\xE9rt\xE9k.":"The default value is missing.","A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ":"The pins cannot be evaluated: ","Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja.":"The pin ID is missing.","A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres.":"With default values the pin list is empty.","{a}: a helye nem sz\xE1m.":"{a}: its position is not a number.","{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.":"{a}: a pin can only be at a whole hole position.","K\xE9tszer szerepel a l\xE1b: {a}":"The pin appears twice: {a}","{a} \xE9s {b} ugyanabban a lyukban ({c}).":"{a} and {b} are in the same hole ({c}).","{a}: {b} nem sz\xE1m.":"{a}: {b} is not a number.","{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.":"{a}: the minimum voltage cannot be higher than the maximum.","{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})":"{a}: unknown bus function: {b} (allowed: {c})","{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.":"{a}: a voltage range only matters for a power input (vin).","Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt.":"There is a power input but no GND pin: the supply voltage is measured against the board's ground.","Egy csoportban legal\xE1bb k\xE9t l\xE1b kell.":"A group needs at least two pins.","Nincs ilyen l\xE1b: {a}":"No such pin: {a}","{a} t\xF6bb csoportban is szerepel.":"{a} appears in several groups.","Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.":"The pin of lead {a} is missing.","Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b.":"Two leads of an element cannot be the same pin.","nem sz\xE1m":"not a number","{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.":"{a}: not a valid value.","T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).":"Register name: an identifier starting with a letter is needed (now: \u201C{a}\u201D).","K\xE9tszer szerepel a t\xE1rol\xF3: {a}":"The register appears twice: {a}","{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.":"{a}: a register name cannot be a pin name.","{a}: hi\xE1nyzik.":"{a}: missing.","{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}":"{a}: no such pin or register: {b}","{a}|{b} \xF3rajele":"{a}|clock of {b}","{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)":"{a}|next value of {b} (D)","{a}|{b} t\xF6rl\xE9se":"{a}|reset of {b}","{a}|{b} be\xE1ll\xEDt\xE1sa":"{a}|set of {b}","{a}: az \xE9l rise vagy fall lehet.":"{a}: the edge can be rise or fall.","A logik\xE1hoz legal\xE1bb egy kimenet kell.":"The logic needs at least one output.","Nincs ilyen kimeneti l\xE1b: {a}":"No such output pin: {a}","{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.":"{a}: two expressions drive the same output.","{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.":"{a}: a power or GND pin cannot be an output.",kifejez\u00E9s:"expression","{a}: hi\xE1nyzik a kifejez\xE9s.":"{a}: the expression is missing.","{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}":"{a} {b}: no such (or ambiguous) pin or register: {c}","{a}: a kimenet t\xEDpusa pp vagy od lehet.":"{a}: the output type can be pp or od.","A csatlakoz\xF3 le\xEDr\xE1sa objektum.":"The connector description is an object.","A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.":"The connector's pin count needs an integer (int) parameter.","A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.":"The connector's pin names need a parameter of type names.","A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres.":"The connector's pin list cannot be empty.","A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}":"The connector has no such pin: {a}","A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}":"The slider has no such parameter: {a}","A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.":"The slider's parameter ({a}) must be a number with min and max.","Ismeretlen vez\xE9rl\u0151.":"Unknown control.","Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.":"You must give which pins close together.","Ismeretlen szerel\xE9s: {a} (board vagy off).":"Unknown mounting: {a} (board or off).","Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.":"No body (body layer): the part shows only as pins.","Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel":"The closing parenthesis is missing","Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n":"A term is missing at the end of the expression","Itt nem \xE1llhat: \u201E{x}\u201D":"Not allowed here: \u201C{x}\u201D","\xDCres kifejez\xE9s":"Empty expression","F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D":"Extra part: \u201C{x}\u201D",'Ez nem Proofboard alkatr\xE9szk\xF6nyvt\xE1r (hi\xE1nyzik a "format": "proofboard-parts").':'This is not a Proofboard part library ("format": "proofboard-parts" is missing).',"Raspberry Pi Pico W":"Raspberry Pi Pico W","2\xD720 l\xE1b, sort\xE1v 6":"2\xD720 pins, row spacing 6","Sort\xE1v (oszt\xE1s)":"Row spacing (pitch)","A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat.":"The distance of the two pin rows in holes (0 \u2192 {span}). The datasheet says 17.78 mm = 7 pitches, but with pin headers, a socket or an adapter board it can differ (e.g. 6 or 8). Measure yours with a ruler.","ESP32 DevKit V1 (DOIT, 30 l\xE1b)":"ESP32 DevKit V1 (DOIT, 30 pins)","2\xD715 l\xE1b, sort\xE1v 10":"2\xD715 pins, row spacing 10","\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 25.4 mm = 10 pitches (the board is 28 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.":"ESP32-WROOM-32 module with a USB-serial converter. Power: USB (to VIN through a diode) or VIN 5\u201312 V (AMS1117 regulator, needs at least about 4.2 V), or 3.3 V directly on the 3V3 pin. GPIO34\u201339 are input only, without internal pull-up; the ADC2 pins do not measure while WiFi is on.","ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin (MTDI): if it is high at power-up, the module assumes a 1.8 V flash and does not start. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin (MTDO): it must be high at power-up (internal pull-up). Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.":"strapping pin, and the built-in blue LED is on it too: for uploading it must be low or floating at power-up. Do not put a pull-up on it.","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.":"strapping pin: it must be high at power-up (internal pull-up). Do not pull it low.","TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"TX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.":"RX0: used by the serial port (USB-serial converter), it can interfere with uploading and serial output. If you can, choose another GPIO.","ESP32-C3 SuperMini":"ESP32-C3 SuperMini","2\xD78 l\xE1b, sort\xE1v 6":"2\xD78 pins, row spacing 6","\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.":"Usually 15.24 mm = 6 pitches (the board is 18 mm wide). The distance of the two pin rows in holes (0 \u2192 {span}). Measure yours with a ruler: boards differ between makers.","ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).":"ESP32-C3 (RISC-V, WiFi, BLE), native USB-C. Power: USB or the 5V pin (about 3.5\u20136 V, low-dropout regulator), or 3.3 V on the 3V3 pin. The 5V pin connects directly to USB, with no diode: do not connect a battery to it while USB is plugged in. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).","ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.":"strapping pin: it must be high at power-up. Do not pull it low with a button or a load.","ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.":"strapping pin, and the built-in blue LED is on it too (lit when low): it must be high at power-up. Do not pull it low.","a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.":"the board's BOOT button is on it too (pulls to ground when pressed), and it is a strapping pin: if it is low at power-up, the board enters download mode. Fine for a button if it is not pressed at start.","RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"RX (UART0): used by the serial port when serial output does not go over native USB.","TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.":"TX (UART0): used by the serial port when serial output does not go over native USB.","Nyom\xF3gomb 12 mm":"Push button 12 mm","A 0:0, 0:5 \xB7 B 2:0, 2:5":"A 0:0, 0:5 \xB7 B 2:0, 2:5","0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:4 (adjustable)",\u03A9:"\u03A9","2. l\xE1b helye":"Pin 2 position","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat.":"Relative to the first pin (before rotation). Default: 0:4. With a larger distance the lead itself can act as a jumper.","\xC1tk\xF6t\u0151 huzal (0 \u03A9)":"Jumper wire (0 \u03A9)","0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:2 (adjustable)","2. v\xE9g helye":"End 2 position","Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat.":"A straight wire jumper on the component side: both ends are one net.","LED 3 mm":"LED 3 mm","an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:1 (adjustable)","{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V":"{color.label}, forward voltage {color.vf} V",lila:"purple","Kat\xF3d helye":"Cathode position","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the anode (before rotation). Default: 0:1.","an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)":"anode 0:0 \xB7 cathode 0:4 (adjustable)","Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van.":"Conducts only from anode to cathode, above a forward voltage of {kind.vf} V. The band is on the cathode side.","1N5817 Schottky (0,3 V, 1 A)":"1N5817 Schottky (0.3 V, 1 A)","1N4148 jeldi\xF3da (0,7 V, 0,2 A)":"1N4148 signal diode (0.7 V, 0.2 A)","1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)":"1N4007 rectifier (0.7 V, 1 A)","Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4.":"Relative to the anode (before rotation). Default: 0:4.","N-MOSFET (2N7000)":"N-MOSFET (2N7000)","S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)":"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)","K\xFCsz\xF6b (Vth)":"Threshold (Vth)","A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb.":"D\u2013S conducts when the gate is higher than this relative to the source.",V:"V","Nyitott ellen\xE1ll\xE1s":"On resistance","Max. \xE1ram":"Max. current","Kondenz\xE1tor (ker\xE1mia)":"Capacitor (ceramic)","0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)":"0:0 \u2013 0:1 (adjustable)","Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja.":"An open circuit at DC. The simulation shows the voltage and the time constant (\u03C4 = R\xB7C).",F:"F","N\xE9vleges fesz\xFClts\xE9g":"Rated voltage","Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the first pin (before rotation). Default: 0:1.","Elektrolit kondenz\xE1tor":"Electrolytic capacitor","+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)":"+ 0:0 \xB7 \u2212 0:1 (adjustable)","Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van.":"Polarized: the + pin goes to the higher voltage. The band is on the \u2212 pin side.","\u2212 l\xE1b helye":"\u2212 pin position","A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1.":"Relative to the + pin (before rotation). Default: 0:1.","TO-92, l\xE1bsorrend t\xEDpus szerint":"TO-92, pin order by type","A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2.":"C\u2013E conducts when current flows into the base (Ube \u2248 0.65 V). Ic is at most \u03B2\xB7Ib ({kind.beta}\xB7Ib); as a switch it needs about ten times Ic/\u03B2 of base current.","BC547 (C-B-E, 100 mA)":"BC547 (C-B-E, 100 mA)","2N3904 (E-B-C, 200 mA)":"2N3904 (E-B-C, 200 mA)","2N2222A (E-B-C, 600 mA)":"2N2222A (E-B-C, 600 mA)","74HC00 n\xE9gy NAND kapu":"74HC00 quad NAND gate","DIP-14 \xB7 4\xD7 NAND":"DIP-14 \xB7 4\xD7 NAND","N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re.":"Four two-input NAND gates (nY = NOT(nA AND nB)). Supply 2\u20136 V; tie unused inputs to GND.","74HC74 kett\u0151s D t\xE1rol\xF3":"74HC74 dual D flip-flop","DIP-14 \xB7 2\xD7 D flip-flop":"DIP-14 \xB7 2\xD7 D flip-flop","K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.":"Two D flip-flops: on the rising edge of CLK, Q takes the value of D. CLR = 0 clears it (Q = 0), PRE = 0 sets it (Q = 1), regardless of the clock; in use, tie both to VCC. Qn is the inverse of Q. Supply 2\u20136 V.","74HC595 l\xE9ptet\u0151regiszter":"74HC595 shift register","DIP-16 \xB7 8 bit SIPO":"DIP-16 \xB7 8-bit SIPO","8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.":"8-bit serial-to-parallel converter: on the rising edge of SRCLK the SER bit shifts in and the rest move one step; on the rising edge of RCLK the 8 bits go to outputs QA\u2026QH. OE = 0 enables the outputs, SRCLR = 0 clears the shift register. QHs (QH') can go to the SER input of the next 595. Supply 2\u20136 V.","74HC139 kett\u0151s 2\u21924 dek\xF3der":"74HC139 dual 2\u21924 decoder","DIP-16 \xB7 2\xD7 (2\u21924)":"DIP-16 \xB7 2\xD7 (2\u21924)","K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V.":"Two 2\u21924 decoders: the Y output selected by the binary number A1 A0 goes 0 (active low), the others 1; if E = 1, all are 1. Supply 2\u20136 V.","L\xE9ptet\u0151motor (28BYJ-48)":"Stepper motor (28BYJ-48)",K\u00FCls\u0151:"External","k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)":"external \xB7 5-wire cable (A B C D, common +)",Tekercsellen\u00E1ll\u00E1s:"Coil resistance","5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA).":"5 V unipolar stepper motor with 64:1 gearing: in half-step mode, 4096 steps make one turn of the output shaft. A driver (e.g. ULN2003) switches the coils to ground; the common wire (red) is +5 V. The simulation steps it from the coil excitation order (A, AB, B, BC, C, CD, D, DA).","ULN2003 l\xE9ptet\u0151motor-meghajt\xF3":"ULN2003 stepper driver","IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3":"IN1\u2013IN4 \xB7 power \xB7 motor connector","N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s.":"Four Darlington switches: when input INn is high (\u2265 about 2.2 V, the Pico's 3.3 V is enough), the matching output (A\u2013D) switches to ground and current flows from the common + through the motor coil. VCC (+) is the motor supply, 5 V; COM is shared with it.","DC motor (130-as)":"DC motor (type 130)","k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s":"external \xB7 + and \u2212 leads","A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell.":"The motor sits next to the board; connect its leads to the board with wires (a cable). An inductive load: it cannot be driven directly from a GPIO, it needs a transistor or MOSFET and a flyback diode.","\xDCzemi ellen\xE1ll\xE1s":"Operating resistance","Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos.":"Simplified model: current while running \u2248 U / R. Speed is proportional to the voltage.","Szerv\xF3 (SG90)":"Servo (SG90)","k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel":"external \xB7 GND, V+, signal cable","\xC1ramfelv\xE9tel (ell.)":"Current draw (resistance)","A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V.":"The servo is driven by PWM on its signal wire: 50 Hz, 0.5\u20132.5 ms pulse \u2192 0\u2013180\xB0. Set the Pico GPIO to PWM mode (50 Hz, 7.5 % = center). Supply: 4.8\u20136 V.","T\xFCskesor 1\xD7N":"Pin header 1\xD7N",Csatlakoz\u00F3:"Connector","N l\xE1b egy sorban \xB7 csatlakoz\xF3":"N pins in a row \xB7 connector",L\u00E1bsz\u00E1m:"Pin count","Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja.":"Comma-separated, in order (e.g. GND,VCC,SDA,SCL). As an external part's connector it gets the part's pin names.","Akku csatlakoz\xF3":"Battery connector","TP4056 t\xF6lt\u0151modul":"TP4056 charger module","IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)":"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (approximate)","Saj\xE1t USB":"Own USB","Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel.":"Simplified model: it charges from the input (5 V) toward B+; B+ and OUT+ are shared. The pins are approximate positions of the module's pads; mount it with pin headers.","nincs bedugva":"not plugged in","5 V bedugva":"5 V plugged in","Nokia 5110 kijelz\u0151":"Nokia 5110 display","8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V":"8 pins in a row \xB7 VCC 2.7\u20133.3 V",'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)':'OLED display 0.96" (SSD1306, I\xB2C)',"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban":"GND \xB7 VCC \xB7 SCL \xB7 SDA in a row","128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki.":"128\xD764 dot OLED display on the I\xB2C bus (default address 0x3C). The module has pull-up resistors on the SCL and SDA lines. Supply 3.3\u20135 V; the simulation does not draw the display content.","Joystick (KY-023)":"Joystick (KY-023)","GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban":"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW in a row","X \xE1ll\xE1s":"X position","\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3.":"\u2212100 % left, +100 % right. It can also be set with a slider during the simulation.","Y \xE1ll\xE1s":"Y position","\u2212100 % le, +100 % fel.":"\u2212100 % down, +100 % up.",X:"X",Y:"Y","Csere: {x}":"Swap: {x}","{n} kapcsolat elveszett":"{n} connection lost||{n} connections lost","nem f\xE9r el a panelon, mozgasd":"does not fit on the board, move it","Mentve, {n} saj\xE1t alkatr\xE9sszel egy\xFCtt.":"Saved, together with {n} custom part.||Saved, together with {n} custom parts.","Mentve.":"Saved.","Mentve: {x}":"Saved: {x}","Panel: {c}\xD7{r} lyuk, {s}.":"Board: {c}\xD7{r} holes, {s}.","LED akkur\xF3l \u2013 k\xE9zi hidakkal":"LED from a battery \u2013 manual bridges","Akku, el\u0151t\xE9t-ellen\xE1ll\xE1s \xE9s LED, forraszt\xF3hidakkal bek\xF6tve.":"Battery, series resistor and LED, wired with solder bridges.","el\u0151t\xE9t-ellen\xE1ll\xE1s a LED-hez":"a series resistor for the LED","forraszt\xF3h\xEDd k\xE9zzel":"solder bridges by hand","a szimul\xE1ci\xF3 fesz\xFClts\xE9gei":"voltages in the simulation","K\xE9zi hidak\nA r\xE9z 3 lyukas szakaszokb\xF3l \xE1ll; a hidak (H\xEDd eszk\xF6z, B) k\xF6tik \xF6ssze a szomsz\xE9dos szakaszokat.\nAz \xE1ramk\xF6r: akku + \u2192 R1 \u2192 LED1 \u2192 akku \u2212.":`Manual bridges
75
75
  The copper is made of 3-hole sections; bridges (Bridge tool, B) connect neighboring sections.
76
76
  The circuit: battery + \u2192 R1 \u2192 LED1 \u2192 battery \u2212.`,"Pr\xF3b\xE1ld ki\nInd\xEDtsd a szimul\xE1ci\xF3t: a LED vil\xE1g\xEDt, kb. 6 mA folyik.\nT\xF6r\xF6lj ki egy hidat (E): a k\xF6r megszakad, a LED kialszik.":`Try it
77
77
  Start the simulation: the LED lights, about 6 mA flows.
@@ -132,33 +132,37 @@ In the simulation press the button repeatedly: the LED's brightness rises in ste
132
132
  Off delay: the output turns on at once at the button press and stays true for 2000 ms after release. The other choices of the Mode setting: on delay, pulse, filter.`,"Pr\xF3b\xE1ld ki\nSzimul\xE1ci\xF3ban nyomd meg \xE9s engedd el a gombot: a LED m\xE9g k\xE9t m\xE1sodpercig \xE9g. Az id\u0151t \xE9s a m\u0171k\xF6d\xE9st a blokk be\xE1ll\xEDt\xE1s\xE1ban m\xF3dos\xEDthatod.":`Try it
133
133
  In the simulation press and release the button: the LED stays on for two more seconds. You can change the time and the mode in the block's settings.`,"Saj\xE1t alkatr\xE9sz: XOR modul bels\u0151 kapcsol\xE1ssal":"Custom part: an XOR module with an internal circuit","Egy saj\xE1t \u201EXOR modul\u201D k\xE9t gombbal \xE9s egy LED-del. A modul m\u0171k\xF6d\xE9se az Alkatr\xE9sz-szerkeszt\u0151 M\u0171k\xF6d\xE9s f\xFCl\xE9n, diagramon l\xE1tszik.":"A custom \u201CXOR module\u201D with two buttons and an LED. The module's behavior is shown as a diagram on the Part editor's Behavior tab.","bels\u0151 kapcsol\xE1s diagramon":"internal circuit as a diagram","logika a szimul\xE1ci\xF3ban":"logic in the simulation","Saj\xE1t alkatr\xE9sz\nAz U1 egy saj\xE1t alkatr\xE9sz: l\xE1bai VCC, GND, A, B, Y. Jel\xF6ld ki, \xE9s a tulajdons\xE1gai k\xF6zt az \u201EAlkatr\xE9sz szerkeszt\xE9se\u201D gombbal nyisd meg: a M\u0171k\xF6d\xE9s f\xFCl\xF6n a bels\u0151 kapcsol\xE1s diagramja (L\xE1b \u2192 KIZ\xC1R\xD3 VAGY \u2192 Kimenet).":`Custom part
134
134
  U1 is a custom part with pins VCC, GND, A, B, Y. Select it and open it with the \u201CEdit part\u201D button in its properties: the Behavior tab shows the internal circuit diagram (Pin \u2192 XOR \u2192 Output).`,"Pr\xF3b\xE1ld ki\nSzimul\xE1ci\xF3ban a LED akkor vil\xE1g\xEDt, ha pontosan az egyik gomb van lenyomva. A szerkeszt\u0151ben a kaput \xC9S-re cser\xE9lve \xE9s mentve a panelon is \xFAgy m\u0171k\xF6dik.":`Try it
135
- In the simulation the LED lights when exactly one button is pressed. In the editor, change the gate to AND and save, and it works that way on the board too.`,"Minden k\xE9zi cs\xEDkv\xE1g\xE1s t\xF6rl\xE9se (az automatikusak maradnak)":"Delete every manual strip cut (automatic ones stay)","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se":"Delete manual cuts","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se ({n})":"Delete manual cuts ({n})",cs\u00EDkv\u00E1g\u00E1s:"strip cut","Cs\xEDkv\xE1g\xE1s: furat":"Strip cut: drilled hole","Cs\xEDkv\xE1g\xE1s: r\xE9s":"Strip cut: gap",automatikus:"automatic","Az automatikus cs\xEDkv\xE1g\xE1s tette ide, mert a cs\xEDkon k\xE9t k\xFCl\xF6nb\xF6z\u0151 h\xE1l\xF3zat l\xE1ba van. T\xF6rl\xE9s ut\xE1n ide nem ker\xFCl \xFAjra; ha lehet, a program a k\xE9t l\xE1b k\xF6z\xF6tt m\xE1shol v\xE1g.":"Placed by automatic strip cutting because the strip carries pins of two different nets. Once deleted it will not come back here; if possible, the program cuts elsewhere between the two pins.","{n} k\xE9zi v\xE1g\xE1s t\xF6r\xF6lve. Visszavon\xE1s: Ctrl+Z.":"{n} manual cut deleted. Undo: Ctrl+Z.||{n} manual cuts deleted. Undo: Ctrl+Z.","Automatikus v\xE1g\xE1s t\xF6r\xF6lve: ide nem ker\xFCl \xFAjra; ha kell, a program m\xE1shol v\xE1gja el a cs\xEDkot.":"Automatic cut deleted: it will not come back here; if needed, the program cuts the strip elsewhere.","Az agent dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"The agent is working on the design \u2013 manual editing is paused until it finishes.",Agent:"Agent","Terv \xE1ttekint\xE9se":"Reviewing the design","Alkatr\xE9szek keres\xE9se":"Searching parts","Alkatr\xE9sz adatai":"Part details","Alkatr\xE9sz l\xE1bai":"Part pins",Lerak\u00E1s:"Placing",Param\u00E9terek:"Parameters",\u00DAtvonalak:"Routing","GPIO m\xF3d":"GPIO mode",Panelk\u00E9p:"Board image","Az API-kulcs \xE9rv\xE9nytelen vagy nincs jogosults\xE1ga. Ellen\u0151rizd a be\xE1ll\xEDt\xE1sokban.":"The API key is invalid or not authorised. Check it in the settings.","Az Anthropic-fi\xF3kodon nincs el\xE9g egyenleg. A console.anthropic.com oldalon t\xF6ltheted fel.":"Your Anthropic account has insufficient credit. You can top it up at console.anthropic.com.","T\xFAl sok k\xE9r\xE9s r\xF6vid id\u0151 alatt (sebess\xE9gkorl\xE1t). V\xE1rj egy kicsit, \xE9s pr\xF3b\xE1ld \xFAjra.":"Too many requests in a short time (rate limit). Wait a little and try again.","Az API most t\xFAlterhelt. Pr\xF3b\xE1ld \xFAjra kicsit k\xE9s\u0151bb.":"The API is overloaded right now. Try again a bit later.","Nem siker\xFClt el\xE9rni az API-t (h\xE1l\xF3zati hiba). Ellen\u0151rizd a kapcsolatot.":"Could not reach the API (network error). Check your connection.","Le\xE1ll\xEDtva.":"Stopped.","A feladat t\xFAl sok l\xE9p\xE9sb\u0151l \xE1llt, ez\xE9rt meg\xE1llt. \xCDrd meg, folytassa-e.":"The task took too many steps, so it stopped. Tell it whether to continue.","Hiba az API-h\xEDv\xE1sban: {x}":"API error: {x}","Agent m\xF3d":"Agent mode",Megbesz\u00E9l\u00E9s:"Discuss","Megbesz\xE9l\xE9s: az agent olvassa \xE9s elemzi a tervet, javasol, de nem m\xF3dos\xEDt":"Discuss: the agent reads and analyses the design and makes suggestions, but does not change it",Megval\u00F3s\u00EDt\u00E1s:"Build","Megval\xF3s\xEDt\xE1s: az agent m\xF3dos\xEDthatja a tervet (egy feladat egy l\xE9p\xE9sben visszavonhat\xF3)":"Build: the agent may change the design (each task can be undone in one step)","\xDAj besz\xE9lget\xE9s":"New conversation","API-kulcs \xE9s modell":"API key and model","Anthropic API-kulcs":"Anthropic API key",Modell:"Model","Megjegyz\xE9s ebben a b\xF6ng\xE9sz\u0151ben":"Remember in this browser","A kulcs csak ebben a b\xF6ng\xE9sz\u0151ben marad; a k\xE9r\xE9sek k\xF6zvetlen\xFCl az Anthropic API-hoz mennek, a haszn\xE1lat d\xEDj\xE1t a saj\xE1t fi\xF3kod fizeti. Kulcsot a {x} oldalon kaphatsz.":"The key stays in this browser only; requests go directly to the Anthropic API and usage is billed to your own account. You can get a key at {x}.","Kulcs t\xF6rl\xE9se":"Remove key","Mit \xE9p\xEDts\xFCnk? Pl. \u201ETegy\xE9l egy LED-et el\u0151t\xE9t-ellen\xE1ll\xE1ssal a GP15-re.\u201D":"What shall we build? E.g. \u201CAdd an LED with a series resistor on GP15.\u201D","Mit besz\xE9lj\xFCnk meg? Pl. \u201EMilyen tranzisztorral kapcsoljak egy 12 V-os ventil\xE1tort?\u201D":"What shall we discuss? E.g. \u201CWhich transistor should switch a 12 V fan?\u201D","\xDCzenet az agentnek":"Message to the agent",K\u00FCld\u00E9s:"Send","Dolgozik\u2026":"Working\u2026","\xCDrd le, mit szeretn\xE9l: az agent lerakja \xE9s bek\xF6ti az alkatr\xE9szeket, ellen\u0151rzi a Probl\xE9m\xE1kat, \xE9s szimul\xE1l. Nagyobb v\xE1ltoztat\xE1s el\u0151tt tervet mutat \xE9s r\xE1k\xE9rdez. Minden feladat egy l\xE9p\xE9sben visszavonhat\xF3.":"Describe what you want: the agent places and connects parts, checks the Problems and simulates. Before larger changes it shows a plan and asks. Every task can be undone in one step.","Megbesz\xE9l\xE9s m\xF3d: az agent l\xE1tja a tervet, sz\xE1mol, magyar\xE1z \xE9s javasol, de nem m\xF3dos\xEDt. \xC9p\xEDt\xE9shez v\xE1lts Megval\xF3s\xEDt\xE1s m\xF3dra.":"Discuss mode: the agent sees the design, calculates, explains and suggests, but does not change anything. Switch to Build mode to build.","Az agenthez saj\xE1t Anthropic API-kulcs kell. Add meg fent; a kulcs csak ebben a b\xF6ng\xE9sz\u0151ben t\xE1rol\xF3dik.":"The agent needs your own Anthropic API key. Enter it above; it is stored only in this browser.","{i} be / {o} ki token":"{i} in / {o} out tokens","A v\xE1ltoztat\xE1sok egy l\xE9p\xE9sben visszavonhat\xF3k (Ctrl+Z).":"The changes can be undone in one step (Ctrl+Z).","V\xE1lasz m\xE1sol\xE1sa (markdown)":"Copy reply (markdown)","Nem siker\xFClt m\xE1solni":"Could not copy",Projektjegyzet:"Project notes","Kor\xE1bbi besz\xE9lget\xE9sek":"Earlier conversations","Mit \xE9p\xEDt\xFCnk, \xE9s mire jutottunk? Pl. \u201EMotorvez\xE9rl\u0151 ESP32-C3-mal, 1 cell\xE1s akkur\xF3l; DRV8833 meghajt\xF3; IN1 = GPIO4, IN2 = GPIO5.\u201D":"What are we building and what have we decided? E.g. \u201CMotor controller with ESP32-C3, from a 1-cell battery; DRV8833 driver; IN1 = GPIO4, IN2 = GPIO5.\u201D","A terv r\xE9sze: az agent minden besz\xE9lget\xE9s elej\xE9n megkapja, \xE9s a fontos d\xF6nt\xE9seket ide jegyzi. Te is szerkesztheted.":"Part of the design: the agent receives it at the start of every conversation and records important decisions here. You can edit it too.","Ehhez a projekthez m\xE9g nincs mentett besz\xE9lget\xE9s.":"No saved conversations for this project yet.","{n} \xFCzenet":"{n} message||{n} messages","Besz\xE9lget\xE9s t\xF6rl\xE9se":"Delete conversation","{n} sor":"{n} line||{n} lines",\u00FCres:"empty","A besz\xE9lget\xE9s kor\xE1bbi r\xE9sze \xF6sszefoglalva (az agent az \xF6sszefoglal\xF3t l\xE1tja), hogy a k\xE9r\xE9sek ne dr\xE1guljanak.":"The earlier part of the conversation was summarized (the agent sees the summary) to keep requests from getting expensive.","A t\xF6m\xF6r\xEDt\xE9s \xE9s az agent nem mozd\xEDtja; k\xE9zzel tov\xE1bbra is mozgathat\xF3.":"Compaction and the agent leave it in place; you can still move it by hand.","R\xF6gz\xEDtett hely":"Fixed position","R\xF6gz\xEDt\xE9s be/ki":"Fix position on/off","Ter\xFClet: {x}":"Footprint: {x}","A terv \xE1ltal foglalt ter\xFClet: {r}\xD7{c} lyuk (a panel {a}%-a); az alkatr\xE9szek ennek {f}%-\xE1t t\xF6ltik ki.":"Area used by the design: {r}\xD7{c} holes ({a}% of the board); part bodies fill {f}% of it.","H\xFAzd az ar\xE1ny \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: fele-fele":"Drag to adjust the ratio; double-click: half and half","A panel \xE9s a program ar\xE1nya":"Board / program ratio","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz, kisebb ter\xFCletre, r\xF6videbb bek\xF6t\xE9ssel":"Moves parts closer together: smaller area, shorter wiring","T\xF6m\xF6r\xEDt\xE9s\u2026":"Compact\u2026",T\u00F6m\u00F6r\u00EDt\u00E9s:"Compact layout","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz \xE9s a bek\xF6t\xF6tt l\xE1bakhoz. A panelon az el\u0151n\xE9zet l\xE1tszik, halv\xE1nyan az eredeti helyekkel.":"Parts move closer to each other and to the pins they connect to. The board shows a preview, with the original positions faded.",Szoross\u00E1g:"Tightness","Laza \u2013 k\xF6nny\u0171 forraszt\xE1s":"Loose \u2013 easy soldering","Szoros \u2013 kis panel":"Tight \u2013 small board","A vez\xE9rl\u0151lap a hely\xE9n marad":"Keep the controller board in place","A kezel\u0151szervek (gomb, cs\xFAszka, csatlakoz\xF3) a hely\xFCk\xF6n maradnak":"Keep controls (buttons, sliders, connectors) in place","Elforgat\xE1s is":"Allow rotation","Csak a kijel\xF6ltek":"Selected parts only","Visszavonhat\xF3 (Ctrl+Z).":"Can be undone (Ctrl+Z).","T\xF6m\xF6r\xEDtve: {n} alkatr\xE9sz mozdult. Visszavon\xE1s: Ctrl+Z.":"Compacted: {n} part moved. Undo: Ctrl+Z.||Compacted: {n} parts moved. Undo: Ctrl+Z.",r\u00F6gz\u00EDtett:"fixed",vez\u00E9rl\u0151lap:"controller board",kezel\u0151szerv:"control","k\xE9zzel bek\xF6tve":"wired by hand","panelon k\xEDv\xFCl":"off the board","nincs kijel\xF6lve":"not selected",Most:"Now",Ut\u00E1na:"After","Ter\xFClet (lyuk)":"Area (holes)",Hidak:"Bridges",Vezet\u00E9kek:"Wires",Bek\u00F6tve:"Connected","Mozdul: {x}":"Moves: {x}","Ezekkel a be\xE1ll\xEDt\xE1sokkal nincs jobb elrendez\xE9s.":"No better layout with these settings.","A hely\xE9n marad: {x}":"Stays in place: {x}","A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.":"The layout is sparse: parts fill {f}% of the used area \u2013 compacting could give a smaller board and shorter wiring.","T\xF6m\xF6r\xEDt\xE9s el\u0151n\xE9zete":"Compaction preview",R\u00F6gz\u00EDt\u00E9s:"Fix in place","Claude Desktop vagy Claude Code vez\xE9relheti a tervet, \xE9l\u0151ben (MCP)":"Let Claude Desktop or Claude Code work on the design, live (MCP)","Claude-kapcsolat\u2026":"Claude connection\u2026",Claude:"Claude","Claude-kapcsolat (MCP)":"Claude connection (MCP)","A Claude Desktopb\xF3l vagy a Claude Code-b\xF3l is tervezhetsz: a Claude a saj\xE1t el\u0151fizet\xE9seddel dolgozik (API-kulcs nem kell), a v\xE1ltoz\xE1sok itt jelennek meg \xE9l\u0151ben, \xE9s visszavonhat\xF3k.":"You can also design from Claude Desktop or Claude Code: Claude works with your own subscription (no API key needed), and the changes appear here live and can be undone.","1. A proofboard-mcp szerver hozz\xE1ad\xE1sa (egyszer)":"1. Add the proofboard-mcp server (once)",Kliens:"Client","Claude Desktop":"Claude Desktop","Claude Code":"Claude Code","Be\xE1ll\xEDt\xE1sok \u203A Fejleszt\u0151 \u203A Konfigur\xE1ci\xF3 szerkeszt\xE9se (claude_desktop_config.json), majd a Claude \xFAjraind\xEDt\xE1sa:":"Settings \u203A Developer \u203A Edit Config (claude_desktop_config.json), then restart Claude:","Termin\xE1lban:":"In a terminal:","Node.js 18 vagy \xFAjabb kell hozz\xE1. A szerver csak a saj\xE1t g\xE9peden figyel (127.0.0.1), \xE9s csak a Proofboard oldal\xE1r\xF3l fogad kapcsolatot.":"Requires Node.js 18 or newer. The server only listens on your own computer (127.0.0.1) and only accepts connections from the Proofboard page.","2. Kapcsol\xF3d\xE1s":"2. Connect",Csatlakoz\u00E1s:"Connect","Csak olvas\xE1s: a Claude l\xE1tja \xE9s ellen\u0151rzi a tervet, de nem m\xF3dos\xEDthatja":"Read only: Claude can see and check the design but cannot change it","Csatlakoz\xE1s automatikusan, amikor megnyitom a Proofboardot":"Connect automatically when I open Proofboard",Halad\u00F3:"Advanced",Port:"Port","A szerveren: --port":"On the server: --port","Am\xEDg a Claude dolgozik, a k\xE9zi szerkeszt\xE9s sz\xFCnetel, \xE9s fent s\xE1v jelzi. Egy-egy munkamenet egy l\xE9p\xE9sben visszavonhat\xF3 (Ctrl+Z).":"While Claude is working, manual editing pauses and a bar at the top shows it. Each working session can be undone in one step (Ctrl+Z).","A Claude m\xF3dos\xEDtotta a tervet. Visszavon\xE1s: Ctrl+Z.":"Claude changed the design. Undo: Ctrl+Z.","A Claude dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"Claude is working on the design \u2013 manual editing is paused.",Lev\u00E1laszt\u00E1s:"Disconnect","{n} alkatr\xE9sz":"{n} part||{n} parts","Kapcsol\xF3dva: {c}":"Connected: {c}","Kapcsol\xF3d\xE1s\u2026":"Connecting\u2026","V\xE1rakoz\xE1s a szerverre: fut a Claude, \xE9s be van \xE1ll\xEDtva a proofboard-mcp?":"Waiting for the server: is Claude running, with proofboard-mcp set up?","Nincs kapcsolat: {e}":"Not connected: {e}","Nincs kapcsolat.":"Not connected.","Claude dolgozik":"Claude is working","csak olvas\xE1s":"read only","Claude: v\xE1rakoz\xE1s":"Claude: waiting"};var ZC={en:hz},BC="hu";function gz(e,t,r=BC){let n=r==="hu"?e:ZC[r][e]??e;if(n.includes("||")){let[o,s]=n.split("||");n=t&&Number(t.n)===1?o:s}return t?n.replace(/\{(\w+)\}/g,(o,s)=>s in t?String(t[s]):o):n}var Gt=(e,t)=>t?e.replace(/\{(\w+)\}/g,(r,n)=>n in t?String(t[n]):r):e,E=e=>e;var f5=new RegExp("\\p{L}","u");var oa=class extends Error{constructor(r,n,o,s){super(r);this.pos=n;this.key=o;this.params=s}};function Ip(e,t=Gt){return e instanceof oa?e.key?t(e.key,e.params):e.message:e instanceof Error?e.message:String(e)}var na=(e,t,r)=>new oa(Gt(e,r),t,e,r),bz={AND:"&",OR:"|",XOR:"^",NOT:"!"},yz={"&":"&","*":"&","\xB7":"&","|":"|","+":"|","^":"^","!":"!","~":"!","\xAC":"!"};function GC(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}if(n==="("||n===")"){t.push({k:n,v:n,pos:r,end:r+1}),r++;continue}if(yz[n]){t.push({k:"op",v:yz[n],pos:r,end:r+1}),r++;continue}let o=/^#?[A-Za-z0-9_]+/.exec(e.slice(r));if(o){let s=o[0],a=s.toUpperCase();s[0]!=="#"&&bz[a]?t.push({k:"op",v:bz[a],pos:r,end:r+s.length}):t.push({k:"id",v:s,pos:r,end:r+s.length}),r+=s.length;continue}throw new oa(`Ismeretlen jel: \u201E${n}\u201D`,r)}return t.push({k:"end",v:"",pos:e.length,end:e.length}),t}function sa(e){let t=GC(e),r=0,n=()=>t[r],o=()=>t[r++],s=(f,h,b)=>{let p=[b()];for(;n().k==="op"&&n().v===h;)o(),p.push(b());return p.length===1?p[0]:{t:f,args:p.flatMap(m=>m.t===f?m.args:[m])}},a=()=>s("or","|",i),i=()=>s("xor","^",c),c=()=>s("and","&",l),l=()=>n().k==="op"&&n().v==="!"?(o(),{t:"not",a:l()}):u(),u=()=>{let f=o();if(f.k==="("){let h=a();if(n().k!==")")throw na(E("Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel"),n().pos);return o(),h}if(f.k==="id")return f.v==="0"||f.v==="1"?{t:"const",v:+f.v}:{t:"var",name:f.v};throw f.k==="end"?na(E("Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n"),f.pos):na(E("Itt nem \xE1llhat: \u201E{x}\u201D"),f.pos,{x:f.v})};if(t.length===1)throw na(E("\xDCres kifejez\xE9s"),0);let d=a();if(n().k!=="end")throw na(E("F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D"),n().pos,{x:e.slice(n().pos)});return d}function Ln(e,t=[]){if(e.t==="var")t.includes(e.name)||t.push(e.name);else if(e.t==="not")Ln(e.a,t);else if(e.t!=="const")for(let r of e.args)Ln(r,t);return t}function yr(e,t){switch(e.t){case"var":return t(e.name);case"const":return e.v;case"not":{let r=yr(e.a,t);return r==="X"?"X":r?0:1}case"and":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===0)return 0;o==="X"&&(r=!0)}return r?"X":1}case"or":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===1)return 1;o==="X"&&(r=!0)}return r?"X":0}case"xor":{let r=0;for(let n of e.args){let o=yr(n,t);if(o==="X")return"X";r^=o}return r}}}function wl(e,t){if(e.startsWith("#")){let n=e.slice(1);return t.some(o=>o.id===n)?n:null}let r=t.filter(n=>n.name===e);return r.length===1?r[0].id:r.length>1?null:t.some(n=>n.id===e)?e:null}function vz(e,t){let r=t.split(".");if(r.length>1&&e.$opt&&e.$opt[r[0]])return e.$opt[r[0]][r[1]];let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function zz(e,t){let r=String(e),n=0,o=()=>{for(;r[n]===" ";)n++},s=()=>{o();let c=r[n];if(c==="("){n++;let u=i();return o(),n++,u}if(c==="-")return n++,-s();if(c==="+")return n++,s();let l=/^(\d+\.?\d*(?:e-?\d+)?|\.\d+)/.exec(r.slice(n));if(l)return n+=l[0].length,parseFloat(l[0]);if(l=/^[A-Za-z_$][\w.]*/.exec(r.slice(n)),l){n+=l[0].length;let u=vz(t,l[0]);return typeof u=="number"?u:parseFloat(String(u))||0}throw new Error("Hib\xE1s kifejez\xE9s: "+r)},a=()=>{let c=s();for(;;)if(o(),r[n]==="*")n++,c*=s();else if(r[n]==="/")n++,c/=s();else return c},i=()=>{let c=a();for(;;)if(o(),r[n]==="+")n++,c+=a();else if(r[n]==="-")n++,c-=a();else return c};return i()}function kr(e){let t=+e;if(!isFinite(t))return"";if(t===0)return"0";let r=Math.abs(t);for(let[n,o]of[[1e9,"G"],[1e6,"M"],[1e3,"k"],[1,""],[.001,"m"],[1e-6,"\xB5"],[1e-9,"n"],[1e-12,"p"]])if(r>=n*.99995)return+(t/n).toPrecision(3)+o;return String(+t.toPrecision(3))}var kz={si:kr,fix1:e=>(+e).toFixed(1),fix2:e=>(+e).toFixed(2)};function xl(e,t){return String(e).replace(/\{([^}|]+)(?:\|(\w+))?\}/g,(r,n,o)=>{let s=n.trim(),a=/^[A-Za-z_$][\w.]*$/.test(s)?vz(t,s):zz(s,t);return o&&kz[o]?kz[o](a):a==null?"":String(typeof a=="number"?+a.toPrecision(12):a)})}function ke(e,t){return typeof e=="number"?e:e==null?0:zz(xl(e,t),t)}function Oo(e,t){let r=t.props||{},n={label:t.label,$opt:{}};for(let o of e.params||[]){if(o.type==="names"){let a=r[o.key]??o.default;n[o.key]=typeof a=="string"?a:"";continue}if(o.type==="span"){let a=Math.round(+(r.dr??o.default[0]))||0,i=Math.round(+(r.dc??o.default[1]))||0;!a&&!i&&([a,i]=o.default),n.dr=a,n.dc=i;continue}let s=r[o.key];if((s==null||s==="")&&(s=o.default),o.options){let a=o.options.find(i=>String(i.v)===String(s))||o.options.find(i=>String(i.v)===String(o.default))||o.options[0];n[o.key]=a.v,n.$opt[o.key]=a}else{let a=Number(s);isFinite(a)||(a=o.default),o.type==="int"&&(a=Math.round(a)),o.min!=null&&(a=Math.max(o.min,a)),o.max!=null&&(a=Math.min(o.max,a)),n[o.key]=a}}return n}function Io(e,t){let r={};for(let l of t.params||[])l.type==="span"?(r.dr=l.default[0],r.dc=l.default[1]):r[l.key]=l.default;let n=new WeakMap,o=(l,u)=>{let d=xl(l.id,u),f=t.pinTable&&t.pinTable[d],h=l.name!=null?xl(l.name,u):f?f[0]:d,b={id:d,name:h,lr:ke(l.lr,u),lc:ke(l.lc,u),role:l.role||(f?f[1]:"h")};/^\d+$/.test(d)&&(b.num=+d);let p=l.caps||f&&f[2];return p&&p.length&&(b.caps=[...p]),l.fn&&(b.fn=l.fn),l.vmin!=null&&(b.vmin=ke(l.vmin,u)),l.vmax!=null&&(b.vmax=ke(l.vmax,u)),b},s=l=>{let u=JSON.stringify(l.props||{}),d=n.get(l);if(d&&d.key===u)return d.pins;let f=Oo(t,l),h=[];for(let b of t.pins)if(b.repeat!=null){let p=Math.max(0,Math.round(ke(b.repeat,f)));for(let m=0;m<p;m++)h.push(o(b,{...f,i:m}))}else h.push(o(b,f));for(let b of t.params||[])b.type==="names"&&String(f[b.key]||"").split(",").forEach((p,m)=>{let g=p.trim();g&&h[m]&&(h[m].name=g)});return n.set(l,{key:u,pins:h}),h},a=()=>{let l=[];for(let u of t.groups||[])for(let d of u.slice(1))l.push([u[0],d]);return l},i=l=>{let u=t.bounds||{pad:.45},d=Oo(t,l);if(u.r&&u.c)return{r0:ke(u.r[0],d),r1:ke(u.r[1],d),c0:ke(u.c[0],d),c1:ke(u.c[1],d)};let f=s(l),h=u.pad??.45,b=f.map(w=>w.lr),p=f.map(w=>w.lc),m=Math.min(...b)-h,g=Math.max(...b)+h,v=Math.min(...p)-h,_=Math.max(...p)+h;if(u.mid!=null){let w=(b[0]+b[b.length-1])/2,k=(p[0]+p[p.length-1])/2;m=Math.min(m,w-u.mid),g=Math.max(g,w+u.mid),v=Math.min(v,k-u.mid),_=Math.max(_,k+u.mid)}return{r0:m,r1:g,c0:v,c1:_}},c=(t.model||[]).some(l=>l.el==="mcu");return{type:e,def:t,name:t.name,fp:t.fp,prefix:t.prefix,cat:t.cat||"Egy\xE9b",props:r,pins:s,internal:a,bounds:i,mcu:c}}function _z(e){let t={};for(let[r,n]of Object.entries(e))t[r]=Io(r,n);return t}var UC=new Set(["rect","circle","poly","line","text","axial","radial","link","dial"]),qC=new Set(["value","number","int","select","color","span","names"]),Tp={resistor:["a","b"],diode:["a","k"],source:["p","n"],nmos:["d","g","s"],capacitor:["a","b"],npn:["c","b","e"],motor:["a","b"],servo:["vp","gnd","sig"],logic:["vcc","gnd"],stepper:["com","a","b","c","d"],mcu:["gnd","vsys","v33"]},KC={resistor:["ohm"],diode:["vf","ron","imax"],source:["v","rint"],nmos:["vth","ron","imax"],capacitor:["f","vmax"],npn:["beta","vbe","vcesat","imax"],motor:["ohm","vnom"],servo:["ohm","pmin","pmax"],logic:["vih","vil","rout","imax"],stepper:["ohm","steps","rotor"],mcu:["vreg","vmax","igpio"]},wz=["i2c.sda","i2c.scl","spi.mosi","spi.miso","spi.sck","spi.cs","uart.rx","uart.tx"],Or=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function Cp(e,t=Gt){let r=[],n=(f,h)=>r.push({level:"error",path:f,msg:h}),o=(f,h)=>r.push({level:"warn",path:f,msg:h});if(!Or(e))return n("",t("A le\xEDr\xE1s nem objektum.")),r;let s=e;if((typeof s.name!="string"||!s.name.trim())&&n("name",t("Hi\xE1nyzik a n\xE9v.")),(typeof s.prefix!="string"||!/^[A-Za-z][A-Za-z0-9]{0,5}$/.test(s.prefix))&&n("prefix",t("Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).")),typeof s.fp!="string"&&o("fp",t("Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.")),!Array.isArray(s.pins)||!s.pins.length)return n("pins",t("Legal\xE1bb egy l\xE1b kell.")),r;let a=new Set;(s.params||[]).forEach((f,h)=>{let b=`params[${h}]`;if(!Or(f)||typeof f.key!="string"||!/^[A-Za-z_]\w*$/.test(f.key)){n(b+".key",t("\xC9rv\xE9nytelen param\xE9terkulcs."));return}a.has(f.key)&&n(b+".key",t("K\xE9tszer szerepel: {a}",{a:f.key})),a.add(f.key),qC.has(f.type)||n(b+".type",t("Ismeretlen param\xE9tert\xEDpus: {a}",{a:String(f.type)})),(f.type==="select"||f.type==="color")&&(!Array.isArray(f.options)||!f.options.length)&&n(b+".options",t("A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.")),f.default===void 0&&n(b+".default",t("Hi\xE1nyzik az alap\xE9rt\xE9k."))});let i=[];try{let f=Io("_check",s),h={id:"_",type:"_check",label:(s.prefix||"X")+"1",r:0,c:0,rot:0,mir:!1,props:{...f.props}};i=f.pins(h),f.bounds(h)}catch(f){return n("pins",t("A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ")+(f instanceof Error?f.message:String(f))),r}s.pins.forEach((f,h)=>{(!Or(f)||typeof f.id!="string"||!f.id.trim())&&n(`pins[${h}].id`,t("Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja."))}),i.length||n("pins",t("A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres."));let c=new Set,l=new Map;i.forEach((f,h)=>{(!isFinite(f.lr)||!isFinite(f.lc))&&n(`pins[${h}]`,t("{a}: a helye nem sz\xE1m.",{a:f.id})),(Math.round(f.lr)!==f.lr||Math.round(f.lc)!==f.lc)&&n(`pins[${h}]`,t("{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.",{a:f.id})),c.has(f.id)&&n(`pins[${h}].id`,t("K\xE9tszer szerepel a l\xE1b: {a}",{a:f.id})),c.add(f.id);let b=f.lr+":"+f.lc;l.has(b)&&n(`pins[${h}]`,t("{a} \xE9s {b} ugyanabban a lyukban ({c}).",{a:f.id,b:l.get(b)??"",c:b})),l.set(b,f.id);for(let p of["vmin","vmax"])f[p]!=null&&!isFinite(f[p])&&n(`pins[${h}].${p}`,t("{a}: {b} nem sz\xE1m.",{a:f.id,b:p}));f.vmin!=null&&f.vmax!=null&&f.vmin>=f.vmax&&n(`pins[${h}]`,t("{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.",{a:f.id})),f.fn!=null&&!wz.includes(f.fn)&&o(`pins[${h}].fn`,t("{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})",{a:f.id,b:f.fn,c:wz.join(", ")})),(f.vmin!=null||f.vmax!=null)&&f.role!=="vin"&&o(`pins[${h}]`,t("{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.",{a:f.id}))}),i.some(f=>f.role==="vin")&&!i.some(f=>f.role==="gnd")&&o("pins",t("Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt."));let u=new Map;(s.groups||[]).forEach((f,h)=>{if(!Array.isArray(f)||f.length<2){n(`groups[${h}]`,t("Egy csoportban legal\xE1bb k\xE9t l\xE1b kell."));return}for(let b of f)c.has(b)||n(`groups[${h}]`,t("Nincs ilyen l\xE1b: {a}",{a:b})),u.has(b)&&o(`groups[${h}]`,t("{a} t\xF6bb csoportban is szerepel.",{a:b})),u.set(b,h)});let d=(()=>{try{let f=Io("_check",s);return Oo(s,{label:"X1",props:{...f.props}})}catch{return{$opt:{}}}})();if((s.model||[]).forEach((f,h)=>{let b=`model[${h}]`;if(!Or(f)||!(f.el in Tp)){n(b+".el",`Ismeretlen modell-elem: ${Or(f)?String(f.el):"?"}`);return}let p=f;for(let g of Tp[f.el])typeof p[g]!="string"||!p[g]?n(`${b}.${g}`,t("Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.",{a:g})):c.has(p[g])||n(`${b}.${g}`,t("Nincs ilyen l\xE1b: {a}",{a:p[g]}));f.el==="mcu"&&p.vbus!=null&&(typeof p.vbus!="string"||!c.has(p.vbus))&&n(`${b}.vbus`,t("Nincs ilyen l\xE1b: {a}",{a:String(p.vbus)}));let m=Tp[f.el].map(g=>p[g]).filter(g=>typeof g=="string"&&g);new Set(m).size!==m.length&&n(b,t("Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b."));for(let g of KC[f.el])if(p[g]!=null)try{let v=ke(p[g],d);if(!isFinite(v))throw new Error(t("nem sz\xE1m"))}catch{n(`${b}.${g}`,t("{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.",{a:g}))}if(f.el==="logic"){let g=Array.isArray(p.outs)?p.outs:[],v=Array.isArray(p.regs)?p.regs:[],_=new Set;v.forEach((I,W)=>{let F=`${b}.regs[${W}]`,G=String(I.name??"");/^[A-Za-z_][A-Za-z0-9_]*$/.test(G)?_.has(G)?n(F,t("K\xE9tszer szerepel a t\xE1rol\xF3: {a}",{a:G})):i.some(K=>K.name===G)&&n(F,t("{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.",{a:G})):n(F,t("T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).",{a:G})),_.add(G)});let w=I=>_.has(I)||!!wl(I,i),k=(I,W,F)=>{if(I==null||String(I).trim()===""){F&&n(W.split("|")[0],t("{a}: hi\xE1nyzik.",{a:W.split("|")[1]}));return}try{for(let G of Ln(sa(String(I))))w(G)||n(W.split("|")[0],t("{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}",{a:W.split("|")[1],b:G}))}catch(G){n(W.split("|")[0],`${W.split("|")[1]}: ${Ip(G,t)}`)}};v.forEach((I,W)=>{let F=`${b}.regs[${W}]`,G=String(I.name??"?");k(I.clk,t("{a}|{b} \xF3rajele",{a:F,b:G}),!0),k(I.d,t("{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)",{a:F,b:G}),!0),k(I.reset,t("{a}|{b} t\xF6rl\xE9se",{a:F,b:G}),!1),k(I.set,t("{a}|{b} be\xE1ll\xEDt\xE1sa",{a:F,b:G}),!1),I.edge!=null&&I.edge!=="rise"&&I.edge!=="fall"&&n(F,t("{a}: az \xE9l rise vagy fall lehet.",{a:G}))}),g.length||n(`${b}.outs`,t("A logik\xE1hoz legal\xE1bb egy kimenet kell."));let P=new Set;g.forEach((I,W)=>{let F=`${b}.outs[${W}]`,G=String(I.pin??"");if(!c.has(G)){n(F,t("Nincs ilyen kimeneti l\xE1b: {a}",{a:G||"\u2013"}));return}let K=i.find(x=>x.id===G).name;P.has(G)&&n(F,t("{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.",{a:K})),P.add(G),(G===p.vcc||G===p.gnd)&&n(F,t("{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.",{a:K}));for(let[x,$]of[["expr",t("kifejez\xE9s")],["oe",t("enged\xE9lyez\xE9s")]]){if(I[x]==null||String(I[x]).trim()===""){x==="expr"&&n(F,t("{a}: hi\xE1nyzik a kifejez\xE9s.",{a:K}));continue}try{let V=sa(String(I[x]));for(let y of Ln(V))w(y)||n(F,t("{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}",{a:K,b:$,c:y}))}catch(V){n(F,`${K} ${$}: ${Ip(V,t)}`)}}I.type!=null&&I.type!=="pp"&&I.type!=="od"&&n(F,t("{a}: a kimenet t\xEDpusa pp vagy od lehet.",{a:K}))})}}),s.socket!=null){let f=(h,b)=>(s.params||[]).find(p=>p.key===h&&b.includes(p.type));if(!Or(s.socket))n("socket",t("A csatlakoz\xF3 le\xEDr\xE1sa objektum."));else if(s.socket.count!=null&&!f(s.socket.count,["int"])&&n("socket.count",t("A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.")),s.socket.names!=null&&!f(s.socket.names,["names"])&&n("socket.names",t("A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.")),s.socket.pins!=null&&(!Array.isArray(s.socket.pins)||!s.socket.pins.length))n("socket.pins",t("A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres."));else for(let h of s.socket.pins||[])c.has(h)||n("socket.pins",t("A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}",{a:h}))}return(s.controls||[]).forEach((f,h)=>{if(Or(f)&&f.kind==="slider"){let b=(s.params||[]).find(p=>p.key===f.key);b?(!["number","int","value"].includes(b.type)||b.min==null||b.max==null)&&n(`controls[${h}]`,t("A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.",{a:b.key})):n(`controls[${h}]`,t("A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}",{a:String(f.key)}));return}if(!Or(f)||f.kind!=="press"){n(`controls[${h}]`,t("Ismeretlen vez\xE9rl\u0151."));return}(!Array.isArray(f.closes)||!f.closes.length)&&n(`controls[${h}]`,t("Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.")),(f.closes||[]).forEach(b=>{for(let p of b)c.has(p)||n(`controls[${h}]`,t("Nincs ilyen l\xE1b: {a}",{a:p}))})}),(s.graphics||[]).forEach((f,h)=>{(!Or(f)||!UC.has(f.shape))&&n(`graphics[${h}].shape`,`Ismeretlen rajzelem: ${Or(f)?String(f.shape):"?"}`)}),s.mount!=null&&s.mount!=="board"&&s.mount!=="off"&&n("mount",t("Ismeretlen szerel\xE9s: {a} (board vagy off).",{a:String(s.mount)})),(s.graphics||[]).some(f=>(f.layer||"body")==="body")||o("graphics",t("Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.")),r}var Np=e=>e.some(t=>t.level==="error");var xz=e=>e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();function HC(e,t){let r=Array.isArray(e.pins)?e.pins:[],n=[e.name,e.fp,e.cat||"",e.prefix,...t?[t(e.name),t(e.fp),e.cat?t(e.cat):""]:[],...r.flatMap(o=>[o.name!=null?String(o.name):"",o.role||"",o.fn||"",...o.caps||[]]),...Object.values(e.pinTable||{}).flatMap(o=>[o[0],o[1],...o[2]||[]]),...(e.model||[]).map(o=>o.el)];return xz(n.filter(Boolean).join(" "))}function Sz(e,t,r){let n=xz(t).split(/\s+/).filter(Boolean);if(!n.length)return!0;let o=HC(e,r);return n.every(s=>o.includes(s))}var Pz={1:"GP0",2:"GP1",3:"GND",4:"GP2",5:"GP3",6:"GP4",7:"GP5",8:"GND",9:"GP6",10:"GP7",11:"GP8",12:"GP9",13:"GND",14:"GP10",15:"GP11",16:"GP12",17:"GP13",18:"GND",19:"GP14",20:"GP15",21:"GP16",22:"GP17",23:"GND",24:"GP18",25:"GP19",26:"GP20",27:"GP21",28:"GND",29:"GP22",30:"RUN",31:"GP26",32:"GP27",33:"AGND",34:"GP28",35:"ADC_VREF",36:"3V3",37:"3V3_EN",38:"GND",39:"VSYS",40:"VBUS"},$z=e=>e==="GND"||e==="AGND"?"gnd":e==="3V3"?"p33":e==="VBUS"||e==="VSYS"?"pwr":/^GP\d/.test(e)?"gpio":"misc",WC={red:{vf:2,c:"#e03131",l:"piros"},orange:{vf:2,c:"#fd7e14",l:"narancs"},yellow:{vf:2.1,c:"#f2b705",l:"s\xE1rga"},green:{vf:2.2,c:"#2f9e44",l:"z\xF6ld"},blue:{vf:3,c:"#1c7ed6",l:"k\xE9k"},violet:{vf:3.2,c:"#9c36b5",l:"lila"},white:{vf:3,c:"#f1f3f5",l:"feh\xE9r"}},JC=new Set(["GP26","GP27","GP28"]),Nz={};function YC(e){let t=[`i2c${e>>1&1}.${e&1?"scl":"sda"}`,`spi${e>>3&1}.${["miso","cs","sck","mosi"][e&3]}`];return(e&3)<2&&t.push(`uart${(e>>2^e>>3)&1}.${e&1?"rx":"tx"}`),t.push(`pwm${e>>1&7}.${e&1?"b":"a"}`),t}for(let e in Pz){let t=Pz[e],r=/^GP(\d+)$/.exec(t),n=[...JC.has(t)?["adc"]:[],...r?YC(+r[1]):[]];Nz[e]=n.length?[t,$z(t),n]:[t,$z(t)]}var Ez=Array.from({length:13},(e,t)=>{let r=Math.PI*t/12;return[+(.35-1.25*Math.sin(r)).toFixed(3),+(1+1.45*Math.cos(r)).toFixed(3)]});function Sl(e,t,r,n,o,s,a,i=[]){let c=e/2;return{name:t,fp:r,prefix:"U",cat:"Logika",pins:n.map((l,u)=>{let d=u+1,f=d<=c?3:0,h=d<=c?d-1:e-d,b=o(l);return b==="vin"?{id:String(d),name:l,lr:f,lc:h,role:b,vmin:2,vmax:6}:{id:String(d),name:l,lr:f,lc:h,role:b}}),bounds:{r:[-.4,3.4],c:[-.6,c-.4]},graphics:[{shape:"rect",layer:"body",r:[.45,2.55],c:[-.6,c-.4],fill:"#202124",stroke:"#000",width:1.2,xray:{stroke:"#333"}},{shape:"circle",layer:"detail",at:[1.5,-.6],rad:.32,fill:"#3c3f44"},{shape:"circle",layer:"detail",at:[2.15,-.1],rad:.1,fill:"#9aa0a6"},{shape:"text",layer:"detail",at:[1.5,(c-1)/2],text:"{label} \xB7 "+t.split(" ")[0],size:.42,min:7,color:"#c8ccd0",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#dee2e6",out:"#ffd8a8",vin:"#ffc9d6",gnd:"#adb5bd"}},model:[{el:"logic",vcc:String(n.indexOf("VCC")+1),gnd:String(n.indexOf("GND")+1),outs:s.map(([l,u,d])=>({pin:String(n.indexOf(l)+1),expr:u,...d?{oe:d}:{}})),...i.length?{regs:i}:{},rout:50}],meta:{help:a}}}var Pl=e=>t=>t==="VCC"?"vin":t==="GND"?"gnd":e.includes(t)?"out":"sig",XC=["1A","1B","1Y","2A","2B","2Y","GND","3Y","3A","3B","4Y","4A","4B","VCC"],Az=["1Y","2Y","3Y","4Y"],QC=["1E","1A0","1A1","1Y0","1Y1","1Y2","1Y3","GND","2Y3","2Y2","2Y1","2Y0","2A1","2A0","2E","VCC"],eN=["1Y0","1Y1","1Y2","1Y3","2Y0","2Y1","2Y2","2Y3"],tN=["1CLR","1D","1CLK","1PRE","1Q","1Qn","GND","2Qn","2Q","2PRE","2CLK","2D","2CLR","VCC"],rN=["1Q","1Qn","2Q","2Qn"],Oz=e=>({name:"F"+e,clk:`${e}CLK`,d:`${e}D`,reset:`!${e}CLR`,set:`!${e}PRE`}),nN=["QB","QC","QD","QE","QF","QG","QH","GND","QHs","SRCLR","SRCLK","RCLK","OE","SER","QA","VCC"],oN=["QA","QB","QC","QD","QE","QF","QG","QH","QHs"],sN=[...[0,1,2,3,4,5,6,7].map(e=>({name:"S"+e,clk:"SRCLK",d:e?"S"+(e-1):"SER",reset:"!SRCLR"})),...[0,1,2,3,4,5,6,7].map(e=>({name:"R"+e,clk:"RCLK",d:"S"+e}))],Iz=e=>[0,1,2,3].map(t=>[`${e}Y${t}`,`!(!${e}E & ${t&2?"":"!"}${e}A1 & ${t&1?"":"!"}${e}A0)`]),ze=(e,...t)=>["GPIO"+e,"GPIO"+e,"gpio",t],Tz=(e,t)=>[...e.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:0,lc:a,...s&&s.length?{caps:[...s]}:{}})),...t.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:"{span}",lc:a,...s&&s.length?{caps:[...s]}:{}}))],Rz=[["VIN","VIN","pwr"],["GND","GND","gnd"],ze(13,"adc2","spi2.mosi"),ze(12,"adc2","strap","spi2.miso"),ze(14,"adc2","spi2.sck"),ze(27,"adc2"),ze(26,"adc2","dac"),ze(25,"adc2","dac"),ze(33,"adc"),ze(32,"adc"),ze(35,"adc","in","nopull"),ze(34,"adc","in","nopull"),ze(39,"adc","in","nopull"),ze(36,"adc","in","nopull"),["EN","EN","misc"]],jz=[["3V3","3V3","p33"],["GND2","GND","gnd"],ze(15,"adc2","strap","spi2.cs"),ze(2,"adc2","strap","led"),ze(4,"adc2"),ze(16,"uart2.rx"),ze(17,"uart2.tx"),ze(5,"strap","spi3.cs"),ze(18,"spi3.sck"),ze(19,"spi3.miso"),ze(21,"i2c0.sda"),ze(3,"uart0","uart0.rx"),ze(1,"uart0","uart0.tx"),ze(22,"i2c0.scl"),ze(23,"spi3.mosi")],Rp={GPIO36:"VP",GPIO39:"VN",GPIO1:"TX0",GPIO3:"RX0",GPIO16:"RX2",GPIO17:"TX2"};for(let[,e]of[...Rz,...jz])/^GPIO\d+$/.test(e)&&!(e in Rp)&&(Rp[e]="D"+e.slice(4));var Mz=[["5V","5V","pwr"],["GND","GND","gnd"],["3V3","3V3","p33"],ze(4,"adc","spi2.sck"),ze(3,"adc"),ze(2,"adc","strap"),ze(1,"adc"),ze(0,"adc")],Dz=[ze(5,"adc2","spi2.miso"),ze(6,"spi2.mosi"),ze(7,"spi2.cs"),ze(8,"strap","led","i2c0.sda"),ze(9,"strap","i2c0.scl"),ze(10),ze(20,"uart0","uart0.rx"),ze(21,"uart0","uart0.tx")],Lz={};for(let[,e]of[...Mz,...Dz])/^GPIO\d+$/.test(e)&&(Lz[e]=e.slice(4));var Cz="A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.",Vz="https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip",aN={fqbn:"rp2040:rp2040:rpipicow",boardUrl:"https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json",pwmFreq:"analogWriteFreq({f});",pio:{platform:"https://github.com/maxgerhardt/platform-raspberrypi.git",board:"rpipicow",extra:["board_build.core = earlephilhower"]}},iN={fqbn:"esp32:esp32:esp32doit-devkit-v1",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Vz,board:"esp32doit-devkit-v1"},mpyAtten:!0},lN={fqbn:"esp32:esp32:esp32c3",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Vz,board:"esp32-c3-devkitm-1",extra:["build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1"]},mpyAtten:!0},To={pico:{name:"Raspberry Pi Pico W",fp:"2\xD720 l\xE1b, sort\xE1v 6",prefix:"PICO",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat."}],pinTable:Nz,pins:[{repeat:20,id:"{40-i}",lr:0,lc:"{i}"},{repeat:20,id:"{1+i}",lr:"{span}",lc:"{i}"}],groups:[["3","8","13","18","23","28","33","38"]],bounds:{r:[-.75,"{span}+0.75"],c:[-1.45,19.6]},graphics:[{shape:"rect",layer:"body",r:[-.75,"{span}+0.75"],c:[-.6,19.6],fill:"#1f6b4a",stroke:"#134a33",width:1.5,xray:{stroke:"#1f6b4a"}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[-1.45,-.15],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.3","{span}/2+1.3"],c:[7.6,10.2],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[.9,"{span}-0.9"],c:[13.4,18.4],fill:"#c3c8cd"},{shape:"text",layer:"detail",at:["{span}/2",4.6],text:"Pico W",size:.6,min:8,color:"#e8f3ec"},{shape:"text",layer:"detail",at:["{span}/2",11.6],text:"{label}",size:.42,color:"#bfe0cd"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9.5],text:"{label} \xB7 Pico W",size:.55,min:8,color:"#1f6b4a"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:{ADC_VREF:"VREF"}},meta:{target:aN},model:[{el:"mcu",gnd:"38",vbus:"40",vsys:"39",v33:"36",vreg:1.8,vmax:5.5,igpio:.012}]},esp32:{name:"ESP32 DevKit V1 (DOIT, 30 l\xE1b)",fp:"2\xD715 l\xE1b, sort\xE1v 10",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:10,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). "+Cz}],pins:Tz(Rz,jz),groups:[["GND","GND2"]],bounds:{r:[-.65,"{span}+0.65"],c:[-1.7,19.5]},graphics:[{shape:"rect",layer:"body",r:[-.65,"{span}+0.65"],c:[-1.2,19.5],fill:"#16365c",stroke:"#0c2038",width:1.5,xray:{stroke:"#16365c"}},{shape:"rect",layer:"detail",r:["{span}/2-0.9","{span}/2+0.9"],c:[-1.7,.4],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[.9,1.9],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:["{span}-1.9","{span}-0.9"],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:[.7,"{span}-0.7"],c:[9.6,19.3],fill:"#262a2e"},{shape:"rect",layer:"detail",r:[1,"{span}-1.0"],c:[9.9,16.6],fill:"#c9ced3",stroke:"#9aa1a8"},{shape:"text",layer:"detail",at:["{span}/2-0.6",13.2],text:"ESP32",size:.62,min:8,color:"#343a40"},{shape:"text",layer:"detail",at:["{span}/2+0.6",13.2],text:"WROOM-32",size:.36,min:6,color:"#495057"},{shape:"text",layer:"detail",at:["{span}/2",5.8],text:"{label}",size:.42,color:"#c5d6ea"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9],text:"{label} \xB7 ESP32",size:.55,min:8,color:"#16365c"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Rp},meta:{target:iN,help:"ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.",pinNotes:{GPIO12:"ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO15:"ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO5:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.",GPIO1:"TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.",GPIO3:"RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t."}},model:[{el:"mcu",gnd:"GND",vsys:"VIN",v33:"3V3",vreg:4.2,vmax:12,igpio:.02,mux:"matrix"}]},esp32c3:{name:"ESP32-C3 SuperMini",fp:"2\xD78 l\xE1b, sort\xE1v 6",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). "+Cz}],pins:Tz(Mz,Dz),bounds:{r:[-.6,"{span}+0.6"],c:[-1.1,8.2]},graphics:[{shape:"rect",layer:"body",r:[-.6,"{span}+0.6"],c:[-.7,8.2],fill:"#1d1f22",stroke:"#000",width:1.5,xray:{stroke:"#1d1f22"}},{shape:"rect",layer:"detail",r:["{span}/2-1.25","{span}/2+1.25"],c:[-1.1,.9],fill:"#c3c8cd",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[2.9,5.1],fill:"#3a3d41",stroke:"#55595e"},{shape:"rect",layer:"detail",r:["{span}/2-0.5","{span}/2+0.5"],c:[6.6,7.8],fill:"#e9ecef"},{shape:"circle",layer:"detail",at:["{span}/2+1.7",1.9],rad:.28,fill:"#4dabf7"},{shape:"text",layer:"detail",at:["{span}/2",4],text:"C3",size:.5,min:7,color:"#ced4da"},{shape:"text",layer:"label",at:["{span}+1.3",3.5],text:"{label} \xB7 C3 SuperMini",size:.42},{shape:"text",layer:"xray",at:["{span}/2",-1.5],text:"USB",size:.4,color:"#4d5a52"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Lz},meta:{target:lN,help:"ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).",pinNotes:{GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO8:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.",GPIO9:"a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.",GPIO20:"RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.",GPIO21:"TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja."}},model:[{el:"mcu",gnd:"GND",vbus:"5V",vsys:"5V",v33:"3V3",vreg:3.5,vmax:6,igpio:.02,mux:"matrix"}]},button:{name:"Nyom\xF3gomb 12 mm",fp:"A 0:0, 0:5 \xB7 B 2:0, 2:5",prefix:"S",cat:"Bemenet",pins:[{id:"A1",lr:0,lc:0,role:"A"},{id:"A2",lr:0,lc:5,role:"A"},{id:"B1",lr:2,lc:0,role:"B"},{id:"B2",lr:2,lc:5,role:"B"}],groups:[["A1","A2"],["B1","B2"]],bounds:{r:[-1.36,3.36],c:[-.3,5.3]},controls:[{kind:"press",closes:[["A1","B1"]]}],graphics:[{shape:"line",layer:"lead",from:[0,0],to:[0,.7],width:.14},{shape:"line",layer:"lead",from:[0,5],to:[0,4.3],width:.14},{shape:"line",layer:"lead",from:[2,0],to:[2,.7],width:.14},{shape:"line",layer:"lead",from:[2,5],to:[2,4.3],width:.14},{shape:"rect",layer:"body",r:[-1.36,3.36],c:[.14,4.86],fill:"#2a2a2a",stroke:"#111",width:1,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[-1,3],c:[.5,4.5],fill:"#9aa3ab"},{shape:"circle",layer:"detail",at:[1,2.5],rad:1.35,fill:"#141414",pressed:{fill:"#4a4a4a",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.4)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:[1,2.5],text:"{label}",size:.62,min:8,color:"#f1f3f5",pressed:{color:"#ffd8bf"},xray:{color:"#1d231f",pressed:{color:"#c2410c"}}}],pinLabels:{mode:"role",off:.62,colors:{A:"#1d4ed8",B:"#b45309"}}},res:{name:"Ellen\xE1ll\xE1s",fp:"0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)",prefix:"R",cat:"Passz\xEDv",params:[{key:"ohm",label:"\xC9rt\xE9k",type:"value",unit:"\u03A9",default:1e3,min:.01,max:1e9,series:"E12"},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,4],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat."}],pins:[{id:"1",lr:0,lc:0,role:"r"},{id:"2",lr:"{dr}",lc:"{dc}",role:"r"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"1",to:"2",len:2.3,w:.76,fill:"#d9bf8c",stroke:"#8a6d3b",bands:"{ohm}"},{shape:"text",layer:"label",between:["1","2"],perp:.95,text:"{label} {ohm|si}\u03A9",size:.42}],model:[{el:"resistor",a:"1",b:"2",ohm:"{ohm}"}]},jumper:{name:"\xC1tk\xF6t\u0151 huzal (0 \u03A9)",fp:"0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)",prefix:"JP",cat:"Passz\xEDv",params:[{key:"span",label:"2. v\xE9g helye",type:"span",default:[0,2],help:"Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat."}],pins:[{id:"1",lr:0,lc:0,role:"j"},{id:"2",lr:"{dr}",lc:"{dc}",role:"j"}],groups:[["1","2"]],bounds:{pad:.4},graphics:[{shape:"link",layer:"lead",from:"1",to:"2",width:.22,stroke:"#b8bec4",edge:"#5f676e"},{shape:"text",layer:"label",between:["1","2"],perp:.75,text:"{label}",size:.38}]},led:{name:"LED 3 mm",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)",prefix:"LED",cat:"F\xE9lvezet\u0151",params:[{key:"color",label:"Sz\xEDn",type:"color",default:"red",options:Object.entries(WC).map(([e,t])=>({v:e,label:t.l,hex:t.c,vf:t.vf})),help:"{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V"},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,1],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"A",name:"an\xF3d +",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d \u2212",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.3,mid:.7},graphics:[{shape:"radial",layer:"body",from:"A",to:"K",rad:.62,fill:"{color.hex}",glow:!0},{shape:"text",layer:"label",between:["A","K"],perp:1.15,text:"{label}",size:.42}],pinLabels:{mode:"sign",off:.72,plus:["an"]},model:[{el:"diode",a:"A",k:"K",vf:"{color.vf}",ron:15,light:!0}]},diode:{name:"Di\xF3da",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)",prefix:"D",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"1N5817",options:[{v:"1N5817",label:"1N5817 Schottky (0,3 V, 1 A)",vf:.3,ron:.15,imax:1},{v:"1N4148",label:"1N4148 jeldi\xF3da (0,7 V, 0,2 A)",vf:.7,ron:2,imax:.2},{v:"1N4007",label:"1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)",vf:.7,ron:.3,imax:1}],help:"Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van."},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,4],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4."}],pins:[{id:"A",name:"an\xF3d",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"A",to:"K",len:1.7,w:.62,fill:"#262626",stroke:"#000",stripe:{at:.8,color:"#d0d4d8"}},{shape:"text",layer:"label",between:["A","K"],perp:-.95,text:"{label} {kind}",size:.36}],pinLabels:{mode:"sign",off:.72,plus:["an"],plusText:"A",minusText:"K"},model:[{el:"diode",a:"A",k:"K",vf:"{kind.vf}",ron:"{kind.ron}",imax:"{kind.imax}"}]},nmos:{name:"N-MOSFET (2N7000)",fp:"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"vth",label:"K\xFCsz\xF6b (Vth)",type:"value",unit:"V",default:2.1,min:.2,max:10,step:.1,help:"A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb."},{key:"ron",label:"Nyitott ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:5,min:.001,max:1e4,series:"E12"},{key:"imax",label:"Max. \xE1ram",type:"value",unit:"A",default:.2,min:.001,max:200,series:"E12"}],pins:[{id:"S",name:"S",lr:0,lc:0,role:"s"},{id:"G",name:"G",lr:0,lc:1,role:"g"},{id:"D",name:"D",lr:0,lc:2,role:"d"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Ez,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label}",size:.4}],pinLabels:{mode:"name",off:.78,colors:{s:"#1f2328",g:"#1d4ed8",d:"#5c666e"}},model:[{el:"nmos",d:"D",g:"G",s:"S",vth:"{vth}",ron:"{ron}",imax:"{imax}"}]},cap:{name:"Kondenz\xE1tor (ker\xE1mia)",fp:"0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-7,min:1e-12,max:1,series:"E12",help:"Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:50,min:1,max:1e3,step:1},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,1],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"1",lr:0,lc:0,role:"c"},{id:"2",lr:"{dr}",lc:"{dc}",role:"c"}],bounds:{pad:.3,mid:.6},graphics:[{shape:"radial",layer:"body",from:"1",to:"2",rad:.55,fill:"#d9902f"},{shape:"text",layer:"label",between:["1","2"],perp:1.05,text:"{label} {f|si}F",size:.4}],model:[{el:"capacitor",a:"1",b:"2",f:"{f}",vmax:"{volt}"}]},elko:{name:"Elektrolit kondenz\xE1tor",fp:"+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-5,min:1e-7,max:1,series:"E12",help:"Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:16,min:1,max:500,step:1},{key:"span",label:"\u2212 l\xE1b helye",type:"span",default:[0,1],help:"A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"cp"},{id:"-",name:"\u2212",lr:"{dr}",lc:"{dc}",role:"cn"}],bounds:{pad:.45,mid:1},graphics:[{shape:"radial",layer:"body",from:"+",to:"-",rad:.95,fill:"#1d3f8f"},{shape:"text",layer:"label",between:["+","-"],perp:1.5,text:"{label} {f|si}F {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["cp"]},model:[{el:"capacitor",a:"+",b:"-",f:"{f}",vmax:"{volt}",polar:!0}]},npn:{name:"NPN tranzisztor",fp:"TO-92, l\xE1bsorrend t\xEDpus szerint",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"BC547",geo:!0,options:[{v:"BC547",label:"BC547 (C-B-E, 100 mA)",beta:200,imax:.1,pc:0,pb:1,pe:2},{v:"2N3904",label:"2N3904 (E-B-C, 200 mA)",beta:150,imax:.2,pc:2,pb:1,pe:0},{v:"2N2222",label:"2N2222A (E-B-C, 600 mA)",beta:150,imax:.6,pc:2,pb:1,pe:0}],help:"A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2."}],pins:[{id:"C",name:"C",lr:0,lc:"{kind.pc}",role:"col"},{id:"B",name:"B",lr:0,lc:"{kind.pb}",role:"base"},{id:"E",name:"E",lr:0,lc:"{kind.pe}",role:"emit"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Ez,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label} {kind}",size:.36}],pinLabels:{mode:"name",off:.78,colors:{col:"#5c666e",base:"#1d4ed8",emit:"#1f2328"}},model:[{el:"npn",c:"C",b:"B",e:"E",beta:"{kind.beta}",vbe:.65,vcesat:.1,imax:"{kind.imax}"}]},hc00:Sl(14,"74HC00 n\xE9gy NAND kapu","DIP-14 \xB7 4\xD7 NAND",XC,Pl(Az),Az.map(e=>[e,`!(${e[0]}A & ${e[0]}B)`]),"N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re."),hc74:Sl(14,"74HC74 kett\u0151s D t\xE1rol\xF3","DIP-14 \xB7 2\xD7 D flip-flop",tN,Pl(rN),[["1Q","F1"],["1Qn","!F1"],["2Q","F2"],["2Qn","!F2"]],"K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.",[Oz("1"),Oz("2")]),hc595:Sl(16,"74HC595 l\xE9ptet\u0151regiszter","DIP-16 \xB7 8 bit SIPO",nN,Pl(oN),[...["QA","QB","QC","QD","QE","QF","QG","QH"].map((e,t)=>[e,"R"+t,"!OE"]),["QHs","S7"]],"8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.",sN),hc139:Sl(16,"74HC139 kett\u0151s 2\u21924 dek\xF3der","DIP-16 \xB7 2\xD7 (2\u21924)",QC,Pl(eN),[...Iz("1"),...Iz("2")],"K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V."),stepper:{name:"L\xE9ptet\u0151motor (28BYJ-48)",fp:"k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"Tekercsellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:50,min:5,max:1e3,series:"E12",help:"5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA)."}],pins:[{id:"A",lr:0,lc:0,role:"coil"},{id:"B",lr:0,lc:1,role:"coil"},{id:"C",lr:0,lc:2,role:"coil"},{id:"D",lr:0,lc:3,role:"coil"},{id:"COM",name:"+",lr:0,lc:4,role:"mp"}],bounds:{r:[-8.2,.5],c:[-1.9,5.9]},graphics:[...[["A","#1c7ed6",.8],["B","#f783ac",1.4],["C","#fcc419",2],["D","#fd7e14",2.6],["COM","#e03131",3.2]].map(([e,t,r])=>({shape:"line",layer:"lead",from:e,to:[-1.4,r],width:.13,stroke:t})),{shape:"rect",layer:"body",r:[-5.1,-4],c:[-1.9,5.9],fill:"#ced4da",stroke:"#868e96",width:1.2},{shape:"circle",layer:"body",at:[-4.6,2],rad:3.1,fill:"#dee2e6",stroke:"#868e96",width:1.4,xray:{stroke:"#868e96"}},{shape:"rect",layer:"detail",r:[-2.1,-1.2],c:[.6,3.4],fill:"#1c5bbf"},{shape:"circle",layer:"detail",at:[-5.6,2],rad:1.2,fill:"#f1f3f5",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-5.6,2],rad:1.8,color:"#e8590c",width:.38},{shape:"text",layer:"label",at:[-8.6,2],text:"{label} 28BYJ-48",size:.4}],pinLabels:{mode:"name",off:.75},model:[{el:"stepper",com:"COM",a:"A",b:"B",c:"C",d:"D",ohm:"{ohm}",steps:4096,rotor:64}]},uln2003:{name:"ULN2003 l\xE9ptet\u0151motor-meghajt\xF3",fp:"IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3",prefix:"U",cat:"Modul",pins:[...[1,2,3,4].map(e=>({id:"IN"+e,lr:0,lc:e-1,role:"sig"})),{id:"GND",lr:0,lc:5,role:"gnd"},{id:"VCC",lr:0,lc:6,role:"vin",vmin:4.5,vmax:12},...["A","B","C","D"].map((e,t)=>({id:e,lr:4,lc:t,role:"out"})),{id:"COM",name:"+",lr:4,lc:4,role:"pout"}],groups:[["VCC","COM"]],socket:{pins:["A","B","C","D","COM"]},bounds:{r:[-.8,4.8],c:[-.8,6.8]},graphics:[{shape:"rect",layer:"body",r:[-.8,4.8],c:[-.8,6.8],fill:"#1e6b45",stroke:"#0f3d27",width:1.2,xray:{stroke:"#1e6b45"}},{shape:"rect",layer:"detail",r:[1.4,2.6],c:[.6,4.4],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[3.4,4.6],c:[-.5,4.5],fill:"#f8f9fa",stroke:"#adb5bd"},{shape:"text",layer:"detail",at:[2,2.5],text:"ULN2003",size:.42,min:7,color:"#dee2e6"},{shape:"text",layer:"label",at:[2,5.9],text:"{label}",size:.42}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#e9ecef",gnd:"#adb5bd",vin:"#ffc9d6",out:"#ffd8a8",pout:"#ffd8a8"}},meta:{help:"N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s."},model:[{el:"logic",vcc:"VCC",gnd:"GND",vih:.44,vil:.15,rout:15,imax:.5,outs:["A","B","C","D"].map((e,t)=>({pin:e,expr:"!IN"+(t+1),type:"od"}))}]},motor:{name:"DC motor (130-as)",fp:"k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"vnom",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:3,min:1,max:24,step:.5,help:"A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell."},{key:"ohm",label:"\xDCzemi ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:20,min:.5,max:1e3,series:"E12",help:"Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"mp"},{id:"-",name:"\u2212",lr:0,lc:2,role:"mn"}],bounds:{r:[-5.9,.5],c:[-1.8,3.8]},graphics:[{shape:"line",layer:"lead",from:"+",to:[-1.2,.4],width:.12,stroke:"#b87333"},{shape:"line",layer:"lead",from:"-",to:[-1.2,1.6],width:.12,stroke:"#b87333"},{shape:"circle",layer:"body",at:[-3,1],rad:2.7,fill:"#b8bec4",stroke:"#6c757d",width:1.4,xray:{stroke:"#6c757d"}},{shape:"circle",layer:"detail",at:[-3,1],rad:2.1,fill:"#ced4da"},{shape:"dial",layer:"detail",at:[-3,1],rad:1.7,color:"#495057"},{shape:"circle",layer:"detail",at:[-3,1],rad:.35,fill:"#343a40"},{shape:"text",layer:"label",at:[-6.4,1],text:"{label} {vnom|fix1}V",size:.42}],pinLabels:{mode:"sign",off:.75,plus:["mp"]},model:[{el:"motor",a:"+",b:"-",ohm:"{ohm}",vnom:"{vnom}"}]},servo:{name:"Szerv\xF3 (SG90)",fp:"k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel",prefix:"SV",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"\xC1ramfelv\xE9tel (ell.)",type:"value",unit:"\u03A9",default:100,min:5,max:1e4,series:"E12",help:"A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"V+",lr:0,lc:1,role:"vin",vmin:4.5,vmax:6.5},{id:"SIG",lr:0,lc:2,role:"sig"}],bounds:{r:[-12.2,.5],c:[-1.6,3.6]},graphics:[{shape:"line",layer:"lead",from:"GND",to:[-2.6,.6],width:.14,stroke:"#7b4b2a"},{shape:"line",layer:"lead",from:"V+",to:[-2.6,1],width:.14,stroke:"#e03131"},{shape:"line",layer:"lead",from:"SIG",to:[-2.6,1.4],width:.14,stroke:"#f08c00"},{shape:"rect",layer:"body",r:[-11.4,-2.6],c:[-.9,2.9],fill:"#1c5bbf",stroke:"#0f3a80",width:1.2,xray:{stroke:"#1c5bbf"}},{shape:"rect",layer:"detail",r:[-12.2,-11.4],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"rect",layer:"detail",r:[-2.6,-1.8],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"circle",layer:"detail",at:[-9.2,1],rad:1.1,fill:"#e9ecef",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-9.2,1],rad:3.2,color:"#f8f9fa",width:.55},{shape:"text",layer:"detail",at:[-5.4,1],text:"SG90",size:.55,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[1.3,1],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[-6.5,1],text:"{label} \xB7 SG90",size:.5,min:8,color:"#1c5bbf"}],pinLabels:{mode:"name",off:-.75,colors:{gnd:"#5c3a1e",vin:"#c92a2a",sig:"#d9480f"}},model:[{el:"servo",vp:"V+",gnd:"GND",sig:"SIG",ohm:"{ohm}",pmin:.5,pmax:2.5}]},header:{name:"T\xFCskesor 1\xD7N",fp:"N l\xE1b egy sorban \xB7 csatlakoz\xF3",prefix:"J",cat:"Csatlakoz\xF3",params:[{key:"n",label:"L\xE1bsz\xE1m",type:"int",default:4,min:1,max:20,geo:!0},{key:"names",label:"L\xE1bnevek",type:"names",default:"",help:"Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja."}],pins:[{repeat:"{n}",id:"{i+1}",lr:0,lc:"{i}",role:"h"}],bounds:{r:[-.5,.5],c:[-.5,"{n}-0.5"]},socket:{count:"n",names:"names"},graphics:[{shape:"rect",layer:"body",r:[-.5,.5],c:[-.5,"{n}-0.5"],fill:"#1d1d1d",stroke:"#000",width:1},{shape:"text",layer:"label",at:[0,"{n}-0.5+0.75"],text:"{label}",size:.42}],pinLabels:{mode:"name",off:-.8,named:!0}},bat:{name:"Akku csatlakoz\xF3",fp:"+ 0:0 \xB7 \u2212 0:1",prefix:"BAT",cat:"Csatlakoz\xF3",params:[{key:"volt",label:"Fesz\xFClts\xE9g",type:"value",unit:"V",default:3.7,min:.5,max:48,step:.1}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"bp"},{id:"-",name:"\u2212",lr:0,lc:1,role:"bn"}],bounds:{r:[-1.3,.5],c:[-.6,1.6]},graphics:[{shape:"rect",layer:"body",r:[-1.25,.45],c:[-.55,1.55],fill:"#f4f1e8",stroke:"#7d7563",width:1.2},{shape:"text",layer:"label",at:[-.75,.5],text:"{label} {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["bp"]},model:[{el:"source",p:"+",n:"-",v:"{volt}",rint:.1}]},tp4056:{name:"TP4056 t\xF6lt\u0151modul",fp:"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)",prefix:"U",cat:"Modul",params:[{key:"usb",label:"Saj\xE1t USB",type:"select",default:"off",options:[{v:"off",label:"nincs bedugva",volt:0,rint:1e9},{v:"on",label:"5 V bedugva",volt:5,rint:.1}],help:"Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel."}],pins:[{id:"IN+",lr:0,lc:0,role:"vin",vmin:4,vmax:8},{id:"IN-",lr:0,lc:6,role:"gnd"},{id:"OUT+",lr:9,lc:0,role:"pout"},{id:"B+",lr:9,lc:2,role:"chg"},{id:"B-",lr:9,lc:4,role:"bn"},{id:"OUT-",lr:9,lc:6,role:"gnd"}],groups:[["B+","OUT+"],["IN-","OUT-"]],bounds:{r:[-1.5,9.6],c:[-.7,6.7]},graphics:[{shape:"rect",layer:"body",r:[-.6,9.6],c:[-.7,6.7],fill:"#1f4f9c",stroke:"#12325f",width:1.2,xray:{stroke:"#1f4f9c"}},{shape:"rect",layer:"detail",r:[-1.5,1.3],c:[1.9,4.1],fill:"#c3c8cd",stroke:"#868e96",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[3.3,5.3],c:[2.2,3.8],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[6.3,7.3],c:[4.4,5.4],fill:"#1b1b1b"},{shape:"circle",layer:"detail",at:[2.6,5.5],rad:.28,fill:"#a61e1e"},{shape:"circle",layer:"detail",at:[4,5.5],rad:.28,fill:"#1c4fd1"},{shape:"text",layer:"detail",at:[6.2,2.2],text:"TP4056",size:.42,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[10.4,3],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[4.5,3],text:"{label} \xB7 TP4056",size:.5,min:8,color:"#1f4f9c"}],pinLabels:{mode:"name",off:.7,colors:{vin:"#ffc9d6",gnd:"#e9ecef",pout:"#ffe3bf",chg:"#ffe3bf",bn:"#e9ecef"}},model:[{el:"source",p:"IN+",n:"IN-",v:"{usb.volt}",rint:"{usb.rint}",kind:"supply"},{el:"diode",a:"IN+",k:"B+",vf:.8,ron:1},{el:"resistor",a:"B-",b:"OUT-",ohm:.05}]},nokia5110:{name:"Nokia 5110 kijelz\u0151",fp:"8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V",prefix:"LCD",cat:"Modul",pins:["RST","CE","DC","DIN","CLK","VCC","BL","GND"].map((e,t)=>e==="VCC"?{id:e,lr:0,lc:t,role:"vin",vmin:2.7,vmax:3.6}:{id:e,lr:0,lc:t,role:e==="GND"?"gnd":"sig",...e==="DIN"?{fn:"spi.mosi"}:e==="CLK"?{fn:"spi.sck"}:{}}),bounds:{r:[-1.3,15.9],c:[-4.6,11.6]},graphics:[{shape:"rect",layer:"body",r:[-1.3,15.9],c:[-4.6,11.6],fill:"#b8282d",stroke:"#7d1a1e",width:1.2,xray:{stroke:"#b8282d"}},{shape:"rect",layer:"detail",r:[1.4,14.4],c:[-4,11],fill:"#d7dadd",stroke:"#9aa1a8"},{shape:"rect",layer:"detail",r:[2.4,13.3],c:[-3.4,10.4],fill:"#8f9f86",lit:{fill:"#c6efa4"},xray:{fill:null,stroke:"#9aa1a8",dash:!0}},{shape:"text",layer:"detail",at:[7.9,3.5],text:"NOKIA 5110",size:.8,min:8,color:"#2b3328"},{shape:"text",layer:"label",at:[15.1,3.5],text:"{label}",size:.45,color:"#ffe0e0",xray:{color:"#7d1a1e"}},{shape:"text",layer:"xray",at:[7.9,3.5],text:"{label} \xB7 Nokia 5110",size:.55,min:8,color:"#b8282d"}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},model:[{el:"resistor",a:"VCC",b:"GND",ohm:1e4},{el:"diode",a:"BL",k:"GND",vf:2.6,ron:60,light:!0}]},ssd1306:{name:'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)',fp:"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban",prefix:"OLED",cat:"Modul",pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"VCC",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"SCL",lr:0,lc:2,role:"sig",fn:"i2c.scl"},{id:"SDA",lr:0,lc:3,role:"sig",fn:"i2c.sda"}],bounds:{r:[-.8,10.4],c:[-3.4,6.4]},graphics:[{shape:"rect",layer:"body",r:[-.8,10.4],c:[-3.4,6.4],fill:"#1f4f8a",stroke:"#123155",width:1.2,xray:{stroke:"#1f4f8a"}},{shape:"rect",layer:"detail",r:[1.4,8.4],c:[-3,6],fill:"#111418",stroke:"#3d4450"},{shape:"rect",layer:"detail",r:[2.2,6.9],c:[-2.6,5.6],fill:"#0b0d10",lit:{fill:"#123049"},xray:{fill:null,stroke:"#3d4450",dash:!0}},{shape:"text",layer:"detail",at:[4.6,1.5],text:"128\xD764",size:.6,min:7,color:"#4dabf7"},{shape:"text",layer:"label",at:[9.5,1.5],text:"{label}",size:.45,color:"#d0ebff",xray:{color:"#1f4f8a"}}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},meta:{help:"128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki."},model:[{el:"resistor",a:"VCC",b:"GND",ohm:330}]},joystick:{name:"Joystick (KY-023)",fp:"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban",prefix:"JS",cat:"Bemenet",params:[{key:"x",label:"X \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3."},{key:"y",label:"Y \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % le, +100 % fel."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"5V",name:"+5V",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"VRX",name:"VRx",lr:0,lc:2,role:"adc"},{id:"VRY",name:"VRy",lr:0,lc:3,role:"adc"},{id:"SW",lr:0,lc:4,role:"sig"}],bounds:{r:[-.8,12.6],c:[-2.6,6.6]},controls:[{kind:"press",closes:[["SW","GND"]]},{kind:"slider",key:"x",label:"X"},{kind:"slider",key:"y",label:"Y"}],graphics:[{shape:"rect",layer:"body",r:[-.8,12.6],c:[-2.6,6.6],fill:"#23272e",stroke:"#0f1114",width:1.2,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[3,11.4],c:[-1.9,5.9],fill:"#e9ecef",stroke:"#adb5bd"},{shape:"circle",layer:"detail",at:[7.2,2],rad:3,fill:"#343a40"},{shape:"circle",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],rad:1.9,fill:"#495057",stroke:"#111",width:1.5,pressed:{fill:"#6c757d",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.45)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],text:"{label}",size:.55,min:8,color:"#f1f3f5",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.85,colors:{gnd:"#e9ecef",vin:"#ffc9d6",adc:"#b2f2bb",sig:"#a5d8ff"}},model:[{el:"resistor",a:"5V",b:"VRX",ohm:"{5001-50*x}"},{el:"resistor",a:"VRX",b:"GND",ohm:"{5001+50*x}"},{el:"resistor",a:"5V",b:"VRY",ohm:"{5001-50*y}"},{el:"resistor",a:"VRY",b:"GND",ohm:"{5001+50*y}"}]}};var H=_z(To),Fz={},Zz=()=>Fz;function $l(e){for(let t of Object.keys(H))t in To||delete H[t];for(let[t,r]of[...Object.entries(Fz),...Object.entries(e||{})])try{H[t]=Io(t,{cat:"Saj\xE1t",...r})}catch(n){console.warn("Saj\xE1t alkatr\xE9sz kihagyva:",t,n)}}var El=e=>Oo(H[e.type].def,e),Co=e=>(H[e.type].def.controls||[]).some(t=>t.kind==="press"),Ee=e=>H[e.type].def.mount==="off",ce=e=>!!(e&&H[e.type]&&H[e.type].mcu);var No=(e,t)=>e*1e5+t;function Bz(e,t){let r=new Map;for(let n of t){let o=Math.round(+n[0]),s=Math.round(+n[1]),a=+n[2]?1:0;s>=0&&s<e.cols&&o>=0&&o<e.rows&&(a===0&&(o>=e.rows-1||(o+1)%e.sec===0)||r.set(`${o}:${s}:${a}`,[o,s,a]))}return[...r.values()].sort((n,o)=>n[1]-o[1]||n[0]-o[0]||n[2]-o[2])}function Ir(e,t=[]){let r=Bz(e,t),n=new Set,o=new Set;for(let[d,f,h]of r)(h?o:n).add(No(d,f));let s=[],a=new Int32Array(e.rows*e.cols).fill(-1),i=[];for(let d=0;d<e.cols;d++){let f=[],h=-1,b=p=>{h>=0&&p>=h&&(f.push(s.length),s.push({c:d,r0:h,r1:p,drilled:!1})),h=-1};for(let p=0;p<e.rows;p++){if(o.has(No(p,d))){b(p-1),f.push(s.length),s.push({c:d,r0:p,r1:p,drilled:!0});continue}h<0&&(h=p),((p+1)%e.sec===0||n.has(No(p,d))||p===e.rows-1)&&b(p)}i.push(f)}s.forEach((d,f)=>{for(let h=d.r0;h<=d.r1;h++)a[h*e.cols+d.c]=f});let c=s.map(()=>[]),l=new Map;i.forEach(d=>d.forEach((f,h)=>l.set(f,h))),s.forEach((d,f)=>{if(d.drilled)return;let h=i[d.c],b=l.get(f),p=h[b-1],m=h[b+1];p!=null&&!s[p].drilled&&s[p].r1===d.r0-1&&d.r0%e.sec===0&&c[f].push({to:p,dir:0,br:[d.r0-1,d.c,d.r0,d.c]}),m!=null&&!s[m].drilled&&s[m].r0===d.r1+1&&s[m].r0%e.sec===0&&c[f].push({to:m,dir:1,br:[d.r1,d.c,d.r1+1,d.c]});for(let[g,v]of[[-1,2],[1,3]]){let _=d.c+g;if(!(_<0||_>=e.cols))for(let w of i[_]){let k=s[w];if(k.drilled||k.r1<d.r0||k.r0>d.r1)continue;let P=Math.max(k.r0,d.r0),I=Math.min(k.r1,d.r1),W=P+(e.sec>>1)<=I?P+(e.sec>>1):P+(I-P+1>>1);c[f].push({to:w,dir:v,br:g<0?[W,_,W,d.c]:[W,d.c,W,_]})}}});let u=new Map;return c.forEach((d,f)=>d.forEach(h=>{u.has(f*s.length+h.to)||u.set(f*s.length+h.to,h)})),{N:s.length,segs:s,cuts:r,cell:(d,f)=>a[d*e.cols+f],drilled:(d,f)=>o.has(No(d,f)),adj:d=>c[d],edge:(d,f)=>u.get(d*s.length+f),holes:d=>{let f=s[d],h=[];for(let b=f.r0;b<=f.r1;b++)h.push([b,f.c]);return h}}}function Gz(e,t,r,n=[]){let o=Ir(e,t),s=new Set(n.filter(c=>!c[2]).map(c=>No(c[0],c[1]))),a=new Map;for(let c of r){if(c.r<0||c.c<0||c.r>=e.rows||c.c>=e.cols||o.drilled(c.r,c.c))continue;let l=o.cell(c.r,c.c);a.has(l)||a.set(l,[]),a.get(l).push(c)}let i=[];for(let[c,l]of a){let u=o.segs[c].c;l.sort((d,f)=>d.r-f.r);for(let d=0;d+1<l.length;d++){let f=l[d],h=l[d+1];if(f.net===h.net||f.r===h.r)continue;let b=f.r+h.r-1>>1,p=-1;for(let m=0;m<=h.r-f.r&&p<0;m++)for(let g of m?[b-m,b+m]:[b])if(g>=f.r&&g<h.r&&!s.has(No(g,u))){p=g;break}p>=0&&i.push([p,u,0])}}return Bz(e,i)}function It(e,t,r){let n=t,o=e.mir?-r:r;for(let s=0;s<(e.rot&3);s++){let a=n;n=o,o=-a}return[e.r+n,e.c+o]}function me(e){return H[e.type].pins(e).map(t=>{let[r,n]=It(e,t.lr,t.lc);return{...t,r,c:n,part:e}})}var vr=(e,t,r)=>t>=0&&r>=0&&t<e.rows&&r<e.cols;function jp(e){let t=H[e.type]&&H[e.type].def.socket;if(!t)return[];let r=me(e);if(!t.pins)return r;let n=new Map(r.map(o=>[o.id,o]));return t.pins.map(o=>n.get(o)).filter(o=>!!o)}function Ro(e,t){if(!t.plug||!Ee(t))return null;let r=e.parts.find(n=>n.id===t.plug);return!r||!H[r.type]||!H[r.type].def.socket?null:jp(r).length>=H[t.type].pins(t).length?r:null}var cN=(e,t)=>e.parts.find(r=>r.plug===t.id&&Ro(e,r)===t)||null;function Mp(e,t){let r=Ro(e,t);if(!r)return[];let n=me(t),o=jp(r);return n.map((s,a)=>[s,o[a]])}function Al(e){let t=new Map;for(let r of e.parts)for(let[n,o]of Mp(e,r))t.set(r.id+"."+n.id,o.part.id+"."+o.id);return r=>t.get(r)??r}function Uz(e=H){for(let[t,r]of Object.entries(e))if(r.def.socket&&r.def.socket.count&&r.def.mount!=="off")return t;return null}function qz(e,t,r){let n=e.board,o=new Set,s=[];for(let w of e.parts){if(Ee(w))continue;for(let I of me(w))o.add(I.r+":"+I.c);let k=H[w.type].bounds(w),P=[It(w,k.r0,k.c0),It(w,k.r1,k.c1)];s.push([Math.min(P[0][0],P[1][0]),Math.max(P[0][0],P[1][0]),Math.min(P[0][1],P[1][1]),Math.max(P[0][1],P[1][1])])}for(let w of e.wires)for(let k of[w.a,w.b])o.add(k[0]+":"+k[1]);let a=Ir(n,[...e.cuts||[],...e.auto&&e.auto.cuts||[]]),i=new Set;for(let w of e.parts)if(!Ee(w))for(let k of me(w))vr(n,k.r,k.c)&&i.add(a.cell(k.r,k.c));let c=(w,k)=>vr(n,w,k)&&!o.has(w+":"+k)&&!s.some(([P,I,W,F])=>w>P-1&&w<I+1&&k>W-1&&k<F+1),l=me(t),u=l.reduce((w,k)=>w+k.r,0)/l.length,d=l.reduce((w,k)=>w+k.c,0)/l.length,f=H[t.type].bounds(t),[h,b]=It(t,(f.r0+f.r1)/2,(f.c0+f.c1)/2),p=Math.hypot(u-h,d-b)||1,m=(u-h)/p,g=(d-b)/p,v=null,_=1/0;for(let w=0;w<n.rows;w++)for(let k=0;k<n.cols;k++)for(let P of[0,1]){let I=Array.from({length:r},(V,y)=>P?[w+y,k]:[w,k+y]);if(!I.every(([V,y])=>c(V,y)))continue;let W=I.map(([V,y])=>a.cell(V,y));if(new Set(W).size<r)continue;let F=P?w+(r-1)/2:w,G=P?k:k+(r-1)/2,K=Math.hypot(F-u,G-d)||1,x=((F-u)*m+(G-d)*g)/K,$=K+4*(1-x)+(P?.5:0)+40*W.filter(V=>i.has(V)).length;$<_&&(_=$,v={r:w,c:k,rot:P?1:0})}return v}function Kz(e,t){let r=e.socket,n=H[t.type].pins(t);return{...r.count?{[r.count]:n.length}:{},...r.names?{[r.names]:n.map(o=>o.name).join(",")}:{}}}function Hz(e,t){let r=H[t.type].pins(t);for(let n of e.parts){if(Ee(n)||!H[n.type].def.socket||cN(e,n))continue;let o=jp(n);if(o.length!==r.length)continue;if(r.every((a,i)=>{let c=t.id+"."+a.id,l=n.id+"."+o[i].id;return e.links.some(u=>u.a===c&&u.b===l||u.a===l&&u.b===c)}))return n}return null}function Wz(e){let t=Al(e),r=new Set;for(let n of e.links)n.b!=="GND"&&n.b!=="GPIO"&&t(n.a)===t(n.b)&&r.add(n.id);return r}var Be=(e,t)=>!!(e&&e.caps&&e.caps.includes(t)),Ol=e=>Be(e,"adc")||Be(e,"adc2"),Dp=[["strap",E("ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["uart0",E("a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["usb",E("a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["led",E("a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.")]],uN={"uart.rx":"uart.tx","uart.tx":"uart.rx"},Lp=e=>uN[e]||e;function Hr(e,t){let[r,n]=Lp(t).split("."),o=new RegExp("^"+r+"\\d+\\."+n+"$");return(e&&e.caps||[]).filter(s=>o.test(s))}function Vn(e){let t=(H[e.type].def.model||[]).find(r=>r.el==="mcu");return t&&t.el==="mcu"&&t.mux||"fixed"}function dN(e){let t=/^(i2c|spi|uart|pwm)(\d*)\.([a-z]+)$/.exec(e);return t?`${t[1].toUpperCase()}${t[2]} ${t[3].toUpperCase()}`:e.toUpperCase()}var Vp=e=>dN(e);var aa=(e,t)=>!e||!t||Hr(t,e).length?0:Vn(t.part)==="matrix"?10:16,ia=e=>e&&Dp.some(t=>Be(e,t[0]))?10:0,Fp=(e,t)=>!!e&&ce(e.part)&&e.role==="gpio"&&(t?Be(e,"adc"):!Be(e,"in")),Fn=[["pullup",E("be, felh\xFAzva")],["pulldown",E("be, leh\xFAzva")],["float",E("be, lebeg\u0151")],["adc",E("anal\xF3g (ADC)")],["out_high",E("ki: 1")],["out_low",E("ki: 0")],["pwm",E("ki: PWM")]];function la(e,t){return t==="out_high"||t==="out_low"||t==="pwm"?!Be(e,"in"):t==="pullup"||t==="pulldown"?!Be(e,"nopull"):t==="adc"?Ol(e):t==="float"}function Jz(e,t){let r=t&&t.netPins.get(e.net)||[];return Ol(e)&&r.some(n=>n.role==="adc")?"adc":Be(e,"nopull")?"float":"pullup"}var Yz="",Zp=null;function hn(e){let t=[...e.cuts||[],...e.auto&&e.auto.cuts||[]],r=e.board.rows+"x"+e.board.cols+"/"+e.board.sec+"|"+t.map(n=>n.join(",")).join(";");return(r!==Yz||!Zp)&&(Yz=r,Zp=Ir(e.board,t)),Zp}function Tr(e,t={}){let r=hn(e),n=r.N,o=(k,P)=>vr(e.board,k,P),s=(k,P)=>r.cell(k,P),a=t.hidden||(()=>!1),i=e.parts.map(k=>[k,me(k)]),c=0;for(let[,k]of i)for(let P of k)o(P.r,P.c)||c++;let l=new Int32Array(n+c);for(let k=0;k<n+c;k++)l[k]=k;let u=k=>{for(;l[k]!==k;)l[k]=l[l[k]],k=l[k];return k},d=(k,P)=>{k=u(k),P=u(P),k!==P&&(l[Math.max(k,P)]=Math.min(k,P))},f=e.auto.bridges.filter(k=>!a(k[4])),h=e.auto.wires.filter(k=>!a(k.links));for(let k of[...e.bridges,...f])o(k[0],k[1])&&o(k[2],k[3])&&d(s(k[0],k[1]),s(k[2],k[3]));let b=[],p=new Map,m=n;for(let[k,P]of i){let I={},W=[];for(let F of P){let G=o(F.r,F.c),K=Object.assign(F,{on:G,s:G?s(F.r,F.c):m++,net:-1});I[K.id]=K,b.push(K),W.push(K)}p.set(k.id,{pins:W,map:I,out:W.some(F=>!F.on)});for(let[F,G]of H[k.type].internal(k))d(I[F].s,I[G].s);if(t.pressed&&t.pressed(k)){for(let F of H[k.type].def.controls||[])if(F.kind==="press")for(let[G,K]of F.closes)I[G]&&I[K]&&d(I[G].s,I[K].s)}}for(let k of e.parts)for(let[P,I]of Mp(e,k)){let W=p.get(k.id).map[P.id],F=p.get(I.part.id).map[I.id];W&&F&&d(W.s,F.s)}let g=new Map;for(let k of b)k.on||g.set(k.r+":"+k.c,k.s);let v=k=>o(k[0],k[1])?s(k[0],k[1]):g.get(k[0]+":"+k[1]);for(let k of[...e.wires,...h]){let P=v(k.a),I=v(k.b);P!=null&&I!=null&&d(P,I)}for(let k of b)k.net=u(k.s);let _=new Map,w=new Map;for(let k of b)_.has(k.net)||_.set(k.net,[]),_.get(k.net).push(k);for(let k=0;k<n;k++){let P=u(k);w.set(P,(w.get(P)||0)+1)}return{N:n,find:u,sid:s,pins:b,byPart:p,netPins:_,netSecs:w}}var gn=e=>ce(e.part)?`${e.part.label}.${e.name}`:`${e.part.label}.${e.id}`;function it(e,t){let r=t.indexOf(".");if(r<0)return null;let n=e.parts.find(o=>o.id===t.slice(0,r));return n&&me(n).find(o=>o.id===t.slice(r+1))||null}function zr(e){let t={},r=o=>t[o]===o?o:t[o]=r(t[o]);H[e.type].pins(e).forEach(o=>t[o.id]=o.id);for(let[o,s]of H[e.type].internal(e))t[r(o)]=r(s);let n={};for(let o in t)n[o]=r(o);return n}function Bp(e){if(!e)return[];let t=zr(e.part),r=t[e.id];return me(e.part).filter(n=>t[n.id]===r)}function Il(e){if(!e)return"?";let t=Bp(e);return t.length<2?gn(e):e.part.type==="button"?`${e.part.label}.${e.role}`:ce(e.part)&&e.role==="gnd"?`${e.part.label}.GND`:`${e.part.label}.${t.map(r=>r.id).join("/")}`}function jo(e,t){let r=it(e,t.a),n=t.b==="GND"?"GND":t.b==="GPIO"?"GPIO":Il(it(e,t.b));return`${Il(r)} \u2192 ${n}`}function Mo(e,t){let r=new Map,n=o=>{let s=o.indexOf("."),a=t.byPart.get(o.slice(0,s)),i=a&&a.map[o.slice(s+1)];return!i||!i.on&&!Ee(i.part)?-1:i.net};for(let o of e.links){let s=n(o.a),a=!1,i=null;if(s>=0){let d=t.netPins.get(s)||[];if(o.b==="GND")a=d.some(f=>ce(f.part)&&f.role==="gnd");else if(o.b==="GPIO"){let f=(it(e,o.a)||{role:""}).role==="adc";i=d.find(h=>ce(h.part)&&h.role==="gpio"&&(!f||Be(h,"adc"))),a=!!i}else a=n(o.b)===s}let c=e.auto.bridges.filter(d=>(d[4]||[]).includes(o.id)).length,l=e.auto.wires.some(d=>(d.links||[]).includes(o.id)),u=d=>{let f=it(e,d);return!!f&&Ee(f.part)&&!Ro(e,f.part)};r.set(o.id,{ok:a,gpio:i?i.name:null,gpioRef:i?i.part.id+"."+i.id:null,nb:c,wire:l,cable:u(o.a)||u(o.b)})}return r}var Xz={gnd:E("f\xF6ld"),vin:E("t\xE1pbemenet"),pwr:E("t\xE1p"),p33:E("3,3 V"),gpio:"GPIO",sig:E("jel"),adc:E("anal\xF3g jel"),out:E("kimenet"),pout:E("t\xE1pkimenet"),A:E("kapcsol\xF3 A"),B:E("kapcsol\xF3 B"),base:E("b\xE1zis"),col:E("kollektor"),emit:E("emitter"),g:E("gate"),d:E("drain"),s:E("source"),an:E("an\xF3d"),ka:E("kat\xF3d"),cp:"+",cn:"\u2212",bp:"+",bn:"\u2212",coil:E("tekercs"),chg:E("t\xF6lt\xE9s"),r:E("ellen\xE1ll\xE1s"),c:E("kondenz\xE1tor"),j:E("\xE1tk\xF6t\xE9s"),h:E("t\xFCske")},Qz=new Set(["gnd","vin"]);function e_(e,t,r){let n=zr(r),o=t.byPart.get(r.id),s=[],a=new Set;for(let i of me(r)){let c=n[i.id];if(a.has(c))continue;a.add(c);let l=me(r).filter(m=>n[m.id]===c),u=new Set(l.map(m=>r.id+"."+m.id)),d=e.links.find(m=>u.has(m.a)||u.has(m.b))||null,f=d?u.has(d.a)?d.b:d.a:null,h=o&&o.map[i.id],b=!!h&&(h.on||Ee(r)),p=b&&h?[...new Set((t.netPins.get(h.net)||[]).filter(m=>m.part!==r||n[m.id]!==c).map(m=>Il(m)))]:[];s.push({ref:r.id+"."+i.id,label:Il(i),name:l.map(m=>m.name).filter((m,g,v)=>v.indexOf(m)===g).join("/"),role:i.role,link:d,target:f,net:p,on:b,floating:!d&&!p.length})}return s}function Gp(e,t){let r=new Float64Array(e*e),n=new Float64Array(e);for(let{a:s,b:a,g:i,E:c,cp:l=s,cn:u=a}of t)s>=0&&(l>=0&&(r[s*e+l]+=i),u>=0&&(r[s*e+u]-=i),n[s]+=i*c),a>=0&&(l>=0&&(r[a*e+l]-=i),u>=0&&(r[a*e+u]+=i),n[a]-=i*c);for(let s=0;s<e;s++){let a=s,i=Math.abs(r[s*e+s]);for(let c=s+1;c<e;c++){let l=Math.abs(r[c*e+s]);l>i&&(i=l,a=c)}if(!(i<1e-30)){if(a!==s){for(let l=0;l<e;l++){let u=r[s*e+l];r[s*e+l]=r[a*e+l],r[a*e+l]=u}let c=n[s];n[s]=n[a],n[a]=c}for(let c=s+1;c<e;c++){let l=r[c*e+s]/r[s*e+s];if(l){for(let u=s;u<e;u++)r[c*e+u]-=l*r[s*e+u];n[c]-=l*n[s]}}}}let o=new Float64Array(e);for(let s=e-1;s>=0;s--){let a=n[s];for(let i=s+1;i<e;i++)a-=r[s*e+i]*o[i];o[s]=r[s*e+s]?a/r[s*e+s]:0}return o}var Tl=new Map,qp=new Map;function o_(){Tl.clear(),qp.clear()}function ca(e,t,r,n,o){let s=e.gpio[t.id+"."+r];return n?s&&la(n,s)?s:Jz(n,o):s||"pullup"}var ua=(e,t)=>Object.assign({duty:50,freq:1e3},(e.pwm||{})[t]||{}),pN=25,Up=20,t_=1;function Kp(e,t,r){let n=[];for(let d of e.parts)for(let f of t.byPart.get(d.id).pins)f.role==="gpio"&&ca(e,d,f.id,f,t)==="pwm"&&n.push({key:d.id+"."+f.id,q:f,...ua(e,d.id+"."+f.id)});let o=r.slow,s=o?n.filter(d=>+d.freq>=pN):n,a=o||new Set,c=[0,...[...new Set(s.map(d=>Math.max(0,Math.min(100,+d.duty||0))))].filter(d=>d>0&&d<100).sort((d,f)=>d-f),100],l=()=>{let d=[];for(let f=0;f+1<c.length;f++){let h=c[f],b=(c[f+1]-h)/100;b<=0||d.push({w:b,o:yN(e,t,new Set([...a,...s.filter(p=>p.duty>h).map(p=>p.key)]))})}return bN(d)},u=l();for(let d=0;d<16&&hN(u);d++)u=l();u.pwm=new Map(n.map(d=>[d.q.net,d])),mN(u,r.running);for(let d of u.servos){let f=u.pwm.get(d.sigNet);d.pulse=f?f.duty/100/Math.max(1e-9,f.freq)*1e3:null;let h=!!f&&f.freq>=40&&f.freq<=400&&d.pulse>=d.pmin-.2&&d.pulse<=d.pmax+.2;d.angle=h?Math.max(0,Math.min(180,(d.pulse-d.pmin)/(d.pmax-d.pmin)*180)):null}return u}var fN={1:0,3:1,2:2,6:3,4:4,12:5,8:6,9:7};function mN(e,t){for(let r of e.steppers){let n=qp.get(r.p.id)||{pos:0,phase:null},o=[r.ua,r.ub,r.uc,r.ud].reduce((a,i,c)=>a|(i>1.5?1<<c:0),0),s=fN[o];if(t&&s!=null){if(n.phase!=null){let a=(s-n.phase+8)%8;a>=1&&a<=3?n.pos+=a:a>=5&&(n.pos-=8-a)}n.phase=s}qp.set(r.p.id,n),r.pattern=o,r.pos=n.pos,r.coils="ABCD".split("").filter((a,i)=>o&1<<i).join(""),r.angle=n.pos*360/r.steps,r.rotorAngle=n.pos*360/(r.steps/r.rotor)}}function hN(e){let t=!1;for(let r of e.logics){if(!r.regs.length)continue;let n=Tl.get(r.p.id)||{regs:{},clk:{}},o={};for(let s of r.regs){let a=n.clk[s.name],i=s.clk;n.clk[s.name]=i;let c=s.edge==="fall"?a===1&&i===0:a===0&&i===1;o[s.name]=s.async!=null?s.async:c?s.d:s.name in n.regs?n.regs[s.name]:s.val}for(let s in o)o[s]!==n.regs[s]&&(t=!0);n.regs=o,Tl.set(r.p.id,n)}return t}var r_={gpios:new Set(["I"]),srcI:new Set(["I"])},n_={off:0,sat:1,act:2},gN=["leds","picos","gpios","bats","srcI","fets","caps","bjts","motors","servos","logics","steppers"];function bN(e){if(e.length===1)return e[0].o;let t=e[0].o,r={...t,netV:new Map,floating:new Set};for(let{w:n,o}of e){for(let[s,a]of o.netV)r.netV.set(s,(r.netV.get(s)||0)+n*a);for(let s of o.floating)r.floating.add(s)}for(let n of gN){let o=t[n].map((s,a)=>{let i={...s};for(let c in s){let l=s[c],u=e.map(({w:d,o:f})=>[d,f[n][a][c]]);typeof l=="number"&&u.every(([,d])=>d===l)?i[c]=l:typeof l=="number"?i[c]=r_[n]&&r_[n].has(c)?u.reduce((d,[,f])=>Math.abs(f)>Math.abs(d)?f:d,0):u.reduce((d,[f,h])=>d+f*(typeof h=="number"?h:0),0):typeof l=="boolean"?i[c]=u.some(([,d])=>d):c==="st"&&(i[c]=u.reduce((d,[,f])=>n_[f]>n_[d]?f:d,l))}return i});r[n]=o}return r}function yN(e,t,r){let n=new Map,o=x=>(n.has(x)||n.set(x,n.size),n.get(x));for(let x of t.pins)x.net>=0&&o(x.net);for(let x of e.parts)for(let $ of H[x.type].def.model||[])$.el==="mcu"&&!$.vbus&&o("usb:"+x.id);let s=n.size,a=[],i=[],c=[],l=[],u=[],d=[],f=[],h=[],b=[],p=[],m=[];for(let x of e.parts){let $=t.byPart.get(x.id),V=$.map,y=j=>n.get(V[j].net),D=H[x.type].def.model;if(!D)continue;let Y=El(x),Ae=j=>j!=null?ke(j,Y):null;for(let j of D)if(j.el==="mcu")a.push({p:x,gnd:y(j.gnd),vbus:j.vbus?y(j.vbus):n.get("usb:"+x.id),vsys:y(j.vsys),v33:y(j.v33),vsysPin:V[j.vsys],vreg:ke(j.vreg??1.8,Y),vmax:Ae(j.vmax),igpio:ke(j.igpio??.012,Y),gp:$.pins.filter(ee=>ee.role==="gpio").map(ee=>({q:ee,node:n.get(ee.net),mode:ca(e,x,ee.id,ee,t)})),reg:!1,d:!1});else if(j.el==="diode")i.push({p:x,a:y(j.a),k:y(j.k),vf:ke(j.vf,Y),ron:Math.max(.001,ke(j.ron??15,Y)),imax:Ae(j.imax),light:!!j.light,on:!1});else if(j.el==="resistor")c.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ke(j.ohm,Y))});else if(j.el==="source")l.push({p:x,a:y(j.p),b:y(j.n),E:ke(j.v,Y),g:1/Math.max(.001,ke(j.rint??.1,Y)),kind:j.kind||"battery"});else if(j.el==="capacitor")d.push({p:x,a:y(j.a),b:y(j.b),f:ke(j.f,Y),vmax:Ae(j.vmax),polar:!!j.polar});else if(j.el==="npn")f.push({p:x,c:y(j.c),b:y(j.b),e:y(j.e),beta:Math.max(1,ke(j.beta,Y)),vbe:ke(j.vbe??.65,Y),vcesat:ke(j.vcesat??.1,Y),imax:Ae(j.imax),be:!1,st:"off",ic:0});else if(j.el==="motor")h.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ke(j.ohm,Y)),vnom:Math.max(.1,ke(j.vnom,Y))});else if(j.el==="stepper")m.push({p:x,com:y(j.com),coils:[y(j.a),y(j.b),y(j.c),y(j.d)],g:1/Math.max(.001,ke(j.ohm,Y)),steps:Math.max(1,ke(j.steps??4096,Y)),rotor:Math.max(1,ke(j.rotor??64,Y))});else if(j.el==="servo")b.push({p:x,vp:y(j.vp),gnd:y(j.gnd),sigNet:V[j.sig].net,g:1/Math.max(.001,ke(j.ohm,Y)),pmin:ke(j.pmin??.5,Y),pmax:ke(j.pmax??2.5,Y)});else if(j.el==="logic"){let ee=$.pins,Z=Se=>{try{return Se&&String(Se).trim()?sa(String(Se)):null}catch{return null}},ue=new Map,we=[],X=(Tl.get(x.id)||{regs:{}}).regs,xe=[];for(let Se of j.regs||[]){let ct=Z(Se.clk),Ge=Z(Se.d);!ct||!Ge||xe.push({name:Se.name,clk:ct,d:Ge,reset:Z(Se.reset),set:Z(Se.set),edge:Se.edge==="fall"?"fall":"rise",stored:X[Se.name]??Se.init??0,eff:"X"})}let ft=new Set(xe.map(Se=>Se.name)),nt=Se=>{if(Se)for(let ct of Ln(Se)){if(ue.has(ct)||ft.has(ct))continue;let Ge=wl(ct,ee);if(!Ge)continue;let Yt=V[Ge];ue.set(ct,{q:Yt,node:y(Ge),open:(t.netPins.get(Yt.net)||[]).length<=1&&(t.netSecs.get(Yt.net)||0)<=1})}};for(let Se of j.outs||[]){let ct=Z(Se.expr),Ge=Z(Se.oe);!ct||!V[Se.pin]||(we.push({p:x,pin:V[Se.pin],node:y(Se.pin),ast:ct,oe:Ge,type:Se.type==="od"?"od":"pp",st:"z"}),nt(ct),nt(Ge))}for(let Se of xe)nt(Se.clk),nt(Se.d),nt(Se.reset),nt(Se.set);p.push({p:x,vcc:y(j.vcc),gnd:y(j.gnd),ins:ue,outs:we,regs:xe,vih:ke(j.vih??.7,Y),vil:ke(j.vil??.3,Y),g:1/Math.max(1,ke(j.rout??50,Y)),imax:ke(j.imax??.025,Y),vdd:0})}else j.el==="nmos"&&u.push({p:x,d:y(j.d),g:y(j.g),s:y(j.s),vth:ke(j.vth,Y),ron:Math.max(.001,ke(j.ron,Y)),imax:Ae(j.imax),on:!1})}let g=new Float64Array(s),v=[];for(let x=0;x<60;x++){v=[];let $=(y,D,Y,Ae,j,ee,Z,ue)=>v.push(Z==null?{a:y,b:D,g:Y,E:Ae,kind:j,ref:ee}:{a:y,b:D,g:Y,E:Ae,kind:j,ref:ee,cp:Z,cn:ue});for(let y=0;y<s;y++)$(y,-1,1e-9,0,"leak");for(let y of a)if($(y.gnd,-1,1e4,0,"gref",y),e.settings.usb&&$(y.vbus,y.gnd,10,5,"vbus",y),y.vbus!==y.vsys&&$(y.vbus,y.vsys,y.d?5:1e-9,y.d?.3:0,"pdiode",y),y.reg){$(y.v33,y.gnd,10,3.3,"v33",y);for(let D of y.gp){let Y=D.mode==="pwm"?r&&r.has(y.p.id+"."+D.q.id)?"out_high":"out_low":D.mode;Y==="pullup"?$(D.node,y.v33,2e-5,0,"pull",D):Y==="pulldown"?$(D.node,y.gnd,2e-5,0,"pull",D):Y==="out_high"?$(D.node,y.gnd,1/40,3.3,"gout",D):Y==="out_low"&&$(D.node,y.gnd,1/40,0,"gout",D)}}for(let y of c)$(y.a,y.b,y.g,0,"res",y);for(let y of h)$(y.a,y.b,y.g,0,"motor",y);for(let y of p)for(let D of y.outs)D.st===1?$(D.node,y.vcc,y.g,0,"lout",D):D.st===0&&$(D.node,y.gnd,y.g,0,"lout",D);for(let y of b)$(y.vp,y.gnd,y.g,0,"servo",y);for(let y of m)for(let D of y.coils)$(y.com,D,y.g,0,"coil",y);for(let y of i)$(y.a,y.k,y.on?1/y.ron:1e-9,y.on?y.vf:0,"led",y);for(let y of l)$(y.a,y.b,y.g,y.E,"bat",y);for(let y of u)$(y.d,y.s,y.on?1/y.ron:1e-9,0,"fet",y);for(let y of f)$(y.b,y.e,y.be?1/Up:1e-9,y.be?y.vbe:0,"bjt_be",y),y.st==="sat"?$(y.c,y.e,1/t_,y.vcesat,"bjt_ce",y):y.st==="act"&&$(y.c,y.e,y.beta/Up,y.vbe,"bjt_ce",y,y.b,y.e);g=Gp(s,v);let V=!1;for(let y of i){let D=g[y.a]-g[y.k];!y.on&&D>y.vf+1e-4?(y.on=!0,V=!0):y.on&&D<y.vf&&(y.on=!1,V=!0)}for(let y of u){let D=g[y.g]-g[y.s]>y.vth;D!==y.on&&(y.on=D,V=!0)}for(let y of p){let D=g[y.vcc]-g[y.gnd];y.vdd=D;let Y=Z=>{let ue=y.ins.get(Z);if(!ue||ue.open)return"X";let we=g[ue.node]-g[y.gnd];return we>=y.vih*D?1:we<=y.vil*D?0:"X"},Ae=new Map(y.regs.map(Z=>[Z.name,Z])),j=Z=>Ae.has(Z)?Ae.get(Z).stored:Y(Z);for(let Z of y.regs){let ue=Z.reset?yr(Z.reset,j):0,we=Z.set?yr(Z.set,j):0;Z.async=D<1?null:ue===1?0:we===1?1:null,Z.eff=D<1?"X":Z.async??Z.stored}let ee=Z=>Ae.has(Z)?Ae.get(Z).eff:Y(Z);y.lvl=ee;for(let Z of y.outs){let ue="z";if(D>=1&&(Z.oe?yr(Z.oe,ee):1)===1){let X=yr(Z.ast,ee);ue=X==="X"?"z":Z.type==="od"?X?"z":0:X}ue!==Z.st&&(Z.st=ue,V=!0)}}for(let y of f){let D=g[y.b]-g[y.e],Y=g[y.c]-g[y.e];!y.be&&D>y.vbe+1e-4?(y.be=!0,V=!0):y.be&&D<y.vbe&&(y.be=!1,V=!0);let Ae=y.beta*(y.be?Math.max(0,(D-y.vbe)/Up):0);y.be?y.st==="off"?(y.st="act",V=!0):y.st==="sat"?(Y-y.vcesat)/t_>Ae*1.02+1e-9&&(y.st="act",V=!0):Y<y.vcesat-.01&&(y.st="sat",V=!0):y.st!=="off"&&(y.st="off",V=!0)}for(let y of a){if(y.vbus===y.vsys)y.d=!!e.settings.usb;else{let Y=g[y.vbus]-g[y.vsys];!y.d&&Y>.3001?(y.d=!0,V=!0):y.d&&Y<.3&&(y.d=!1,V=!0)}let D=g[y.vsys]-g[y.gnd]>y.vreg;D!==y.reg&&(y.reg=D,V=!0)}if(!V)break}let _=x=>x!=null&&x>=0?g[x]:0,w=x=>x.g*(_(x.cp??x.a)-_(x.cn??x.b)-x.E),k=Array.from({length:s},()=>[]),P=new Set;for(let x of v)x.kind==="leak"||x.g<1e-6||x.cp!=null||(x.a>=0&&x.b>=0&&(k[x.a].push(x.b),k[x.b].push(x.a)),["gref","vbus","v33","gout","bat"].includes(x.kind)&&(x.a>=0&&P.add(x.a),x.b>=0&&P.add(x.b)));let I=new Uint8Array(s),W=[...P];for(W.forEach(x=>I[x]=1);W.length;){let x=W.pop();for(let $ of k[x])I[$]||(I[$]=1,W.push($))}let F=new Map,G=new Set;for(let[x,$]of n)F.set(x,g[$]),I[$]||G.add(x);let K={netV:F,floating:G,leds:[],picos:[],gpios:[],bats:[],srcI:[],fets:[],caps:[],bjts:[],motors:[],servos:[],logics:[],steppers:[]};for(let x of m){let $=x.coils.map(V=>g[x.com]-g[V]);K.steppers.push({p:x.p,steps:x.steps,rotor:x.rotor,ua:$[0],ub:$[1],uc:$[2],ud:$[3],I:$.reduce((V,y)=>V+Math.max(0,y),0)*x.g})}for(let x of p){let $=g[x.gnd],V=y=>{if(y.open||!I[y.node])return"X";let D=g[y.node]-$;return D>=x.vih*x.vdd?1:D<=x.vil*x.vdd?0:"X"};K.logics.push({p:x.p,vdd:x.vdd,imax:x.imax,ins:[...x.ins].map(([y,D])=>({name:y,lv:x.vdd>=1?V(D):"X",open:D.open||!I[D.node]})),outs:x.outs.map(y=>{let D=v.find(Y=>Y.kind==="lout"&&Y.ref===y);return{name:y.pin.name,st:y.st,I:D?Math.abs(w(D)):0}}),regs:x.regs.map(y=>({name:y.name,val:y.eff,clk:x.vdd>=1&&x.lvl?yr(y.clk,x.lvl):"X",d:x.vdd>=1&&x.lvl?yr(y.d,x.lvl):"X",async:y.async??null,edge:y.edge}))})}for(let x of h){let $=g[x.a]-g[x.b];K.motors.push({p:x.p,U:$,I:$*x.g,vnom:x.vnom,speed:Math.max(-1.5,Math.min(1.5,$/x.vnom))})}for(let x of b){let $=g[x.vp]-g[x.gnd];K.servos.push({p:x.p,U:$,I:$*x.g,sigNet:x.sigNet,pmin:x.pmin,pmax:x.pmax})}for(let x of d){let $=g[x.a]-g[x.b],V=Gp(s,[...v,{a:x.a,b:x.b,g:1e-9,E:-1e6}]),y=Math.abs(V[x.a]-V[x.b]-$)/.001;K.caps.push({p:x.p,U:$,f:x.f,vmax:x.vmax,polar:x.polar,R:y,tau:y<1e8?y*x.f:null,float:!I[x.a]||!I[x.b]})}for(let x of f){let $=v.find(y=>y.kind==="bjt_be"&&y.ref===x),V=v.find(y=>y.kind==="bjt_ce"&&y.ref===x);K.bjts.push({p:x.p,st:x.st,ib:$?Math.max(0,w($)):0,ic:V?w(V):0,vbe:g[x.b]-g[x.e],vce:g[x.c]-g[x.e],beta:x.beta,imax:x.imax,floatBase:!I[x.b]})}for(let x of v){if(x.kind==="led"){let $=x.ref;K.leds.push({p:$.p,I:Math.max(0,w(x)),on:$.on,light:$.light,imax:$.imax})}if(x.kind==="fet"){let $=x.ref;K.fets.push({p:$.p,on:$.on,vgs:g[$.g]-g[$.s],I:w(x),imax:$.imax,floatGate:!I[$.g]})}if(x.kind==="bat"){let $=x.ref;K.bats.push({p:$.p,I:w(x),kind:$.kind,node:x.a})}x.kind==="vbus"&&K.srcI.push({kind:"vbus",pc:x.ref,I:-w(x)}),x.kind==="v33"&&K.srcI.push({kind:"v33",pc:x.ref,I:-w(x)})}for(let x of a){K.picos.push({p:x.p,powered:x.reg,usb:e.settings.usb,feeds:x.d,vsys:x.vsys,vsysName:x.vsysPin.name,Usys:g[x.vsys]-g[x.gnd],vreg:x.vreg,vmax:x.vmax,igpio:x.igpio});for(let $ of x.gp){let V=v.find(y=>y.kind==="gout"&&y.ref===$);K.gpios.push({p:x.p,q:$.q,mode:$.mode,V:g[$.node]-g[x.gnd],I:V?-w(V):0,float:!I[$.node],powered:x.reg})}}return K}var s_=e=>e.powered?e.float?"?":e.mode==="adc"?"A":e.mode==="pwm"?"P":e.V>=2?"1":e.V<=.8?"0":"?":"\u2013";var kN=e=>e.settings.autoCut??e.board.sec>=e.board.rows;function vN(e){let t=(u,d)=>vr(e.board,u,d),r=new Map,n=u=>{for(;r.has(u)&&r.get(u)!==u;)u=r.get(u);return u},o=(u,d)=>{u=n(u),d=n(d),u!==d&&r.set(u,d)},s=[];for(let u of e.parts){if(Ee(u))continue;let d=zr(u);for(let f of me(u))t(f.r,f.c)&&s.push({q:f,key:ce(f.part)&&f.role==="gnd"?"GND":u.id+":"+d[f.id]})}let a=Al(e),i=u=>{let d=it(e,a(u));return d?ce(d.part)&&d.role==="gnd"?"GND":d.part.id+":"+zr(d.part)[d.id]:null},c=Ir(e.board,e.cuts||[]),l=new Set(e.links.filter(u=>u.b!=="GPIO"&&u.b!=="GND").map(u=>[u.a,u.b]).flat());for(let u of e.links){let d=i(u.a);if(d)if(u.b==="GND")o(d,"GND");else if(u.b==="GPIO"){let f=it(e,a(u.a)),h=it(e,u.a);if(!f||!h||!t(f.r,f.c))continue;let b=h.role==="adc",p=c.cell(f.r,f.c),m=s.map(_=>_.q).filter(_=>Fp(_,b)&&!l.has(_.part.id+"."+_.id)&&c.cell(_.r,_.c)===p).sort((_,w)=>ia(_)+aa(h.fn,_)-ia(w)-aa(h.fn,w)||Math.abs(_.r-f.r)-Math.abs(w.r-f.r)),g=u.gpio?m.find(_=>_.part.id+"."+_.id===u.gpio):void 0,v=g||m[0];if(v){let _=v.part.id+"."+v.id;l.add(_),u.gpio=_,o(d,i(_))}}else{let f=i(u.b);f&&o(d,f)}}return Gz(e.board,e.cuts||[],s.map(u=>({r:u.q.r,c:u.q.c,net:n(u.key)})),e.cutBan||[])}function Do(e,t={}){let r=(S,R)=>vr(e.board,S,R);if(kN(e)){let S=JSON.stringify(e.auto.cuts||[]);e.auto.cuts=vN(e),JSON.stringify(e.auto.cuts)!==S&&(t={...t,full:!0})}else e.auto.cuts=[];let n=hn(e),o=n.N,s=(S,R)=>n.cell(S,R),a=[];for(let S of e.parts)for(let R of me(S))r(R.r,R.c)&&a.push(R);let i=new Map(a.map(S=>[S.part.id+"."+S.id,S])),c=Al(e),l=new Map,u=[],d=e.links.map(S=>{let R=c(S.a),L=S.b==="GND"||S.b==="GPIO"?S.b:c(S.b);if(R===S.a&&L===S.b)return S;R!==S.a&&l.set(R,S.a),L!==S.b&&l.set(L,S.b);let z={...S,a:R,b:L};return u.push([z,S]),z}),f=S=>l.has(S)?it(e,l.get(S)):i.get(S),h=d.filter(S=>i.has(S.a)&&(S.b==="GND"||S.b==="GPIO"||i.has(S.b))),b=new Set(h.map(S=>S.id)),p=new Set(a.map(S=>S.r+":"+S.c)),m=new Map(e.parts.map(S=>[S.id,zr(S)])),g=S=>r(S[0],S[1])&&r(S[2],S[3]),v=S=>i.get(S);function _(S,R){let L=new Int32Array(o),z=new Int32Array(o).fill(1),A=new Uint8Array(o);for(let N=0;N<o;N++)L[N]=N;let T=N=>{for(;L[N]!==N;)L[N]=L[L[N]],N=L[N];return N},M=(N,U)=>{if(N=T(N),U=T(U),N!==U){if(N>U){let Q=N;N=U,U=Q}L[U]=N,z[N]+=z[U]}};for(let N of[...e.bridges,...S])if(g(N)){let U=s(N[0],N[1]),Q=s(N[2],N[3]);A[U]=A[Q]=1,M(U,Q)}for(let N of[...e.wires,...R])if(r(N.a[0],N.a[1])&&r(N.b[0],N.b[1])){let U=s(N.a[0],N.a[1]),Q=s(N.b[0],N.b[1]);A[U]=A[Q]=1,M(U,Q)}for(let N of a)A[s(N.r,N.c)]=1;for(let N of e.parts){let U={};for(let Q of me(N))U[Q.id]=Q;for(let[Q,pe]of H[N.type].internal(N))r(U[Q].r,U[Q].c)&&r(U[pe].r,U[pe].c)&&M(s(U[Q].r,U[Q].c),s(U[pe].r,U[pe].c))}return{par:L,sz:z,used:A,find:T,uni:M,bridges:S.map(N=>[N[0],N[1],N[2],N[3],[...N[4]]]),wires:R.map(N=>({...N,links:[...N.links]})),wireEnds:new Set([...e.wires,...R].flatMap(N=>[N.a.join(":"),N.b.join(":")]))}}let w=S=>{let R=new Map;for(let L of a){let z=S.find(s(L.r,L.c));R.has(z)||R.set(z,[]),R.get(z).push(L)}return R},k=S=>!!S&&S.some(R=>ce(R.part)&&R.role==="gnd"),P=(S,R,L)=>!!S&&S.length===1&&ce(S[0].part)&&S[0].role==="gpio"&&L.sz[R]===1,I=S=>(f(S.a)||{role:""}).role==="adc",W=new Set(h.filter(S=>S.b!=="GND"&&S.b!=="GPIO").flatMap(S=>[S.a,S.b])),F=(S,R)=>{let L=v(R.a);return S.find(s(L.r,L.c))};function G(S,R,L){if(R.b==="GND")return T=>k(L.get(T));if(R.b==="GPIO"){let T=I(R),M=T;if(!T){let N=0,U=new Set;for(let pe of a){if(!Be(pe,"adc")||pe.role!=="gpio")continue;let te=S.find(s(pe.r,pe.c));!U.has(te)&&P(L.get(te),te,S)&&(U.add(te),N++)}let Q=h.filter(pe=>pe.b==="GPIO"&&I(pe)&&!K(S,pe,L)).length;M=N>Q}return N=>{let U=L.get(N);if(!P(U,N,S))return!1;let Q=U[0];return W.has(Q.part.id+"."+Q.id)?!1:T?Be(Q,"adc"):Be(Q,"in")?!1:Be(Q,"adc")?M:!0}}let z=v(R.b),A=S.find(s(z.r,z.c));return T=>T===A}function K(S,R,L){let z=F(S,R);if(R.b==="GPIO"){let A=I(R);return(L.get(z)||[]).some(T=>ce(T.part)&&T.role==="gpio"&&(!A||Be(T,"adc")))}return G(S,R,L)(z)}let x=new Map;for(let S of h){let R=v(S.a),L=R.part.id+":"+m.get(R.part.id)[R.id],z=S.b==="GND"?"GND":S.b==="GPIO"?"G"+S.id:null;z&&!x.has(L)&&x.set(L,z)}let $=S=>{let R=S.filter(M=>ce(M.part)),L=R.some(M=>M.role==="gnd"),z=new Set(L?["GND"]:[]);for(let M of S){let N=x.get(M.part.id+":"+m.get(M.part.id)[M.id]);N&&z.add(N)}if(z.size>1)return!0;let A=new Set(R.filter(M=>M.role!=="gnd").map(M=>M.part.id+"."+M.id));if(L&&A.size||A.size>1)return!0;let T=new Map;for(let M of S){if(ce(M.part))continue;let N=m.get(M.part.id)[M.id];if(T.has(M.part.id)&&T.get(M.part.id)!==N)return!0;T.set(M.part.id,N)}return!1},V=(S,R)=>n.edge(S,R).br,y=(S,R,L)=>{let z=f(L.a);if(!z||!z.fn||L.b!=="GPIO")return null;let A=z.fn.split(".")[0],T=[];for(let M of h){if(M===L||M.b!=="GPIO")continue;let N=f(M.a);if(!N||N.part!==z.part||!N.fn||N.fn.split(".")[0]!==A)continue;let U=(R.get(F(S,M))||[]).find(Q=>ce(Q.part)&&Q.role==="gpio");U&&T.push(new Set(Hr(U,N.fn).map(Q=>Q.split(".")[0])))}return T.length?T.slice(1).reduce((M,N)=>new Set([...M].filter(U=>N.has(U))),T[0]):null};function D(S,R){let L=w(S),z=F(S,R),A=y(S,L,R),T=(f(R.a)||{fn:void 0}).fn;if(K(S,R,L))return{ok:!0,n:0};let M=G(S,R,L),N=R.b==="GPIO"&&!I(R),U=-1;if(R.b==="GPIO"&&R.gpio&&i.has(R.gpio)){let ne=v(R.gpio);U=S.find(s(ne.r,ne.c))}let Q=new Float64Array(o*5).fill(1e9),pe=new Int32Array(o*5).fill(-1),te=[],ae=(ne,$e)=>{te.push([ne,$e]);let Ue=te.length-1;for(;Ue>0;){let yt=Ue-1>>1;if(te[yt][0]<=te[Ue][0])break;[te[yt],te[Ue]]=[te[Ue],te[yt]],Ue=yt}},re=()=>{let ne=te[0],$e=te.pop();if(te.length){te[0]=$e;let Ue=0;for(;;){let yt=2*Ue+1,kt=yt+1,vt=Ue;if(yt<te.length&&te[yt][0]<te[vt][0]&&(vt=yt),kt<te.length&&te[kt][0]<te[vt][0]&&(vt=kt),vt===Ue)break;[te[vt],te[Ue]]=[te[Ue],te[vt]],Ue=vt}}return ne};for(let ne=0;ne<o;ne++)S.find(ne)===z&&(Q[ne*5+4]=0,ae(0,ne*5+4));let Me=null,ot=1e9;for(;te.length;){let[ne,$e]=re();if(ne>Q[$e])continue;if(ne>=ot)break;let Ue=$e/5|0,yt=$e%5;for(let kt of n.adj(Ue)){let vt=kt.dir,Tt=kt.to,wr=S.find(Tt);if(wr===z)continue;let Bn=1+(yt!==4&&yt!==vt?.6:0);if(S.used[Tt]||S.sz[wr]>1){if(M(wr)){let Gn=(L.get(wr)||[])[0],B_=!!A&&A.size>0&&!!Gn&&Vn(Gn.part)!=="matrix"&&!Hr(Gn,T||"").some(G_=>A.has(G_.split(".")[0])),df=ne+Bn+(U>=0&&wr!==U?14:0)+(N&&Be(Gn,"adc")?12:0)+(R.b==="GPIO"&&wr!==U?ia(Gn)+aa(T,Gn)+(B_?12:0):0);df<ot&&(ot=df,Me={s:$e,n:Tt})}continue}let Jr=Tt*5+vt,Fl=ne+Bn;Fl<Q[Jr]&&(Q[Jr]=Fl,pe[Jr]=$e,ae(Fl,Jr))}}if(!Me)return{ok:!1};let dt=[Me.n],Pe=Me.s;for(;Pe>=0;)dt.push(Pe/5|0),Pe=pe[Pe];for(let ne=0;ne+1<dt.length;ne++){let $e=V(dt[ne],dt[ne+1]);S.bridges.push([$e[0],$e[1],$e[2],$e[3],[R.id]])}for(let ne of dt)S.used[ne]=1;for(let ne=0;ne+1<dt.length;ne++)S.uni(dt[ne],dt[ne+1]);return{ok:!0,n:dt.length-1}}let Y=S=>{let R=v(S.a);if(S.b!=="GND"&&S.b!=="GPIO"){let A=v(S.b);return Math.abs(R.r-A.r)/3+Math.abs(R.c-A.c)}let L=S.b==="GPIO"&&I(S),z=1e9;for(let A of a)(S.b==="GND"?ce(A.part)&&A.role==="gnd":Fp(A,L))&&(z=Math.min(z,Math.abs(R.r-A.r)/3+Math.abs(R.c-A.c)));return z},Ae=S=>S.b==="GND"?2:S.b==="GPIO"?I(S)?.5:1:0,j=(S,R)=>Ae(S)-Ae(R)||Y(R)-Y(S);function ee(){let S=[...h].sort(j),R=7,L=()=>(R=R*16807%2147483647)/2147483647,z=null,A=-1;for(let T=0;T<60;T++){let M=_([],[]),N=[],U=0;for(let te of S){let ae=D(M,te);ae.ok?U+=ae.n||0:N.push(te)}let Q=0;{let te=w(M);for(let ae of h){let re=f(ae.a);if(!re||!re.fn||ae.b!=="GPIO")continue;let Me=(te.get(F(M,ae))||[]).find(dt=>ce(dt.part)&&dt.role==="gpio");if(!Me||Vn(Me.part)==="matrix")continue;if(!Hr(Me,re.fn).length){Q++;continue}let ot=y(M,te,ae);(ot&&ot.size===0||ot&&!Hr(Me,re.fn).some(dt=>ot.has(dt.split(".")[0])))&&Q++}}let pe=N.length*1e4+Q*300+U;if((!z||pe<z.score)&&(z={score:pe,S:M,fails:N}),!N.length&&A<0&&(A=T),A>=0&&T>=A+14)break;if(N.length&&(S=[...N,...S.filter(te=>!N.includes(te))]),T>8||A>=0){for(let te=S.length-1;te>0;te--)if(L()<.3){let ae=L()*(te+1)|0;[S[te],S[ae]]=[S[ae],S[te]]}}}return z||{S:_([],[]),fails:[]}}function Z(){let S=e.auto.bridges.filter(g).map(T=>[T[0],T[1],T[2],T[3],[...T[4]||[]]]),R=e.auto.wires.map(T=>({...T,links:[...T.links||[]]})),L=new Set;if(t.moved)for(let T of h)[T.a,T.b].some(M=>t.moved.has(M.split(".")[0]))&&L.add(T.id);for(let T=0;T<10;T++){let M=re=>re.filter(Me=>b.has(Me)&&!L.has(Me));S=S.map(re=>(re[4]=M(re[4]),re)).filter(re=>re[4].length),R=R.map(re=>(re.links=M(re.links),re)).filter(re=>re.links.length);let N=_(S,R),U=w(N),Q=new Set,pe=!1;for(let[re,Me]of U)$(Me)&&Q.add(re);let te=re=>{for(let Me of re)L.has(Me)||(L.add(Me),pe=!0)};for(let re of S)Q.has(N.find(s(re[0],re[1])))&&te(re[4]);for(let re of R)Q.has(N.find(s(re.a[0],re.a[1])))&&te(re.links);let ae=new Set([...S.flatMap(re=>re[4]),...R.flatMap(re=>re.links)]);for(let re of h)ae.has(re.id)&&!K(N,re,U)&&te([re.id]);if(!pe)break}let z=_(S,R),A=[];for(let T of h.filter(M=>!K(z,M,w(z))).sort(j))D(z,T).ok||A.push(T);return{S:z,fails:A}}let ue=t.full||!e.auto.bridges.length&&!e.auto.wires.length?ee():Z();if(ue.fails.length&&!t.full){let S=ee();S.fails.length<ue.fails.length&&(ue=S)}let we=ue.S,X=S=>n.segs[S].drilled?[]:n.holes(S).filter(([R,L])=>{let z=R+":"+L;return!p.has(z)&&!we.wireEnds.has(z)});for(let S of ue.fails){let R=F(we,S),L=w(we),z=G(we,S,L),A=[],T=[];for(let U=0;U<o;U++){let Q=we.find(U);Q===R?A.push(U):z(Q)&&T.push(U)}let M=null,N=1e9;for(let U of A)for(let Q of X(U))for(let pe of T)for(let te of X(pe)){let ae=Math.hypot(Q[0]-te[0],Q[1]-te[1]);ae<N&&(N=ae,M=[Q,te,pe])}M&&(we.wires.push({a:M[0],b:M[1],color:"#7048e8",links:[S.id]}),we.wireEnds.add(M[0].join(":")),we.wireEnds.add(M[1].join(":")),we.uni(R,M[2]))}let xe=new Map;for(let S of e.parts)if(Ee(S))for(let R of me(S))xe.set(S.id+"."+R.id,R);let ft=d.filter(S=>xe.has(S.a)||xe.has(S.b)).sort((S,R)=>Ae(S)-Ae(R)),nt=new Set,Se=e.parts.filter(S=>!Ee(S)).map(S=>{let R=H[S.type].bounds(S),L=[It(S,R.r0,R.c0),It(S,R.r1,R.c1)];return[Math.min(L[0][0],L[1][0]),Math.max(L[0][0],L[1][0]),Math.min(L[0][1],L[1][1]),Math.max(L[0][1],L[1][1])]}),ct=S=>Se.some(([R,L,z,A])=>S[0]>R&&S[0]<L&&S[1]>z&&S[1]<A),Ge=new Set(["p33","pwr","bp","chg","pout","vin","mp"]);for(let S of ft){let R=xe.get(S.a)||xe.get(S.b),L=xe.has(S.a)?S.b:S.a;if(xe.has(L)){let ae=xe.get(L);we.wires.push({a:[R.r,R.c],b:[ae.r,ae.c],color:"#495057",links:[S.id]});continue}let z=i.get(L),A=L==="GND"||R.role==="gnd"||z&&z.role==="gnd"?"#212529":Ge.has(R.role)||z&&Ge.has(z.role)?"#c92a2a":"#e8590c",T=w(we),M,N=-1;if(L==="GND")M=ae=>k(T.get(ae));else if(L==="GPIO"){let ae=R.role==="adc";if(S.gpio&&i.has(S.gpio)){let re=v(S.gpio);N=we.find(s(re.r,re.c))}M=re=>{let Me=T.get(re);if(nt.has(re)||!P(Me,re,we))return!1;let ot=Me[0];return W.has(ot.part.id+"."+ot.id)?!1:ae?Be(ot,"adc"):!Be(ot,"in")}}else{let ae=i.get(L);if(!ae)continue;let re=we.find(s(ae.r,ae.c));M=Me=>Me===re}let U=null,Q=1e9;for(let ae=0;ae<o;ae++){let re=we.find(ae);if(!M(re))continue;let Me=(T.get(re)||[])[0],ot=L==="GPIO"&&R.role!=="adc"&&Be(Me,"adc")?6:0,dt=re===N?-1e4:0,Pe=L==="GPIO"?ia(Me)+aa(R.fn,Me):0;for(let ne of X(ae)){let $e=Math.hypot(ne[0]-R.r,ne[1]-R.c)+ot+dt+Pe+(ct(ne)?20:0);$e<Q&&(Q=$e,U={h:ne,r:re})}}{let ae=L!=="GND"&&L!=="GPIO"?i.get(L):null;if(ae&&!ce(ae.part)){let re=X(s(ae.r,ae.c)).some(ot=>!ct(ot)),Me=Math.hypot(ae.r-R.r,ae.c-R.c)+(re?3:-5);Me<Q&&!we.wireEnds.has(ae.r+":"+ae.c)&&(Q=Me,U={h:[ae.r,ae.c],r:we.find(s(ae.r,ae.c))})}}if(!U)continue;let pe=U.h,te=U.r;if(we.wires.push({a:[R.r,R.c],b:pe,color:A,links:[S.id]}),we.wireEnds.add(pe.join(":")),L==="GPIO"){nt.add(te);let ae=(T.get(te)||[]).find(re=>re.role==="gpio");ae&&(S.gpio=ae.part.id+"."+ae.id)}}e.auto={bridges:we.bridges,wires:we.wires,cuts:e.auto.cuts||[]};let Yt=w(we);for(let S of h){if(S.b!=="GPIO"||ft.includes(S))continue;let R=I(S),L=(Yt.get(F(we,S))||[]).find(z=>ce(z.part)&&z.role==="gpio"&&(!R||Be(z,"adc")));L&&(S.gpio=L.part.id+"."+L.id)}for(let[S,R]of u)R.gpio=S.gpio}function i_(e){let t=H[e.type].bounds(e),r=[[t.r0,t.c0],[t.r0,t.c1],[t.r1,t.c0],[t.r1,t.c1]].map(([s,a])=>It(e,s,a)),n=r.map(s=>s[0]),o=r.map(s=>s[1]);return{r0:Math.round(Math.min(...n)),r1:Math.round(Math.max(...n)),c0:Math.round(Math.min(...o)),c1:Math.round(Math.max(...o))}}function da(e){let t=e.board,r=(p,m)=>Math.max(0,Math.min(m-1,p)),n=1/0,o=-1/0,s=1/0,a=-1/0,i=0,c=0,l=0,u=(p,m)=>{p=r(p,t.rows),m=r(m,t.cols),n=Math.min(n,p),o=Math.max(o,p),s=Math.min(s,m),a=Math.max(a,m)};for(let p of e.parts){if(Ee(p))continue;let m=i_(p),g={r0:r(m.r0,t.rows),r1:r(m.r1,t.rows),c0:r(m.c0,t.cols),c1:r(m.c1,t.cols)};c++,p.fixed&&l++,i+=(g.r1-g.r0+1)*(g.c1-g.c0+1),u(g.r0,g.c0),u(g.r1,g.c1)}for(let p of[...e.bridges,...e.auto.bridges])u(p[0],p[1]),u(p[2],p[3]);for(let p of[...e.wires,...e.auto.wires])for(let m of[p.a,p.b])m[0]>=0&&m[0]<t.rows&&m[1]>=0&&m[1]<t.cols&&u(m[0],m[1]);let d=t.rows*t.cols;if(n===1/0)return{box:null,rows:0,cols:0,area:0,boardArea:d,partArea:0,fill:0,parts:c,fixed:l};let f=o-n+1,h=a-s+1,b=f*h;return{box:{r0:n,r1:o,c0:s,c1:a},rows:f,cols:h,area:b,boardArea:d,partArea:i,fill:Math.min(1,i/b),parts:c,fixed:l}}var a_=e=>JSON.parse(JSON.stringify(e)),zN=(e,t)=>Math.abs(e.r-t.r)/3+Math.abs(e.c-t.c);function Cl(e){let t=Mo(e,Tr(e)),r=0;for(let n of t.values())n.ok&&r++;return{stats:da(e),links:e.links.length,linksOk:r,bridges:e.bridges.length+e.auto.bridges.length,wires:e.wires.length+e.auto.wires.length,cuts:(e.cuts||[]).length+(e.auto.cuts||[]).length}}var Hp=e=>{e.settings.autoRoute&&e.links.length&&Do(e,{full:!0})};function l_(e,t={}){let r=Math.max(0,Math.min(1,t.strength??.5)),n=r<.34?2:r<.67?1:0,o=.25-.22*r,s=.02+.1*r,a=Math.round(4+8*r),i=t.keepMcu!==!1,c=t.keepControls!==!1,l=t.rotate!==!1,u=t.maxPasses??40,d=t.only?new Set(t.only):null,f=a_(e);Hp(f);let h=Cl(e),b=Cl(f),p=h.linksOk>=b.linksOk?h:b,m=f.board,g=(z,A)=>z>=0&&A>=0&&z<m.rows&&A<m.cols,v=Ir(m,f.cuts||[]),_=(z,A)=>g(z,A)&&!v.drilled(z,A)?v.cell(z,A):-1,w=new Map,k=z=>{let A=w.get(z);if(A==null||A===z)return w.set(z,z),z;let T=k(A);return w.set(z,T),T},P=(z,A)=>{let T=k(z),M=k(A);T!==M&&w.set(T,M)};for(let z of f.parts){let A=zr(z);for(let T in A)P(z.id+"."+T,z.id+"."+A[T]);for(let T of me(z))ce(z)&&T.role==="gnd"&&P(z.id+"."+T.id,"GND")}for(let z of f.links)z.b==="GND"?P(z.a,"GND"):z.b==="GPIO"?z.gpio&&P(z.a,z.gpio):P(z.a,z.b);let I=(z,A)=>k(z+"."+A),W={},F=z=>!!((H[z.type].def.controls||[]).length||H[z.type].def.socket);for(let z of f.parts){let A=Ee(z)?"off":z.fixed?"fixed":i&&ce(z)?"mcu":c&&F(z)?"control":d&&!d.has(z.id)?"scope":null;A&&(W[z.id]=A)}let G=new Set;for(let z of f.bridges)G.add(_(z[0],z[1])),G.add(_(z[2],z[3]));for(let z of f.wires)for(let A of[z.a,z.b])G.add(_(A[0],A[1]));let K=new Map;for(let z of f.parts)if(!Ee(z))for(let A of me(z)){let T=_(A.r,A.c);T<0||(K.has(T)||K.set(T,[]),K.get(T).push({pid:z.id,net:I(z.id,A.id)}))}for(let z of f.parts)if(!(W[z.id]||Ee(z)))for(let A of me(z)){let T=_(A.r,A.c);if(T<0)continue;let M=I(z.id,A.id);if(G.has(T)&&T>=0||(K.get(T)||[]).some(N=>N.pid!==z.id&&N.net!==M)){W[z.id]="manual";break}}let x=f.parts.filter(z=>!W[z.id]),$={};for(let z in W){let A=f.parts.find(T=>T.id===z);$[A.label]=W[z]}if(!x.length)return{moves:[],before:p,after:p,kept:$};let V=z=>{let A=it(f,z);return A?Bp(A).map(T=>({pid:A.part.id,pin:T.id})):[]},y=z=>f.parts.filter(A=>ce(A)).flatMap(A=>me(A).filter(T=>T.role===z&&g(T.r,T.c)).map(T=>({pid:A.id,pin:T.id}))),D=f.links.map(z=>[V(z.a),z.b==="GND"?y("gnd"):z.b==="GPIO"?z.gpio?V(z.gpio):y("gpio"):V(z.b)]),Y=new Map;D.forEach(([z,A],T)=>{for(let M of[...z,...A]){Y.has(M.pid)||Y.set(M.pid,[]);let N=Y.get(M.pid);N.includes(T)||N.push(T)}});let Ae=new Map,j=new Map,ee=z=>{let A=i_(z),T=me(z);return{r0:Math.min(A.r0,...T.map(M=>M.r)),r1:Math.max(A.r1,...T.map(M=>M.r)),c0:Math.min(A.c0,...T.map(M=>M.c)),c1:Math.max(A.c1,...T.map(M=>M.c))}},Z=z=>{Ae.set(z.id,new Map(me(z).map(A=>[A.id,{r:A.r,c:A.c}]))),Ee(z)||j.set(z.id,ee(z))};for(let z of f.parts)Z(z);let ue=(z,A)=>{let T=N=>(A&&N.pid===A.pid?A.pins:Ae.get(N.pid)).get(N.pin),M=1/0;for(let N of D[z][0]){let U=T(N);if(U)for(let Q of D[z][1]){if(Q.pid===N.pid&&Q.pin===N.pin)continue;let pe=T(Q);pe&&(M=Math.min(M,zN(U,pe)))}}return M===1/0?0:M},we=new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),X=new Map;for(let z of x){let A=l?[0,1,2,3]:[z.rot];X.set(z.id,A.map(T=>{let M={...z,r:0,c:0,rot:T};return{rot:T,pins:me(M).map(N=>({id:N.id,r:N.r,c:N.c})),rect:ee(M)}}))}let xe=z=>{let A=1/0,T=-1/0,M=1/0,N=-1/0;for(let[Pe,ne]of j)Pe!==z.id&&(A=Math.min(A,ne.r0),T=Math.max(T,ne.r1),M=Math.min(M,ne.c0),N=Math.max(N,ne.c1));let U=[...j].filter(([Pe])=>Pe!==z.id).map(Pe=>Pe[1]),Q=Y.get(z.id)||[],pe=we.get(z.id),te=(Pe,ne,$e)=>{let Ue=new Map(Pe.pins.map(Tt=>[Tt.id,{r:Tt.r+ne,c:Tt.c+$e}])),yt=0;for(let Tt of Q)yt+=ue(Tt,{pid:z.id,pins:Ue});let kt={r0:Math.min(A,Pe.rect.r0+ne),r1:Math.max(T,Pe.rect.r1+ne),c0:Math.min(M,Pe.rect.c0+$e),c1:Math.max(N,Pe.rect.c1+$e)},vt=(kt.r1-kt.r0+1)*(kt.c1-kt.c0+1);return yt+s*vt+o*(Math.abs(ne-pe.r)+Math.abs($e-pe.c)+(Pe.rot!==pe.rot?2:0))},ae=X.get(z.id).find(Pe=>Pe.rot===z.rot)||X.get(z.id)[0],re=te(ae,z.r,z.c),Me=new Set,ot=[],dt=(Pe,ne,$e)=>{let Ue=Pe.rot+":"+ne+":"+$e;Me.has(Ue)||(Me.add(Ue),ot.push([te(Pe,ne,$e),Pe,ne,$e]))};for(let Pe of X.get(z.id)){for(let ne=-a;ne<=a;ne++)for(let $e=-a;$e<=a;$e++)dt(Pe,z.r+ne,z.c+$e);if(Q.length<=8)for(let ne of Q)for(let $e of[0,1]){let Ue=D[ne][$e].filter(kt=>kt.pid===z.id),yt=D[ne][1-$e].filter(kt=>kt.pid!==z.id);for(let kt of Ue){let vt=Pe.pins.find(Tt=>Tt.id===kt.pin);if(vt)for(let Tt of yt){let wr=Ae.get(Tt.pid).get(Tt.pin);if(wr)for(let Bn=-4;Bn<=4;Bn++)for(let Jr=-3;Jr<=3;Jr++)dt(Pe,wr.r+Bn-vt.r,wr.c+Jr-vt.c)}}}}ot.sort((Pe,ne)=>Pe[0]-ne[0]||Pe[2]-ne[2]||Pe[3]-ne[3]||Pe[1].rot-ne[1].rot);for(let[Pe,ne,$e,Ue]of ot){if(Pe>=re-1e-6)return!1;if(ft(z,ne,$e,Ue,U))return z.r=$e,z.c=Ue,z.rot=ne.rot,Z(z),!0}return!1},ft=(z,A,T,M,N)=>{let U={r0:A.rect.r0+T,r1:A.rect.r1+T,c0:A.rect.c0+M,c1:A.rect.c1+M};if(U.r0<0||U.c0<0||U.r1>=m.rows||U.c1>=m.cols)return!1;for(let pe of N)if(U.r0-n<=pe.r1&&pe.r0<=U.r1+n&&U.c0-n<=pe.c1&&pe.c0<=U.c1+n)return!1;let Q=new Map;for(let pe of A.pins){let te=_(pe.r+T,pe.c+M);if(te<0)return!1;let ae=I(z.id,pe.id);if(Q.has(te)&&Q.get(te)!==ae||(Q.set(te,ae),G.has(te)))return!1;for(let re of K.get(te)||[])if(re.pid!==z.id&&re.net!==ae)return!1}return!0},nt=(z,A)=>{for(let T of me(z)){let M=_(T.r,T.c);M<0||(A?(K.has(M)||K.set(M,[]),K.get(M).push({pid:z.id,net:I(z.id,T.id)})):K.set(M,(K.get(M)||[]).filter(N=>N.pid!==z.id)))}},Se=.05+.6*r,ct=z=>z.bridges+Se*z.stats.area,Ge=()=>{let z=a_(f);Hp(z);let A=Cl(z);return A.linksOk>=p.linksOk&&A.wires<=p.wires&&ct(A)<ct(p)-1e-9},Yt=[],S=()=>new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),R=z=>{for(let A of x){nt(A,!1);let T=z.get(A.id);A.r=T.r,A.c=T.c,A.rot=T.rot,Z(A),nt(A,!0)}};Yt.push(S());for(let z=0;z<u;z++){let A=M=>(Y.get(M.id)||[]).reduce((N,U)=>N+ue(U),0),T=0;for(let M of[...x].sort((N,U)=>A(U)-A(N)||N.id.localeCompare(U.id)))nt(M,!1),xe(M)&&T++,nt(M,!0);if(!T)break;Yt.push(S())}if(Yt.length>1&&!Ge()){let z=0,A=Yt.length-1;for(;A-z>1;){let T=z+A>>1;R(Yt[T]),T>0&&Ge()?z=T:A=T}R(Yt[z])}let L=[];for(let z of x){let A=we.get(z.id);(A.r!==z.r||A.c!==z.c||A.rot!==z.rot)&&L.push({id:z.id,label:z.label,from:A,to:{r:z.r,c:z.c,rot:z.rot}})}return Hp(f),{moves:L,before:p,after:L.length?Cl(f):p,kept:$}}function c_(e,t){let r=0;for(let n of t.moves){let o=e.parts.find(s=>s.id===n.id);o&&(o.r=n.to.r,o.c=n.to.c,o.rot=n.to.rot,r++)}return r>0}var _N=.21;function wN(e,t,r,n){let o=hn(e),s=o.segs[o.cell(t,r)];if(s.drilled)return null;for(let a=s.r0;a<=s.r1;a++){if(a===t||!vr(e.board,a,r))continue;let i=a+":"+r;if(!n.has(i)&&!e.wires.some(c=>c.a[0]===a&&c.a[1]===r||c.b[0]===a&&c.b[1]===r))return i}return null}function u_(e,{A0:t,AS:r,SIM:n,linkState:o,tr:s=Gt}){let a=[],i=(p,m,g)=>a.push({sev:p,msg:m,holes:g||[]}),c=(p,m)=>vr(e.board,p,m),l=p=>[[p.r,p.c]],u=e.parts.some(p=>ce(p));for(let p of e.parts){let m=t.byPart.get(p.id);!Ee(p)&&m.pins.every(g=>!g.on)&&i("warn",s("{a}: teljesen a panelon k\xEDv\xFCl esik",{a:p.label}),[])}for(let p of e.parts)if(p.plug&&!Ro(e,p)){let m=e.parts.find(g=>g.id===p.plug);m&&i("warn",s("{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva",{a:p.label,b:m.label,c:H[p.type].pins(p).length}),me(m).map(g=>[g.r,g.c]))}for(let p of e.parts){if(ce(p))continue;let m=e_(e,t,p);if(m.some(g=>!g.floating))for(let g of m)g.floating&&g.on&&Qz.has(g.role)&&i("info",s("{a}: a {b} l\xE1b sehova sincs k\xF6tve",{a:g.label,b:s(Xz[g.role])}),(()=>{let v=it(e,g.ref);return v?l(v):[]})())}let d=new Map;for(let p of t.pins){if(!p.on)continue;let m=p.r+":"+p.c;d.has(m)||d.set(m,[]),d.get(m).push(p)}for(let[p,m]of d)m.length>1&&i("err",s("\xDCtk\xF6z\xE9s a {a} lyukban: {b}",{a:p,b:m.map(gn).join(", ")}),l(m[0]));{let p=hn(e);for(let[m,g]of d){let v=g[0];p.drilled(v.r,v.c)&&i("err",s("{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik",{a:gn(v),b:m}),l(v))}for(let m of e.wires)for(let g of[m.a,m.b])c(g[0],g[1])&&p.drilled(g[0],g[1])&&i("warn",s("Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z",{a:g[0],b:g[1]}),[g]);for(let m of e.bridges)(p.drilled(m[0],m[1])||p.drilled(m[2],m[3]))&&i("warn",s("H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})",{a:m[0],b:m[1],c:m[2],d:m[3]}),[[m[0],m[1]]])}for(let p of e.parts){if(ce(p))continue;let m=t.byPart.get(p.id),g={},v=k=>g[k]===k?k:g[k]=v(g[k]);m.pins.forEach(k=>g[k.id]=k.id);for(let[k,P]of H[p.type].internal(p))g[v(k)]=v(P);let _=new Map;for(let k of m.pins){let P=v(k.id);_.has(k.net)||_.set(k.net,new Map);let I=_.get(k.net);I.has(P)||I.set(P,k)}let w=(H[p.type].def.model||[]).some(k=>k.el==="logic");for(let[,k]of _)if(k.size>1){let P=[...k.values()];if(w){let F=new Set(P.map(G=>G.role));if(!(F.has("vin")&&F.has("gnd")))continue}let I=P.some((F,G)=>P.some((K,x)=>x>G&&F.s===K.s)),W=p.type==="button"?s("{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt",{a:p.label}):p.type==="bat"?s("{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve",{a:p.label}):s("{a}: {b} \xF6ssze van k\xF6tve",{a:p.label,b:P.map(F=>F.name).join(" "+s("\xE9s")+" ")});I&&(W+=s(" (egy szekci\xF3ba esnek)")),i(p.type==="button"||p.type==="bat"?"err":"warn",W,P.map(F=>[F.r,F.c]))}}let f=[];for(let[,p]of t.netPins){let m=p.filter(P=>ce(P.part)),g=new Map;m.forEach(P=>{let I=P.part.id+"."+(P.role==="gnd"?"GND":P.id);g.has(I)||g.set(I,P)});let v=[...g.values()];if(v.length>1&&v.some((I,W)=>v.some((F,G)=>G>W&&I.s===F.s&&I.part===F.part))){f.push(v);continue}let _=new Set;for(let P of p)ce(P.part)?P.role==="gnd"?_.add("GND"):P.role==="p33"?_.add("3V3"):P.role==="pwr"&&_.add(P.name):(P.role==="bp"||P.role==="chg"||P.role==="pout")&&_.add("BAT+");let w=p.map(P=>[P.r,P.c]);_.has("GND")&&_.size>1?i("err",s("Z\xE1rlat: GND \u2013 {a}",{a:[..._].filter(P=>P!=="GND").join(", ")}),w):_.has("3V3")&&_.size>1&&i("err",s("Z\xE1rlat: 3V3 \u2013 {a}",{a:[..._].filter(P=>P!=="3V3").join(", ")}),w);let k=v.filter(P=>P.role==="gpio");k.length>1&&i("warn",s("{a} k\xF6z\xF6s neten van",{a:k.map(P=>P.name).join(", ")}),w),k.length&&_.size&&i("warn",s("{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve",{a:k.map(P=>P.name).join(", "),b:[..._].join("/")}),w)}{let p=new Map;for(let m of e.links){if(m.b!=="GND"&&m.b!=="GPIO")continue;let g=it(e,m.a);if(!g)continue;let v=g.part.id+":"+zr(g.part)[g.id];p.has(v)||p.set(v,{sg:m.b==="GND"?"GND":"G"+m.id,q:g})}for(let[,m]of t.netPins){let g=new Map;m.some(v=>ce(v.part)&&v.role==="gnd")&&g.set("GND",null);for(let v of m){let _=p.get(v.part.id+":"+zr(v.part)[v.id]);_&&!g.has(_.sg)&&g.set(_.sg,_.q)}if(g.size>1){let v=[...g.entries()].map(([,_])=>_?gn(_):"GND");i("err",s("\xD6ssze\xE9r\u0151 jelek: {a}",{a:v.join(" \xB7 ")}),m.map(_=>[_.r,_.c]))}else{let v=new Map;for(let w of m)w.part.type==="button"&&w.role==="A"&&v.set(w.part.id,w);let _=m.find(w=>ce(w.part)&&w.role==="gpio");_&&v.size>1&&i("warn",`${[...v.values()].map(w=>w.part.label).join(", ")} ugyanazon a GPIO-n (${_.name})`,[...v.values()].map(w=>[w.r,w.c]))}}}{let p=g=>{let v=H[g.type].bounds(g),_=[[v.r0,v.c0],[v.r0,v.c1],[v.r1,v.c0],[v.r1,v.c1]].map(([P,I])=>It(g,P,I)),w=_.map(P=>P[0]),k=_.map(P=>P[1]);return[Math.min(...w)+.25,Math.max(...w)-.25,Math.min(...k)+.25,Math.max(...k)-.25]},m=e.parts.filter(g=>!Ee(g)).map(g=>[g,p(g)]);for(let g=0;g<m.length;g++)for(let v=g+1;v<m.length;v++){let[_,w]=m[g],[k,P]=m[v];w[0]<P[1]&&P[0]<w[1]&&w[2]<P[3]&&P[2]<w[3]&&i("warn",s("{a} \xE9s {b} teste \xE1tfed",{a:_.label,b:k.label}),[[_.r,_.c],[k.r,k.c]])}}if(f.length>3){let p=f[0][0].part;i("err",s("{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.",{a:p.label,b:f.length}),f.flatMap(m=>m.map(g=>[g.r,g.c])))}else for(let p of f)i("err",s("Z\xE1rlat: {a} egy szekci\xF3ba esik",{a:p.map(gn).join(" \xB7 ")}),p.map(m=>[m.r,m.c]));let h=new Set(t.pins.map(p=>p.r+":"+p.c)),b=new Map;e.wires.forEach(p=>{for(let m of[p.a,p.b]){if(!c(m[0],m[1]))continue;let g=m[0]+":"+m[1];if(b.set(g,(b.get(g)||0)+1),h.has(g)){let v=wN(e,m[0],m[1],h);i("warn",s("Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.",{a:g})+" "+(v?s("Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).",{a:v}):s("A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.")),[m])}}});for(let[p,m]of b)if(m>1){let[g,v]=p.split(":").map(Number);i("warn",s("{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban",{a:m,b:p}),[[g,v]])}for(let p of e.links){let m=o.get(p.id);if(m&&!m.ok){let g=it(e,p.a);i("warn",s("Kapcsolat nincs bek\xF6tve: {a}",{a:jo(e,p)}),g?l(g):[])}else if(m&&m.wire&&!m.cable){let g=it(e,p.a);i("warn",s("{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)",{a:jo(e,p)}),g?l(g):[])}}if(u)for(let p of e.parts){if(p.type!=="button"||e.links.some(v=>v.a.startsWith(p.id+".")))continue;let m=t.byPart.get(p.id).map;["A1","B1"].some(v=>(t.netPins.get(m[v].net)||[]).some(_=>ce(_.part)&&_.role==="gpio"))||i("warn",s("{a}: egyik oldala sincs GPIO-ra k\xF6tve",{a:p.label}),l(m.A1))}n&&xN(e,r,t,n,i,s);for(let p of e.parts)for(let m of H[p.type].def.model||[]){if(m.el!=="motor")continue;let g=t.byPart.get(p.id).map,v=g[m.a].net,_=g[m.b].net,w=t.netPins.get(v)||[],k=t.netPins.get(_)||[];if(w.length<2||k.length<2)continue;(w.some(I=>I.role==="gpio")||k.some(I=>I.role==="gpio"))&&i("err",s("{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.",{a:p.label}),[]),e.parts.some(I=>(H[I.type].def.model||[]).some(W=>{if(W.el!=="diode")return!1;let F=t.byPart.get(I.id).map,G=F[W.a].net,K=F[W.k].net;return G===v&&K===_||G===_&&K===v}))||i("warn",s("{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.",{a:p.label}),[])}if(n)for(let p of e.parts){let m=r.byPart.get(p.id),g=m.pins.filter(k=>k.role==="vin");if(!g.length)continue;let v=m.pins.find(k=>k.role==="gnd"),_=H[p.type].def.model||[],w=k=>n.floating.has(k.net)?null:n.netV.get(k.net)??null;for(let k of g){let P=_.some(G=>G.el==="source"&&G.p===k.id),I=w(k),W=v?w(v):0,F=I==null||W==null?null:I-W;F==null||F<.5?P||i("warn",s("{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g",{a:p.label,b:k.name})+(I!=null&&v&&W==null?" "+s("(a {a} nincs bek\xF6tve)",{a:v.name}):""),l(k)):k.vmax!=null&&F>k.vmax+.05?i("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:p.label,b:k.name,c:F.toFixed(2),d:k.vmax}),l(k)):k.vmin!=null&&F<k.vmin-.05&&i("warn",s("{a}.{b}: csak {c} V, legal\xE1bb {d} V kell",{a:p.label,b:k.name,c:F.toFixed(2),d:k.vmin}),l(k))}}for(let p of e.parts){if(!ce(p))continue;let m=(H[p.type].def.meta||{}).pinNotes||{};for(let g of t.byPart.get(p.id).pins){if(g.role!=="gpio"||!g.on||!((t.netPins.get(g.net)||[]).length>1||(t.netSecs.get(g.net)||0)>1))continue;let _=Dp.find(w=>Be(g,w[0]));_&&i("warn",`${p.label}.${g.name}: ${s(m[g.name]||_[1])}`,l(g))}}for(let p of e.parts){if(ce(p))continue;let m=new Map;for(let g of t.byPart.get(p.id).pins){if(!g.fn)continue;let v=(t.netPins.get(g.net)||[]).find(P=>ce(P.part)&&P.role==="gpio");if(!v)continue;let _=Hr(v,g.fn),w=g.fn.split(".")[0],k=Vp(Lp(g.fn));if(!_.length){if(Vn(v.part)!=="matrix"){let P=[...new Set(me(v.part).filter(I=>I.role==="gpio"&&Hr(I,g.fn).length).map(I=>I.name))];i("warn",s("{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}",{a:p.label,b:g.name,c:Vp(g.fn),d:v.name,e:k,f:w.toUpperCase(),g:P.slice(0,8).join(", ")}),l(v))}continue}m.has(w)||m.set(w,[]),m.get(w).push({q:g,g:v,b:new Set(_.map(P=>P.split(".")[0]))})}for(let[g,v]of m){if(v.length<2||Vn(v[0].g.part)==="matrix")continue;v.slice(1).reduce((w,k)=>new Set([...w].filter(P=>k.b.has(P))),new Set(v[0].b)).size||i("warn",s("{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.",{a:p.label,b:g.toUpperCase(),c:v.map(w=>`${w.q.name} \u2192 ${w.g.name}: ${[...w.b].map(k=>k.toUpperCase()).join("/")}`).join(", ")}),v.map(w=>l(w.g)[0]))}}{let p=new Map;for(let m of e.parts)if(ce(m))for(let g of t.byPart.get(m.id).pins){if(g.role!=="gpio"||ca(e,m,g.id,g,t)!=="pwm")continue;let v=(g.caps||[]).find(w=>/^pwm\d+\.[ab]$/.test(w));if(!v)continue;let _=m.id+":"+v.split(".")[0];p.has(_)||p.set(_,[]),p.get(_).push({q:g,f:ua(e,m.id+"."+g.id).freq,c:v})}for(let[,m]of p){if(m.length<2)continue;[...new Set(m.map(v=>+v.f))].length>1&&i("warn",s("{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).",{a:m.map(v=>v.q.name).join(" "+s("\xE9s")+" "),b:m[0].c.split(".")[0].toUpperCase(),c:m.map(v=>v.f+" Hz").join(", ")}),m.map(v=>l(v.q)[0]))}}for(let[,p]of t.netPins){let m=p.filter(g=>g.role==="adc");if(m.length)for(let g of p.filter(v=>v.role==="gpio")){let v=m.map(gn).join(", "),_=()=>[...new Set(me(g.part).filter(w=>Be(w,"adc")).map(w=>w.name))].join(", ")||"\u2013";if(!Ol(g))i("warn",s("{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}",{a:v,b:g.name,c:_()}),l(g));else{Be(g,"adc")||i("warn",s("{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}",{a:g.name,b:_()}),l(g));let w=ca(e,g.part,g.id,g,t);w!=="adc"&&w!=="float"&&i("warn",s("{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})",{a:g.name,b:s(Fn.find(k=>k[0]===w)[1])}),l(g))}}}{let p=da(e);p.parts>=3&&e.links.length>=2&&p.fill<_N&&p.area>=.25*p.boardArea&&a.push({sev:"info",msg:s("A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.",{f:Math.round(p.fill*100)}),holes:[],act:"compact"})}return a}function xN(e,t,r,n,o,s){for(let a of n.srcI)a.kind==="vbus"&&a.I>1&&o("err",s("Z\xE1rlat a VBUS-on ({a} A)",{a:a.I.toFixed(1)}),[]),a.kind==="v33"&&a.I>.3&&o("err",s("3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)",{a:(a.I*1e3).toFixed(0)}),[]);for(let a of n.gpios){let i=Math.abs(a.I)*1e3,c=Math.round(((n.picos.find(l=>l.p===a.p)||{igpio:0}).igpio||.012)*1e3);i>50?o("err",s("{a}: {b} mA, kimenet z\xE1rlatban",{a:a.q.name,b:i.toFixed(0)}),[[a.q.r,a.q.c]]):i>c&&o("warn",s("{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)",{a:a.q.name,b:i.toFixed(1),c}),[[a.q.r,a.q.c]]),a.powered&&a.float&&(a.mode==="float"||a.mode==="adc")&&(t.netPins.get(t.pins.find(u=>u.part===a.p&&u.id===a.q.id).net)||[]).some(u=>Co(u.part))&&o("warn",s("{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.",{a:a.q.name,b:Be(a.q,"nopull")?" "+s("(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)"):""}),[[a.q.r,a.q.c]])}for(let a of n.picos){let i=r.byPart.get(a.p.id).pins.find(l=>l.name===a.vsysName),c=i?[[i.r,i.c]]:[];a.vmax!=null&&a.Usys>a.vmax+.05?o("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vmax}),c):!a.powered&&a.Usys>.5&&o("warn",s("{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vreg}),c)}for(let a of n.leds)a.light&&a.I>.03?o("warn",s("{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell",{a:a.p.label,b:(a.I*1e3).toFixed(0)}),[]):!a.light&&a.imax&&a.I>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(a.I),c:kr(a.imax)}),[]);for(let a of n.logics){if(a.vdd<1)continue;let i=a.ins.filter(c=>c.open).map(c=>c.name);i.length&&o("warn",s("{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).",{a:a.p.label,b:i.join(", ")}),[]);for(let c of a.outs)c.I>a.imax&&o("warn",s("{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}",{a:a.p.label,b:c.name,c:(c.I*1e3).toFixed(0),d:kr(a.imax),e:a.imax<.1?" "+s("(k\xE9t kimenet egym\xE1s ellen?)"):""}),[])}for(let a of n.motors)Math.abs(a.U)>a.vnom*1.25&&o("warn",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vnom}),[]);for(let a of n.servos)a.U>3&&a.angle==null&&o("warn",s("{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).",{a:a.p.label}),[]);for(let a of n.bjts){let i=a.p.label;a.floatBase&&o("warn",s("{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.",{a:i}),[]),a.imax&&Math.abs(a.ic)>a.imax?o("warn",s("{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l",{a:i,b:kr(Math.abs(a.ic)),c:kr(a.imax)}),[]):a.st==="act"&&a.ic>.001&&o("warn",s("{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.",{a:i,b:a.vce.toFixed(2),c:kr(a.ic),d:kr(a.ib)}),[])}for(let a of n.caps)a.float||(a.polar&&a.U<-.5?o("err",s("{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.",{a:a.p.label,b:a.U.toFixed(2)}),[]):a.vmax!=null&&Math.abs(a.U)>a.vmax&&o("err",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vmax}),[]));for(let a of n.fets)a.floatGate&&o("warn",s("{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.",{a:a.p.label}),[]),a.imax&&Math.abs(a.I)>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(Math.abs(a.I)),c:kr(a.imax)}),[]);for(let a of n.bats){if(a.kind==="supply"){a.I<-2&&o("err",s("{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[]);continue}let i=t.byPart.get(a.p.id).pins,c=n.picos.find(d=>d.feeds&&d.vsys===a.node),u=!!!c&&i.some(d=>(t.netPins.get(d.net)||[]).some(f=>f.role==="chg"&&f.part!==a.p));if(c&&a.I>.1){o("err",s("{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:c.p.label,c:c.vsysName,d:a.I.toFixed(1)}),[]);continue}if(u&&a.I>0){a.I>1.2&&o("warn",s("{a}: {b} A t\xF6lt\u0151\xE1ram, sok",{a:a.p.label,b:a.I.toFixed(1)}),[]);continue}a.I>2?o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I>.1?o("err",s("{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I<-2&&o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[])}}var Ut=e=>typeof e=="number"?e>.5:!!e,Wp=e=>typeof e=="boolean"?e?1:0:typeof e=="number"&&isFinite(e)?e:0,gt=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},Fe=(e,t)=>({id:e,label:t,kind:"bool"}),Zn=(e,t)=>({id:e,label:t,kind:"num"}),Nl=(e=E("L\xE1b"))=>({key:"pin",label:e,type:"pin",default:""}),d_={half:["1000","1100","0100","0110","0010","0011","0001","1001"],full:["1100","0110","0011","1001"],wave:["1000","0100","0010","0001"],count:Array.from({length:16},(e,t)=>t.toString(2).padStart(4,"0").split("").reverse().join(""))},Yp=4,SN=[["half",E("f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)")],["full",E("teljes l\xE9p\xE9s, k\xE9t tekercs (4)")],["wave",E("egy tekercs (4)")],["count",E("bin\xE1ris sz\xE1ml\xE1l\xF3 (16)")],["custom",E("saj\xE1t minta")]];function Xp(e,t){let r=e==="custom"?String(t||"").split(/[\s,;]+/).filter(n=>/^[01]{1,8}$/.test(n)):d_[String(e)]||d_.half;return r.length||(r=["0"]),r.map(n=>n.slice(0,Yp).padEnd(Yp,"0"))}var PN=[["off",E("Ut\xE1nfut\xE1s (ki k\xE9sleltetve)")],["on",E("Bekapcsol\xE1si k\xE9sleltet\xE9s")],["pulse",E("Impulzus")],["filter",E("Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)")]],Jp=(e,t,r)=>{let n=!!e[t];return e[t]=r,r&&!n};E("Bemenet"),E("Logika"),E("Id\u0151"),E("Kimenet");var Wr={in:{label:E("Digit\xE1lis bemenet"),cat:"Bemenet",help:E("Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony."),ins:[],outs:[Fe("v",E("akt\xEDv"))],params:[Nl(),{key:"pull",label:E("Felh\xFAz\xE1s"),type:"select",default:"pullup",options:[["pullup",E("fel (3,3 V)")],["pulldown",E("le (GND)")],["float",E("nincs")]]},{key:"active",label:E("Akt\xEDv"),type:"select",default:"low",options:[["low",E("alacsony szinten")],["high",E("magas szinten")]]}],eval:e=>{let t=e.read(e.p.pin),r=t?t.level:null;return{v:r==null?!1:e.p.active==="high"==(r===1)}},gpio:e=>({ref:e.pin,mode:String(e.pull||"pullup")})},adc:{label:E("Anal\xF3g bemenet"),cat:"Bemenet",help:E("Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick."),ins:[],outs:[Zn("v",E("\xE9rt\xE9k"))],params:[Nl()],eval:e=>{let t=e.read(e.p.pin);return{v:t?Math.max(0,Math.min(1,t.V/3.3)):0}},gpio:e=>({ref:e.pin,mode:"adc"})},const:{label:E("\xC1lland\xF3"),cat:"Bemenet",help:E("R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz)."),ins:[],outs:[Zn("v",E("\xE9rt\xE9k"))],params:[{key:"value",label:E("\xC9rt\xE9k"),type:"number",default:1}],eval:e=>({v:gt(e.p.value,1)})},not:{label:E("NEM"),cat:"Logika",help:E("Megford\xEDtja a jelet."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:!Ut(e.in.a)})},and:{label:E("\xC9S"),cat:"Logika",help:E("Akkor igaz, ha mindk\xE9t bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)&&Ut(e.in.b)})},or:{label:E("VAGY"),cat:"Logika",help:E("Akkor igaz, ha legal\xE1bb az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)||Ut(e.in.b)})},xor:{label:E("KIZ\xC1R\xD3 VAGY"),cat:"Logika",help:E("Akkor igaz, ha pontosan az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)!==Ut(e.in.b)})},compare:{label:E("\xD6sszehasonl\xEDt\xE1s"),cat:"Logika",help:E("Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D."),ins:[Zn("a",E("\xE9rt\xE9k"))],outs:[Fe("v",E("igaz"))],params:[{key:"op",label:E("Felt\xE9tel"),type:"select",default:">",options:[[">",E("nagyobb, mint")],["<",E("kisebb, mint")]]},{key:"value",label:E("Hat\xE1r"),type:"number",default:.5}],eval:e=>({v:e.p.op==="<"?Wp(e.in.a)<gt(e.p.value,.5):Wp(e.in.a)>gt(e.p.value,.5)})},blink:{label:E("\xDCtemad\xF3"),cat:"Id\u0151",help:E("N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED)."),ins:[],outs:[Fe("v",E("ki"))],params:[{key:"period",label:E("Peri\xF3dus"),type:"number",default:1e3,min:20,unit:"ms"},{key:"duty",label:E("Kit\xF6lt\xE9s"),type:"number",default:50,min:0,max:100,unit:"%"}],eval:e=>{let t=Math.max(20,gt(e.p.period,1e3));return{v:e.t%t<t*Math.max(0,Math.min(100,gt(e.p.duty,50)))/100}}},toggle:{label:E("V\xE1lt\xF3kapcsol\xF3"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026"),ins:[Fe("a",E("v\xE1lt\xE1s"))],outs:[Fe("v",E("\xE1llapot"))],params:[],eval:e=>(Jp(e.st,"a",Ut(e.in.a))&&(e.st.v=!e.st.v),{v:!!e.st.v})},counter:{label:E("Sz\xE1ml\xE1l\xF3"),cat:"Id\u0151",help:E("Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez)."),ins:[Fe("a",E("sz\xE1mol")),Fe("r",E("t\xF6rl\xE9s"))],outs:[Zn("n",E("\xE9rt\xE9k")),Zn("f",E("ar\xE1ny"))],params:[{key:"max",label:E("L\xE9p\xE9ssz\xE1m"),type:"number",default:4,min:1}],eval:e=>{let t=Math.max(1,Math.round(gt(e.p.max,4))),r=gt(e.st.n,0);return Jp(e.st,"a",Ut(e.in.a))&&(r=(r+1)%t),Ut(e.in.r)&&(r=0),e.st.n=r,{n:r,f:t>1?r/(t-1):0}}},delay:{label:E("Id\u0151z\xEDt\u0151"),cat:"Id\u0151",help:E("K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s)."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[{key:"mode",label:E("M\u0171k\xF6d\xE9s"),type:"select",default:"off",legacy:"filter",options:PN},{key:"ms",label:E("Id\u0151"),type:"number",default:500,min:0,unit:"ms"}],eval:e=>{let t=Ut(e.in.a),r=Math.max(0,gt(e.p.ms,500)),n=e.t,o=e.st;switch(e.p.mode){case"off":return t&&(o.at=n),{v:t||o.at!==void 0&&n-gt(o.at,0)<r};case"on":return o.last!==t&&(o.last=t,o.at=n),{v:t&&n-gt(o.at,0)>=r};case"pulse":{let s=o.at!==void 0&&n-gt(o.at,0)<r;return Jp(o,"a",t)&&!s&&(o.at=n),{v:o.at!==void 0&&n-gt(o.at,0)<r}}default:return o.last!==t&&(o.last=t,o.at=n),n-gt(o.at,0)>=r&&(o.v=t),{v:!!o.v}}}},seq:{label:E("Sorozat"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet."),ins:[Fe("a",E("l\xE9p\xE9s")),Fe("r",E("vissza"))],outs:[Fe("c0",E("A")),Fe("c1",E("B")),Fe("c2",E("C")),Fe("c3",E("D")),Zn("n",E("sor"))],params:[{key:"preset",label:E("Minta"),type:"select",default:"half",options:SN},{key:"custom",label:E("Saj\xE1t minta (sorok sz\xF3k\xF6zzel)"),type:"text",default:"10 01",when:{key:"preset",is:"custom"}},{key:"dir",label:E("Ir\xE1ny"),type:"select",default:"fwd",options:[["fwd",E("el\u0151re")],["back",E("vissza")]]}],eval:e=>{let t=Xp(e.p.preset,e.p.custom),r=t.length,n=gt(e.st.i,0),o=e.st.a===void 0?!0:!!e.st.a,s=Ut(e.in.a);e.st.a=s,s&&!o&&(n+=e.p.dir==="back"!==Ut(e.in.r)?-1:1),n=(n%r+r)%r,e.st.i=n;let a=t[n];return{c0:a[0]==="1",c1:a[1]==="1",c2:a[2]==="1",c3:a[3]==="1",n}}},out:{label:E("Digit\xE1lis kimenet"),cat:"Kimenet",help:E("Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja)."),ins:[Fe("a",E("be"))],outs:[],params:[Nl()],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:Ut(t.a)?"out_high":"out_low"})},pwm:{label:E("PWM kimenet"),cat:"Kimenet",help:E("Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %."),ins:[Zn("a",E("kit\xF6lt\xE9s"))],outs:[],params:[Nl(),{key:"duty",label:E("Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)"),type:"number",default:50,min:0,max:100,unit:"%"},{key:"freq",label:E("Frekvencia"),type:"number",default:1e3,min:1,unit:"Hz"}],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:"pwm",pwm:{duty:Math.round(Math.max(0,Math.min(1,t.a===void 0?gt(e.duty,50)/100:Wp(t.a)))*1e3)/10,freq:Math.max(1,gt(e.freq,1e3))}})}};function p_(e){let t=e;if(!t||!Array.isArray(t.nodes))return;let r=[];for(let i of t.nodes){if(!i||typeof i.id!="string"||typeof i.type!="string"||!Wr[i.type])continue;let c=Wr[i.type],l={};for(let u of c.params)l[u.key]=i.props?.[u.key]??(u.legacy!==void 0?u.legacy:u.default);r.push({id:i.id,type:i.type,x:gt(i.x,0),y:gt(i.y,0),props:l})}let n=new Map(r.map(i=>[i.id,i])),o=(i,c)=>{if(typeof i!="string")return!1;let l=i.lastIndexOf("."),u=n.get(i.slice(0,l));return!!u&&Wr[u.type][c].some(d=>d.id===i.slice(l+1))},s=[],a=new Set;for(let i of Array.isArray(t.edges)?t.edges:[])!i||typeof i.id!="string"||!o(i.from,"outs")||!o(i.to,"ins")||a.has(i.to)||(a.add(i.to),s.push({id:i.id,from:i.from,to:i.to}));return{nodes:r,edges:s}}function Qp(e,t,r){if(typeof r!="string"||!r)return null;let n=it(e,r);if(!n)return null;if(ce(n.part)&&n.role==="gpio")return n.part.id+"."+n.id;let o=t.byPart.get(n.part.id),s=o&&o.map[n.id];if(!s)return null;let a=(t.netPins.get(s.net)||[]).find(i=>ce(i.part)&&i.role==="gpio");return a?a.part.id+"."+a.id:null}var f_=()=>({st:new Map,vals:new Map});function m_(e,t,r,n,o,s){let a={gpio:{},pwm:{},errors:new Map},i=new Map(r.edges.map(p=>[p.to,p.from])),c=new Map(r.nodes.map(p=>[p.id,new Set(r.edges.filter(m=>m.to.startsWith(p.id+".")).map(m=>m.from.slice(0,m.from.lastIndexOf("."))))])),l=[],u=new Set,d=!0;for(;d;){d=!1;for(let p of r.nodes)!u.has(p.id)&&[...c.get(p.id)].every(m=>u.has(m)||m===p.id)&&(l.push(p.id),u.add(p.id),d=!0)}for(let p of r.nodes)u.has(p.id)||l.push(p.id);let f=new Map(r.nodes.map(p=>[p.id,p])),h=(p,m)=>{let g=Qp(e,t,p);return g||a.errors.set(m,typeof p=="string"&&p?E("A l\xE1b nincs GPIO-ra k\xF6tve"):E("Nincs kiv\xE1lasztva l\xE1b")),g},b=p=>{let m={};for(let g of Wr[p.type].ins){let v=i.get(p.id+"."+g.id);m[g.id]=v?n.vals.get(v):void 0}return m};for(let p of l){let m=f.get(p),g=Wr[m.type];n.st.has(p)||n.st.set(p,{});let v=g.eval({in:b(m),p:m.props,st:n.st.get(p),t:o,read:_=>{let w=h(_,p);return w?s(w):null}});for(let[_,w]of Object.entries(v))n.vals.set(p+"."+_,w)}for(let p of r.nodes){let m=Wr[p.type];if(!m.gpio)continue;let g=m.gpio(p.props,b(p));if(!g)continue;let v=h(g.ref,p.id);v&&(a.gpio[v]&&a.gpio[v]!==g.mode&&a.errors.set(p.id,E("Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja")),a.gpio[v]=g.mode,g.pwm&&(a.pwm[v]=g.pwm))}return a}var h_=(e,t)=>t?{...e,gpio:{...e.gpio,...t.gpio},pwm:{...e.pwm||{},...t.pwm}}:e,pa=(e,t)=>{let r=1;for(;t.has(e+r);)r++;let n=e+r;return t.add(n),n};function $N(e,t,r={x:40,y:40},n={}){let o=e?{nodes:[...e.nodes],edges:[...e.edges]}:{nodes:[],edges:[]},s=new Set(o.nodes.map(u=>u.id)),a=new Set(o.edges.map(u=>u.id)),i=pa("n",s),c=pa("n",s),l=[0,1,2,3].map(()=>pa("n",s));return o.nodes.push({id:i,type:"blink",x:r.x,y:r.y+40,props:{period:n.period??250,duty:50}}),o.nodes.push({id:c,type:"seq",x:r.x+230,y:r.y,props:{preset:n.preset??"half",custom:n.custom??"10 01",dir:n.dir??"fwd"}}),o.edges.push({id:pa("e",a),from:i+".v",to:c+".a"}),l.forEach((u,d)=>{o.nodes.push({id:u,type:"out",x:r.x+460,y:r.y+d*90,props:{pin:t[d]||""}}),o.edges.push({id:pa("e",a),from:`${c}.c${d}`,to:u+".a"})}),{prog:o,ids:[i,c,...l]}}function g_(e,t){let r=(e.pins||[]).slice(0,Yp);if(!r.some(Boolean))return t;let n=t&&t.nodes.length?Math.max(...t.nodes.map(i=>i.y))+160:40,{prog:o,ids:s}=$N(t,r,{x:40,y:n},{period:Math.max(20,Math.round(1e3/Math.max(.5,e.rate||4))),preset:e.preset,custom:e.custom,dir:e.dir<0?"back":"fwd"}),a=new Set(s.slice(2).filter((i,c)=>!r[c]));return{nodes:o.nodes.filter(i=>!a.has(i.id)),edges:o.edges.filter(i=>!a.has(i.to.slice(0,i.to.lastIndexOf("."))))}}var b_=e=>/^[A-Za-z_]\w*$/.test(e)?e:"n_"+e.replace(/\W/g,"_"),Cr=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},fa=e=>Number.isInteger(e)?String(e):String(+e.toFixed(6));function EN(e,t,r){let n=r.props.pin,o=Qp(e,t,n);if(!o)return null;let s=it(e,o),a=it(e,String(n)),i=s&&/(\d+)$/.exec(s.name);return!s||!i?null:{gpio:+i[1],name:s.name,ref:a?`${a.part.label}.${a.name}`:String(n)}}function y_(e,t,r,n,o=Gt){let s=n==="micropython",a=[],i=e.parts.find($=>ce($))||null,c=i&&(H[i.type].def.meta||{}).target||null,l=i?H[i.type].def.name:null;i?!c&&!s&&a.push(o("{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.",{a:l??""})):a.push(o("Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek."));let u=new Map(r.nodes.map($=>[$.id,new Set(r.edges.filter(V=>V.to.startsWith($.id+".")).map(V=>V.from.slice(0,V.from.lastIndexOf("."))))])),d=[],f=new Set;for(let $=!0;$;){$=!1;for(let V of r.nodes)!f.has(V.id)&&[...u.get(V.id)].every(y=>f.has(y)||y===V.id)&&(d.push(V),f.add(V.id),$=!0)}for(let $ of r.nodes)f.has($.id)||d.push($);let h=new Map(r.edges.map($=>[$.to,$.from])),b=$=>{let V=$.lastIndexOf(".");return`${b_($.slice(0,V))}_${$.slice(V+1)}`},p=($,V,y)=>{let D=h.get($.id+"."+V);if(!D)return y==="bool"?s?"False":"false":"0";let Y=D.lastIndexOf("."),Ae=r.nodes.find(Z=>Z.id===D.slice(0,Y)),j=Wr[Ae.type].outs.find(Z=>Z.id===D.slice(Y+1)).kind,ee=b(D);return j===y?ee:y==="bool"?`(${ee} > 0.5)`:s?`(1 if ${ee} else 0)`:`(${ee} ? 1.0f : 0.0f)`},m=s?"True":"true",g=s?"False":"false",v=s?"not ":"!",_=s?" and ":" && ",w=s?" or ":" || ",k=[],P=[],I=[],W=new Map;for(let $ of d){let V=Wr[$.type],y=b_($.id),D=$.props,Y=[],Ae=[],j=[],ee=X=>b($.id+"."+X);for(let X of V.outs)Ae.push(s?`${ee(X.id)} = ${X.kind==="bool"?g:"0"}`:`${X.kind==="bool"?"bool":"float"} ${ee(X.id)} = ${X.kind==="bool"?g:"0"};`);let Z=null;if(V.params.some(X=>X.type==="pin")){if(Z=EN(e,t,$),!Z){a.push(`${V.label} (${$.id}): ${D.pin?"a l\xE1b nincs GPIO-ra k\xF6tve":"nincs kiv\xE1lasztva l\xE1b"}; kimaradt.`);continue}W.has(Z.gpio)&&W.get(Z.gpio)!==$.id&&a.push(o("{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).",{a:Z.name,b:W.get(Z.gpio)??"",c:$.id})),W.set(Z.gpio,$.id)}let ue=X=>s?`# ${X}`:`// ${X}`;switch($.type){case"in":{let X=D.pull==="pulldown"?s?"Pin.PULL_DOWN":"INPUT_PULLDOWN":D.pull==="float"?s?"None":"INPUT":s?"Pin.PULL_UP":"INPUT_PULLUP",xe=D.active==="high"?1:0;Y.push(s?`${y}_pin = Pin(${Z.gpio}, Pin.IN, ${X}) ${ue(`${Z.ref} \u2192 ${Z.name}`)}`:`pinMode(${Z.gpio}, ${X}); ${ue(`${Z.ref} \u2192 ${Z.name}`)}`),j.push(s?`${ee("v")} = ${y}_pin.value() == ${xe}`:`${ee("v")} = digitalRead(${Z.gpio}) == ${xe?"HIGH":"LOW"};`);break}case"adc":s?Y.push(`${y}_adc = ADC(Pin(${Z.gpio})) ${ue(`${Z.ref} \u2192 ${Z.name}`)}`,...c&&c.mpyAtten?[`${y}_adc.atten(ADC.ATTN_11DB) ${ue(o("0\u20133,3 V-os tartom\xE1ny"))}`]:[]):Y.push(ue(o("anal\xF3g bemenet: {a} \u2192 {b}",{a:Z.ref,b:Z.name}))),j.push(s?`${ee("v")} = ${y}_adc.read_u16() / 65535`:`${ee("v")} = analogRead(${Z.gpio}) / 4095.0f;`);break;case"const":j.push(s?`${ee("v")} = ${fa(Cr(D.value,1))}`:`${ee("v")} = ${fa(Cr(D.value,1))};`);break;case"not":j.push(s?`${ee("v")} = ${v}${p($,"a","bool")}`:`${ee("v")} = ${v}${p($,"a","bool")};`);break;case"and":case"or":case"xor":{let X=p($,"a","bool"),xe=p($,"b","bool"),ft=$.type==="and"?X+_+xe:$.type==="or"?X+w+xe:`${X} != ${xe}`;j.push(s?`${ee("v")} = ${ft}`:`${ee("v")} = ${ft};`);break}case"compare":j.push(s?`${ee("v")} = ${p($,"a","num")} ${D.op==="<"?"<":">"} ${fa(Cr(D.value,.5))}`:`${ee("v")} = ${p($,"a","num")} ${D.op==="<"?"<":">"} ${fa(Cr(D.value,.5))}f;`);break;case"blink":{let X=Math.max(20,Math.round(Cr(D.period,1e3))),xe=Math.round(X*Math.max(0,Math.min(100,Cr(D.duty,50)))/100);j.push(s?`${ee("v")} = t % ${X} < ${xe}`:`${ee("v")} = t % ${X} < ${xe};`);break}case"toggle":Ae.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${p($,"a","bool")}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l"))}`,` ${ee("v")} = not ${ee("v")}`,`${y}_elozo = _be`]:[`{ bool be = ${p($,"a","bool")};`,` if (be && !${y}_elozo) ${ee("v")} = !${ee("v")}; ${ue(o("felfut\xF3 \xE9l"))}`,` ${y}_elozo = be; }`]);break;case"counter":{let X=Math.max(1,Math.round(Cr(D.max,4)));Ae.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`,s?`${y}_db = 0`:`int ${y}_db = 0;`),j.push(...s?[`_be = ${p($,"a","bool")}`,`if _be and not ${y}_elozo:`,` ${y}_db = (${y}_db + 1) % ${X}`,`${y}_elozo = _be`,`if ${p($,"r","bool")}:`,` ${y}_db = 0`,`${ee("n")} = ${y}_db`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}`:"0"}`]:[`{ bool be = ${p($,"a","bool")};`,` if (be && !${y}_elozo) ${y}_db = (${y}_db + 1) % ${X};`,` ${y}_elozo = be;`,` if (${p($,"r","bool")}) ${y}_db = 0; }`,`${ee("n")} = ${y}_db;`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}.0f`:"0"};`]);break}case"delay":{let X=Math.max(0,Math.round(Cr(D.ms,500))),xe=String(D.mode??"filter"),ft=p($,"a","bool");if(xe==="off")Ae.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`),j.push(...s?[`_be = ${ft}`,"if _be:",` ${y}_mikor = t`,`${ee("v")} = _be or t - ${y}_mikor < ${X} ${ue(o("ut\xE1nfut\xE1s"))}`]:[`{ bool be = ${ft};`,` if (be) ${y}_mikor = (long)t;`,` ${ee("v")} = be || (long)t - ${y}_mikor < ${X}; } ${ue(o("ut\xE1nfut\xE1s"))}`]);else if(xe==="pulse")Ae.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`,s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${ft}`,`if _be and not ${y}_elozo and t - ${y}_mikor >= ${X}: ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_mikor = t`,`${y}_elozo = _be`,`${ee("v")} = t - ${y}_mikor < ${X}`]:[`{ bool be = ${ft};`,` if (be && !${y}_elozo && (long)t - ${y}_mikor >= ${X}) ${y}_mikor = (long)t; ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_elozo = be;`,` ${ee("v")} = (long)t - ${y}_mikor < ${X}; }`]);else{Ae.push(s?`${y}_utolso = None`:`int ${y}_utolso = -1;`,s?`${y}_mikor = 0`:`unsigned long ${y}_mikor = 0;`);let nt=xe==="on";j.push(...s?[`_be = ${ft}`,`if _be != ${y}_utolso:`,` ${y}_utolso = _be`,` ${y}_mikor = t`,...nt?[`${ee("v")} = _be and t - ${y}_mikor >= ${X} ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`]:[`if t - ${y}_mikor >= ${X}:`,` ${ee("v")} = _be`]]:[`{ bool be = ${ft};`,` if ((int)be != ${y}_utolso) { ${y}_utolso = be; ${y}_mikor = t; }`,nt?` ${ee("v")} = be && t - ${y}_mikor >= ${X}; } ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`:` if (t - ${y}_mikor >= ${X}) ${ee("v")} = be; }`])}break}case"seq":{let X=Xp(D.preset,D.custom),xe=X.length,ft=D.dir==="back";Ae.push(...s?[`${y}_minta = [${X.map(Ge=>`'${Ge}'`).join(", ")}]`,`${y}_i = 0`,`${y}_elozo = True ${ue(o("indul\xE1skor nem l\xE9p"))}`]:[`const char* ${y}_minta[${xe}] = {${X.map(Ge=>`"${Ge}"`).join(", ")}};`,`int ${y}_i = 0;`,`bool ${y}_elozo = true; ${ue(o("indul\xE1skor nem l\xE9p"))}`]);let nt=p($,"r","bool"),Se=p($,"a","bool"),ct=ft?s?`1 if ${nt} else -1`:`${nt} ? 1 : -1`:s?`-1 if ${nt} else 1`:`${nt} ? -1 : 1`;j.push(...s?[`_be = ${Se}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_i = (${y}_i + (${ct})) % ${xe}`,`${y}_elozo = _be`,...[0,1,2,3].map(Ge=>`${ee("c"+Ge)} = ${y}_minta[${y}_i][${Ge}] == '1'`),`${ee("n")} = ${y}_i`]:[`{ bool be = ${Se};`,` if (be && !${y}_elozo) ${y}_i = (${y}_i + (${ct}) + ${xe}) % ${xe}; ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_elozo = be; }`,...[0,1,2,3].map(Ge=>`${ee("c"+Ge)} = ${y}_minta[${y}_i][${Ge}] == '1';`),`${ee("n")} = ${y}_i;`]);break}case"out":Y.push(s?`${y}_pin = Pin(${Z.gpio}, Pin.OUT) ${ue(`${Z.ref} \u2192 ${Z.name}`)}`:`pinMode(${Z.gpio}, OUTPUT); ${ue(`${Z.ref} \u2192 ${Z.name}`)}`),j.push(s?`${y}_pin.value(1 if ${p($,"a","bool")} else 0)`:`digitalWrite(${Z.gpio}, ${p($,"a","bool")} ? HIGH : LOW);`);break;case"pwm":{let X=Math.max(1,Math.round(Cr(D.freq,1e3)));s?Y.push(`${y}_pwm = PWM(Pin(${Z.gpio})) ${ue(`${Z.ref} \u2192 ${Z.name}`)}`,`${y}_pwm.freq(${X})`):Y.push(`pinMode(${Z.gpio}, OUTPUT); ${ue(`${Z.ref} \u2192 ${Z.name}`)}`,(c?c.pwmFreq:"analogWriteFreq({f});").replace("{pin}",String(Z.gpio)).replace("{f}",String(X)));let xe=h.has($.id+".a")?p($,"a","num"):fa(Math.max(0,Math.min(100,Cr(D.duty,50)))/100);j.push(s?`${y}_pwm.duty_u16(int(max(0, min(1, ${xe})) * 65535))`:`analogWrite(${Z.gpio}, (int)(constrain(${xe}, 0.0f, 1.0f) * 255));`);break}}let we=ue(`${$.id} \xB7 ${o(V.label)}`);k.push([$.id,Y]),P.push([$.id,Ae]),I.push([$.id,j.length?[we,...j]:[]])}let F={},G=[],K=($,V,y)=>{if(!V.length)return;let D=G.length+1;for(let Y of V)G.push(y+Y);$&&(F[$]=F[$]||[]).push([D,G.length])},x=o("Proofboard \u2013 gener\xE1lt program")+(l?` (${l})`:"");if(s){K(null,[`# ${x}`,"# "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),"from machine import Pin, ADC, PWM","import time","","# --- "+o("l\xE1bak")+" ---"],"");for(let[$,V]of k)K($,V,"");K(null,["","# --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,V]of P)K($,V,"");K(null,["","kezdet = time.ticks_ms()","while True:"," t = time.ticks_diff(time.ticks_ms(), kezdet)"],"");for(let[$,V]of I)K($,V," ");K(null,[" time.sleep_ms(20)"],"")}else{K(null,[`// ${x}`,"// "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),...c?[`// ${o("Lap")}: ${c.fqbn}${c.boardUrl?` (${o("alaplapkezel\u0151")}: ${c.boardUrl})`:""}`]:[],"","// --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,V]of P)K($,V,"");K(null,["","void setup() {"," analogReadResolution(12);"],"");for(let[$,V]of k)K($,V," ");K(null,["}","","void loop() {"," unsigned long t = millis();"],"");for(let[$,V]of I)K($,V," ");K(null,[" delay(20);","}"],"")}return{lang:n,file:s?"main.py":"proofboard.ino",code:G.join(`
135
+ In the simulation the LED lights when exactly one button is pressed. In the editor, change the gate to AND and save, and it works that way on the board too.`,"Minden k\xE9zi cs\xEDkv\xE1g\xE1s t\xF6rl\xE9se (az automatikusak maradnak)":"Delete every manual strip cut (automatic ones stay)","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se":"Delete manual cuts","K\xE9zi v\xE1g\xE1sok t\xF6rl\xE9se ({n})":"Delete manual cuts ({n})",cs\u00EDkv\u00E1g\u00E1s:"strip cut","Cs\xEDkv\xE1g\xE1s: furat":"Strip cut: drilled hole","Cs\xEDkv\xE1g\xE1s: r\xE9s":"Strip cut: gap",automatikus:"automatic","Az automatikus cs\xEDkv\xE1g\xE1s tette ide, mert a cs\xEDkon k\xE9t k\xFCl\xF6nb\xF6z\u0151 h\xE1l\xF3zat l\xE1ba van. T\xF6rl\xE9s ut\xE1n ide nem ker\xFCl \xFAjra; ha lehet, a program a k\xE9t l\xE1b k\xF6z\xF6tt m\xE1shol v\xE1g.":"Placed by automatic strip cutting because the strip carries pins of two different nets. Once deleted it will not come back here; if possible, the program cuts elsewhere between the two pins.","{n} k\xE9zi v\xE1g\xE1s t\xF6r\xF6lve. Visszavon\xE1s: Ctrl+Z.":"{n} manual cut deleted. Undo: Ctrl+Z.||{n} manual cuts deleted. Undo: Ctrl+Z.","Automatikus v\xE1g\xE1s t\xF6r\xF6lve: ide nem ker\xFCl \xFAjra; ha kell, a program m\xE1shol v\xE1gja el a cs\xEDkot.":"Automatic cut deleted: it will not come back here; if needed, the program cuts the strip elsewhere.","Az agent dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"The agent is working on the design \u2013 manual editing is paused until it finishes.",Agent:"Agent","Terv \xE1ttekint\xE9se":"Reviewing the design","Alkatr\xE9szek keres\xE9se":"Searching parts","Alkatr\xE9sz adatai":"Part details","Alkatr\xE9sz l\xE1bai":"Part pins",Lerak\u00E1s:"Placing",Param\u00E9terek:"Parameters",\u00DAtvonalak:"Routing","GPIO m\xF3d":"GPIO mode",Panelk\u00E9p:"Board image","Az API-kulcs \xE9rv\xE9nytelen vagy nincs jogosults\xE1ga. Ellen\u0151rizd a be\xE1ll\xEDt\xE1sokban.":"The API key is invalid or not authorised. Check it in the settings.","Az Anthropic-fi\xF3kodon nincs el\xE9g egyenleg. A console.anthropic.com oldalon t\xF6ltheted fel.":"Your Anthropic account has insufficient credit. You can top it up at console.anthropic.com.","T\xFAl sok k\xE9r\xE9s r\xF6vid id\u0151 alatt (sebess\xE9gkorl\xE1t). V\xE1rj egy kicsit, \xE9s pr\xF3b\xE1ld \xFAjra.":"Too many requests in a short time (rate limit). Wait a little and try again.","Az API most t\xFAlterhelt. Pr\xF3b\xE1ld \xFAjra kicsit k\xE9s\u0151bb.":"The API is overloaded right now. Try again a bit later.","Nem siker\xFClt el\xE9rni az API-t (h\xE1l\xF3zati hiba). Ellen\u0151rizd a kapcsolatot.":"Could not reach the API (network error). Check your connection.","Le\xE1ll\xEDtva.":"Stopped.","A feladat t\xFAl sok l\xE9p\xE9sb\u0151l \xE1llt, ez\xE9rt meg\xE1llt. \xCDrd meg, folytassa-e.":"The task took too many steps, so it stopped. Tell it whether to continue.","Hiba az API-h\xEDv\xE1sban: {x}":"API error: {x}","Agent m\xF3d":"Agent mode",Megbesz\u00E9l\u00E9s:"Discuss","Megbesz\xE9l\xE9s: az agent olvassa \xE9s elemzi a tervet, javasol, de nem m\xF3dos\xEDt":"Discuss: the agent reads and analyses the design and makes suggestions, but does not change it",Megval\u00F3s\u00EDt\u00E1s:"Build","Megval\xF3s\xEDt\xE1s: az agent m\xF3dos\xEDthatja a tervet (egy feladat egy l\xE9p\xE9sben visszavonhat\xF3)":"Build: the agent may change the design (each task can be undone in one step)","\xDAj besz\xE9lget\xE9s":"New conversation","API-kulcs \xE9s modell":"API key and model","Anthropic API-kulcs":"Anthropic API key",Modell:"Model","Megjegyz\xE9s ebben a b\xF6ng\xE9sz\u0151ben":"Remember in this browser","A kulcs csak ebben a b\xF6ng\xE9sz\u0151ben marad; a k\xE9r\xE9sek k\xF6zvetlen\xFCl az Anthropic API-hoz mennek, a haszn\xE1lat d\xEDj\xE1t a saj\xE1t fi\xF3kod fizeti. Kulcsot a {x} oldalon kaphatsz.":"The key stays in this browser only; requests go directly to the Anthropic API and usage is billed to your own account. You can get a key at {x}.","Kulcs t\xF6rl\xE9se":"Remove key","Mit \xE9p\xEDts\xFCnk? Pl. \u201ETegy\xE9l egy LED-et el\u0151t\xE9t-ellen\xE1ll\xE1ssal a GP15-re.\u201D":"What shall we build? E.g. \u201CAdd an LED with a series resistor on GP15.\u201D","Mit besz\xE9lj\xFCnk meg? Pl. \u201EMilyen tranzisztorral kapcsoljak egy 12 V-os ventil\xE1tort?\u201D":"What shall we discuss? E.g. \u201CWhich transistor should switch a 12 V fan?\u201D","\xDCzenet az agentnek":"Message to the agent",K\u00FCld\u00E9s:"Send","Dolgozik\u2026":"Working\u2026","\xCDrd le, mit szeretn\xE9l: az agent lerakja \xE9s bek\xF6ti az alkatr\xE9szeket, ellen\u0151rzi a Probl\xE9m\xE1kat, \xE9s szimul\xE1l. Nagyobb v\xE1ltoztat\xE1s el\u0151tt tervet mutat \xE9s r\xE1k\xE9rdez. Minden feladat egy l\xE9p\xE9sben visszavonhat\xF3.":"Describe what you want: the agent places and connects parts, checks the Problems and simulates. Before larger changes it shows a plan and asks. Every task can be undone in one step.","Megbesz\xE9l\xE9s m\xF3d: az agent l\xE1tja a tervet, sz\xE1mol, magyar\xE1z \xE9s javasol, de nem m\xF3dos\xEDt. \xC9p\xEDt\xE9shez v\xE1lts Megval\xF3s\xEDt\xE1s m\xF3dra.":"Discuss mode: the agent sees the design, calculates, explains and suggests, but does not change anything. Switch to Build mode to build.","Az agenthez saj\xE1t Anthropic API-kulcs kell. Add meg fent; a kulcs csak ebben a b\xF6ng\xE9sz\u0151ben t\xE1rol\xF3dik.":"The agent needs your own Anthropic API key. Enter it above; it is stored only in this browser.","{i} be / {o} ki token":"{i} in / {o} out tokens","A v\xE1ltoztat\xE1sok egy l\xE9p\xE9sben visszavonhat\xF3k (Ctrl+Z).":"The changes can be undone in one step (Ctrl+Z).","V\xE1lasz m\xE1sol\xE1sa (markdown)":"Copy reply (markdown)","Nem siker\xFClt m\xE1solni":"Could not copy",Projektjegyzet:"Project notes","Kor\xE1bbi besz\xE9lget\xE9sek":"Earlier conversations","Mit \xE9p\xEDt\xFCnk, \xE9s mire jutottunk? Pl. \u201EMotorvez\xE9rl\u0151 ESP32-C3-mal, 1 cell\xE1s akkur\xF3l; DRV8833 meghajt\xF3; IN1 = GPIO4, IN2 = GPIO5.\u201D":"What are we building and what have we decided? E.g. \u201CMotor controller with ESP32-C3, from a 1-cell battery; DRV8833 driver; IN1 = GPIO4, IN2 = GPIO5.\u201D","A terv r\xE9sze: az agent minden besz\xE9lget\xE9s elej\xE9n megkapja, \xE9s a fontos d\xF6nt\xE9seket ide jegyzi. Te is szerkesztheted.":"Part of the design: the agent receives it at the start of every conversation and records important decisions here. You can edit it too.","Ehhez a projekthez m\xE9g nincs mentett besz\xE9lget\xE9s.":"No saved conversations for this project yet.","{n} \xFCzenet":"{n} message||{n} messages","Besz\xE9lget\xE9s t\xF6rl\xE9se":"Delete conversation","{n} sor":"{n} line||{n} lines",\u00FCres:"empty","A besz\xE9lget\xE9s kor\xE1bbi r\xE9sze \xF6sszefoglalva (az agent az \xF6sszefoglal\xF3t l\xE1tja), hogy a k\xE9r\xE9sek ne dr\xE1guljanak.":"The earlier part of the conversation was summarized (the agent sees the summary) to keep requests from getting expensive.","A t\xF6m\xF6r\xEDt\xE9s \xE9s az agent nem mozd\xEDtja; k\xE9zzel tov\xE1bbra is mozgathat\xF3.":"Compaction and the agent leave it in place; you can still move it by hand.","R\xF6gz\xEDtett hely":"Fixed position","R\xF6gz\xEDt\xE9s be/ki":"Fix position on/off","Ter\xFClet: {x}":"Footprint: {x}","A terv \xE1ltal foglalt ter\xFClet: {r}\xD7{c} lyuk (a panel {a}%-a); az alkatr\xE9szek ennek {f}%-\xE1t t\xF6ltik ki.":"Area used by the design: {r}\xD7{c} holes ({a}% of the board); part bodies fill {f}% of it.","H\xFAzd az ar\xE1ny \xE1ll\xEDt\xE1s\xE1hoz, dupla kattint\xE1s: fele-fele":"Drag to adjust the ratio; double-click: half and half","A panel \xE9s a program ar\xE1nya":"Board / program ratio","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz, kisebb ter\xFCletre, r\xF6videbb bek\xF6t\xE9ssel":"Moves parts closer together: smaller area, shorter wiring","T\xF6m\xF6r\xEDt\xE9s\u2026":"Compact\u2026",T\u00F6m\u00F6r\u00EDt\u00E9s:"Compact layout","Az alkatr\xE9szek k\xF6zelebb ker\xFClnek egym\xE1shoz \xE9s a bek\xF6t\xF6tt l\xE1bakhoz. A panelon az el\u0151n\xE9zet l\xE1tszik, halv\xE1nyan az eredeti helyekkel.":"Parts move closer to each other and to the pins they connect to. The board shows a preview, with the original positions faded.",Szoross\u00E1g:"Tightness","Laza \u2013 k\xF6nny\u0171 forraszt\xE1s":"Loose \u2013 easy soldering","Szoros \u2013 kis panel":"Tight \u2013 small board","A vez\xE9rl\u0151lap a hely\xE9n marad":"Keep the controller board in place","A kezel\u0151szervek (gomb, cs\xFAszka, csatlakoz\xF3) a hely\xFCk\xF6n maradnak":"Keep controls (buttons, sliders, connectors) in place","Elforgat\xE1s is":"Allow rotation","Csak a kijel\xF6ltek":"Selected parts only","Visszavonhat\xF3 (Ctrl+Z).":"Can be undone (Ctrl+Z).","T\xF6m\xF6r\xEDtve: {n} alkatr\xE9sz mozdult. Visszavon\xE1s: Ctrl+Z.":"Compacted: {n} part moved. Undo: Ctrl+Z.||Compacted: {n} parts moved. Undo: Ctrl+Z.",r\u00F6gz\u00EDtett:"fixed",vez\u00E9rl\u0151lap:"controller board",kezel\u0151szerv:"control","k\xE9zzel bek\xF6tve":"wired by hand","panelon k\xEDv\xFCl":"off the board","nincs kijel\xF6lve":"not selected",Most:"Now",Ut\u00E1na:"After","Ter\xFClet (lyuk)":"Area (holes)",Hidak:"Bridges",Vezet\u00E9kek:"Wires",Bek\u00F6tve:"Connected","Mozdul: {x}":"Moves: {x}","Ezekkel a be\xE1ll\xEDt\xE1sokkal nincs jobb elrendez\xE9s.":"No better layout with these settings.","A hely\xE9n marad: {x}":"Stays in place: {x}","A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.":"The layout is sparse: parts fill {f}% of the used area \u2013 compacting could give a smaller board and shorter wiring.","T\xF6m\xF6r\xEDt\xE9s el\u0151n\xE9zete":"Compaction preview",R\u00F6gz\u00EDt\u00E9s:"Fix in place","Claude Desktop vagy Claude Code vez\xE9relheti a tervet, \xE9l\u0151ben (MCP)":"Let Claude Desktop or Claude Code work on the design, live (MCP)","Claude-kapcsolat\u2026":"Claude connection\u2026",Claude:"Claude","Claude-kapcsolat (MCP)":"Claude connection (MCP)","A Claude Desktopb\xF3l vagy a Claude Code-b\xF3l is tervezhetsz: a Claude a saj\xE1t el\u0151fizet\xE9seddel dolgozik (API-kulcs nem kell), a v\xE1ltoz\xE1sok itt jelennek meg \xE9l\u0151ben, \xE9s visszavonhat\xF3k.":"You can also design from Claude Desktop or Claude Code: Claude works with your own subscription (no API key needed), and the changes appear here live and can be undone.","1. A proofboard-mcp szerver hozz\xE1ad\xE1sa (egyszer)":"1. Add the proofboard-mcp server (once)",Kliens:"Client","Claude Desktop":"Claude Desktop","Claude Code":"Claude Code","Be\xE1ll\xEDt\xE1sok \u203A Fejleszt\u0151 \u203A Konfigur\xE1ci\xF3 szerkeszt\xE9se (claude_desktop_config.json), majd a Claude \xFAjraind\xEDt\xE1sa:":"Settings \u203A Developer \u203A Edit Config (claude_desktop_config.json), then restart Claude:","Termin\xE1lban:":"In a terminal:","2. Kapcsol\xF3d\xE1s":"2. Connect",Csatlakoz\u00E1s:"Connect","Csak olvas\xE1s: a Claude l\xE1tja \xE9s ellen\u0151rzi a tervet, de nem m\xF3dos\xEDthatja":"Read only: Claude can see and check the design but cannot change it","Csatlakoz\xE1s automatikusan, amikor megnyitom a Proofboardot":"Connect automatically when I open Proofboard",Halad\u00F3:"Advanced",Port:"Port","A szerveren: --port":"On the server: --port","Am\xEDg a Claude dolgozik, a k\xE9zi szerkeszt\xE9s sz\xFCnetel, \xE9s fent s\xE1v jelzi. Egy-egy munkamenet egy l\xE9p\xE9sben visszavonhat\xF3 (Ctrl+Z).":"While Claude is working, manual editing pauses and a bar at the top shows it. Each working session can be undone in one step (Ctrl+Z).","A Claude m\xF3dos\xEDtotta a tervet. Visszavon\xE1s: Ctrl+Z.":"Claude changed the design. Undo: Ctrl+Z.","A Claude dolgozik a terven \u2013 a k\xE9zi szerkeszt\xE9s addig sz\xFCnetel.":"Claude is working on the design \u2013 manual editing is paused.",Lev\u00E1laszt\u00E1s:"Disconnect","{n} alkatr\xE9sz":"{n} part||{n} parts","Kapcsol\xF3dva: {c}":"Connected: {c}","Kapcsol\xF3d\xE1s\u2026":"Connecting\u2026","V\xE1rakoz\xE1s a szerverre: fut a Claude, \xE9s be van \xE1ll\xEDtva a proofboard-mcp?":"Waiting for the server: is Claude running, with proofboard-mcp set up?","Nincs kapcsolat: {e}":"Not connected: {e}","Nincs kapcsolat.":"Not connected.","Claude dolgozik":"Claude is working","csak olvas\xE1s":"read only","Claude: v\xE1rakoz\xE1s":"Claude: waiting","Claude Desktop-b\u0151v\xEDtm\xE9ny let\xF6lt\xE9se":"Download the Claude Desktop extension","proofboard.mcpb":"proofboard.mcpb","Kattints dupl\xE1n a let\xF6lt\xF6tt f\xE1jlra, \xE9s a Claude Desktopban v\xE1laszd a Telep\xEDt\xE9st (vagy: Be\xE1ll\xEDt\xE1sok \u203A Desktop app \u203A Extensions \u203A Manage, \xE9s h\xFAzd oda a f\xE1jlt). Node.js nem kell hozz\xE1.":"Double-click the downloaded file and choose Install in Claude Desktop (or: Settings \u203A Desktop app \u203A Extensions \u203A Manage, and drop the file there). No Node.js needed.","K\xE9zi be\xE1ll\xEDt\xE1s (claude_desktop_config.json)":"Manual setup (claude_desktop_config.json)","Ehhez Node.js 18 vagy \xFAjabb kell; a f\xE1jl ut\xE1n a Claude-ot \xFAjra kell ind\xEDtani.":"Requires Node.js 18 or newer; restart Claude after editing the file.","Termin\xE1lban (Node.js 18 vagy \xFAjabb kell hozz\xE1):":"In a terminal (requires Node.js 18 or newer):","A szerver csak a saj\xE1t g\xE9peden figyel (127.0.0.1), \xE9s csak a Proofboard oldal\xE1r\xF3l fogad kapcsolatot.":"The server only listens on your own computer (127.0.0.1) and only accepts connections from the Proofboard page.",Alkatr\u00E9szle\u00EDr\u00E1s:"Part definition","Saj\xE1t alkatr\xE9sz ment\xE9se":"Save custom part"};var GC={en:hz},UC="hu";function gz(e,t,r=UC){let n=r==="hu"?e:GC[r][e]??e;if(n.includes("||")){let[o,s]=n.split("||");n=t&&Number(t.n)===1?o:s}return t?n.replace(/\{(\w+)\}/g,(o,s)=>s in t?String(t[s]):o):n}var Gt=(e,t)=>t?e.replace(/\{(\w+)\}/g,(r,n)=>n in t?String(t[n]):r):e,E=e=>e;var h5=new RegExp("\\p{L}","u");var sa=class extends Error{constructor(r,n,o,s){super(r);this.pos=n;this.key=o;this.params=s}};function Tp(e,t=Gt){return e instanceof sa?e.key?t(e.key,e.params):e.message:e instanceof Error?e.message:String(e)}var oa=(e,t,r)=>new sa(Gt(e,r),t,e,r),bz={AND:"&",OR:"|",XOR:"^",NOT:"!"},yz={"&":"&","*":"&","\xB7":"&","|":"|","+":"|","^":"^","!":"!","~":"!","\xAC":"!"};function qC(e){let t=[],r=0;for(;r<e.length;){let n=e[r];if(/\s/.test(n)){r++;continue}if(n==="("||n===")"){t.push({k:n,v:n,pos:r,end:r+1}),r++;continue}if(yz[n]){t.push({k:"op",v:yz[n],pos:r,end:r+1}),r++;continue}let o=/^#?[A-Za-z0-9_]+/.exec(e.slice(r));if(o){let s=o[0],a=s.toUpperCase();s[0]!=="#"&&bz[a]?t.push({k:"op",v:bz[a],pos:r,end:r+s.length}):t.push({k:"id",v:s,pos:r,end:r+s.length}),r+=s.length;continue}throw new sa(`Ismeretlen jel: \u201E${n}\u201D`,r)}return t.push({k:"end",v:"",pos:e.length,end:e.length}),t}function aa(e){let t=qC(e),r=0,n=()=>t[r],o=()=>t[r++],s=(p,m,b)=>{let f=[b()];for(;n().k==="op"&&n().v===m;)o(),f.push(b());return f.length===1?f[0]:{t:p,args:f.flatMap(h=>h.t===p?h.args:[h])}},a=()=>s("or","|",i),i=()=>s("xor","^",l),l=()=>s("and","&",c),c=()=>n().k==="op"&&n().v==="!"?(o(),{t:"not",a:c()}):u(),u=()=>{let p=o();if(p.k==="("){let m=a();if(n().k!==")")throw oa(E("Hi\xE1nyzik a z\xE1r\xF3 z\xE1r\xF3jel"),n().pos);return o(),m}if(p.k==="id")return p.v==="0"||p.v==="1"?{t:"const",v:+p.v}:{t:"var",name:p.v};throw p.k==="end"?oa(E("Hi\xE1nyz\xF3 tag a kifejez\xE9s v\xE9g\xE9n"),p.pos):oa(E("Itt nem \xE1llhat: \u201E{x}\u201D"),p.pos,{x:p.v})};if(t.length===1)throw oa(E("\xDCres kifejez\xE9s"),0);let d=a();if(n().k!=="end")throw oa(E("F\xF6l\xF6sleges r\xE9sz: \u201E{x}\u201D"),n().pos,{x:e.slice(n().pos)});return d}function Vn(e,t=[]){if(e.t==="var")t.includes(e.name)||t.push(e.name);else if(e.t==="not")Vn(e.a,t);else if(e.t!=="const")for(let r of e.args)Vn(r,t);return t}function yr(e,t){switch(e.t){case"var":return t(e.name);case"const":return e.v;case"not":{let r=yr(e.a,t);return r==="X"?"X":r?0:1}case"and":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===0)return 0;o==="X"&&(r=!0)}return r?"X":1}case"or":{let r=!1;for(let n of e.args){let o=yr(n,t);if(o===1)return 1;o==="X"&&(r=!0)}return r?"X":0}case"xor":{let r=0;for(let n of e.args){let o=yr(n,t);if(o==="X")return"X";r^=o}return r}}}function Pl(e,t){if(e.startsWith("#")){let n=e.slice(1);return t.some(o=>o.id===n)?n:null}let r=t.filter(n=>n.name===e);return r.length===1?r[0].id:r.length>1?null:t.some(n=>n.id===e)?e:null}function vz(e,t){let r=t.split(".");if(r.length>1&&e.$opt&&e.$opt[r[0]])return e.$opt[r[0]][r[1]];let n=e;for(let o of r){if(n==null)return;n=n[o]}return n}function zz(e,t){let r=String(e),n=0,o=()=>{for(;r[n]===" ";)n++},s=()=>{o();let l=r[n];if(l==="("){n++;let u=i();return o(),n++,u}if(l==="-")return n++,-s();if(l==="+")return n++,s();let c=/^(\d+\.?\d*(?:e-?\d+)?|\.\d+)/.exec(r.slice(n));if(c)return n+=c[0].length,parseFloat(c[0]);if(c=/^[A-Za-z_$][\w.]*/.exec(r.slice(n)),c){n+=c[0].length;let u=vz(t,c[0]);return typeof u=="number"?u:parseFloat(String(u))||0}throw new Error("Hib\xE1s kifejez\xE9s: "+r)},a=()=>{let l=s();for(;;)if(o(),r[n]==="*")n++,l*=s();else if(r[n]==="/")n++,l/=s();else return l},i=()=>{let l=a();for(;;)if(o(),r[n]==="+")n++,l+=a();else if(r[n]==="-")n++,l-=a();else return l};return i()}function kr(e){let t=+e;if(!isFinite(t))return"";if(t===0)return"0";let r=Math.abs(t);for(let[n,o]of[[1e9,"G"],[1e6,"M"],[1e3,"k"],[1,""],[.001,"m"],[1e-6,"\xB5"],[1e-9,"n"],[1e-12,"p"]])if(r>=n*.99995)return+(t/n).toPrecision(3)+o;return String(+t.toPrecision(3))}var kz={si:kr,fix1:e=>(+e).toFixed(1),fix2:e=>(+e).toFixed(2)};function $l(e,t){return String(e).replace(/\{([^}|]+)(?:\|(\w+))?\}/g,(r,n,o)=>{let s=n.trim(),a=/^[A-Za-z_$][\w.]*$/.test(s)?vz(t,s):zz(s,t);return o&&kz[o]?kz[o](a):a==null?"":String(typeof a=="number"?+a.toPrecision(12):a)})}function ve(e,t){return typeof e=="number"?e:e==null?0:zz($l(e,t),t)}function Io(e,t){let r=t.props||{},n={label:t.label,$opt:{}};for(let o of e.params||[]){if(o.type==="names"){let a=r[o.key]??o.default;n[o.key]=typeof a=="string"?a:"";continue}if(o.type==="span"){let a=Math.round(+(r.dr??o.default[0]))||0,i=Math.round(+(r.dc??o.default[1]))||0;!a&&!i&&([a,i]=o.default),n.dr=a,n.dc=i;continue}let s=r[o.key];if((s==null||s==="")&&(s=o.default),o.options){let a=o.options.find(i=>String(i.v)===String(s))||o.options.find(i=>String(i.v)===String(o.default))||o.options[0];n[o.key]=a.v,n.$opt[o.key]=a}else{let a=Number(s);isFinite(a)||(a=o.default),o.type==="int"&&(a=Math.round(a)),o.min!=null&&(a=Math.max(o.min,a)),o.max!=null&&(a=Math.min(o.max,a)),n[o.key]=a}}return n}function To(e,t){let r={};for(let c of t.params||[])c.type==="span"?(r.dr=c.default[0],r.dc=c.default[1]):r[c.key]=c.default;let n=new WeakMap,o=(c,u)=>{let d=$l(c.id,u),p=t.pinTable&&t.pinTable[d],m=c.name!=null?$l(c.name,u):p?p[0]:d,b={id:d,name:m,lr:ve(c.lr,u),lc:ve(c.lc,u),role:c.role||(p?p[1]:"h")};/^\d+$/.test(d)&&(b.num=+d);let f=c.caps||p&&p[2];return f&&f.length&&(b.caps=[...f]),c.fn&&(b.fn=c.fn),c.vmin!=null&&(b.vmin=ve(c.vmin,u)),c.vmax!=null&&(b.vmax=ve(c.vmax,u)),b},s=c=>{let u=JSON.stringify(c.props||{}),d=n.get(c);if(d&&d.key===u)return d.pins;let p=Io(t,c),m=[];for(let b of t.pins)if(b.repeat!=null){let f=Math.max(0,Math.round(ve(b.repeat,p)));for(let h=0;h<f;h++)m.push(o(b,{...p,i:h}))}else m.push(o(b,p));for(let b of t.params||[])b.type==="names"&&String(p[b.key]||"").split(",").forEach((f,h)=>{let g=f.trim();g&&m[h]&&(m[h].name=g)});return n.set(c,{key:u,pins:m}),m},a=()=>{let c=[];for(let u of t.groups||[])for(let d of u.slice(1))c.push([u[0],d]);return c},i=c=>{let u=t.bounds||{pad:.45},d=Io(t,c);if(u.r&&u.c)return{r0:ve(u.r[0],d),r1:ve(u.r[1],d),c0:ve(u.c[0],d),c1:ve(u.c[1],d)};let p=s(c),m=u.pad??.45,b=p.map(w=>w.lr),f=p.map(w=>w.lc),h=Math.min(...b)-m,g=Math.max(...b)+m,v=Math.min(...f)-m,_=Math.max(...f)+m;if(u.mid!=null){let w=(b[0]+b[b.length-1])/2,k=(f[0]+f[f.length-1])/2;h=Math.min(h,w-u.mid),g=Math.max(g,w+u.mid),v=Math.min(v,k-u.mid),_=Math.max(_,k+u.mid)}return{r0:h,r1:g,c0:v,c1:_}},l=(t.model||[]).some(c=>c.el==="mcu");return{type:e,def:t,name:t.name,fp:t.fp,prefix:t.prefix,cat:t.cat||"Egy\xE9b",props:r,pins:s,internal:a,bounds:i,mcu:l}}function _z(e){let t={};for(let[r,n]of Object.entries(e))t[r]=To(r,n);return t}var KC=new Set(["rect","circle","poly","line","text","axial","radial","link","dial"]),HC=new Set(["value","number","int","select","color","span","names"]),Cp={resistor:["a","b"],diode:["a","k"],source:["p","n"],nmos:["d","g","s"],capacitor:["a","b"],npn:["c","b","e"],motor:["a","b"],servo:["vp","gnd","sig"],logic:["vcc","gnd"],stepper:["com","a","b","c","d"],mcu:["gnd","vsys","v33"]},WC={resistor:["ohm"],diode:["vf","ron","imax"],source:["v","rint"],nmos:["vth","ron","imax"],capacitor:["f","vmax"],npn:["beta","vbe","vcesat","imax"],motor:["ohm","vnom"],servo:["ohm","pmin","pmax"],logic:["vih","vil","rout","imax"],stepper:["ohm","steps","rotor"],mcu:["vreg","vmax","igpio"]},wz=["i2c.sda","i2c.scl","spi.mosi","spi.miso","spi.sck","spi.cs","uart.rx","uart.tx"],Or=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function ia(e,t=Gt){let r=[],n=(p,m)=>r.push({level:"error",path:p,msg:m}),o=(p,m)=>r.push({level:"warn",path:p,msg:m});if(!Or(e))return n("",t("A le\xEDr\xE1s nem objektum.")),r;let s=e;if((typeof s.name!="string"||!s.name.trim())&&n("name",t("Hi\xE1nyzik a n\xE9v.")),(typeof s.prefix!="string"||!/^[A-Za-z][A-Za-z0-9]{0,5}$/.test(s.prefix))&&n("prefix",t("Az el\u0151tag 1\u20136 karakter, bet\u0171vel kezd\u0151dik (pl. U, MOD, J).")),typeof s.fp!="string"&&o("fp",t("Hi\xE1nyzik a l\xE1bk\xE9p r\xF6vid le\xEDr\xE1sa.")),!Array.isArray(s.pins)||!s.pins.length)return n("pins",t("Legal\xE1bb egy l\xE1b kell.")),r;let a=new Set;(s.params||[]).forEach((p,m)=>{let b=`params[${m}]`;if(!Or(p)||typeof p.key!="string"||!/^[A-Za-z_]\w*$/.test(p.key)){n(b+".key",t("\xC9rv\xE9nytelen param\xE9terkulcs."));return}a.has(p.key)&&n(b+".key",t("K\xE9tszer szerepel: {a}",{a:p.key})),a.add(p.key),HC.has(p.type)||n(b+".type",t("Ismeretlen param\xE9tert\xEDpus: {a}",{a:String(p.type)})),(p.type==="select"||p.type==="color")&&(!Array.isArray(p.options)||!p.options.length)&&n(b+".options",t("A v\xE1laszthat\xF3 t\xEDpushoz opci\xF3k kellenek.")),p.default===void 0&&n(b+".default",t("Hi\xE1nyzik az alap\xE9rt\xE9k."))});let i=[];try{let p=To("_check",s),m={id:"_",type:"_check",label:(s.prefix||"X")+"1",r:0,c:0,rot:0,mir:!1,props:{...p.props}};i=p.pins(m),p.bounds(m)}catch(p){return n("pins",t("A l\xE1bak nem \xE9rt\xE9kelhet\u0151k ki: ")+(p instanceof Error?p.message:String(p))),r}s.pins.forEach((p,m)=>{(!Or(p)||typeof p.id!="string"||!p.id.trim())&&n(`pins[${m}].id`,t("Hi\xE1nyzik a l\xE1b azonos\xEDt\xF3ja."))}),i.length||n("pins",t("A l\xE1bak list\xE1ja alap\xE9rt\xE9kekkel \xFCres."));let l=new Set,c=new Map;i.forEach((p,m)=>{(!isFinite(p.lr)||!isFinite(p.lc))&&n(`pins[${m}]`,t("{a}: a helye nem sz\xE1m.",{a:p.id})),(Math.round(p.lr)!==p.lr||Math.round(p.lc)!==p.lc)&&n(`pins[${m}]`,t("{a}: a l\xE1b csak eg\xE9sz lyukpoz\xEDci\xF3n lehet.",{a:p.id})),l.has(p.id)&&n(`pins[${m}].id`,t("K\xE9tszer szerepel a l\xE1b: {a}",{a:p.id})),l.add(p.id);let b=p.lr+":"+p.lc;c.has(b)&&n(`pins[${m}]`,t("{a} \xE9s {b} ugyanabban a lyukban ({c}).",{a:p.id,b:c.get(b)??"",c:b})),c.set(b,p.id);for(let f of["vmin","vmax"])p[f]!=null&&!isFinite(p[f])&&n(`pins[${m}].${f}`,t("{a}: {b} nem sz\xE1m.",{a:p.id,b:f}));p.vmin!=null&&p.vmax!=null&&p.vmin>=p.vmax&&n(`pins[${m}]`,t("{a}: a minim\xE1lis fesz\xFClts\xE9g nem lehet nagyobb a maxim\xE1lisn\xE1l.",{a:p.id})),p.fn!=null&&!wz.includes(p.fn)&&o(`pins[${m}].fn`,t("{a}: ismeretlen buszfunkci\xF3: {b} (lehet: {c})",{a:p.id,b:p.fn,c:wz.join(", ")})),(p.vmin!=null||p.vmax!=null)&&p.role!=="vin"&&o(`pins[${m}]`,t("{a}: fesz\xFClts\xE9gtartom\xE1ny csak t\xE1pbemenetn\xE9l (vin) sz\xE1m\xEDt.",{a:p.id}))}),i.some(p=>p.role==="vin")&&!i.some(p=>p.role==="gnd")&&o("pins",t("Van t\xE1pbemenet, de nincs GND-l\xE1b: a t\xE1pfesz\xFClts\xE9g a panel f\xF6ldj\xE9hez k\xE9pest sz\xE1m\xEDt."));let u=new Map;(s.groups||[]).forEach((p,m)=>{if(!Array.isArray(p)||p.length<2){n(`groups[${m}]`,t("Egy csoportban legal\xE1bb k\xE9t l\xE1b kell."));return}for(let b of p)l.has(b)||n(`groups[${m}]`,t("Nincs ilyen l\xE1b: {a}",{a:b})),u.has(b)&&o(`groups[${m}]`,t("{a} t\xF6bb csoportban is szerepel.",{a:b})),u.set(b,m)});let d=(()=>{try{let p=To("_check",s);return Io(s,{label:"X1",props:{...p.props}})}catch{return{$opt:{}}}})();if((s.model||[]).forEach((p,m)=>{let b=`model[${m}]`;if(!Or(p)||!(p.el in Cp)){n(b+".el",`Ismeretlen modell-elem: ${Or(p)?String(p.el):"?"}`);return}let f=p;for(let g of Cp[p.el])typeof f[g]!="string"||!f[g]?n(`${b}.${g}`,t("Hi\xE1nyzik a(z) {a} kivezet\xE9s l\xE1ba.",{a:g})):l.has(f[g])||n(`${b}.${g}`,t("Nincs ilyen l\xE1b: {a}",{a:f[g]}));p.el==="mcu"&&f.vbus!=null&&(typeof f.vbus!="string"||!l.has(f.vbus))&&n(`${b}.vbus`,t("Nincs ilyen l\xE1b: {a}",{a:String(f.vbus)}));let h=Cp[p.el].map(g=>f[g]).filter(g=>typeof g=="string"&&g);new Set(h).size!==h.length&&n(b,t("Egy elem k\xE9t kivezet\xE9se nem lehet ugyanaz a l\xE1b."));for(let g of WC[p.el])if(f[g]!=null)try{let v=ve(f[g],d);if(!isFinite(v))throw new Error(t("nem sz\xE1m"))}catch{n(`${b}.${g}`,t("{a}: nem \xE9rtelmezhet\u0151 \xE9rt\xE9k.",{a:g}))}if(p.el==="logic"){let g=Array.isArray(f.outs)?f.outs:[],v=Array.isArray(f.regs)?f.regs:[],_=new Set;v.forEach((A,Z)=>{let D=`${b}.regs[${Z}]`,B=String(A.name??"");/^[A-Za-z_][A-Za-z0-9_]*$/.test(B)?_.has(B)?n(D,t("K\xE9tszer szerepel a t\xE1rol\xF3: {a}",{a:B})):i.some(K=>K.name===B)&&n(D,t("{a}: a t\xE1rol\xF3 neve nem lehet egy l\xE1b neve.",{a:B})):n(D,t("T\xE1rol\xF3 neve: bet\u0171vel kezd\u0151d\u0151 azonos\xEDt\xF3 kell (most: \u201E{a}\u201D).",{a:B})),_.add(B)});let w=A=>_.has(A)||!!Pl(A,i),k=(A,Z,D)=>{if(A==null||String(A).trim()===""){D&&n(Z.split("|")[0],t("{a}: hi\xE1nyzik.",{a:Z.split("|")[1]}));return}try{for(let B of Vn(aa(String(A))))w(B)||n(Z.split("|")[0],t("{a}: nincs ilyen l\xE1b vagy t\xE1rol\xF3: {b}",{a:Z.split("|")[1],b:B}))}catch(B){n(Z.split("|")[0],`${Z.split("|")[1]}: ${Tp(B,t)}`)}};v.forEach((A,Z)=>{let D=`${b}.regs[${Z}]`,B=String(A.name??"?");k(A.clk,t("{a}|{b} \xF3rajele",{a:D,b:B}),!0),k(A.d,t("{a}|{b} k\xF6vetkez\u0151 \xE9rt\xE9ke (D)",{a:D,b:B}),!0),k(A.reset,t("{a}|{b} t\xF6rl\xE9se",{a:D,b:B}),!1),k(A.set,t("{a}|{b} be\xE1ll\xEDt\xE1sa",{a:D,b:B}),!1),A.edge!=null&&A.edge!=="rise"&&A.edge!=="fall"&&n(D,t("{a}: az \xE9l rise vagy fall lehet.",{a:B}))}),g.length||n(`${b}.outs`,t("A logik\xE1hoz legal\xE1bb egy kimenet kell."));let P=new Set;g.forEach((A,Z)=>{let D=`${b}.outs[${Z}]`,B=String(A.pin??"");if(!l.has(B)){n(D,t("Nincs ilyen kimeneti l\xE1b: {a}",{a:B||"\u2013"}));return}let K=i.find(x=>x.id===B).name;P.has(B)&&n(D,t("{a}: k\xE9t kifejez\xE9s hajtja ugyanazt a kimenetet.",{a:K})),P.add(B),(B===f.vcc||B===f.gnd)&&n(D,t("{a}: a t\xE1p- vagy GND-l\xE1b nem lehet kimenet.",{a:K}));for(let[x,$]of[["expr",t("kifejez\xE9s")],["oe",t("enged\xE9lyez\xE9s")]]){if(A[x]==null||String(A[x]).trim()===""){x==="expr"&&n(D,t("{a}: hi\xE1nyzik a kifejez\xE9s.",{a:K}));continue}try{let F=aa(String(A[x]));for(let y of Vn(F))w(y)||n(D,t("{a} {b}: nincs ilyen (vagy nem egy\xE9rtelm\u0171) l\xE1b vagy t\xE1rol\xF3: {c}",{a:K,b:$,c:y}))}catch(F){n(D,`${K} ${$}: ${Tp(F,t)}`)}}A.type!=null&&A.type!=="pp"&&A.type!=="od"&&n(D,t("{a}: a kimenet t\xEDpusa pp vagy od lehet.",{a:K}))})}}),s.socket!=null){let p=(m,b)=>(s.params||[]).find(f=>f.key===m&&b.includes(f.type));if(!Or(s.socket))n("socket",t("A csatlakoz\xF3 le\xEDr\xE1sa objektum."));else if(s.socket.count!=null&&!p(s.socket.count,["int"])&&n("socket.count",t("A csatlakoz\xF3 l\xE1bsz\xE1m\xE1hoz eg\xE9sz (int) param\xE9ter kell.")),s.socket.names!=null&&!p(s.socket.names,["names"])&&n("socket.names",t("A csatlakoz\xF3 l\xE1bneveihez names t\xEDpus\xFA param\xE9ter kell.")),s.socket.pins!=null&&(!Array.isArray(s.socket.pins)||!s.socket.pins.length))n("socket.pins",t("A csatlakoz\xF3 l\xE1bainak list\xE1ja nem lehet \xFCres."));else for(let m of s.socket.pins||[])l.has(m)||n("socket.pins",t("A csatlakoz\xF3ban nincs ilyen l\xE1b: {a}",{a:m}))}return(s.controls||[]).forEach((p,m)=>{if(Or(p)&&p.kind==="slider"){let b=(s.params||[]).find(f=>f.key===p.key);b?(!["number","int","value"].includes(b.type)||b.min==null||b.max==null)&&n(`controls[${m}]`,t("A cs\xFAszka param\xE9tere ({a}) sz\xE1m legyen, min \xE9s max \xE9rt\xE9kkel.",{a:b.key})):n(`controls[${m}]`,t("A cs\xFAszk\xE1hoz nincs ilyen param\xE9ter: {a}",{a:String(p.key)}));return}if(!Or(p)||p.kind!=="press"){n(`controls[${m}]`,t("Ismeretlen vez\xE9rl\u0151."));return}(!Array.isArray(p.closes)||!p.closes.length)&&n(`controls[${m}]`,t("Meg kell adni, mely l\xE1bak z\xE1r\xF3dnak \xF6ssze.")),(p.closes||[]).forEach(b=>{for(let f of b)l.has(f)||n(`controls[${m}]`,t("Nincs ilyen l\xE1b: {a}",{a:f}))})}),(s.graphics||[]).forEach((p,m)=>{(!Or(p)||!KC.has(p.shape))&&n(`graphics[${m}].shape`,`Ismeretlen rajzelem: ${Or(p)?String(p.shape):"?"}`)}),s.mount!=null&&s.mount!=="board"&&s.mount!=="off"&&n("mount",t("Ismeretlen szerel\xE9s: {a} (board vagy off).",{a:String(s.mount)})),(s.graphics||[]).some(p=>(p.layer||"body")==="body")||o("graphics",t("Nincs test (body r\xE9teg): az alkatr\xE9sz csak l\xE1bakk\xE9nt l\xE1tszik.")),r}var la=e=>e.some(t=>t.level==="error");function xz(e,t){let r="c_"+(e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").slice(0,24)||"alkatresz"),n=r,o=2;for(;t(n);)n=`${r}_${o++}`;return n}var Sz=e=>e.normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();function JC(e,t){let r=Array.isArray(e.pins)?e.pins:[],n=[e.name,e.fp,e.cat||"",e.prefix,...t?[t(e.name),t(e.fp),e.cat?t(e.cat):""]:[],...r.flatMap(o=>[o.name!=null?String(o.name):"",o.role||"",o.fn||"",...o.caps||[]]),...Object.values(e.pinTable||{}).flatMap(o=>[o[0],o[1],...o[2]||[]]),...(e.model||[]).map(o=>o.el)];return Sz(n.filter(Boolean).join(" "))}function Pz(e,t,r){let n=Sz(t).split(/\s+/).filter(Boolean);if(!n.length)return!0;let o=JC(e,r);return n.every(s=>o.includes(s))}var $z={1:"GP0",2:"GP1",3:"GND",4:"GP2",5:"GP3",6:"GP4",7:"GP5",8:"GND",9:"GP6",10:"GP7",11:"GP8",12:"GP9",13:"GND",14:"GP10",15:"GP11",16:"GP12",17:"GP13",18:"GND",19:"GP14",20:"GP15",21:"GP16",22:"GP17",23:"GND",24:"GP18",25:"GP19",26:"GP20",27:"GP21",28:"GND",29:"GP22",30:"RUN",31:"GP26",32:"GP27",33:"AGND",34:"GP28",35:"ADC_VREF",36:"3V3",37:"3V3_EN",38:"GND",39:"VSYS",40:"VBUS"},Ez=e=>e==="GND"||e==="AGND"?"gnd":e==="3V3"?"p33":e==="VBUS"||e==="VSYS"?"pwr":/^GP\d/.test(e)?"gpio":"misc",YC={red:{vf:2,c:"#e03131",l:"piros"},orange:{vf:2,c:"#fd7e14",l:"narancs"},yellow:{vf:2.1,c:"#f2b705",l:"s\xE1rga"},green:{vf:2.2,c:"#2f9e44",l:"z\xF6ld"},blue:{vf:3,c:"#1c7ed6",l:"k\xE9k"},violet:{vf:3.2,c:"#9c36b5",l:"lila"},white:{vf:3,c:"#f1f3f5",l:"feh\xE9r"}},XC=new Set(["GP26","GP27","GP28"]),Rz={};function QC(e){let t=[`i2c${e>>1&1}.${e&1?"scl":"sda"}`,`spi${e>>3&1}.${["miso","cs","sck","mosi"][e&3]}`];return(e&3)<2&&t.push(`uart${(e>>2^e>>3)&1}.${e&1?"rx":"tx"}`),t.push(`pwm${e>>1&7}.${e&1?"b":"a"}`),t}for(let e in $z){let t=$z[e],r=/^GP(\d+)$/.exec(t),n=[...XC.has(t)?["adc"]:[],...r?QC(+r[1]):[]];Rz[e]=n.length?[t,Ez(t),n]:[t,Ez(t)]}var Az=Array.from({length:13},(e,t)=>{let r=Math.PI*t/12;return[+(.35-1.25*Math.sin(r)).toFixed(3),+(1+1.45*Math.cos(r)).toFixed(3)]});function El(e,t,r,n,o,s,a,i=[]){let l=e/2;return{name:t,fp:r,prefix:"U",cat:"Logika",pins:n.map((c,u)=>{let d=u+1,p=d<=l?3:0,m=d<=l?d-1:e-d,b=o(c);return b==="vin"?{id:String(d),name:c,lr:p,lc:m,role:b,vmin:2,vmax:6}:{id:String(d),name:c,lr:p,lc:m,role:b}}),bounds:{r:[-.4,3.4],c:[-.6,l-.4]},graphics:[{shape:"rect",layer:"body",r:[.45,2.55],c:[-.6,l-.4],fill:"#202124",stroke:"#000",width:1.2,xray:{stroke:"#333"}},{shape:"circle",layer:"detail",at:[1.5,-.6],rad:.32,fill:"#3c3f44"},{shape:"circle",layer:"detail",at:[2.15,-.1],rad:.1,fill:"#9aa0a6"},{shape:"text",layer:"detail",at:[1.5,(l-1)/2],text:"{label} \xB7 "+t.split(" ")[0],size:.42,min:7,color:"#c8ccd0",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#dee2e6",out:"#ffd8a8",vin:"#ffc9d6",gnd:"#adb5bd"}},model:[{el:"logic",vcc:String(n.indexOf("VCC")+1),gnd:String(n.indexOf("GND")+1),outs:s.map(([c,u,d])=>({pin:String(n.indexOf(c)+1),expr:u,...d?{oe:d}:{}})),...i.length?{regs:i}:{},rout:50}],meta:{help:a}}}var Al=e=>t=>t==="VCC"?"vin":t==="GND"?"gnd":e.includes(t)?"out":"sig",eN=["1A","1B","1Y","2A","2B","2Y","GND","3Y","3A","3B","4Y","4A","4B","VCC"],Oz=["1Y","2Y","3Y","4Y"],tN=["1E","1A0","1A1","1Y0","1Y1","1Y2","1Y3","GND","2Y3","2Y2","2Y1","2Y0","2A1","2A0","2E","VCC"],rN=["1Y0","1Y1","1Y2","1Y3","2Y0","2Y1","2Y2","2Y3"],nN=["1CLR","1D","1CLK","1PRE","1Q","1Qn","GND","2Qn","2Q","2PRE","2CLK","2D","2CLR","VCC"],oN=["1Q","1Qn","2Q","2Qn"],Iz=e=>({name:"F"+e,clk:`${e}CLK`,d:`${e}D`,reset:`!${e}CLR`,set:`!${e}PRE`}),sN=["QB","QC","QD","QE","QF","QG","QH","GND","QHs","SRCLR","SRCLK","RCLK","OE","SER","QA","VCC"],aN=["QA","QB","QC","QD","QE","QF","QG","QH","QHs"],iN=[...[0,1,2,3,4,5,6,7].map(e=>({name:"S"+e,clk:"SRCLK",d:e?"S"+(e-1):"SER",reset:"!SRCLR"})),...[0,1,2,3,4,5,6,7].map(e=>({name:"R"+e,clk:"RCLK",d:"S"+e}))],Tz=e=>[0,1,2,3].map(t=>[`${e}Y${t}`,`!(!${e}E & ${t&2?"":"!"}${e}A1 & ${t&1?"":"!"}${e}A0)`]),_e=(e,...t)=>["GPIO"+e,"GPIO"+e,"gpio",t],Cz=(e,t)=>[...e.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:0,lc:a,...s&&s.length?{caps:[...s]}:{}})),...t.map(([r,n,o,s],a)=>({id:r,name:n,role:o,lr:"{span}",lc:a,...s&&s.length?{caps:[...s]}:{}}))],jz=[["VIN","VIN","pwr"],["GND","GND","gnd"],_e(13,"adc2","spi2.mosi"),_e(12,"adc2","strap","spi2.miso"),_e(14,"adc2","spi2.sck"),_e(27,"adc2"),_e(26,"adc2","dac"),_e(25,"adc2","dac"),_e(33,"adc"),_e(32,"adc"),_e(35,"adc","in","nopull"),_e(34,"adc","in","nopull"),_e(39,"adc","in","nopull"),_e(36,"adc","in","nopull"),["EN","EN","misc"]],Mz=[["3V3","3V3","p33"],["GND2","GND","gnd"],_e(15,"adc2","strap","spi2.cs"),_e(2,"adc2","strap","led"),_e(4,"adc2"),_e(16,"uart2.rx"),_e(17,"uart2.tx"),_e(5,"strap","spi3.cs"),_e(18,"spi3.sck"),_e(19,"spi3.miso"),_e(21,"i2c0.sda"),_e(3,"uart0","uart0.rx"),_e(1,"uart0","uart0.tx"),_e(22,"i2c0.scl"),_e(23,"spi3.mosi")],Np={GPIO36:"VP",GPIO39:"VN",GPIO1:"TX0",GPIO3:"RX0",GPIO16:"RX2",GPIO17:"TX2"};for(let[,e]of[...jz,...Mz])/^GPIO\d+$/.test(e)&&!(e in Np)&&(Np[e]="D"+e.slice(4));var Dz=[["5V","5V","pwr"],["GND","GND","gnd"],["3V3","3V3","p33"],_e(4,"adc","spi2.sck"),_e(3,"adc"),_e(2,"adc","strap"),_e(1,"adc"),_e(0,"adc")],Lz=[_e(5,"adc2","spi2.miso"),_e(6,"spi2.mosi"),_e(7,"spi2.cs"),_e(8,"strap","led","i2c0.sda"),_e(9,"strap","i2c0.scl"),_e(10),_e(20,"uart0","uart0.rx"),_e(21,"uart0","uart0.tx")],Vz={};for(let[,e]of[...Dz,...Lz])/^GPIO\d+$/.test(e)&&(Vz[e]=e.slice(4));var Nz="A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Vonalz\xF3val m\xE9rd le a saj\xE1todat: a lapok gy\xE1rt\xF3nk\xE9nt elt\xE9rhetnek.",Fz="https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip",lN={fqbn:"rp2040:rp2040:rpipicow",boardUrl:"https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json",pwmFreq:"analogWriteFreq({f});",pio:{platform:"https://github.com/maxgerhardt/platform-raspberrypi.git",board:"rpipicow",extra:["board_build.core = earlephilhower"]}},cN={fqbn:"esp32:esp32:esp32doit-devkit-v1",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Fz,board:"esp32doit-devkit-v1"},mpyAtten:!0},uN={fqbn:"esp32:esp32:esp32c3",boardUrl:"https://espressif.github.io/arduino-esp32/package_esp32_index.json",pwmFreq:"analogWriteFrequency({pin}, {f});",pio:{platform:Fz,board:"esp32-c3-devkitm-1",extra:["build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1"]},mpyAtten:!0},Ir={pico:{name:"Raspberry Pi Pico W",fp:"2\xD720 l\xE1b, sort\xE1v 6",prefix:"PICO",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"A k\xE9t l\xE1bsor t\xE1vols\xE1ga lyukban (0 \u2192 {span}). Adatlap szerint 17,78 mm = 7 oszt\xE1s, de t\xFCskesorral, foglalatban vagy adapterlapon m\xE1s is lehet (pl. 6 vagy 8). Vonalz\xF3val m\xE9rd le a saj\xE1todat."}],pinTable:Rz,pins:[{repeat:20,id:"{40-i}",lr:0,lc:"{i}"},{repeat:20,id:"{1+i}",lr:"{span}",lc:"{i}"}],groups:[["3","8","13","18","23","28","33","38"]],bounds:{r:[-.75,"{span}+0.75"],c:[-1.45,19.6]},graphics:[{shape:"rect",layer:"body",r:[-.75,"{span}+0.75"],c:[-.6,19.6],fill:"#1f6b4a",stroke:"#134a33",width:1.5,xray:{stroke:"#1f6b4a"}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[-1.45,-.15],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.3","{span}/2+1.3"],c:[7.6,10.2],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[.9,"{span}-0.9"],c:[13.4,18.4],fill:"#c3c8cd"},{shape:"text",layer:"detail",at:["{span}/2",4.6],text:"Pico W",size:.6,min:8,color:"#e8f3ec"},{shape:"text",layer:"detail",at:["{span}/2",11.6],text:"{label}",size:.42,color:"#bfe0cd"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9.5],text:"{label} \xB7 Pico W",size:.55,min:8,color:"#1f6b4a"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:{ADC_VREF:"VREF"}},meta:{target:lN},model:[{el:"mcu",gnd:"38",vbus:"40",vsys:"39",v33:"36",vreg:1.8,vmax:5.5,igpio:.012}]},esp32:{name:"ESP32 DevKit V1 (DOIT, 30 l\xE1b)",fp:"2\xD715 l\xE1b, sort\xE1v 10",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:10,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 25,4 mm = 10 oszt\xE1s (a lap 28 mm sz\xE9les). "+Nz}],pins:Cz(jz,Mz),groups:[["GND","GND2"]],bounds:{r:[-.65,"{span}+0.65"],c:[-1.7,19.5]},graphics:[{shape:"rect",layer:"body",r:[-.65,"{span}+0.65"],c:[-1.2,19.5],fill:"#16365c",stroke:"#0c2038",width:1.5,xray:{stroke:"#16365c"}},{shape:"rect",layer:"detail",r:["{span}/2-0.9","{span}/2+0.9"],c:[-1.7,.4],fill:"#b5bcc3",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[.9,1.9],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:["{span}-1.9","{span}-0.9"],c:[1.2,2.4],fill:"#2b2f33"},{shape:"rect",layer:"detail",r:[.7,"{span}-0.7"],c:[9.6,19.3],fill:"#262a2e"},{shape:"rect",layer:"detail",r:[1,"{span}-1.0"],c:[9.9,16.6],fill:"#c9ced3",stroke:"#9aa1a8"},{shape:"text",layer:"detail",at:["{span}/2-0.6",13.2],text:"ESP32",size:.62,min:8,color:"#343a40"},{shape:"text",layer:"detail",at:["{span}/2+0.6",13.2],text:"WROOM-32",size:.36,min:6,color:"#495057"},{shape:"text",layer:"detail",at:["{span}/2",5.8],text:"{label}",size:.42,color:"#c5d6ea"},{shape:"text",layer:"xray",at:["{span}/2",-1],text:"USB",size:.4,color:"#4d5a52"},{shape:"text",layer:"xray",at:["{span}/2",9],text:"{label} \xB7 ESP32",size:.55,min:8,color:"#16365c"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Np},meta:{target:cN,help:"ESP32-WROOM-32 modul USB-soros \xE1talak\xEDt\xF3val. T\xE1p: USB (di\xF3d\xE1n \xE1t a VIN-re) vagy VIN 5\u201312 V (AMS1117 stabiliz\xE1tor, legal\xE1bb kb. 4,2 V kell), vagy k\xF6zvetlen\xFCl 3,3 V a 3V3 l\xE1bon. A GPIO34\u201339 csak bemenet, bels\u0151 felh\xFAz\xE1s n\xE9lk\xFCl; az ADC2-l\xE1bak bekapcsolt WiFi mellett nem m\xE9rnek.",pinNotes:{GPIO12:"ind\xEDt\xE1si (strapping) l\xE1b (MTDI): ha bekapcsol\xE1skor magas, a modul 1,8 V-os flasht felt\xE9telez, \xE9s nem indul el. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO15:"ind\xEDt\xE1si (strapping) l\xE1b (MTDO): bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van: a felt\xF6lt\xE9shez bekapcsol\xE1skor alacsony vagy lebeg\u0151 kell legyen. Ne tegy\xE9l r\xE1 felh\xFAz\xE1st.",GPIO5:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie (bels\u0151 felh\xFAz\xE1s). Ne h\xFAzd le.",GPIO1:"TX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.",GPIO3:"RX0: a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja, felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t."}},model:[{el:"mcu",gnd:"GND",vsys:"VIN",v33:"3V3",vreg:4.2,vmax:12,igpio:.02,mux:"matrix"}]},esp32c3:{name:"ESP32-C3 SuperMini",fp:"2\xD78 l\xE1b, sort\xE1v 6",prefix:"ESP",cat:"Vez\xE9rl\u0151",params:[{key:"span",label:"Sort\xE1v (oszt\xE1s)",type:"int",default:6,min:3,max:16,step:1,geo:!0,help:"\xC1ltal\xE1ban 15,24 mm = 6 oszt\xE1s (a lap 18 mm sz\xE9les). "+Nz}],pins:Cz(Dz,Lz),bounds:{r:[-.6,"{span}+0.6"],c:[-1.1,8.2]},graphics:[{shape:"rect",layer:"body",r:[-.6,"{span}+0.6"],c:[-.7,8.2],fill:"#1d1f22",stroke:"#000",width:1.5,xray:{stroke:"#1d1f22"}},{shape:"rect",layer:"detail",r:["{span}/2-1.25","{span}/2+1.25"],c:[-1.1,.9],fill:"#c3c8cd",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:["{span}/2-1.1","{span}/2+1.1"],c:[2.9,5.1],fill:"#3a3d41",stroke:"#55595e"},{shape:"rect",layer:"detail",r:["{span}/2-0.5","{span}/2+0.5"],c:[6.6,7.8],fill:"#e9ecef"},{shape:"circle",layer:"detail",at:["{span}/2+1.7",1.9],rad:.28,fill:"#4dabf7"},{shape:"text",layer:"detail",at:["{span}/2",4],text:"C3",size:.5,min:7,color:"#ced4da"},{shape:"text",layer:"label",at:["{span}+1.3",3.5],text:"{label} \xB7 C3 SuperMini",size:.42},{shape:"text",layer:"xray",at:["{span}/2",-1.5],text:"USB",size:.4,color:"#4d5a52"}],pinLabels:{mode:"name",inward:!0,onBody:!0,minP:13,rename:Vz},meta:{target:uN,help:"ESP32-C3 (RISC-V, WiFi, BLE), nat\xEDv USB-C. T\xE1p: USB vagy az 5V l\xE1b (kb. 3,5\u20136 V, kis fesz\xFClts\xE9ges\xE9s\u0171 stabiliz\xE1tor), vagy 3,3 V a 3V3 l\xE1bon. Az 5V l\xE1b k\xF6zvetlen\xFCl az USB-hez csatlakozik, nincs di\xF3da: akkut ne k\xF6ss r\xE1 USB mellett. ADC: GPIO0\u20134 (ADC1), GPIO5 (ADC2).",pinNotes:{GPIO2:"ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le gombbal vagy terhel\xE9ssel.",GPIO8:"ind\xEDt\xE1si (strapping) l\xE1b, \xE9s a be\xE9p\xEDtett k\xE9k LED is ezen van (alacsony szintre vil\xE1g\xEDt): bekapcsol\xE1skor magasnak kell lennie. Ne h\xFAzd le.",GPIO9:"a lap BOOT gombja is ezen van (lenyomva a f\xF6ldre h\xFAz), \xE9s ind\xEDt\xE1si l\xE1b: ha bekapcsol\xE1skor alacsony, a lap let\xF6lt\u0151 m\xF3dba ker\xFCl. Gombnak j\xF3, ha indul\xE1skor nincs lenyomva.",GPIO20:"RX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja.",GPIO21:"TX (UART0): ha a soros ki\xEDr\xE1s nem a nat\xEDv USB-n megy, a soros port haszn\xE1lja."}},model:[{el:"mcu",gnd:"GND",vbus:"5V",vsys:"5V",v33:"3V3",vreg:3.5,vmax:6,igpio:.02,mux:"matrix"}]},button:{name:"Nyom\xF3gomb 12 mm",fp:"A 0:0, 0:5 \xB7 B 2:0, 2:5",prefix:"S",cat:"Bemenet",pins:[{id:"A1",lr:0,lc:0,role:"A"},{id:"A2",lr:0,lc:5,role:"A"},{id:"B1",lr:2,lc:0,role:"B"},{id:"B2",lr:2,lc:5,role:"B"}],groups:[["A1","A2"],["B1","B2"]],bounds:{r:[-1.36,3.36],c:[-.3,5.3]},controls:[{kind:"press",closes:[["A1","B1"]]}],graphics:[{shape:"line",layer:"lead",from:[0,0],to:[0,.7],width:.14},{shape:"line",layer:"lead",from:[0,5],to:[0,4.3],width:.14},{shape:"line",layer:"lead",from:[2,0],to:[2,.7],width:.14},{shape:"line",layer:"lead",from:[2,5],to:[2,4.3],width:.14},{shape:"rect",layer:"body",r:[-1.36,3.36],c:[.14,4.86],fill:"#2a2a2a",stroke:"#111",width:1,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[-1,3],c:[.5,4.5],fill:"#9aa3ab"},{shape:"circle",layer:"detail",at:[1,2.5],rad:1.35,fill:"#141414",pressed:{fill:"#4a4a4a",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.4)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:[1,2.5],text:"{label}",size:.62,min:8,color:"#f1f3f5",pressed:{color:"#ffd8bf"},xray:{color:"#1d231f",pressed:{color:"#c2410c"}}}],pinLabels:{mode:"role",off:.62,colors:{A:"#1d4ed8",B:"#b45309"}}},res:{name:"Ellen\xE1ll\xE1s",fp:"0:0 \u2013 0:4 (\xE1ll\xEDthat\xF3)",prefix:"R",cat:"Passz\xEDv",params:[{key:"ohm",label:"\xC9rt\xE9k",type:"value",unit:"\u03A9",default:1e3,min:.01,max:1e9,series:"E12"},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,4],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4. Nagyobb t\xE1vols\xE1ggal a l\xE1b maga is \xE1thidalhat."}],pins:[{id:"1",lr:0,lc:0,role:"r"},{id:"2",lr:"{dr}",lc:"{dc}",role:"r"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"1",to:"2",len:2.3,w:.76,fill:"#d9bf8c",stroke:"#8a6d3b",bands:"{ohm}"},{shape:"text",layer:"label",between:["1","2"],perp:.95,text:"{label} {ohm|si}\u03A9",size:.42}],model:[{el:"resistor",a:"1",b:"2",ohm:"{ohm}"}]},jumper:{name:"\xC1tk\xF6t\u0151 huzal (0 \u03A9)",fp:"0:0 \u2013 0:2 (\xE1ll\xEDthat\xF3)",prefix:"JP",cat:"Passz\xEDv",params:[{key:"span",label:"2. v\xE9g helye",type:"span",default:[0,2],help:"Egyenes dr\xF3t\xE1tk\xF6t\xE9s az alkatr\xE9szoldalon: a k\xE9t v\xE9ge egy h\xE1l\xF3zat."}],pins:[{id:"1",lr:0,lc:0,role:"j"},{id:"2",lr:"{dr}",lc:"{dc}",role:"j"}],groups:[["1","2"]],bounds:{pad:.4},graphics:[{shape:"link",layer:"lead",from:"1",to:"2",width:.22,stroke:"#b8bec4",edge:"#5f676e"},{shape:"text",layer:"label",between:["1","2"],perp:.75,text:"{label}",size:.38}]},led:{name:"LED 3 mm",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:1 (\xE1ll\xEDthat\xF3)",prefix:"LED",cat:"F\xE9lvezet\u0151",params:[{key:"color",label:"Sz\xEDn",type:"color",default:"red",options:Object.entries(YC).map(([e,t])=>({v:e,label:t.l,hex:t.c,vf:t.vf})),help:"{color.label}, nyit\xF3fesz\xFClts\xE9g {color.vf} V"},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,1],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"A",name:"an\xF3d +",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d \u2212",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.3,mid:.7},graphics:[{shape:"radial",layer:"body",from:"A",to:"K",rad:.62,fill:"{color.hex}",glow:!0},{shape:"text",layer:"label",between:["A","K"],perp:1.15,text:"{label}",size:.42}],pinLabels:{mode:"sign",off:.72,plus:["an"]},model:[{el:"diode",a:"A",k:"K",vf:"{color.vf}",ron:15,light:!0}]},diode:{name:"Di\xF3da",fp:"an\xF3d 0:0 \xB7 kat\xF3d 0:4 (\xE1ll\xEDthat\xF3)",prefix:"D",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"1N5817",options:[{v:"1N5817",label:"1N5817 Schottky (0,3 V, 1 A)",vf:.3,ron:.15,imax:1},{v:"1N4148",label:"1N4148 jeldi\xF3da (0,7 V, 0,2 A)",vf:.7,ron:2,imax:.2},{v:"1N4007",label:"1N4007 egyenir\xE1ny\xEDt\xF3 (0,7 V, 1 A)",vf:.7,ron:.3,imax:1}],help:"Csak an\xF3dt\xF3l kat\xF3d fel\xE9 vezet, {kind.vf} V nyit\xF3fesz\xFClts\xE9g felett. A cs\xEDk a kat\xF3d oldal\xE1n van."},{key:"span",label:"Kat\xF3d helye",type:"span",default:[0,4],help:"Az an\xF3dhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:4."}],pins:[{id:"A",name:"an\xF3d",lr:0,lc:0,role:"an"},{id:"K",name:"kat\xF3d",lr:"{dr}",lc:"{dc}",role:"ka"}],bounds:{pad:.45},graphics:[{shape:"axial",layer:"body",from:"A",to:"K",len:1.7,w:.62,fill:"#262626",stroke:"#000",stripe:{at:.8,color:"#d0d4d8"}},{shape:"text",layer:"label",between:["A","K"],perp:-.95,text:"{label} {kind}",size:.36}],pinLabels:{mode:"sign",off:.72,plus:["an"],plusText:"A",minusText:"K"},model:[{el:"diode",a:"A",k:"K",vf:"{kind.vf}",ron:"{kind.ron}",imax:"{kind.imax}"}]},nmos:{name:"N-MOSFET (2N7000)",fp:"S 0:0 \xB7 G 0:1 \xB7 D 0:2 (TO-92)",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"vth",label:"K\xFCsz\xF6b (Vth)",type:"value",unit:"V",default:2.1,min:.2,max:10,step:.1,help:"A D\u2013S akkor vezet, ha a gate a source-hoz k\xE9pest enn\xE9l magasabb."},{key:"ron",label:"Nyitott ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:5,min:.001,max:1e4,series:"E12"},{key:"imax",label:"Max. \xE1ram",type:"value",unit:"A",default:.2,min:.001,max:200,series:"E12"}],pins:[{id:"S",name:"S",lr:0,lc:0,role:"s"},{id:"G",name:"G",lr:0,lc:1,role:"g"},{id:"D",name:"D",lr:0,lc:2,role:"d"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Az,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label}",size:.4}],pinLabels:{mode:"name",off:.78,colors:{s:"#1f2328",g:"#1d4ed8",d:"#5c666e"}},model:[{el:"nmos",d:"D",g:"G",s:"S",vth:"{vth}",ron:"{ron}",imax:"{imax}"}]},cap:{name:"Kondenz\xE1tor (ker\xE1mia)",fp:"0:0 \u2013 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-7,min:1e-12,max:1,series:"E12",help:"Egyen\xE1ramon szakad\xE1s. A szimul\xE1ci\xF3 a fesz\xFClts\xE9get \xE9s az id\u0151\xE1lland\xF3t (\u03C4 = R\xB7C) mutatja."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:50,min:1,max:1e3,step:1},{key:"span",label:"2. l\xE1b helye",type:"span",default:[0,1],help:"Az els\u0151 l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"1",lr:0,lc:0,role:"c"},{id:"2",lr:"{dr}",lc:"{dc}",role:"c"}],bounds:{pad:.3,mid:.6},graphics:[{shape:"radial",layer:"body",from:"1",to:"2",rad:.55,fill:"#d9902f"},{shape:"text",layer:"label",between:["1","2"],perp:1.05,text:"{label} {f|si}F",size:.4}],model:[{el:"capacitor",a:"1",b:"2",f:"{f}",vmax:"{volt}"}]},elko:{name:"Elektrolit kondenz\xE1tor",fp:"+ 0:0 \xB7 \u2212 0:1 (\xE1ll\xEDthat\xF3)",prefix:"C",cat:"Passz\xEDv",params:[{key:"f",label:"Kapacit\xE1s",type:"value",unit:"F",default:1e-5,min:1e-7,max:1,series:"E12",help:"Polarit\xE1sos: a + l\xE1b ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre. A cs\xEDk a \u2212 l\xE1b oldal\xE1n van."},{key:"volt",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:16,min:1,max:500,step:1},{key:"span",label:"\u2212 l\xE1b helye",type:"span",default:[0,1],help:"A + l\xE1bhoz k\xE9pest (forgat\xE1s el\u0151tt). Alap: 0:1."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"cp"},{id:"-",name:"\u2212",lr:"{dr}",lc:"{dc}",role:"cn"}],bounds:{pad:.45,mid:1},graphics:[{shape:"radial",layer:"body",from:"+",to:"-",rad:.95,fill:"#1d3f8f"},{shape:"text",layer:"label",between:["+","-"],perp:1.5,text:"{label} {f|si}F {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["cp"]},model:[{el:"capacitor",a:"+",b:"-",f:"{f}",vmax:"{volt}",polar:!0}]},npn:{name:"NPN tranzisztor",fp:"TO-92, l\xE1bsorrend t\xEDpus szerint",prefix:"Q",cat:"F\xE9lvezet\u0151",params:[{key:"kind",label:"T\xEDpus",type:"select",default:"BC547",geo:!0,options:[{v:"BC547",label:"BC547 (C-B-E, 100 mA)",beta:200,imax:.1,pc:0,pb:1,pe:2},{v:"2N3904",label:"2N3904 (E-B-C, 200 mA)",beta:150,imax:.2,pc:2,pb:1,pe:0},{v:"2N2222",label:"2N2222A (E-B-C, 600 mA)",beta:150,imax:.6,pc:2,pb:1,pe:0}],help:"A C\u2013E akkor vezet, ha a b\xE1zison \xE1ram folyik (Ube \u2248 0,65 V). Ic legfeljebb \u03B2\xB7Ib ({kind.beta}\xB7Ib); kapcsol\xF3k\xE9nt kb. t\xEDzszer annyi b\xE1zis\xE1ram kell, mint Ic/\u03B2."}],pins:[{id:"C",name:"C",lr:0,lc:"{kind.pc}",role:"col"},{id:"B",name:"B",lr:0,lc:"{kind.pb}",role:"base"},{id:"E",name:"E",lr:0,lc:"{kind.pe}",role:"emit"}],bounds:{r:[-.95,.5],c:[-.5,2.5]},graphics:[{shape:"poly",layer:"body",pts:Az,fill:"#1d1d1d",stroke:"#000",width:1,xray:{stroke:"#333"}},{shape:"text",layer:"label",at:[-1.35,1],text:"{label} {kind}",size:.36}],pinLabels:{mode:"name",off:.78,colors:{col:"#5c666e",base:"#1d4ed8",emit:"#1f2328"}},model:[{el:"npn",c:"C",b:"B",e:"E",beta:"{kind.beta}",vbe:.65,vcesat:.1,imax:"{kind.imax}"}]},hc00:El(14,"74HC00 n\xE9gy NAND kapu","DIP-14 \xB7 4\xD7 NAND",eN,Al(Oz),Oz.map(e=>[e,`!(${e[0]}A & ${e[0]}B)`]),"N\xE9gy k\xE9tbemenetes NAND kapu (nY = NEM(nA \xC9S nB)). T\xE1p 2\u20136 V; a nem haszn\xE1lt bemeneteket k\xF6sd GND-re."),hc74:El(14,"74HC74 kett\u0151s D t\xE1rol\xF3","DIP-14 \xB7 2\xD7 D flip-flop",nN,Al(oN),[["1Q","F1"],["1Qn","!F1"],["2Q","F2"],["2Qn","!F2"]],"K\xE9t D t\xE1rol\xF3: a CLK felfut\xF3 \xE9l\xE9n Q felveszi D \xE9rt\xE9k\xE9t. CLR = 0 t\xF6rli (Q = 0), PRE = 0 be\xE1ll\xEDtja (Q = 1), az \xF3rajelt\u0151l f\xFCggetlen\xFCl; haszn\xE1lat k\xF6zben mindkett\u0151t k\xF6sd VCC-re. Qn a Q neg\xE1ltja. T\xE1p 2\u20136 V.",[Iz("1"),Iz("2")]),hc595:El(16,"74HC595 l\xE9ptet\u0151regiszter","DIP-16 \xB7 8 bit SIPO",sN,Al(aN),[...["QA","QB","QC","QD","QE","QF","QG","QH"].map((e,t)=>[e,"R"+t,"!OE"]),["QHs","S7"]],"8 bites soros-p\xE1rhuzamos \xE1talak\xEDt\xF3: SRCLK felfut\xF3 \xE9l\xE9n a SER bit bel\xE9p, a t\xF6bbi eggyel tov\xE1bbl\xE9p; RCLK felfut\xF3 \xE9l\xE9n a 8 bit a QA\u2026QH kimenetekre ker\xFCl. OE = 0 enged\xE9lyezi a kimeneteket, SRCLR = 0 t\xF6rli a l\xE9ptet\u0151regisztert. QHs (QH') a k\xF6vetkez\u0151 595 SER bemenet\xE9re k\xF6thet\u0151. T\xE1p 2\u20136 V.",iN),hc139:El(16,"74HC139 kett\u0151s 2\u21924 dek\xF3der","DIP-16 \xB7 2\xD7 (2\u21924)",tN,Al(rN),[...Tz("1"),...Tz("2")],"K\xE9t 2\u21924 dek\xF3der: az A1 A0 bin\xE1ris sz\xE1m szerinti Y kimenet lesz 0 (akt\xEDv alacsony), a t\xF6bbi 1; ha E = 1, mind 1. T\xE1p 2\u20136 V."),stepper:{name:"L\xE9ptet\u0151motor (28BYJ-48)",fp:"k\xFCls\u0151 \xB7 5 eres k\xE1bel (A B C D, k\xF6z\xF6s +)",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"Tekercsellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:50,min:5,max:1e3,series:"E12",help:"5 V-os unipol\xE1ris l\xE9ptet\u0151motor, 64:1 \xE1tt\xE9tellel: f\xE9ll\xE9ptet\xE9sben 4096 l\xE9p\xE9s a kimen\u0151 tengely egy fordulata. A tekercseket egy meghajt\xF3 (pl. ULN2003) kapcsolja a f\xF6ld fel\xE9; a k\xF6z\xF6s vezet\xE9k (piros) a +5 V. A szimul\xE1ci\xF3 a tekercsek gerjeszt\xE9si sorrendj\xE9b\u0151l l\xE9pteti (A, AB, B, BC, C, CD, D, DA)."}],pins:[{id:"A",lr:0,lc:0,role:"coil"},{id:"B",lr:0,lc:1,role:"coil"},{id:"C",lr:0,lc:2,role:"coil"},{id:"D",lr:0,lc:3,role:"coil"},{id:"COM",name:"+",lr:0,lc:4,role:"mp"}],bounds:{r:[-8.2,.5],c:[-1.9,5.9]},graphics:[...[["A","#1c7ed6",.8],["B","#f783ac",1.4],["C","#fcc419",2],["D","#fd7e14",2.6],["COM","#e03131",3.2]].map(([e,t,r])=>({shape:"line",layer:"lead",from:e,to:[-1.4,r],width:.13,stroke:t})),{shape:"rect",layer:"body",r:[-5.1,-4],c:[-1.9,5.9],fill:"#ced4da",stroke:"#868e96",width:1.2},{shape:"circle",layer:"body",at:[-4.6,2],rad:3.1,fill:"#dee2e6",stroke:"#868e96",width:1.4,xray:{stroke:"#868e96"}},{shape:"rect",layer:"detail",r:[-2.1,-1.2],c:[.6,3.4],fill:"#1c5bbf"},{shape:"circle",layer:"detail",at:[-5.6,2],rad:1.2,fill:"#f1f3f5",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-5.6,2],rad:1.8,color:"#e8590c",width:.38},{shape:"text",layer:"label",at:[-8.6,2],text:"{label} 28BYJ-48",size:.4}],pinLabels:{mode:"name",off:.75},model:[{el:"stepper",com:"COM",a:"A",b:"B",c:"C",d:"D",ohm:"{ohm}",steps:4096,rotor:64}]},uln2003:{name:"ULN2003 l\xE9ptet\u0151motor-meghajt\xF3",fp:"IN1\u2013IN4 \xB7 t\xE1p \xB7 motorcsatlakoz\xF3",prefix:"U",cat:"Modul",pins:[...[1,2,3,4].map(e=>({id:"IN"+e,lr:0,lc:e-1,role:"sig"})),{id:"GND",lr:0,lc:5,role:"gnd"},{id:"VCC",lr:0,lc:6,role:"vin",vmin:4.5,vmax:12},...["A","B","C","D"].map((e,t)=>({id:e,lr:4,lc:t,role:"out"})),{id:"COM",name:"+",lr:4,lc:4,role:"pout"}],groups:[["VCC","COM"]],socket:{pins:["A","B","C","D","COM"]},bounds:{r:[-.8,4.8],c:[-.8,6.8]},graphics:[{shape:"rect",layer:"body",r:[-.8,4.8],c:[-.8,6.8],fill:"#1e6b45",stroke:"#0f3d27",width:1.2,xray:{stroke:"#1e6b45"}},{shape:"rect",layer:"detail",r:[1.4,2.6],c:[.6,4.4],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[3.4,4.6],c:[-.5,4.5],fill:"#f8f9fa",stroke:"#adb5bd"},{shape:"text",layer:"detail",at:[2,2.5],text:"ULN2003",size:.42,min:7,color:"#dee2e6"},{shape:"text",layer:"label",at:[2,5.9],text:"{label}",size:.42}],pinLabels:{mode:"name",off:.62,side:"in",minP:15,colors:{sig:"#e9ecef",gnd:"#adb5bd",vin:"#ffc9d6",out:"#ffd8a8",pout:"#ffd8a8"}},meta:{help:"N\xE9gy Darlington-kapcsol\xF3: ha az INn bemenet magas (\u2265 kb. 2,2 V, a Pico 3,3 V-ja el\xE9g), a hozz\xE1 tartoz\xF3 kimenet (A\u2013D) a f\xF6ld fel\xE9 kapcsol, \xE9s a motor tekercs\xE9n \xE1t a k\xF6z\xF6s + fel\u0151l \xE1ram folyik. A VCC (+) a motor t\xE1pja, 5 V; a COM ezzel k\xF6z\xF6s."},model:[{el:"logic",vcc:"VCC",gnd:"GND",vih:.44,vil:.15,rout:15,imax:.5,outs:["A","B","C","D"].map((e,t)=>({pin:e,expr:"!IN"+(t+1),type:"od"}))}]},motor:{name:"DC motor (130-as)",fp:"k\xFCls\u0151 \xB7 + \xE9s \u2212 kivezet\xE9s",prefix:"M",cat:"K\xFCls\u0151",mount:"off",params:[{key:"vnom",label:"N\xE9vleges fesz\xFClts\xE9g",type:"value",unit:"V",default:3,min:1,max:24,step:.5,help:"A motor a panel mellett \xE1ll; a kivezet\xE9seit vezet\xE9kkel (k\xE1bellel) k\xF6sd a panelra. Indukt\xEDv terhel\xE9s: GPIO-r\xF3l k\xF6zvetlen\xFCl nem hajthat\xF3, tranzisztor vagy MOSFET \xE9s visszacsap\xF3 di\xF3da kell."},{key:"ohm",label:"\xDCzemi ellen\xE1ll\xE1s",type:"value",unit:"\u03A9",default:20,min:.5,max:1e3,series:"E12",help:"Egyszer\u0171s\xEDtett modell: forg\xE1s k\xF6zbeni \xE1ramfelv\xE9tel \u2248 U / R. A fordulat a fesz\xFClts\xE9ggel ar\xE1nyos."}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"mp"},{id:"-",name:"\u2212",lr:0,lc:2,role:"mn"}],bounds:{r:[-5.9,.5],c:[-1.8,3.8]},graphics:[{shape:"line",layer:"lead",from:"+",to:[-1.2,.4],width:.12,stroke:"#b87333"},{shape:"line",layer:"lead",from:"-",to:[-1.2,1.6],width:.12,stroke:"#b87333"},{shape:"circle",layer:"body",at:[-3,1],rad:2.7,fill:"#b8bec4",stroke:"#6c757d",width:1.4,xray:{stroke:"#6c757d"}},{shape:"circle",layer:"detail",at:[-3,1],rad:2.1,fill:"#ced4da"},{shape:"dial",layer:"detail",at:[-3,1],rad:1.7,color:"#495057"},{shape:"circle",layer:"detail",at:[-3,1],rad:.35,fill:"#343a40"},{shape:"text",layer:"label",at:[-6.4,1],text:"{label} {vnom|fix1}V",size:.42}],pinLabels:{mode:"sign",off:.75,plus:["mp"]},model:[{el:"motor",a:"+",b:"-",ohm:"{ohm}",vnom:"{vnom}"}]},servo:{name:"Szerv\xF3 (SG90)",fp:"k\xFCls\u0151 \xB7 GND, V+, jel k\xE1bel",prefix:"SV",cat:"K\xFCls\u0151",mount:"off",params:[{key:"ohm",label:"\xC1ramfelv\xE9tel (ell.)",type:"value",unit:"\u03A9",default:100,min:5,max:1e4,series:"E12",help:"A szerv\xF3t a jelvezet\xE9ken \xE9rkez\u0151 PWM vez\xE9rli: 50 Hz, 0,5\u20132,5 ms impulzus \u2192 0\u2013180\xB0. A Pico GPIO-j\xE1n \xE1ll\xEDtsd PWM m\xF3dba (50 Hz, 7,5 % = k\xF6z\xE9p\xE1ll\xE1s). T\xE1p: 4,8\u20136 V."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"V+",lr:0,lc:1,role:"vin",vmin:4.5,vmax:6.5},{id:"SIG",lr:0,lc:2,role:"sig"}],bounds:{r:[-12.2,.5],c:[-1.6,3.6]},graphics:[{shape:"line",layer:"lead",from:"GND",to:[-2.6,.6],width:.14,stroke:"#7b4b2a"},{shape:"line",layer:"lead",from:"V+",to:[-2.6,1],width:.14,stroke:"#e03131"},{shape:"line",layer:"lead",from:"SIG",to:[-2.6,1.4],width:.14,stroke:"#f08c00"},{shape:"rect",layer:"body",r:[-11.4,-2.6],c:[-.9,2.9],fill:"#1c5bbf",stroke:"#0f3a80",width:1.2,xray:{stroke:"#1c5bbf"}},{shape:"rect",layer:"detail",r:[-12.2,-11.4],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"rect",layer:"detail",r:[-2.6,-1.8],c:[-1.6,3.6],fill:"#1c5bbf",stroke:"#0f3a80"},{shape:"circle",layer:"detail",at:[-9.2,1],rad:1.1,fill:"#e9ecef",stroke:"#adb5bd"},{shape:"dial",layer:"detail",at:[-9.2,1],rad:3.2,color:"#f8f9fa",width:.55},{shape:"text",layer:"detail",at:[-5.4,1],text:"SG90",size:.55,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[1.3,1],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[-6.5,1],text:"{label} \xB7 SG90",size:.5,min:8,color:"#1c5bbf"}],pinLabels:{mode:"name",off:-.75,colors:{gnd:"#5c3a1e",vin:"#c92a2a",sig:"#d9480f"}},model:[{el:"servo",vp:"V+",gnd:"GND",sig:"SIG",ohm:"{ohm}",pmin:.5,pmax:2.5}]},header:{name:"T\xFCskesor 1\xD7N",fp:"N l\xE1b egy sorban \xB7 csatlakoz\xF3",prefix:"J",cat:"Csatlakoz\xF3",params:[{key:"n",label:"L\xE1bsz\xE1m",type:"int",default:4,min:1,max:20,geo:!0},{key:"names",label:"L\xE1bnevek",type:"names",default:"",help:"Vessz\u0151vel, sorrendben (pl. GND,VCC,SDA,SCL). K\xFCls\u0151 alkatr\xE9sz csatlakoz\xF3j\xE1n\xE1l az alkatr\xE9sz l\xE1bneveit kapja."}],pins:[{repeat:"{n}",id:"{i+1}",lr:0,lc:"{i}",role:"h"}],bounds:{r:[-.5,.5],c:[-.5,"{n}-0.5"]},socket:{count:"n",names:"names"},graphics:[{shape:"rect",layer:"body",r:[-.5,.5],c:[-.5,"{n}-0.5"],fill:"#1d1d1d",stroke:"#000",width:1},{shape:"text",layer:"label",at:[0,"{n}-0.5+0.75"],text:"{label}",size:.42}],pinLabels:{mode:"name",off:-.8,named:!0}},bat:{name:"Akku csatlakoz\xF3",fp:"+ 0:0 \xB7 \u2212 0:1",prefix:"BAT",cat:"Csatlakoz\xF3",params:[{key:"volt",label:"Fesz\xFClts\xE9g",type:"value",unit:"V",default:3.7,min:.5,max:48,step:.1}],pins:[{id:"+",name:"+",lr:0,lc:0,role:"bp"},{id:"-",name:"\u2212",lr:0,lc:1,role:"bn"}],bounds:{r:[-1.3,.5],c:[-.6,1.6]},graphics:[{shape:"rect",layer:"body",r:[-1.25,.45],c:[-.55,1.55],fill:"#f4f1e8",stroke:"#7d7563",width:1.2},{shape:"text",layer:"label",at:[-.75,.5],text:"{label} {volt|fix1}V",size:.38}],pinLabels:{mode:"sign",off:.72,plus:["bp"]},model:[{el:"source",p:"+",n:"-",v:"{volt}",rint:.1}]},tp4056:{name:"TP4056 t\xF6lt\u0151modul",fp:"IN 0:0, 0:6 \xB7 OUT/B 9:0\u20269:6 (k\xF6zel\xEDt\u0151)",prefix:"U",cat:"Modul",params:[{key:"usb",label:"Saj\xE1t USB",type:"select",default:"off",options:[{v:"off",label:"nincs bedugva",volt:0,rint:1e9},{v:"on",label:"5 V bedugva",volt:5,rint:.1}],help:"Egyszer\u0171s\xEDtett modell: a bemenetr\u0151l (5 V) a B+ fel\xE9 t\xF6lt, a B+ \xE9s az OUT+ k\xF6z\xF6s. A l\xE1bak a modul forrpontjainak k\xF6zel\xEDt\u0151 helyei, t\xFCskesorral rakd fel."}],pins:[{id:"IN+",lr:0,lc:0,role:"vin",vmin:4,vmax:8},{id:"IN-",lr:0,lc:6,role:"gnd"},{id:"OUT+",lr:9,lc:0,role:"pout"},{id:"B+",lr:9,lc:2,role:"chg"},{id:"B-",lr:9,lc:4,role:"bn"},{id:"OUT-",lr:9,lc:6,role:"gnd"}],groups:[["B+","OUT+"],["IN-","OUT-"]],bounds:{r:[-1.5,9.6],c:[-.7,6.7]},graphics:[{shape:"rect",layer:"body",r:[-.6,9.6],c:[-.7,6.7],fill:"#1f4f9c",stroke:"#12325f",width:1.2,xray:{stroke:"#1f4f9c"}},{shape:"rect",layer:"detail",r:[-1.5,1.3],c:[1.9,4.1],fill:"#c3c8cd",stroke:"#868e96",xray:{fill:null,stroke:"#6b7a72",dash:!0}},{shape:"rect",layer:"detail",r:[3.3,5.3],c:[2.2,3.8],fill:"#1b1b1b"},{shape:"rect",layer:"detail",r:[6.3,7.3],c:[4.4,5.4],fill:"#1b1b1b"},{shape:"circle",layer:"detail",at:[2.6,5.5],rad:.28,fill:"#a61e1e"},{shape:"circle",layer:"detail",at:[4,5.5],rad:.28,fill:"#1c4fd1"},{shape:"text",layer:"detail",at:[6.2,2.2],text:"TP4056",size:.42,min:7,color:"#dbe7ff"},{shape:"text",layer:"label",at:[10.4,3],text:"{label}",size:.42},{shape:"text",layer:"xray",at:[4.5,3],text:"{label} \xB7 TP4056",size:.5,min:8,color:"#1f4f9c"}],pinLabels:{mode:"name",off:.7,colors:{vin:"#ffc9d6",gnd:"#e9ecef",pout:"#ffe3bf",chg:"#ffe3bf",bn:"#e9ecef"}},model:[{el:"source",p:"IN+",n:"IN-",v:"{usb.volt}",rint:"{usb.rint}",kind:"supply"},{el:"diode",a:"IN+",k:"B+",vf:.8,ron:1},{el:"resistor",a:"B-",b:"OUT-",ohm:.05}]},nokia5110:{name:"Nokia 5110 kijelz\u0151",fp:"8 l\xE1b egy sorban \xB7 VCC 2,7\u20133,3 V",prefix:"LCD",cat:"Modul",pins:["RST","CE","DC","DIN","CLK","VCC","BL","GND"].map((e,t)=>e==="VCC"?{id:e,lr:0,lc:t,role:"vin",vmin:2.7,vmax:3.6}:{id:e,lr:0,lc:t,role:e==="GND"?"gnd":"sig",...e==="DIN"?{fn:"spi.mosi"}:e==="CLK"?{fn:"spi.sck"}:{}}),bounds:{r:[-1.3,15.9],c:[-4.6,11.6]},graphics:[{shape:"rect",layer:"body",r:[-1.3,15.9],c:[-4.6,11.6],fill:"#b8282d",stroke:"#7d1a1e",width:1.2,xray:{stroke:"#b8282d"}},{shape:"rect",layer:"detail",r:[1.4,14.4],c:[-4,11],fill:"#d7dadd",stroke:"#9aa1a8"},{shape:"rect",layer:"detail",r:[2.4,13.3],c:[-3.4,10.4],fill:"#8f9f86",lit:{fill:"#c6efa4"},xray:{fill:null,stroke:"#9aa1a8",dash:!0}},{shape:"text",layer:"detail",at:[7.9,3.5],text:"NOKIA 5110",size:.8,min:8,color:"#2b3328"},{shape:"text",layer:"label",at:[15.1,3.5],text:"{label}",size:.45,color:"#ffe0e0",xray:{color:"#7d1a1e"}},{shape:"text",layer:"xray",at:[7.9,3.5],text:"{label} \xB7 Nokia 5110",size:.55,min:8,color:"#b8282d"}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},model:[{el:"resistor",a:"VCC",b:"GND",ohm:1e4},{el:"diode",a:"BL",k:"GND",vf:2.6,ron:60,light:!0}]},ssd1306:{name:'OLED kijelz\u0151 0,96" (SSD1306, I\xB2C)',fp:"GND \xB7 VCC \xB7 SCL \xB7 SDA egy sorban",prefix:"OLED",cat:"Modul",pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"VCC",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"SCL",lr:0,lc:2,role:"sig",fn:"i2c.scl"},{id:"SDA",lr:0,lc:3,role:"sig",fn:"i2c.sda"}],bounds:{r:[-.8,10.4],c:[-3.4,6.4]},graphics:[{shape:"rect",layer:"body",r:[-.8,10.4],c:[-3.4,6.4],fill:"#1f4f8a",stroke:"#123155",width:1.2,xray:{stroke:"#1f4f8a"}},{shape:"rect",layer:"detail",r:[1.4,8.4],c:[-3,6],fill:"#111418",stroke:"#3d4450"},{shape:"rect",layer:"detail",r:[2.2,6.9],c:[-2.6,5.6],fill:"#0b0d10",lit:{fill:"#123049"},xray:{fill:null,stroke:"#3d4450",dash:!0}},{shape:"text",layer:"detail",at:[4.6,1.5],text:"128\xD764",size:.6,min:7,color:"#4dabf7"},{shape:"text",layer:"label",at:[9.5,1.5],text:"{label}",size:.45,color:"#d0ebff",xray:{color:"#1f4f8a"}}],pinLabels:{mode:"name",off:-.85,colors:{vin:"#ffd6e0",gnd:"#f1f3f5",sig:"#f8f9fa"}},meta:{help:"128\xD764 pontos OLED kijelz\u0151 I\xB2C-buszon (alapc\xEDm 0x3C). A modulon felh\xFAz\xF3 ellen\xE1ll\xE1sok vannak az SCL- \xE9s SDA-vonalon. T\xE1p 3,3\u20135 V; a kijelz\u0151 tartalm\xE1t a szimul\xE1ci\xF3 nem rajzolja ki."},model:[{el:"resistor",a:"VCC",b:"GND",ohm:330}]},joystick:{name:"Joystick (KY-023)",fp:"GND \xB7 +5V \xB7 VRx \xB7 VRy \xB7 SW egy sorban",prefix:"JS",cat:"Bemenet",params:[{key:"x",label:"X \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % bal, +100 % jobb. Szimul\xE1ci\xF3 k\xF6zben cs\xFAszk\xE1val is \xE1ll\xEDthat\xF3."},{key:"y",label:"Y \xE1ll\xE1s",type:"number",unit:"%",default:0,min:-100,max:100,step:5,help:"\u2212100 % le, +100 % fel."}],pins:[{id:"GND",lr:0,lc:0,role:"gnd"},{id:"5V",name:"+5V",lr:0,lc:1,role:"vin",vmin:3,vmax:5.5},{id:"VRX",name:"VRx",lr:0,lc:2,role:"adc"},{id:"VRY",name:"VRy",lr:0,lc:3,role:"adc"},{id:"SW",lr:0,lc:4,role:"sig"}],bounds:{r:[-.8,12.6],c:[-2.6,6.6]},controls:[{kind:"press",closes:[["SW","GND"]]},{kind:"slider",key:"x",label:"X"},{kind:"slider",key:"y",label:"Y"}],graphics:[{shape:"rect",layer:"body",r:[-.8,12.6],c:[-2.6,6.6],fill:"#23272e",stroke:"#0f1114",width:1.2,xray:{stroke:"#333"}},{shape:"rect",layer:"detail",r:[3,11.4],c:[-1.9,5.9],fill:"#e9ecef",stroke:"#adb5bd"},{shape:"circle",layer:"detail",at:[7.2,2],rad:3,fill:"#343a40"},{shape:"circle",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],rad:1.9,fill:"#495057",stroke:"#111",width:1.5,pressed:{fill:"#6c757d",stroke:"accent",width:3},xray:{fill:null,stroke:"rgba(0,0,0,.45)",width:1.2,pressed:{stroke:"accent",width:3}}},{shape:"text",layer:"detail",at:["7.2-{y}/40","2+{x}/40"],text:"{label}",size:.55,min:8,color:"#f1f3f5",xray:{color:"#1d231f"}}],pinLabels:{mode:"name",off:.85,colors:{gnd:"#e9ecef",vin:"#ffc9d6",adc:"#b2f2bb",sig:"#a5d8ff"}},model:[{el:"resistor",a:"5V",b:"VRX",ohm:"{5001-50*x}"},{el:"resistor",a:"VRX",b:"GND",ohm:"{5001+50*x}"},{el:"resistor",a:"5V",b:"VRY",ohm:"{5001-50*y}"},{el:"resistor",a:"VRY",b:"GND",ohm:"{5001+50*y}"}]}};var W=_z(Ir),Zz={},Bz=()=>Zz;function Co(e){for(let t of Object.keys(W))t in Ir||delete W[t];for(let[t,r]of[...Object.entries(Zz),...Object.entries(e||{})])try{W[t]=To(t,{cat:"Saj\xE1t",...r})}catch(n){console.warn("Saj\xE1t alkatr\xE9sz kihagyva:",t,n)}}var Ol=e=>Io(W[e.type].def,e),No=e=>(W[e.type].def.controls||[]).some(t=>t.kind==="press"),Ae=e=>W[e.type].def.mount==="off",ce=e=>!!(e&&W[e.type]&&W[e.type].mcu);var Ro=(e,t)=>e*1e5+t;function Gz(e,t){let r=new Map;for(let n of t){let o=Math.round(+n[0]),s=Math.round(+n[1]),a=+n[2]?1:0;s>=0&&s<e.cols&&o>=0&&o<e.rows&&(a===0&&(o>=e.rows-1||(o+1)%e.sec===0)||r.set(`${o}:${s}:${a}`,[o,s,a]))}return[...r.values()].sort((n,o)=>n[1]-o[1]||n[0]-o[0]||n[2]-o[2])}function Tr(e,t=[]){let r=Gz(e,t),n=new Set,o=new Set;for(let[d,p,m]of r)(m?o:n).add(Ro(d,p));let s=[],a=new Int32Array(e.rows*e.cols).fill(-1),i=[];for(let d=0;d<e.cols;d++){let p=[],m=-1,b=f=>{m>=0&&f>=m&&(p.push(s.length),s.push({c:d,r0:m,r1:f,drilled:!1})),m=-1};for(let f=0;f<e.rows;f++){if(o.has(Ro(f,d))){b(f-1),p.push(s.length),s.push({c:d,r0:f,r1:f,drilled:!0});continue}m<0&&(m=f),((f+1)%e.sec===0||n.has(Ro(f,d))||f===e.rows-1)&&b(f)}i.push(p)}s.forEach((d,p)=>{for(let m=d.r0;m<=d.r1;m++)a[m*e.cols+d.c]=p});let l=s.map(()=>[]),c=new Map;i.forEach(d=>d.forEach((p,m)=>c.set(p,m))),s.forEach((d,p)=>{if(d.drilled)return;let m=i[d.c],b=c.get(p),f=m[b-1],h=m[b+1];f!=null&&!s[f].drilled&&s[f].r1===d.r0-1&&d.r0%e.sec===0&&l[p].push({to:f,dir:0,br:[d.r0-1,d.c,d.r0,d.c]}),h!=null&&!s[h].drilled&&s[h].r0===d.r1+1&&s[h].r0%e.sec===0&&l[p].push({to:h,dir:1,br:[d.r1,d.c,d.r1+1,d.c]});for(let[g,v]of[[-1,2],[1,3]]){let _=d.c+g;if(!(_<0||_>=e.cols))for(let w of i[_]){let k=s[w];if(k.drilled||k.r1<d.r0||k.r0>d.r1)continue;let P=Math.max(k.r0,d.r0),A=Math.min(k.r1,d.r1),Z=P+(e.sec>>1)<=A?P+(e.sec>>1):P+(A-P+1>>1);l[p].push({to:w,dir:v,br:g<0?[Z,_,Z,d.c]:[Z,d.c,Z,_]})}}});let u=new Map;return l.forEach((d,p)=>d.forEach(m=>{u.has(p*s.length+m.to)||u.set(p*s.length+m.to,m)})),{N:s.length,segs:s,cuts:r,cell:(d,p)=>a[d*e.cols+p],drilled:(d,p)=>o.has(Ro(d,p)),adj:d=>l[d],edge:(d,p)=>u.get(d*s.length+p),holes:d=>{let p=s[d],m=[];for(let b=p.r0;b<=p.r1;b++)m.push([b,p.c]);return m}}}function Uz(e,t,r,n=[]){let o=Tr(e,t),s=new Set(n.filter(l=>!l[2]).map(l=>Ro(l[0],l[1]))),a=new Map;for(let l of r){if(l.r<0||l.c<0||l.r>=e.rows||l.c>=e.cols||o.drilled(l.r,l.c))continue;let c=o.cell(l.r,l.c);a.has(c)||a.set(c,[]),a.get(c).push(l)}let i=[];for(let[l,c]of a){let u=o.segs[l].c;c.sort((d,p)=>d.r-p.r);for(let d=0;d+1<c.length;d++){let p=c[d],m=c[d+1];if(p.net===m.net||p.r===m.r)continue;let b=p.r+m.r-1>>1,f=-1;for(let h=0;h<=m.r-p.r&&f<0;h++)for(let g of h?[b-h,b+h]:[b])if(g>=p.r&&g<m.r&&!s.has(Ro(g,u))){f=g;break}f>=0&&i.push([f,u,0])}}return Gz(e,i)}function It(e,t,r){let n=t,o=e.mir?-r:r;for(let s=0;s<(e.rot&3);s++){let a=n;n=o,o=-a}return[e.r+n,e.c+o]}function me(e){return W[e.type].pins(e).map(t=>{let[r,n]=It(e,t.lr,t.lc);return{...t,r,c:n,part:e}})}var vr=(e,t,r)=>t>=0&&r>=0&&t<e.rows&&r<e.cols;function Rp(e){let t=W[e.type]&&W[e.type].def.socket;if(!t)return[];let r=me(e);if(!t.pins)return r;let n=new Map(r.map(o=>[o.id,o]));return t.pins.map(o=>n.get(o)).filter(o=>!!o)}function jo(e,t){if(!t.plug||!Ae(t))return null;let r=e.parts.find(n=>n.id===t.plug);return!r||!W[r.type]||!W[r.type].def.socket?null:Rp(r).length>=W[t.type].pins(t).length?r:null}var dN=(e,t)=>e.parts.find(r=>r.plug===t.id&&jo(e,r)===t)||null;function jp(e,t){let r=jo(e,t);if(!r)return[];let n=me(t),o=Rp(r);return n.map((s,a)=>[s,o[a]])}function Il(e){let t=new Map;for(let r of e.parts)for(let[n,o]of jp(e,r))t.set(r.id+"."+n.id,o.part.id+"."+o.id);return r=>t.get(r)??r}function qz(e=W){for(let[t,r]of Object.entries(e))if(r.def.socket&&r.def.socket.count&&r.def.mount!=="off")return t;return null}function Kz(e,t,r){let n=e.board,o=new Set,s=[];for(let w of e.parts){if(Ae(w))continue;for(let A of me(w))o.add(A.r+":"+A.c);let k=W[w.type].bounds(w),P=[It(w,k.r0,k.c0),It(w,k.r1,k.c1)];s.push([Math.min(P[0][0],P[1][0]),Math.max(P[0][0],P[1][0]),Math.min(P[0][1],P[1][1]),Math.max(P[0][1],P[1][1])])}for(let w of e.wires)for(let k of[w.a,w.b])o.add(k[0]+":"+k[1]);let a=Tr(n,[...e.cuts||[],...e.auto&&e.auto.cuts||[]]),i=new Set;for(let w of e.parts)if(!Ae(w))for(let k of me(w))vr(n,k.r,k.c)&&i.add(a.cell(k.r,k.c));let l=(w,k)=>vr(n,w,k)&&!o.has(w+":"+k)&&!s.some(([P,A,Z,D])=>w>P-1&&w<A+1&&k>Z-1&&k<D+1),c=me(t),u=c.reduce((w,k)=>w+k.r,0)/c.length,d=c.reduce((w,k)=>w+k.c,0)/c.length,p=W[t.type].bounds(t),[m,b]=It(t,(p.r0+p.r1)/2,(p.c0+p.c1)/2),f=Math.hypot(u-m,d-b)||1,h=(u-m)/f,g=(d-b)/f,v=null,_=1/0;for(let w=0;w<n.rows;w++)for(let k=0;k<n.cols;k++)for(let P of[0,1]){let A=Array.from({length:r},(F,y)=>P?[w+y,k]:[w,k+y]);if(!A.every(([F,y])=>l(F,y)))continue;let Z=A.map(([F,y])=>a.cell(F,y));if(new Set(Z).size<r)continue;let D=P?w+(r-1)/2:w,B=P?k:k+(r-1)/2,K=Math.hypot(D-u,B-d)||1,x=((D-u)*h+(B-d)*g)/K,$=K+4*(1-x)+(P?.5:0)+40*Z.filter(F=>i.has(F)).length;$<_&&(_=$,v={r:w,c:k,rot:P?1:0})}return v}function Hz(e,t){let r=e.socket,n=W[t.type].pins(t);return{...r.count?{[r.count]:n.length}:{},...r.names?{[r.names]:n.map(o=>o.name).join(",")}:{}}}function Wz(e,t){let r=W[t.type].pins(t);for(let n of e.parts){if(Ae(n)||!W[n.type].def.socket||dN(e,n))continue;let o=Rp(n);if(o.length!==r.length)continue;if(r.every((a,i)=>{let l=t.id+"."+a.id,c=n.id+"."+o[i].id;return e.links.some(u=>u.a===l&&u.b===c||u.a===c&&u.b===l)}))return n}return null}function Jz(e){let t=Il(e),r=new Set;for(let n of e.links)n.b!=="GND"&&n.b!=="GPIO"&&t(n.a)===t(n.b)&&r.add(n.id);return r}var Ge=(e,t)=>!!(e&&e.caps&&e.caps.includes(t)),Tl=e=>Ge(e,"adc")||Ge(e,"adc2"),Mp=[["strap",E("ind\xEDt\xE1si (strapping) l\xE1b: bekapcsol\xE1skor sz\xE1m\xEDt a szintje, rossz szintn\xE9l a lap nem indul el vagy let\xF6lt\u0151 m\xF3dba ker\xFCl. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["uart0",E("a soros port (USB-soros \xE1talak\xEDt\xF3) haszn\xE1lja: felt\xF6lt\xE9skor \xE9s soros ki\xEDr\xE1skor zavarhat. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["usb",E("a be\xE9p\xEDtett USB haszn\xE1lja. Ha lehet, v\xE1lassz m\xE1sik GPIO-t.")],["led",E("a lap be\xE9p\xEDtett LED-je is ezen a l\xE1bon van.")]],pN={"uart.rx":"uart.tx","uart.tx":"uart.rx"},Dp=e=>pN[e]||e;function Wr(e,t){let[r,n]=Dp(t).split("."),o=new RegExp("^"+r+"\\d+\\."+n+"$");return(e&&e.caps||[]).filter(s=>o.test(s))}function Fn(e){let t=(W[e.type].def.model||[]).find(r=>r.el==="mcu");return t&&t.el==="mcu"&&t.mux||"fixed"}function fN(e){let t=/^(i2c|spi|uart|pwm)(\d*)\.([a-z]+)$/.exec(e);return t?`${t[1].toUpperCase()}${t[2]} ${t[3].toUpperCase()}`:e.toUpperCase()}var Lp=e=>fN(e);var ca=(e,t)=>!e||!t||Wr(t,e).length?0:Fn(t.part)==="matrix"?10:16,ua=e=>e&&Mp.some(t=>Ge(e,t[0]))?10:0,Vp=(e,t)=>!!e&&ce(e.part)&&e.role==="gpio"&&(t?Ge(e,"adc"):!Ge(e,"in")),Zn=[["pullup",E("be, felh\xFAzva")],["pulldown",E("be, leh\xFAzva")],["float",E("be, lebeg\u0151")],["adc",E("anal\xF3g (ADC)")],["out_high",E("ki: 1")],["out_low",E("ki: 0")],["pwm",E("ki: PWM")]];function da(e,t){return t==="out_high"||t==="out_low"||t==="pwm"?!Ge(e,"in"):t==="pullup"||t==="pulldown"?!Ge(e,"nopull"):t==="adc"?Tl(e):t==="float"}function Yz(e,t){let r=t&&t.netPins.get(e.net)||[];return Tl(e)&&r.some(n=>n.role==="adc")?"adc":Ge(e,"nopull")?"float":"pullup"}var Xz="",Fp=null;function gn(e){let t=[...e.cuts||[],...e.auto&&e.auto.cuts||[]],r=e.board.rows+"x"+e.board.cols+"/"+e.board.sec+"|"+t.map(n=>n.join(",")).join(";");return(r!==Xz||!Fp)&&(Xz=r,Fp=Tr(e.board,t)),Fp}function Cr(e,t={}){let r=gn(e),n=r.N,o=(k,P)=>vr(e.board,k,P),s=(k,P)=>r.cell(k,P),a=t.hidden||(()=>!1),i=e.parts.map(k=>[k,me(k)]),l=0;for(let[,k]of i)for(let P of k)o(P.r,P.c)||l++;let c=new Int32Array(n+l);for(let k=0;k<n+l;k++)c[k]=k;let u=k=>{for(;c[k]!==k;)c[k]=c[c[k]],k=c[k];return k},d=(k,P)=>{k=u(k),P=u(P),k!==P&&(c[Math.max(k,P)]=Math.min(k,P))},p=e.auto.bridges.filter(k=>!a(k[4])),m=e.auto.wires.filter(k=>!a(k.links));for(let k of[...e.bridges,...p])o(k[0],k[1])&&o(k[2],k[3])&&d(s(k[0],k[1]),s(k[2],k[3]));let b=[],f=new Map,h=n;for(let[k,P]of i){let A={},Z=[];for(let D of P){let B=o(D.r,D.c),K=Object.assign(D,{on:B,s:B?s(D.r,D.c):h++,net:-1});A[K.id]=K,b.push(K),Z.push(K)}f.set(k.id,{pins:Z,map:A,out:Z.some(D=>!D.on)});for(let[D,B]of W[k.type].internal(k))d(A[D].s,A[B].s);if(t.pressed&&t.pressed(k)){for(let D of W[k.type].def.controls||[])if(D.kind==="press")for(let[B,K]of D.closes)A[B]&&A[K]&&d(A[B].s,A[K].s)}}for(let k of e.parts)for(let[P,A]of jp(e,k)){let Z=f.get(k.id).map[P.id],D=f.get(A.part.id).map[A.id];Z&&D&&d(Z.s,D.s)}let g=new Map;for(let k of b)k.on||g.set(k.r+":"+k.c,k.s);let v=k=>o(k[0],k[1])?s(k[0],k[1]):g.get(k[0]+":"+k[1]);for(let k of[...e.wires,...m]){let P=v(k.a),A=v(k.b);P!=null&&A!=null&&d(P,A)}for(let k of b)k.net=u(k.s);let _=new Map,w=new Map;for(let k of b)_.has(k.net)||_.set(k.net,[]),_.get(k.net).push(k);for(let k=0;k<n;k++){let P=u(k);w.set(P,(w.get(P)||0)+1)}return{N:n,find:u,sid:s,pins:b,byPart:f,netPins:_,netSecs:w}}var bn=e=>ce(e.part)?`${e.part.label}.${e.name}`:`${e.part.label}.${e.id}`;function it(e,t){let r=t.indexOf(".");if(r<0)return null;let n=e.parts.find(o=>o.id===t.slice(0,r));return n&&me(n).find(o=>o.id===t.slice(r+1))||null}function zr(e){let t={},r=o=>t[o]===o?o:t[o]=r(t[o]);W[e.type].pins(e).forEach(o=>t[o.id]=o.id);for(let[o,s]of W[e.type].internal(e))t[r(o)]=r(s);let n={};for(let o in t)n[o]=r(o);return n}function Zp(e){if(!e)return[];let t=zr(e.part),r=t[e.id];return me(e.part).filter(n=>t[n.id]===r)}function Cl(e){if(!e)return"?";let t=Zp(e);return t.length<2?bn(e):e.part.type==="button"?`${e.part.label}.${e.role}`:ce(e.part)&&e.role==="gnd"?`${e.part.label}.GND`:`${e.part.label}.${t.map(r=>r.id).join("/")}`}function Mo(e,t){let r=it(e,t.a),n=t.b==="GND"?"GND":t.b==="GPIO"?"GPIO":Cl(it(e,t.b));return`${Cl(r)} \u2192 ${n}`}function Do(e,t){let r=new Map,n=o=>{let s=o.indexOf("."),a=t.byPart.get(o.slice(0,s)),i=a&&a.map[o.slice(s+1)];return!i||!i.on&&!Ae(i.part)?-1:i.net};for(let o of e.links){let s=n(o.a),a=!1,i=null;if(s>=0){let d=t.netPins.get(s)||[];if(o.b==="GND")a=d.some(p=>ce(p.part)&&p.role==="gnd");else if(o.b==="GPIO"){let p=(it(e,o.a)||{role:""}).role==="adc";i=d.find(m=>ce(m.part)&&m.role==="gpio"&&(!p||Ge(m,"adc"))),a=!!i}else a=n(o.b)===s}let l=e.auto.bridges.filter(d=>(d[4]||[]).includes(o.id)).length,c=e.auto.wires.some(d=>(d.links||[]).includes(o.id)),u=d=>{let p=it(e,d);return!!p&&Ae(p.part)&&!jo(e,p.part)};r.set(o.id,{ok:a,gpio:i?i.name:null,gpioRef:i?i.part.id+"."+i.id:null,nb:l,wire:c,cable:u(o.a)||u(o.b)})}return r}var Qz={gnd:E("f\xF6ld"),vin:E("t\xE1pbemenet"),pwr:E("t\xE1p"),p33:E("3,3 V"),gpio:"GPIO",sig:E("jel"),adc:E("anal\xF3g jel"),out:E("kimenet"),pout:E("t\xE1pkimenet"),A:E("kapcsol\xF3 A"),B:E("kapcsol\xF3 B"),base:E("b\xE1zis"),col:E("kollektor"),emit:E("emitter"),g:E("gate"),d:E("drain"),s:E("source"),an:E("an\xF3d"),ka:E("kat\xF3d"),cp:"+",cn:"\u2212",bp:"+",bn:"\u2212",coil:E("tekercs"),chg:E("t\xF6lt\xE9s"),r:E("ellen\xE1ll\xE1s"),c:E("kondenz\xE1tor"),j:E("\xE1tk\xF6t\xE9s"),h:E("t\xFCske")},e_=new Set(["gnd","vin"]);function t_(e,t,r){let n=zr(r),o=t.byPart.get(r.id),s=[],a=new Set;for(let i of me(r)){let l=n[i.id];if(a.has(l))continue;a.add(l);let c=me(r).filter(h=>n[h.id]===l),u=new Set(c.map(h=>r.id+"."+h.id)),d=e.links.find(h=>u.has(h.a)||u.has(h.b))||null,p=d?u.has(d.a)?d.b:d.a:null,m=o&&o.map[i.id],b=!!m&&(m.on||Ae(r)),f=b&&m?[...new Set((t.netPins.get(m.net)||[]).filter(h=>h.part!==r||n[h.id]!==l).map(h=>Cl(h)))]:[];s.push({ref:r.id+"."+i.id,label:Cl(i),name:c.map(h=>h.name).filter((h,g,v)=>v.indexOf(h)===g).join("/"),role:i.role,link:d,target:p,net:f,on:b,floating:!d&&!f.length})}return s}function Bp(e,t){let r=new Float64Array(e*e),n=new Float64Array(e);for(let{a:s,b:a,g:i,E:l,cp:c=s,cn:u=a}of t)s>=0&&(c>=0&&(r[s*e+c]+=i),u>=0&&(r[s*e+u]-=i),n[s]+=i*l),a>=0&&(c>=0&&(r[a*e+c]-=i),u>=0&&(r[a*e+u]+=i),n[a]-=i*l);for(let s=0;s<e;s++){let a=s,i=Math.abs(r[s*e+s]);for(let l=s+1;l<e;l++){let c=Math.abs(r[l*e+s]);c>i&&(i=c,a=l)}if(!(i<1e-30)){if(a!==s){for(let c=0;c<e;c++){let u=r[s*e+c];r[s*e+c]=r[a*e+c],r[a*e+c]=u}let l=n[s];n[s]=n[a],n[a]=l}for(let l=s+1;l<e;l++){let c=r[l*e+s]/r[s*e+s];if(c){for(let u=s;u<e;u++)r[l*e+u]-=c*r[s*e+u];n[l]-=c*n[s]}}}}let o=new Float64Array(e);for(let s=e-1;s>=0;s--){let a=n[s];for(let i=s+1;i<e;i++)a-=r[s*e+i]*o[i];o[s]=r[s*e+s]?a/r[s*e+s]:0}return o}var Nl=new Map,Up=new Map;function s_(){Nl.clear(),Up.clear()}function pa(e,t,r,n,o){let s=e.gpio[t.id+"."+r];return n?s&&da(n,s)?s:Yz(n,o):s||"pullup"}var fa=(e,t)=>Object.assign({duty:50,freq:1e3},(e.pwm||{})[t]||{}),mN=25,Gp=20,r_=1;function qp(e,t,r){let n=[];for(let d of e.parts)for(let p of t.byPart.get(d.id).pins)p.role==="gpio"&&pa(e,d,p.id,p,t)==="pwm"&&n.push({key:d.id+"."+p.id,q:p,...fa(e,d.id+"."+p.id)});let o=r.slow,s=o?n.filter(d=>+d.freq>=mN):n,a=o||new Set,l=[0,...[...new Set(s.map(d=>Math.max(0,Math.min(100,+d.duty||0))))].filter(d=>d>0&&d<100).sort((d,p)=>d-p),100],c=()=>{let d=[];for(let p=0;p+1<l.length;p++){let m=l[p],b=(l[p+1]-m)/100;b<=0||d.push({w:b,o:vN(e,t,new Set([...a,...s.filter(f=>f.duty>m).map(f=>f.key)]))})}return kN(d)},u=c();for(let d=0;d<16&&bN(u);d++)u=c();u.pwm=new Map(n.map(d=>[d.q.net,d])),gN(u,r.running);for(let d of u.servos){let p=u.pwm.get(d.sigNet);d.pulse=p?p.duty/100/Math.max(1e-9,p.freq)*1e3:null;let m=!!p&&p.freq>=40&&p.freq<=400&&d.pulse>=d.pmin-.2&&d.pulse<=d.pmax+.2;d.angle=m?Math.max(0,Math.min(180,(d.pulse-d.pmin)/(d.pmax-d.pmin)*180)):null}return u}var hN={1:0,3:1,2:2,6:3,4:4,12:5,8:6,9:7};function gN(e,t){for(let r of e.steppers){let n=Up.get(r.p.id)||{pos:0,phase:null},o=[r.ua,r.ub,r.uc,r.ud].reduce((a,i,l)=>a|(i>1.5?1<<l:0),0),s=hN[o];if(t&&s!=null){if(n.phase!=null){let a=(s-n.phase+8)%8;a>=1&&a<=3?n.pos+=a:a>=5&&(n.pos-=8-a)}n.phase=s}Up.set(r.p.id,n),r.pattern=o,r.pos=n.pos,r.coils="ABCD".split("").filter((a,i)=>o&1<<i).join(""),r.angle=n.pos*360/r.steps,r.rotorAngle=n.pos*360/(r.steps/r.rotor)}}function bN(e){let t=!1;for(let r of e.logics){if(!r.regs.length)continue;let n=Nl.get(r.p.id)||{regs:{},clk:{}},o={};for(let s of r.regs){let a=n.clk[s.name],i=s.clk;n.clk[s.name]=i;let l=s.edge==="fall"?a===1&&i===0:a===0&&i===1;o[s.name]=s.async!=null?s.async:l?s.d:s.name in n.regs?n.regs[s.name]:s.val}for(let s in o)o[s]!==n.regs[s]&&(t=!0);n.regs=o,Nl.set(r.p.id,n)}return t}var n_={gpios:new Set(["I"]),srcI:new Set(["I"])},o_={off:0,sat:1,act:2},yN=["leds","picos","gpios","bats","srcI","fets","caps","bjts","motors","servos","logics","steppers"];function kN(e){if(e.length===1)return e[0].o;let t=e[0].o,r={...t,netV:new Map,floating:new Set};for(let{w:n,o}of e){for(let[s,a]of o.netV)r.netV.set(s,(r.netV.get(s)||0)+n*a);for(let s of o.floating)r.floating.add(s)}for(let n of yN){let o=t[n].map((s,a)=>{let i={...s};for(let l in s){let c=s[l],u=e.map(({w:d,o:p})=>[d,p[n][a][l]]);typeof c=="number"&&u.every(([,d])=>d===c)?i[l]=c:typeof c=="number"?i[l]=n_[n]&&n_[n].has(l)?u.reduce((d,[,p])=>Math.abs(p)>Math.abs(d)?p:d,0):u.reduce((d,[p,m])=>d+p*(typeof m=="number"?m:0),0):typeof c=="boolean"?i[l]=u.some(([,d])=>d):l==="st"&&(i[l]=u.reduce((d,[,p])=>o_[p]>o_[d]?p:d,c))}return i});r[n]=o}return r}function vN(e,t,r){let n=new Map,o=x=>(n.has(x)||n.set(x,n.size),n.get(x));for(let x of t.pins)x.net>=0&&o(x.net);for(let x of e.parts)for(let $ of W[x.type].def.model||[])$.el==="mcu"&&!$.vbus&&o("usb:"+x.id);let s=n.size,a=[],i=[],l=[],c=[],u=[],d=[],p=[],m=[],b=[],f=[],h=[];for(let x of e.parts){let $=t.byPart.get(x.id),F=$.map,y=j=>n.get(F[j].net),L=W[x.type].def.model;if(!L)continue;let Y=Ol(x),Oe=j=>j!=null?ve(j,Y):null;for(let j of L)if(j.el==="mcu")a.push({p:x,gnd:y(j.gnd),vbus:j.vbus?y(j.vbus):n.get("usb:"+x.id),vsys:y(j.vsys),v33:y(j.v33),vsysPin:F[j.vsys],vreg:ve(j.vreg??1.8,Y),vmax:Oe(j.vmax),igpio:ve(j.igpio??.012,Y),gp:$.pins.filter(ee=>ee.role==="gpio").map(ee=>({q:ee,node:n.get(ee.net),mode:pa(e,x,ee.id,ee,t)})),reg:!1,d:!1});else if(j.el==="diode")i.push({p:x,a:y(j.a),k:y(j.k),vf:ve(j.vf,Y),ron:Math.max(.001,ve(j.ron??15,Y)),imax:Oe(j.imax),light:!!j.light,on:!1});else if(j.el==="resistor")l.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y))});else if(j.el==="source")c.push({p:x,a:y(j.p),b:y(j.n),E:ve(j.v,Y),g:1/Math.max(.001,ve(j.rint??.1,Y)),kind:j.kind||"battery"});else if(j.el==="capacitor")d.push({p:x,a:y(j.a),b:y(j.b),f:ve(j.f,Y),vmax:Oe(j.vmax),polar:!!j.polar});else if(j.el==="npn")p.push({p:x,c:y(j.c),b:y(j.b),e:y(j.e),beta:Math.max(1,ve(j.beta,Y)),vbe:ve(j.vbe??.65,Y),vcesat:ve(j.vcesat??.1,Y),imax:Oe(j.imax),be:!1,st:"off",ic:0});else if(j.el==="motor")m.push({p:x,a:y(j.a),b:y(j.b),g:1/Math.max(.001,ve(j.ohm,Y)),vnom:Math.max(.1,ve(j.vnom,Y))});else if(j.el==="stepper")h.push({p:x,com:y(j.com),coils:[y(j.a),y(j.b),y(j.c),y(j.d)],g:1/Math.max(.001,ve(j.ohm,Y)),steps:Math.max(1,ve(j.steps??4096,Y)),rotor:Math.max(1,ve(j.rotor??64,Y))});else if(j.el==="servo")b.push({p:x,vp:y(j.vp),gnd:y(j.gnd),sigNet:F[j.sig].net,g:1/Math.max(.001,ve(j.ohm,Y)),pmin:ve(j.pmin??.5,Y),pmax:ve(j.pmax??2.5,Y)});else if(j.el==="logic"){let ee=$.pins,G=Pe=>{try{return Pe&&String(Pe).trim()?aa(String(Pe)):null}catch{return null}},ue=new Map,we=[],X=(Nl.get(x.id)||{regs:{}}).regs,xe=[];for(let Pe of j.regs||[]){let ct=G(Pe.clk),Ue=G(Pe.d);!ct||!Ue||xe.push({name:Pe.name,clk:ct,d:Ue,reset:G(Pe.reset),set:G(Pe.set),edge:Pe.edge==="fall"?"fall":"rise",stored:X[Pe.name]??Pe.init??0,eff:"X"})}let mt=new Set(xe.map(Pe=>Pe.name)),nt=Pe=>{if(Pe)for(let ct of Vn(Pe)){if(ue.has(ct)||mt.has(ct))continue;let Ue=Pl(ct,ee);if(!Ue)continue;let Yt=F[Ue];ue.set(ct,{q:Yt,node:y(Ue),open:(t.netPins.get(Yt.net)||[]).length<=1&&(t.netSecs.get(Yt.net)||0)<=1})}};for(let Pe of j.outs||[]){let ct=G(Pe.expr),Ue=G(Pe.oe);!ct||!F[Pe.pin]||(we.push({p:x,pin:F[Pe.pin],node:y(Pe.pin),ast:ct,oe:Ue,type:Pe.type==="od"?"od":"pp",st:"z"}),nt(ct),nt(Ue))}for(let Pe of xe)nt(Pe.clk),nt(Pe.d),nt(Pe.reset),nt(Pe.set);f.push({p:x,vcc:y(j.vcc),gnd:y(j.gnd),ins:ue,outs:we,regs:xe,vih:ve(j.vih??.7,Y),vil:ve(j.vil??.3,Y),g:1/Math.max(1,ve(j.rout??50,Y)),imax:ve(j.imax??.025,Y),vdd:0})}else j.el==="nmos"&&u.push({p:x,d:y(j.d),g:y(j.g),s:y(j.s),vth:ve(j.vth,Y),ron:Math.max(.001,ve(j.ron,Y)),imax:Oe(j.imax),on:!1})}let g=new Float64Array(s),v=[];for(let x=0;x<60;x++){v=[];let $=(y,L,Y,Oe,j,ee,G,ue)=>v.push(G==null?{a:y,b:L,g:Y,E:Oe,kind:j,ref:ee}:{a:y,b:L,g:Y,E:Oe,kind:j,ref:ee,cp:G,cn:ue});for(let y=0;y<s;y++)$(y,-1,1e-9,0,"leak");for(let y of a)if($(y.gnd,-1,1e4,0,"gref",y),e.settings.usb&&$(y.vbus,y.gnd,10,5,"vbus",y),y.vbus!==y.vsys&&$(y.vbus,y.vsys,y.d?5:1e-9,y.d?.3:0,"pdiode",y),y.reg){$(y.v33,y.gnd,10,3.3,"v33",y);for(let L of y.gp){let Y=L.mode==="pwm"?r&&r.has(y.p.id+"."+L.q.id)?"out_high":"out_low":L.mode;Y==="pullup"?$(L.node,y.v33,2e-5,0,"pull",L):Y==="pulldown"?$(L.node,y.gnd,2e-5,0,"pull",L):Y==="out_high"?$(L.node,y.gnd,1/40,3.3,"gout",L):Y==="out_low"&&$(L.node,y.gnd,1/40,0,"gout",L)}}for(let y of l)$(y.a,y.b,y.g,0,"res",y);for(let y of m)$(y.a,y.b,y.g,0,"motor",y);for(let y of f)for(let L of y.outs)L.st===1?$(L.node,y.vcc,y.g,0,"lout",L):L.st===0&&$(L.node,y.gnd,y.g,0,"lout",L);for(let y of b)$(y.vp,y.gnd,y.g,0,"servo",y);for(let y of h)for(let L of y.coils)$(y.com,L,y.g,0,"coil",y);for(let y of i)$(y.a,y.k,y.on?1/y.ron:1e-9,y.on?y.vf:0,"led",y);for(let y of c)$(y.a,y.b,y.g,y.E,"bat",y);for(let y of u)$(y.d,y.s,y.on?1/y.ron:1e-9,0,"fet",y);for(let y of p)$(y.b,y.e,y.be?1/Gp:1e-9,y.be?y.vbe:0,"bjt_be",y),y.st==="sat"?$(y.c,y.e,1/r_,y.vcesat,"bjt_ce",y):y.st==="act"&&$(y.c,y.e,y.beta/Gp,y.vbe,"bjt_ce",y,y.b,y.e);g=Bp(s,v);let F=!1;for(let y of i){let L=g[y.a]-g[y.k];!y.on&&L>y.vf+1e-4?(y.on=!0,F=!0):y.on&&L<y.vf&&(y.on=!1,F=!0)}for(let y of u){let L=g[y.g]-g[y.s]>y.vth;L!==y.on&&(y.on=L,F=!0)}for(let y of f){let L=g[y.vcc]-g[y.gnd];y.vdd=L;let Y=G=>{let ue=y.ins.get(G);if(!ue||ue.open)return"X";let we=g[ue.node]-g[y.gnd];return we>=y.vih*L?1:we<=y.vil*L?0:"X"},Oe=new Map(y.regs.map(G=>[G.name,G])),j=G=>Oe.has(G)?Oe.get(G).stored:Y(G);for(let G of y.regs){let ue=G.reset?yr(G.reset,j):0,we=G.set?yr(G.set,j):0;G.async=L<1?null:ue===1?0:we===1?1:null,G.eff=L<1?"X":G.async??G.stored}let ee=G=>Oe.has(G)?Oe.get(G).eff:Y(G);y.lvl=ee;for(let G of y.outs){let ue="z";if(L>=1&&(G.oe?yr(G.oe,ee):1)===1){let X=yr(G.ast,ee);ue=X==="X"?"z":G.type==="od"?X?"z":0:X}ue!==G.st&&(G.st=ue,F=!0)}}for(let y of p){let L=g[y.b]-g[y.e],Y=g[y.c]-g[y.e];!y.be&&L>y.vbe+1e-4?(y.be=!0,F=!0):y.be&&L<y.vbe&&(y.be=!1,F=!0);let Oe=y.beta*(y.be?Math.max(0,(L-y.vbe)/Gp):0);y.be?y.st==="off"?(y.st="act",F=!0):y.st==="sat"?(Y-y.vcesat)/r_>Oe*1.02+1e-9&&(y.st="act",F=!0):Y<y.vcesat-.01&&(y.st="sat",F=!0):y.st!=="off"&&(y.st="off",F=!0)}for(let y of a){if(y.vbus===y.vsys)y.d=!!e.settings.usb;else{let Y=g[y.vbus]-g[y.vsys];!y.d&&Y>.3001?(y.d=!0,F=!0):y.d&&Y<.3&&(y.d=!1,F=!0)}let L=g[y.vsys]-g[y.gnd]>y.vreg;L!==y.reg&&(y.reg=L,F=!0)}if(!F)break}let _=x=>x!=null&&x>=0?g[x]:0,w=x=>x.g*(_(x.cp??x.a)-_(x.cn??x.b)-x.E),k=Array.from({length:s},()=>[]),P=new Set;for(let x of v)x.kind==="leak"||x.g<1e-6||x.cp!=null||(x.a>=0&&x.b>=0&&(k[x.a].push(x.b),k[x.b].push(x.a)),["gref","vbus","v33","gout","bat"].includes(x.kind)&&(x.a>=0&&P.add(x.a),x.b>=0&&P.add(x.b)));let A=new Uint8Array(s),Z=[...P];for(Z.forEach(x=>A[x]=1);Z.length;){let x=Z.pop();for(let $ of k[x])A[$]||(A[$]=1,Z.push($))}let D=new Map,B=new Set;for(let[x,$]of n)D.set(x,g[$]),A[$]||B.add(x);let K={netV:D,floating:B,leds:[],picos:[],gpios:[],bats:[],srcI:[],fets:[],caps:[],bjts:[],motors:[],servos:[],logics:[],steppers:[]};for(let x of h){let $=x.coils.map(F=>g[x.com]-g[F]);K.steppers.push({p:x.p,steps:x.steps,rotor:x.rotor,ua:$[0],ub:$[1],uc:$[2],ud:$[3],I:$.reduce((F,y)=>F+Math.max(0,y),0)*x.g})}for(let x of f){let $=g[x.gnd],F=y=>{if(y.open||!A[y.node])return"X";let L=g[y.node]-$;return L>=x.vih*x.vdd?1:L<=x.vil*x.vdd?0:"X"};K.logics.push({p:x.p,vdd:x.vdd,imax:x.imax,ins:[...x.ins].map(([y,L])=>({name:y,lv:x.vdd>=1?F(L):"X",open:L.open||!A[L.node]})),outs:x.outs.map(y=>{let L=v.find(Y=>Y.kind==="lout"&&Y.ref===y);return{name:y.pin.name,st:y.st,I:L?Math.abs(w(L)):0}}),regs:x.regs.map(y=>({name:y.name,val:y.eff,clk:x.vdd>=1&&x.lvl?yr(y.clk,x.lvl):"X",d:x.vdd>=1&&x.lvl?yr(y.d,x.lvl):"X",async:y.async??null,edge:y.edge}))})}for(let x of m){let $=g[x.a]-g[x.b];K.motors.push({p:x.p,U:$,I:$*x.g,vnom:x.vnom,speed:Math.max(-1.5,Math.min(1.5,$/x.vnom))})}for(let x of b){let $=g[x.vp]-g[x.gnd];K.servos.push({p:x.p,U:$,I:$*x.g,sigNet:x.sigNet,pmin:x.pmin,pmax:x.pmax})}for(let x of d){let $=g[x.a]-g[x.b],F=Bp(s,[...v,{a:x.a,b:x.b,g:1e-9,E:-1e6}]),y=Math.abs(F[x.a]-F[x.b]-$)/.001;K.caps.push({p:x.p,U:$,f:x.f,vmax:x.vmax,polar:x.polar,R:y,tau:y<1e8?y*x.f:null,float:!A[x.a]||!A[x.b]})}for(let x of p){let $=v.find(y=>y.kind==="bjt_be"&&y.ref===x),F=v.find(y=>y.kind==="bjt_ce"&&y.ref===x);K.bjts.push({p:x.p,st:x.st,ib:$?Math.max(0,w($)):0,ic:F?w(F):0,vbe:g[x.b]-g[x.e],vce:g[x.c]-g[x.e],beta:x.beta,imax:x.imax,floatBase:!A[x.b]})}for(let x of v){if(x.kind==="led"){let $=x.ref;K.leds.push({p:$.p,I:Math.max(0,w(x)),on:$.on,light:$.light,imax:$.imax})}if(x.kind==="fet"){let $=x.ref;K.fets.push({p:$.p,on:$.on,vgs:g[$.g]-g[$.s],I:w(x),imax:$.imax,floatGate:!A[$.g]})}if(x.kind==="bat"){let $=x.ref;K.bats.push({p:$.p,I:w(x),kind:$.kind,node:x.a})}x.kind==="vbus"&&K.srcI.push({kind:"vbus",pc:x.ref,I:-w(x)}),x.kind==="v33"&&K.srcI.push({kind:"v33",pc:x.ref,I:-w(x)})}for(let x of a){K.picos.push({p:x.p,powered:x.reg,usb:e.settings.usb,feeds:x.d,vsys:x.vsys,vsysName:x.vsysPin.name,Usys:g[x.vsys]-g[x.gnd],vreg:x.vreg,vmax:x.vmax,igpio:x.igpio});for(let $ of x.gp){let F=v.find(y=>y.kind==="gout"&&y.ref===$);K.gpios.push({p:x.p,q:$.q,mode:$.mode,V:g[$.node]-g[x.gnd],I:F?-w(F):0,float:!A[$.node],powered:x.reg})}}return K}var a_=e=>e.powered?e.float?"?":e.mode==="adc"?"A":e.mode==="pwm"?"P":e.V>=2?"1":e.V<=.8?"0":"?":"\u2013";var zN=e=>e.settings.autoCut??e.board.sec>=e.board.rows;function _N(e){let t=(u,d)=>vr(e.board,u,d),r=new Map,n=u=>{for(;r.has(u)&&r.get(u)!==u;)u=r.get(u);return u},o=(u,d)=>{u=n(u),d=n(d),u!==d&&r.set(u,d)},s=[];for(let u of e.parts){if(Ae(u))continue;let d=zr(u);for(let p of me(u))t(p.r,p.c)&&s.push({q:p,key:ce(p.part)&&p.role==="gnd"?"GND":u.id+":"+d[p.id]})}let a=Il(e),i=u=>{let d=it(e,a(u));return d?ce(d.part)&&d.role==="gnd"?"GND":d.part.id+":"+zr(d.part)[d.id]:null},l=Tr(e.board,e.cuts||[]),c=new Set(e.links.filter(u=>u.b!=="GPIO"&&u.b!=="GND").map(u=>[u.a,u.b]).flat());for(let u of e.links){let d=i(u.a);if(d)if(u.b==="GND")o(d,"GND");else if(u.b==="GPIO"){let p=it(e,a(u.a)),m=it(e,u.a);if(!p||!m||!t(p.r,p.c))continue;let b=m.role==="adc",f=l.cell(p.r,p.c),h=s.map(_=>_.q).filter(_=>Vp(_,b)&&!c.has(_.part.id+"."+_.id)&&l.cell(_.r,_.c)===f).sort((_,w)=>ua(_)+ca(m.fn,_)-ua(w)-ca(m.fn,w)||Math.abs(_.r-p.r)-Math.abs(w.r-p.r)),g=u.gpio?h.find(_=>_.part.id+"."+_.id===u.gpio):void 0,v=g||h[0];if(v){let _=v.part.id+"."+v.id;c.add(_),u.gpio=_,o(d,i(_))}}else{let p=i(u.b);p&&o(d,p)}}return Uz(e.board,e.cuts||[],s.map(u=>({r:u.q.r,c:u.q.c,net:n(u.key)})),e.cutBan||[])}function Lo(e,t={}){let r=(S,R)=>vr(e.board,S,R);if(zN(e)){let S=JSON.stringify(e.auto.cuts||[]);e.auto.cuts=_N(e),JSON.stringify(e.auto.cuts)!==S&&(t={...t,full:!0})}else e.auto.cuts=[];let n=gn(e),o=n.N,s=(S,R)=>n.cell(S,R),a=[];for(let S of e.parts)for(let R of me(S))r(R.r,R.c)&&a.push(R);let i=new Map(a.map(S=>[S.part.id+"."+S.id,S])),l=Il(e),c=new Map,u=[],d=e.links.map(S=>{let R=l(S.a),V=S.b==="GND"||S.b==="GPIO"?S.b:l(S.b);if(R===S.a&&V===S.b)return S;R!==S.a&&c.set(R,S.a),V!==S.b&&c.set(V,S.b);let z={...S,a:R,b:V};return u.push([z,S]),z}),p=S=>c.has(S)?it(e,c.get(S)):i.get(S),m=d.filter(S=>i.has(S.a)&&(S.b==="GND"||S.b==="GPIO"||i.has(S.b))),b=new Set(m.map(S=>S.id)),f=new Set(a.map(S=>S.r+":"+S.c)),h=new Map(e.parts.map(S=>[S.id,zr(S)])),g=S=>r(S[0],S[1])&&r(S[2],S[3]),v=S=>i.get(S);function _(S,R){let V=new Int32Array(o),z=new Int32Array(o).fill(1),O=new Uint8Array(o);for(let N=0;N<o;N++)V[N]=N;let T=N=>{for(;V[N]!==N;)V[N]=V[V[N]],N=V[N];return N},M=(N,H)=>{if(N=T(N),H=T(H),N!==H){if(N>H){let Q=N;N=H,H=Q}V[H]=N,z[N]+=z[H]}};for(let N of[...e.bridges,...S])if(g(N)){let H=s(N[0],N[1]),Q=s(N[2],N[3]);O[H]=O[Q]=1,M(H,Q)}for(let N of[...e.wires,...R])if(r(N.a[0],N.a[1])&&r(N.b[0],N.b[1])){let H=s(N.a[0],N.a[1]),Q=s(N.b[0],N.b[1]);O[H]=O[Q]=1,M(H,Q)}for(let N of a)O[s(N.r,N.c)]=1;for(let N of e.parts){let H={};for(let Q of me(N))H[Q.id]=Q;for(let[Q,pe]of W[N.type].internal(N))r(H[Q].r,H[Q].c)&&r(H[pe].r,H[pe].c)&&M(s(H[Q].r,H[Q].c),s(H[pe].r,H[pe].c))}return{par:V,sz:z,used:O,find:T,uni:M,bridges:S.map(N=>[N[0],N[1],N[2],N[3],[...N[4]]]),wires:R.map(N=>({...N,links:[...N.links]})),wireEnds:new Set([...e.wires,...R].flatMap(N=>[N.a.join(":"),N.b.join(":")]))}}let w=S=>{let R=new Map;for(let V of a){let z=S.find(s(V.r,V.c));R.has(z)||R.set(z,[]),R.get(z).push(V)}return R},k=S=>!!S&&S.some(R=>ce(R.part)&&R.role==="gnd"),P=(S,R,V)=>!!S&&S.length===1&&ce(S[0].part)&&S[0].role==="gpio"&&V.sz[R]===1,A=S=>(p(S.a)||{role:""}).role==="adc",Z=new Set(m.filter(S=>S.b!=="GND"&&S.b!=="GPIO").flatMap(S=>[S.a,S.b])),D=(S,R)=>{let V=v(R.a);return S.find(s(V.r,V.c))};function B(S,R,V){if(R.b==="GND")return T=>k(V.get(T));if(R.b==="GPIO"){let T=A(R),M=T;if(!T){let N=0,H=new Set;for(let pe of a){if(!Ge(pe,"adc")||pe.role!=="gpio")continue;let te=S.find(s(pe.r,pe.c));!H.has(te)&&P(V.get(te),te,S)&&(H.add(te),N++)}let Q=m.filter(pe=>pe.b==="GPIO"&&A(pe)&&!K(S,pe,V)).length;M=N>Q}return N=>{let H=V.get(N);if(!P(H,N,S))return!1;let Q=H[0];return Z.has(Q.part.id+"."+Q.id)?!1:T?Ge(Q,"adc"):Ge(Q,"in")?!1:Ge(Q,"adc")?M:!0}}let z=v(R.b),O=S.find(s(z.r,z.c));return T=>T===O}function K(S,R,V){let z=D(S,R);if(R.b==="GPIO"){let O=A(R);return(V.get(z)||[]).some(T=>ce(T.part)&&T.role==="gpio"&&(!O||Ge(T,"adc")))}return B(S,R,V)(z)}let x=new Map;for(let S of m){let R=v(S.a),V=R.part.id+":"+h.get(R.part.id)[R.id],z=S.b==="GND"?"GND":S.b==="GPIO"?"G"+S.id:null;z&&!x.has(V)&&x.set(V,z)}let $=S=>{let R=S.filter(M=>ce(M.part)),V=R.some(M=>M.role==="gnd"),z=new Set(V?["GND"]:[]);for(let M of S){let N=x.get(M.part.id+":"+h.get(M.part.id)[M.id]);N&&z.add(N)}if(z.size>1)return!0;let O=new Set(R.filter(M=>M.role!=="gnd").map(M=>M.part.id+"."+M.id));if(V&&O.size||O.size>1)return!0;let T=new Map;for(let M of S){if(ce(M.part))continue;let N=h.get(M.part.id)[M.id];if(T.has(M.part.id)&&T.get(M.part.id)!==N)return!0;T.set(M.part.id,N)}return!1},F=(S,R)=>n.edge(S,R).br,y=(S,R,V)=>{let z=p(V.a);if(!z||!z.fn||V.b!=="GPIO")return null;let O=z.fn.split(".")[0],T=[];for(let M of m){if(M===V||M.b!=="GPIO")continue;let N=p(M.a);if(!N||N.part!==z.part||!N.fn||N.fn.split(".")[0]!==O)continue;let H=(R.get(D(S,M))||[]).find(Q=>ce(Q.part)&&Q.role==="gpio");H&&T.push(new Set(Wr(H,N.fn).map(Q=>Q.split(".")[0])))}return T.length?T.slice(1).reduce((M,N)=>new Set([...M].filter(H=>N.has(H))),T[0]):null};function L(S,R){let V=w(S),z=D(S,R),O=y(S,V,R),T=(p(R.a)||{fn:void 0}).fn;if(K(S,R,V))return{ok:!0,n:0};let M=B(S,R,V),N=R.b==="GPIO"&&!A(R),H=-1;if(R.b==="GPIO"&&R.gpio&&i.has(R.gpio)){let ne=v(R.gpio);H=S.find(s(ne.r,ne.c))}let Q=new Float64Array(o*5).fill(1e9),pe=new Int32Array(o*5).fill(-1),te=[],ae=(ne,Ee)=>{te.push([ne,Ee]);let qe=te.length-1;for(;qe>0;){let yt=qe-1>>1;if(te[yt][0]<=te[qe][0])break;[te[yt],te[qe]]=[te[qe],te[yt]],qe=yt}},re=()=>{let ne=te[0],Ee=te.pop();if(te.length){te[0]=Ee;let qe=0;for(;;){let yt=2*qe+1,kt=yt+1,vt=qe;if(yt<te.length&&te[yt][0]<te[vt][0]&&(vt=yt),kt<te.length&&te[kt][0]<te[vt][0]&&(vt=kt),vt===qe)break;[te[vt],te[qe]]=[te[qe],te[vt]],qe=vt}}return ne};for(let ne=0;ne<o;ne++)S.find(ne)===z&&(Q[ne*5+4]=0,ae(0,ne*5+4));let Me=null,ot=1e9;for(;te.length;){let[ne,Ee]=re();if(ne>Q[Ee])continue;if(ne>=ot)break;let qe=Ee/5|0,yt=Ee%5;for(let kt of n.adj(qe)){let vt=kt.dir,Tt=kt.to,wr=S.find(Tt);if(wr===z)continue;let Gn=1+(yt!==4&&yt!==vt?.6:0);if(S.used[Tt]||S.sz[wr]>1){if(M(wr)){let Un=(V.get(wr)||[])[0],U_=!!O&&O.size>0&&!!Un&&Fn(Un.part)!=="matrix"&&!Wr(Un,T||"").some(q_=>O.has(q_.split(".")[0])),df=ne+Gn+(H>=0&&wr!==H?14:0)+(N&&Ge(Un,"adc")?12:0)+(R.b==="GPIO"&&wr!==H?ua(Un)+ca(T,Un)+(U_?12:0):0);df<ot&&(ot=df,Me={s:Ee,n:Tt})}continue}let Yr=Tt*5+vt,Zl=ne+Gn;Zl<Q[Yr]&&(Q[Yr]=Zl,pe[Yr]=Ee,ae(Zl,Yr))}}if(!Me)return{ok:!1};let dt=[Me.n],$e=Me.s;for(;$e>=0;)dt.push($e/5|0),$e=pe[$e];for(let ne=0;ne+1<dt.length;ne++){let Ee=F(dt[ne],dt[ne+1]);S.bridges.push([Ee[0],Ee[1],Ee[2],Ee[3],[R.id]])}for(let ne of dt)S.used[ne]=1;for(let ne=0;ne+1<dt.length;ne++)S.uni(dt[ne],dt[ne+1]);return{ok:!0,n:dt.length-1}}let Y=S=>{let R=v(S.a);if(S.b!=="GND"&&S.b!=="GPIO"){let O=v(S.b);return Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)}let V=S.b==="GPIO"&&A(S),z=1e9;for(let O of a)(S.b==="GND"?ce(O.part)&&O.role==="gnd":Vp(O,V))&&(z=Math.min(z,Math.abs(R.r-O.r)/3+Math.abs(R.c-O.c)));return z},Oe=S=>S.b==="GND"?2:S.b==="GPIO"?A(S)?.5:1:0,j=(S,R)=>Oe(S)-Oe(R)||Y(R)-Y(S);function ee(){let S=[...m].sort(j),R=7,V=()=>(R=R*16807%2147483647)/2147483647,z=null,O=-1;for(let T=0;T<60;T++){let M=_([],[]),N=[],H=0;for(let te of S){let ae=L(M,te);ae.ok?H+=ae.n||0:N.push(te)}let Q=0;{let te=w(M);for(let ae of m){let re=p(ae.a);if(!re||!re.fn||ae.b!=="GPIO")continue;let Me=(te.get(D(M,ae))||[]).find(dt=>ce(dt.part)&&dt.role==="gpio");if(!Me||Fn(Me.part)==="matrix")continue;if(!Wr(Me,re.fn).length){Q++;continue}let ot=y(M,te,ae);(ot&&ot.size===0||ot&&!Wr(Me,re.fn).some(dt=>ot.has(dt.split(".")[0])))&&Q++}}let pe=N.length*1e4+Q*300+H;if((!z||pe<z.score)&&(z={score:pe,S:M,fails:N}),!N.length&&O<0&&(O=T),O>=0&&T>=O+14)break;if(N.length&&(S=[...N,...S.filter(te=>!N.includes(te))]),T>8||O>=0){for(let te=S.length-1;te>0;te--)if(V()<.3){let ae=V()*(te+1)|0;[S[te],S[ae]]=[S[ae],S[te]]}}}return z||{S:_([],[]),fails:[]}}function G(){let S=e.auto.bridges.filter(g).map(T=>[T[0],T[1],T[2],T[3],[...T[4]||[]]]),R=e.auto.wires.map(T=>({...T,links:[...T.links||[]]})),V=new Set;if(t.moved)for(let T of m)[T.a,T.b].some(M=>t.moved.has(M.split(".")[0]))&&V.add(T.id);for(let T=0;T<10;T++){let M=re=>re.filter(Me=>b.has(Me)&&!V.has(Me));S=S.map(re=>(re[4]=M(re[4]),re)).filter(re=>re[4].length),R=R.map(re=>(re.links=M(re.links),re)).filter(re=>re.links.length);let N=_(S,R),H=w(N),Q=new Set,pe=!1;for(let[re,Me]of H)$(Me)&&Q.add(re);let te=re=>{for(let Me of re)V.has(Me)||(V.add(Me),pe=!0)};for(let re of S)Q.has(N.find(s(re[0],re[1])))&&te(re[4]);for(let re of R)Q.has(N.find(s(re.a[0],re.a[1])))&&te(re.links);let ae=new Set([...S.flatMap(re=>re[4]),...R.flatMap(re=>re.links)]);for(let re of m)ae.has(re.id)&&!K(N,re,H)&&te([re.id]);if(!pe)break}let z=_(S,R),O=[];for(let T of m.filter(M=>!K(z,M,w(z))).sort(j))L(z,T).ok||O.push(T);return{S:z,fails:O}}let ue=t.full||!e.auto.bridges.length&&!e.auto.wires.length?ee():G();if(ue.fails.length&&!t.full){let S=ee();S.fails.length<ue.fails.length&&(ue=S)}let we=ue.S,X=S=>n.segs[S].drilled?[]:n.holes(S).filter(([R,V])=>{let z=R+":"+V;return!f.has(z)&&!we.wireEnds.has(z)});for(let S of ue.fails){let R=D(we,S),V=w(we),z=B(we,S,V),O=[],T=[];for(let H=0;H<o;H++){let Q=we.find(H);Q===R?O.push(H):z(Q)&&T.push(H)}let M=null,N=1e9;for(let H of O)for(let Q of X(H))for(let pe of T)for(let te of X(pe)){let ae=Math.hypot(Q[0]-te[0],Q[1]-te[1]);ae<N&&(N=ae,M=[Q,te,pe])}M&&(we.wires.push({a:M[0],b:M[1],color:"#7048e8",links:[S.id]}),we.wireEnds.add(M[0].join(":")),we.wireEnds.add(M[1].join(":")),we.uni(R,M[2]))}let xe=new Map;for(let S of e.parts)if(Ae(S))for(let R of me(S))xe.set(S.id+"."+R.id,R);let mt=d.filter(S=>xe.has(S.a)||xe.has(S.b)).sort((S,R)=>Oe(S)-Oe(R)),nt=new Set,Pe=e.parts.filter(S=>!Ae(S)).map(S=>{let R=W[S.type].bounds(S),V=[It(S,R.r0,R.c0),It(S,R.r1,R.c1)];return[Math.min(V[0][0],V[1][0]),Math.max(V[0][0],V[1][0]),Math.min(V[0][1],V[1][1]),Math.max(V[0][1],V[1][1])]}),ct=S=>Pe.some(([R,V,z,O])=>S[0]>R&&S[0]<V&&S[1]>z&&S[1]<O),Ue=new Set(["p33","pwr","bp","chg","pout","vin","mp"]);for(let S of mt){let R=xe.get(S.a)||xe.get(S.b),V=xe.has(S.a)?S.b:S.a;if(xe.has(V)){let ae=xe.get(V);we.wires.push({a:[R.r,R.c],b:[ae.r,ae.c],color:"#495057",links:[S.id]});continue}let z=i.get(V),O=V==="GND"||R.role==="gnd"||z&&z.role==="gnd"?"#212529":Ue.has(R.role)||z&&Ue.has(z.role)?"#c92a2a":"#e8590c",T=w(we),M,N=-1;if(V==="GND")M=ae=>k(T.get(ae));else if(V==="GPIO"){let ae=R.role==="adc";if(S.gpio&&i.has(S.gpio)){let re=v(S.gpio);N=we.find(s(re.r,re.c))}M=re=>{let Me=T.get(re);if(nt.has(re)||!P(Me,re,we))return!1;let ot=Me[0];return Z.has(ot.part.id+"."+ot.id)?!1:ae?Ge(ot,"adc"):!Ge(ot,"in")}}else{let ae=i.get(V);if(!ae)continue;let re=we.find(s(ae.r,ae.c));M=Me=>Me===re}let H=null,Q=1e9;for(let ae=0;ae<o;ae++){let re=we.find(ae);if(!M(re))continue;let Me=(T.get(re)||[])[0],ot=V==="GPIO"&&R.role!=="adc"&&Ge(Me,"adc")?6:0,dt=re===N?-1e4:0,$e=V==="GPIO"?ua(Me)+ca(R.fn,Me):0;for(let ne of X(ae)){let Ee=Math.hypot(ne[0]-R.r,ne[1]-R.c)+ot+dt+$e+(ct(ne)?20:0);Ee<Q&&(Q=Ee,H={h:ne,r:re})}}{let ae=V!=="GND"&&V!=="GPIO"?i.get(V):null;if(ae&&!ce(ae.part)){let re=X(s(ae.r,ae.c)).some(ot=>!ct(ot)),Me=Math.hypot(ae.r-R.r,ae.c-R.c)+(re?3:-5);Me<Q&&!we.wireEnds.has(ae.r+":"+ae.c)&&(Q=Me,H={h:[ae.r,ae.c],r:we.find(s(ae.r,ae.c))})}}if(!H)continue;let pe=H.h,te=H.r;if(we.wires.push({a:[R.r,R.c],b:pe,color:O,links:[S.id]}),we.wireEnds.add(pe.join(":")),V==="GPIO"){nt.add(te);let ae=(T.get(te)||[]).find(re=>re.role==="gpio");ae&&(S.gpio=ae.part.id+"."+ae.id)}}e.auto={bridges:we.bridges,wires:we.wires,cuts:e.auto.cuts||[]};let Yt=w(we);for(let S of m){if(S.b!=="GPIO"||mt.includes(S))continue;let R=A(S),V=(Yt.get(D(we,S))||[]).find(z=>ce(z.part)&&z.role==="gpio"&&(!R||Ge(z,"adc")));V&&(S.gpio=V.part.id+"."+V.id)}for(let[S,R]of u)R.gpio=S.gpio}function l_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r0,t.c1],[t.r1,t.c0],[t.r1,t.c1]].map(([s,a])=>It(e,s,a)),n=r.map(s=>s[0]),o=r.map(s=>s[1]);return{r0:Math.round(Math.min(...n)),r1:Math.round(Math.max(...n)),c0:Math.round(Math.min(...o)),c1:Math.round(Math.max(...o))}}function ma(e){let t=e.board,r=(f,h)=>Math.max(0,Math.min(h-1,f)),n=1/0,o=-1/0,s=1/0,a=-1/0,i=0,l=0,c=0,u=(f,h)=>{f=r(f,t.rows),h=r(h,t.cols),n=Math.min(n,f),o=Math.max(o,f),s=Math.min(s,h),a=Math.max(a,h)};for(let f of e.parts){if(Ae(f))continue;let h=l_(f),g={r0:r(h.r0,t.rows),r1:r(h.r1,t.rows),c0:r(h.c0,t.cols),c1:r(h.c1,t.cols)};l++,f.fixed&&c++,i+=(g.r1-g.r0+1)*(g.c1-g.c0+1),u(g.r0,g.c0),u(g.r1,g.c1)}for(let f of[...e.bridges,...e.auto.bridges])u(f[0],f[1]),u(f[2],f[3]);for(let f of[...e.wires,...e.auto.wires])for(let h of[f.a,f.b])h[0]>=0&&h[0]<t.rows&&h[1]>=0&&h[1]<t.cols&&u(h[0],h[1]);let d=t.rows*t.cols;if(n===1/0)return{box:null,rows:0,cols:0,area:0,boardArea:d,partArea:0,fill:0,parts:l,fixed:c};let p=o-n+1,m=a-s+1,b=p*m;return{box:{r0:n,r1:o,c0:s,c1:a},rows:p,cols:m,area:b,boardArea:d,partArea:i,fill:Math.min(1,i/b),parts:l,fixed:c}}var i_=e=>JSON.parse(JSON.stringify(e)),wN=(e,t)=>Math.abs(e.r-t.r)/3+Math.abs(e.c-t.c);function Rl(e){let t=Do(e,Cr(e)),r=0;for(let n of t.values())n.ok&&r++;return{stats:ma(e),links:e.links.length,linksOk:r,bridges:e.bridges.length+e.auto.bridges.length,wires:e.wires.length+e.auto.wires.length,cuts:(e.cuts||[]).length+(e.auto.cuts||[]).length}}var Kp=e=>{e.settings.autoRoute&&e.links.length&&Lo(e,{full:!0})};function c_(e,t={}){let r=Math.max(0,Math.min(1,t.strength??.5)),n=r<.34?2:r<.67?1:0,o=.25-.22*r,s=.02+.1*r,a=Math.round(4+8*r),i=t.keepMcu!==!1,l=t.keepControls!==!1,c=t.rotate!==!1,u=t.maxPasses??40,d=t.only?new Set(t.only):null,p=i_(e);Kp(p);let m=Rl(e),b=Rl(p),f=m.linksOk>=b.linksOk?m:b,h=p.board,g=(z,O)=>z>=0&&O>=0&&z<h.rows&&O<h.cols,v=Tr(h,p.cuts||[]),_=(z,O)=>g(z,O)&&!v.drilled(z,O)?v.cell(z,O):-1,w=new Map,k=z=>{let O=w.get(z);if(O==null||O===z)return w.set(z,z),z;let T=k(O);return w.set(z,T),T},P=(z,O)=>{let T=k(z),M=k(O);T!==M&&w.set(T,M)};for(let z of p.parts){let O=zr(z);for(let T in O)P(z.id+"."+T,z.id+"."+O[T]);for(let T of me(z))ce(z)&&T.role==="gnd"&&P(z.id+"."+T.id,"GND")}for(let z of p.links)z.b==="GND"?P(z.a,"GND"):z.b==="GPIO"?z.gpio&&P(z.a,z.gpio):P(z.a,z.b);let A=(z,O)=>k(z+"."+O),Z={},D=z=>!!((W[z.type].def.controls||[]).length||W[z.type].def.socket);for(let z of p.parts){let O=Ae(z)?"off":z.fixed?"fixed":i&&ce(z)?"mcu":l&&D(z)?"control":d&&!d.has(z.id)?"scope":null;O&&(Z[z.id]=O)}let B=new Set;for(let z of p.bridges)B.add(_(z[0],z[1])),B.add(_(z[2],z[3]));for(let z of p.wires)for(let O of[z.a,z.b])B.add(_(O[0],O[1]));let K=new Map;for(let z of p.parts)if(!Ae(z))for(let O of me(z)){let T=_(O.r,O.c);T<0||(K.has(T)||K.set(T,[]),K.get(T).push({pid:z.id,net:A(z.id,O.id)}))}for(let z of p.parts)if(!(Z[z.id]||Ae(z)))for(let O of me(z)){let T=_(O.r,O.c);if(T<0)continue;let M=A(z.id,O.id);if(B.has(T)&&T>=0||(K.get(T)||[]).some(N=>N.pid!==z.id&&N.net!==M)){Z[z.id]="manual";break}}let x=p.parts.filter(z=>!Z[z.id]),$={};for(let z in Z){let O=p.parts.find(T=>T.id===z);$[O.label]=Z[z]}if(!x.length)return{moves:[],before:f,after:f,kept:$};let F=z=>{let O=it(p,z);return O?Zp(O).map(T=>({pid:O.part.id,pin:T.id})):[]},y=z=>p.parts.filter(O=>ce(O)).flatMap(O=>me(O).filter(T=>T.role===z&&g(T.r,T.c)).map(T=>({pid:O.id,pin:T.id}))),L=p.links.map(z=>[F(z.a),z.b==="GND"?y("gnd"):z.b==="GPIO"?z.gpio?F(z.gpio):y("gpio"):F(z.b)]),Y=new Map;L.forEach(([z,O],T)=>{for(let M of[...z,...O]){Y.has(M.pid)||Y.set(M.pid,[]);let N=Y.get(M.pid);N.includes(T)||N.push(T)}});let Oe=new Map,j=new Map,ee=z=>{let O=l_(z),T=me(z);return{r0:Math.min(O.r0,...T.map(M=>M.r)),r1:Math.max(O.r1,...T.map(M=>M.r)),c0:Math.min(O.c0,...T.map(M=>M.c)),c1:Math.max(O.c1,...T.map(M=>M.c))}},G=z=>{Oe.set(z.id,new Map(me(z).map(O=>[O.id,{r:O.r,c:O.c}]))),Ae(z)||j.set(z.id,ee(z))};for(let z of p.parts)G(z);let ue=(z,O)=>{let T=N=>(O&&N.pid===O.pid?O.pins:Oe.get(N.pid)).get(N.pin),M=1/0;for(let N of L[z][0]){let H=T(N);if(H)for(let Q of L[z][1]){if(Q.pid===N.pid&&Q.pin===N.pin)continue;let pe=T(Q);pe&&(M=Math.min(M,wN(H,pe)))}}return M===1/0?0:M},we=new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),X=new Map;for(let z of x){let O=c?[0,1,2,3]:[z.rot];X.set(z.id,O.map(T=>{let M={...z,r:0,c:0,rot:T};return{rot:T,pins:me(M).map(N=>({id:N.id,r:N.r,c:N.c})),rect:ee(M)}}))}let xe=z=>{let O=1/0,T=-1/0,M=1/0,N=-1/0;for(let[$e,ne]of j)$e!==z.id&&(O=Math.min(O,ne.r0),T=Math.max(T,ne.r1),M=Math.min(M,ne.c0),N=Math.max(N,ne.c1));let H=[...j].filter(([$e])=>$e!==z.id).map($e=>$e[1]),Q=Y.get(z.id)||[],pe=we.get(z.id),te=($e,ne,Ee)=>{let qe=new Map($e.pins.map(Tt=>[Tt.id,{r:Tt.r+ne,c:Tt.c+Ee}])),yt=0;for(let Tt of Q)yt+=ue(Tt,{pid:z.id,pins:qe});let kt={r0:Math.min(O,$e.rect.r0+ne),r1:Math.max(T,$e.rect.r1+ne),c0:Math.min(M,$e.rect.c0+Ee),c1:Math.max(N,$e.rect.c1+Ee)},vt=(kt.r1-kt.r0+1)*(kt.c1-kt.c0+1);return yt+s*vt+o*(Math.abs(ne-pe.r)+Math.abs(Ee-pe.c)+($e.rot!==pe.rot?2:0))},ae=X.get(z.id).find($e=>$e.rot===z.rot)||X.get(z.id)[0],re=te(ae,z.r,z.c),Me=new Set,ot=[],dt=($e,ne,Ee)=>{let qe=$e.rot+":"+ne+":"+Ee;Me.has(qe)||(Me.add(qe),ot.push([te($e,ne,Ee),$e,ne,Ee]))};for(let $e of X.get(z.id)){for(let ne=-a;ne<=a;ne++)for(let Ee=-a;Ee<=a;Ee++)dt($e,z.r+ne,z.c+Ee);if(Q.length<=8)for(let ne of Q)for(let Ee of[0,1]){let qe=L[ne][Ee].filter(kt=>kt.pid===z.id),yt=L[ne][1-Ee].filter(kt=>kt.pid!==z.id);for(let kt of qe){let vt=$e.pins.find(Tt=>Tt.id===kt.pin);if(vt)for(let Tt of yt){let wr=Oe.get(Tt.pid).get(Tt.pin);if(wr)for(let Gn=-4;Gn<=4;Gn++)for(let Yr=-3;Yr<=3;Yr++)dt($e,wr.r+Gn-vt.r,wr.c+Yr-vt.c)}}}}ot.sort(($e,ne)=>$e[0]-ne[0]||$e[2]-ne[2]||$e[3]-ne[3]||$e[1].rot-ne[1].rot);for(let[$e,ne,Ee,qe]of ot){if($e>=re-1e-6)return!1;if(mt(z,ne,Ee,qe,H))return z.r=Ee,z.c=qe,z.rot=ne.rot,G(z),!0}return!1},mt=(z,O,T,M,N)=>{let H={r0:O.rect.r0+T,r1:O.rect.r1+T,c0:O.rect.c0+M,c1:O.rect.c1+M};if(H.r0<0||H.c0<0||H.r1>=h.rows||H.c1>=h.cols)return!1;for(let pe of N)if(H.r0-n<=pe.r1&&pe.r0<=H.r1+n&&H.c0-n<=pe.c1&&pe.c0<=H.c1+n)return!1;let Q=new Map;for(let pe of O.pins){let te=_(pe.r+T,pe.c+M);if(te<0)return!1;let ae=A(z.id,pe.id);if(Q.has(te)&&Q.get(te)!==ae||(Q.set(te,ae),B.has(te)))return!1;for(let re of K.get(te)||[])if(re.pid!==z.id&&re.net!==ae)return!1}return!0},nt=(z,O)=>{for(let T of me(z)){let M=_(T.r,T.c);M<0||(O?(K.has(M)||K.set(M,[]),K.get(M).push({pid:z.id,net:A(z.id,T.id)})):K.set(M,(K.get(M)||[]).filter(N=>N.pid!==z.id)))}},Pe=.05+.6*r,ct=z=>z.bridges+Pe*z.stats.area,Ue=()=>{let z=i_(p);Kp(z);let O=Rl(z);return O.linksOk>=f.linksOk&&O.wires<=f.wires&&ct(O)<ct(f)-1e-9},Yt=[],S=()=>new Map(x.map(z=>[z.id,{r:z.r,c:z.c,rot:z.rot}])),R=z=>{for(let O of x){nt(O,!1);let T=z.get(O.id);O.r=T.r,O.c=T.c,O.rot=T.rot,G(O),nt(O,!0)}};Yt.push(S());for(let z=0;z<u;z++){let O=M=>(Y.get(M.id)||[]).reduce((N,H)=>N+ue(H),0),T=0;for(let M of[...x].sort((N,H)=>O(H)-O(N)||N.id.localeCompare(H.id)))nt(M,!1),xe(M)&&T++,nt(M,!0);if(!T)break;Yt.push(S())}if(Yt.length>1&&!Ue()){let z=0,O=Yt.length-1;for(;O-z>1;){let T=z+O>>1;R(Yt[T]),T>0&&Ue()?z=T:O=T}R(Yt[z])}let V=[];for(let z of x){let O=we.get(z.id);(O.r!==z.r||O.c!==z.c||O.rot!==z.rot)&&V.push({id:z.id,label:z.label,from:O,to:{r:z.r,c:z.c,rot:z.rot}})}return Kp(p),{moves:V,before:f,after:V.length?Rl(p):f,kept:$}}function u_(e,t){let r=0;for(let n of t.moves){let o=e.parts.find(s=>s.id===n.id);o&&(o.r=n.to.r,o.c=n.to.c,o.rot=n.to.rot,r++)}return r>0}var xN=.21;function SN(e,t,r,n){let o=gn(e),s=o.segs[o.cell(t,r)];if(s.drilled)return null;for(let a=s.r0;a<=s.r1;a++){if(a===t||!vr(e.board,a,r))continue;let i=a+":"+r;if(!n.has(i)&&!e.wires.some(l=>l.a[0]===a&&l.a[1]===r||l.b[0]===a&&l.b[1]===r))return i}return null}function d_(e,{A0:t,AS:r,SIM:n,linkState:o,tr:s=Gt}){let a=[],i=(f,h,g)=>a.push({sev:f,msg:h,holes:g||[]}),l=(f,h)=>vr(e.board,f,h),c=f=>[[f.r,f.c]],u=e.parts.some(f=>ce(f));for(let f of e.parts){let h=t.byPart.get(f.id);!Ae(f)&&h.pins.every(g=>!g.on)&&i("warn",s("{a}: teljesen a panelon k\xEDv\xFCl esik",{a:f.label}),[])}for(let f of e.parts)if(f.plug&&!jo(e,f)){let h=e.parts.find(g=>g.id===f.plug);h&&i("warn",s("{a}: a {b} csatlakoz\xF3nak kevesebb l\xE1ba van, mint a k\xE1belnek ({c}), \xEDgy nincs bedugva",{a:f.label,b:h.label,c:W[f.type].pins(f).length}),me(h).map(g=>[g.r,g.c]))}for(let f of e.parts){if(ce(f))continue;let h=t_(e,t,f);if(h.some(g=>!g.floating))for(let g of h)g.floating&&g.on&&e_.has(g.role)&&i("info",s("{a}: a {b} l\xE1b sehova sincs k\xF6tve",{a:g.label,b:s(Qz[g.role])}),(()=>{let v=it(e,g.ref);return v?c(v):[]})())}let d=new Map;for(let f of t.pins){if(!f.on)continue;let h=f.r+":"+f.c;d.has(h)||d.set(h,[]),d.get(h).push(f)}for(let[f,h]of d)h.length>1&&i("err",s("\xDCtk\xF6z\xE9s a {a} lyukban: {b}",{a:f,b:h.map(bn).join(", ")}),c(h[0]));{let f=gn(e);for(let[h,g]of d){let v=g[0];f.drilled(v.r,v.c)&&i("err",s("{a} kif\xFArt lyukban van ({b}), nincs alatta r\xE9z: a l\xE1b sehov\xE1 sem csatlakozik",{a:bn(v),b:h}),c(v))}for(let h of e.wires)for(let g of[h.a,h.b])l(g[0],g[1])&&f.drilled(g[0],g[1])&&i("warn",s("Vezet\xE9kv\xE9g kif\xFArt lyukban ({a}:{b}): nincs alatta r\xE9z",{a:g[0],b:g[1]}),[g]);for(let h of e.bridges)(f.drilled(h[0],h[1])||f.drilled(h[2],h[3]))&&i("warn",s("H\xEDd kif\xFArt lyukn\xE1l ({a}:{b}\u2013{c}:{d})",{a:h[0],b:h[1],c:h[2],d:h[3]}),[[h[0],h[1]]])}for(let f of e.parts){if(ce(f))continue;let h=t.byPart.get(f.id),g={},v=k=>g[k]===k?k:g[k]=v(g[k]);h.pins.forEach(k=>g[k.id]=k.id);for(let[k,P]of W[f.type].internal(f))g[v(k)]=v(P);let _=new Map;for(let k of h.pins){let P=v(k.id);_.has(k.net)||_.set(k.net,new Map);let A=_.get(k.net);A.has(P)||A.set(P,k)}let w=(W[f.type].def.model||[]).some(k=>k.el==="logic");for(let[,k]of _)if(k.size>1){let P=[...k.values()];if(w){let D=new Set(P.map(B=>B.role));if(!(D.has("vin")&&D.has("gnd")))continue}let A=P.some((D,B)=>P.some((K,x)=>x>B&&D.s===K.s)),Z=f.type==="button"?s("{a}: az A \xE9s B oldal k\xF6z\xF6s neten van, a gomb r\xF6vidre z\xE1rt",{a:f.label}):f.type==="bat"?s("{a}: az akku + \xE9s \u2212 p\xF3lusa \xF6ssze van k\xF6tve",{a:f.label}):s("{a}: {b} \xF6ssze van k\xF6tve",{a:f.label,b:P.map(D=>D.name).join(" "+s("\xE9s")+" ")});A&&(Z+=s(" (egy szekci\xF3ba esnek)")),i(f.type==="button"||f.type==="bat"?"err":"warn",Z,P.map(D=>[D.r,D.c]))}}let p=[];for(let[,f]of t.netPins){let h=f.filter(P=>ce(P.part)),g=new Map;h.forEach(P=>{let A=P.part.id+"."+(P.role==="gnd"?"GND":P.id);g.has(A)||g.set(A,P)});let v=[...g.values()];if(v.length>1&&v.some((A,Z)=>v.some((D,B)=>B>Z&&A.s===D.s&&A.part===D.part))){p.push(v);continue}let _=new Set;for(let P of f)ce(P.part)?P.role==="gnd"?_.add("GND"):P.role==="p33"?_.add("3V3"):P.role==="pwr"&&_.add(P.name):(P.role==="bp"||P.role==="chg"||P.role==="pout")&&_.add("BAT+");let w=f.map(P=>[P.r,P.c]);_.has("GND")&&_.size>1?i("err",s("Z\xE1rlat: GND \u2013 {a}",{a:[..._].filter(P=>P!=="GND").join(", ")}),w):_.has("3V3")&&_.size>1&&i("err",s("Z\xE1rlat: 3V3 \u2013 {a}",{a:[..._].filter(P=>P!=="3V3").join(", ")}),w);let k=v.filter(P=>P.role==="gpio");k.length>1&&i("warn",s("{a} k\xF6z\xF6s neten van",{a:k.map(P=>P.name).join(", ")}),w),k.length&&_.size&&i("warn",s("{a} k\xF6zvetlen\xFCl {b}-re k\xF6tve",{a:k.map(P=>P.name).join(", "),b:[..._].join("/")}),w)}{let f=new Map;for(let h of e.links){if(h.b!=="GND"&&h.b!=="GPIO")continue;let g=it(e,h.a);if(!g)continue;let v=g.part.id+":"+zr(g.part)[g.id];f.has(v)||f.set(v,{sg:h.b==="GND"?"GND":"G"+h.id,q:g})}for(let[,h]of t.netPins){let g=new Map;h.some(v=>ce(v.part)&&v.role==="gnd")&&g.set("GND",null);for(let v of h){let _=f.get(v.part.id+":"+zr(v.part)[v.id]);_&&!g.has(_.sg)&&g.set(_.sg,_.q)}if(g.size>1){let v=[...g.entries()].map(([,_])=>_?bn(_):"GND");i("err",s("\xD6ssze\xE9r\u0151 jelek: {a}",{a:v.join(" \xB7 ")}),h.map(_=>[_.r,_.c]))}else{let v=new Map;for(let w of h)w.part.type==="button"&&w.role==="A"&&v.set(w.part.id,w);let _=h.find(w=>ce(w.part)&&w.role==="gpio");_&&v.size>1&&i("warn",`${[...v.values()].map(w=>w.part.label).join(", ")} ugyanazon a GPIO-n (${_.name})`,[...v.values()].map(w=>[w.r,w.c]))}}}{let f=g=>{let v=W[g.type].bounds(g),_=[[v.r0,v.c0],[v.r0,v.c1],[v.r1,v.c0],[v.r1,v.c1]].map(([P,A])=>It(g,P,A)),w=_.map(P=>P[0]),k=_.map(P=>P[1]);return[Math.min(...w)+.25,Math.max(...w)-.25,Math.min(...k)+.25,Math.max(...k)-.25]},h=e.parts.filter(g=>!Ae(g)).map(g=>[g,f(g)]);for(let g=0;g<h.length;g++)for(let v=g+1;v<h.length;v++){let[_,w]=h[g],[k,P]=h[v];w[0]<P[1]&&P[0]<w[1]&&w[2]<P[3]&&P[2]<w[3]&&i("warn",s("{a} \xE9s {b} teste \xE1tfed",{a:_.label,b:k.label}),[[_.r,_.c],[k.r,k.c]])}}if(p.length>3){let f=p[0][0].part;i("err",s("{a}: {b} szekci\xF3ban t\xF6bb l\xE1b k\xF6z\xF6s szekci\xF3ba esik. A l\xE1bsor nem futhat szekci\xF3ir\xE1nyban, forgasd 90\xB0-kal.",{a:f.label,b:p.length}),p.flatMap(h=>h.map(g=>[g.r,g.c])))}else for(let f of p)i("err",s("Z\xE1rlat: {a} egy szekci\xF3ba esik",{a:f.map(bn).join(" \xB7 ")}),f.map(h=>[h.r,h.c]));let m=new Set(t.pins.map(f=>f.r+":"+f.c)),b=new Map;e.wires.forEach(f=>{for(let h of[f.a,f.b]){if(!l(h[0],h[1]))continue;let g=h[0]+":"+h[1];if(b.set(g,(b.get(g)||0)+1),m.has(g)){let v=SN(e,h[0],h[1],m);i("warn",s("Vezet\xE9kv\xE9g a {a} lyukban egy alkatr\xE9szl\xE1bbal k\xF6z\xF6sen, ez nem el\xE9g stabil.",{a:g})+" "+(v?s("Tedd \xE1t a {a} lyukba (ugyanaz a szekci\xF3).",{a:v}):s("A szekci\xF3ban nincs szabad lyuk: h\xEDdd \xE1t egy oldalszomsz\xE9dos szekci\xF3ba, \xE9s onnan vezesd tov\xE1bb.")),[h])}}});for(let[f,h]of b)if(h>1){let[g,v]=f.split(":").map(Number);i("warn",s("{a} vezet\xE9kv\xE9g ugyanabban a {b} lyukban",{a:h,b:f}),[[g,v]])}for(let f of e.links){let h=o.get(f.id);if(h&&!h.ok){let g=it(e,f.a);i("warn",s("Kapcsolat nincs bek\xF6tve: {a}",{a:Mo(e,f)}),g?c(g):[])}else if(h&&h.wire&&!h.cable){let g=it(e,f.a);i("warn",s("{a}: csak vezet\xE9kkel k\xF6thet\u0151 be (nincs szabad h\xEDd\xFAt)",{a:Mo(e,f)}),g?c(g):[])}}if(u)for(let f of e.parts){if(f.type!=="button"||e.links.some(v=>v.a.startsWith(f.id+".")))continue;let h=t.byPart.get(f.id).map;["A1","B1"].some(v=>(t.netPins.get(h[v].net)||[]).some(_=>ce(_.part)&&_.role==="gpio"))||i("warn",s("{a}: egyik oldala sincs GPIO-ra k\xF6tve",{a:f.label}),c(h.A1))}n&&PN(e,r,t,n,i,s);for(let f of e.parts)for(let h of W[f.type].def.model||[]){if(h.el!=="motor")continue;let g=t.byPart.get(f.id).map,v=g[h.a].net,_=g[h.b].net,w=t.netPins.get(v)||[],k=t.netPins.get(_)||[];if(w.length<2||k.length<2)continue;(w.some(A=>A.role==="gpio")||k.some(A=>A.role==="gpio"))&&i("err",s("{a}: a motor k\xF6zvetlen\xFCl GPIO-ra van k\xF6tve. Tranzisztor vagy MOSFET kell a meghajt\xE1s\xE1hoz.",{a:f.label}),[]),e.parts.some(A=>(W[A.type].def.model||[]).some(Z=>{if(Z.el!=="diode")return!1;let D=t.byPart.get(A.id).map,B=D[Z.a].net,K=D[Z.k].net;return B===v&&K===_||B===_&&K===v}))||i("warn",s("{a}: nincs visszacsap\xF3 di\xF3da a motoron. Tegy\xE9l egy di\xF3d\xE1t (pl. 1N5817) a motor kapcsaira, a kat\xF3dj\xE1val a + fel\xE9, k\xFCl\xF6nben kikapcsol\xE1skor a fesz\xFClts\xE9gt\xFCske t\xF6nkreteheti a tranzisztort.",{a:f.label}),[])}if(n)for(let f of e.parts){let h=r.byPart.get(f.id),g=h.pins.filter(k=>k.role==="vin");if(!g.length)continue;let v=h.pins.find(k=>k.role==="gnd"),_=W[f.type].def.model||[],w=k=>n.floating.has(k.net)?null:n.netV.get(k.net)??null;for(let k of g){let P=_.some(B=>B.el==="source"&&B.p===k.id),A=w(k),Z=v?w(v):0,D=A==null||Z==null?null:A-Z;D==null||D<.5?P||i("warn",s("{a}.{b}: nincs t\xE1pfesz\xFClts\xE9g",{a:f.label,b:k.name})+(A!=null&&v&&Z==null?" "+s("(a {a} nincs bek\xF6tve)",{a:v.name}):""),c(k)):k.vmax!=null&&D>k.vmax+.05?i("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:f.label,b:k.name,c:D.toFixed(2),d:k.vmax}),c(k)):k.vmin!=null&&D<k.vmin-.05&&i("warn",s("{a}.{b}: csak {c} V, legal\xE1bb {d} V kell",{a:f.label,b:k.name,c:D.toFixed(2),d:k.vmin}),c(k))}}for(let f of e.parts){if(!ce(f))continue;let h=(W[f.type].def.meta||{}).pinNotes||{};for(let g of t.byPart.get(f.id).pins){if(g.role!=="gpio"||!g.on||!((t.netPins.get(g.net)||[]).length>1||(t.netSecs.get(g.net)||0)>1))continue;let _=Mp.find(w=>Ge(g,w[0]));_&&i("warn",`${f.label}.${g.name}: ${s(h[g.name]||_[1])}`,c(g))}}for(let f of e.parts){if(ce(f))continue;let h=new Map;for(let g of t.byPart.get(f.id).pins){if(!g.fn)continue;let v=(t.netPins.get(g.net)||[]).find(P=>ce(P.part)&&P.role==="gpio");if(!v)continue;let _=Wr(v,g.fn),w=g.fn.split(".")[0],k=Lp(Dp(g.fn));if(!_.length){if(Fn(v.part)!=="matrix"){let P=[...new Set(me(v.part).filter(A=>A.role==="gpio"&&Wr(A,g.fn).length).map(A=>A.name))];i("warn",s("{a}.{b} ({c}) \u2192 {d}: ez a l\xE1b nem {e}, \xEDgy a hardveres {f} nem haszn\xE1lhat\xF3 rajta, csak szoftveres. Alkalmas l\xE1bak: {g}",{a:f.label,b:g.name,c:Lp(g.fn),d:v.name,e:k,f:w.toUpperCase(),g:P.slice(0,8).join(", ")}),c(v))}continue}h.has(w)||h.set(w,[]),h.get(w).push({q:g,g:v,b:new Set(_.map(P=>P.split(".")[0]))})}for(let[g,v]of h){if(v.length<2||Fn(v[0].g.part)==="matrix")continue;v.slice(1).reduce((w,k)=>new Set([...w].filter(P=>k.b.has(P))),new Set(v[0].b)).size||i("warn",s("{a}: az {b}-l\xE1bai k\xFCl\xF6nb\xF6z\u0151 buszokra ker\xFCltek ({c}). Egy perif\xE9ri\xE1t egy buszra k\xF6ss.",{a:f.label,b:g.toUpperCase(),c:v.map(w=>`${w.q.name} \u2192 ${w.g.name}: ${[...w.b].map(k=>k.toUpperCase()).join("/")}`).join(", ")}),v.map(w=>c(w.g)[0]))}}{let f=new Map;for(let h of e.parts)if(ce(h))for(let g of t.byPart.get(h.id).pins){if(g.role!=="gpio"||pa(e,h,g.id,g,t)!=="pwm")continue;let v=(g.caps||[]).find(w=>/^pwm\d+\.[ab]$/.test(w));if(!v)continue;let _=h.id+":"+v.split(".")[0];f.has(_)||f.set(_,[]),f.get(_).push({q:g,f:fa(e,h.id+"."+g.id).freq,c:v})}for(let[,h]of f){if(h.length<2)continue;[...new Set(h.map(v=>+v.f))].length>1&&i("warn",s("{a} ugyanazon a PWM-szeleten ({b}) van, csak azonos frekvenci\xE1val m\u0171k\xF6dhetnek (most: {c}).",{a:h.map(v=>v.q.name).join(" "+s("\xE9s")+" "),b:h[0].c.split(".")[0].toUpperCase(),c:h.map(v=>v.f+" Hz").join(", ")}),h.map(v=>c(v.q)[0]))}}for(let[,f]of t.netPins){let h=f.filter(g=>g.role==="adc");if(h.length)for(let g of f.filter(v=>v.role==="gpio")){let v=h.map(bn).join(", "),_=()=>[...new Set(me(g.part).filter(w=>Ge(w,"adc")).map(w=>w.name))].join(", ")||"\u2013";if(!Tl(g))i("warn",s("{a}: anal\xF3g jel a {b}-n, de azon nincs ADC. Erre alkalmas: {c}",{a:v,b:g.name,c:_()}),c(g));else{Ge(g,"adc")||i("warn",s("{a}: ADC2-csatorna, bekapcsolt WiFi mellett nem m\xE9r. Anal\xF3g jelhez ink\xE1bb ADC1-es l\xE1bat v\xE1lassz: {b}",{a:g.name,b:_()}),c(g));let w=pa(e,g.part,g.id,g,t);w!=="adc"&&w!=="float"&&i("warn",s("{a}: az anal\xF3g m\xE9r\xE9shez \xE1ll\xEDtsd ADC m\xF3dba (most: {b})",{a:g.name,b:s(Zn.find(k=>k[0]===w)[1])}),c(g))}}}{let f=ma(e);f.parts>=3&&e.links.length>=2&&f.fill<xN&&f.area>=.25*f.boardArea&&a.push({sev:"info",msg:s("A terv szell\u0151s: az alkatr\xE9szek a foglalt ter\xFClet {f}%-\xE1t t\xF6ltik ki \u2013 t\xF6m\xF6r\xEDtve kisebb panel \xE9s r\xF6videbb bek\xF6t\xE9s lehet.",{f:Math.round(f.fill*100)}),holes:[],act:"compact"})}return a}function PN(e,t,r,n,o,s){for(let a of n.srcI)a.kind==="vbus"&&a.I>1&&o("err",s("Z\xE1rlat a VBUS-on ({a} A)",{a:a.I.toFixed(1)}),[]),a.kind==="v33"&&a.I>.3&&o("err",s("3V3 t\xFAlterhelve vagy z\xE1rlatos ({a} mA)",{a:(a.I*1e3).toFixed(0)}),[]);for(let a of n.gpios){let i=Math.abs(a.I)*1e3,l=Math.round(((n.picos.find(c=>c.p===a.p)||{igpio:0}).igpio||.012)*1e3);i>50?o("err",s("{a}: {b} mA, kimenet z\xE1rlatban",{a:a.q.name,b:i.toFixed(0)}),[[a.q.r,a.q.c]]):i>l&&o("warn",s("{a}: {b} mA, sok (aj\xE1nlott max. ~{c} mA)",{a:a.q.name,b:i.toFixed(1),c:l}),[[a.q.r,a.q.c]]),a.powered&&a.float&&(a.mode==="float"||a.mode==="adc")&&(t.netPins.get(t.pins.find(u=>u.part===a.p&&u.id===a.q.id).net)||[]).some(u=>No(u.part))&&o("warn",s("{a}: lebeg, am\xEDg a gomb nincs lenyomva{b}. Tegy\xE9l k\xFCls\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1st (pl. 10 k\u03A9 a 3V3-ra), vagy v\xE1lassz m\xE1sik GPIO-t.",{a:a.q.name,b:Ge(a.q,"nopull")?" "+s("(ezen a l\xE1bon nincs bels\u0151 felh\xFAz\xF3 ellen\xE1ll\xE1s)"):""}),[[a.q.r,a.q.c]])}for(let a of n.picos){let i=r.byPart.get(a.p.id).pins.find(c=>c.name===a.vsysName),l=i?[[i.r,i.c]]:[];a.vmax!=null&&a.Usys>a.vmax+.05?o("err",s("{a}.{b}: {c} V, t\xF6bb a megengedett {d} V-n\xE1l",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vmax}),l):!a.powered&&a.Usys>.5&&o("warn",s("{a}: a t\xE1pbemeneten ({b}) csak {c} V van, a stabiliz\xE1tornak legal\xE1bb {d} V kell, \xEDgy nincs 3,3 V",{a:a.p.label,b:a.vsysName,c:a.Usys.toFixed(2),d:a.vreg}),l)}for(let a of n.leds)a.light&&a.I>.03?o("warn",s("{a}: {b} mA, el\u0151t\xE9t-ellen\xE1ll\xE1s kell",{a:a.p.label,b:(a.I*1e3).toFixed(0)}),[]):!a.light&&a.imax&&a.I>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(a.I),c:kr(a.imax)}),[]);for(let a of n.logics){if(a.vdd<1)continue;let i=a.ins.filter(l=>l.open).map(l=>l.name);i.length&&o("warn",s("{a}: lebeg\u0151 bemenet: {b}. CMOS-bemenetet ne hagyj szabadon: k\xF6sd jelre, vagy a nem haszn\xE1ltat GND-re (vagy VCC-re).",{a:a.p.label,b:i.join(", ")}),[]);for(let l of a.outs)l.I>a.imax&&o("warn",s("{a}.{b}: {c} mA kimeneti \xE1ram, t\xF6bb a megengedett {d}A-n\xE9l{e}",{a:a.p.label,b:l.name,c:(l.I*1e3).toFixed(0),d:kr(a.imax),e:a.imax<.1?" "+s("(k\xE9t kimenet egym\xE1s ellen?)"):""}),[])}for(let a of n.motors)Math.abs(a.U)>a.vnom*1.25&&o("warn",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vnom}),[]);for(let a of n.servos)a.U>3&&a.angle==null&&o("warn",s("{a}: nincs \xE9rv\xE9nyes szerv\xF3jel. A jel l\xE1b\xE1t k\xF6sd egy PWM m\xF3d\xFA GPIO-ra: 50 Hz, 2,5\u201312,5 % kit\xF6lt\xE9s (7,5 % = k\xF6z\xE9p\xE1ll\xE1s).",{a:a.p.label}),[]);for(let a of n.bjts){let i=a.p.label;a.floatBase&&o("warn",s("{a}: a b\xE1zis lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a B \xE9s az E k\xF6z\xE9 (pl. 10 k\u03A9), vagy k\xF6sd kimenetre.",{a:i}),[]),a.imax&&Math.abs(a.ic)>a.imax?o("warn",s("{a}: {b}A kollektor\xE1ram, t\xF6bb a megengedett {c}A-n\xE9l",{a:i,b:kr(Math.abs(a.ic)),c:kr(a.imax)}),[]):a.st==="act"&&a.ic>.001&&o("warn",s("{a}: nem tel\xEDt\u0151dik (Uce {b} V, Ic {c}A = \u03B2\xB7Ib). Kapcsol\xF3nak kisebb b\xE1zisellen\xE1ll\xE1s kell: a b\xE1zis\xE1ram (most {d}A) legyen a k\xEDv\xE1nt kollektor\xE1ram kb. tizede.",{a:i,b:a.vce.toFixed(2),c:kr(a.ic),d:kr(a.ib)}),[])}for(let a of n.caps)a.float||(a.polar&&a.U<-.5?o("err",s("{a}: ford\xEDtva van bek\xF6tve ({b} V). Az elektrolit kondenz\xE1tor + l\xE1ba ker\xFClj\xF6n a magasabb fesz\xFClts\xE9gre.",{a:a.p.label,b:a.U.toFixed(2)}),[]):a.vmax!=null&&Math.abs(a.U)>a.vmax&&o("err",s("{a}: {b} V, t\xF6bb a n\xE9vleges {c} V-n\xE1l",{a:a.p.label,b:Math.abs(a.U).toFixed(2),c:a.vmax}),[]));for(let a of n.fets)a.floatGate&&o("warn",s("{a}: a gate lebeg. Tegy\xE9l leh\xFAz\xF3 ellen\xE1ll\xE1st a G \xE9s az S k\xF6z\xE9 (pl. 100 k\u03A9), vagy k\xF6sd kimenetre.",{a:a.p.label}),[]),a.imax&&Math.abs(a.I)>a.imax&&o("warn",s("{a}: {b}A, t\xF6bb a megengedett {c}A-n\xE9l",{a:a.p.label,b:kr(Math.abs(a.I)),c:kr(a.imax)}),[]);for(let a of n.bats){if(a.kind==="supply"){a.I<-2&&o("err",s("{a}: z\xE1rlat a t\xE1pbemeneten ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[]);continue}let i=t.byPart.get(a.p.id).pins,l=n.picos.find(d=>d.feeds&&d.vsys===a.node),u=!!!l&&i.some(d=>(t.netPins.get(d.net)||[]).some(p=>p.role==="chg"&&p.part!==a.p));if(l&&a.I>.1){o("err",s("{a}: a {b} USB-je a t\xE1pbemeneten ({c}) \xE1t k\xF6zvetlen\xFCl t\xF6lti az akkut ({d} A). Az akku \xE9s a t\xE1pbemenet k\xF6z\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:l.p.label,c:l.vsysName,d:a.I.toFixed(1)}),[]);continue}if(u&&a.I>0){a.I>1.2&&o("warn",s("{a}: {b} A t\xF6lt\u0151\xE1ram, sok",{a:a.p.label,b:a.I.toFixed(1)}),[]);continue}a.I>2?o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I>.1?o("err",s("{a}: az USB k\xF6zvetlen\xFCl t\xF6lti az akkut ({b} A). A VSYS el\xE9 Schottky-di\xF3da kell.",{a:a.p.label,b:a.I.toFixed(1)}),[]):a.I<-2&&o("err",s("{a}: z\xE1rlat ({b} A)",{a:a.p.label,b:(-a.I).toFixed(1)}),[])}}var Ut=e=>typeof e=="number"?e>.5:!!e,Hp=e=>typeof e=="boolean"?e?1:0:typeof e=="number"&&isFinite(e)?e:0,bt=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},Fe=(e,t)=>({id:e,label:t,kind:"bool"}),Bn=(e,t)=>({id:e,label:t,kind:"num"}),jl=(e=E("L\xE1b"))=>({key:"pin",label:e,type:"pin",default:""}),p_={half:["1000","1100","0100","0110","0010","0011","0001","1001"],full:["1100","0110","0011","1001"],wave:["1000","0100","0010","0001"],count:Array.from({length:16},(e,t)=>t.toString(2).padStart(4,"0").split("").reverse().join(""))},Jp=4,$N=[["half",E("f\xE9ll\xE9ptet\xE9s (8 l\xE9p\xE9s)")],["full",E("teljes l\xE9p\xE9s, k\xE9t tekercs (4)")],["wave",E("egy tekercs (4)")],["count",E("bin\xE1ris sz\xE1ml\xE1l\xF3 (16)")],["custom",E("saj\xE1t minta")]];function Yp(e,t){let r=e==="custom"?String(t||"").split(/[\s,;]+/).filter(n=>/^[01]{1,8}$/.test(n)):p_[String(e)]||p_.half;return r.length||(r=["0"]),r.map(n=>n.slice(0,Jp).padEnd(Jp,"0"))}var EN=[["off",E("Ut\xE1nfut\xE1s (ki k\xE9sleltetve)")],["on",E("Bekapcsol\xE1si k\xE9sleltet\xE9s")],["pulse",E("Impulzus")],["filter",E("Sz\u0171r\xE9s (mindk\xE9t v\xE1ltoz\xE1s)")]],Wp=(e,t,r)=>{let n=!!e[t];return e[t]=r,r&&!n};E("Bemenet"),E("Logika"),E("Id\u0151"),E("Kimenet");var Jr={in:{label:E("Digit\xE1lis bemenet"),cat:"Bemenet",help:E("Egy l\xE1b szintje (pl. nyom\xF3gomb). Felh\xFAz\xE1ssal a lenyomott gomb alacsony szintet ad, ez\xE9rt az \u201Eakt\xEDv\u201D alapb\xF3l az alacsony."),ins:[],outs:[Fe("v",E("akt\xEDv"))],params:[jl(),{key:"pull",label:E("Felh\xFAz\xE1s"),type:"select",default:"pullup",options:[["pullup",E("fel (3,3 V)")],["pulldown",E("le (GND)")],["float",E("nincs")]]},{key:"active",label:E("Akt\xEDv"),type:"select",default:"low",options:[["low",E("alacsony szinten")],["high",E("magas szinten")]]}],eval:e=>{let t=e.read(e.p.pin),r=t?t.level:null;return{v:r==null?!1:e.p.active==="high"==(r===1)}},gpio:e=>({ref:e.pin,mode:String(e.pull||"pullup")})},adc:{label:E("Anal\xF3g bemenet"),cat:"Bemenet",help:E("Egy ADC-k\xE9pes l\xE1b fesz\xFClts\xE9ge 0\u20261 k\xF6z\xF6tt (0 V \u2192 0, 3,3 V \u2192 1), pl. potm\xE9ter vagy joystick."),ins:[],outs:[Bn("v",E("\xE9rt\xE9k"))],params:[jl()],eval:e=>{let t=e.read(e.p.pin);return{v:t?Math.max(0,Math.min(1,t.V/3.3)):0}},gpio:e=>({ref:e.pin,mode:"adc"})},const:{label:E("\xC1lland\xF3"),cat:"Bemenet",help:E("R\xF6gz\xEDtett sz\xE1m (0\u20261 k\xF6z\xF6tt PWM-kit\xF6lt\xE9shez, vagy \xF6sszehasonl\xEDt\xE1shoz)."),ins:[],outs:[Bn("v",E("\xE9rt\xE9k"))],params:[{key:"value",label:E("\xC9rt\xE9k"),type:"number",default:1}],eval:e=>({v:bt(e.p.value,1)})},not:{label:E("NEM"),cat:"Logika",help:E("Megford\xEDtja a jelet."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:!Ut(e.in.a)})},and:{label:E("\xC9S"),cat:"Logika",help:E("Akkor igaz, ha mindk\xE9t bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)&&Ut(e.in.b)})},or:{label:E("VAGY"),cat:"Logika",help:E("Akkor igaz, ha legal\xE1bb az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)||Ut(e.in.b)})},xor:{label:E("KIZ\xC1R\xD3 VAGY"),cat:"Logika",help:E("Akkor igaz, ha pontosan az egyik bemenet igaz."),ins:[Fe("a",E("A")),Fe("b",E("B"))],outs:[Fe("v",E("ki"))],params:[],eval:e=>({v:Ut(e.in.a)!==Ut(e.in.b)})},compare:{label:E("\xD6sszehasonl\xEDt\xE1s"),cat:"Logika",help:E("Igaz, ha a bemenet nagyobb (vagy kisebb) a hat\xE1rn\xE1l, pl. \u201Ea potm\xE9ter f\xE9ln\xE9l tov\xE1bb van tekerve\u201D."),ins:[Bn("a",E("\xE9rt\xE9k"))],outs:[Fe("v",E("igaz"))],params:[{key:"op",label:E("Felt\xE9tel"),type:"select",default:">",options:[[">",E("nagyobb, mint")],["<",E("kisebb, mint")]]},{key:"value",label:E("Hat\xE1r"),type:"number",default:.5}],eval:e=>({v:e.p.op==="<"?Hp(e.in.a)<bt(e.p.value,.5):Hp(e.in.a)>bt(e.p.value,.5)})},blink:{label:E("\xDCtemad\xF3"),cat:"Id\u0151",help:E("N\xE9gysz\xF6gjel: peri\xF3dusonk\xE9nt a kit\xF6lt\xE9s ar\xE1ny\xE1ban igaz (villog\xF3 LED)."),ins:[],outs:[Fe("v",E("ki"))],params:[{key:"period",label:E("Peri\xF3dus"),type:"number",default:1e3,min:20,unit:"ms"},{key:"duty",label:E("Kit\xF6lt\xE9s"),type:"number",default:50,min:0,max:100,unit:"%"}],eval:e=>{let t=Math.max(20,bt(e.p.period,1e3));return{v:e.t%t<t*Math.max(0,Math.min(100,bt(e.p.duty,50)))/100}}},toggle:{label:E("V\xE1lt\xF3kapcsol\xF3"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. gombnyom\xE1sra) \xE1tv\xE1lt: be, ki, be\u2026"),ins:[Fe("a",E("v\xE1lt\xE1s"))],outs:[Fe("v",E("\xE1llapot"))],params:[],eval:e=>(Wp(e.st,"a",Ut(e.in.a))&&(e.st.v=!e.st.v),{v:!!e.st.v})},counter:{label:E("Sz\xE1ml\xE1l\xF3"),cat:"Id\u0151",help:E("Felfut\xF3 \xE9lenk\xE9nt eggyel n\u0151, a hat\xE1rn\xE1l el\xF6lr\u0151l kezdi; a t\xF6rl\xE9s lenull\xE1zza. Az \u201Ear\xE1ny\u201D 0\u20261 k\xF6z\xF6tt (PWM-hez)."),ins:[Fe("a",E("sz\xE1mol")),Fe("r",E("t\xF6rl\xE9s"))],outs:[Bn("n",E("\xE9rt\xE9k")),Bn("f",E("ar\xE1ny"))],params:[{key:"max",label:E("L\xE9p\xE9ssz\xE1m"),type:"number",default:4,min:1}],eval:e=>{let t=Math.max(1,Math.round(bt(e.p.max,4))),r=bt(e.st.n,0);return Wp(e.st,"a",Ut(e.in.a))&&(r=(r+1)%t),Ut(e.in.r)&&(r=0),e.st.n=r,{n:r,f:t>1?r/(t-1):0}}},delay:{label:E("Id\u0151z\xEDt\u0151"),cat:"Id\u0151",help:E("K\xE9sleltet\xE9s vagy ut\xE1nfut\xE1s a megadott id\u0151vel. Ut\xE1nfut\xE1s: azonnal bekapcsol, \xE9s a bemenet megsz\u0171n\xE9se ut\xE1n m\xE9g ennyi ideig igaz (l\xE9pcs\u0151h\xE1zi vil\xE1g\xEDt\xE1s). Bekapcsol\xE1si k\xE9sleltet\xE9s: csak akkor kapcsol be, ha a bemenet ennyi ideig folyamatosan igaz. Impulzus: felfut\xF3 \xE9lre ennyi ideig igaz. Sz\u0171r\xE9s: mindk\xE9t v\xE1ltoz\xE1st csak akkor adja tov\xE1bb, ha ennyi ideig tart (perg\xE9smentes\xEDt\xE9s)."),ins:[Fe("a",E("be"))],outs:[Fe("v",E("ki"))],params:[{key:"mode",label:E("M\u0171k\xF6d\xE9s"),type:"select",default:"off",legacy:"filter",options:EN},{key:"ms",label:E("Id\u0151"),type:"number",default:500,min:0,unit:"ms"}],eval:e=>{let t=Ut(e.in.a),r=Math.max(0,bt(e.p.ms,500)),n=e.t,o=e.st;switch(e.p.mode){case"off":return t&&(o.at=n),{v:t||o.at!==void 0&&n-bt(o.at,0)<r};case"on":return o.last!==t&&(o.last=t,o.at=n),{v:t&&n-bt(o.at,0)>=r};case"pulse":{let s=o.at!==void 0&&n-bt(o.at,0)<r;return Wp(o,"a",t)&&!s&&(o.at=n),{v:o.at!==void 0&&n-bt(o.at,0)<r}}default:return o.last!==t&&(o.last=t,o.at=n),n-bt(o.at,0)>=r&&(o.v=t),{v:!!o.v}}}},seq:{label:E("Sorozat"),cat:"Id\u0151",help:E("Minden felfut\xF3 \xE9lre (pl. \xFCtemad\xF3t\xF3l) a minta k\xF6vetkez\u0151 sora ker\xFCl az A\u2013D kimenetekre: l\xE9ptet\u0151motor tekercsei, fut\xF3f\xE9ny, sz\xE1ml\xE1l\xF3. A \u201Evissza\u201D bemenet (vagy az ir\xE1ny) visszafel\xE9 l\xE9ptet."),ins:[Fe("a",E("l\xE9p\xE9s")),Fe("r",E("vissza"))],outs:[Fe("c0",E("A")),Fe("c1",E("B")),Fe("c2",E("C")),Fe("c3",E("D")),Bn("n",E("sor"))],params:[{key:"preset",label:E("Minta"),type:"select",default:"half",options:$N},{key:"custom",label:E("Saj\xE1t minta (sorok sz\xF3k\xF6zzel)"),type:"text",default:"10 01",when:{key:"preset",is:"custom"}},{key:"dir",label:E("Ir\xE1ny"),type:"select",default:"fwd",options:[["fwd",E("el\u0151re")],["back",E("vissza")]]}],eval:e=>{let t=Yp(e.p.preset,e.p.custom),r=t.length,n=bt(e.st.i,0),o=e.st.a===void 0?!0:!!e.st.a,s=Ut(e.in.a);e.st.a=s,s&&!o&&(n+=e.p.dir==="back"!==Ut(e.in.r)?-1:1),n=(n%r+r)%r,e.st.i=n;let a=t[n];return{c0:a[0]==="1",c1:a[1]==="1",c2:a[2]==="1",c3:a[3]==="1",n}}},out:{label:E("Digit\xE1lis kimenet"),cat:"Kimenet",help:E("Igaz \u2192 a l\xE1b magas (3,3 V), hamis \u2192 alacsony (pl. LED, rel\xE9, MOSFET kapuja)."),ins:[Fe("a",E("be"))],outs:[],params:[jl()],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:Ut(t.a)?"out_high":"out_low"})},pwm:{label:E("PWM kimenet"),cat:"Kimenet",help:E("Kit\xF6lt\xE9s: LED f\xE9nyereje, motor fordulatsz\xE1ma. Ha a bemenet nincs bek\xF6tve, a be\xE1ll\xEDtott kit\xF6lt\xE9s \xE9rv\xE9nyes; bek\xF6tve a bemenet (0\u20261) adja, pl. \xC1lland\xF3 0,3 = 30 % vagy potm\xE9ter. Logikai jel (pl. \xDCtemad\xF3) 0 % vagy 100 %. Szerv\xF3hoz 50 Hz \xE9s 2,5\u202612,5 %."),ins:[Bn("a",E("kit\xF6lt\xE9s"))],outs:[],params:[jl(),{key:"duty",label:E("Kit\xF6lt\xE9s (bemenet n\xE9lk\xFCl)"),type:"number",default:50,min:0,max:100,unit:"%"},{key:"freq",label:E("Frekvencia"),type:"number",default:1e3,min:1,unit:"Hz"}],eval:()=>({}),gpio:(e,t)=>({ref:e.pin,mode:"pwm",pwm:{duty:Math.round(Math.max(0,Math.min(1,t.a===void 0?bt(e.duty,50)/100:Hp(t.a)))*1e3)/10,freq:Math.max(1,bt(e.freq,1e3))}})}};function f_(e){let t=e;if(!t||!Array.isArray(t.nodes))return;let r=[];for(let i of t.nodes){if(!i||typeof i.id!="string"||typeof i.type!="string"||!Jr[i.type])continue;let l=Jr[i.type],c={};for(let u of l.params)c[u.key]=i.props?.[u.key]??(u.legacy!==void 0?u.legacy:u.default);r.push({id:i.id,type:i.type,x:bt(i.x,0),y:bt(i.y,0),props:c})}let n=new Map(r.map(i=>[i.id,i])),o=(i,l)=>{if(typeof i!="string")return!1;let c=i.lastIndexOf("."),u=n.get(i.slice(0,c));return!!u&&Jr[u.type][l].some(d=>d.id===i.slice(c+1))},s=[],a=new Set;for(let i of Array.isArray(t.edges)?t.edges:[])!i||typeof i.id!="string"||!o(i.from,"outs")||!o(i.to,"ins")||a.has(i.to)||(a.add(i.to),s.push({id:i.id,from:i.from,to:i.to}));return{nodes:r,edges:s}}function Xp(e,t,r){if(typeof r!="string"||!r)return null;let n=it(e,r);if(!n)return null;if(ce(n.part)&&n.role==="gpio")return n.part.id+"."+n.id;let o=t.byPart.get(n.part.id),s=o&&o.map[n.id];if(!s)return null;let a=(t.netPins.get(s.net)||[]).find(i=>ce(i.part)&&i.role==="gpio");return a?a.part.id+"."+a.id:null}var m_=()=>({st:new Map,vals:new Map});function h_(e,t,r,n,o,s){let a={gpio:{},pwm:{},errors:new Map},i=new Map(r.edges.map(f=>[f.to,f.from])),l=new Map(r.nodes.map(f=>[f.id,new Set(r.edges.filter(h=>h.to.startsWith(f.id+".")).map(h=>h.from.slice(0,h.from.lastIndexOf("."))))])),c=[],u=new Set,d=!0;for(;d;){d=!1;for(let f of r.nodes)!u.has(f.id)&&[...l.get(f.id)].every(h=>u.has(h)||h===f.id)&&(c.push(f.id),u.add(f.id),d=!0)}for(let f of r.nodes)u.has(f.id)||c.push(f.id);let p=new Map(r.nodes.map(f=>[f.id,f])),m=(f,h)=>{let g=Xp(e,t,f);return g||a.errors.set(h,typeof f=="string"&&f?E("A l\xE1b nincs GPIO-ra k\xF6tve"):E("Nincs kiv\xE1lasztva l\xE1b")),g},b=f=>{let h={};for(let g of Jr[f.type].ins){let v=i.get(f.id+"."+g.id);h[g.id]=v?n.vals.get(v):void 0}return h};for(let f of c){let h=p.get(f),g=Jr[h.type];n.st.has(f)||n.st.set(f,{});let v=g.eval({in:b(h),p:h.props,st:n.st.get(f),t:o,read:_=>{let w=m(_,f);return w?s(w):null}});for(let[_,w]of Object.entries(v))n.vals.set(f+"."+_,w)}for(let f of r.nodes){let h=Jr[f.type];if(!h.gpio)continue;let g=h.gpio(f.props,b(f));if(!g)continue;let v=m(g.ref,f.id);v&&(a.gpio[v]&&a.gpio[v]!==g.mode&&a.errors.set(f.id,E("Ezt a GPIO-t egy m\xE1sik blokk is haszn\xE1lja")),a.gpio[v]=g.mode,g.pwm&&(a.pwm[v]=g.pwm))}return a}var g_=(e,t)=>t?{...e,gpio:{...e.gpio,...t.gpio},pwm:{...e.pwm||{},...t.pwm}}:e,ha=(e,t)=>{let r=1;for(;t.has(e+r);)r++;let n=e+r;return t.add(n),n};function AN(e,t,r={x:40,y:40},n={}){let o=e?{nodes:[...e.nodes],edges:[...e.edges]}:{nodes:[],edges:[]},s=new Set(o.nodes.map(u=>u.id)),a=new Set(o.edges.map(u=>u.id)),i=ha("n",s),l=ha("n",s),c=[0,1,2,3].map(()=>ha("n",s));return o.nodes.push({id:i,type:"blink",x:r.x,y:r.y+40,props:{period:n.period??250,duty:50}}),o.nodes.push({id:l,type:"seq",x:r.x+230,y:r.y,props:{preset:n.preset??"half",custom:n.custom??"10 01",dir:n.dir??"fwd"}}),o.edges.push({id:ha("e",a),from:i+".v",to:l+".a"}),c.forEach((u,d)=>{o.nodes.push({id:u,type:"out",x:r.x+460,y:r.y+d*90,props:{pin:t[d]||""}}),o.edges.push({id:ha("e",a),from:`${l}.c${d}`,to:u+".a"})}),{prog:o,ids:[i,l,...c]}}function b_(e,t){let r=(e.pins||[]).slice(0,Jp);if(!r.some(Boolean))return t;let n=t&&t.nodes.length?Math.max(...t.nodes.map(i=>i.y))+160:40,{prog:o,ids:s}=AN(t,r,{x:40,y:n},{period:Math.max(20,Math.round(1e3/Math.max(.5,e.rate||4))),preset:e.preset,custom:e.custom,dir:e.dir<0?"back":"fwd"}),a=new Set(s.slice(2).filter((i,l)=>!r[l]));return{nodes:o.nodes.filter(i=>!a.has(i.id)),edges:o.edges.filter(i=>!a.has(i.to.slice(0,i.to.lastIndexOf("."))))}}var y_=e=>/^[A-Za-z_]\w*$/.test(e)?e:"n_"+e.replace(/\W/g,"_"),Nr=(e,t)=>{let r=Number(e);return isFinite(r)?r:t},ga=e=>Number.isInteger(e)?String(e):String(+e.toFixed(6));function ON(e,t,r){let n=r.props.pin,o=Xp(e,t,n);if(!o)return null;let s=it(e,o),a=it(e,String(n)),i=s&&/(\d+)$/.exec(s.name);return!s||!i?null:{gpio:+i[1],name:s.name,ref:a?`${a.part.label}.${a.name}`:String(n)}}function k_(e,t,r,n,o=Gt){let s=n==="micropython",a=[],i=e.parts.find($=>ce($))||null,l=i&&(W[i.type].def.meta||{}).target||null,c=i?W[i.type].def.name:null;i?!l&&!s&&a.push(o("{a}: nincs Arduino-c\xE9lk\xF6rnyezet a le\xEDr\xE1s\xE1ban; az \xE1ltal\xE1nos Arduino-f\xFCggv\xE9nyekkel k\xE9sz\xFClt.",{a:c??""})):a.push(o("Nincs vez\xE9rl\u0151lap a tervben; a l\xE1bsz\xE1mok nem ismertek."));let u=new Map(r.nodes.map($=>[$.id,new Set(r.edges.filter(F=>F.to.startsWith($.id+".")).map(F=>F.from.slice(0,F.from.lastIndexOf("."))))])),d=[],p=new Set;for(let $=!0;$;){$=!1;for(let F of r.nodes)!p.has(F.id)&&[...u.get(F.id)].every(y=>p.has(y)||y===F.id)&&(d.push(F),p.add(F.id),$=!0)}for(let $ of r.nodes)p.has($.id)||d.push($);let m=new Map(r.edges.map($=>[$.to,$.from])),b=$=>{let F=$.lastIndexOf(".");return`${y_($.slice(0,F))}_${$.slice(F+1)}`},f=($,F,y)=>{let L=m.get($.id+"."+F);if(!L)return y==="bool"?s?"False":"false":"0";let Y=L.lastIndexOf("."),Oe=r.nodes.find(G=>G.id===L.slice(0,Y)),j=Jr[Oe.type].outs.find(G=>G.id===L.slice(Y+1)).kind,ee=b(L);return j===y?ee:y==="bool"?`(${ee} > 0.5)`:s?`(1 if ${ee} else 0)`:`(${ee} ? 1.0f : 0.0f)`},h=s?"True":"true",g=s?"False":"false",v=s?"not ":"!",_=s?" and ":" && ",w=s?" or ":" || ",k=[],P=[],A=[],Z=new Map;for(let $ of d){let F=Jr[$.type],y=y_($.id),L=$.props,Y=[],Oe=[],j=[],ee=X=>b($.id+"."+X);for(let X of F.outs)Oe.push(s?`${ee(X.id)} = ${X.kind==="bool"?g:"0"}`:`${X.kind==="bool"?"bool":"float"} ${ee(X.id)} = ${X.kind==="bool"?g:"0"};`);let G=null;if(F.params.some(X=>X.type==="pin")){if(G=ON(e,t,$),!G){a.push(`${F.label} (${$.id}): ${L.pin?"a l\xE1b nincs GPIO-ra k\xF6tve":"nincs kiv\xE1lasztva l\xE1b"}; kimaradt.`);continue}Z.has(G.gpio)&&Z.get(G.gpio)!==$.id&&a.push(o("{a}: t\xF6bb blokk is haszn\xE1lja ({b}, {c}).",{a:G.name,b:Z.get(G.gpio)??"",c:$.id})),Z.set(G.gpio,$.id)}let ue=X=>s?`# ${X}`:`// ${X}`;switch($.type){case"in":{let X=L.pull==="pulldown"?s?"Pin.PULL_DOWN":"INPUT_PULLDOWN":L.pull==="float"?s?"None":"INPUT":s?"Pin.PULL_UP":"INPUT_PULLUP",xe=L.active==="high"?1:0;Y.push(s?`${y}_pin = Pin(${G.gpio}, Pin.IN, ${X}) ${ue(`${G.ref} \u2192 ${G.name}`)}`:`pinMode(${G.gpio}, ${X}); ${ue(`${G.ref} \u2192 ${G.name}`)}`),j.push(s?`${ee("v")} = ${y}_pin.value() == ${xe}`:`${ee("v")} = digitalRead(${G.gpio}) == ${xe?"HIGH":"LOW"};`);break}case"adc":s?Y.push(`${y}_adc = ADC(Pin(${G.gpio})) ${ue(`${G.ref} \u2192 ${G.name}`)}`,...l&&l.mpyAtten?[`${y}_adc.atten(ADC.ATTN_11DB) ${ue(o("0\u20133,3 V-os tartom\xE1ny"))}`]:[]):Y.push(ue(o("anal\xF3g bemenet: {a} \u2192 {b}",{a:G.ref,b:G.name}))),j.push(s?`${ee("v")} = ${y}_adc.read_u16() / 65535`:`${ee("v")} = analogRead(${G.gpio}) / 4095.0f;`);break;case"const":j.push(s?`${ee("v")} = ${ga(Nr(L.value,1))}`:`${ee("v")} = ${ga(Nr(L.value,1))};`);break;case"not":j.push(s?`${ee("v")} = ${v}${f($,"a","bool")}`:`${ee("v")} = ${v}${f($,"a","bool")};`);break;case"and":case"or":case"xor":{let X=f($,"a","bool"),xe=f($,"b","bool"),mt=$.type==="and"?X+_+xe:$.type==="or"?X+w+xe:`${X} != ${xe}`;j.push(s?`${ee("v")} = ${mt}`:`${ee("v")} = ${mt};`);break}case"compare":j.push(s?`${ee("v")} = ${f($,"a","num")} ${L.op==="<"?"<":">"} ${ga(Nr(L.value,.5))}`:`${ee("v")} = ${f($,"a","num")} ${L.op==="<"?"<":">"} ${ga(Nr(L.value,.5))}f;`);break;case"blink":{let X=Math.max(20,Math.round(Nr(L.period,1e3))),xe=Math.round(X*Math.max(0,Math.min(100,Nr(L.duty,50)))/100);j.push(s?`${ee("v")} = t % ${X} < ${xe}`:`${ee("v")} = t % ${X} < ${xe};`);break}case"toggle":Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${f($,"a","bool")}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l"))}`,` ${ee("v")} = not ${ee("v")}`,`${y}_elozo = _be`]:[`{ bool be = ${f($,"a","bool")};`,` if (be && !${y}_elozo) ${ee("v")} = !${ee("v")}; ${ue(o("felfut\xF3 \xE9l"))}`,` ${y}_elozo = be; }`]);break;case"counter":{let X=Math.max(1,Math.round(Nr(L.max,4)));Oe.push(s?`${y}_elozo = False`:`bool ${y}_elozo = false;`,s?`${y}_db = 0`:`int ${y}_db = 0;`),j.push(...s?[`_be = ${f($,"a","bool")}`,`if _be and not ${y}_elozo:`,` ${y}_db = (${y}_db + 1) % ${X}`,`${y}_elozo = _be`,`if ${f($,"r","bool")}:`,` ${y}_db = 0`,`${ee("n")} = ${y}_db`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}`:"0"}`]:[`{ bool be = ${f($,"a","bool")};`,` if (be && !${y}_elozo) ${y}_db = (${y}_db + 1) % ${X};`,` ${y}_elozo = be;`,` if (${f($,"r","bool")}) ${y}_db = 0; }`,`${ee("n")} = ${y}_db;`,`${ee("f")} = ${X>1?`${y}_db / ${X-1}.0f`:"0"};`]);break}case"delay":{let X=Math.max(0,Math.round(Nr(L.ms,500))),xe=String(L.mode??"filter"),mt=f($,"a","bool");if(xe==="off")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`),j.push(...s?[`_be = ${mt}`,"if _be:",` ${y}_mikor = t`,`${ee("v")} = _be or t - ${y}_mikor < ${X} ${ue(o("ut\xE1nfut\xE1s"))}`]:[`{ bool be = ${mt};`,` if (be) ${y}_mikor = (long)t;`,` ${ee("v")} = be || (long)t - ${y}_mikor < ${X}; } ${ue(o("ut\xE1nfut\xE1s"))}`]);else if(xe==="pulse")Oe.push(s?`${y}_mikor = -${X}`:`long ${y}_mikor = -${X};`,s?`${y}_elozo = False`:`bool ${y}_elozo = false;`),j.push(...s?[`_be = ${mt}`,`if _be and not ${y}_elozo and t - ${y}_mikor >= ${X}: ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_mikor = t`,`${y}_elozo = _be`,`${ee("v")} = t - ${y}_mikor < ${X}`]:[`{ bool be = ${mt};`,` if (be && !${y}_elozo && (long)t - ${y}_mikor >= ${X}) ${y}_mikor = (long)t; ${ue(o("felfut\xF3 \xE9l: impulzus"))}`,` ${y}_elozo = be;`,` ${ee("v")} = (long)t - ${y}_mikor < ${X}; }`]);else{Oe.push(s?`${y}_utolso = None`:`int ${y}_utolso = -1;`,s?`${y}_mikor = 0`:`unsigned long ${y}_mikor = 0;`);let nt=xe==="on";j.push(...s?[`_be = ${mt}`,`if _be != ${y}_utolso:`,` ${y}_utolso = _be`,` ${y}_mikor = t`,...nt?[`${ee("v")} = _be and t - ${y}_mikor >= ${X} ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`]:[`if t - ${y}_mikor >= ${X}:`,` ${ee("v")} = _be`]]:[`{ bool be = ${mt};`,` if ((int)be != ${y}_utolso) { ${y}_utolso = be; ${y}_mikor = t; }`,nt?` ${ee("v")} = be && t - ${y}_mikor >= ${X}; } ${ue(o("bekapcsol\xE1si k\xE9sleltet\xE9s"))}`:` if (t - ${y}_mikor >= ${X}) ${ee("v")} = be; }`])}break}case"seq":{let X=Yp(L.preset,L.custom),xe=X.length,mt=L.dir==="back";Oe.push(...s?[`${y}_minta = [${X.map(Ue=>`'${Ue}'`).join(", ")}]`,`${y}_i = 0`,`${y}_elozo = True ${ue(o("indul\xE1skor nem l\xE9p"))}`]:[`const char* ${y}_minta[${xe}] = {${X.map(Ue=>`"${Ue}"`).join(", ")}};`,`int ${y}_i = 0;`,`bool ${y}_elozo = true; ${ue(o("indul\xE1skor nem l\xE9p"))}`]);let nt=f($,"r","bool"),Pe=f($,"a","bool"),ct=mt?s?`1 if ${nt} else -1`:`${nt} ? 1 : -1`:s?`-1 if ${nt} else 1`:`${nt} ? -1 : 1`;j.push(...s?[`_be = ${Pe}`,`if _be and not ${y}_elozo: ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_i = (${y}_i + (${ct})) % ${xe}`,`${y}_elozo = _be`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1'`),`${ee("n")} = ${y}_i`]:[`{ bool be = ${Pe};`,` if (be && !${y}_elozo) ${y}_i = (${y}_i + (${ct}) + ${xe}) % ${xe}; ${ue(o("felfut\xF3 \xE9l: k\xF6vetkez\u0151 sor"))}`,` ${y}_elozo = be; }`,...[0,1,2,3].map(Ue=>`${ee("c"+Ue)} = ${y}_minta[${y}_i][${Ue}] == '1';`),`${ee("n")} = ${y}_i;`]);break}case"out":Y.push(s?`${y}_pin = Pin(${G.gpio}, Pin.OUT) ${ue(`${G.ref} \u2192 ${G.name}`)}`:`pinMode(${G.gpio}, OUTPUT); ${ue(`${G.ref} \u2192 ${G.name}`)}`),j.push(s?`${y}_pin.value(1 if ${f($,"a","bool")} else 0)`:`digitalWrite(${G.gpio}, ${f($,"a","bool")} ? HIGH : LOW);`);break;case"pwm":{let X=Math.max(1,Math.round(Nr(L.freq,1e3)));s?Y.push(`${y}_pwm = PWM(Pin(${G.gpio})) ${ue(`${G.ref} \u2192 ${G.name}`)}`,`${y}_pwm.freq(${X})`):Y.push(`pinMode(${G.gpio}, OUTPUT); ${ue(`${G.ref} \u2192 ${G.name}`)}`,(l?l.pwmFreq:"analogWriteFreq({f});").replace("{pin}",String(G.gpio)).replace("{f}",String(X)));let xe=m.has($.id+".a")?f($,"a","num"):ga(Math.max(0,Math.min(100,Nr(L.duty,50)))/100);j.push(s?`${y}_pwm.duty_u16(int(max(0, min(1, ${xe})) * 65535))`:`analogWrite(${G.gpio}, (int)(constrain(${xe}, 0.0f, 1.0f) * 255));`);break}}let we=ue(`${$.id} \xB7 ${o(F.label)}`);k.push([$.id,Y]),P.push([$.id,Oe]),A.push([$.id,j.length?[we,...j]:[]])}let D={},B=[],K=($,F,y)=>{if(!F.length)return;let L=B.length+1;for(let Y of F)B.push(y+Y);$&&(D[$]=D[$]||[]).push([L,B.length])},x=o("Proofboard \u2013 gener\xE1lt program")+(c?` (${c})`:"");if(s){K(null,[`# ${x}`,"# "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),"from machine import Pin, ADC, PWM","import time","","# --- "+o("l\xE1bak")+" ---"],"");for(let[$,F]of k)K($,F,"");K(null,["","# --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,F]of P)K($,F,"");K(null,["","kezdet = time.ticks_ms()","while True:"," t = time.ticks_diff(time.ticks_ms(), kezdet)"],"");for(let[$,F]of A)K($,F," ");K(null,[" time.sleep_ms(20)"],"")}else{K(null,[`// ${x}`,"// "+o("\xDCtemenk\xE9nt (20 ms) beolvassa a bemeneteket, kisz\xE1molja a blokkokat, \xE9s be\xE1ll\xEDtja a kimeneteket."),...l?[`// ${o("Lap")}: ${l.fqbn}${l.boardUrl?` (${o("alaplapkezel\u0151")}: ${l.boardUrl})`:""}`]:[],"","// --- "+o("blokkok \xE9rt\xE9kei \xE9s \xE1llapota")+" ---"],"");for(let[$,F]of P)K($,F,"");K(null,["","void setup() {"," analogReadResolution(12);"],"");for(let[$,F]of k)K($,F," ");K(null,["}","","void loop() {"," unsigned long t = millis();"],"");for(let[$,F]of A)K($,F," ");K(null,[" delay(20);","}"],"")}return{lang:n,file:s?"main.py":"proofboard.ino",code:B.join(`
136
136
  `)+`
137
- `,lines:F,warnings:a,board:l,target:c}}var k_=[["#fff3bf",E("s\xE1rga")],["#d3f9d8",E("z\xF6ld")],["#d0ebff",E("k\xE9k")],["#ffe3e3",E("piros")],["#f1f3f5",E("sz\xFCrke")]],ma=()=>({v:1,board:{rows:78,cols:39,sec:3},parts:[],bridges:[],wires:[],links:[],auto:{bridges:[],wires:[]},customParts:{},notes:[],gpio:{},pwm:{},settings:{usb:!0,btnMode:"hold",autoRoute:!0},seq:1}),ef=e=>(Array.isArray(e)?e:[]).filter(t=>Array.isArray(t)&&t.length>=2).map(t=>[Math.round(+t[0]),Math.round(+t[1]),+t[2]?1:0]).filter(t=>t.every(Number.isFinite)),v_=e=>{let t=e;return[Number(t[0]),Number(t[1])]},tf=4e3;function Rl(e){if(!e||typeof e!="object")throw new Error("nem objektum");let t=e,r=ma();t.board&&Object.assign(r.board,t.board);for(let[s,a]of Object.entries(t.customParts||{}))!/^c_[a-z0-9_]+$/.test(s)||s in To||Np(Cp(a))||(r.customParts[s]=a);let n=Zz();for(let s of t.parts||[])s&&typeof s.type=="string"&&!(s.type in To)&&!(s.type in r.customParts)&&n[s.type]&&(r.customParts[s.type]=n[s.type]);$l(r.customParts),r.parts=(t.parts||[]).map((s,a)=>{if(!H[s.type])throw new Error("ismeretlen alkatr\xE9sz: "+s.type);return{id:s.id||"p"+(1e3+a),type:s.type,label:s.label||H[s.type].prefix+(a+1),r:s.r|0,c:s.c|0,rot:(s.rot|0)&3,mir:!!s.mir,...s.xray?{xray:!0}:{},...s.fixed?{fixed:!0}:{},...typeof s.plug=="string"&&s.plug?{plug:s.plug}:{},props:{...H[s.type].props,...s.props||{}}}});for(let s of r.parts)s.plug&&!r.parts.some(a=>a.id===s.plug)&&delete s.plug;r.bridges=(t.bridges||[]).filter(s=>Array.isArray(s)&&s.length===4).map(s=>s.map(Number)),r.wires=(t.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:v_(s.a),b:v_(s.b),color:s.color||"#1c7ed6"})),r.gpio=t.gpio||{},r.pwm=t.pwm&&typeof t.pwm=="object"?t.pwm:{},r.settings={...r.settings,...t.settings||{}},r.notes=(Array.isArray(t.notes)?t.notes:[]).filter(s=>s&&isFinite(+s.r)&&isFinite(+s.c)).map((s,a)=>({id:String(s.id||"n"+(a+1)),r:+s.r,c:+s.c,w:Math.max(3,Math.min(60,+s.w||10)),h:Math.max(2,Math.min(60,+s.h||6)),text:String(s.text??""),color:k_.some(i=>i[0]===s.color)?s.color:k_[0][0],target:s.target?String(s.target):null})),r.links=(t.links||[]).filter(s=>s&&s.a&&s.b).map((s,a)=>({id:s.id||"l"+(5e3+a),a:String(s.a),b:String(s.b),gpio:s.gpio||null}));let o=t.auto||{};r.auto={bridges:(o.bridges||[]).filter(s=>Array.isArray(s)&&s.length>=4).map(s=>[...s.slice(0,4).map(Number),Array.isArray(s[4])?s[4]:s[4]?[s[4]]:[]]),wires:(o.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:s.a,b:s.b,color:s.color||"#7048e8",links:s.links||(s.link?[s.link]:[])})),cuts:ef(o.cuts)},r.cuts=ef(t.cuts);{let s=ef(t.cutBan);s.length?r.cutBan=s:delete r.cutBan}typeof t.id=="string"&&/^[\w-]{4,64}$/.test(t.id)&&(r.id=t.id),typeof t.brief=="string"&&t.brief.trim()&&(r.brief=t.brief.slice(0,tf));{let s=p_(t.program);s&&s.nodes.length&&(r.program=s)}if(t.signal&&typeof t.signal=="object"){let s=t.signal,a=g_({preset:String(s.preset||"half"),custom:String(s.custom||""),pins:(Array.isArray(s.pins)?s.pins:[]).slice(0,8).map(i=>i?String(i):null),step:+s.step||0,rate:+s.rate||4,dir:+s.dir<0?-1:1},r.program);a&&a.nodes.length&&(r.program=a)}return r.seq=Math.max(t.seq||1,...r.parts.map(s=>+String(s.id).replace(/\D/g,"")+1||1),...r.links.map(s=>+String(s.id).replace(/\D/g,"")+1||1)),r}function z_(e,t={}){o_();let r=t.pressed||new Set,n=Tr(e,{pressed:d=>Co(d)&&r.has(d.id)}),o=Kp(e,n,{running:!0}),s=e.program&&e.program.nodes.length?e.program:null;if(!s)return{A:n,SIM:o,prog:null,t:0};let a=f_(),i=t.tick||20,c=Math.max(0,t.ms||0),l=0,u=null;for(;;){let d=new Map(o.gpios.map(f=>[f.p.id+"."+f.q.id,{level:!f.powered||f.float?null:f.V>=2?1:f.V<=.8?0:null,V:f.V}]));if(u=m_(e,n,s,a,l,f=>d.get(f)||null),o=Kp(h_(e,u),n,{running:!0}),l>=c)break;l=Math.min(c,l+i)}return{A:n,SIM:o,prog:u,t:l}}var ir=8,Lo=(e,t,r)=>t>=0&&r>=0&&t<e.board.rows&&r<e.board.cols,AN=(e,t,r)=>t>=-ir-.5&&r>=-ir-.5&&t<=e.board.rows+ir-.5&&r<=e.board.cols+ir-.5;function Vo(e,t){let r=me(t);if(Ee(t)){let n=H[t.type].bounds(t),o=[[n.r0,n.c0],[n.r0,n.c1],[n.r1,n.c0],[n.r1,n.c1]].map(([s,a])=>It(t,s,a));return r.every(s=>!Lo(e,s.r,s.c))&&o.every(([s,a])=>AN(e,s,a))}return r.some(n=>Lo(e,n.r,n.c))&&r.every(n=>n.r>=-ir&&n.c>=-ir&&n.r<e.board.rows+ir&&n.c<e.board.cols+ir)}function __(e,t){let r=H[t].prefix,n=0;for(let o of e.parts){let s=new RegExp("^"+r+"(\\d+)$").exec(o.label);s&&(n=Math.max(n,+s[1]))}return r+(n+1)}function rf(e,t,r,n,o={}){return{id:"ghost",type:t,label:H[t].prefix,r,c:n,rot:o.rot||0,mir:!!o.mir,xray:!!o.xray,props:{...H[t].props,...o.props||{}}}}function w_(e,t,r,n,o={}){if(!H[t])return null;let s=rf(e,t,r,n,o);if(!Vo(e,s))return null;let a={...s,id:"p"+e.seq++,label:o.label||__(e,t)};return a.xray||delete a.xray,e.parts.push(a),a}function ON(e,t){e.links=e.links.filter(r=>!r.a.startsWith(t+".")&&!r.b.startsWith(t+"."))}function x_(e,t){let r=new Set(t);for(let n of e.parts)r.has(n.id)&&n.plug&&r.add(n.plug);e.parts=e.parts.filter(n=>!r.has(n.id)),r.forEach(n=>ON(e,n));for(let n of e.parts)n.plug&&r.has(n.plug)&&delete n.plug}function S_(e,t,r){if(e.links.some(o=>o.a===t&&o.b===r||o.a===r&&o.b===t))return null;let n={id:"l"+e.seq++,a:t,b:r,gpio:null};return e.links.push(n),n}function P_(e,t){if(!Ee(t))return null;{let s=Hz(e,t);if(s){t.plug=s.id;let a=Wz(e);return e.links=e.links.filter(i=>!a.has(i.id)),s}}let r=Uz();if(!r)return null;let n=qz(e,t,H[t.type].pins(t).length);if(!n)return null;let o={id:"p"+e.seq++,type:r,label:__(e,r),r:n.r,c:n.c,rot:n.rot,mir:!1,props:{...H[r].props,...Kz(H[r].def,t)}};return e.parts.push(o),t.plug=o.id,o}function $_(e,t,r,n,o,s={}){let a={id:"n"+e.seq++,r:t,c:r,w:s.w??12,h:s.h??6,text:n,color:o,target:s.target??null};return e.notes=[...e.notes||[],a],a}function ha(e,t){return e.parts.flatMap(me).find(r=>r.name===t&&r.role==="gpio")||null}function E_(e,t,r){let n=ha(e,t);return!n||!Fn.some(o=>o[0]===r)||!la(n,r)?!1:(e.gpio[n.part.id+"."+n.id]=r,!0)}function A_(e,t,r,n,o=s=>ua(e,s)){let s=ha(e,t);if(!s||!la(s,"pwm"))return!1;let a=s.part.id+"."+s.id;return e.gpio[a]="pwm",e.pwm={...e.pwm||{},[a]:{...o(a),...r!=null?{duty:r}:{},...n!=null?{freq:n}:{}}},!0}var Ye=(e,t=!1)=>({text:e,changed:t}),_e=e=>({text:e,isError:!0}),bt=(e,t)=>gz(e,t,"en"),lt=e=>typeof e=="number"&&isFinite(e)?e:typeof e=="string"&&e.trim()!==""&&isFinite(+e)?+e:null,Te=e=>e==null?"":String(e);function _r(e,t){let r=t.trim().toLowerCase();return e.parts.find(n=>n.label.toLowerCase()===r)||null}function ga(e,t){let r=t.indexOf(".");if(r<0)return null;let n=_r(e,t.slice(0,r));if(!n)return null;let o=t.slice(r+1).trim().toLowerCase(),s=me(n),a=s.find(i=>i.id.toLowerCase()===o)||s.find(i=>i.name.toLowerCase()===o)||s.find(i=>bt(i.name).toLowerCase()===o);return a?{p:n,q:a,ref:n.id+"."+a.id}:null}function nf(e,t){let r=t.indexOf("."),n=e.parts.find(s=>s.id===t.slice(0,r));if(!n)return t;let o=me(n).find(s=>s.id===t.slice(r+1));return n.label+"."+(o?o.name!==o.id&&!ce(n)?o.id:o.name:t.slice(r+1))}function O_(e){let t=H[e.type].bounds(e),r=[[t.r0,t.c0],[t.r1,t.c1],[t.r0,t.c1],[t.r1,t.c0]].map(([c,l])=>It(e,c,l)),n=Math.ceil(Math.min(...r.map(c=>c[0]))),o=Math.floor(Math.max(...r.map(c=>c[0]))),s=Math.ceil(Math.min(...r.map(c=>c[1]))),a=Math.floor(Math.max(...r.map(c=>c[1]))),i=new Set;for(let c=n;c<=o;c++)for(let l=s;l<=a;l++)i.add(c+":"+l);for(let c of me(e))i.add(c.r+":"+c.c);return i}function sf(e,t){if(Ee(t))return[];let r=O_(t),n=[];for(let o of e.parts)if(!(o.id===t.id||Ee(o))){for(let s of O_(o))if(r.has(s)){n.push(o.label);break}}return n}function af(e,t){if(Ee(t))return[];let r=hn(e),n=(l,u)=>Lo(e,l,u)&&!r.drilled(l,u)?r.cell(l,u):null,o=new Map;for(let[l,u]of H[t.type].internal(t)){let d=o.get(l)||l;o.set(l,d),o.set(u,d)}let s=l=>o.get(l)||l,a=me(t),i=[],c=new Map;for(let l of a){let u=n(l.r,l.c);u!=null&&(c.has(u)||c.set(u,[]),c.get(u).push(l))}for(let l of c.values())for(let u=1;u<l.length;u++)s(l[u].id)!==s(l[0].id)&&i.push(`${t.label}.${jl(t,l[0])} and ${t.label}.${jl(t,l[u])} share a strip section (shorted)`);for(let l of e.parts)if(!(l.id===t.id||Ee(l)))for(let u of me(l)){let d=n(u.r,u.c);d==null||!c.has(d)||i.push(`${t.label}.${jl(t,c.get(d)[0])} shares a strip section with ${l.label}.${jl(l,u)}`)}return i}function TN(e,t,r){let{rows:n,cols:o}=e.board,s=r||{r:0,c:0},a=[],i=Ee(t)?-ir:0,c=Ee(t)?n+ir:n,l=Ee(t)?o+ir:o;for(let u=i;u<c;u++)for(let d=i;d<l;d++)a.push([Math.abs(u-s.r)+Math.abs(d-s.c),u,d]);a.sort((u,d)=>u[0]-d[0]||u[1]-d[1]||u[2]-d[2]);for(let[,u,d]of a){let f={...t,r:u,c:d};if(Vo(e,f)&&!sf(e,f).length&&!af(e,f).length)return{r:u,c:d}}return null}var Dl=e=>bt(H[e].name),jl=(e,t)=>ce(e)?t.name:t.id,lf=e=>e.rot*90+"\xB0"+(e.mir?" mirrored":""),ba=e=>typeof e=="number"?+e.toPrecision(4):e;function Ml(e){let t=El(e);return(H[e.type].def.params||[]).filter(n=>n.type!=="span"&&n.type!=="names").map(n=>`${n.key}=${ba(t[n.key])}${n.unit?n.unit:""}`).join(", ")}var CN={fixed:"fixed",mcu:"controller",control:"control",manual:"hand-wired",off:"off-board",scope:'not in "only"'};function I_(e,t){let r=lt(t.strength);if(r!=null&&(r<0||r>1))return{error:"strength must be between 0 and 1."};let n=null;if(Array.isArray(t.only)){let o=t.only.map(Te),s=o.map(i=>_r(e,i)),a=o.filter((i,c)=>!s[c]);if(a.length)return{error:`Unknown label(s): ${a.join(", ")}`};n=s.map(i=>i.id)}return l_(e,{strength:r??.5,only:n,keepMcu:t.keep_mcu!==!1,keepControls:t.keep_controls!==!1})}function of(e,t){let r=s=>`${s.stats.box?s.stats.rows+"\xD7"+s.stats.cols:"-"} holes, ${s.bridges} bridges, ${s.wires} wires, ${s.linksOk}/${s.links} connected`,n=Object.entries(e.kept).filter(([,s])=>s!=="off").map(([s,a])=>`${s} (${CN[a]})`),o=[e.moves.length?t?"Compacted.":"Compaction preview (not applied).":"No better layout found with these settings; nothing changed.",`Before: ${r(e.before)}`,`After: ${r(e.after)}`];return e.moves.length&&o.push("Moves: "+e.moves.map(s=>`${s.label} ${s.from.r},${s.from.c} \u2192 ${s.to.r},${s.to.c}${s.to.rot!==s.from.rot?` rot ${s.to.rot*90}\xB0`:""}`).join("; ")),n.length&&o.push("Stays in place: "+n.join(", ")),o.join(`
138
- `)}function R_(e,t=Gt){let r=Tr(e),n=Mo(e,r),o=u_(e,{A0:r,AS:r,SIM:null,linkState:n,tr:t});return{A:r,issues:o,states:n}}function T_(e,t=Gt){let{issues:r,states:n}=R_(e,t),o=e.board,s=[],a=o.sec>=o.rows?"full-length vertical strips (stripboard)":o.sec<=1?"isolated pads (dot grid, no strips)":`vertical strips cut into sections of ${o.sec} rows`;if(s.push(e.brief?`Project notes (kept by you and the user; update with set_project_notes):
139
- ${e.brief}`:"Project notes: none yet (record the goal and key decisions with set_project_notes once agreed)."),s.push(`Board: ${o.rows} rows \xD7 ${o.cols} columns, ${a}. Holes are (row, col), 0-based; a strip is one column.`),s.push(`Settings: auto-routing ${e.settings.autoRoute?"on":"off"}, automatic strip cuts ${e.settings.autoCut===!1?"off":"on"}.`),!e.parts.length)s.push("Parts: none.");else{s.push(`Parts (${e.parts.length}):`);for(let l of e.parts){let u=me(l),d=u.length<=8?" pins "+u.map(h=>`${h.name!==h.id&&!ce(l)?h.id+"/"+bt(h.name):h.name}@${h.r},${h.c}`).join(" "):` ${u.length} pins`,f=Ml(l);s.push(`- ${l.label}: ${Dl(l.type)} [${l.type}] at ${l.r},${l.c} rot ${lf(l)}${l.fixed?", FIXED by the user (do not move)":""}${Ee(l)?", off-board"+(l.plug?" (plugged into "+(e.parts.find(h=>h.id===l.plug)||{label:"?"}).label+")":""):""}${f?"; "+f:""};${d}`)}}if(e.links.length){s.push(`Connections (${e.links.length}, routed automatically when auto-routing is on):`);for(let l of e.links){let u=n.get(l.id),d=u?u.ok?u.cable?"via cable":u.wire?"via wire":u.nb?`via ${u.nb} bridge(s)`:"connected":"NOT connected":"";s.push(`- ${nf(e,l.a)} \u2192 ${l.b==="GND"||l.b==="GPIO"?l.b:nf(e,l.b)}${u&&u.gpio&&l.b==="GPIO"?" ("+u.gpio+")":""}: ${d}`)}}else s.push("Connections: none.");{let l=da(e);l.box&&s.push(`Footprint: rows ${l.box.r0}\u2013${l.box.r1}, columns ${l.box.c0}\u2013${l.box.c1} (${l.rows}\xD7${l.cols} holes, ${Math.round(l.area/l.boardArea*100)}% of the board); part bodies fill ${Math.round(l.fill*100)}% of it. Keep layouts compact: place parts close to what they connect to.`)}s.push(`Wiring: ${e.auto.bridges.length} auto bridges, ${e.auto.wires.length} auto wires, ${e.bridges.length} manual bridges, ${e.wires.length} manual wires, ${(e.cuts||[]).length+(e.auto.cuts||[]).length} strip cuts.`);let i=Object.entries(e.gpio||{}).filter(([,l])=>l);i.length&&s.push("GPIO modes: "+i.map(([l,u])=>`${nf(e,l)}=${u}`).join(", ")),e.program&&e.program.nodes.length&&s.push(`Program: ${e.program.nodes.length} blocks (${[...new Set(e.program.nodes.map(l=>l.type))].join(", ")}).`);let c=r.filter(l=>l.sev!=="info");return s.push(c.length?`Problems (${c.length}):
140
- `+c.slice(0,20).map(l=>`- [${l.sev}] ${l.msg}`).join(`
141
- `)+(c.length>20?`
142
- \u2026 ${c.length-20} more`:""):"Problems: none."),e.notes&&e.notes.length&&s.push(`Notes: ${e.notes.length}.`),s.join(`
143
- `)}var q={str:e=>({type:"string",description:e}),int:e=>({type:"integer",description:e}),num:e=>({type:"number",description:e}),bool:e=>({type:"boolean",description:e}),arr:(e,t)=>({type:"array",items:e,description:t}),obj:(e,t=[])=>({type:"object",properties:e,required:t,additionalProperties:!1})};function NN(e,t,r){let n=(H[e].def.params||[]).find(s=>s.key===t);if(!n)return{error:`${Dl(e)} has no parameter "${t}" (valid: ${(H[e].def.params||[]).map(s=>s.key).join(", ")||"none"})`};if(n.type==="select"||n.type==="color"){let s=(n.options||[]).find(a=>String(a.v)===String(r)||bt(a.label).toLowerCase()===String(r).toLowerCase());return s?{v:s.v}:{error:`"${t}" must be one of: ${(n.options||[]).map(a=>`${a.v} (${bt(a.label)})`).join(", ")}`}}if(n.type==="names")return{v:Te(r)};if(n.type==="span")return{error:`"${t}" is a pin-spacing parameter; set "dr" and "dc" (row/column offset of the second pin)`};let o=lt(r);return o==null?{error:`"${t}" must be a number${n.unit?" in "+n.unit:""}`}:n.min!=null&&o<n.min||n.max!=null&&o>n.max?{error:`"${t}" must be between ${n.min??"-\u221E"} and ${n.max??"\u221E"}`}:{v:n.type==="int"?Math.round(o):o}}function C_(e,t,r={}){let n={...r};if(t==null)return{props:n};if(typeof t!="object")return{error:"params must be an object"};let o=(H[e].def.params||[]).find(s=>s.type==="span");for(let[s,a]of Object.entries(t)){if(o&&(s==="dr"||s==="dc")){let c=lt(a);if(c==null)return{error:`"${s}" must be an integer`};n[s]=Math.round(c);continue}let i=NN(e,s,a);if("error"in i)return i;n[s]=i.v}return{props:n}}function N_(e,t){return`${t.label} (${Dl(t.type)}) at ${t.r},${t.c} rot ${lf(t)}; pins `+me(t).map(r=>`${r.id===r.name?r.id:r.id+"/"+bt(r.name)}@${r.r},${r.c}${Lo(e,r.r,r.c)?"":"(off-board)"}`).join(" ")}var Ll=[{name:"get_design",mutates:!1,description:"Get a compact text summary of the current design: board, parts (label, type, position, rotation, parameters, pin positions), connections with routing status, wiring counts, GPIO modes, program, and problems. Call this first, and again after changes when you need fresh state.",input_schema:q.obj({}),run:e=>Ye(T_(e.D(),e.tr))},{name:"list_part_types",mutates:!1,description:"Search the part catalog (built-in and the user's own parts). Returns type keys, names, categories and footprints. Use the type key with place_part. Query matches name, category, footprint or pin names, in English or Hungarian; empty query lists everything.",input_schema:q.obj({query:q.str('search words, e.g. "led", "resistor", "button", "esp32"')}),run(e,t){let r=Te(t.query),n=Object.values(H).filter(o=>!r||Sz(o.def,r,bt));return n.length?Ye(n.map(o=>`${o.type}: ${bt(o.name)} \u2014 ${bt(o.cat)}; ${bt(o.fp)}${o.def.mount==="off"?"; off-board (cable)":""}`).join(`
144
- `)):Ye(`No part type matches "${r}". Try a broader word, or an empty query.`)}},{name:"describe_part_type",mutates:!1,description:"Details of one part type: pins (id, name, role, capabilities), parameters (key, type, default, unit, options), help text. Use before placing an unfamiliar part or setting its parameters.",input_schema:q.obj({type:q.str("part type key from list_part_types")},["type"]),run(e,t){let r=H[Te(t.type)];if(!r)return _e(`Unknown part type "${Te(t.type)}". Use list_part_types.`);let n={id:"x",type:r.type,label:r.prefix,r:0,c:0,rot:0,mir:!1,props:{...r.props}},o=r.pins(n).map(i=>`${i.id}${i.name!==i.id?"/"+bt(i.name):""} (${i.role}${i.caps&&i.caps.length?"; "+i.caps.join(","):""}) @${i.lr},${i.lc}`),s=(r.def.params||[]).map(i=>`${i.key}: ${i.type}${i.unit?" ["+i.unit+"]":""}, default ${JSON.stringify(i.default)}${i.options?", options "+i.options.map(c=>`${c.v}=${bt(c.label)}`).join("|"):""}${i.min!=null||i.max!=null?`, range ${i.min??""}..${i.max??""}`:""} \u2014 ${bt(i.label)}`),a=r.def.meta&&typeof r.def.meta.help=="string"?bt(r.def.meta.help):"";return Ye([`${r.type}: ${bt(r.name)} (${bt(r.cat)}; ${bt(r.fp)}); label prefix ${r.prefix}${r.def.mount==="off"?"; off-board part: placed beside the board, connected by cable via a header (attach_plug)":""}`,`Pins (local offsets at rotation 0): ${o.join("; ")}`,s.length?`Parameters:
137
+ `,lines:D,warnings:a,board:c,target:l}}var v_=[["#fff3bf",E("s\xE1rga")],["#d3f9d8",E("z\xF6ld")],["#d0ebff",E("k\xE9k")],["#ffe3e3",E("piros")],["#f1f3f5",E("sz\xFCrke")]],ba=()=>({v:1,board:{rows:78,cols:39,sec:3},parts:[],bridges:[],wires:[],links:[],auto:{bridges:[],wires:[]},customParts:{},notes:[],gpio:{},pwm:{},settings:{usb:!0,btnMode:"hold",autoRoute:!0},seq:1}),Qp=e=>(Array.isArray(e)?e:[]).filter(t=>Array.isArray(t)&&t.length>=2).map(t=>[Math.round(+t[0]),Math.round(+t[1]),+t[2]?1:0]).filter(t=>t.every(Number.isFinite)),z_=e=>{let t=e;return[Number(t[0]),Number(t[1])]},ef=4e3;function Ml(e){if(!e||typeof e!="object")throw new Error("nem objektum");let t=e,r=ba();t.board&&Object.assign(r.board,t.board);for(let[s,a]of Object.entries(t.customParts||{}))!/^c_[a-z0-9_]+$/.test(s)||s in Ir||la(ia(a))||(r.customParts[s]=a);let n=Bz();for(let s of t.parts||[])s&&typeof s.type=="string"&&!(s.type in Ir)&&!(s.type in r.customParts)&&n[s.type]&&(r.customParts[s.type]=n[s.type]);Co(r.customParts),r.parts=(t.parts||[]).map((s,a)=>{if(!W[s.type])throw new Error("ismeretlen alkatr\xE9sz: "+s.type);return{id:s.id||"p"+(1e3+a),type:s.type,label:s.label||W[s.type].prefix+(a+1),r:s.r|0,c:s.c|0,rot:(s.rot|0)&3,mir:!!s.mir,...s.xray?{xray:!0}:{},...s.fixed?{fixed:!0}:{},...typeof s.plug=="string"&&s.plug?{plug:s.plug}:{},props:{...W[s.type].props,...s.props||{}}}});for(let s of r.parts)s.plug&&!r.parts.some(a=>a.id===s.plug)&&delete s.plug;r.bridges=(t.bridges||[]).filter(s=>Array.isArray(s)&&s.length===4).map(s=>s.map(Number)),r.wires=(t.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:z_(s.a),b:z_(s.b),color:s.color||"#1c7ed6"})),r.gpio=t.gpio||{},r.pwm=t.pwm&&typeof t.pwm=="object"?t.pwm:{},r.settings={...r.settings,...t.settings||{}},r.notes=(Array.isArray(t.notes)?t.notes:[]).filter(s=>s&&isFinite(+s.r)&&isFinite(+s.c)).map((s,a)=>({id:String(s.id||"n"+(a+1)),r:+s.r,c:+s.c,w:Math.max(3,Math.min(60,+s.w||10)),h:Math.max(2,Math.min(60,+s.h||6)),text:String(s.text??""),color:v_.some(i=>i[0]===s.color)?s.color:v_[0][0],target:s.target?String(s.target):null})),r.links=(t.links||[]).filter(s=>s&&s.a&&s.b).map((s,a)=>({id:s.id||"l"+(5e3+a),a:String(s.a),b:String(s.b),gpio:s.gpio||null}));let o=t.auto||{};r.auto={bridges:(o.bridges||[]).filter(s=>Array.isArray(s)&&s.length>=4).map(s=>[...s.slice(0,4).map(Number),Array.isArray(s[4])?s[4]:s[4]?[s[4]]:[]]),wires:(o.wires||[]).filter(s=>s&&s.a&&s.b).map(s=>({a:s.a,b:s.b,color:s.color||"#7048e8",links:s.links||(s.link?[s.link]:[])})),cuts:Qp(o.cuts)},r.cuts=Qp(t.cuts);{let s=Qp(t.cutBan);s.length?r.cutBan=s:delete r.cutBan}typeof t.id=="string"&&/^[\w-]{4,64}$/.test(t.id)&&(r.id=t.id),typeof t.brief=="string"&&t.brief.trim()&&(r.brief=t.brief.slice(0,ef));{let s=f_(t.program);s&&s.nodes.length&&(r.program=s)}if(t.signal&&typeof t.signal=="object"){let s=t.signal,a=b_({preset:String(s.preset||"half"),custom:String(s.custom||""),pins:(Array.isArray(s.pins)?s.pins:[]).slice(0,8).map(i=>i?String(i):null),step:+s.step||0,rate:+s.rate||4,dir:+s.dir<0?-1:1},r.program);a&&a.nodes.length&&(r.program=a)}return r.seq=Math.max(t.seq||1,...r.parts.map(s=>+String(s.id).replace(/\D/g,"")+1||1),...r.links.map(s=>+String(s.id).replace(/\D/g,"")+1||1)),r}function __(e,t={}){s_();let r=t.pressed||new Set,n=Cr(e,{pressed:d=>No(d)&&r.has(d.id)}),o=qp(e,n,{running:!0}),s=e.program&&e.program.nodes.length?e.program:null;if(!s)return{A:n,SIM:o,prog:null,t:0};let a=m_(),i=t.tick||20,l=Math.max(0,t.ms||0),c=0,u=null;for(;;){let d=new Map(o.gpios.map(p=>[p.p.id+"."+p.q.id,{level:!p.powered||p.float?null:p.V>=2?1:p.V<=.8?0:null,V:p.V}]));if(u=h_(e,n,s,a,c,p=>d.get(p)||null),o=qp(g_(e,u),n,{running:!0}),c>=l)break;c=Math.min(l,c+i)}return{A:n,SIM:o,prog:u,t:c}}var ir=8,Vo=(e,t,r)=>t>=0&&r>=0&&t<e.board.rows&&r<e.board.cols,IN=(e,t,r)=>t>=-ir-.5&&r>=-ir-.5&&t<=e.board.rows+ir-.5&&r<=e.board.cols+ir-.5;function Fo(e,t){let r=me(t);if(Ae(t)){let n=W[t.type].bounds(t),o=[[n.r0,n.c0],[n.r0,n.c1],[n.r1,n.c0],[n.r1,n.c1]].map(([s,a])=>It(t,s,a));return r.every(s=>!Vo(e,s.r,s.c))&&o.every(([s,a])=>IN(e,s,a))}return r.some(n=>Vo(e,n.r,n.c))&&r.every(n=>n.r>=-ir&&n.c>=-ir&&n.r<e.board.rows+ir&&n.c<e.board.cols+ir)}function w_(e,t){let r=W[t].prefix,n=0;for(let o of e.parts){let s=new RegExp("^"+r+"(\\d+)$").exec(o.label);s&&(n=Math.max(n,+s[1]))}return r+(n+1)}function tf(e,t,r,n,o={}){return{id:"ghost",type:t,label:W[t].prefix,r,c:n,rot:o.rot||0,mir:!!o.mir,xray:!!o.xray,props:{...W[t].props,...o.props||{}}}}function x_(e,t,r,n,o={}){if(!W[t])return null;let s=tf(e,t,r,n,o);if(!Fo(e,s))return null;let a={...s,id:"p"+e.seq++,label:o.label||w_(e,t)};return a.xray||delete a.xray,e.parts.push(a),a}function TN(e,t){e.links=e.links.filter(r=>!r.a.startsWith(t+".")&&!r.b.startsWith(t+"."))}function S_(e,t){let r=new Set(t);for(let n of e.parts)r.has(n.id)&&n.plug&&r.add(n.plug);e.parts=e.parts.filter(n=>!r.has(n.id)),r.forEach(n=>TN(e,n));for(let n of e.parts)n.plug&&r.has(n.plug)&&delete n.plug}function P_(e,t,r){if(e.links.some(o=>o.a===t&&o.b===r||o.a===r&&o.b===t))return null;let n={id:"l"+e.seq++,a:t,b:r,gpio:null};return e.links.push(n),n}function $_(e,t){if(!Ae(t))return null;{let s=Wz(e,t);if(s){t.plug=s.id;let a=Jz(e);return e.links=e.links.filter(i=>!a.has(i.id)),s}}let r=qz();if(!r)return null;let n=Kz(e,t,W[t.type].pins(t).length);if(!n)return null;let o={id:"p"+e.seq++,type:r,label:w_(e,r),r:n.r,c:n.c,rot:n.rot,mir:!1,props:{...W[r].props,...Hz(W[r].def,t)}};return e.parts.push(o),t.plug=o.id,o}function E_(e,t,r,n,o,s={}){let a={id:"n"+e.seq++,r:t,c:r,w:s.w??12,h:s.h??6,text:n,color:o,target:s.target??null};return e.notes=[...e.notes||[],a],a}function ya(e,t){return e.parts.flatMap(me).find(r=>r.name===t&&r.role==="gpio")||null}function A_(e,t,r){let n=ya(e,t);return!n||!Zn.some(o=>o[0]===r)||!da(n,r)?!1:(e.gpio[n.part.id+"."+n.id]=r,!0)}function O_(e,t,r,n,o=s=>fa(e,s)){let s=ya(e,t);if(!s||!da(s,"pwm"))return!1;let a=s.part.id+"."+s.id;return e.gpio[a]="pwm",e.pwm={...e.pwm||{},[a]:{...o(a),...r!=null?{duty:r}:{},...n!=null?{freq:n}:{}}},!0}var Ze=(e,t=!1)=>({text:e,changed:t}),he=e=>({text:e,isError:!0}),ft=(e,t)=>gz(e,t,"en"),lt=e=>typeof e=="number"&&isFinite(e)?e:typeof e=="string"&&e.trim()!==""&&isFinite(+e)?+e:null,Se=e=>e==null?"":String(e);function _r(e,t){let r=t.trim().toLowerCase();return e.parts.find(n=>n.label.toLowerCase()===r)||null}function ka(e,t){let r=t.indexOf(".");if(r<0)return null;let n=_r(e,t.slice(0,r));if(!n)return null;let o=t.slice(r+1).trim().toLowerCase(),s=me(n),a=s.find(i=>i.id.toLowerCase()===o)||s.find(i=>i.name.toLowerCase()===o)||s.find(i=>ft(i.name).toLowerCase()===o);return a?{p:n,q:a,ref:n.id+"."+a.id}:null}function rf(e,t){let r=t.indexOf("."),n=e.parts.find(s=>s.id===t.slice(0,r));if(!n)return t;let o=me(n).find(s=>s.id===t.slice(r+1));return n.label+"."+(o?o.name!==o.id&&!ce(n)?o.id:o.name:t.slice(r+1))}function I_(e){let t=W[e.type].bounds(e),r=[[t.r0,t.c0],[t.r1,t.c1],[t.r0,t.c1],[t.r1,t.c0]].map(([l,c])=>It(e,l,c)),n=Math.ceil(Math.min(...r.map(l=>l[0]))),o=Math.floor(Math.max(...r.map(l=>l[0]))),s=Math.ceil(Math.min(...r.map(l=>l[1]))),a=Math.floor(Math.max(...r.map(l=>l[1]))),i=new Set;for(let l=n;l<=o;l++)for(let c=s;c<=a;c++)i.add(l+":"+c);for(let l of me(e))i.add(l.r+":"+l.c);return i}function of(e,t){if(Ae(t))return[];let r=I_(t),n=[];for(let o of e.parts)if(!(o.id===t.id||Ae(o))){for(let s of I_(o))if(r.has(s)){n.push(o.label);break}}return n}function sf(e,t){if(Ae(t))return[];let r=gn(e),n=(c,u)=>Vo(e,c,u)&&!r.drilled(c,u)?r.cell(c,u):null,o=new Map;for(let[c,u]of W[t.type].internal(t)){let d=o.get(c)||c;o.set(c,d),o.set(u,d)}let s=c=>o.get(c)||c,a=me(t),i=[],l=new Map;for(let c of a){let u=n(c.r,c.c);u!=null&&(l.has(u)||l.set(u,[]),l.get(u).push(c))}for(let c of l.values())for(let u=1;u<c.length;u++)s(c[u].id)!==s(c[0].id)&&i.push(`${t.label}.${Dl(t,c[0])} and ${t.label}.${Dl(t,c[u])} share a strip section (shorted)`);for(let c of e.parts)if(!(c.id===t.id||Ae(c)))for(let u of me(c)){let d=n(u.r,u.c);d==null||!l.has(d)||i.push(`${t.label}.${Dl(t,l.get(d)[0])} shares a strip section with ${c.label}.${Dl(c,u)}`)}return i}function NN(e,t,r){let{rows:n,cols:o}=e.board,s=r||{r:0,c:0},a=[],i=Ae(t)?-ir:0,l=Ae(t)?n+ir:n,c=Ae(t)?o+ir:o;for(let u=i;u<l;u++)for(let d=i;d<c;d++)a.push([Math.abs(u-s.r)+Math.abs(d-s.c),u,d]);a.sort((u,d)=>u[0]-d[0]||u[1]-d[1]||u[2]-d[2]);for(let[,u,d]of a){let p={...t,r:u,c:d};if(Fo(e,p)&&!of(e,p).length&&!sf(e,p).length)return{r:u,c:d}}return null}var Vl=e=>ft(W[e].name),Dl=(e,t)=>ce(e)?t.name:t.id,af=e=>e.rot*90+"\xB0"+(e.mir?" mirrored":""),va=e=>typeof e=="number"?+e.toPrecision(4):e;function Ll(e){let t=Ol(e);return(W[e.type].def.params||[]).filter(n=>n.type!=="span"&&n.type!=="names").map(n=>`${n.key}=${va(t[n.key])}${n.unit?n.unit:""}`).join(", ")}var T_=e=>({...e.library?e.library():{},...e.D().customParts||{}}),RN={fixed:"fixed",mcu:"controller",control:"control",manual:"hand-wired",off:"off-board",scope:'not in "only"'};function C_(e,t){let r=lt(t.strength);if(r!=null&&(r<0||r>1))return{error:"strength must be between 0 and 1."};let n=null;if(Array.isArray(t.only)){let o=t.only.map(Se),s=o.map(i=>_r(e,i)),a=o.filter((i,l)=>!s[l]);if(a.length)return{error:`Unknown label(s): ${a.join(", ")}`};n=s.map(i=>i.id)}return c_(e,{strength:r??.5,only:n,keepMcu:t.keep_mcu!==!1,keepControls:t.keep_controls!==!1})}function nf(e,t){let r=s=>`${s.stats.box?s.stats.rows+"\xD7"+s.stats.cols:"-"} holes, ${s.bridges} bridges, ${s.wires} wires, ${s.linksOk}/${s.links} connected`,n=Object.entries(e.kept).filter(([,s])=>s!=="off").map(([s,a])=>`${s} (${RN[a]})`),o=[e.moves.length?t?"Compacted.":"Compaction preview (not applied).":"No better layout found with these settings; nothing changed.",`Before: ${r(e.before)}`,`After: ${r(e.after)}`];return e.moves.length&&o.push("Moves: "+e.moves.map(s=>`${s.label} ${s.from.r},${s.from.c} \u2192 ${s.to.r},${s.to.c}${s.to.rot!==s.from.rot?` rot ${s.to.rot*90}\xB0`:""}`).join("; ")),n.length&&o.push("Stays in place: "+n.join(", ")),o.join(`
138
+ `)}function M_(e,t=Gt){let r=Cr(e),n=Do(e,r),o=d_(e,{A0:r,AS:r,SIM:null,linkState:n,tr:t});return{A:r,issues:o,states:n}}function N_(e,t=Gt){let{issues:r,states:n}=M_(e,t),o=e.board,s=[],a=o.sec>=o.rows?"full-length vertical strips (stripboard)":o.sec<=1?"isolated pads (dot grid, no strips)":`vertical strips cut into sections of ${o.sec} rows`;if(s.push(e.brief?`Project notes (kept by you and the user; update with set_project_notes):
139
+ ${e.brief}`:"Project notes: none yet (record the goal and key decisions with set_project_notes once agreed)."),s.push(`Board: ${o.rows} rows \xD7 ${o.cols} columns, ${a}. Holes are (row, col), 0-based; a strip is one column.`),s.push(`Settings: auto-routing ${e.settings.autoRoute?"on":"off"}, automatic strip cuts ${e.settings.autoCut===!1?"off":"on"}.`),!e.parts.length)s.push("Parts: none.");else{s.push(`Parts (${e.parts.length}):`);for(let c of e.parts){let u=me(c),d=u.length<=8?" pins "+u.map(m=>`${m.name!==m.id&&!ce(c)?m.id+"/"+ft(m.name):m.name}@${m.r},${m.c}`).join(" "):` ${u.length} pins`,p=Ll(c);s.push(`- ${c.label}: ${Vl(c.type)} [${c.type}] at ${c.r},${c.c} rot ${af(c)}${c.fixed?", FIXED by the user (do not move)":""}${Ae(c)?", off-board"+(c.plug?" (plugged into "+(e.parts.find(m=>m.id===c.plug)||{label:"?"}).label+")":""):""}${p?"; "+p:""};${d}`)}}if(e.links.length){s.push(`Connections (${e.links.length}, routed automatically when auto-routing is on):`);for(let c of e.links){let u=n.get(c.id),d=u?u.ok?u.cable?"via cable":u.wire?"via wire":u.nb?`via ${u.nb} bridge(s)`:"connected":"NOT connected":"";s.push(`- ${rf(e,c.a)} \u2192 ${c.b==="GND"||c.b==="GPIO"?c.b:rf(e,c.b)}${u&&u.gpio&&c.b==="GPIO"?" ("+u.gpio+")":""}: ${d}`)}}else s.push("Connections: none.");{let c=ma(e);c.box&&s.push(`Footprint: rows ${c.box.r0}\u2013${c.box.r1}, columns ${c.box.c0}\u2013${c.box.c1} (${c.rows}\xD7${c.cols} holes, ${Math.round(c.area/c.boardArea*100)}% of the board); part bodies fill ${Math.round(c.fill*100)}% of it. Keep layouts compact: place parts close to what they connect to.`)}s.push(`Wiring: ${e.auto.bridges.length} auto bridges, ${e.auto.wires.length} auto wires, ${e.bridges.length} manual bridges, ${e.wires.length} manual wires, ${(e.cuts||[]).length+(e.auto.cuts||[]).length} strip cuts.`);let i=Object.entries(e.gpio||{}).filter(([,c])=>c);i.length&&s.push("GPIO modes: "+i.map(([c,u])=>`${rf(e,c)}=${u}`).join(", ")),e.program&&e.program.nodes.length&&s.push(`Program: ${e.program.nodes.length} blocks (${[...new Set(e.program.nodes.map(c=>c.type))].join(", ")}).`);let l=r.filter(c=>c.sev!=="info");return s.push(l.length?`Problems (${l.length}):
140
+ `+l.slice(0,20).map(c=>`- [${c.sev}] ${c.msg}`).join(`
141
+ `)+(l.length>20?`
142
+ \u2026 ${l.length-20} more`:""):"Problems: none."),e.notes&&e.notes.length&&s.push(`Notes: ${e.notes.length}.`),s.join(`
143
+ `)}var q={str:e=>({type:"string",description:e}),int:e=>({type:"integer",description:e}),num:e=>({type:"number",description:e}),bool:e=>({type:"boolean",description:e}),arr:(e,t)=>({type:"array",items:e,description:t}),obj:(e,t=[])=>({type:"object",properties:e,required:t,additionalProperties:!1})};function jN(e,t,r){let n=(W[e].def.params||[]).find(s=>s.key===t);if(!n)return{error:`${Vl(e)} has no parameter "${t}" (valid: ${(W[e].def.params||[]).map(s=>s.key).join(", ")||"none"})`};if(n.type==="select"||n.type==="color"){let s=(n.options||[]).find(a=>String(a.v)===String(r)||ft(a.label).toLowerCase()===String(r).toLowerCase());return s?{v:s.v}:{error:`"${t}" must be one of: ${(n.options||[]).map(a=>`${a.v} (${ft(a.label)})`).join(", ")}`}}if(n.type==="names")return{v:Se(r)};if(n.type==="span")return{error:`"${t}" is a pin-spacing parameter; set "dr" and "dc" (row/column offset of the second pin)`};let o=lt(r);return o==null?{error:`"${t}" must be a number${n.unit?" in "+n.unit:""}`}:n.min!=null&&o<n.min||n.max!=null&&o>n.max?{error:`"${t}" must be between ${n.min??"-\u221E"} and ${n.max??"\u221E"}`}:{v:n.type==="int"?Math.round(o):o}}function R_(e,t,r={}){let n={...r};if(t==null)return{props:n};if(typeof t!="object")return{error:"params must be an object"};let o=(W[e].def.params||[]).find(s=>s.type==="span");for(let[s,a]of Object.entries(t)){if(o&&(s==="dr"||s==="dc")){let l=lt(a);if(l==null)return{error:`"${s}" must be an integer`};n[s]=Math.round(l);continue}let i=jN(e,s,a);if("error"in i)return i;n[s]=i.v}return{props:n}}function j_(e,t){return`${t.label} (${Vl(t.type)}) at ${t.r},${t.c} rot ${af(t)}; pins `+me(t).map(r=>`${r.id===r.name?r.id:r.id+"/"+ft(r.name)}@${r.r},${r.c}${Vo(e,r.r,r.c)?"":"(off-board)"}`).join(" ")}var lf=[{name:"get_design",mutates:!1,description:"Get a compact text summary of the current design: board, parts (label, type, position, rotation, parameters, pin positions), connections with routing status, wiring counts, GPIO modes, program, and problems. Call this first, and again after changes when you need fresh state.",input_schema:q.obj({}),run:e=>Ze(N_(e.D(),e.tr))},{name:"list_part_types",mutates:!1,description:"Search the part catalog (built-in and the user's own parts). Returns type keys, names, categories and footprints. Use the type key with place_part. Query matches name, category, footprint or pin names, in English or Hungarian; empty query lists everything.",input_schema:q.obj({query:q.str('search words, e.g. "led", "resistor", "button", "esp32"')}),run(e,t){let r=Se(t.query),n=Object.values(W).filter(o=>!r||Pz(o.def,r,ft));return n.length?Ze(n.map(o=>`${o.type}: ${ft(o.name)} \u2014 ${ft(o.cat)}; ${ft(o.fp)}${o.def.mount==="off"?"; off-board (cable)":""}`).join(`
144
+ `)):Ze(`No part type matches "${r}". Try a broader word, or an empty query.`)}},{name:"describe_part_type",mutates:!1,description:"Details of one part type: pins (id, name, role, capabilities), parameters (key, type, default, unit, options), help text. Use before placing an unfamiliar part or setting its parameters.",input_schema:q.obj({type:q.str("part type key from list_part_types")},["type"]),run(e,t){let r=W[Se(t.type)];if(!r)return he(`Unknown part type "${Se(t.type)}". Use list_part_types.`);let n={id:"x",type:r.type,label:r.prefix,r:0,c:0,rot:0,mir:!1,props:{...r.props}},o=r.pins(n).map(i=>`${i.id}${i.name!==i.id?"/"+ft(i.name):""} (${i.role}${i.caps&&i.caps.length?"; "+i.caps.join(","):""}) @${i.lr},${i.lc}`),s=(r.def.params||[]).map(i=>`${i.key}: ${i.type}${i.unit?" ["+i.unit+"]":""}, default ${JSON.stringify(i.default)}${i.options?", options "+i.options.map(l=>`${l.v}=${ft(l.label)}`).join("|"):""}${i.min!=null||i.max!=null?`, range ${i.min??""}..${i.max??""}`:""} \u2014 ${ft(i.label)}`),a=r.def.meta&&typeof r.def.meta.help=="string"?ft(r.def.meta.help):"";return Ze([`${r.type}: ${ft(r.name)} (${ft(r.cat)}; ${ft(r.fp)}); label prefix ${r.prefix}${r.def.mount==="off"?"; off-board part: placed beside the board, connected by cable via a header (attach_plug)":""}`,`Pins (local offsets at rotation 0): ${o.join("; ")}`,s.length?`Parameters:
145
145
  `+s.map(i=>"- "+i).join(`
146
146
  `):"Parameters: none",a?"Help: "+a:""].filter(Boolean).join(`
147
- `))}},{name:"get_part",mutates:!1,description:"Details of one placed part: position, rotation, parameters, every pin with its hole, net and connection status.",input_schema:q.obj({label:q.str('part label, e.g. "R1"')},["label"]),run(e,t){let r=e.D(),n=_r(r,Te(t.label));if(!n)return _e(`No part labelled "${Te(t.label)}". Labels: ${r.parts.map(i=>i.label).join(", ")||"none"}`);let o=Tr(r),s=o.byPart.get(n.id).map,a=me(n).map(i=>{let c=s[i.id],l=c&&c.on?(o.netPins.get(c.net)||[]).filter(d=>d.part!==n).map(d=>d.part.label+"."+(ce(d.part)?d.name:d.id)).slice(0,6):[],u=r.links.filter(d=>d.a===n.id+"."+i.id||d.b===n.id+"."+i.id).map(d=>jo(r,d));return`- ${i.id}${i.name!==i.id?"/"+bt(i.name):""} (${i.role}) @${i.r},${i.c}${Lo(r,i.r,i.c)?"":" off-board"}: ${l.length?"net with "+l.join(", "):"no other pins on its net"}${u.length?"; links: "+u.join("; "):""}`});return Ye(`${n.label}: ${Dl(n.type)} [${n.type}] at ${n.r},${n.c} rot ${lf(n)}${Ml(n)?"; "+Ml(n):""}
147
+ `))}},{name:"get_part",mutates:!1,description:"Details of one placed part: position, rotation, parameters, every pin with its hole, net and connection status.",input_schema:q.obj({label:q.str('part label, e.g. "R1"')},["label"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}". Labels: ${r.parts.map(i=>i.label).join(", ")||"none"}`);let o=Cr(r),s=o.byPart.get(n.id).map,a=me(n).map(i=>{let l=s[i.id],c=l&&l.on?(o.netPins.get(l.net)||[]).filter(d=>d.part!==n).map(d=>d.part.label+"."+(ce(d.part)?d.name:d.id)).slice(0,6):[],u=r.links.filter(d=>d.a===n.id+"."+i.id||d.b===n.id+"."+i.id).map(d=>Mo(r,d));return`- ${i.id}${i.name!==i.id?"/"+ft(i.name):""} (${i.role}) @${i.r},${i.c}${Vo(r,i.r,i.c)?"":" off-board"}: ${c.length?"net with "+c.join(", "):"no other pins on its net"}${u.length?"; links: "+u.join("; "):""}`});return Ze(`${n.label}: ${Vl(n.type)} [${n.type}] at ${n.r},${n.c} rot ${af(n)}${Ll(n)?"; "+Ll(n):""}
148
148
  ${a.join(`
149
- `)}`)}},{name:"place_part",mutates:!0,description:'Place a new part on the board. Give row/col for the part origin (its pin 1 / first pin at rotation 0), or omit them to place it at the nearest free spot \u2013 preferably with "near" set to the pin it will connect to, so the layout stays compact (or near_row/near_col). Rotation is in 90\xB0 steps clockwise. Off-board parts (motors, servos) are placed beside the board and get a header plugged in automatically. Fails if the part does not fit or would overlap another part.',input_schema:q.obj({type:q.str("part type key"),row:q.int("origin row"),col:q.int("origin column"),near_row:q.int("preferred area when row/col omitted"),near_col:q.int("preferred area when row/col omitted"),near:q.str('when row/col omitted: place next to this pin or part (e.g. "PICO1.GP15" or "R1") \u2013 use the pin it will connect to'),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirror the part"),params:{type:"object",description:'parameter values by key (see describe_part_type), e.g. {"ohm": 330}'},label:q.str("custom label (default: next free, e.g. R2)")},["type"]),run(e,t){let r=e.D(),n=Te(t.type),o=H[n];if(!o)return _e(`Unknown part type "${n}". Use list_part_types.`);let s=Math.round((lt(t.rotation)||0)/90)&3,a=!!t.mirror,i=C_(n,t.params,o.props);if("error"in i)return _e(i.error);if(t.label&&_r(r,Te(t.label)))return _e(`Label "${Te(t.label)}" is already used.`);let c=lt(t.row),l=lt(t.col),u=rf(r,n,c??0,l??0,{rot:s,mir:a,props:i.props});if(c==null||l==null){let m=lt(t.near_row)??c??0,g=lt(t.near_col)??l??0;if(t.near){let _=Te(t.near),w=ga(r,_),k=w?null:_r(r,_);if(!w&&!k)return _e(`Unknown pin or part "${_}" in "near".`);[m,g]=w?[w.q.r,w.q.c]:[k.r,k.c]}let v=TN(r,u,{r:m,c:g});if(!v)return _e("No free spot where this part fits. Make room or use a bigger board.");c=v.r,l=v.c}let d={...u,r:c,c:l};if(!Vo(r,d))return _e(Ee(d)?"An off-board part must have all its leads outside the board, within 8 holes of the edge.":`Does not fit at ${c},${l}: at least one pin must be on the board and none more than 8 holes outside.`);let f=sf(r,d);if(f.length)return _e(`Would overlap ${f.join(", ")} at ${c},${l}. Choose another position, or omit row/col to auto-place.`);let h=w_(r,n,c,l,{rot:s,mir:a,props:i.props,label:t.label?Te(t.label):void 0}),b=af(r,h),p=b.length?`
150
- Warning: `+b.join("; ")+". Move or rotate it unless this is intended.":"";if(Ee(h)){let m=P_(r,h);p=m?`; cable plugged into header ${m.label}`:"; no room for a header: connect its leads with wires"}return e.commit(),Ye("Placed "+N_(r,h)+p,!0)}},{name:"move_part",mutates:!0,description:"Move a part to a new origin (row/col) and/or rotation. Fails if it would not fit or would overlap another part.",input_schema:q.obj({label:q.str("part label"),row:q.int("new origin row"),col:q.int("new origin column"),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirrored")},["label"]),run(e,t){let r=e.D(),n=_r(r,Te(t.label));if(!n)return _e(`No part labelled "${Te(t.label)}".`);if(n.fixed)return _e(`${n.label} is fixed in place by the user. Do not move it; if moving it seems necessary, explain why and ask the user to unlock it (\u201CFixed position\u201D in its properties).`);let o={...n,r:lt(t.row)??n.r,c:lt(t.col)??n.c,rot:t.rotation!=null?Math.round((lt(t.rotation)||0)/90)&3:n.rot,mir:t.mirror!=null?!!t.mirror:n.mir};if(!Vo(r,o))return _e(`${n.label} does not fit at ${o.r},${o.c}.`);let s=sf(r,o);if(s.length)return _e(`Would overlap ${s.join(", ")}.`);Object.assign(n,{r:o.r,c:o.c,rot:o.rot,mir:o.mir}),e.commit();let a=af(r,n);return Ye("Moved "+N_(r,n)+(a.length?`
151
- Warning: `+a.join("; ")+".":""),!0)}},{name:"set_params",mutates:!0,description:"Change parameters of a placed part (e.g. resistance, LED colour, transistor kind). Keys and allowed values: describe_part_type.",input_schema:q.obj({label:q.str("part label"),params:{type:"object",description:"parameter values by key"}},["label","params"]),run(e,t){let r=e.D(),n=_r(r,Te(t.label));if(!n)return _e(`No part labelled "${Te(t.label)}".`);let o=C_(n.type,t.params,n.props);if("error"in o)return _e(o.error);let s={...n,props:o.props};return Vo(r,s)?(n.props=o.props,e.commit(),Ye(`${n.label}: ${Ml(n)||"updated"}`,!0)):_e("With these parameters the part would not fit (pin spacing).")}},{name:"remove_parts",mutates:!0,description:"Delete parts (with their connections; an off-board part takes its header with it).",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels")},["labels"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Te):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);return s.length?_e(`Unknown label(s): ${s.join(", ")}`):(x_(r,o.map(a=>a.id)),e.commit(),Ye(`Removed ${n.join(", ")}.`,!0))}},{name:"connect",mutates:!0,description:'Add a connection from a pin to another pin, to ground ("GND"), or to a free GPIO of the microcontroller ("GPIO"; the router picks a suitable pin). Pins: "LABEL.PIN" by pin id or name, e.g. "R1.2", "LED1.A", "PICO1.GP15", "PICO1.3V3". With auto-routing on, bridges/wires/strip cuts are created automatically.',input_schema:q.obj({from:q.str('pin, e.g. "R1.2"'),to:q.str('pin, "GND" or "GPIO"')},["from","to"]),run(e,t){let r=e.D(),n=ga(r,Te(t.from));if(!n)return _e(`Unknown pin "${Te(t.from)}". Use get_part to see pin names.`);let o=Te(t.to).trim(),s=o.toUpperCase(),a;if(s==="GND"||s==="GPIO")a=s;else{let l=ga(r,o);if(!l)return _e(`Unknown pin "${o}".`);if(l.ref===n.ref)return _e("A pin cannot connect to itself.");a=l.ref}let i=S_(r,n.ref,a);if(!i)return _e("This connection already exists.");e.commit();let c=Mo(r,Tr(r)).get(i.id);return Ye(`Connected ${jo(r,i)}${c?c.ok?` (routed${c.gpio?", "+c.gpio:""})`:r.settings.autoRoute?" (could not be routed yet \u2014 see problems)":" (auto-routing is off: run route)":""}.`,!0)}},{name:"disconnect",mutates:!0,description:'Remove connection(s) between two pins (or from a pin to GND/GPIO). With only "from", removes every connection of that pin.',input_schema:q.obj({from:q.str("pin"),to:q.str('pin, "GND" or "GPIO" (optional)')},["from"]),run(e,t){let r=e.D(),n=ga(r,Te(t.from));if(!n)return _e(`Unknown pin "${Te(t.from)}".`);let o=t.to?Te(t.to).trim():"",s=o.toUpperCase(),a=o?s==="GND"||s==="GPIO"?s:(ga(r,o)||{ref:"?"}).ref:null,i=l=>l.a===n.ref&&(!a||l.b===a)||l.b===n.ref&&(!a||l.a===a),c=r.links.filter(i);return c.length?(r.links=r.links.filter(l=>!i(l)),e.commit(),Ye(`Removed ${c.length} connection(s).`,!0)):_e("No such connection.")}},{name:"route",mutates:!0,description:"Recompute the automatic wiring (solder bridges, wires, strip cuts) for all connections. Normally automatic; use after turning auto-routing on or if connections show as not routed.",input_schema:q.obj({}),run(e){let t=e.D();Do(t,{full:!0}),e.commit();let r=[...Mo(t,Tr(t)).values()],n=r.filter(o=>!o.ok).length;return Ye(`Routed: ${r.length-n}/${r.length} connections, ${t.auto.bridges.length} bridges, ${t.auto.wires.length} wires, ${(t.auto.cuts||[]).length} strip cuts.${n?` ${n} not routed \u2014 check get_problems.`:""}`,!0)}},{name:"get_problems",mutates:!1,description:"Design-rule check: shorts, unconnected or floating pins, wrong GPIO use, over-current, missing resistors, etc. Run after changes.",input_schema:q.obj({include_info:q.bool("also list hints (severity info)")}),run(e,t){let r=R_(e.D(),e.tr).issues.filter(n=>t.include_info||n.sev!=="info");return Ye(r.length?r.map(n=>`- [${n.sev}] ${n.msg}${n.holes.length?" @"+n.holes.slice(0,3).map(o=>o.join(",")).join(" "):""}`).join(`
152
- `):"No problems.")}},{name:"simulate",mutates:!1,description:"Run the circuit simulation (DC operating point). Optionally press buttons and run the block program for some milliseconds. Returns microcontroller power, GPIO levels, LED currents, motor/servo/stepper state and transistor states.",input_schema:q.obj({pressed:q.arr(q.str("button label"),"buttons held down"),time_ms:q.int("program run time in ms (default 0)")}),run(e,t){let r=e.D(),n=Array.isArray(t.pressed)?t.pressed.map(Te):[],o=new Set;for(let u of n){let d=_r(r,u);if(!d||!Co(d))return _e(`"${u}" is not a button.`);o.add(d.id)}let{SIM:s,prog:a,t:i}=z_(r,{pressed:o,ms:lt(t.time_ms)||0}),c=[];for(let u of s.picos)c.push(`${u.p.label}: ${u.powered?`powered (${u.vsysName} ${ba(u.Usys)} V)`:"NOT powered"}`);let l=s.gpios.filter(u=>u.mode!=="float"||!u.float);l.length&&c.push("GPIO: "+l.map(u=>`${u.q.name}=${u.mode}:${s_(u)}(${ba(u.V)}V)`).join(", "));for(let u of s.leds)c.push(`${u.p.label}: ${(u.I*1e3).toFixed(2)} mA${u.light?", lit":", dark"}${u.imax&&u.I>u.imax?" \u2014 OVER-CURRENT":""}`);for(let u of s.fets)c.push(`${u.p.label}: ${u.on?"on":"off"}, Vgs ${ba(u.vgs)} V${u.floatGate?", FLOATING GATE":""}`);for(let u of s.bjts)c.push(`${u.p.label}: ${u.st}, Ic ${(u.ic*1e3).toFixed(2)} mA`);for(let u of s.motors)c.push(`${u.p.label}: ${ba(u.U)} V, ${(u.I*1e3).toFixed(0)} mA, speed ${Math.round(u.speed*100)}%`);for(let u of s.servos)c.push(`${u.p.label}: ${u.angle!=null?Math.round(u.angle)+"\xB0":"no signal"}`);for(let u of s.steppers)c.push(`${u.p.label}: step ${u.pos}, coils ${u.coils||"\u2013"}`);return a&&c.push(`Program after ${i} ms: `+(a.errors.size?"errors: "+[...a.errors.values()].join("; "):"ok")),Ye(c.join(`
153
- `)||"Nothing to simulate (no powered parts).")}},{name:"set_gpio_mode",mutates:!0,description:`Set the mode of a microcontroller GPIO by pin name (e.g. "GP15"): ${Fn.map(e=>e[0]).join(", ")}. For "pwm" also give duty (%) and frequency (Hz).`,input_schema:q.obj({pin:q.str('GPIO name, e.g. "GP15" or "IO4"'),mode:{type:"string",enum:Fn.map(e=>e[0]),description:"mode"},duty:q.num("PWM duty cycle %"),freq:q.num("PWM frequency Hz")},["pin","mode"]),run(e,t){let r=e.D(),n=Te(t.pin),o=Te(t.mode);if(!ha(r,n))return _e(`No GPIO named "${n}" on the board's microcontroller.`);if(!(o==="pwm"?A_(r,n,lt(t.duty),lt(t.freq)):E_(r,n,o)))return _e(`${n} does not support mode "${o}".`);e.commit();let a=ha(r,n),i=(r.pwm||{})[a.part.id+"."+a.id];return Ye(`${n} \u2192 ${o}${o==="pwm"&&i?` (duty ${i.duty}%, ${i.freq} Hz)`:""}`,!0)}},{name:"add_note",mutates:!0,description:'Add a text note on the canvas (documentation only, not electrical). Lines starting with "# " are headings. Optionally point at a part.',input_schema:q.obj({text:q.str("note text"),row:q.int("top row"),col:q.int("left column"),width:q.int("width in holes (default 12)"),height:q.int("height in holes (default 6)"),target:q.str("part label to point at")},["text","row","col"]),run(e,t){let r=e.D(),n=t.target?_r(r,Te(t.target)):null;return t.target&&!n?_e(`No part labelled "${Te(t.target)}".`):($_(r,lt(t.row)||0,lt(t.col)||0,Te(t.text),"#fff3bf",{w:lt(t.width)||12,h:lt(t.height)||6,target:n?n.id:null}),e.commit(),Ye("Note added.",!0))}},{name:"generate_code",mutates:!1,description:"Generate firmware source code from the block program for the board's microcontroller: MicroPython or Arduino (C++). Requires a program.",input_schema:q.obj({lang:{type:"string",enum:["micropython","arduino"],description:"language"}}),run(e,t){let r=e.D();if(!r.program||!r.program.nodes.length)return _e("The design has no block program yet.");let n=y_(r,Tr(r),r.program,Te(t.lang)||"micropython",e.tr||Gt);return Ye(`File ${n.file}${n.warnings.length?`
149
+ `)}`)}},{name:"place_part",mutates:!0,description:'Place a new part on the board. Give row/col for the part origin (its pin 1 / first pin at rotation 0), or omit them to place it at the nearest free spot \u2013 preferably with "near" set to the pin it will connect to, so the layout stays compact (or near_row/near_col). Rotation is in 90\xB0 steps clockwise. Off-board parts (motors, servos) are placed beside the board and get a header plugged in automatically. Fails if the part does not fit or would overlap another part.',input_schema:q.obj({type:q.str("part type key"),row:q.int("origin row"),col:q.int("origin column"),near_row:q.int("preferred area when row/col omitted"),near_col:q.int("preferred area when row/col omitted"),near:q.str('when row/col omitted: place next to this pin or part (e.g. "PICO1.GP15" or "R1") \u2013 use the pin it will connect to'),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirror the part"),params:{type:"object",description:'parameter values by key (see describe_part_type), e.g. {"ohm": 330}'},label:q.str("custom label (default: next free, e.g. R2)")},["type"]),run(e,t){let r=e.D(),n=Se(t.type),o=W[n];if(!o)return he(`Unknown part type "${n}". Use list_part_types.`);let s=Math.round((lt(t.rotation)||0)/90)&3,a=!!t.mirror,i=R_(n,t.params,o.props);if("error"in i)return he(i.error);if(t.label&&_r(r,Se(t.label)))return he(`Label "${Se(t.label)}" is already used.`);let l=lt(t.row),c=lt(t.col),u=tf(r,n,l??0,c??0,{rot:s,mir:a,props:i.props});if(l==null||c==null){let h=lt(t.near_row)??l??0,g=lt(t.near_col)??c??0;if(t.near){let _=Se(t.near),w=ka(r,_),k=w?null:_r(r,_);if(!w&&!k)return he(`Unknown pin or part "${_}" in "near".`);[h,g]=w?[w.q.r,w.q.c]:[k.r,k.c]}let v=NN(r,u,{r:h,c:g});if(!v)return he("No free spot where this part fits. Make room or use a bigger board.");l=v.r,c=v.c}let d={...u,r:l,c};if(!Fo(r,d))return he(Ae(d)?"An off-board part must have all its leads outside the board, within 8 holes of the edge.":`Does not fit at ${l},${c}: at least one pin must be on the board and none more than 8 holes outside.`);let p=of(r,d);if(p.length)return he(`Would overlap ${p.join(", ")} at ${l},${c}. Choose another position, or omit row/col to auto-place.`);let m=x_(r,n,l,c,{rot:s,mir:a,props:i.props,label:t.label?Se(t.label):void 0}),b=sf(r,m),f=b.length?`
150
+ Warning: `+b.join("; ")+". Move or rotate it unless this is intended.":"";if(Ae(m)){let h=$_(r,m);f=h?`; cable plugged into header ${h.label}`:"; no room for a header: connect its leads with wires"}return e.commit(),Ze("Placed "+j_(r,m)+f,!0)}},{name:"move_part",mutates:!0,description:"Move a part to a new origin (row/col) and/or rotation. Fails if it would not fit or would overlap another part.",input_schema:q.obj({label:q.str("part label"),row:q.int("new origin row"),col:q.int("new origin column"),rotation:q.int("0, 90, 180 or 270"),mirror:q.bool("mirrored")},["label"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}".`);if(n.fixed)return he(`${n.label} is fixed in place by the user. Do not move it; if moving it seems necessary, explain why and ask the user to unlock it (\u201CFixed position\u201D in its properties).`);let o={...n,r:lt(t.row)??n.r,c:lt(t.col)??n.c,rot:t.rotation!=null?Math.round((lt(t.rotation)||0)/90)&3:n.rot,mir:t.mirror!=null?!!t.mirror:n.mir};if(!Fo(r,o))return he(`${n.label} does not fit at ${o.r},${o.c}.`);let s=of(r,o);if(s.length)return he(`Would overlap ${s.join(", ")}.`);Object.assign(n,{r:o.r,c:o.c,rot:o.rot,mir:o.mir}),e.commit();let a=sf(r,n);return Ze("Moved "+j_(r,n)+(a.length?`
151
+ Warning: `+a.join("; ")+".":""),!0)}},{name:"set_params",mutates:!0,description:"Change parameters of a placed part (e.g. resistance, LED colour, transistor kind). Keys and allowed values: describe_part_type.",input_schema:q.obj({label:q.str("part label"),params:{type:"object",description:"parameter values by key"}},["label","params"]),run(e,t){let r=e.D(),n=_r(r,Se(t.label));if(!n)return he(`No part labelled "${Se(t.label)}".`);let o=R_(n.type,t.params,n.props);if("error"in o)return he(o.error);let s={...n,props:o.props};return Fo(r,s)?(n.props=o.props,e.commit(),Ze(`${n.label}: ${Ll(n)||"updated"}`,!0)):he("With these parameters the part would not fit (pin spacing).")}},{name:"remove_parts",mutates:!0,description:"Delete parts (with their connections; an off-board part takes its header with it).",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels")},["labels"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Se):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);return s.length?he(`Unknown label(s): ${s.join(", ")}`):(S_(r,o.map(a=>a.id)),e.commit(),Ze(`Removed ${n.join(", ")}.`,!0))}},{name:"connect",mutates:!0,description:'Add a connection from a pin to another pin, to ground ("GND"), or to a free GPIO of the microcontroller ("GPIO"; the router picks a suitable pin). Pins: "LABEL.PIN" by pin id or name, e.g. "R1.2", "LED1.A", "PICO1.GP15", "PICO1.3V3". With auto-routing on, bridges/wires/strip cuts are created automatically.',input_schema:q.obj({from:q.str('pin, e.g. "R1.2"'),to:q.str('pin, "GND" or "GPIO"')},["from","to"]),run(e,t){let r=e.D(),n=ka(r,Se(t.from));if(!n)return he(`Unknown pin "${Se(t.from)}". Use get_part to see pin names.`);let o=Se(t.to).trim(),s=o.toUpperCase(),a;if(s==="GND"||s==="GPIO")a=s;else{let c=ka(r,o);if(!c)return he(`Unknown pin "${o}".`);if(c.ref===n.ref)return he("A pin cannot connect to itself.");a=c.ref}let i=P_(r,n.ref,a);if(!i)return he("This connection already exists.");e.commit();let l=Do(r,Cr(r)).get(i.id);return Ze(`Connected ${Mo(r,i)}${l?l.ok?` (routed${l.gpio?", "+l.gpio:""})`:r.settings.autoRoute?" (could not be routed yet \u2014 see problems)":" (auto-routing is off: run route)":""}.`,!0)}},{name:"disconnect",mutates:!0,description:'Remove connection(s) between two pins (or from a pin to GND/GPIO). With only "from", removes every connection of that pin.',input_schema:q.obj({from:q.str("pin"),to:q.str('pin, "GND" or "GPIO" (optional)')},["from"]),run(e,t){let r=e.D(),n=ka(r,Se(t.from));if(!n)return he(`Unknown pin "${Se(t.from)}".`);let o=t.to?Se(t.to).trim():"",s=o.toUpperCase(),a=o?s==="GND"||s==="GPIO"?s:(ka(r,o)||{ref:"?"}).ref:null,i=c=>c.a===n.ref&&(!a||c.b===a)||c.b===n.ref&&(!a||c.a===a),l=r.links.filter(i);return l.length?(r.links=r.links.filter(c=>!i(c)),e.commit(),Ze(`Removed ${l.length} connection(s).`,!0)):he("No such connection.")}},{name:"route",mutates:!0,description:"Recompute the automatic wiring (solder bridges, wires, strip cuts) for all connections. Normally automatic; use after turning auto-routing on or if connections show as not routed.",input_schema:q.obj({}),run(e){let t=e.D();Lo(t,{full:!0}),e.commit();let r=[...Do(t,Cr(t)).values()],n=r.filter(o=>!o.ok).length;return Ze(`Routed: ${r.length-n}/${r.length} connections, ${t.auto.bridges.length} bridges, ${t.auto.wires.length} wires, ${(t.auto.cuts||[]).length} strip cuts.${n?` ${n} not routed \u2014 check get_problems.`:""}`,!0)}},{name:"get_problems",mutates:!1,description:"Design-rule check: shorts, unconnected or floating pins, wrong GPIO use, over-current, missing resistors, etc. Run after changes.",input_schema:q.obj({include_info:q.bool("also list hints (severity info)")}),run(e,t){let r=M_(e.D(),e.tr).issues.filter(n=>t.include_info||n.sev!=="info");return Ze(r.length?r.map(n=>`- [${n.sev}] ${n.msg}${n.holes.length?" @"+n.holes.slice(0,3).map(o=>o.join(",")).join(" "):""}`).join(`
152
+ `):"No problems.")}},{name:"simulate",mutates:!1,description:"Run the circuit simulation (DC operating point). Optionally press buttons and run the block program for some milliseconds. Returns microcontroller power, GPIO levels, LED currents, motor/servo/stepper state and transistor states.",input_schema:q.obj({pressed:q.arr(q.str("button label"),"buttons held down"),time_ms:q.int("program run time in ms (default 0)")}),run(e,t){let r=e.D(),n=Array.isArray(t.pressed)?t.pressed.map(Se):[],o=new Set;for(let u of n){let d=_r(r,u);if(!d||!No(d))return he(`"${u}" is not a button.`);o.add(d.id)}let{SIM:s,prog:a,t:i}=__(r,{pressed:o,ms:lt(t.time_ms)||0}),l=[];for(let u of s.picos)l.push(`${u.p.label}: ${u.powered?`powered (${u.vsysName} ${va(u.Usys)} V)`:"NOT powered"}`);let c=s.gpios.filter(u=>u.mode!=="float"||!u.float);c.length&&l.push("GPIO: "+c.map(u=>`${u.q.name}=${u.mode}:${a_(u)}(${va(u.V)}V)`).join(", "));for(let u of s.leds)l.push(`${u.p.label}: ${(u.I*1e3).toFixed(2)} mA${u.light?", lit":", dark"}${u.imax&&u.I>u.imax?" \u2014 OVER-CURRENT":""}`);for(let u of s.fets)l.push(`${u.p.label}: ${u.on?"on":"off"}, Vgs ${va(u.vgs)} V${u.floatGate?", FLOATING GATE":""}`);for(let u of s.bjts)l.push(`${u.p.label}: ${u.st}, Ic ${(u.ic*1e3).toFixed(2)} mA`);for(let u of s.motors)l.push(`${u.p.label}: ${va(u.U)} V, ${(u.I*1e3).toFixed(0)} mA, speed ${Math.round(u.speed*100)}%`);for(let u of s.servos)l.push(`${u.p.label}: ${u.angle!=null?Math.round(u.angle)+"\xB0":"no signal"}`);for(let u of s.steppers)l.push(`${u.p.label}: step ${u.pos}, coils ${u.coils||"\u2013"}`);return a&&l.push(`Program after ${i} ms: `+(a.errors.size?"errors: "+[...a.errors.values()].join("; "):"ok")),Ze(l.join(`
153
+ `)||"Nothing to simulate (no powered parts).")}},{name:"set_gpio_mode",mutates:!0,description:`Set the mode of a microcontroller GPIO by pin name (e.g. "GP15"): ${Zn.map(e=>e[0]).join(", ")}. For "pwm" also give duty (%) and frequency (Hz).`,input_schema:q.obj({pin:q.str('GPIO name, e.g. "GP15" or "IO4"'),mode:{type:"string",enum:Zn.map(e=>e[0]),description:"mode"},duty:q.num("PWM duty cycle %"),freq:q.num("PWM frequency Hz")},["pin","mode"]),run(e,t){let r=e.D(),n=Se(t.pin),o=Se(t.mode);if(!ya(r,n))return he(`No GPIO named "${n}" on the board's microcontroller.`);if(!(o==="pwm"?O_(r,n,lt(t.duty),lt(t.freq)):A_(r,n,o)))return he(`${n} does not support mode "${o}".`);e.commit();let a=ya(r,n),i=(r.pwm||{})[a.part.id+"."+a.id];return Ze(`${n} \u2192 ${o}${o==="pwm"&&i?` (duty ${i.duty}%, ${i.freq} Hz)`:""}`,!0)}},{name:"add_note",mutates:!0,description:'Add a text note on the canvas (documentation only, not electrical). Lines starting with "# " are headings. Optionally point at a part.',input_schema:q.obj({text:q.str("note text"),row:q.int("top row"),col:q.int("left column"),width:q.int("width in holes (default 12)"),height:q.int("height in holes (default 6)"),target:q.str("part label to point at")},["text","row","col"]),run(e,t){let r=e.D(),n=t.target?_r(r,Se(t.target)):null;return t.target&&!n?he(`No part labelled "${Se(t.target)}".`):(E_(r,lt(t.row)||0,lt(t.col)||0,Se(t.text),"#fff3bf",{w:lt(t.width)||12,h:lt(t.height)||6,target:n?n.id:null}),e.commit(),Ze("Note added.",!0))}},{name:"generate_code",mutates:!1,description:"Generate firmware source code from the block program for the board's microcontroller: MicroPython or Arduino (C++). Requires a program.",input_schema:q.obj({lang:{type:"string",enum:["micropython","arduino"],description:"language"}}),run(e,t){let r=e.D();if(!r.program||!r.program.nodes.length)return he("The design has no block program yet.");let n=k_(r,Cr(r),r.program,Se(t.lang)||"micropython",e.tr||Gt);return Ze(`File ${n.file}${n.warnings.length?`
154
154
  Warnings: `+n.warnings.join("; "):""}
155
155
 
156
- ${n.code}`)}},{name:"get_board_image",mutates:!1,description:"Get a picture of the board as the user sees it (parts, bridges, wires, strip cuts, problem markers). Use to check placement and wiring visually.",input_schema:q.obj({}),async run(e){if(!e.snapshot)return _e("Board images are not available here; use get_design.");let t=await e.snapshot();return t?{text:"Board image attached.",image:t}:_e("Could not render the board.")}},{name:"set_project_notes",mutates:!1,description:"Replace the project notes: a short, durable description of what is being built and the key decisions (supply voltage, controller, chosen parts and values, pin assignments, open questions). It is saved with the design and given to you at the start of every conversation. Keep it under ~20 lines, plain text or simple markdown; rewrite it fully each time (it is not appended). Update it when the user agrees on something important. Allowed in both modes.",input_schema:q.obj({text:q.str("the complete new notes")},["text"]),run(e,t){let r=e.D(),n=Te(t.text).trim().slice(0,tf);return n?r.brief=n:delete r.brief,e.commit(),Ye(n?`Project notes saved (${n.split(`
157
- `).length} lines).`:"Project notes cleared.",!0)}},{name:"plan_compaction",mutates:!1,description:"Preview compacting the layout (does not change the design): parts move closer to what they connect to, onto a smaller area, and the wiring is re-routed and checked. Returns before/after area, bridges, wires and connected links, which parts would move and which stay (fixed, controller, controls, hand-wired). strength 0 = loose (2-hole gaps, small moves, easy soldering) \u2026 1 = tight (smallest board). Use it to suggest compaction, then compact_layout to apply.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=I_(e.D(),t);return"error"in r?_e(r.error):Ye(of(r,!1))}},{name:"compact_layout",mutates:!0,description:"Compact the layout (same options as plan_compaction) and apply it: parts move closer together and the wiring is re-routed. Never makes the wiring worse; fixed parts stay. Ask before compacting a layout the user arranged by hand.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=e.D(),n=I_(r,t);return"error"in n?_e(n.error):n.moves.length?(c_(r,n),r.settings.autoRoute&&r.links.length&&Do(r,{full:!0}),e.commit(),Ye(of(n,!0),!0)):Ye(of(n,!0))}},{name:"set_fixed",mutates:!0,description:"Fix parts in place (or release them). Fixed parts are not moved by compaction or by move_part; the user can still move them by hand. Fix parts whose position matters (buttons on a front panel, connectors at the edge) when the user says so.",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels"),fixed:q.bool("true = fix in place, false = release")},["labels","fixed"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Te):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);if(s.length)return _e(`Unknown label(s): ${s.join(", ")}`);for(let a of o)t.fixed?a.fixed=!0:delete a.fixed;return e.commit(),Ye(`${t.fixed?"Fixed in place":"Released"}: ${n.join(", ")}.`,!0)}},{name:"list_examples",mutates:!1,description:"List the built-in example designs (id, title, description).",input_schema:q.obj({}),run(e){let t=e.examples?e.examples():[];return Ye(t.length?t.map(r=>`${r.id}: ${r.title} \u2014 ${r.desc}`).join(`
158
- `):"No examples available.")}},{name:"load_example",mutates:!0,description:"Replace the current design with a built-in example. This discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({id:q.str("example id")},["id"]),run(e,t){return e.loadExample?e.loadExample(Te(t.id))?Ye(`Loaded example "${Te(t.id)}".
156
+ ${n.code}`)}},{name:"get_board_image",mutates:!1,description:"Get a picture of the board as the user sees it (parts, bridges, wires, strip cuts, problem markers). Use to check placement and wiring visually.",input_schema:q.obj({}),async run(e){if(!e.snapshot)return he("Board images are not available here; use get_design.");let t=await e.snapshot();return t?{text:"Board image attached.",image:t}:he("Could not render the board.")}},{name:"set_project_notes",mutates:!1,description:"Replace the project notes: a short, durable description of what is being built and the key decisions (supply voltage, controller, chosen parts and values, pin assignments, open questions). It is saved with the design and given to you at the start of every conversation. Keep it under ~20 lines, plain text or simple markdown; rewrite it fully each time (it is not appended). Update it when the user agrees on something important. Allowed in both modes.",input_schema:q.obj({text:q.str("the complete new notes")},["text"]),run(e,t){let r=e.D(),n=Se(t.text).trim().slice(0,ef);return n?r.brief=n:delete r.brief,e.commit(),Ze(n?`Project notes saved (${n.split(`
157
+ `).length} lines).`:"Project notes cleared.",!0)}},{name:"get_part_definition",mutates:!1,description:"The full JSON definition (PartDef) of a part type \u2013 built-in or custom \u2013 to study or to use as the starting point of a new custom part (save_custom_part). Fields: name, cat, fp, prefix, pins [{id, name, role, lr, lc, caps}], params, model (electrical elements: resistor, diode, source, \u2026), controls (press, slider), draw/body, meta.help.",input_schema:q.obj({type:q.str("part type key")},["type"]),run(e,t){let r=Se(t.type),n=T_(e)[r]||Ir[r];return n?Ze(`${r} (${r in Ir?"built-in \u2013 save changes as a new custom part":"custom part"}):
158
+ ${JSON.stringify(n,null,1)}`):he(`Unknown part type "${r}". Use list_part_types.`)}},{name:"save_custom_part",mutates:!0,description:`Create or update a custom part type (the user's own parts, e.g. a potentiometer with another resistance or footprint). Start from get_part_definition of a similar part, change what is needed, and save. Give "type" to update an existing custom part; omit it to create a new one (a key is made from the name). Built-in types cannot be overwritten \u2013 save a copy under a new name. The definition is validated; errors are returned and nothing is saved. Placed parts of an updated type change with it.`,input_schema:q.obj({definition:{type:"object",description:"the complete PartDef (as returned by get_part_definition, edited)"},type:q.str("existing custom part key to update (omit for a new part)")},["definition"]),run(e,t){let r=t.definition,n=t.type==null?null:Se(t.type);if(n&&n in Ir)return he(`"${n}" is a built-in part and cannot be changed. Save the edited copy as a new part (omit "type", give it a new name).`);let o=T_(e);if(n&&!o[n])return he(`No custom part "${n}". Omit "type" to create a new one.`);let s=ia(r,ft);if(la(s))return he(`The definition has errors; nothing was saved:
159
+ `+s.map(l=>`- ${l.level}: ${l.path?l.path+": ":""}${l.msg}`).join(`
160
+ `));let a=n||xz(r.name,l=>l in W||l in o);if(e.saveCustomPart)e.saveCustomPart(a,r);else{let l=e.D();l.customParts={...l.customParts,[a]:r}}Co(e.D().customParts),e.commit();let i=s.filter(l=>l.level==="warn");return Ze(`${n?"Updated":"Saved new"} custom part "${a}" (${r.name}). Place it with place_part type "${a}".${i.length?`
161
+ Warnings: `+i.map(l=>(l.path?l.path+": ":"")+l.msg).join("; "):""}`,!0)}},{name:"plan_compaction",mutates:!1,description:"Preview compacting the layout (does not change the design): parts move closer to what they connect to, onto a smaller area, and the wiring is re-routed and checked. Returns before/after area, bridges, wires and connected links, which parts would move and which stay (fixed, controller, controls, hand-wired). strength 0 = loose (2-hole gaps, small moves, easy soldering) \u2026 1 = tight (smallest board). Use it to suggest compaction, then compact_layout to apply.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=C_(e.D(),t);return"error"in r?he(r.error):Ze(nf(r,!1))}},{name:"compact_layout",mutates:!0,description:"Compact the layout (same options as plan_compaction) and apply it: parts move closer together and the wiring is re-routed. Never makes the wiring worse; fixed parts stay. Ask before compacting a layout the user arranged by hand.",input_schema:q.obj({strength:q.num("0 (loose) \u2026 1 (tight), default 0.5"),only:q.arr(q.str("label"),"only these parts may move (default: all movable)"),keep_mcu:q.bool("keep the controller board in place (default true)"),keep_controls:q.bool("keep buttons, sliders and connectors in place (default true)")}),run(e,t){let r=e.D(),n=C_(r,t);return"error"in n?he(n.error):n.moves.length?(u_(r,n),r.settings.autoRoute&&r.links.length&&Lo(r,{full:!0}),e.commit(),Ze(nf(n,!0),!0)):Ze(nf(n,!0))}},{name:"set_fixed",mutates:!0,description:"Fix parts in place (or release them). Fixed parts are not moved by compaction or by move_part; the user can still move them by hand. Fix parts whose position matters (buttons on a front panel, connectors at the edge) when the user says so.",input_schema:q.obj({labels:q.arr(q.str("label"),"part labels"),fixed:q.bool("true = fix in place, false = release")},["labels","fixed"]),run(e,t){let r=e.D(),n=Array.isArray(t.labels)?t.labels.map(Se):[],o=n.map(a=>_r(r,a)),s=n.filter((a,i)=>!o[i]);if(s.length)return he(`Unknown label(s): ${s.join(", ")}`);for(let a of o)t.fixed?a.fixed=!0:delete a.fixed;return e.commit(),Ze(`${t.fixed?"Fixed in place":"Released"}: ${n.join(", ")}.`,!0)}},{name:"list_examples",mutates:!1,description:"List the built-in example designs (id, title, description).",input_schema:q.obj({}),run(e){let t=e.examples?e.examples():[];return Ze(t.length?t.map(r=>`${r.id}: ${r.title} \u2014 ${r.desc}`).join(`
162
+ `):"No examples available.")}},{name:"load_example",mutates:!0,description:"Replace the current design with a built-in example. This discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({id:q.str("example id")},["id"]),run(e,t){return e.loadExample?e.loadExample(Se(t.id))?Ze(`Loaded example "${Se(t.id)}".
159
163
 
160
- `+T_(e.D(),e.tr),!0):_e(`Unknown example "${Te(t.id)}".`):_e("Examples are not available here.")}},{name:"new_design",mutates:!0,description:"Start an empty design on a new board. Discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({rows:q.int("rows (default 78)"),cols:q.int("columns (default 39)"),section:q.int("strip section length in rows: 1 = dot grid, 3 = tripad, rows = full strips (default 3)")}),run(e,t){let r=Math.max(5,Math.min(200,lt(t.rows)||78)),n=Math.max(5,Math.min(120,lt(t.cols)||39)),o=Math.max(1,Math.min(r,lt(t.section)||3)),s=ma();return s.board={rows:r,cols:n,sec:o},e.setD(Rl(s)),e.commit(),Ye(`New empty design: ${r}\xD7${n}, section ${o}.`,!0)}}];async function j_(e,t,r){let n=Ll.find(s=>s.name===t);if(!n)return _e(`Unknown tool "${t}".`);let o=r&&typeof r=="object"?r:{};for(let s of n.input_schema.required||[])if(o[s]==null)return _e(`Missing required input "${s}".`);try{return await n.run(e,o)}catch(s){return _e(`Tool failed: ${s.message}`)}}function M_(e,t={}){let r={design:e};return{get design(){return r.design},D:()=>r.design,setD:n=>{r.design=n},commit(){let n=r.design;n.settings.autoRoute&&n.links.length&&Do(n)},...t}}var F_="https://nemalsomel.github.io/proofboard/",MN=["https://nemalsomel.github.io"],DN=/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/,LN=`Proofboard is a perfboard/stripboard circuit designer and simulator. These tools build and check a design: place parts, connect pins (wiring is routed automatically), simulate, check problems, generate code.
161
- Call bridge_status first. If the Proofboard app is connected, every change appears live in the user's browser and the user can undo it; otherwise you work on an in-memory design (save it with save_design_file, or ask the user to open ${F_}, then File \u203A Claude connection\u2026 \u203A Connect).
162
- Refer to parts by label ("R1") and pins as "R1.2" or "PICO1.GP15". Place parts next to the pin they connect to (place_part "near"); keep layouts compact (plan_compaction / compact_layout). Ask before large changes or replacing the user's design.`,V_=[{name:"bridge_status",description:"Whether the Proofboard app is connected (live editing in the user's browser) or the server works on an in-memory design. Call this first.",input_schema:{type:"object",properties:{},additionalProperties:!1}},{name:"open_design_file",description:"Load a design from a Proofboard JSON file (as saved by the app's File \u203A Save to file). Replaces the current design (in the app it can be undone).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path"}},required:["path"],additionalProperties:!1}},{name:"save_design_file",description:"Save the current design to a Proofboard JSON file (it can be opened in the app with File \u203A Open).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path, e.g. my-board.proofboard.json"}},required:["path"],additionalProperties:!1}}];function Z_(e){let t=e.log||(()=>{}),r=M_(ma()),n=null,o="",s=0,a=new Map,i=new cl({name:"proofboard",version:e.version},{capabilities:{tools:{}},instructions:LN}),c=()=>{let p=i.getClientVersion();return p?p.name:void 0},l=(p,m)=>{p.readyState===1&&p.send(JSON.stringify(m))};function u(p,m){let g=n;if(!g)return Promise.resolve({text:"The Proofboard app is not connected.",isError:!0});let v=++s;return new Promise(_=>{let w=setTimeout(()=>{a.delete(v),_({text:"The Proofboard app did not answer in time (it may be busy or the tab is in the background).",isError:!0})},e.callTimeout??12e4);a.set(v,{res:_,timer:w}),l(g,{t:"call",id:v,name:p,input:m})})}let d=p=>{for(let[m,g]of a)clearTimeout(g.timer),g.res({text:p,isError:!0}),a.delete(m)};async function f(p,m){if(p==="bridge_status")return{text:n?`Connected to the Proofboard app (${o}). Changes appear live in the user's browser; the user sees a "Claude is working" bar and can undo each burst of changes with Ctrl+Z.`:`The Proofboard app is not connected: you are working on an in-memory design (${r.D().parts.length} parts). To edit live, ask the user to open ${F_} and choose File \u203A Claude connection\u2026 \u203A Connect${e.port===47615||e.port==null?"":` (port ${e.port})`}. Save your work with save_design_file.`};if(p==="open_design_file"){let g=L_(String(m.path||"")),v;try{v=Rl(JSON.parse(await RN(g,"utf8")))}catch(_){return{text:`Cannot open ${g}: ${_.message}`,isError:!0}}return n?u(ry,{design:v}):($l(v.customParts),r.setD(v),r.commit(),{text:`Opened ${g} (${v.parts.length} parts).`,changed:!0})}if(p==="save_design_file"){let g=L_(String(m.path||"")),v;if(n){let _=await u(ty,{});if(_.isError)return _;v=_.text}else v=JSON.stringify(r.D(),null,1);try{await jN(g,v)}catch(_){return{text:`Cannot write ${g}: ${_.message}`,isError:!0}}return{text:`Saved to ${g}. Open it in the app with File \u203A Open.`}}return n?u(p,m):j_(r,p,m)}i.setRequestHandler(su,async()=>({tools:[...V_,...Ll].map(p=>({name:p.name,description:p.description,inputSchema:p.input_schema}))})),i.setRequestHandler(hs,async p=>{let m=await f(p.params.name,p.params.arguments||{});return{content:[{type:"text",text:m.text},...m.image?[{type:"image",data:m.image,mimeType:"image/png"}]:[]],isError:!!m.isError}}),i.oninitialized=()=>{let p=c();p&&n&&l(n,{t:"client",client:p})};let h=null;function b(){if(e.port===null)return Promise.resolve(null);let p=m=>!m||DN.test(m)||[...MN,...e.origins||[]].includes(m);return new Promise(m=>{let g=new Op.default({host:"127.0.0.1",port:e.port??47615,verifyClient:v=>p(v.origin)});g.on("error",v=>{t(`Bridge not started (${v.message}); working without the app.`),h=null,m(null)}),g.on("listening",()=>{h=g;let v=g.address(),_=typeof v=="object"&&v?v.port:null;t(`Bridge listening on ws://127.0.0.1:${_}`),m(_)}),g.on("connection",v=>{let _=!1;v.on("message",w=>{let k=ny(w);if(k){if(k.t==="hello"){if(k.proto!==1||k.app!=="proofboard"){l(v,{t:"bye",reason:`Unsupported protocol ${k.proto}; update proofboard-mcp.`}),v.close();return}n&&n!==v&&(l(n,{t:"bye",reason:"Another Proofboard tab connected."}),n.close()),_=!0,n=v,o=`Proofboard ${k.version}, design: ${k.design}`,t(`App connected: ${o}`),l(v,{t:"welcome",proto:1,server:"proofboard-mcp",version:e.version,client:c()})}else if(k.t==="result"&&_){let P=a.get(k.id);P&&(clearTimeout(P.timer),a.delete(k.id),P.res(k.result))}}}),v.on("close",()=>{n===v&&(n=null,t("App disconnected."),d("The Proofboard app disconnected before answering."))})})})}return{mcp:i,call:f,listen:b,tools:()=>[...V_,...Ll].map(p=>p.name),connected:()=>!!n,headless:r,async close(){d("Server closing.");for(let p of h?[...h.clients]:[])p.terminate();await new Promise(p=>h?h.close(()=>p()):p()),h=null,await i.close().catch(()=>{})}}}var bn=process.argv.slice(2),VN=e=>{let t=bn.indexOf(e);return t>=0?bn[t+1]:void 0};(bn.includes("--help")||bn.includes("-h"))&&(process.stderr.write(`proofboard-mcp [--port 47615] [--no-bridge] [--allow-origin https://example.org]
163
- `),process.exit(0));var FN=bn.includes("--no-bridge")?null:Number(VN("--port")||process.env.PROOFBOARD_PORT||47615),ZN=bn.flatMap((e,t)=>e==="--allow-origin"&&bn[t+1]?[bn[t+1]]:[]),cf=Z_({version:"0.1.0",port:FN,origins:ZN,log:e=>process.stderr.write(`[proofboard] ${e}
164
- `)});await cf.listen();await cf.mcp.connect(new yi);var uf=()=>{cf.close().finally(()=>process.exit(0))};process.on("SIGINT",uf);process.on("SIGTERM",uf);process.stdin.on("close",uf);
164
+ `+N_(e.D(),e.tr),!0):he(`Unknown example "${Se(t.id)}".`):he("Examples are not available here.")}},{name:"new_design",mutates:!0,description:"Start an empty design on a new board. Discards the current design (the user can undo). Ask the user first unless they asked for it.",input_schema:q.obj({rows:q.int("rows (default 78)"),cols:q.int("columns (default 39)"),section:q.int("strip section length in rows: 1 = dot grid, 3 = tripad, rows = full strips (default 3)")}),run(e,t){let r=Math.max(5,Math.min(200,lt(t.rows)||78)),n=Math.max(5,Math.min(120,lt(t.cols)||39)),o=Math.max(1,Math.min(r,lt(t.section)||3)),s=ba();return s.board={rows:r,cols:n,sec:o},e.setD(Ml(s)),e.commit(),Ze(`New empty design: ${r}\xD7${n}, section ${o}.`,!0)}}];async function D_(e,t,r){let n=lf.find(s=>s.name===t);if(!n)return he(`Unknown tool "${t}".`);let o=r&&typeof r=="object"?r:{};for(let s of n.input_schema.required||[])if(o[s]==null)return he(`Missing required input "${s}".`);try{return await n.run(e,o)}catch(s){return he(`Tool failed: ${s.message}`)}}function L_(e,t={}){let r={design:e};return{get design(){return r.design},D:()=>r.design,setD:n=>{r.design=n},commit(){let n=r.design;n.settings.autoRoute&&n.links.length&&Lo(n)},...t}}var B_="https://nemalsomel.github.io/proofboard/",LN=["https://nemalsomel.github.io"],VN=/^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(:\d+)?$/,FN=`Proofboard is a perfboard/stripboard circuit designer and simulator. These tools build and check a design: place parts, connect pins (wiring is routed automatically), simulate, check problems, generate code.
165
+ Call bridge_status first. If the Proofboard app is connected, every change appears live in the user's browser and the user can undo it; otherwise you work on an in-memory design (save it with save_design_file, or ask the user to open ${B_}, then File \u203A Claude connection\u2026 \u203A Connect).
166
+ Refer to parts by label ("R1") and pins as "R1.2" or "PICO1.GP15". Missing a part type? Copy a similar one (get_part_definition), edit and save it (save_custom_part). Place parts next to the pin they connect to (place_part "near"); keep layouts compact (plan_compaction / compact_layout). Ask before large changes or replacing the user's design.`,Z_=[{name:"bridge_status",description:"Whether the Proofboard app is connected (live editing in the user's browser) or the server works on an in-memory design. Call this first.",input_schema:{type:"object",properties:{},additionalProperties:!1}},{name:"open_design_file",description:"Load a design from a Proofboard JSON file (as saved by the app's File \u203A Save to file). Replaces the current design (in the app it can be undone).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path"}},required:["path"],additionalProperties:!1}},{name:"save_design_file",description:"Save the current design to a Proofboard JSON file (it can be opened in the app with File \u203A Open).",input_schema:{type:"object",properties:{path:{type:"string",description:"file path, e.g. my-board.proofboard.json"}},required:["path"],additionalProperties:!1}}];function G_(e){let t=e.log||(()=>{}),r=L_(ba()),n=null,o="",s=0,a=null,i=new Map,l=new pl({name:"proofboard",version:e.version},{capabilities:{tools:{listChanged:!0}},instructions:FN}),c=()=>[...Z_,...n&&a?a:lf],u=()=>{try{l.sendToolListChanged().catch(()=>{})}catch{}},d=()=>{let v=l.getClientVersion();return v?v.name:void 0},p=(v,_)=>{v.readyState===1&&v.send(JSON.stringify(_))};function m(v,_){let w=n;if(!w)return Promise.resolve({text:"The Proofboard app is not connected.",isError:!0});let k=++s;return new Promise(P=>{let A=setTimeout(()=>{i.delete(k),P({text:"The Proofboard app did not answer in time (it may be busy or the tab is in the background).",isError:!0})},e.callTimeout??12e4);i.set(k,{res:P,timer:A}),p(w,{t:"call",id:k,name:v,input:_})})}let b=v=>{for(let[_,w]of i)clearTimeout(w.timer),w.res({text:v,isError:!0}),i.delete(_)};async function f(v,_){if(v==="bridge_status")return{text:n?`Connected to the Proofboard app (${o}). Changes appear live in the user's browser; the user sees a "Claude is working" bar and can undo each burst of changes with Ctrl+Z.`:`The Proofboard app is not connected: you are working on an in-memory design (${r.D().parts.length} parts). To edit live, ask the user to open ${B_} and choose File \u203A Claude connection\u2026 \u203A Connect${e.port===47615||e.port==null?"":` (port ${e.port})`}. Save your work with save_design_file.`};if(v==="open_design_file"){let w=F_(String(_.path||"")),k;try{k=Ml(JSON.parse(await MN(w,"utf8")))}catch(P){return{text:`Cannot open ${w}: ${P.message}`,isError:!0}}return n?m(ry,{design:k}):(Co(k.customParts),r.setD(k),r.commit(),{text:`Opened ${w} (${k.parts.length} parts).`,changed:!0})}if(v==="save_design_file"){let w=F_(String(_.path||"")),k;if(n){let P=await m(ty,{});if(P.isError)return P;k=P.text}else k=JSON.stringify(r.D(),null,1);try{await DN(w,k)}catch(P){return{text:`Cannot write ${w}: ${P.message}`,isError:!0}}return{text:`Saved to ${w}. Open it in the app with File \u203A Open.`}}return n?m(v,_):D_(r,v,_)}l.setRequestHandler(au,async()=>({tools:c().map(v=>({name:v.name,description:v.description,inputSchema:v.input_schema}))})),l.setRequestHandler(gs,async v=>{let _=await f(v.params.name,v.params.arguments||{});return{content:[{type:"text",text:_.text},..._.image?[{type:"image",data:_.image,mimeType:"image/png"}]:[]],isError:!!_.isError}}),l.oninitialized=()=>{let v=d();v&&n&&p(n,{t:"client",client:v})};let h=null;function g(){if(e.port===null)return Promise.resolve(null);let v=_=>!_||VN.test(_)||[...LN,...e.origins||[]].includes(_);return new Promise(_=>{let w=new Ip.default({host:"127.0.0.1",port:e.port??47615,verifyClient:k=>v(k.origin)});w.on("error",k=>{t(`Bridge not started (${k.message}); working without the app.`),h=null,_(null)}),w.on("listening",()=>{h=w;let k=w.address(),P=typeof k=="object"&&k?k.port:null;t(`Bridge listening on ws://127.0.0.1:${P}`),_(P)}),w.on("connection",k=>{let P=!1;k.on("message",A=>{let Z=ny(A);if(Z){if(Z.t==="hello"){if(Z.proto!==1||Z.app!=="proofboard"){p(k,{t:"bye",reason:`Unsupported protocol ${Z.proto}; update proofboard-mcp.`}),k.close();return}n&&n!==k&&(p(n,{t:"bye",reason:"Another Proofboard tab connected."}),n.close()),P=!0,n=k,o=`Proofboard ${Z.version}, design: ${Z.design}`,t(`App connected: ${o}`);let D=JSON.stringify(c().map(B=>B.name));a=Array.isArray(Z.tools)&&Z.tools.length?Z.tools.filter(B=>B&&typeof B.name=="string"&&!Z_.some(K=>K.name===B.name)):null,JSON.stringify(c().map(B=>B.name))!==D&&u(),p(k,{t:"welcome",proto:1,server:"proofboard-mcp",version:e.version,client:d()})}else if(Z.t==="result"&&P){let D=i.get(Z.id);D&&(clearTimeout(D.timer),i.delete(Z.id),D.res(Z.result))}}}),k.on("close",()=>{if(n===k){let A=!!a;n=null,a=null,t("App disconnected."),b("The Proofboard app disconnected before answering."),A&&u()}})})})}return{mcp:l,call:f,listen:g,tools:()=>c().map(v=>v.name),connected:()=>!!n,headless:r,async close(){b("Server closing.");for(let v of h?[...h.clients]:[])v.terminate();await new Promise(v=>h?h.close(()=>v()):v()),h=null,await l.close().catch(()=>{})}}}var yn=process.argv.slice(2),ZN=e=>{let t=yn.indexOf(e);return t>=0?yn[t+1]:void 0};(yn.includes("--help")||yn.includes("-h"))&&(process.stderr.write(`proofboard-mcp [--port 47615] [--no-bridge] [--allow-origin https://example.org]
167
+ `),process.exit(0));var BN=yn.includes("--no-bridge")?null:Number(ZN("--port")||process.env.PROOFBOARD_PORT||47615),GN=yn.flatMap((e,t)=>e==="--allow-origin"&&yn[t+1]?[yn[t+1]]:[]),cf=G_({version:"0.2.0",port:BN,origins:GN,log:e=>process.stderr.write(`[proofboard] ${e}
168
+ `)});await cf.listen();await cf.mcp.connect(new zi);var uf=()=>{cf.close().finally(()=>process.exit(0))};process.on("SIGINT",uf);process.on("SIGTERM",uf);process.stdin.on("close",uf);