@typeberry/jam 0.0.1-d12b49d → 0.0.1-d15403c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/typeberry.mjs +1 -1
package/typeberry.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! For license information please see typeberry.mjs.LICENSE.txt */
|
|
2
|
-
import{fileURLToPath as e}from"node:url";import{createRequire as t}from"node:module";import*as r from"minimist";import*as s from"lmdb";var i={8:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.matchingBitCount=t.intLog2=t.cidrPrefixToMaskBinaryString=t.leftPadWithZeroBit=t.dottedDecimalNotationToBinaryString=t.parseBinaryStringToBigInt=t.decimalNumberToOctetString=t.numberToBinaryString=void 0,t.numberToBinaryString=e=>e.toString(2),t.decimalNumberToOctetString=e=>{let r=t.numberToBinaryString(e);if(r.length>8)throw new Error("Given decimal in binary contains digits greater than an octet");return t.leftPadWithZeroBit(r,8)},t.parseBinaryStringToBigInt=e=>BigInt(`0b${e}`),t.dottedDecimalNotationToBinaryString=e=>e.split(".").reduce((e,r)=>e.concat(t.decimalNumberToOctetString(parseInt(r))),""),t.leftPadWithZeroBit=(e,t)=>{if(e.length>t)throw new Error(`Given string is already longer than given final length after padding: ${t}`);return"0".repeat(t-e.length).concat(e)},t.cidrPrefixToMaskBinaryString=(e,t)=>{let r;if(r="IPv4"==t?32:128,e>r)throw Error(`Value is greater than ${r}`);return`${"1".repeat(e)}${"0".repeat(r-e)}`},t.intLog2=e=>{let t=0;for(;e%2n==0n;){if(2n===e){t++;break}if((e>>=1n)%2n!=0n){t=0;break}t++}if(0==t)throw new Error(`The value of log2 for ${e.toString()} is not an integer`);return t},t.matchingBitCount=(e,t)=>{let r,s;e.length>=t.length?(r=e,s=t):(r=t,s=e);let i=0;for(;i<r.length&&r.charAt(i)===s.charAt(i);i++);return i}},54:e=>{e.exports=function e(r,s){if(!r){var i=new t(s);throw Error.captureStackTrace&&Error.captureStackTrace(i,e),i}};class t extends Error{}t.prototype.name="AssertionError"},154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Hexadecatet=void 0;const s=r(660);class i{constructor(e){let t;t="string"==typeof e?parseInt(e,16):parseInt(String(e),16);let[r,i]=s.Validator.isValidIPv6Hexadecatet(BigInt(t));if(!r)throw Error(i.filter(e=>""!==e).toString());this.value=t}static fromString(e){return new i(e)}static fromNumber(e){return new i(e)}getValue(){return this.value}toString(){return this.value.toString(16)}}t.Hexadecatet=i},212:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4=t.IPv6Mask=t.IPv4Mask=t.IPv6=t.Asn=t.IPv4=t.AbstractIPNum=void 0;const s=r(301),i=r(660),n=r(8),o=r(8),a=r(8),c=r(8),l=r(154),h=r(984),u=r(872),d=r(984);class f{getValue(){return this.value}toBinaryString(){return a.leftPadWithZeroBit(this.value.toString(2),this.bitSize)}hasNext(){return this.value<this.maximumBitSize}hasPrevious(){return this.value>0n}isEquals(e){return this.value===e.value}isLessThan(e){return this.value<e.value}isGreaterThan(e){return this.value>e.value}isLessThanOrEquals(e){return this.value<=e.value}isGreaterThanOrEquals(e){return this.value>=e.value}}t.AbstractIPNum=f;class g extends f{constructor(e){if(super(),this.bitSize=32,this.maximumBitSize=i.Validator.THIRTY_TWO_BIT_SIZE,this.type="IPv4",this.octets=[],this.separator=".","string"==typeof e){let[t,r]=this.constructFromDecimalDottedString(e);this.value=t,this.octets=r}else{let[t,r]=this.constructFromBigIntValue(e);this.value=t,this.octets=r}}static fromNumber(e){return new g(e)}static fromDecimalDottedString(e){return new g(e)}static fromString(e){return g.fromDecimalDottedString(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0])return new g(o.parseBinaryStringToBigInt(e));throw Error(t[1].join(","))}toString(){return this.octets.map(e=>e.toString()).join(this.separator)}getOctets(){return this.octets}nextIPNumber(){return g.fromNumber(this.getValue()+1n)}previousIPNumber(){return g.fromNumber(this.getValue()-1n)}toIPv4MappedIPv6(){let e="1".repeat(16)+this.toBinaryString();return y.fromBinaryString(e)}constructFromDecimalDottedString(e){let t,r,[o,a]=i.Validator.isValidIPv4String(e);if(!o)throw new Error(a.filter(e=>""!==e).toString());return t=e.split(".").map(e=>s.Octet.fromString(e)),r=BigInt(`0b${n.dottedDecimalNotationToBinaryString(e)}`),[r,t]}constructFromBigIntValue(e){let[t,r]=i.Validator.isValidIPv4Number(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=c.numberToBinaryString(e);return[e="bigint"==typeof e?e:BigInt(e),this.binaryStringToDecimalOctets(s)]}binaryStringToDecimalOctets(e){return e.length<32&&(e=a.leftPadWithZeroBit(e,32)),e.match(/.{1,8}/g).map(e=>s.Octet.fromString(o.parseBinaryStringToBigInt(e).toString()))}}t.IPv4=g;class p extends f{constructor(e){if(super(),this.bitSize=32,this.maximumBitSize=i.Validator.THIRTY_TWO_BIT_SIZE,this.type="ASN","string"==typeof e)p.startWithASPrefix(e)?this.value=BigInt(parseInt(e.substring(2))):-1!=e.indexOf(".")?this.value=BigInt(this.parseFromDotNotation(e)):this.value=BigInt(parseInt(e));else{let t=BigInt(e),[r,s]=i.Validator.isValidAsnNumber(t);if(!r)throw Error(s.filter(e=>""!==e).toString());this.value=t}}static fromString(e){return new p(e)}static fromNumber(e){return new p(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0])return new p(parseInt(e,2));throw Error(t[1].join(","))}toString(){let e=this.value.toString();return`${p.AS_PREFIX}${e}`}toASPlain(){return this.value.toString()}toASDot(){return this.value.valueOf()>=65536n?this.toASDotPlus():this.toASPlain()}toASDotPlus(){let e=this.value.valueOf()/65535n;return`${e}.${this.value.valueOf()%65535n-e}`}toBinaryString(){return c.numberToBinaryString(this.value)}is16Bit(){let[e]=i.Validator.isValid16BitAsnNumber(this.value);return e}is32Bit(){return!this.is16Bit()}nextIPNumber(){return new p(this.value.valueOf()+1n)}previousIPNumber(){return new p(this.value.valueOf()-1n)}static startWithASPrefix(e){return 0===e.indexOf(p.AS_PREFIX)}parseFromDotNotation(e){let t=e.split("."),r=parseInt(t[0]);return 65535*r+(parseInt(t[1])+r)}}t.Asn=p,p.AS_PREFIX="AS";class y extends f{constructor(e){if(super(),this.bitSize=128,this.maximumBitSize=i.Validator.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE,this.type="IPv6",this.hexadecatet=[],this.separator=":","string"==typeof e){let t=u.expandIPv6Number(e),[r,s]=this.constructFromHexadecimalDottedString(t);this.value=r,this.hexadecatet=s}else{let[t,r]=this.constructFromBigIntValue(e);this.value=t,this.hexadecatet=r}}static fromBigInt(e){return new y(e)}static fromHexadecatet(e){return new y(e)}static fromString(e){return y.fromHexadecatet(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0]){let t=a.leftPadWithZeroBit(e,128);return new y(o.parseBinaryStringToBigInt(t))}throw Error(t[1].join(","))}static fromIPv4(e){return e.toIPv4MappedIPv6()}static fromIPv4DotDecimalString(e){return new g(e).toIPv4MappedIPv6()}toString(){let e=this.hexadecatet.map(e=>e.toString()).join(":");return this.hexadecatet.length<8?"::"+e:e}getHexadecatet(){return this.hexadecatet}nextIPNumber(){return y.fromBigInt(this.getValue()+1n)}previousIPNumber(){return y.fromBigInt(this.getValue()-1n)}constructFromBigIntValue(e){let[t,r]=i.Validator.isValidIPv6Number(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=c.numberToBinaryString(e);return[e,this.binaryStringToHexadecatets(s)]}constructFromHexadecimalDottedString(e){let[t,r]=i.Validator.isValidIPv6String(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=e.split(":").map(e=>l.Hexadecatet.fromString(e));return[BigInt(`0b${d.hexadectetNotationToBinaryString(e)}`),s]}binaryStringToHexadecatets(e){let t=h.binaryStringToHexadecimalString(e);for(;t.length%4!=0;)t="0"+t;return t.match(/.{1,4}/g).map(e=>l.Hexadecatet.fromString(e))}}t.IPv6=y;class m extends g{constructor(e){let t,r;if(super(e),this.octets=[],[t,r]=i.Validator.isValidIPv4Mask(e),!t)throw new Error(r.filter(e=>""!==e).toString());let o=e.split(".");this.octets=o.map(e=>s.Octet.fromString(e));let a=n.dottedDecimalNotationToBinaryString(e);this.prefix=(a.match(/1/g)||[]).length,this.value=BigInt(`0b${a}`)}static fromDecimalDottedString(e){return new m(e)}}t.IPv4Mask=m;class b extends y{constructor(e){let t,r;super(e),this.hexadecatet=[];let s=u.expandIPv6Number(e);if([t,r]=i.Validator.isValidIPv6Mask(s),!t)throw new Error(r.filter(e=>""!==e).toString());let n=s.split(":");this.hexadecatet=n.map(e=>l.Hexadecatet.fromString(e));let o=d.hexadectetNotationToBinaryString(s);this.prefix=(o.match(/1/g)||[]).length,this.value=BigInt(`0b${o}`),this.value=BigInt(`0b${d.hexadectetNotationToBinaryString(s)}`)}static fromHexadecatet(e){return new b(e)}}t.IPv6Mask=b,t.isIPv4=function(e){return 32===e.bitSize}},259:e=>{var t,r,s=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:4*t-205]=t;return t=>{for(var r=t.length,s=new Uint8Array(3*(r-("="==t[r-1])-("="==t[r-2]))/4|0),i=0,n=0;i<r;){var o=e[t.charCodeAt(i++)],a=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];s[n++]=o<<2|a>>4,s[n++]=a<<4|c>>2,s[n++]=c<<6|l}return s}})(),i=(t={"wasm-binary:./blake2b.wat"(e,t){t.exports=s("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=")}},function(){return r||(0,t[Object.keys(t)[0]])((r={exports:{}}).exports,r),r.exports})(),n=WebAssembly.compile(i);e.exports=async e=>(await WebAssembly.instantiate(await n,e)).exports},287:e=>{function t(e){return Buffer.isBuffer(e)?e:Buffer.from(e.buffer,e.byteOffset,e.byteLength)}e.exports={isBuffer:function(e){return Buffer.isBuffer(e)||e instanceof Uint8Array},isEncoding:function(e){return Buffer.isEncoding(e)},alloc:function(e,t,r){return Buffer.alloc(e,t,r)},allocUnsafe:function(e){return Buffer.allocUnsafe(e)},allocUnsafeSlow:function(e){return Buffer.allocUnsafeSlow(e)},byteLength:function(e,t){return Buffer.byteLength(e,t)},compare:function(e,t){return Buffer.compare(e,t)},concat:function(e,t){return Buffer.concat(e,t)},copy:function(e,r,s,i,n){return t(e).copy(r,s,i,n)},equals:function(e,r){return t(e).equals(r)},fill:function(e,r,s,i,n){return t(e).fill(r,s,i,n)},from:function(e,t,r){return Buffer.from(e,t,r)},includes:function(e,r,s,i){return t(e).includes(r,s,i)},indexOf:function(e,r,s,i){return t(e).indexOf(r,s,i)},lastIndexOf:function(e,r,s,i){return t(e).lastIndexOf(r,s,i)},swap16:function(e){return t(e).swap16()},swap32:function(e){return t(e).swap32()},swap64:function(e){return t(e).swap64()},toBuffer:t,toString:function(e,r,s,i){return t(e).toString(r,s,i)},write:function(e,r,s,i,n){return t(e).write(r,s,i,n)},writeDoubleLE:function(e,r,s){return t(e).writeDoubleLE(r,s)},writeFloatLE:function(e,r,s){return t(e).writeFloatLE(r,s)},writeUInt32LE:function(e,r,s){return t(e).writeUInt32LE(r,s)},writeInt32LE:function(e,r,s){return t(e).writeInt32LE(r,s)},readDoubleLE:function(e,r){return t(e).readDoubleLE(r)},readFloatLE:function(e,r){return t(e).readFloatLE(r)},readUInt32LE:function(e,r){return t(e).readUInt32LE(r)},readInt32LE:function(e,r){return t(e).readInt32LE(r)}}},301:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Octet=void 0;const s=r(660);class i{constructor(e){let t;t="string"==typeof e?parseInt(e):e;let[r,i]=s.Validator.isValidIPv4Octet(BigInt(t));if(!r)throw Error(i.filter(e=>""!==e).toString());this.value=t}static fromString(e){return new i(e)}static fromNumber(e){return new i(e)}getValue(){return this.value}toString(){return this.value.toString(10)}}t.Octet=i},405:(t,r,s)=>{var i=e(import.meta.url+"/..").slice(0,-1);let n,o=null;function a(){return null!==o&&0!==o.byteLength||(o=new Uint8Array(n.memory.buffer)),o}let c=0;function l(e,t){const r=t(1*e.length,1)>>>0;return a().set(e,r/1),c=e.length,r}let h=null;function u(){return null!==h&&0!==h.byteLength||(h=new Int32Array(n.memory.buffer)),h}function d(e,t){return e>>>=0,a().subarray(e/1,e/1+t)}t.exports.hc=function(e){try{const i=n.__wbindgen_add_to_stack_pointer(-16),o=l(e,n.__wbindgen_malloc),a=c;n.ring_commitment(i,o,a);var t=u()[i/4+0],r=u()[i/4+1],s=d(t,r).slice();return n.__wbindgen_free(t,1*r,1),s}finally{n.__wbindgen_add_to_stack_pointer(16)}},t.exports.KG=function(e,t,r,s,i){try{const f=n.__wbindgen_add_to_stack_pointer(-16),g=l(e,n.__wbindgen_malloc),p=c,y=l(r,n.__wbindgen_malloc),m=c,b=l(s,n.__wbindgen_malloc),A=c,I=l(i,n.__wbindgen_malloc),v=c;n.verify_seal(f,g,p,t,y,m,b,A,I,v);var o=u()[f/4+0],a=u()[f/4+1],h=d(o,a).slice();return n.__wbindgen_free(o,1*a,1),h}finally{n.__wbindgen_add_to_stack_pointer(16)}},t.exports.ZJ=function(e,t,r){try{const a=n.__wbindgen_add_to_stack_pointer(-16),h=l(e,n.__wbindgen_malloc),f=c,g=l(t,n.__wbindgen_malloc),p=c;n.batch_verify_tickets(a,h,f,g,p,r);var s=u()[a/4+0],i=u()[a/4+1],o=d(s,i).slice();return n.__wbindgen_free(s,1*i,1),o}finally{n.__wbindgen_add_to_stack_pointer(16)}};const f=s(928).join(i,"bandersnatch_bg.wasm"),g=s(896).readFileSync(f),p=new WebAssembly.Module(g),y=new WebAssembly.Instance(p,{});n=y.exports},412:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4CidrRange=t.IPv6CidrRange=t.IPv4CidrRange=t.AbstractIPRange=t.RangedSet=void 0;const s=r(212),i=r(516),n=r(8),o=r(660);class a{constructor(e,t){if(this.first=e,this.last=t,e.isGreaterThan(t))throw new Error(`${e.toString()} should be lower than ${t.toString()}`);this.currentValue=e,this.bitValue=BigInt(e.bitSize)}static fromSingleIP(e){return new a(e,e)}static fromCidrRange(e){return new a(e.getFirst(),e.getLast())}static fromRangeString(e){let t=e.split("-").map(e=>e.trim());if(2!==t.length)throw new Error("Argument should be in the format firstip-lastip");let[r,i]=t,[n]=o.Validator.isValidIPv4String(r),[c]=o.Validator.isValidIPv4String(i),[l]=o.Validator.isValidIPv6String(r),[h]=o.Validator.isValidIPv6String(i);if(n&&c)return new a(s.IPv4.fromDecimalDottedString(r),s.IPv4.fromDecimalDottedString(i));if(l&&h)return new a(s.IPv6.fromHexadecatet(r),s.IPv6.fromHexadecatet(i));throw new Error("First IP and Last IP should be valid and same type")}getFirst(){return this.first}getLast(){return this.last}getSize(){return this.last.getValue()-this.first.getValue()+1n}toRangeString(){return`${this.getFirst()}-${this.getLast()}`}inside(e){return e.contains(this)}contains(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return t.isLessThanOrEquals(s)&&r.isGreaterThanOrEquals(i)}isEquals(e){return this.getFirst().isEquals(e.getFirst())&&this.getLast().isEquals(e.getLast())}isLessThan(e){return!this.isEquals(e)&&(this.getFirst().isEquals(e.getFirst())?this.getSize()<e.getSize():this.getFirst().isLessThan(e.getFirst()))}isGreaterThan(e){return!this.isEquals(e)&&(this.getFirst().isEquals(e.getFirst())?this.getSize()>e.getSize():this.getFirst().isGreaterThan(e.getFirst()))}isOverlapping(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return r.isGreaterThan(s)&&r.isLessThanOrEquals(i)&&t.isLessThan(s)||i.isGreaterThan(t)&&i.isLessThanOrEquals(r)&&s.isLessThan(t)}isCidrAble(){if(1n===this.getSize())return!0;try{let e=n.intLog2(this.getSize()),t=n.parseBinaryStringToBigInt(n.cidrPrefixToMaskBinaryString(e,s.isIPv4(this.currentValue)?"IPv4":"IPv6"));return this.first.getValue()===(t&this.first.getValue())}catch(e){return!1}}toCidrRange(){return s.isIPv4(this.currentValue)?this.toIPv4CidrRange():this.toIPv6CidrRange()}isConsecutive(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return r.hasNext()&&r.nextIPNumber().isEquals(s)||i.hasNext()&&i.nextIPNumber().isEquals(t)}union(e){if(this.isEquals(e))return new a(e.getFirst(),e.getLast());if(this.isOverlapping(e))return this.getFirst().isLessThan(e.getFirst())?new a(this.getFirst(),e.getLast()):new a(e.getFirst(),this.getLast());if(this.contains(e))return new a(this.getFirst(),this.getLast());if(e.contains(this))return new a(e.getFirst(),e.getLast());throw new Error("Ranges do not overlap nor are equal")}prepend(e){if(e.getLast().nextIPNumber().isEquals(this.getFirst()))return new a(e.getFirst(),this.getLast());throw new Error("Range to prepend must be adjacent")}append(e){if(this.getLast().nextIPNumber().isEquals(e.getFirst()))return new a(this.getFirst(),e.getLast());throw new Error("Range to append must be adjacent")}subtract(e){if(!this.isOverlapping(e))throw new Error("Cannot subtract ranges that are not overlapping");if(!this.isLessThan(e))throw new Error("Cannot subtract a larger range from this range");return new a(this.getFirst(),e.getLast())}takeSubRange(e,t){if(e+t>this.getSize())throw new RangeError("Requested range is greater than what can be taken");if(0n===t)throw new Error("Sub range cannot be zero");let r=this.getFirst().value+e,i=s.isIPv4(this.getFirst())?s.IPv4.fromNumber(r):s.IPv6.fromBigInt(r),n=i.value+(t-1n),o=s.isIPv4(i)?s.IPv4.fromNumber(n):s.IPv6.fromBigInt(n);return new a(i,o)}difference(e){if(e.getSize()>this.getSize())throw new Error("Range is greater than range to be subtracted from");if(!this.contains(e))throw new Error("Range to subtract is not contained in this range");let t=[];try{t.push(new a(this.getFirst(),e.getFirst().previousIPNumber()))}catch(e){}try{t.push(new a(e.getLast().nextIPNumber(),this.getLast()))}catch(e){}return t}*take(e){let t=this.getFirst(),r=void 0===e?this.getSize().valueOf():e;for(;r>0;)r--,yield t,t=t.nextIPNumber()}*[Symbol.iterator](){yield*this.take()}toIPv4CidrRange(){let e=new l(s.IPv4.fromNumber(this.getFirst().getValue()),i.IPv4Prefix.fromRangeSize(this.getSize()));if(e.getFirst().isEquals(this.getFirst()))return e;throw new Error("Range cannot be converted to CIDR")}toIPv6CidrRange(){let e=new h(s.IPv6.fromBigInt(this.getFirst().getValue()),i.IPv6Prefix.fromRangeSize(this.getSize()));if(e.getFirst().isEquals(this.getFirst()))return e;throw new Error("Range cannot be converted to CIDR")}}t.RangedSet=a;class c{hasNextRange(){let e=this.getSize();return 2n**this.bitValue-e>=this.getFirst().getValue()+e}hasPreviousRange(){return this.getSize()<=this.getFirst().getValue()}toRangeSet(){return new a(this.getFirst(),this.getLast())}inside(e){return this.toRangeSet().inside(e.toRangeSet())}contains(e){return this.toRangeSet().contains(e.toRangeSet())}toRangeString(){return this.toRangeSet().toRangeString()}isOverlapping(e){return this.toRangeSet().isOverlapping(e.toRangeSet())}isConsecutive(e){return this.toRangeSet().isConsecutive(e.toRangeSet())}isCidrMergeable(e){const t=BigInt(n.matchingBitCount(this.getFirst().toBinaryString(),e.getFirst().toBinaryString()));return this.getPrefix().value-t===1n&&this.isConsecutive(e)&&this.getSize()===e.getSize()}isMergeable(e){return this.isCidrMergeable(e)||this.contains(e)||this.inside(e)}isEquals(e){return this.toRangeSet().isEquals(e.toRangeSet())}merge(e){if(!this.isCidrMergeable(e))throw new Error(`Cannot merge. Ranges (${this.toRangeString()},${e.toRangeString()}) are not consecutive and/or of same size`);return this.newInstance(this.getFirst(),this.getPrefix().merge())}*takeStream(e){return this.toRangeSet().take(e)}*[Symbol.iterator](){yield*this.toRangeSet()}}t.AbstractIPRange=c;class l extends c{constructor(e,t){super(),this.ipv4=e,this.cidrPrefix=t,this.bitValue=32n}static fromCidr(e){let[t,r]=o.Validator.isValidIPv4CidrNotation(e);if(!t){let e=r.filter(e=>""!==e);throw new Error(e.join(" and "))}let n=e.split("/"),a=n[0],c=BigInt(parseInt(n[1]));return new l(s.IPv4.fromDecimalDottedString(a),i.IPv4Prefix.fromNumber(c))}getSize(){return this.cidrPrefix.toRangeSize()}toCidrString(){return`${this.ipv4.toString().toString()}/${this.cidrPrefix.toString()}`}toRangeString(){return super.toRangeString()}getFirst(){return s.IPv4.fromNumber(this.ipv4.getValue()&this.cidrPrefix.toMask().getValue())}getLast(){return u(this,this.ipv4)}newInstance(e,t){return new l(e,t)}getPrefix(){return this.cidrPrefix}isConsecutive(e){return super.isConsecutive(e)}contains(e){return super.contains(e)}inside(e){return super.inside(e)}isOverlapping(e){return super.isOverlapping(e)}take(e){let t=[this.getFirst()],r=this.getFirst();if(e>this.getSize()){let t=o.Validator.takeOutOfRangeSizeMessage.replace("$count",e.toString()).replace("$size",this.getSize().toString());throw new Error(t)}for(let s=0;s<e-1n;s++)t.push(r.nextIPNumber()),r=r.nextIPNumber();return t}split(){let e=this.cidrPrefix.getValue();if(32n===e)throw new Error("Cannot split an IP range with a single IP number");let t=i.IPv4Prefix.fromNumber(e+1n),r=this.getFirst(),s=new l(r,t),n=s.getLast().nextIPNumber();return[s,new l(n,t)]}splitInto(e){let t=e.getValue()-this.cidrPrefix.getValue();if(t<0)throw new Error("Prefix to split into is larger than source prefix");if(0n===t)return[new l(this.getFirst(),e)];if(1n===t)return this.split();{let e=this.split();for(;t>1;)e=e.flatMap(e=>e.split()),t-=1n;return e}}hasNextRange(){return super.hasNextRange()}hasPreviousRange(){return super.hasPreviousRange()}nextRange(){if(this.hasNextRange()){let e=this.getSize(),t=this.getFirst().getValue()+e;return new l(new s.IPv4(t),this.cidrPrefix)}}previousRange(){if(this.hasPreviousRange()){let e=this.getSize(),t=this.getFirst().getValue()-e;return new l(new s.IPv4(t),this.cidrPrefix)}}}t.IPv4CidrRange=l;class h extends c{constructor(e,t){super(),this.ipv6=e,this.cidrPrefix=t,this.bitValue=128n}static fromCidr(e){let[t,r]=o.Validator.isValidIPv6CidrNotation(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let n=e.split("/"),a=n[0],c=BigInt(parseInt(n[1]));return new h(s.IPv6.fromHexadecatet(a),i.IPv6Prefix.fromNumber(c))}getSize(){return this.cidrPrefix.toRangeSize()}toCidrString(){return`${this.ipv6.toString().toString()}/${this.cidrPrefix.toString()}`}toRangeString(){return super.toRangeString()}getFirst(){return s.IPv6.fromBigInt(this.ipv6.getValue()&this.cidrPrefix.toMask().getValue())}getLast(){return u(this,this.ipv6)}newInstance(e,t){return new h(e,t)}getPrefix(){return this.cidrPrefix}isConsecutive(e){return super.isConsecutive(e)}contains(e){return super.contains(e)}inside(e){return super.inside(e)}isOverlapping(e){return super.isOverlapping(e)}take(e){let t=[this.getFirst()],r=this.getFirst();if(e>this.getSize())throw new Error(`${e.toString()} is greater than ${this.getSize().toString()}, the size of the range`);for(var s=0;s<e-1n;s++)t.push(r.nextIPNumber()),r=r.nextIPNumber();return t}split(){let e=this.cidrPrefix.getValue();if(128n===e)throw new Error("Cannot split an IP range with a single IP number");let t=i.IPv6Prefix.fromNumber(e+1n),r=this.getFirst(),s=new h(r,t),n=s.getLast().nextIPNumber();return[s,new h(n,t)]}splitInto(e){let t=e.getValue()-this.cidrPrefix.getValue();if(t<0)throw new Error("Prefix to split into is larger than source prefix");if(0n===t)return[new h(this.getFirst(),e)];if(1n===t)return this.split();{let e=this.split();for(;t>1;)e=e.flatMap(e=>e.split()),t-=1n;return e}}hasNextRange(){return super.hasNextRange()}hasPreviousRange(){return super.hasPreviousRange()}nextRange(){if(this.hasNextRange()){let e=this.getSize(),t=this.getFirst().getValue()+e;return new h(new s.IPv6(t),this.cidrPrefix)}}previousRange(){if(this.hasPreviousRange()){let e=this.getSize(),t=this.getFirst().getValue()-e;return new h(new s.IPv6(t),this.cidrPrefix)}}}t.IPv6CidrRange=h;let u=(e,t)=>{let r=Number(e.bitValue.valueOf()),i=BigInt(`0b${"1".repeat(r)}`),o=e.cidrPrefix.toMask().getValue(),a=n.leftPadWithZeroBit((o^i).toString(2),r);return d(e)?s.IPv4.fromNumber(t.getValue()|n.parseBinaryStringToBigInt(a)):s.IPv6.fromBigInt(t.getValue()|n.parseBinaryStringToBigInt(a))};function d(e){return 32n===e.bitValue.valueOf()}t.isIPv4CidrRange=d},429:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},516:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4Prefix=t.IPv6Prefix=t.IPv4Prefix=void 0;const s=r(660),i=r(212),n=r(8),o=r(984),a=r(154);class c{constructor(e){let t,r;if(this.type="IPv4",this.bitValue=32n,[t,r]=s.Validator.isValidPrefixValue(e,"IPv4"),!t)throw new Error(r.filter(e=>""!==e).toString());this.value=e}static fromNumber(e){return new c(e)}static fromRangeSize(e){let t=1n===e?32:32-h(e,s.Validator.IPV4_SIZE);return c.fromNumber(BigInt(t))}getValue(){return this.value}toString(){return this.value.toString()}toMask(){let e="1".repeat(Number(this.value)),t="0".repeat(Number(32n-this.value));return i.IPv4Mask.fromDecimalDottedString(this.toDecimalNotation(`${e}${t}`))}toRangeSize(){return 1n<<this.bitValue-this.getValue()}merge(){return new c(this.value-1n)}split(){return new c(this.value+1n)}toDecimalNotation(e){return`${n.parseBinaryStringToBigInt(e.substr(0,8))}.${n.parseBinaryStringToBigInt(e.substr(8,8))}.${n.parseBinaryStringToBigInt(e.substr(16,8))}.${n.parseBinaryStringToBigInt(e.substr(24,8))}`}}t.IPv4Prefix=c;class l{constructor(e){let t,r;if(this.type="IPv6",this.bitValue=128n,[t,r]=s.Validator.isValidPrefixValue(e,"IPv6"),!t)throw new Error(r.filter(e=>""!==e).toString());this.value=e}static fromNumber(e){return new l(e)}static fromRangeSize(e){let t=1n===e?128:128-h(e,s.Validator.IPV6_SIZE);return l.fromNumber(BigInt(t))}getValue(){return this.value}toString(){return this.value.toString()}toMask(){let e="1".repeat(Number(this.value)),t="0".repeat(128-Number(this.value));return i.IPv6Mask.fromHexadecatet(this.toHexadecatetNotation(`${e}${t}`))}toRangeSize(){return 1n<<this.bitValue-this.getValue()}merge(){return new l(this.value-1n)}split(){return new l(this.value+1n)}toHexadecatetNotation(e){return e.match(/.{1,16}/g).map(e=>a.Hexadecatet.fromString(o.binaryStringToHexadecimalString(e))).map(e=>e.toString()).join(":")}}function h(e,t){let r=t>s.Validator.IPV4_SIZE?"IPv6":"IPv4";if(e>t||0n===e)throw new Error(s.Validator.invalidIPRangeSizeMessage.replace("$iptype",r));try{return n.intLog2(e)}catch(e){throw new Error(s.Validator.invalidIPRangeSizeForCidrMessage)}}t.IPv6Prefix=l,t.isIPv4Prefix=function(e){return"IPv4"===e.type}},578:(e,t,r)=>{var s=r(54),i=r(287),n=null,o="undefined"!=typeof WebAssembly&&r(259)().then(e=>{n=e}),a=64,c=[];e.exports=p;var l=e.exports.BYTES_MIN=16,h=e.exports.BYTES_MAX=64,u=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),d=e.exports.KEYBYTES_MAX=64,f=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),g=e.exports.PERSONALBYTES=16;function p(e,t,r,i,o){if(!(this instanceof p))return new p(e,t,r,i,o);if(!n)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),!0!==o&&(s(e>=l,"digestLength must be at least "+l+", was given "+e),s(e<=h,"digestLength must be at most "+h+", was given "+e),null!=t&&(s(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),s(t.length>=u,"key must be at least "+u+", was given "+t.length),s(t.length<=d,"key must be at least "+d+", was given "+t.length)),null!=r&&(s(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),s(r.length===f,"salt must be exactly "+f+", was given "+r.length)),null!=i&&(s(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),s(i.length===g,"personal must be exactly "+g+", was given "+i.length))),c.length||(c.push(a),a+=216),this.digestLength=e,this.finalized=!1,this.pointer=c.pop(),this._memory=new Uint8Array(n.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=t?t.length:0,this._memory[2]=1,this._memory[3]=1,r&&this._memory.set(r,32),i&&this._memory.set(i,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),n.blake2b_init(this.pointer,this.digestLength),t&&(this.update(t),this._memory.fill(0,a,a+t.length),this._memory[this.pointer+200]=128)}function y(){}p.prototype._realloc=function(e){n.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(n.memory.buffer)},p.prototype.update=function(e){return s(!1===this.finalized,"Hash instance finalized"),s(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),a+e.length>this._memory.length&&this._realloc(a+e.length),this._memory.set(e,a),n.blake2b_update(this.pointer,a,a+e.length),this},p.prototype.digest=function(e){if(s(!1===this.finalized,"Hash instance finalized"),this.finalized=!0,c.push(this.pointer),n.blake2b_final(this.pointer),!e||"binary"===e)return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if("string"==typeof e)return i.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);s(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var t=0;t<this.digestLength;t++)e[t]=this._memory[this.pointer+128+t];return e},p.prototype.final=p.prototype.digest,p.WASM=n,p.SUPPORTED="undefined"!=typeof WebAssembly,p.ready=function(e){return e||(e=y),o?o.then(()=>e(),e):e(new Error("WebAssembly not supported"))},p.prototype.ready=p.ready,p.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)},p.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)}},618:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8),t),i(r(154),t),i(r(984),t),i(r(212),t),i(r(429),t),i(r(951),t),i(r(412),t),i(r(872),t),i(r(301),t),i(r(516),t),i(r(660),t)},625:(t,r,s)=>{var i=e(import.meta.url+"/..").slice(0,-1);let n,o={};o.__wbindgen_placeholder__=t.exports;let a=null;function c(){return null!==a&&0!==a.byteLength||(a=new Uint8Array(n.memory.buffer)),a}let l=0;function h(e,t){const r=t(1*e.length,1)>>>0;return c().set(e,r/1),l=e.length,r}t.exports.verify_ed25519=function(e){const t=h(e,n.__wbindgen_malloc),r=l,s=n.verify_ed25519(t,r);var i,o,a=(i=s[0],o=s[1],i>>>=0,c().subarray(i/1,i/1+o)).slice();return n.__wbindgen_free(s[0],1*s[1],1),a},t.exports.verify_ed25519_batch=function(e){const t=h(e,n.__wbindgen_malloc),r=l;return 0!==n.verify_ed25519_batch(t,r)},t.exports.__wbindgen_init_externref_table=function(){const e=n.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)};const u=s(928).join(i,"ed25519_wasm_bg.wasm"),d=s(896).readFileSync(u),f=new WebAssembly.Module(d),g=new WebAssembly.Instance(f,o);n=g.exports,t.exports.__wasm=n,n.__wbindgen_start()},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Validator=void 0;const s=r(8),i=r(8),n=r(872),o=r(984),a=r(984);class c{static isWithinRange(e,t,r){return e>=t&&e<=r}static isValidAsnNumber(e){let t=this.isWithinRange(e,0n,this.THIRTY_TWO_BIT_SIZE);return[t,t?[]:[c.invalidAsnRangeMessage]]}static isValid16BitAsnNumber(e){let t=c.isWithinRange(e,0n,c.SIXTEEN_BIT_SIZE);return[t,t?[]:[c.invalid16BitAsnRangeMessage]]}static isValidIPv4Number(e){e="bigint"==typeof e?e:BigInt(e);let t=this.isWithinRange(e,0n,this.THIRTY_TWO_BIT_SIZE);return t?[t,[]]:[t,[c.invalidIPv4NumberMessage]]}static isValidIPv6Number(e){let t=this.isWithinRange(e,0n,this.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE);return t?[t,[]]:[t,[c.invalidIPv6NumberMessage]]}static isValidIPv4Octet(e){let t=this.isWithinRange(e,0n,this.EIGHT_BIT_SIZE);return[t,t?[]:[c.invalidOctetRangeMessage]]}static isValidIPv6Hexadecatet(e){let t=this.isWithinRange(e,0n,this.SIXTEEN_BIT_SIZE);return t?[t,[]]:[t,[c.invalidHexadecatetMessage]]}static isValidIPv4String(e){let t=e.split(".");if(4!=t.length||t.includes(""))return[!1,[c.invalidOctetCountMessage]];let r=t.every(e=>!!c.isNumeric(e)&&c.isValidIPv4Octet(BigInt(e))[0]);return r?(r=c.IPV4_PATTERN.test(e),[r,r?[]:[c.invalidIPv4PatternMessage]]):[!1,[c.invalidOctetRangeMessage]]}static isValidIPv6String(e){try{let t=n.expandIPv6Number(e).split(":");if(8!=t.length)return[!1,[c.invalidHexadecatetCountMessage]];let r=t.every(e=>!!c.isHexadecatet(e)&&c.isValidIPv6Hexadecatet(BigInt(`0x${e}`))[0]);return r?(r=c.IPV6_PATTERN.test(e),[r,r?[]:[c.invalidIPv6PatternMessage]]):[!1,[c.invalidHexadecatetMessage]]}catch(e){return[!1,[e]]}}static isValidPrefixValue(e,t){if("IPv4"===t){let t=c.isWithinRange(BigInt(e),0n,32n);return[t,t?[]:[c.invalidPrefixValueMessage]]}if("IPv6"===t){let t=c.isWithinRange(BigInt(e),0n,128n);return[t,t?[]:[c.invalidPrefixValueMessage]]}return[!1,[c.invalidInetNumType]]}static isValidIPv4Mask(e){let t=s.dottedDecimalNotationToBinaryString(e),r=c.IPV4_CONTIGUOUS_MASK_BIT_PATTERN.test(t);return r?[r,[]]:[r,[c.invalidMaskMessage]]}static isValidIPv6Mask(e){let t=a.hexadectetNotationToBinaryString(e),r=c.IPV6_CONTIGUOUS_MASK_BIT_PATTERN.test(t);return r?[r,[]]:[r,[c.invalidMaskMessage]]}static isValidIPv4CidrNotation(e){let t=e.split("/");if(2!==t.length||0===t[0].length||0===t[1].length)return[!1,[c.invalidIPv4CidrNotationMessage]];let r=t[0],s=t[1];if(isNaN(Number(s)))return[!1,[c.invalidIPv4CidrNotationMessage]];let[i,n]=c.isValidIPv4String(r),[o,a]=c.isValidPrefixValue(BigInt(s),"IPv4"),l=i&&o,h=n.concat(a);return l?[l,[]]:[l,h]}static isValidIPv4CidrRange(e){return c.isValidCidrRange(e,c.isValidIPv4CidrNotation,s.dottedDecimalNotationToBinaryString,e=>i.cidrPrefixToMaskBinaryString(e,"IPv4"))}static isValidIPv6CidrRange(e){return c.isValidCidrRange(e,c.isValidIPv6CidrNotation,o.colonHexadecimalNotationToBinaryString,e=>i.cidrPrefixToMaskBinaryString(e,"IPv6"))}static isValidCidrRange(e,t,r,s){let i=t(e);if(!i[0])return i;let n=e.split("/"),o=n[0],a=n[1],l=BigInt(`0b${r(o)}`),h=(l&BigInt(`0b${s(parseInt(a))}`))===l;return h?[h,[]]:[h,[c.InvalidIPCidrRangeMessage]]}static isValidIPv4RangeString(e){return this.isValidRange(e,c.isValidIPv4String,(e,t)=>BigInt(`0b${s.dottedDecimalNotationToBinaryString(e)}`)>=BigInt(`0b${s.dottedDecimalNotationToBinaryString(t)}`))}static isValidIPv6RangeString(e){return this.isValidRange(e,c.isValidIPv6String,(e,t)=>BigInt(`0b${a.hexadectetNotationToBinaryString(e)}`)>=BigInt(`0b${a.hexadectetNotationToBinaryString(t)}`))}static isValidRange(e,t,r){let s=e.split("-").map(e=>e.trim());if(2!==s.length||0===s[0].length||0===s[1].length)return[!1,[c.invalidRangeNotationMessage]];let i=s[0],n=s[1],[o,a]=t(i),[l,h]=t(n),u=o&&l;if(u&&r(i,n))return[!1,[c.invalidRangeFirstNotGreaterThanLastMessage]];let d=a.concat(h);return u?[u,[]]:[u,d]}static isValidIPv6CidrNotation(e){let t=c.IPV6_RANGE_PATTERN.test(e);return t?[t,[]]:[t,[c.invalidIPv6CidrNotationString]]}static isValidBinaryString(e){return/^([10])+$/.test(e)?[!0,[]]:[!1,[c.invalidBinaryStringErrorMessage]]}static isNumeric(e){return/^(\d+)$/.test(e)}static isHexadecatet(e){return/^[0-9A-Fa-f]{4}$/.test(e)}}t.Validator=c,c.IPV4_PATTERN=new RegExp(/^(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/),c.IPV6_PATTERN=new RegExp(/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-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-Fa-f]{1,4}:){5}(((:[0-9A-Fa-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-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-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-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-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-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-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-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-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-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-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}))|:)))(%.+)?\s*$/),c.IPV4_RANGE_PATTERN=new RegExp(/^(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/)([1-9]|[1-2][0-9]|3[0-2])$/),c.IPV6_RANGE_PATTERN=new RegExp(/^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$/),c.IPV4_CONTIGUOUS_MASK_BIT_PATTERN=new RegExp(/^(1){0,32}(0){0,32}$/),c.IPV6_CONTIGUOUS_MASK_BIT_PATTERN=new RegExp(/^(1){0,128}(0){0,128}$/),c.EIGHT_BIT_SIZE=BigInt(`0b${"1".repeat(8)}`),c.SIXTEEN_BIT_SIZE=BigInt(`0b${"1".repeat(16)}`),c.THIRTY_TWO_BIT_SIZE=BigInt(`0b${"1".repeat(32)}`),c.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE=BigInt(`0b${"1".repeat(128)}`),c.IPV4_SIZE=BigInt("4294967296"),c.IPV6_SIZE=BigInt("340282366920938463463374607431768211456"),c.invalidAsnRangeMessage="ASN number given less than zero or is greater than 32bit",c.invalid16BitAsnRangeMessage="ASN number given less than zero or is greater than 16bit",c.invalidIPv4NumberMessage="IPv4 number given less than zero or is greater than 32bit",c.invalidIPv6NumberMessage="IPv6 number given less than zero or is greater than 128bit",c.invalidOctetRangeMessage="Value given contains an invalid Octet; Value is less than zero or is greater than 8bit",c.invalidHexadecatetMessage="The value given is less than zero or is greater than 16bit",c.invalidOctetCountMessage="An IP4 number cannot have less or greater than 4 octets",c.invalidHexadecatetCountMessage="An IP6 number must have exactly 8 hexadecatet",c.invalidMaskMessage="The Mask is invalid",c.invalidPrefixValueMessage="A Prefix value cannot be less than 0 or greater than 32",c.invalidIPv4CidrNotationMessage="Cidr notation should be in the form [ip number]/[range]",c.InvalidIPCidrRangeMessage="Given IP number portion must is not the start of the range",c.invalidRangeNotationMessage="Range notation should be in the form [first ip]-[last ip]",c.invalidRangeFirstNotGreaterThanLastMessage="First IP in [first ip]-[last ip] must be less than Last IP",c.invalidIPv6CidrNotationString="A Cidr notation string should contain an IPv6 number and prefix",c.takeOutOfRangeSizeMessage="$count is greater than $size, the size of the range",c.cannotSplitSingleRangeErrorMessage="Cannot split an IP range with a single IP number",c.invalidInetNumType="Given ipNumType must be either InetNumType.IPv4 or InetNumType.IPv6",c.invalidBinaryStringErrorMessage="Binary string should contain only contiguous 1s and 0s",c.invalidIPRangeSizeMessage="Given size is zero or greater than maximum size of $iptype",c.invalidIPRangeSizeForCidrMessage="Given size can't be created via cidr prefix",c.invalidIPv4PatternMessage="Given IPv4 is not confirm to a valid IPv6 address",c.invalidIPv6PatternMessage="Given IPv6 is not confirm to a valid IPv6 address"},675:(e,t,r)=>{var s=r(54),i=r(578);function n(e,t,r){var s=e[t]+e[r],i=e[t+1]+e[r+1];s>=4294967296&&i++,e[t]=s,e[t+1]=i}function o(e,t,r,s){var i=e[t]+r;r<0&&(i+=4294967296);var n=e[t+1]+s;i>=4294967296&&n++,e[t]=i,e[t+1]=n}function a(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function c(e,t,r,s,i,a){var c=d[i],l=d[i+1],h=d[a],f=d[a+1];n(u,e,t),o(u,e,c,l);var g=u[s]^u[e],p=u[s+1]^u[e+1];u[s]=p,u[s+1]=g,n(u,r,s),g=u[t]^u[r],p=u[t+1]^u[r+1],u[t]=g>>>24^p<<8,u[t+1]=p>>>24^g<<8,n(u,e,t),o(u,e,h,f),g=u[s]^u[e],p=u[s+1]^u[e+1],u[s]=g>>>16^p<<16,u[s+1]=p>>>16^g<<16,n(u,r,s),g=u[t]^u[r],p=u[t+1]^u[r+1],u[t]=p>>>31^g<<1,u[t+1]=g>>>31^p<<1}var l=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),h=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(function(e){return 2*e})),u=new Uint32Array(32),d=new Uint32Array(32);function f(e,t){var r=0;for(r=0;r<16;r++)u[r]=e.h[r],u[r+16]=l[r];for(u[24]=u[24]^e.t,u[25]=u[25]^e.t/4294967296,t&&(u[28]=~u[28],u[29]=~u[29]),r=0;r<32;r++)d[r]=a(e.b,4*r);for(r=0;r<12;r++)c(0,8,16,24,h[16*r+0],h[16*r+1]),c(2,10,18,26,h[16*r+2],h[16*r+3]),c(4,12,20,28,h[16*r+4],h[16*r+5]),c(6,14,22,30,h[16*r+6],h[16*r+7]),c(0,10,20,30,h[16*r+8],h[16*r+9]),c(2,12,22,24,h[16*r+10],h[16*r+11]),c(4,14,16,26,h[16*r+12],h[16*r+13]),c(6,8,18,28,h[16*r+14],h[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^u[r]^u[r+16]}var g=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function p(e,t,r,s){g.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,g[0]=e,t&&(g[1]=t.length),g[2]=1,g[3]=1,r&&g.set(r,32),s&&g.set(s,48);for(var i=0;i<16;i++)this.h[i]=l[i]^a(g,4*i);t&&(y(this,t),this.c=128)}function y(e,t){for(var r=0;r<t.length;r++)128===e.c&&(e.t+=e.c,f(e,!1),e.c=0),e.b[e.c++]=t[r]}function m(e){return e<16?"0"+e.toString(16):e.toString(16)}p.prototype.update=function(e){return s(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),y(this,e),this},p.prototype.digest=function(e){var t=e&&"binary"!==e&&"hex"!==e?e:new Uint8Array(this.outlen);return s(t instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),s(t.length>=this.outlen,"out must have at least outlen bytes of space"),function(e,t){for(e.t+=e.c;e.c<128;)e.b[e.c++]=0;f(e,!0);for(var r=0;r<e.outlen;r++)t[r]=e.h[r>>2]>>8*(3&r)}(this,t),"hex"===e?function(e){for(var t="",r=0;r<e.length;r++)t+=m(e[r]);return t}(t):t},p.prototype.final=p.prototype.digest,p.ready=function(e){i.ready(function(){e()})};var b=p;e.exports=function(e,t,r,i,n){return!0!==n&&(s(e>=A,"outlen must be at least "+A+", was given "+e),s(e<=I,"outlen must be at most "+I+", was given "+e),null!=t&&(s(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),s(t.length>=v,"key must be at least "+v+", was given "+t.length),s(t.length<=w,"key must be at most "+w+", was given "+t.length)),null!=r&&(s(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),s(r.length===S,"salt must be exactly "+S+", was given "+r.length)),null!=i&&(s(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),s(i.length===E,"personal must be exactly "+E+", was given "+i.length))),new b(e,t,r,i)},e.exports.ready=function(e){i.ready(function(){e()})},e.exports.WASM_SUPPORTED=i.SUPPORTED,e.exports.WASM_LOADED=!1;var A=e.exports.BYTES_MIN=16,I=e.exports.BYTES_MAX=64,v=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),w=e.exports.KEYBYTES_MAX=64,S=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),E=e.exports.PERSONALBYTES=16;i.ready(function(t){t||(e.exports.WASM_LOADED=!0,e.exports=i)})},810:(e,t,r)=>{e.exports=r.p+"b0733caf1cf3aa68.js"},872:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.collapseIPv6Number=t.expandIPv6Number=void 0;const s=r(8),i=r(660);let n=e=>e.includes("/")?`/${e.split("/")[1]}`:"";t.expandIPv6Number=e=>{let t=e=>e.map(e=>s.leftPadWithZeroBit(e,4)).join(":");if(/(:){3,}/.test(e))throw"given IPv6 contains consecutive : more than two";const r=n(e);if(e.includes("/")&&(e=e.split("/")[0]),!i.Validator.IPV6_PATTERN.test(e))throw Error(i.Validator.invalidIPv6PatternMessage);if(e.includes("::")){let s=e.split("::"),i=s[0],n=s[1],o=i.split(":").filter(e=>""!==e),a=n.split(":").filter(e=>""!==e),c=(e=>{let t=[];for(let r=0;r<e;r++)t.push("0000");return t.join(":")})(8-(o.length+a.length)),l=t(o);""!==l&&(l+=":");let h=t(a);return""!==h&&(h=":"+h),`${l}${c}${h}${r}`}return`${t(e.split(":"))}${r}`},t.collapseIPv6Number=e=>{const t=n(e);if(e.includes("/")&&(e=e.split("/")[0]),!i.Validator.IPV6_PATTERN.test(e))throw Error(i.Validator.invalidIPv6PatternMessage);let r=e.split(":").map(e=>{let t=e.replace(/^0+/,"");return""!==t?t:"0"}).join(":").replace(/((^0)?(:0){2,}|(^0)(:0){1,})/,":");return":"===r.slice(-1)?`${r}:${t}`:(r=r.replace(":0:","::"),`${r}${t}`)}},884:e=>{e.exports="data:application/javascript;base64,aW1wb3J0IHsgdHNJbXBvcnQgfSBmcm9tICJ0c3gvZXNtL2FwaSI7CmNvbnN0IHsgd29ya2VyIH0gPSBhd2FpdCB0c0ltcG9ydCgiLi93b3JrZXIudHMiLCBpbXBvcnQubWV0YS51cmwpOwp3b3JrZXIubGlzdGVuVG9QYXJlbnRQb3J0KCk7Cg=="},896:e=>{e.exports=t(import.meta.url)("fs")},909:()=>{var e;!function(e){!function(){var t="object"==typeof globalThis?globalThis:"object"==typeof global?global:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(e){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(e){}}(),r=s(e);function s(e,t){return function(r,s){Object.defineProperty(e,r,{configurable:!0,writable:!0,value:s}),t&&t(r,s)}}void 0!==t.Reflect&&(r=s(t.Reflect,r)),function(e,t){var r=Object.prototype.hasOwnProperty,s="function"==typeof Symbol,i=s&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",n=s&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",o="function"==typeof Object.create,a={__proto__:[]}instanceof Array,c=!o&&!a,l={create:o?function(){return V(Object.create(null))}:a?function(){return V({__proto__:null})}:function(){return V({})},has:c?function(e,t){return r.call(e,t)}:function(e,t){return t in e},get:c?function(e,t){return r.call(e,t)?e[t]:void 0}:function(e,t){return e[t]}},h=Object.getPrototypeOf(Function),u="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var e={},t=[],r=function(){function e(e,t,r){this._index=0,this._keys=e,this._values=t,this._selector=r}return e.prototype["@@iterator"]=function(){return this},e.prototype[n]=function(){return this},e.prototype.next=function(){var e=this._index;if(e>=0&&e<this._keys.length){var r=this._selector(this._keys[e],this._values[e]);return e+1>=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}(),s=function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var r=this._find(e,!0);return this._values[r]=t,this},t.prototype.delete=function(t){var r=this._find(t,!1);if(r>=0){for(var s=this._keys.length,i=r+1;i<s;i++)this._keys[i-1]=this._keys[i],this._values[i-1]=this._values[i];return this._keys.length--,this._values.length--,N(t,this._cacheKey)&&(this._cacheKey=e,this._cacheIndex=-2),!0}return!1},t.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=e,this._cacheIndex=-2},t.prototype.keys=function(){return new r(this._keys,this._values,i)},t.prototype.values=function(){return new r(this._keys,this._values,o)},t.prototype.entries=function(){return new r(this._keys,this._values,a)},t.prototype["@@iterator"]=function(){return this.entries()},t.prototype[n]=function(){return this.entries()},t.prototype._find=function(e,t){if(!N(this._cacheKey,e)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(N(this._keys[r],e)){this._cacheIndex=r;break}}return this._cacheIndex<0&&t&&(this._cacheIndex=this._keys.length,this._keys.push(e),this._values.push(void 0)),this._cacheIndex},t}();return s;function i(e,t){return e}function o(e,t){return t}function a(e,t){return[e,t]}}(),d="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function e(){this._map=new u}return Object.defineProperty(e.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),e.prototype.has=function(e){return this._map.has(e)},e.prototype.add=function(e){return this._map.set(e,e),this},e.prototype.delete=function(e){return this._map.delete(e)},e.prototype.clear=function(){this._map.clear()},e.prototype.keys=function(){return this._map.keys()},e.prototype.values=function(){return this._map.keys()},e.prototype.entries=function(){return this._map.entries()},e.prototype["@@iterator"]=function(){return this.keys()},e.prototype[n]=function(){return this.keys()},e}(),f="function"==typeof WeakMap?WeakMap:function(){var e=l.create(),t=s();return function(){function e(){this._key=s()}return e.prototype.has=function(e){var t=i(e,!1);return void 0!==t&&l.has(t,this._key)},e.prototype.get=function(e){var t=i(e,!1);return void 0!==t?l.get(t,this._key):void 0},e.prototype.set=function(e,t){return i(e,!0)[this._key]=t,this},e.prototype.delete=function(e){var t=i(e,!1);return void 0!==t&&delete t[this._key]},e.prototype.clear=function(){this._key=s()},e}();function s(){var t;do{t="@@WeakMap@@"+o()}while(l.has(e,t));return e[t]=!0,t}function i(e,s){if(!r.call(e,t)){if(!s)return;Object.defineProperty(e,t,{value:l.create()})}return e[t]}function n(e,t){for(var r=0;r<t;++r)e[r]=255*Math.random()|0;return e}function o(){var e=function(e){if("function"==typeof Uint8Array){var t=new Uint8Array(e);return"undefined"!=typeof crypto?crypto.getRandomValues(t):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(t):n(t,e),t}return n(new Array(e),e)}(16);e[6]=79&e[6]|64,e[8]=191&e[8]|128;for(var t="",r=0;r<16;++r){var s=e[r];4!==r&&6!==r&&8!==r||(t+="-"),s<16&&(t+="0"),t+=s.toString(16).toLowerCase()}return t}}(),g=s?Symbol.for("@reflect-metadata:registry"):void 0,p=function(){var e;return!C(g)&&x(t.Reflect)&&Object.isExtensible(t.Reflect)&&(e=t.Reflect[g]),C(e)&&(e=function(){var e,r,s,i;C(g)||void 0===t.Reflect||g in t.Reflect||"function"!=typeof t.Reflect.defineMetadata||(e=function(e){var t=e.defineMetadata,r=e.hasOwnMetadata,s=e.getOwnMetadata,i=e.getOwnMetadataKeys,n=e.deleteMetadata,o=new f,a={isProviderFor:function(e,t){var r=o.get(e);return!(C(r)||!r.has(t))||!!i(e,t).length&&(C(r)&&(r=new d,o.set(e,r)),r.add(t),!0)},OrdinaryDefineOwnMetadata:t,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:s,OrdinaryOwnMetadataKeys:i,OrdinaryDeleteMetadata:n};return a}(t.Reflect));var n=new f,o={registerProvider:a,getProvider:l,setProvider:p};return o;function a(t){if(!Object.isExtensible(o))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case e===t:break;case C(r):r=t;break;case r===t:break;case C(s):s=t;break;case s===t:break;default:void 0===i&&(i=new d),i.add(t)}}function c(t,n){if(!C(r)){if(r.isProviderFor(t,n))return r;if(!C(s)){if(s.isProviderFor(t,n))return r;if(!C(i))for(var o=M(i);;){var a=L(o);if(!a)return;var c=P(a);if(c.isProviderFor(t,n))return H(o),c}}}if(!C(e)&&e.isProviderFor(t,n))return e}function l(e,t){var r,s=n.get(e);return C(s)||(r=s.get(t)),C(r)?(C(r=c(e,t))||(C(s)&&(s=new u,n.set(e,s)),s.set(t,r)),r):r}function h(e){if(C(e))throw new TypeError;return r===e||s===e||!C(i)&&i.has(e)}function p(e,t,r){if(!h(r))throw new Error("Metadata provider not registered.");var s=l(e,t);if(s!==r){if(!C(s))return!1;var i=n.get(e);C(i)&&(i=new u,n.set(e,i)),i.set(t,r)}return!0}}()),!C(g)&&x(t.Reflect)&&Object.isExtensible(t.Reflect)&&Object.defineProperty(t.Reflect,g,{enumerable:!1,configurable:!1,writable:!1,value:e}),e}(),y=function(e){var t=new f,r={isProviderFor:function(e,r){var s=t.get(e);return!C(s)&&s.has(r)},OrdinaryDefineOwnMetadata:function(e,t,r,i){s(r,i,!0).set(e,t)},OrdinaryHasOwnMetadata:function(e,t,r){var i=s(t,r,!1);return!C(i)&&B(i.has(e))},OrdinaryGetOwnMetadata:function(e,t,r){var i=s(t,r,!1);if(!C(i))return i.get(e)},OrdinaryOwnMetadataKeys:function(e,t){var r=[],i=s(e,t,!1);if(C(i))return r;for(var n=M(i.keys()),o=0;;){var a=L(n);if(!a)return r.length=o,r;var c=P(a);try{r[o]=c}catch(e){try{H(n)}finally{throw e}}o++}},OrdinaryDeleteMetadata:function(e,r,i){var n=s(r,i,!1);if(C(n))return!1;if(!n.delete(e))return!1;if(0===n.size){var o=t.get(r);C(o)||(o.delete(i),0===o.size&&t.delete(o))}return!0}};return p.registerProvider(r),r;function s(s,i,n){var o=t.get(s),a=!1;if(C(o)){if(!n)return;o=new u,t.set(s,o),a=!0}var c=o.get(i);if(C(c)){if(!n)return;if(c=new u,o.set(i,c),!e.setProvider(s,i,r))throw o.delete(i),a&&t.delete(s),new Error("Wrong provider for target.")}return c}}(p);function m(e,t,r){if(b(e,t,r))return!0;var s=K(t);return!k(s)&&m(e,s,r)}function b(e,t,r){var s=Q(t,r,!1);return!C(s)&&B(s.OrdinaryHasOwnMetadata(e,t,r))}function A(e,t,r){if(b(e,t,r))return I(e,t,r);var s=K(t);return k(s)?void 0:A(e,s,r)}function I(e,t,r){var s=Q(t,r,!1);if(!C(s))return s.OrdinaryGetOwnMetadata(e,t,r)}function v(e,t,r,s){Q(r,s,!0).OrdinaryDefineOwnMetadata(e,t,r,s)}function w(e,t){var r=S(e,t),s=K(e);if(null===s)return r;var i=w(s,t);if(i.length<=0)return r;if(r.length<=0)return i;for(var n=new d,o=[],a=0,c=r;a<c.length;a++){var l=c[a];n.has(l)||(n.add(l),o.push(l))}for(var h=0,u=i;h<u.length;h++)l=u[h],n.has(l)||(n.add(l),o.push(l));return o}function S(e,t){var r=Q(e,t,!1);return r?r.OrdinaryOwnMetadataKeys(e,t):[]}function E(e){if(null===e)return 1;switch(typeof e){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===e?1:6;default:return 6}}function C(e){return void 0===e}function k(e){return null===e}function x(e){return"object"==typeof e?null!==e:"function"==typeof e}function _(e,t){switch(E(e)){case 0:case 1:case 2:case 3:case 4:case 5:return e}var r=3===t?"string":5===t?"number":"default",s=D(e,i);if(void 0!==s){var n=s.call(e,r);if(x(n))throw new TypeError;return n}return function(e,t){if("string"===t){var r=e.toString;if(U(r)&&!x(i=r.call(e)))return i;if(U(s=e.valueOf)&&!x(i=s.call(e)))return i}else{var s;if(U(s=e.valueOf)&&!x(i=s.call(e)))return i;var i,n=e.toString;if(U(n)&&!x(i=n.call(e)))return i}throw new TypeError}(e,"default"===r?"number":r)}function B(e){return!!e}function R(e){var t=_(e,3);return"symbol"==typeof t?t:function(e){return""+e}(t)}function O(e){return Array.isArray?Array.isArray(e):e instanceof Object?e instanceof Array:"[object Array]"===Object.prototype.toString.call(e)}function U(e){return"function"==typeof e}function T(e){return"function"==typeof e}function N(e,t){return e===t||e!=e&&t!=t}function D(e,t){var r=e[t];if(null!=r){if(!U(r))throw new TypeError;return r}}function M(e){var t=D(e,n);if(!U(t))throw new TypeError;var r=t.call(e);if(!x(r))throw new TypeError;return r}function P(e){return e.value}function L(e){var t=e.next();return!t.done&&t}function H(e){var t=e.return;t&&t.call(e)}function K(e){var t=Object.getPrototypeOf(e);if("function"!=typeof e||e===h)return t;if(t!==h)return t;var r=e.prototype,s=r&&Object.getPrototypeOf(r);if(null==s||s===Object.prototype)return t;var i=s.constructor;return"function"!=typeof i||i===e?t:i}function Q(e,t,r){var s=p.getProvider(e,t);if(!C(s))return s;if(r){if(p.setProvider(e,t,y))return y;throw new Error("Illegal state.")}}function V(e){return e.__=void 0,delete e.__,e}e("decorate",function(e,t,r,s){if(C(r)){if(!O(e))throw new TypeError;if(!T(t))throw new TypeError;return function(e,t){for(var r=e.length-1;r>=0;--r){var s=(0,e[r])(t);if(!C(s)&&!k(s)){if(!T(s))throw new TypeError;t=s}}return t}(e,t)}if(!O(e))throw new TypeError;if(!x(t))throw new TypeError;if(!x(s)&&!C(s)&&!k(s))throw new TypeError;return k(s)&&(s=void 0),function(e,t,r,s){for(var i=e.length-1;i>=0;--i){var n=(0,e[i])(t,r,s);if(!C(n)&&!k(n)){if(!x(n))throw new TypeError;s=n}}return s}(e,t,r=R(r),s)}),e("metadata",function(e,t){return function(r,s){if(!x(r))throw new TypeError;if(!C(s)&&!function(e){switch(E(e)){case 3:case 4:return!0;default:return!1}}(s))throw new TypeError;v(e,t,r,s)}}),e("defineMetadata",function(e,t,r,s){if(!x(r))throw new TypeError;return C(s)||(s=R(s)),v(e,t,r,s)}),e("hasMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),m(e,t,r)}),e("hasOwnMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),b(e,t,r)}),e("getMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),A(e,t,r)}),e("getOwnMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),I(e,t,r)}),e("getMetadataKeys",function(e,t){if(!x(e))throw new TypeError;return C(t)||(t=R(t)),w(e,t)}),e("getOwnMetadataKeys",function(e,t){if(!x(e))throw new TypeError;return C(t)||(t=R(t)),S(e,t)}),e("deleteMetadata",function(e,t,r){if(!x(t))throw new TypeError;if(C(r)||(r=R(r)),!x(t))throw new TypeError;C(r)||(r=R(r));var s=Q(t,r,!1);return!C(s)&&s.OrdinaryDeleteMetadata(e,t,r)})}(r,t),void 0===t.Reflect&&(t.Reflect=e)}()}(e||(e={}))},928:e=>{e.exports=t(import.meta.url)("path")},951:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Pool=void 0;const s=r(412),i=r(516);class n{constructor(e){this.backingSet=new o,e.forEach(e=>{this.backingSet.add(e)})}static fromIP(e){let t=e.map(e=>s.RangedSet.fromSingleIP(e));return new n(t)}static fromRangeSet(e){return new n(e)}static fromCidrRanges(e){let t=e.map(e=>e.toRangeSet());return new n(t)}getRanges(){return this.backingSet.asArray()}aggregate(){let e=this.backingSet.asArray().reduce((e,t,r,s)=>{if(0==e.length)return e.push(t),e;{let r=e.pop(),s=r.toCidrRange(),i=t.toCidrRange();if(s.isCidrMergeable(i)){let t=s.merge(i);return e.push(t.toRangeSet()),e}return r.contains(t)?e.push(r):(e.push(r),e.push(t)),e}},[]),t=n.fromRangeSet(e);return t.getRanges().length!==this.getRanges().length?t.aggregate():t}getCidrRange(e){if(e.toRangeSize()>this.getSize())throw new Error(`Not enough IP number in the pool for requested prefix: ${e}`);let t,r;e:for(let s of this.getRanges())for(let i=0n;i+e.toRangeSize()<=s.getSize();i+=1n)try{let r=s.takeSubRange(i,e.toRangeSize());t=r.toCidrRange();let n=s.difference(r);this.removeExact(s),this.add(n);break e}catch(e){if(e instanceof RangeError)continue e;r=e}if(t)return t;throw void 0===r?new Error(`No range big enough in the pool for requested prefix: ${e}`):r}getCidrRanges(e){if(e.toRangeSize()>this.getSize())throw new Error("Prefix greater than pool");let t=(e,r,s)=>{try{let i=this.getCidrRange(r);s.push(i);let n=s.reduce((e,t)=>e+t.getSize(),0n);return e.toRangeSize()===n?s:t(e,r,s)}catch(n){let o=i.isIPv4Prefix(r)?i.IPv4Prefix.fromNumber(r.getValue()+1n):i.IPv6Prefix.fromNumber(r.getValue()+1n);return t(e,o,s)}};return t(e,e,[])}getSize(){return this.aggregate().getRanges().reduce((e,t)=>e+t.getSize(),0n)}resetWith(e){this.backingSet.clear(),this.backingSet=this.backingSet.add(e)}removeExact(e){let t=this.backingSet.removeExact(e),r=!this.backingSet.isEquals(t);return this.backingSet=t,r}removeOverlapping(e){let t=this.backingSet.removeOverlapping(e),r=!this.backingSet.isEquals(t);return this.backingSet=t,r}add(e){this.backingSet=this.backingSet.add(e)}clear(){this.backingSet.clear()}}t.Pool=n;class o{constructor(e){this.backingArray=e?this.sortArray(e):new Array}sortArray(e){return e.sort((e,t)=>e.isLessThan(t)?-1:e.isGreaterThan(t)?1:0),e}asArray(){return this.backingArray}isEquals(e){return this.backingArray.length===e.asArray().length&&this.backingArray.every((t,r)=>t.getSize()===e.asArray()[r].getSize())}add(e){let t=this.backingArray;return"push"in e?t=t.concat(e):t.push(e),new o(this.sortArray(t))}removeExact(e){let t=this.backingArray.filter(t=>"push"in e?void 0!==e.find(e=>e.isEquals(t)):!e.isEquals(t));return new o(this.sortArray(t))}removeOverlapping(e){let t=this.backingArray.flatMap(t=>{if("push"in e)return e.flatMap(e=>t.contains(e)?t.difference(e):t.inside(e)?new Array:t.isOverlapping(e)?[t.subtract(e)]:[e]);try{return t.difference(e)}catch(e){return t}});return new o(this.sortArray(t))}clear(){this.backingArray=[]}}},984:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hexadectetNotationToBinaryString=t.binaryStringToHexadecimalString=t.colonHexadecimalNotationToBinaryString=t.hexadecimalStringToHexadecatetString=t.hexadecimalStringToBinaryString=t.bigIntToHexadecimalString=void 0;const s=r(872),i=r(8);t.bigIntToHexadecimalString=e=>e.toString(16),t.hexadecimalStringToBinaryString=e=>BigInt(`0x${e}`).toString(2),t.hexadecimalStringToHexadecatetString=e=>{let r=t.hexadecimalStringToBinaryString(e);if(r.length>16)throw new Error("Given decimal in binary contains digits greater than an Hexadecatet");return i.leftPadWithZeroBit(r,16)},t.colonHexadecimalNotationToBinaryString=e=>s.expandIPv6Number(e).split(":").reduce((e,r)=>e.concat(t.hexadecimalStringToHexadecatetString(r)),""),t.binaryStringToHexadecimalString=e=>BigInt(`0b${e}`).toString(16),t.hexadectetNotationToBinaryString=e=>s.expandIPv6Number(e).split(":").reduce((e,r)=>e.concat(i.leftPadWithZeroBit(t.hexadecimalStringToBinaryString(r),16)),"")}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return i[e].call(r.exports,r,r.exports,o),r.exports}o.m=i,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),o.b=new URL("./",import.meta.url);var a={};o.r(a),o.d(a,{Any:()=>Sm,BaseBlock:()=>Pp,BaseStringBlock:()=>Hp,BitString:()=>Py,BmpString:()=>im,Boolean:()=>Ty,CharacterString:()=>pm,Choice:()=>Em,Constructed:()=>_y,DATE:()=>bm,DateTime:()=>Im,Duration:()=>vm,EndOfContent:()=>Ry,Enumerated:()=>Fy,GeneralString:()=>gm,GeneralizedTime:()=>mm,GraphicString:()=>dm,HexBlock:()=>Op,IA5String:()=>um,Integer:()=>Vy,Null:()=>Oy,NumericString:()=>am,ObjectIdentifier:()=>Gy,OctetString:()=>Dy,Primitive:()=>Sy,PrintableString:()=>cm,RawData:()=>km,RelativeObjectIdentifier:()=>Wy,Repeated:()=>Cm,Sequence:()=>Jy,Set:()=>Yy,TIME:()=>wm,TeletexString:()=>lm,TimeOfDay:()=>Am,UTCTime:()=>ym,UniversalString:()=>om,Utf8String:()=>rm,ValueBlock:()=>Tp,VideotexString:()=>hm,ViewWriter:()=>dp,VisibleString:()=>fm,compareSchema:()=>xm,fromBER:()=>Cy,verifySchema:()=>_m});const c=t(import.meta.url)("node:url");var l;function h(e){const t="debug"===e?"LOG":e.toUpperCase();if(void 0===l[t])throw new Error(`Unknown logging level: "${e}". Use one of "trace", "debug", "log","info", "warn", "error"`);return l[t]}!function(e){e[e.TRACE=1]="TRACE",e[e.LOG=2]="LOG",e[e.INFO=3]="INFO",e[e.WARN=4]="WARN",e[e.ERROR=5]="ERROR"}(l||(l={}));class u{options;static create(e,t){return e===l.TRACE?new d(t):e===l.LOG?new f(t):e===l.INFO?new g(t):new u(t)}constructor(e){this.options=e}trace(e,t,r){}log(e,t,r){}info(e,t,r){}warn(e,t,r){this.push(l.WARN,e,t,r)}error(e,t,r){this.push(l.ERROR,e,t,r)}push(e,t,r,s){const i=r.replace(this.options.workingDir,""),n=t.replace(this.options.workingDir,""),o=function(e,t){let r=t;for(;;){const s=e.modules.get(r);if(void 0!==s)return s;const i=r.lastIndexOf("/");if(-1===i)return e.defaultLevel;r=t.substring(0,i)}}(this.options,t),a=l[e].padEnd(5);if(e<o)return;const c=`${a} [${n}] ${s}\n\t@ ${i}`;e===l.WARN?console.warn(c):e===l.ERROR?console.error(c):console.info(c)}}class d extends u{trace(e,t,r){this.push(l.TRACE,e,t,r)}log(e,t,r){this.push(l.LOG,e,t,r)}info(e,t,r){this.push(l.INFO,e,t,r)}}class f extends u{trace(e,t,r){}log(e,t,r){this.push(l.LOG,e,t,r)}info(e,t,r){this.push(l.INFO,e,t,r)}}class g extends u{trace(e,t,r){}log(e,t,r){}info(e,t,r){this.push(l.INFO,e,t,r)}}const p={workingDir:"",defaultLevel:l.LOG,modules:new Map},y={options:p,transport:u.create(p.defaultLevel,p)};class m{moduleName;fileName;config;static new(e,t){const r=e??"unknown";return new m(t??r,r,y)}static configureAllFromOptions(e){const t=Array.from(e.modules.values()).reduce((e,t)=>e<t?e:t,e.defaultLevel),r=u.create(t,e);y.options=e,y.transport=r}static configureAll(e,t,r){const s=function(e,t,r){const s=new Map,i=e.toLowerCase().split(",");let n=t;for(const e of i){const t=e.trim();if(0!==t.length)if(t.includes("=")){const[e,r]=t.split("=");s.set(e.trim(),h(r.trim()))}else n=h(t)}const o="".split("/");return o.pop(),o.pop(),{defaultLevel:n,modules:s,workingDir:r??o.join("/")}}(e,t,r);m.configureAllFromOptions(s)}constructor(e,t,r){this.moduleName=e,this.fileName=t,this.config=r}trace(e){this.config.transport.trace(this.moduleName,this.fileName,e)}log(e){this.config.transport.log(this.moduleName,this.fileName,e)}info(e){this.config.transport.info(this.moduleName,this.fileName,e)}warn(e){this.config.transport.warn(this.moduleName,this.fileName,e)}error(e){this.config.transport.error(this.moduleName,this.fileName,e)}}const b=t(import.meta.url)("node:os");var A=o.n(b);const I=(E={default:()=>r.default},C={},o.d(C,E),C),v="dev",w={name:A().hostname(),config:v},S=`\n@typeberry/jam 0.0.1 by Fluffy Labs.\n\nUsage:\n jam [options]\n jam [options] import <bin-or-json-blocks>\n\nOptions:\n --name Override node name. Affects networking key and db location.\n [default: ${w.name}]\n --config Path to a config file or '${v}'.\n [default: ${w.config}]\n`;var E,C,k;function x(e,t){const{name:r}=B(e,"name",e=>e,w.name),{config:s}=B(e,"config",e=>e===v?v:t(e),w.config);return{nodeName:r,configPath:s}}function _(e,t){const r=(0,I.default)(e),s=r._.shift()??k.Run;switch(s){case k.Run:{const e=x(r,t);return R(r),{command:k.Run,args:e}}case k.Import:{const e=x(r,t),s=r._.map(e=>t(e));return r._=[],R(r),{command:k.Import,args:{...e,files:s}}}default:r._.unshift(s),R(r)}throw new Error(`Invalid arguments: ${JSON.stringify(r)}`)}function B(e,t,r,s){const i=e[t];if(void 0===i)return{[t]:s};if(delete e[t],"string"!=typeof i)throw new Error(`Option '--${t}' requires an argument.`);try{const e=r(i);return{[t]:e??s}}catch(e){throw new Error(`Invalid value '${i}' for option '${t}': ${e}`)}}function R(e){const t=Object.keys(e).filter(e=>"_"!==e&&"--"!==e);if(e._.length>0)throw new Error(`Unexpected command: '${e._[0]}'`);if((e["--"]?.length??0)>0)throw new Error(`Unexpected parameters: '${e["--"]?.[0]}'...`);if(t.length>0)throw new Error(`Unrecognized options: '${t}'`)}!function(e){e.Run="run",e.Import="import"}(k||(k={}));const O=t(import.meta.url)("node:fs");var U=o.n(O);const T=t(import.meta.url)("node:worker_threads");var N,D;!function(e){e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater"}(N||(N={}));class M{value;constructor(e){this.value=e}static Less=new M(N.Less);static Greater=new M(N.Greater);static Equal=new M(N.Equal);isLess(){return this.value===N.Less}isGreater(){return this.value===N.Greater}isEqual(){return this.value===N.Equal}isNotEqual(){return!this.isEqual()}isGreaterOrEqual(){return this.isEqual()||this.isGreater()}isLessOrEqual(){return this.isEqual()||this.isLess()}}!function(e){e.V0_6_4="0.6.4",e.V0_6_5="0.6.5",e.V0_6_6="0.6.6",e.V0_6_7="0.6.7",e.V0_7_0="0.7.0"}(D||(D={}));const P=[D.V0_6_4,D.V0_6_5,D.V0_6_6,D.V0_6_7,D.V0_7_0],L=D.V0_6_5;let H=function(e){if(void 0===e)return;const t=e;if(!Object.values(D).includes(t))throw new Error(`Configured environment variable GP_VERSION is unknown: '${e}'. Use one of: ${P}`);return t}(process.env.GP_VERSION);class K{static override(e){H=e}static is(...e){return void 0===H?e.includes(L):e.includes(H)}static isGreaterOrEqual(e){const t=P.indexOf(e);if(-1===t)throw new Error(`Invalid version: ${e}. Not found amongst supported versions: ${P}`);return K.is(...P.slice(t))}}function Q(e,t){if(!e)throw new Error(`Assertion failure: ${t??""}`)}function V(e,t,r){if(function(e,t){return t}(0,t))return e;throw new Error(`Assertion failure: ${r??""}`)}function F(e){throw new Error(`Unexpected value: ${e}`)}function $(e){const t=Object.keys(e);if(t.length>0)throw new Error(`Unexpected keys: ${t.join(", ")}`)}function j(e){const t=e=>e.split("\n").map(e=>` ${e}`).join("\n").trim();if(null===e)return"<null>";if(void 0===e)return"<undefined>";if(Array.isArray(e))return`[${e.map(e=>j(e))}]`;if(e instanceof Map)return j(Array.from(e.entries()));if("number"==typeof e)return`${e} (0x${e.toString(16)})`;if("object"!=typeof e)return`${e}`;if("toString"in e&&Object.prototype.toString!==e.toString&&q.prototype.toString!==e.toString)return`${e}`;const r=e.constructor.name;let s="Object"!==r?`${r} {`:"{";const i=Object.keys(e),n=i.length<3;for(const r of i)"string"==typeof r&&(s+=n?"":"\n ",s+=`${r}: ${t(j(e[r]))}`,s+=n?",":"");return s+=n?"}":"\n}",s}const G="undefined"==typeof process?e=>{const t=performance.now();return()=>`${e} took ${performance.now()-t}ms`}:e=>{const t=process.hrtime.bigint();return()=>{const r=process.hrtime.bigint()-t,s=Number(r/1000000n).toFixed(2);return`${e} took ${s}ms`}};class q{toString(){return j(this)}}function z(e){return e}function W(e){return e}const J=Symbol("ok");class Y{kind;error;enumMapping;constructor(e,t,r){this.kind=e,this.error=t,this.enumMapping=r}toString(){const e=Object.keys(this.enumMapping).find(e=>this.enumMapping[e]===this.kind)??"?";return`${e} (${this.kind}) - ${X(this.error)}`}}const X=e=>{return null!==(t=e)&&"object"==typeof t&&"kind"in t&&"error"in t?e instanceof Y?e.toString():`${e.kind} - ${X(e.error)}`:`${e}`;var t};function Z(e){return e.isOk?`OK: ${"symbol"==typeof e.ok?e.ok.toString():e.ok}`:`${e.details}\nError: ${X(e.error)}`}const ee={ok:e=>(Q(void 0!==e,"`Ok` type cannot be undefined."),{isOk:!0,isError:!1,ok:e}),error:(e,t="")=>(Q(void 0!==e,"`Error` type cannot be undefined."),{isOk:!1,isError:!0,error:e,details:t}),taggedError:(e,t,r)=>ee.error(new Y(t,r.error,e),r.details)},te=(t(import.meta.url)("node:assert"),Symbol("compare via string"));class re{[te]=!0;raw;length=0;constructor(e){this.raw=e,this.length=e.byteLength}toString(){return function(e){const t=e=>e>=ue?String.fromCharCode(e+ae-ue):String.fromCharCode(e+ne);let r="0x";for(const s of e)r+=t(s>>>4),r+=t(15&s);return r}(this.raw)}toJSON(){return this.toString()}asText(){return(new TextDecoder).decode(this.raw)}isEqualTo(e){return this.length===e.length&&fe(this.raw,e.raw)}compare(e){const t=Math.min(this.length,e.length),r=this.raw,s=e.raw;for(let e=0;e<t;e++){if(r[e]<s[e])return M.Less;if(r[e]>s[e])return M.Greater}return this.length<e.length?M.Less:this.length>e.length?M.Greater:M.Equal}static empty(){return new re(new Uint8Array)}static blobFromString(e){const t=new TextEncoder;return re.blobFrom(t.encode(e))}static blobFrom(e){return new re(e)}static blobFromParts(e,...t){const r=e instanceof Uint8Array?[e]:e,s=r.reduce((e,t)=>e+t.length,0)+t.reduce((e,t)=>e+t.length,0),i=new Uint8Array(s);let n=0;for(const e of r)i.set(e,n),n+=e.length;for(const e of t)i.set(e,n),n+=e.length;return new re(i)}static blobFromNumbers(e){Q(void 0===e.find(e=>(255&e)!==e),"BytesBlob.blobFromNumbers used with non-byte number array.");const t=new Uint8Array(e);return new re(t)}static parseBlobNoPrefix(e){const t=e.length;if(t%2==1)throw new Error(`Odd number of nibbles. Invalid hex string: ${e}.`);const r=new ArrayBuffer(t/2),s=new Uint8Array(r);for(let r=0;r<t-1;r+=2){const t=e.substring(r,r+2);s[r/2]=ie(t)}return new re(s)}static parseBlob(e){if(!e.startsWith("0x"))throw new Error(`Missing 0x prefix: ${e}.`);return re.parseBlobNoPrefix(e.substring(2))}*chunks(e){for(let t=0;t<this.length;t+=e)yield re.blobFrom(this.raw.subarray(t,t+e))}}class se extends re{length;constructor(e,t){super(e),Q(e.byteLength===t,`Given buffer has incorrect size ${e.byteLength} vs expected ${t}`),this.length=t}static fromBlob(e,t){return new se(e,t)}static fromNumbers(e,t){Q(void 0===e.find(e=>(255&e)!==e),"Bytes.fromNumbers used with non-byte number array.");const r=new Uint8Array(e);return new se(r,t)}static zero(e){return new se(new Uint8Array(e),e)}static fill(e,t){Q((255&t)===t,"Input has to be a byte.");const r=se.zero(e);return r.raw.fill(t,0,e),r}static parseBytesNoPrefix(e,t){if(e.length>2*t)throw new Error(`Input string too long. Expected ${t}, got ${e.length/2}`);const r=re.parseBlobNoPrefix(e);return new se(r.raw,t)}static parseBytes(e,t){if(e.length>2*t+2)throw new Error(`Input string too long. Expected ${t}, got ${e.length/2-1}`);const r=re.parseBlob(e);return new se(r.raw,t)}isEqualTo(e){return Q(this.length===e.length,"Comparing incorrectly typed bytes!"),fe(this.raw,e.raw)}asOpaque(){return this}}function ie(e){return Q(2===e.length,"Two-character string expected"),de(e.charCodeAt(0))<<4|de(e.charCodeAt(1))}const ne="0".charCodeAt(0),oe="9".charCodeAt(0),ae="a".charCodeAt(0),ce="f".charCodeAt(0),le="A".charCodeAt(0),he="F".charCodeAt(0),ue=10;function de(e){if(e>=ne&&e<=oe)return e-ne;if(e>=ae&&e<=ce)return e-ae+ue;if(e>=le&&e<=he)return e-le+ue;throw new Error(`Invalid characters in hex byte string: ${String.fromCharCode(e)}`)}function fe(e,t){for(let r=0;r<e.length;r+=1)if(e[r]!==t[r])return!1;return!0}const ge=(e,t)=>e.compare(t);class pe{data;bitLength;static fromBlob(e,t){return new pe(e,t)}static fromBytes(e,t){return new pe(e.raw,t)}static empty(e){const t=new Uint8Array(Math.ceil(e/8));return new pe(t,e)}byteLength;constructor(e,t){this.data=e,this.bitLength=t,Q(8*e.length>=t,`Not enough bytes in the data array. Need ${8*e.length} has ${t}.`),this.byteLength=Math.ceil(t/8)}get raw(){return this.data.subarray(0,this.byteLength)}sumWith(e){Q(e.bitLength===this.bitLength,`Invalid bit length for sumWith: ${e.bitLength} vs ${this.bitLength}`);const t=e.raw;for(let e=0;e<this.byteLength;e++)this.data[e]|=t[e]}setBit(e,t){Q(e<this.bitLength,`Index out of bounds. Need ${e} has ${this.bitLength}.`);const r=Math.floor(e/8),s=1<<e%8;t?this.data[r]|=s:this.data[r]&=~s}isSet(e){Q(e<this.bitLength,`Index out of bounds. Need ${e} has ${this.bitLength}.`);const t=Math.floor(e/8),r=1<<e%8;return(this.data[t]&r)>0}*indicesOfSetBits(){for(let e=0;e<this.bitLength;e++){const t=e>>3,r=e-(t<<3);1&~(this.data[t]>>r)||(yield e)}}}const ye=e=>V(e,me(e),`input must have one-byte representation, got ${e}`),me=e=>(255&e)===e,be=e=>V(e,Ae(e),`input must have two-byte representation, got ${e}`),Ae=e=>(65535&e)===e,Ie=e=>V(e,ve(e),`input must have four-byte representation, got ${e}`),ve=e=>(4294967295&e)>>>0===e,we=e=>{const t=BigInt(e);return V(t,Se(t),`input must have eight-byte representation, got ${e}`)},Se=e=>(18446744073709551615n&e)===e;function Ee(...e){let t=0n;for(const r of e)t+=r;const r=!Se(t);return t&=0xffffffffffffffffn,{overflow:r,value:we(t)}}function Ce(e){return new Uint8Array([255&e,e>>8&255,e>>16&255,e>>24&255])}function ke(e){return Q(4===e.length,"Input must be a Uint8Array of length 4"),e[0]|e[1]<<8|e[2]<<16|e[3]<<24}const xe=(e,...t)=>t.reduce((e,t)=>t>e?e:t,e);class _e{source;offset;context;static fromBytesBlob(e,t){return new _e(e.raw,t)}static fromBlob(e){return new _e(e)}static decodeObject(e,t,r){const s=t instanceof re?_e.fromBytesBlob(t):_e.fromBlob(t);s.attachContext(r);const i=s.object(e);return s.finish(),i}static decodeSequence(e,t,r){const s=t instanceof re?_e.fromBytesBlob(t):_e.fromBlob(t);s.attachContext(r);const i=[];for(;s.bytesRead()<s.source.length;)i.push(s.object(e));return s.finish(),i}dataView;constructor(e,t=0,r){this.source=e,this.offset=t,this.context=r,this.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength)}attachContext(e){this.context=e}getContext(){return this.context}clone(){return new _e(this.source,this.offset,this.context)}bytesRead(){return this.offset}remainingBytes(){const e=this.source.subarray(this.offset),t=e.length;return this.offset+=t,se.fromBlob(e,t)}i8(){return this.getNum(1,()=>this.dataView.getInt8(this.offset))}u8(){return this.getNum(1,()=>this.dataView.getUint8(this.offset))}i16(){return this.getNum(2,()=>this.dataView.getInt16(this.offset,!0))}u16(){return this.getNum(2,()=>this.dataView.getUint16(this.offset,!0))}i24(){const e=this.u24();return e>=2**23?e-2**24:e}u24(){return this.getNum(3,()=>{let e=this.dataView.getUint8(this.offset);return e|=this.dataView.getUint16(this.offset+1,!0)<<8,e})}i32(){return this.getNum(4,()=>this.dataView.getInt32(this.offset,!0))}u32(){return this.getNum(4,()=>this.dataView.getUint32(this.offset,!0))}i64(){return this.getNum(8,()=>this.dataView.getBigInt64(this.offset,!0))}u64(){return this.getNum(8,()=>this.dataView.getBigUint64(this.offset,!0))}bool(){const e=this.u8();if(0===e)return!1;if(1===e)return!0;throw new Error(`Unexpected number when decoding a boolean: ${e}`)}varU32(){this.ensureHasBytes(1);const e=this.source[this.offset],t=Re(e);if(this.offset+=1,0===t)return e;if(t>4)throw new Error(`Unexpectedly large value for u32. l=${t}`);this.ensureHasBytes(t);const r=e+2**(8-t)-256<<8*t;if(1===t)return r+this.u8();if(2===t)return r+this.u16();if(3===t)return r+this.u24();if(0===r)return this.u32();throw new Error(`Unexpectedly large value for u32. l=${t}, mostSignificantByte=${r}`)}varU64(){this.ensureHasBytes(1);const e=this.source[this.offset],t=Re(e);if(this.offset+=1,0===t)return we(e);if(this.ensureHasBytes(t),this.offset+=t,8===t)return we(this.dataView.getBigUint64(this.offset-t,!0));let r=BigInt(e+2**(8-t)-256)<<BigInt(8*t);for(let e=0;e<t;e+=1)r|=BigInt(this.source[this.offset-t+e])<<BigInt(8*e);return we(r)}bytes(e){if(0===e)return se.zero(e);this.ensureHasBytes(e);const t=this.source.subarray(this.offset,this.offset+e);return this.offset+=e,se.fromBlob(t,e)}bytesBlob(){const e=this.varU32();this.ensureHasBytes(e);const t=this.source.subarray(this.offset,this.offset+e);return this.offset+=e,re.blobFrom(t)}bitVecFixLen(e){if(0===e)return pe.empty(0);const t=Math.ceil(e/8),r=this.bytes(t),s=e%8;if(s>0&&r.raw[t-1]>>s>0)throw new Error("Non-zero bits found in the last byte of bitvec encoding.");return pe.fromBytes(r,e)}bitVecVarLen(){const e=this.varU32();return this.bitVecFixLen(e)}object(e){return e.decode(this)}optional(e){return this.bool()?e.decode(this):null}sequenceFixLen(e,t){const r=Array(t);for(let s=0;s<t;s+=1)r[s]=e.decode(this);return r}sequenceVarLen(e){const t=this.varU32();return this.sequenceFixLen(e,t)}resetTo(e){this.offset<e?this.skip(e-this.offset):(Q(e>=0,"The offset has to be positive"),this.offset=e)}skip(e){this.ensureHasBytes(e),this.offset+=e}finish(){if(this.offset<this.source.length)throw new Error(`Expecting end of input, yet there are still ${this.source.length-this.offset} bytes left.`)}getNum(e,t){this.ensureHasBytes(e);const r=t();return this.offset+=e,r}ensureHasBytes(e){if(Q(e>=0,"Negative number of bytes given."),this.offset+e>this.source.length)throw new Error(`Attempting to decode more data than there is left. Need ${e}, left: ${this.source.length-this.offset}.`)}}const Be=[255,254,252,248,240,224,192,128];function Re(e){Q(e>=0&&e<256,`Incorrect byte value: ${e}`);for(let t=0;t<Be.length;t++)if(e>=Be[t])return 8-t;return 0}function Oe(e){return Q(e.isExact,"The value is not exact size estimation!"),e.bytes}function Ue(e,t){return{bytes:e.bytes+t.bytes,isExact:e.isExact&&t.isExact}}const Te=10485760;class Ne{destination;buffer;static create(e){if(void 0!==e&&"destination"in e)return new Ne(e.destination);const t=e?.expectedLength??512,r=new ArrayBuffer(Math.min(Te,t),{maxByteLength:Te}),s=new Uint8Array(r);return new Ne(s,r)}static encodeObject(e,t,r){const s=Ne.create({expectedLength:e.sizeHint.bytes||512});return s.attachContext(r),s.object(e,t),s.viewResult()}offset=0;context;dataView;constructor(e,t){this.destination=e,this.buffer=t,this.dataView=void 0!==t?new DataView(t):new DataView(e.buffer,e.byteOffset,e.byteLength)}attachContext(e){this.context=e}getContext(){return this.context}viewResult(){return re.blobFrom(this.destination.subarray(0,this.offset))}i32(e){this.prepareIntegerN(e,4),this.dataView.setInt32(this.offset,e,!0),this.offset+=4}i64(e){const t=2n**64n;Q(e<t,"Only for numbers up to 2**64 - 1"),Q(-e<=t/2n,"Only for numbers down to -2**63"),this.ensureBigEnough(8),this.dataView.setBigInt64(this.offset,e,!0),this.offset+=8}i24(e){this.prepareIntegerN(e,3),this.dataView.setInt8(this.offset,255&e),this.dataView.setInt16(this.offset+1,e>>8,!0),this.offset+=3}i16(e){this.prepareIntegerN(e,2),this.dataView.setInt16(this.offset,e,!0),this.offset+=2}i8(e){this.prepareIntegerN(e,1),this.dataView.setInt8(this.offset,e),this.offset+=1}bool(e){this.varU32(Ie(e?1:0))}prepareIntegerN(e,t){const r=2**(8*t);Q(e<r,`Only for numbers up to 2**${8*t} - 1`),Q(-e<=r/2,"Only for numbers down to -2**"+(8*t-1)),this.ensureBigEnough(t)}varU32(e){Q(e>=0,"Only for natural numbers."),Q(e<2**32,"Only for numbers up to 2**32"),this.varU64(BigInt(e))}varU64(e){const t=BigInt(e);if(0n===t)return this.ensureBigEnough(1),this.destination[this.offset]=0,void(this.offset+=1);let r=2n**56n;if(t>=r)return this.ensureBigEnough(9),this.destination[this.offset]=255,this.dataView.setBigUint64(this.offset+1,t,!0),void(this.offset+=9);let s=r>>7n;for(let e=7;e>=0;e-=1){if(t>=s){this.ensureBigEnough(e+1);const r=2n**BigInt(8*e),s=BigInt(256-2**(8-e))+t/r;this.destination[this.offset]=255&Number(s),this.offset+=1;let i=t%r;for(let t=this.offset;t<this.offset+e;t+=1)this.destination[t]=Number(0xffn&i),i>>=8n;return void(this.offset+=e)}r=s,s>>=7n}throw new Error(`Unhandled number encoding: ${t}`)}bytesBlob(e){this.blob(e.raw)}blob(e){this.varU32(Ie(e.length)),this.ensureBigEnough(e.length),this.destination.set(e,this.offset),this.offset+=e.length}bytes(e){this.ensureBigEnough(e.length),this.destination.set(e.raw,this.offset),this.offset+=e.length}bitVecFixLen(e){const t=e.raw;this.bytes(se.fromBlob(t,t.length))}bitVecVarLen(e){const t=e.bitLength;this.varU32(Ie(t)),this.bitVecFixLen(e)}object(e,t){this.applySizeHint(e),e.encode(this,t)}optional(e,t){const r=null!=t;this.bool(r),r&&(this.applySizeHint(e),e.encode(this,t))}sequenceFixLen(e,t){this.applySizeHint(e,t.length);for(const r of t)e.encode(this,r)}sequenceVarLen(e,t){Q(t.length<=2**32,"Wow, that's a nice long sequence you've got here."),this.varU32(Ie(t.length)),this.sequenceFixLen(e,t)}applySizeHint(e,t=1){const r=e.sizeHint.bytes;r>0&&t>0&&this.ensureBigEnough(r*t,{silent:!0})}ensureBigEnough(e,t={silent:!1}){Q(e>=0,"Negative length given");const r=this.offset+e;if(r>Te){if(t.silent)return;throw new Error("The encoded size would reach the maximum of 10485760.")}if(r>this.destination.length){if(void 0!==this.buffer){const e=Math.max(r,this.buffer.byteLength<<1);this.buffer.resize(Math.min(Te,e))}if(r>this.destination.length){if(t.silent)return;throw new Error(`Not enough space in the destination array. Needs ${r}, has ${this.destination.length}.`)}}}}class De{decoder;constructor(e){this.decoder=e}u64=()=>this.decoder.skip(8);u32=()=>this.decoder.skip(4);u24=()=>this.decoder.skip(3);u16=()=>this.decoder.skip(2);u8=()=>this.decoder.skip(1);bool=()=>this.decoder.skip(1);varU32=()=>this.varU64();varU64(){const e=Re(this.decoder.u8());this.decoder.skip(e)}bytes(e){this.decoder.skip(e)}bytesBlob(){const e=this.decoder.varU32();this.decoder.skip(e)}bitVecFixLen(e){this.decoder.skip(Math.ceil(e/8))}bitVecVarLen(){const e=this.decoder.varU32();this.bitVecFixLen(e)}object(e){e.skip(this)}optional(e){this.decoder.bool()&&e.skip(this)}sequenceFixLen(e,t){for(let r=0;r<t;r+=1)e.skip(this)}sequenceVarLen(e){const t=this.decoder.varU32();return this.sequenceFixLen(e,t)}}function Me(e,t,r){if(t<e.minLength)throw new Error(`${r}: length is below minimal. ${t} < ${e.minLength}`);if(t>e.maxLength)throw new Error(`${r}: length is above maximal. ${t} > ${e.maxLength}`)}class Pe{getView;getValue;getEncoded;cachedValue;cachedView;cachedBlob;constructor(e,t,r){this.getView=e,this.getValue=t,this.getEncoded=r}materialize(){return void 0===this.cachedValue&&(this.cachedValue=this.getValue()),this.cachedValue}view(){return void 0===this.cachedView&&(this.cachedView=this.getView()),this.cachedView}encoded(){return void 0===this.cachedBlob&&(this.cachedBlob=this.getEncoded()),this.cachedBlob}}class Le{decoder;materializedConstructor;descriptors;descriptorsKeys;cache=new Map;initialDecoderOffset;lastDecodedFieldIdx=-1;constructor(e,t,r){this.decoder=e,this.materializedConstructor=t,this.descriptors=r,this.descriptorsKeys=Object.keys(r),this.initialDecoderOffset=e.bytesRead()}materialize(){const e=this.descriptorsKeys,t=Object.fromEntries(e.map(e=>[e,this.get(e).materialize()]));return this.materializedConstructor.create(t)}encoded(){const e=this.descriptorsKeys;if(0===e.length)return re.blobFromNumbers([]);if(this.lastDecodedFieldIdx<e.length-1){const t=e[e.length-1];this.decodeUpTo(t)}return re.blobFrom(this.decoder.source.subarray(this.initialDecoderOffset,this.decoder.bytesRead()))}get(e){const t=this.cache.get(e);return void 0!==t?t:this.decodeUpTo(e)}decodeUpTo(e){const t=this.descriptorsKeys.indexOf(e),r=this.descriptorsKeys[this.lastDecodedFieldIdx];Q(this.lastDecodedFieldIdx<t,`Unjustified call to 'decodeUpTo' -\n the index ($Blobindex}, ${String(e)})\n is already decoded (${this.lastDecodedFieldIdx}, ${String(r)}).\n `);let s=this.cache.get(r);const i=new De(this.decoder);for(let e=this.lastDecodedFieldIdx+1;e<=t;e++){const t=i.decoder.clone(),r=this.descriptorsKeys[e],n=this.descriptors[r];s=new Pe(()=>n.View.decode(t.clone()),()=>n.decode(t.clone()),()=>n.skipEncoded(t.clone())),n.skip(i),this.cache.set(r,s),this.lastDecodedFieldIdx=e}return V(s,void 0!==s,"Last item must be set, since the loop turns at least once.")}}class He{decoder;descriptor;length;cache=new Map;initialDecoderOffset;lastDecodedIdx=-1;constructor(e,t,r){this.decoder=e,this.descriptor=t,this.initialDecoderOffset=this.decoder.bytesRead(),this.length=r??e.varU32()}*[Symbol.iterator](){for(let e=0;e<this.length;e++){const t=this.get(e),r=V(t,void 0!==t,"We are within 0..this.length so all items are defined.");yield r}}map(e){const t=new Array(this.length);let r=0;for(const s of this)t[r]=e(s),r++;return t}get(e){if(e>=this.length)return;const t=this.cache.get(e);return void 0!==t?t:this.decodeUpTo(e)}encoded(){return 0===this.length?re.blobFromNumbers([]):(this.lastDecodedIdx<this.length-1&&this.decodeUpTo(this.length-1),re.blobFrom(this.decoder.source.subarray(this.initialDecoderOffset,this.decoder.bytesRead())))}decodeUpTo(e){Q(this.lastDecodedIdx<e,`Unjustified call to 'decodeUpTo' - the index (${e}) is already decoded (${this.lastDecodedIdx}).`);let t=this.cache.get(this.lastDecodedIdx);const r=new De(this.decoder);for(let s=this.lastDecodedIdx+1;s<=e;s++){const e=r.decoder.clone(),i=this.descriptor;t=new Pe(()=>i.View.decode(e.clone()),()=>i.decode(e.clone()),()=>i.skipEncoded(e.clone())),i.skip(r),this.cache.set(s,t),this.lastDecodedIdx=s}return V(t,void 0!==t,"Last item must be set, since the loop turns at least once.")}}class Ke{name;sizeHint;encode;decode;skip;View;static withView(e,t,r,s,i,n){return new Ke(e,t,r,s,i,n)}static new(e,t,r,s,i){return new Ke(e,t,r,s,i,null)}constructor(e,t,r,s,i,n){this.name=e,this.sizeHint=t,this.encode=r,this.decode=s,this.skip=i,this.View=n??this}skipEncoded(e){const t=e.bytesRead();this.skip(new De(e));const r=e.bytesRead();return re.blobFrom(e.source.subarray(t,r))}convert(e,t){return new Ke(this.name,this.sizeHint,(t,r)=>this.encode(t,e(r)),e=>t(this.decode(e)),this.skip,this.View)}asOpaque(){return this.convert(e=>e,e=>e)}}function Qe(e){return e.convert(e=>(Q(Array.isArray(e),`Non-arrays are not supported as 'readonly': got ${typeof e}, ${e}`),e),e=>e)}function Ve(e){return{bytes:e,isExact:!0}}var Fe,$e;function je(e,t){for(const r in e)"string"==typeof r&&r in e&&t(r,e[r])}function Ge(e){return e.View!==e}($e=Fe||(Fe={})).bytes=(()=>{const e=new Map;return t=>{let r=e.get(t);return void 0===r&&(r=Ke.new(`Bytes<${t}>`,Ve(t),(e,t)=>e.bytes(t),e=>e.bytes(t),e=>e.bytes(t)),e.set(t,r)),r}})(),$e.varU32=Ke.new("var_u32",{bytes:4,isExact:!1},(e,t)=>e.varU32(t),e=>e.varU32(),e=>e.varU32()),$e.varU64=Ke.new("var_u64",{bytes:8,isExact:!1},(e,t)=>e.varU64(t),e=>e.varU64(),e=>e.varU64()),$e.u64=Ke.withView("u64",Ve(8),(e,t)=>e.i64(t),e=>e.u64(),e=>e.u64(),$e.bytes(8)),$e.u32=Ke.withView("u32",Ve(4),(e,t)=>e.i32(t),e=>e.u32(),e=>e.u32(),$e.bytes(4)),$e.u24=Ke.withView("u24",Ve(3),(e,t)=>e.i24(t),e=>e.u24(),e=>e.u24(),$e.bytes(3)),$e.u16=Ke.withView("u16",Ve(2),(e,t)=>e.i16(t),e=>e.u16(),e=>e.u16(),$e.bytes(2)),$e.u8=Ke.new("u8",Ve(1),(e,t)=>e.i8(t),e=>e.u8(),e=>e.u8()),$e.i64=Ke.withView("u64",Ve(8),(e,t)=>e.i64(t),e=>e.i64(),e=>e.u64(),$e.bytes(8)),$e.i32=Ke.withView("i32",Ve(4),(e,t)=>e.i32(t),e=>e.i32(),e=>e.u32(),$e.bytes(4)),$e.i24=Ke.withView("i24",Ve(3),(e,t)=>e.i24(t),e=>e.i24(),e=>e.u24(),$e.bytes(3)),$e.i16=Ke.withView("i16",Ve(2),(e,t)=>e.i16(t),e=>e.i16(),e=>e.u16(),$e.bytes(2)),$e.i8=Ke.new("i8",Ve(1),(e,t)=>e.i8(t),e=>e.i8(),e=>e.u8()),$e.bool=Ke.new("bool",Ve(1),(e,t)=>e.bool(t),e=>e.bool(),e=>e.bool()),$e.blob=Ke.new("BytesBlob",{bytes:64,isExact:!1},(e,t)=>e.bytesBlob(t),e=>e.bytesBlob(),e=>e.bytesBlob()),$e.string=Ke.withView("string",{bytes:64,isExact:!1},(e,t)=>e.bytesBlob(re.blobFrom((new TextEncoder).encode(t))),e=>new TextDecoder("utf8",{fatal:!0}).decode(e.bytesBlob().raw),e=>e.bytesBlob(),$e.blob),$e.bitVecVarLen=Ke.new("BitVec[?]",{bytes:8,isExact:!1},(e,t)=>e.bitVecVarLen(t),e=>e.bitVecVarLen(),e=>e.bitVecVarLen()),$e.bitVecFixLen=e=>Ke.new(`BitVec[${e}]`,Ve(e>>>3),(e,t)=>e.bitVecFixLen(t),t=>t.bitVecFixLen(e),t=>t.bitVecFixLen(e)),$e.optional=e=>{const t=Ke.new(`Optional<${e.name}>`,Ue({bytes:1,isExact:!1},e.sizeHint),(t,r)=>t.optional(e,r),t=>t.optional(e),t=>t.optional(e));return Ge(e)?Ke.withView(t.name,t.sizeHint,t.encode,t.decode,t.skip,$e.optional(e.View)):t},$e.sequenceVarLen=(e,t={minLength:0,maxLength:2**32-1})=>{const r=`Sequence<${e.name}>[?]`,s=t.typicalLength??64;return Ke.withView(r,{bytes:s*e.sizeHint.bytes,isExact:!1},(s,i)=>{Me(t,i.length,r),s.sequenceVarLen(e,i)},s=>{const i=s.varU32();return Me(t,i,r),s.sequenceFixLen(e,i)},s=>{const i=s.decoder.varU32();return Me(t,i,r),s.sequenceFixLen(e,i)},function(e,t){const r={bytes:64*e.sizeHint.bytes,isExact:!1},s=e.name!==e.View.name?`, ${e.View.name}`:"",i=`SeqView<${e.name}${s}>[?]`,n=r=>{const s=r.decoder.varU32();return Me(t,s,i),r.sequenceFixLen(e,s)};return Ke.new(i,r,(e,r)=>{Me(t,r.length,i);const s=r.encoded();e.bytes(se.fromBlob(s.raw,s.length))},t=>{const r=new He(t.clone(),e);return n(new De(t)),r},n)}(e,t))},$e.sequenceFixLen=(e,t)=>Ke.withView(`Sequence<${e.name}>[${t}]`,{bytes:t*e.sizeHint.bytes,isExact:e.sizeHint.isExact},(t,r)=>t.sequenceFixLen(e,r),r=>r.sequenceFixLen(e,t),r=>r.sequenceFixLen(e,t),function(e,{fixedLength:t}){const r={bytes:e.sizeHint.bytes*t,isExact:e.sizeHint.isExact},s=r=>r.sequenceFixLen(e,t),i=e.name!==e.View.name?`, ${e.View.name}`:"",n=`SeqView<${e.name}${i}>[${t}]`;return Ke.new(n,r,(e,t)=>{const r=t.encoded();e.bytes(se.fromBlob(r.raw,r.length))},r=>{const i=new He(r.clone(),e,t);return s(new De(r)),i},s)}(e,{fixedLength:t})),$e.dictionary=(e,t,{sortKeys:r,fixedLength:s})=>{const i=Ke.new(`Dictionary<${e.name}, ${t.name}>[${s??"?"}]`,{bytes:void 0!==s?s*Ue(e.sizeHint,t.sizeHint).bytes:32*(Ue(e.sizeHint,t.sizeHint).bytes??0),isExact:void 0!==s&&e.sizeHint.isExact&&t.sizeHint.isExact},(i,n)=>{const o=Array.from(n.entries());o.sort((e,t)=>r(e[0],t[0])),void 0!==s&&0!==s||i.varU32(Ie(o.length));for(const[r,s]of o)e.encode(i,r),t.encode(i,s)},i=>{const n=new Map,o=s??i.varU32();let a=null;for(let s=0;s<o;s+=1){const s=e.decode(i),o=t.decode(i);if(n.has(s))throw new Error(`Duplicate item in the dictionary encoding: "${s}"!`);if(null!==a&&r(a,s)>=0)throw new Error(`The keys in dictionary encoding are not sorted "${a}" >= "${s}"!`);n.set(s,o),a=s}return n},r=>{const i=s??r.decoder.varU32();r.sequenceFixLen(e,i),r.sequenceFixLen(t,i)});return Ge(t)?Ke.withView(i.name,i.sizeHint,i.encode,i.decode,i.skip,$e.dictionary(e,t.View,{sortKeys:r,fixedLength:s})):i},$e.custom=({name:e,sizeHint:t={bytes:0,isExact:!1}},r,s,i)=>Ke.new(e,t,r,s,i),$e.select=({name:e,sizeHint:t},r)=>Ke.withView(e,t,(e,t)=>r(e.getContext()).encode(e,t),e=>r(e.getContext()).decode(e),e=>r(e.decoder.getContext()).skip(e),r(null).View),$e.object=(e,t="object",r=e=>e)=>$e.Class({name:t,create:r},e),$e.Class=(e,t)=>{let r=Ve(0);je(t,(e,t)=>{r=Ue(r,t.sizeHint)});const s=e=>{if(r.isExact)return e.decoder.skip(r.bytes);je(t,(t,r)=>{r.skip(e)})},i=function(e,t,r,s){class i extends Le{constructor(r){super(r,e,t)}}return je(t,e=>{"string"==typeof e&&Object.defineProperty(i.prototype,e,{get:function(){return this.get(e)}})}),Ke.new(`View<${e.name}>`,r,(e,t)=>{const r=t.encoded();e.bytes(se.fromBlob(r.raw,r.length))},e=>{const t=new i(e.clone());return s(new De(e)),t},s)}(e,t,r,s);return Ke.withView(e.name,r,(e,r)=>{je(t,(t,s)=>{const i=r[t];s.encode(e,i)})},r=>{const s={};return je(t,(e,t)=>{const i=t.decode(r);s[e]=i}),e.create(s)},s,i)};const qe=2n**255n-19n,ze=2n**252n+27742317777372353535851937790883648493n,We=0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Je=0x6666666666666666666666666666666666666666666666666666666666666658n,Ye={a:-1n,d:37095705934669439343138083508754565189542113879843219016388785533085940283555n,p:qe,n:ze,h:8,Gx:We,Gy:Je},Xe=(e="")=>{throw new Error(e)},Ze=e=>"string"==typeof e,et=(e,t)=>!(e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name)(e)||"number"==typeof t&&t>0&&e.length!==t?Xe("Uint8Array of valid length expected"):e,tt=e=>new Uint8Array(e),rt=(e,t=qe)=>{let r=e%t;return r>=0n?r:t+r},st=e=>e instanceof it?e:Xe("Point expected");class it{constructor(e,t,r,s){this.ex=e,this.ey=t,this.ez=r,this.et=s}static fromAffine(e){return new it(e.x,e.y,1n,rt(e.x*e.y))}static fromHex(e,t=!1){const{d:r}=Ye,s=(n=e,o=32,e=et(Ze(n)?ht(n):tt(et(n)),o)).slice(),i=e[31];var n,o;s[31]=-129&i;const a=dt(s);!t||0n<=a&&a<2n**256n||Xe("bad y coord 1"),t||0n<=a&&a<qe||Xe("bad y coord 2");const c=rt(a*a),l=rt(c-1n),h=rt(r*c+1n);let{isValid:u,value:d}=mt(l,h);u||Xe("bad y coordinate 3");const f=1n==(1n&d),g=!!(128&i);return!t&&0n===d&&g&&Xe("bad y coord 3"),g!==f&&(d=rt(-d)),new it(d,a,1n,rt(d*a))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}equals(e){const{ex:t,ey:r,ez:s}=this,{ex:i,ey:n,ez:o}=st(e),a=rt(t*o),c=rt(i*s),l=rt(r*o),h=rt(n*s);return a===c&&l===h}is0(){return this.equals(ot)}negate(){return new it(rt(-this.ex),this.ey,this.ez,rt(-this.et))}double(){const{ex:e,ey:t,ez:r}=this,{a:s}=Ye,i=rt(e*e),n=rt(t*t),o=rt(2n*rt(r*r)),a=rt(s*i),c=e+t,l=rt(rt(c*c)-i-n),h=a+n,u=h-o,d=a-n,f=rt(l*u),g=rt(h*d),p=rt(l*d),y=rt(u*h);return new it(f,g,y,p)}add(e){const{ex:t,ey:r,ez:s,et:i}=this,{ex:n,ey:o,ez:a,et:c}=st(e),{a:l,d:h}=Ye,u=rt(t*n),d=rt(r*o),f=rt(i*h*c),g=rt(s*a),p=rt((t+r)*(n+o)-u-d),y=rt(g-f),m=rt(g+f),b=rt(d-l*u),A=rt(p*y),I=rt(m*b),v=rt(p*b),w=rt(y*m);return new it(A,I,w,v)}mul(e,t=!0){if(0n===e)return!0===t?Xe("cannot multiply by 0"):ot;if("bigint"==typeof e&&0n<e&&e<ze||Xe("invalid scalar, must be < L"),!t&&this.is0()||1n===e)return this;if(this.equals(nt))return wt(e).p;let r=ot,s=nt;for(let i=this;e>0n;i=i.double(),e>>=1n)1n&e?r=r.add(i):t&&(s=s.add(i));return r}multiply(e){return this.mul(e)}clearCofactor(){return this.mul(BigInt(Ye.h),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let e=this.mul(ze/2n,!1).double();return e=e.add(this),e.is0()}toAffine(){const{ex:e,ey:t,ez:r}=this;if(this.equals(ot))return{x:0n,y:1n};const s=gt(r,qe);return 1n!==rt(r*s)&&Xe("invalid inverse"),{x:rt(e*s),y:rt(t*s)}}toRawBytes(){const{x:e,y:t}=this.toAffine(),r=ut(t);return r[31]|=1n&e?128:0,r}toHex(){return ct(this.toRawBytes())}}it.BASE=new it(We,Je,1n,rt(We*Je)),it.ZERO=new it(0n,1n,1n,0n);const{BASE:nt,ZERO:ot}=it,at=(e,t)=>e.toString(16).padStart(t,"0"),ct=e=>Array.from(et(e)).map(e=>at(e,2)).join(""),lt=e=>e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:void 0,ht=e=>{const t="hex invalid";if(!Ze(e))return Xe(t);const r=e.length,s=r/2;if(r%2)return Xe(t);const i=tt(s);for(let r=0,n=0;r<s;r++,n+=2){const s=lt(e.charCodeAt(n)),o=lt(e.charCodeAt(n+1));if(void 0===s||void 0===o)return Xe(t);i[r]=16*s+o}return i},ut=e=>ht(at(e,64)).reverse(),dt=e=>BigInt("0x"+ct(tt(et(e)).reverse())),ft=(...e)=>{const t=tt(e.reduce((e,t)=>e+et(t).length,0));let r=0;return e.forEach(e=>{t.set(e,r),r+=e.length}),t},gt=(e,t)=>{(0n===e||t<=0n)&&Xe("no inverse n="+e+" mod="+t);let r=rt(e,t),s=t,i=0n,n=1n,o=1n,a=0n;for(;0n!==r;){const e=s/r,t=s%r,c=i-o*e,l=n-a*e;s=r,r=t,i=o,n=a,o=c,a=l}return 1n===s?rt(i,t):Xe("no inverse")},pt=(e,t)=>{let r=e;for(;t-- >0n;)r*=r,r%=qe;return r},yt=19681161376707505956807079304988542015446066515923890162744021073123829784752n,mt=(e,t)=>{const r=rt(t*t*t),s=(e=>{const t=e*e%qe*e%qe,r=pt(t,2n)*t%qe,s=pt(r,1n)*e%qe,i=pt(s,5n)*s%qe,n=pt(i,10n)*i%qe,o=pt(n,20n)*n%qe,a=pt(o,40n)*o%qe,c=pt(a,80n)*a%qe,l=pt(c,80n)*a%qe,h=pt(l,10n)*i%qe;return{pow_p_5_8:pt(h,2n)*e%qe,b2:t}})(e*rt(r*r*t)).pow_p_5_8;let i=rt(e*r*s);const n=rt(t*i*i),o=i,a=rt(i*yt),c=n===e,l=n===rt(-e),h=n===rt(-e*yt);return c&&(i=o),(l||h)&&(i=a),1n==(1n&rt(i))&&(i=rt(-i)),{isValid:c||l,value:i}};let bt;const At=()=>"object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,It={bytesToHex:ct,hexToBytes:ht,concatBytes:ft,mod:rt,invert:gt,randomBytes:(e=32)=>{const t=At();return t&&t.getRandomValues||Xe("crypto.getRandomValues must be defined"),t.getRandomValues(tt(e))},sha512Async:async(...e)=>{const t=At(),r=t&&t.subtle;r||Xe("etc.sha512Async or crypto.subtle must be defined");const s=ft(...e);return tt(await r.digest("SHA-512",s.buffer))},sha512Sync:void 0};let vt;Object.defineProperties(It,{sha512Sync:{configurable:!1,get:()=>bt,set(e){bt||(bt=e)}}});const wt=e=>{const t=vt||(vt=(()=>{const e=[];let t=nt,r=t;for(let s=0;s<33;s++){r=t,e.push(r);for(let s=1;s<128;s++)r=r.add(t),e.push(r);t=r.double()}return e})()),r=(e,t)=>{let r=t.negate();return e?r:t};let s=ot,i=nt;const n=BigInt(255),o=BigInt(8);for(let a=0;a<33;a++){const c=128*a;let l=Number(e&n);e>>=o,l>128&&(l-=256,e+=1n);const h=c,u=c+Math.abs(l)-1,d=a%2!=0,f=l<0;0===l?i=i.add(r(d,t[h])):s=s.add(r(f,t[u]))}return{p:s,f:i}};var St=o(625);const Et=32,Ct=64;async function kt(e){if(0===e.length)return Promise.resolve([]);const t=e.reduce((e,{message:t,key:r,signature:s})=>e+r.length+s.length+t.length+1,0),r=new Uint8Array(t);let s=0;for(const{key:t,message:i,signature:n}of e){r.set(t.raw,s),s+=Et,r.set(n.raw,s),s+=Ct;const e=i.length;Q(e<256,`Message needs to be shorter than 256 bytes. Got: ${e}`),r[s]=e,s+=1,r.set(i.raw,s),s+=e}const i=Array.from((0,St.verify_ed25519)(r)).map(e=>1===e);return Promise.resolve(i)}var xt=o(405);const _t=32,Bt=144,Rt=144,Ot=32;class Ut extends q{hash;data;constructor(e,t){super(),this.hash=e,this.data=t}}class Tt extends Ut{encoded;constructor(e,t,r){super(e,t),this.encoded=r}}class Nt{emptyHash(){return se.zero(Ot)}}const Dt=new Nt;var Mt,Pt=o(675),Lt=o.n(Pt);function Ht(e,t=Dt){const r=t.emptyHash();if(0===e.length)return r.asOpaque();const s=Lt()(Ot);for(const t of e)s?.update(t instanceof re?t.raw:t);return s?.digest(r.raw),r.asOpaque()}function Kt(e,t=Dt){const r=Lt()(Ot),s=e instanceof re?e.raw:e;r?.update(s);const i=t.emptyHash();return r?.digest(i.raw),i}function Qt(e,t=Dt){return Kt(re.blobFromString(e),t)}function Vt(e,t,r,s){return new(r||(r=Promise))(function(i,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function a(e){try{c(s.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((s=s.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class Ft{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return Vt(this,void 0,void 0,function*(){const t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}const $t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,jt=null!==(Mt=$t.Buffer)&&void 0!==Mt?Mt:null,Gt=$t.TextEncoder?new $t.TextEncoder:null;function qt(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}const zt="a".charCodeAt(0)-10,Wt="0".charCodeAt(0);function Jt(e,t,r){let s=0;for(let i=0;i<r;i++){let r=t[i]>>>4;e[s++]=r>9?r+zt:r+Wt,r=15&t[i],e[s++]=r>9?r+zt:r+Wt}return String.fromCharCode.apply(null,e)}const Yt=null!==jt?e=>{if("string"==typeof e){const t=jt.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(jt.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")}:e=>{if("string"==typeof e)return Gt.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")},Xt=new Uint8Array(256);for(let e=0;e<64;e++)Xt["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;function Zt(e){const t=function(e){let t=Math.floor(.75*e.length);const r=e.length;return"="===e[r-1]&&(t-=1,"="===e[r-2]&&(t-=1)),t}(e),r=e.length,s=new Uint8Array(t);let i=0;for(let t=0;t<r;t+=4){const r=Xt[e.charCodeAt(t)],n=Xt[e.charCodeAt(t+1)],o=Xt[e.charCodeAt(t+2)],a=Xt[e.charCodeAt(t+3)];s[i]=r<<2|n>>4,i+=1,s[i]=(15&n)<<4|o>>2,i+=1,s[i]=(3&o)<<6|63&a,i+=1}return s}const er=16384,tr=new Ft,rr=new Map;function sr(e,t){return Vt(this,void 0,void 0,function*(){let r=null,s=null,i=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const n=()=>new DataView(r.exports.memory.buffer).getUint32(r.exports.STATE_SIZE,!0),o=tr.dispatch(()=>Vt(this,void 0,void 0,function*(){if(!rr.has(e.name)){const t=Zt(e.data),r=WebAssembly.compile(t);rr.set(e.name,r)}const t=yield rr.get(e.name);r=yield WebAssembly.instantiate(t,{})})),a=(e=null)=>{i=!0,r.exports.Hash_Init(e)},c=e=>{if(!i)throw new Error("update() called before init()");(e=>{let t=0;for(;t<e.length;){const i=e.subarray(t,t+er);t+=i.length,s.set(i),r.exports.Hash_Update(i.length)}})(Yt(e))},l=new Uint8Array(2*t),h=(e,n=null)=>{if(!i)throw new Error("digest() called before init()");return i=!1,r.exports.Hash_Final(n),"binary"===e?s.slice(0,t):Jt(l,s,t)},u=e=>"string"==typeof e?e.length<4096:e.byteLength<er;let d=u;switch(e.name){case"argon2":case"scrypt":d=()=>!0;break;case"blake2b":case"blake2s":d=(e,t)=>t<=512&&u(e);break;case"blake3":d=(e,t)=>0===t&&u(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":d=()=>!1}return yield(()=>Vt(this,void 0,void 0,function*(){r||(yield o);const e=r.exports.Hash_GetBuffer(),t=r.exports.memory.buffer;s=new Uint8Array(t,e,er)}))(),{getMemory:()=>s,writeMemory:(e,t=0)=>{s.set(e,t)},getExports:()=>r.exports,setMemorySize:e=>{r.exports.Hash_SetMemorySize(e);const t=r.exports.Hash_GetBuffer(),i=r.exports.memory.buffer;s=new Uint8Array(i,t,e)},init:a,update:c,digest:h,save:()=>{if(!i)throw new Error("save() can only be called after init() and before digest()");const t=r.exports.Hash_GetState(),s=n(),o=r.exports.memory.buffer,a=new Uint8Array(o,t,s),c=new Uint8Array(4+s);return function(e,t){const r=t.length>>1;for(let s=0;s<r;s++){const r=s<<1;e[s]=qt(t.charCodeAt(r),t.charCodeAt(r+1))}}(c,e.hash),c.set(a,4),c},load:t=>{if(!(t instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const s=r.exports.Hash_GetState(),o=n(),a=4+o,c=r.exports.memory.buffer;if(t.length!==a)throw new Error(`Bad state length (expected ${a} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let r=0;r<t.length;r++){const s=r<<1;if(t[r]!==qt(e.charCodeAt(s),e.charCodeAt(s+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const l=t.subarray(4);new Uint8Array(c,s,o).set(l),i=!0},calculate:(e,i=null,n=null)=>{if(!d(e,i))return a(i),c(e),h("hex",n);const o=Yt(e);return s.set(o),r.exports.Hash_Calculate(o.length,i,n),Jt(l,s,t)},hashLength:t}})}new Ft,new Ft,new DataView(new ArrayBuffer(4)),new Ft,new Ft,new Ft,new Ft,new Uint8Array(8),new Ft,new Ft,new Ft;var ir={name:"sha3",data:"AGFzbQEAAAABFARgAAF/YAF/AGACf38AYAN/f38AAwgHAAEBAgEAAwUEAQECAgYOAn8BQZCNBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKpBwHBQBBgAoL1wMAQQBCADcDgI0BQQBCADcD+IwBQQBCADcD8IwBQQBCADcD6IwBQQBCADcD4IwBQQBCADcD2IwBQQBCADcD0IwBQQBCADcDyIwBQQBCADcDwIwBQQBCADcDuIwBQQBCADcDsIwBQQBCADcDqIwBQQBCADcDoIwBQQBCADcDmIwBQQBCADcDkIwBQQBCADcDiIwBQQBCADcDgIwBQQBCADcD+IsBQQBCADcD8IsBQQBCADcD6IsBQQBCADcD4IsBQQBCADcD2IsBQQBCADcD0IsBQQBCADcDyIsBQQBCADcDwIsBQQBCADcDuIsBQQBCADcDsIsBQQBCADcDqIsBQQBCADcDoIsBQQBCADcDmIsBQQBCADcDkIsBQQBCADcDiIsBQQBCADcDgIsBQQBCADcD+IoBQQBCADcD8IoBQQBCADcD6IoBQQBCADcD4IoBQQBCADcD2IoBQQBCADcD0IoBQQBCADcDyIoBQQBCADcDwIoBQQBCADcDuIoBQQBCADcDsIoBQQBCADcDqIoBQQBCADcDoIoBQQBCADcDmIoBQQBCADcDkIoBQQBCADcDiIoBQQBCADcDgIoBQQBBwAwgAEEBdGtBA3Y2AoyNAUEAQQA2AoiNAQuMAwEIfwJAQQAoAoiNASIBQQBIDQBBACABIABqQQAoAoyNASICcDYCiI0BAkACQCABDQBBgAohAwwBCwJAIAIgAWsiBCAAIAQgAEkbIgNFDQAgA0EDcSEFQQAhBgJAIANBBEkNACABQYCKAWohByADQXxxIQhBACEGA0AgByAGaiIDQcgBaiAGQYAKai0AADoAACADQckBaiAGQYEKai0AADoAACADQcoBaiAGQYIKai0AADoAACADQcsBaiAGQYMKai0AADoAACAIIAZBBGoiBkcNAAsLIAVFDQAgAUHIiwFqIQMDQCADIAZqIAZBgApqLQAAOgAAIAZBAWohBiAFQX9qIgUNAAsLIAAgBEkNAUHIiwEgAhADIAAgBGshACAEQYAKaiEDCwJAIAAgAkkNAANAIAMgAhADIAMgAmohAyAAIAJrIgAgAk8NAAsLIABFDQBBACECQcgBIQYDQCAGQYCKAWogAyAGakG4fmotAAA6AAAgBkEBaiEGIAAgAkEBaiICQf8BcUsNAAsLC+ALAS1+IAApA0AhAkEAKQPAigEhAyAAKQM4IQRBACkDuIoBIQUgACkDMCEGQQApA7CKASEHIAApAyghCEEAKQOoigEhCSAAKQMgIQpBACkDoIoBIQsgACkDGCEMQQApA5iKASENIAApAxAhDkEAKQOQigEhDyAAKQMIIRBBACkDiIoBIREgACkDACESQQApA4CKASETQQApA8iKASEUAkACQCABQcgASw0AQQApA+iKASEVQQApA/iKASEWQQApA/CKASEXQQApA4CLASEYQQApA9CKASEZQQApA+CKASEaQQApA9iKASEbDAELQQApA+CKASAAKQNghSEaQQApA9iKASAAKQNYhSEbQQApA9CKASAAKQNQhSEZIBQgACkDSIUhFEEAKQPoigEhFUEAKQP4igEhFkEAKQPwigEhF0EAKQOAiwEhGCABQekASQ0AIBggACkDgAGFIRggFiAAKQN4hSEWIBcgACkDcIUhFyAVIAApA2iFIRUgAUGJAUkNAEEAQQApA4iLASAAKQOIAYU3A4iLAQsgAyAChSEcIAUgBIUhHSAHIAaFIQcgCSAIhSEIIAsgCoUhHiANIAyFIQkgDyAOhSEKIBEgEIUhCyATIBKFIQxBACkDuIsBIRBBACkDkIsBIRFBACkDoIsBIRJBACkDsIsBIRNBACkDiIsBIQ1BACkDwIsBIQ5BACkDmIsBIR9BACkDqIsBIQ9BwH4hAANAIB4gByALhSAbhSAYhSAPhUIBiYUgFIUgF4UgH4UgDoUhAiAMIB0gCoUgGoUgDYUgE4VCAYmFIAiFIBmFIBaFIBKFIgMgB4UhICAJIAggDIUgGYUgFoUgEoVCAYmFIByFIBWFIBGFIBCFIgQgDoUhISAcIAogFCAehSAXhSAfhSAOhUIBiYUgHYUgGoUgDYUgE4UiBYVCN4kiIiALIBwgCYUgFYUgEYUgEIVCAYmFIAeFIBuFIBiFIA+FIgYgCoVCPokiI0J/hYMgAyAPhUICiSIkhSEOIBYgAoVCKYkiJSAEIBeFQieJIiZCf4WDICKFIQ8gECAFhUI4iSIQIAYgDYVCD4kiJ0J/hYMgAyAbhUIKiSIohSENIAQgHoVCG4kiKSAoIAggAoVCJIkiKkJ/hYOFIRYgBiAdhUIGiSIrIAMgC4VCAYkiLEJ/hYMgEiAChUISiSIthSEXICsgBCAfhUIIiSIuIBUgBYVCGYkiFUJ/hYOFIRsgBiAThUI9iSIdIAQgFIVCFIkiBCAJIAWFQhyJIghCf4WDhSEUIAggHUJ/hYMgAyAYhUItiSIDhSEcIB0gA0J/hYMgGSAChUIDiSIJhSEdIAQgAyAJQn+Fg4UhByAJIARCf4WDIAiFIQggDCAChSICICFCDokiA0J/hYMgESAFhUIViSIEhSEJIAYgGoVCK4kiBSADIARCf4WDhSEKIAQgBUJ/hYMgIEIsiSIEhSELIABB0AlqKQMAIAUgBEJ/hYOFIAKFIQwgJyAoQn+FgyAqhSIFIRggAyAEIAJCf4WDhSICIR4gKiApQn+FgyAQhSIDIR8gLSAuQn+FgyAVhSIEIRogJiAkICVCf4WDhSIGIRMgFSArQn+FgyAshSIoIRkgIyAmICJCf4WDhSIiIRIgLiAsIC1Cf4WDhSImIRUgJyApIBBCf4WDhSInIREgIyAkQn+FgyAlhSIjIRAgAEEIaiIADQALQQAgDzcDqIsBQQAgBTcDgIsBQQAgGzcD2IoBQQAgBzcDsIoBQQAgCzcDiIoBQQAgDjcDwIsBQQAgAzcDmIsBQQAgFzcD8IoBQQAgFDcDyIoBQQAgAjcDoIoBQQAgBjcDsIsBQQAgDTcDiIsBQQAgBDcD4IoBQQAgHTcDuIoBQQAgCjcDkIoBQQAgIjcDoIsBQQAgFjcD+IoBQQAgKDcD0IoBQQAgCDcDqIoBQQAgDDcDgIoBQQAgIzcDuIsBQQAgJzcDkIsBQQAgJjcD6IoBQQAgHDcDwIoBQQAgCTcDmIoBC/gCAQV/QeQAQQAoAoyNASIBQQF2ayECAkBBACgCiI0BIgNBAEgNACABIQQCQCABIANGDQAgA0HIiwFqIQVBACEDA0AgBSADakEAOgAAIANBAWoiAyABQQAoAoiNASIEa0kNAAsLIARByIsBaiIDIAMtAAAgAHI6AAAgAUHHiwFqIgMgAy0AAEGAAXI6AABByIsBIAEQA0EAQYCAgIB4NgKIjQELAkAgAkEESQ0AIAJBAnYiA0EDcSEFQQAhBAJAIANBf2pBA0kNACADQfz///8DcSEBQQAhA0EAIQQDQCADQYAKaiADQYCKAWooAgA2AgAgA0GECmogA0GEigFqKAIANgIAIANBiApqIANBiIoBaigCADYCACADQYwKaiADQYyKAWooAgA2AgAgA0EQaiEDIAEgBEEEaiIERw0ACwsgBUUNACAFQQJ0IQEgBEECdCEDA0AgA0GACmogA0GAigFqKAIANgIAIANBBGohAyABQXxqIgENAAsLCwYAQYCKAQvRBgEDf0EAQgA3A4CNAUEAQgA3A/iMAUEAQgA3A/CMAUEAQgA3A+iMAUEAQgA3A+CMAUEAQgA3A9iMAUEAQgA3A9CMAUEAQgA3A8iMAUEAQgA3A8CMAUEAQgA3A7iMAUEAQgA3A7CMAUEAQgA3A6iMAUEAQgA3A6CMAUEAQgA3A5iMAUEAQgA3A5CMAUEAQgA3A4iMAUEAQgA3A4CMAUEAQgA3A/iLAUEAQgA3A/CLAUEAQgA3A+iLAUEAQgA3A+CLAUEAQgA3A9iLAUEAQgA3A9CLAUEAQgA3A8iLAUEAQgA3A8CLAUEAQgA3A7iLAUEAQgA3A7CLAUEAQgA3A6iLAUEAQgA3A6CLAUEAQgA3A5iLAUEAQgA3A5CLAUEAQgA3A4iLAUEAQgA3A4CLAUEAQgA3A/iKAUEAQgA3A/CKAUEAQgA3A+iKAUEAQgA3A+CKAUEAQgA3A9iKAUEAQgA3A9CKAUEAQgA3A8iKAUEAQgA3A8CKAUEAQgA3A7iKAUEAQgA3A7CKAUEAQgA3A6iKAUEAQgA3A6CKAUEAQgA3A5iKAUEAQgA3A5CKAUEAQgA3A4iKAUEAQgA3A4CKAUEAQcAMIAFBAXRrQQN2NgKMjQFBAEEANgKIjQEgABACQeQAQQAoAoyNASIAQQF2ayEDAkBBACgCiI0BIgFBAEgNACAAIQQCQCAAIAFGDQAgAUHIiwFqIQVBACEBA0AgBSABakEAOgAAIAFBAWoiASAAQQAoAoiNASIEa0kNAAsLIARByIsBaiIBIAEtAAAgAnI6AAAgAEHHiwFqIgEgAS0AAEGAAXI6AABByIsBIAAQA0EAQYCAgIB4NgKIjQELAkAgA0EESQ0AIANBAnYiAUEDcSEFQQAhBAJAIAFBf2pBA0kNACABQfz///8DcSEAQQAhAUEAIQQDQCABQYAKaiABQYCKAWooAgA2AgAgAUGECmogAUGEigFqKAIANgIAIAFBiApqIAFBiIoBaigCADYCACABQYwKaiABQYyKAWooAgA2AgAgAUEQaiEBIAAgBEEEaiIERw0ACwsgBUUNACAFQQJ0IQAgBEECdCEBA0AgAUGACmogAUGAigFqKAIANgIAIAFBBGohASAAQXxqIgANAAsLCwvYAQEAQYAIC9ABkAEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgA==",hash:"fb24e536"};function nr(e){return[224,256,384,512].includes(e)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}new Ft,new Ft,new Ft,new Ft,new Ft,new Ft,new Ft,new Ft,new Uint8Array(8),new Ft,new Uint8Array(8),new Ft,new Uint8Array(8),new Ft,new Ft,new Ft;class or{hasher;static async create(){return new or(await function(e=512){if(nr(e))return Promise.reject(nr(e));const t=e/8;return sr(ir,t).then(r=>{r.init(e);const s={init:()=>(r.init(e),s),update:e=>(r.update(e),s),digest:e=>r.digest(e,1),save:()=>r.save(),load:e=>(r.load(e),s),blockSize:200-2*t,digestSize:t};return s})}(256))}constructor(e){this.hasher=e}}function ar(e,t){e.hasher.init();for(const r of t)e.hasher.update(r.raw);return se.fromBlob(e.hasher.digest("binary"),Ot)}class cr{map=new Map;constructor(){}static new(){return new cr}static fromEntries(e){const t=new cr;for(const[r,s]of e)t.set(r,s);return t}get size(){return this.map.size}has(e){return this.map.has(e.toString())}get(e){return this.map.get(e.toString())?.[1]}[Symbol.iterator](){return this.map.values()}entries(){return this.map.values()}*keys(){for(const e of this.map.values())yield e[0]}*values(){for(const e of this.map.values())yield e[1]}toSortedArray(e){const t=Array.from(this.map.values());return t.sort((t,r)=>e(t[0],r[0]).value),t.map(e=>e[1])}toJSON(){return Object.fromEntries(this)}set(e,t){this.map.set(e.toString(),[e,t])}delete(e){return this.map.delete(e.toString())}}class lr{map;static viewDictionaryKeys(e){return new lr(e)}static from(e){const t=lr.new();return t.insertAll(e),t}static new(){return new lr}constructor(e=cr.new()){this.map=e}get size(){return this.map.size}has(e){return this.map.has(e)}*intersection(e){const t=this.size<e.size?this:e,r=t===this?e:this;for(const e of t)r.has(e)&&(yield e)}*[Symbol.iterator](){for(const e of this.map)yield e[0]}insert(e){return this.map.set(e,!0)}insertAll(e){for(const t of e)this.map.set(t,!0)}delete(e){return this.map.delete(e)}}function hr(e){return e}class ur extends Array{fixedLength;constructor(...e){super(...e),this.fixedLength=this.length}static new(e,t){Q(e.length===t,`Expected an array of size: ${t}, got: ${e.length}`);const r=new ur(t);for(let s=0;s<t;s++)r[s]=e[s];return Object.seal(r),r}static fill(e,t){const r=[];for(let s=0;s<t;s++)r.push(e(s));return ur.new(r,t)}toString(){return j(Array.from(this))}}class dr{array;comparator;static fromArray(e,t=[]){const r=t.slice();return r.sort((t,r)=>e(t,r).value),new dr(r,e)}static fromSortedArray(e,t=[]){const r=t.length;if(0===r)return new dr([],e);const s=t.slice();for(let t=1;t<r;t++)if(e(s[t-1],s[t]).isGreater())throw new Error(`Expected sorted array, got: ${s}`);return new dr(s,e)}constructor(e,t){this.array=e,this.comparator=t}insert(e){const t=this.binarySearch(e);this.array.splice(t.idx,0,e)}pop(){return this.array.pop()}findIndex(e){const t=this.binarySearch(e);return t.isEqual?t.idx:-1}findExact(e){const t=this.binarySearch(e);if(t.isEqual)return this.array[t.idx]}removeOne(e){const t=this.binarySearch(e);t.isEqual&&this.array.splice(t.idx,1)}has(e){return this.binarySearch(e).isEqual}get length(){return this.array.length}slice(e,t){return this.array.slice(e,t)}binarySearch(e){const t=this.array,r=this.comparator;let s=0,i=t.length;for(;s<i;){const n=i+s>>1,o=r(t[n],e);if(o.isEqual())return{idx:n,isEqual:!0};o.isLess()?s=n+1:i=n}return{idx:s,isEqual:!1}}static fromTwoSortedCollections(e,t){Q(e.comparator===t.comparator,"Cannot merge arrays if they do not use the same comparator");const r=e.comparator,s=e.array,i=s.length,n=t.array,o=n.length,a=new Array(i+o);let c=0,l=0,h=0;for(;c<i&&l<o;)r(s[c],n[l]).isLess()?a[h++]=s[c++]:(r(s[c],n[l]).isGreater()||(a[h++]=s[c++]),a[h++]=n[l++]);for(;c<i;)a[h++]=s[c++];for(;l<o;)a[h++]=n[l++];return dr.fromSortedArray(r,a)}*[Symbol.iterator](){for(const e of this.array)yield e}}class fr extends dr{static fromArray(e,t=[]){const r=t.slice();r.sort((t,r)=>e(t,r).value);const s=r.length;for(let i=1;i<s;i++)if(e(r[i-1],r[i]).isEqual())throw new Error(`Expected array without duplicates, got: ${t}`);return new fr(r,e)}static fromSortedArray(e,t=[]){if(0===t.length)return new fr([],e);const r=t.slice(),s=r.length;for(let t=1;t<s;t++)if(e(r[t-1],r[t]).isGreaterOrEqual())throw new Error(`Expected sorted array without duplicates, got: ${r}`);return new fr(r,e)}insert(e){const t=this.binarySearch(e);t.isEqual||this.array.splice(t.idx,0,e)}static fromTwoSortedCollections(e,t){Q(e.comparator===t.comparator,"Cannot merge arrays if they do not use the same comparator");const r=e.comparator;if(0===e.length)return fr.fromSortedArray(r,t.array);if(0===t.length)return fr.fromSortedArray(r,e.array);const s=dr.fromTwoSortedCollections(e,t).array,i=s.length;let n=1;for(let e=1;e<i;e++)r(s[e-1],s[e]).isNotEqual()&&(s[n++]=s[e]);return s.length=n,fr.fromSortedArray(r,s)}}class gr extends q{validatorsCount;thirdOfValidators;validatorsSuperMajority;coresCount;slotDuration;epochLength;rotationPeriod;contestLength;ticketsPerValidator;maxTicketsPerExtrinsic;numberECPiecesPerSegment;preimageExpungePeriod;constructor(e){super(),this.validatorsCount=e.validatorsCount,this.thirdOfValidators=Math.floor(e.validatorsCount/3),this.validatorsSuperMajority=2*Math.floor(e.validatorsCount/3)+1,this.coresCount=e.coresCount,this.slotDuration=e.slotDuration,this.epochLength=e.epochLength,this.rotationPeriod=e.rotationPeriod,this.contestLength=e.contestLength,this.ticketsPerValidator=e.ticketsPerValidator,this.maxTicketsPerExtrinsic=e.maxTicketsPerExtrinsic,this.numberECPiecesPerSegment=e.numberECPiecesPerSegment,this.preimageExpungePeriod=e.preimageExpungePeriod}}const pr=new gr({contestLength:10,coresCount:2,epochLength:12,maxTicketsPerExtrinsic:3,rotationPeriod:4,slotDuration:6,ticketsPerValidator:3,validatorsCount:6,numberECPiecesPerSegment:1026,preimageExpungePeriod:6}),yr=new gr({contestLength:500,coresCount:341,epochLength:600,maxTicketsPerExtrinsic:16,rotationPeriod:10,slotDuration:6,ticketsPerValidator:2,validatorsCount:1023,numberECPiecesPerSegment:6,preimageExpungePeriod:19200});class mr{chainSpec;dbPath;omitSealVerification;static reInit(e){const{chainSpec:t,dbPath:r,omitSealVerification:s}=e;return new mr(new gr(t),r,s)}constructor(e,t,r=!1){this.chainSpec=e,this.dbPath=t,this.omitSealVerification=r}}function br(e){const t=yr,{name:r,sizeHint:s}=e(t),i=new Map;return Fe.select({name:r,sizeHint:{bytes:s.bytes,isExact:!1}},s=>{if(s instanceof gr){const t=i.get(s);if(void 0!==t)return t;const r=e(s);return i.set(s,r),r}if(null===s)return e(t);if(null!==s)throw new Error(`[${r}] Unexpected context type ${typeof s} while encoding/decoding.`);throw new Error(`[${r}] Missing context while encoding/decoding!`)})}const Ar=(e,t,r)=>"fixedLength"in t?Qe(Fe.sequenceFixLen(e,t.fixedLength)).convert(W,hr):Qe(Fe.sequenceVarLen(e,t)).convert(W,hr),Ir=(e,t)=>{const r=r=>{if(t!==r)throw new Error(`[${e.name}] Invalid size of fixed-size array. Got ${r}, expected: ${t}`)};return Fe.sequenceFixLen(e,t).convert(e=>(r(e.length),e),e=>(r(e.length),ur.new(e,t)))},vr=(e,t,{typicalLength:r=32,compare:s=(e,r)=>t(e).compare(t(r))}={})=>Ke.new(`HashDictionary<${e.name}>[?]`,{bytes:r*e.sizeHint.bytes,isExact:!1},(t,r)=>{const i=Array.from(r.values());i.sort((e,t)=>s(e,t).value),t.varU32(Ie(i.length));for(const r of i)e.encode(t,r)},r=>{const i=cr.new(),n=r.varU32();let o=null;for(let a=0;a<n;a+=1){const n=e.decode(r),a=t(n);if(i.has(a))throw new Error(`Duplicate item in the dictionary encoding: "${a}"!`);if(null!==o&&s(o,n).isGreaterOrEqual())throw new Error(`The keys in dictionary encoding are not sorted "${o}" >= "${n}"!`);i.set(a,n),o=n}return i},t=>{const r=t.decoder.varU32();t.sequenceFixLen(e,r)});class wr extends q{anchor;bitfield;validatorIndex;signature;static Codec=Fe.Class(wr,{anchor:Fe.bytes(Ot).asOpaque(),bitfield:br(e=>Fe.bitVecFixLen(e.coresCount)),validatorIndex:Fe.u16.asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({anchor:e,bitfield:t,validatorIndex:r,signature:s}){return new wr(e,t,r,s)}constructor(e,t,r,s){super(),this.anchor=e,this.bitfield=t,this.validatorIndex=r,this.signature=s}}const Sr=br(e=>Ar(wr.Codec,{minLength:0,maxLength:e.validatorsCount,typicalLength:e.validatorsCount/2}));class Er extends q{workReportHash;wasConsideredValid;key;signature;static Codec=Fe.Class(Er,{workReportHash:Fe.bytes(Ot).asOpaque(),wasConsideredValid:Fe.bool,key:Fe.bytes(Et).asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({workReportHash:e,wasConsideredValid:t,key:r,signature:s}){return new Er(e,t,r,s)}constructor(e,t,r,s){super(),this.workReportHash=e,this.wasConsideredValid=t,this.key=r,this.signature=s}}class Cr extends q{workReportHash;key;signature;static Codec=Fe.Class(Cr,{workReportHash:Fe.bytes(Ot).asOpaque(),key:Fe.bytes(Et).asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({workReportHash:e,key:t,signature:r}){return new Cr(e,t,r)}constructor(e,t,r){super(),this.workReportHash=e,this.key=t,this.signature=r}}class kr extends q{isWorkReportValid;index;signature;static Codec=Fe.Class(kr,{isWorkReportValid:Fe.bool,index:Fe.u16.asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({isWorkReportValid:e,index:t,signature:r}){return new kr(e,t,r)}constructor(e,t,r){super(),this.isWorkReportValid=e,this.index=t,this.signature=r}}class xr extends q{workReportHash;votesEpoch;votes;static Codec=Fe.Class(xr,{workReportHash:Fe.bytes(Ot).asOpaque(),votesEpoch:Fe.u32.asOpaque(),votes:br(e=>Qe(Fe.sequenceFixLen(kr.Codec,e.validatorsSuperMajority)).convert(W,hr))});static create({workReportHash:e,votesEpoch:t,votes:r}){return new xr(e,t,r)}constructor(e,t,r){super(),this.workReportHash=e,this.votesEpoch=t,this.votes=r}}class _r extends q{verdicts;culprits;faults;static Codec=Fe.Class(_r,{verdicts:Fe.sequenceVarLen(xr.Codec),culprits:Fe.sequenceVarLen(Cr.Codec),faults:Fe.sequenceVarLen(Er.Codec)});static create({verdicts:e,culprits:t,faults:r}){return new _r(e,t,r)}constructor(e,t,r){super(),this.verdicts=e,this.culprits=t,this.faults=r}}const Br=e=>Ie(e),Rr=e=>be(e),Or=e=>Ie(e),Ur=e=>we(e),Tr=e=>be(e),Nr=e=>Ie(e);function Dr(e,t){return Q(e.length===t.validatorsCount,`Invalid per-validator array length. Expected ${t.validatorsCount}, got: ${e.length}`),e}const Mr=e=>br(t=>Ar(e,{fixedLength:t.validatorsCount}));function Pr(e,t){return Q(e.length===t.epochLength,`Invalid per-epoch-block array length. Expected ${t.epochLength}, got: ${e.length}`),e}const Lr=e=>br(t=>Ar(e,{fixedLength:t.epochLength}));class Hr extends q{anchor;stateRoot;beefyRoot;lookupAnchor;lookupAnchorSlot;prerequisites;static Codec=Fe.Class(Hr,{anchor:Fe.bytes(Ot).asOpaque(),stateRoot:Fe.bytes(Ot).asOpaque(),beefyRoot:Fe.bytes(Ot).asOpaque(),lookupAnchor:Fe.bytes(Ot).asOpaque(),lookupAnchorSlot:Fe.u32.asOpaque(),prerequisites:Fe.sequenceVarLen(Fe.bytes(Ot).asOpaque())});static create({anchor:e,stateRoot:t,beefyRoot:r,lookupAnchor:s,lookupAnchorSlot:i,prerequisites:n}){return new Hr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n=[]){super(),this.anchor=e,this.stateRoot=t,this.beefyRoot=r,this.lookupAnchor=s,this.lookupAnchorSlot=i,this.prerequisites=n}}class Kr extends q{treeRoot;index;static Codec=Fe.Class(Kr,{treeRoot:Fe.bytes(Ot),index:Fe.u16.asOpaque()});static create({treeRoot:e,index:t}){return new Kr(e,t)}constructor(e,t){super(),this.treeRoot=e,this.index=t}}class Qr extends q{hash;len;static Codec=Fe.Class(Qr,{hash:Fe.bytes(Ot).asOpaque(),len:Fe.u32});static create({hash:e,len:t}){return new Qr(e,t)}constructor(e,t){super(),this.hash=e,this.len=t}}class Vr extends q{service;codeHash;payload;refineGasLimit;accumulateGasLimit;importSegments;extrinsic;exportCount;static Codec=Fe.Class(Vr,{service:Fe.u32.asOpaque(),codeHash:Fe.bytes(Ot).asOpaque(),payload:Fe.blob,refineGasLimit:Fe.u64.asOpaque(),accumulateGasLimit:Fe.u64.asOpaque(),importSegments:Ar(Kr.Codec,{minLength:0,maxLength:2048,typicalLength:2048}),extrinsic:Fe.sequenceVarLen(Qr.Codec),exportCount:Fe.u16});static create({service:e,codeHash:t,payload:r,refineGasLimit:s,accumulateGasLimit:i,importSegments:n,extrinsic:o,exportCount:a}){return new Vr(e,t,r,s,i,n,o,a)}constructor(e,t,r,s,i,n,o,a){super(),this.service=e,this.codeHash=t,this.payload=r,this.refineGasLimit=s,this.accumulateGasLimit=i,this.importSegments=n,this.extrinsic=o,this.exportCount=a}}function Fr(e){return V(e,e>=$r&&e<=jr,`WorkItemsCount: Expected '${$r} <= count <= ${jr}' got ${e}`)}const $r=1,jr=16;class Gr extends q{authorization;authCodeHost;authCodeHash;parametrization;context;items;static Codec=Fe.Class(Gr,{authorization:Fe.blob,authCodeHost:Fe.u32.asOpaque(),authCodeHash:Fe.bytes(Ot).asOpaque(),parametrization:Fe.blob,context:Hr.Codec,items:Fe.sequenceVarLen(Vr.Codec).convert(e=>e,e=>ur.new(e,Fr(e.length)))});static create({authorization:e,authCodeHost:t,authCodeHash:r,parametrization:s,context:i,items:n}){return new Gr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){super(),this.authorization=e,this.authCodeHost=t,this.authCodeHash=r,this.parametrization=s,this.context=i,this.items=n}}var qr,zr;(zr=qr||(qr={}))[zr.ok=0]="ok",zr[zr.outOfGas=1]="outOfGas",zr[zr.panic=2]="panic",zr[zr.badCode=3]="badCode",zr[zr.codeOversize=4]="codeOversize";class Wr extends q{kind;okBlob;static Codec=Fe.custom({name:"WorkExecResult",sizeHint:{bytes:1,isExact:!1}},(e,t)=>{e.varU32(Ie(t.kind)),t.kind===qr.ok&&null!==t.okBlob&&e.bytesBlob(t.okBlob)},e=>{const t=e.varU32();if(t===qr.ok){const r=e.bytesBlob();return new Wr(t,r)}if(t>qr.codeOversize)throw new Error(`Invalid WorkExecResultKind: ${t}`);return new Wr(t)},e=>{e.decoder.varU32()===qr.ok&&e.bytesBlob()});constructor(e,t=null){super(),this.kind=e,this.okBlob=t}}class Jr extends q{gasUsed;importedSegments;extrinsicCount;extrinsicSize;exportedSegments;static Codec=Fe.Class(Jr,{gasUsed:Fe.varU64.asOpaque(),importedSegments:Fe.varU32,extrinsicCount:Fe.varU32,extrinsicSize:Fe.varU32,exportedSegments:Fe.varU32});static create({gasUsed:e,importedSegments:t,extrinsicCount:r,extrinsicSize:s,exportedSegments:i}){return new Jr(e,t,r,s,i)}constructor(e,t,r,s,i){super(),this.gasUsed=e,this.importedSegments=t,this.extrinsicCount=r,this.extrinsicSize=s,this.exportedSegments=i}}class Yr{serviceId;codeHash;payloadHash;gas;result;load;static Codec=Fe.Class(Yr,{serviceId:Fe.u32.asOpaque(),codeHash:Fe.bytes(Ot).asOpaque(),payloadHash:Fe.bytes(Ot),gas:Fe.u64.asOpaque(),result:Wr.Codec,load:Jr.Codec});static create({serviceId:e,codeHash:t,payloadHash:r,gas:s,result:i,load:n}){return new Yr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.serviceId=e,this.codeHash=t,this.payloadHash=r,this.gas=s,this.result=i,this.load=n}}class Xr extends q{hash;length;erasureRoot;exportsRoot;exportsCount;static Codec=Fe.Class(Xr,{hash:Fe.bytes(Ot).asOpaque(),length:Fe.u32,erasureRoot:Fe.bytes(Ot),exportsRoot:Fe.bytes(Ot).asOpaque(),exportsCount:Fe.u16});static create({hash:e,length:t,erasureRoot:r,exportsRoot:s,exportsCount:i}){return new Xr(e,t,r,s,i)}constructor(e,t,r,s,i){super(),this.hash=e,this.length=t,this.erasureRoot=r,this.exportsRoot=s,this.exportsCount=i}}class Zr extends q{workPackageHash;segmentTreeRoot;static Codec=Fe.Class(Zr,{workPackageHash:Fe.bytes(Ot).asOpaque(),segmentTreeRoot:Fe.bytes(Ot).asOpaque()});constructor(e,t){super(),this.workPackageHash=e,this.segmentTreeRoot=t}static create({workPackageHash:e,segmentTreeRoot:t}){return new Zr(e,t)}}class es extends q{workPackageSpec;context;coreIndex;authorizerHash;authorizationOutput;segmentRootLookup;results;authorizationGasUsed;static Codec=Fe.Class(es,{workPackageSpec:Xr.Codec,context:Hr.Codec,coreIndex:K.isGreaterOrEqual(D.V0_6_5)?Fe.varU32.convert(e=>Ie(e),e=>{if(!Ae(e))throw new Error(`Core index exceeds U16: ${e}`);return Tr(e)}):Fe.u16.asOpaque(),authorizerHash:Fe.bytes(Ot).asOpaque(),authorizationOutput:Fe.blob,segmentRootLookup:Qe(Fe.sequenceVarLen(Zr.Codec)),results:Fe.sequenceVarLen(Yr.Codec).convert(e=>e,e=>ur.new(e,Fr(e.length))),authorizationGasUsed:Fe.varU64.asOpaque()});static create({workPackageSpec:e,context:t,coreIndex:r,authorizerHash:s,authorizationOutput:i,segmentRootLookup:n,results:o,authorizationGasUsed:a}){return new es(e,t,r,s,i,n,o,a)}constructor(e,t,r,s,i,n,o,a){super(),this.workPackageSpec=e,this.context=t,this.coreIndex=r,this.authorizerHash=s,this.authorizationOutput=i,this.segmentRootLookup=n,this.results=o,this.authorizationGasUsed=a}}const ts=[2,3];class rs extends q{validatorIndex;signature;static Codec=Fe.Class(rs,{validatorIndex:Fe.u16.asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({validatorIndex:e,signature:t}){return new rs(e,t)}constructor(e,t){super(),this.validatorIndex=e,this.signature=t}}class ss extends q{report;slot;credentials;static Codec=Fe.Class(ss,{report:es.Codec,slot:Fe.u32.asOpaque(),credentials:Ar(rs.Codec,{minLength:ts[0],maxLength:ts[1],typicalLength:ts[1]})});static create({report:e,slot:t,credentials:r}){return new ss(e,t,r)}constructor(e,t,r){super(),this.report=e,this.slot=t,this.credentials=r}}const is=br(e=>Ar(ss.Codec,{minLength:0,maxLength:e.coresCount,typicalLength:e.coresCount}));class ns extends q{attempt;signature;static Codec=Fe.Class(ns,{attempt:Fe.u8.asOpaque(),signature:Fe.bytes(784).asOpaque()});static create({attempt:e,signature:t}){return new ns(e,t)}constructor(e,t){super(),this.attempt=e,this.signature=t}}class os extends q{id;attempt;static Codec=Fe.Class(os,{id:Fe.bytes(Ot),attempt:Fe.u8.asOpaque()});static create({id:e,attempt:t}){return new os(e,t)}constructor(e,t){super(),this.id=e,this.attempt=t}}const as=Ar(ns.Codec,{minLength:0,maxLength:16,typicalLength:16});class cs extends q{bandersnatch;ed25519;static Codec=Fe.Class(cs,{bandersnatch:Fe.bytes(_t).asOpaque(),ed25519:Fe.bytes(Et).asOpaque()});static create({bandersnatch:e,ed25519:t}){return new cs(e,t)}constructor(e,t){super(),this.bandersnatch=e,this.ed25519=t}}class ls extends q{entropy;ticketsEntropy;validators;static Codec=Fe.Class(ls,{entropy:Fe.bytes(Ot).asOpaque(),ticketsEntropy:Fe.bytes(Ot).asOpaque(),validators:Mr(cs.Codec)});static create({entropy:e,ticketsEntropy:t,validators:r}){return new ls(e,t,r)}constructor(e,t,r){super(),this.entropy=e,this.ticketsEntropy=t,this.validators=r}}const hs=e=>{const t=e.encoded().raw,r=t.length-96;return re.blobFrom(t.subarray(0,r))};class us extends q{static Codec=Fe.Class(us,{parentHeaderHash:Fe.bytes(Ot).asOpaque(),priorStateRoot:Fe.bytes(Ot).asOpaque(),extrinsicHash:Fe.bytes(Ot).asOpaque(),timeSlotIndex:Fe.u32.asOpaque(),epochMarker:Fe.optional(ls.Codec),ticketsMarker:Fe.optional(Lr(os.Codec)),offendersMarker:Fe.sequenceVarLen(Fe.bytes(Et).asOpaque()),bandersnatchBlockAuthorIndex:Fe.u16.asOpaque(),entropySource:Fe.bytes(96).asOpaque(),seal:Fe.bytes(96).asOpaque()});static create(e){return Object.assign(us.empty(),e)}parentHeaderHash=se.zero(Ot).asOpaque();priorStateRoot=se.zero(Ot).asOpaque();extrinsicHash=se.zero(Ot).asOpaque();timeSlotIndex=Br(0);epochMarker=null;ticketsMarker=null;offendersMarker=[];bandersnatchBlockAuthorIndex=Rr(0);entropySource=se.zero(96).asOpaque();seal=se.zero(96).asOpaque();constructor(){super()}static empty(){return new us}}class ds extends Ut{static Codec=Fe.Class(ds,{hash:Fe.bytes(Ot).asOpaque(),data:us.Codec.View});static create({hash:e,data:t}){return new Ut(e,t)}}const fs=ds.Codec;class gs extends q{requester;blob;static Codec=Fe.Class(gs,{requester:Fe.u32.asOpaque(),blob:Fe.blob});static create({requester:e,blob:t}){return new gs(e,t)}constructor(e,t){super(),this.requester=e,this.blob=t}}const ps=Fe.sequenceVarLen(gs.Codec);class ys extends q{tickets;preimages;guarantees;assurances;disputes;static Codec=Fe.Class(ys,{tickets:as,preimages:ps,guarantees:is,assurances:Sr,disputes:_r.Codec});static create({tickets:e,preimages:t,assurances:r,disputes:s,guarantees:i}){return new ys(e,t,i,r,s)}constructor(e,t,r,s,i){super(),this.tickets=e,this.preimages=t,this.guarantees=r,this.assurances=s,this.disputes=i}}class ms extends q{header;extrinsic;static Codec=Fe.Class(ms,{header:us.Codec,extrinsic:ys.Codec});static create({header:e,extrinsic:t}){return new ms(e,t)}constructor(e,t){super(),this.header=e,this.extrinsic=t}}const bs=Symbol("no key");function As(e,t,r="<root>"){const s=typeof e;if("string"===t){if("string"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if("number"===t){if("number"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if("boolean"===t){if("boolean"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if(Array.isArray(t)){const s=t[0];if("array"===s){const s=t[1];if("function"==typeof s)return s(e,r);if(!Array.isArray(e))throw new Error(`[${r}] Expected array, got ${e}`);const i=e,n=[];for(const[e,t]of i.entries())n[e]=As(t,s,`${r}.${e}`);return n}if("optional"===s)return null==e?e:As(e,t[1],r);if("object"===s)return Is(t[1],e,r);if("string"===s)return Is(t[1],As(e,s,r),r);if("number"===s){const s=t[0];return Is(t[1],As(e,s,r),r)}throw new Error(`[${r}] Invalid parser type: ${s}`)}if("object"!==s)throw new Error(`[${r}] Expected complex type but got ${s}`);if("object"!=typeof t)throw new Error(`[${r}] Unhandled type ${t}`);if(null===e)throw new Error(`[${r}] Unexpected 'null'`);const i={},n=e,o=t;for(const e of Object.keys(n))i[e]=void 0;for(const e of Object.keys(t))if(e in n){const t=n[e];i[e]=As(t,o[e],`${r}.${e}`)}else Array.isArray(o[e])&&"optional"===o[e][0]&&(i[e]=bs);const a=function(e,t){const r=Object.keys(e),s=Object.keys(t);r.sort(),s.sort();const i={},n=Math.max(s.length,s.length);for(let e=0;e<n;e++)i[r[e]]=(i[r[e]]||0)+1,i[s[e]]=(i[s[e]]||0)+2;const o=[],a=e=>void 0!==e?`"${e}"`:"<missing>";for(const[e,t]of Object.entries(i))3!==t&&"undefined"!==e&&o.push(1===t?[a(e),a(void 0)]:[a(void 0),a(e)]);return o}(i,t);if(a.length>0)throw new Error(`[${r}] Unexpected or missing keys: ${a.join(" | ")}\n Data: ${Object.keys(i)}\n Schema: ${Object.keys(t)}`);for(const e of Object.keys(i))i[e]===bs&&delete i[e];return i}function Is(e,t,r){try{return e(t,r)}catch(e){throw new Error(`[${r}] Error while parsing the value: ${e}`)}}var vs,ws;!function(e){function t(e){return["number",e]}function r(e){return["object",e]}e.fromString=function(e){return["string",e]},e.fromNumber=t,e.castNumber=function(){return t(e=>e)},e.fromAny=r,e.optional=function(e){return["optional",e]},e.nullable=function(e){return["optional",e]},e.array=function(e){return["array",e]},e.record=function(e){return r((t,r)=>{if("object"!=typeof t||null===t)throw new Error("Expected object record for parsing");const s={};for(const[i,n]of Object.entries(t))s[i]=As(n,e,`${r}.${i}`);return s})},e.map=function(e,t){return r((r,s)=>{if("object"!=typeof r||null===r)throw new Error("Expected map for parsing");const i=new Map;for(const[n,o]of Object.entries(r))i.set(As(n,e,`${s}.key`),As(o,t,`${s}.value`));return i})},e.object=function(e,t){return r((r,s)=>{const i=As(r,e,s);return t(i)})}}(vs||(vs={})),function(e){e.bytesN=e=>vs.fromString(t=>se.parseBytes(t,e).asOpaque()),e.bytesNNoPrefix=e=>vs.fromString(t=>se.parseBytesNoPrefix(t,e).asOpaque()),e.bytes32=()=>vs.fromString(e=>se.parseBytes(e,32).asOpaque()),e.bytes32NoPrefix=()=>vs.fromString(e=>se.parseBytesNoPrefix(e,32).asOpaque()),e.bytesBlob=vs.fromString(re.parseBlob),e.bytesBlobNoPrefix=vs.fromString(re.parseBlobNoPrefix),e.ed25519Signature=vs.fromString(e=>se.parseBytes(e,64).asOpaque()),e.ticketAttempt=vs.fromNumber(e=>{if(0!==e&&1!==e&&2!==e)throw new Error("Invalid TicketAttempt value.");return function(e){return ye(e)}(e)}),e.uint8Array=vs.fromAny(e=>{if(Array.isArray(e))return new Uint8Array(e);if(null===e)return new Uint8Array;throw new Error(`Expected an array, got ${typeof e} instead. [uint8Array]`)}),e.bigUint64Array=vs.fromAny(e=>{if(Array.isArray(e))return new BigUint64Array(e.map(e=>BigInt(e)));if(null===e)return new BigUint64Array;throw new Error(`Expected an array, got ${typeof e} instead. [bigUint64Array]`)}),e.bigUint64=vs.fromAny(e=>BigInt(e))}(ws||(ws={}));const Ss=e=>vs.array((e=>vs.object({anchor:ws.bytes32(),bitfield:vs.fromString(t=>{const r=Math.ceil(e.coresCount/8);return pe.fromBytes(se.parseBytes(t,r),e.coresCount)}),validator_index:"number",signature:ws.ed25519Signature},({anchor:e,bitfield:t,validator_index:r,signature:s})=>wr.create({anchor:e,bitfield:t,validatorIndex:r,signature:s})))(e)),Es=vs.object({target:ws.bytes32(),vote:"boolean",key:ws.bytes32(),signature:ws.ed25519Signature},({target:e,vote:t,key:r,signature:s})=>Er.create({workReportHash:e,wasConsideredValid:t,key:r,signature:s})),Cs=vs.object({target:ws.bytes32(),key:ws.bytes32(),signature:ws.ed25519Signature},({target:e,key:t,signature:r})=>Cr.create({workReportHash:e,key:t,signature:r})),ks=vs.object({vote:"boolean",index:"number",signature:ws.ed25519Signature},({vote:e,index:t,signature:r})=>kr.create({isWorkReportValid:e,index:t,signature:r})),xs=vs.object({target:ws.bytes32(),age:"number",votes:vs.array(ks)},({target:e,age:t,votes:r})=>xr.create({workReportHash:e,votesEpoch:t,votes:r})),_s=vs.object({verdicts:vs.array(xs),culprits:vs.array(Cs),faults:vs.array(Es)},({verdicts:e,culprits:t,faults:r})=>_r.create({verdicts:e,culprits:t,faults:r})),Bs=vs.object({anchor:ws.bytes32(),state_root:ws.bytes32(),beefy_root:ws.bytes32(),lookup_anchor:ws.bytes32(),lookup_anchor_slot:"number",prerequisites:vs.array(ws.bytes32())},({anchor:e,state_root:t,beefy_root:r,lookup_anchor:s,lookup_anchor_slot:i,prerequisites:n})=>Hr.create({anchor:e,stateRoot:t,beefyRoot:r,lookupAnchor:s,lookupAnchorSlot:i,prerequisites:n})),Rs=vs.object({ok:vs.optional(vs.fromString(re.parseBlob)),out_of_gas:vs.optional(vs.fromAny(()=>null)),panic:vs.optional(vs.fromAny(()=>null)),bad_code:vs.optional(vs.fromAny(()=>null)),code_oversize:vs.optional(vs.fromAny(()=>null))},e=>{const{ok:t,out_of_gas:r,panic:s,bad_code:i,code_oversize:n}=e;if(void 0!==t)return new Wr(Ie(qr.ok),t);if(null===r)return new Wr(Ie(qr.outOfGas));if(null===s)return new Wr(Ie(qr.panic));if(null===i)return new Wr(Ie(qr.badCode));if(null===n)return new Wr(Ie(qr.codeOversize));throw new Error("Invalid WorkExecResult")}),Os=vs.object({gas_used:vs.fromNumber(e=>Ur(e)),imports:"number",extrinsic_count:"number",extrinsic_size:"number",exports:"number"},({gas_used:e,imports:t,extrinsic_count:r,extrinsic_size:s,exports:i})=>Jr.create({gasUsed:Ur(e),importedSegments:Ie(t),extrinsicCount:Ie(r),extrinsicSize:Ie(s),exportedSegments:Ie(i)})),Us=vs.object({service_id:"number",code_hash:ws.bytes32(),payload_hash:ws.bytes32(),accumulate_gas:vs.fromNumber(e=>Ur(e)),result:Rs,refine_load:Os},({service_id:e,code_hash:t,payload_hash:r,accumulate_gas:s,result:i,refine_load:n})=>Yr.create({serviceId:e,codeHash:t,payloadHash:r,gas:s,result:i,load:n})),Ts=vs.object({hash:ws.bytes32(),length:"number",erasure_root:ws.bytes32(),exports_root:ws.bytes32(),exports_count:"number"},({hash:e,length:t,erasure_root:r,exports_root:s,exports_count:i})=>Xr.create({hash:e,length:t,erasureRoot:r,exportsRoot:s,exportsCount:i})),Ns=vs.object({work_package_hash:ws.bytes32(),segment_tree_root:ws.bytes32()},({work_package_hash:e,segment_tree_root:t})=>Zr.create({workPackageHash:e,segmentTreeRoot:t})),Ds=vs.object({package_spec:Ts,context:Bs,core_index:"number",authorizer_hash:ws.bytes32(),auth_output:vs.fromString(re.parseBlob),segment_root_lookup:vs.array(Ns),results:vs.array(Us),auth_gas_used:vs.fromNumber(e=>Ur(e))},({package_spec:e,context:t,core_index:r,authorizer_hash:s,auth_output:i,results:n,segment_root_lookup:o,auth_gas_used:a})=>{const c=ur.new(n,Fr(n.length));return es.create({workPackageSpec:e,context:t,coreIndex:r,authorizerHash:s,authorizationOutput:i,segmentRootLookup:o,results:c,authorizationGasUsed:a})}),Ms=vs.object({validator_index:"number",signature:ws.ed25519Signature},({validator_index:e,signature:t})=>rs.create({validatorIndex:e,signature:t})),Ps=vs.object({report:Ds,slot:"number",signatures:vs.array(Ms)},({report:e,slot:t,signatures:r})=>ss.create({report:e,slot:t,credentials:r})),Ls=vs.array(Ps),Hs=vs.object({requester:"number",blob:vs.fromString(re.parseBlob)},({requester:e,blob:t})=>gs.create({requester:e,blob:t})),Ks=vs.array(Hs),Qs=vs.object({attempt:ws.ticketAttempt,signature:vs.fromString(e=>se.parseBytes(e,784).asOpaque())},e=>ns.create({attempt:e.attempt,signature:e.signature})),Vs=vs.array(Qs),Fs=vs.fromString(e=>se.parseBytes(e,96).asOpaque()),$s=vs.object({bandersnatch:ws.bytes32(),ed25519:ws.bytes32()},cs.create),js=vs.object({entropy:ws.bytes32(),tickets_entropy:ws.bytes32(),validators:vs.array($s)},e=>ls.create({entropy:e.entropy,ticketsEntropy:e.tickets_entropy,validators:e.validators})),Gs=vs.object({id:ws.bytes32(),attempt:ws.ticketAttempt},e=>os.create({id:e.id,attempt:e.attempt})),qs=vs.object({parent:ws.bytes32(),parent_state_root:ws.bytes32(),extrinsic_hash:ws.bytes32(),slot:"number",epoch_mark:vs.optional(js),tickets_mark:vs.optional(vs.array(Gs)),offenders_mark:vs.array(ws.bytes32()),author_index:"number",entropy_source:Fs,seal:Fs},({parent:e,parent_state_root:t,extrinsic_hash:r,slot:s,epoch_mark:i,tickets_mark:n,offenders_mark:o,author_index:a,entropy_source:c,seal:l})=>{const h=us.empty();return h.parentHeaderHash=e,h.priorStateRoot=t,h.extrinsicHash=r,h.timeSlotIndex=s,h.epochMarker=i??null,h.ticketsMarker=n??null,h.offendersMarker=o,h.bandersnatchBlockAuthorIndex=a,h.entropySource=c,h.seal=l,h});class zs extends q{name;ip;port;static fromString(e){const[t,r]=e.split("@"),s=r.substring(0,r.lastIndexOf(":")),i=r.substring(r.lastIndexOf(":")+1);if(""===t||""===s||""===i)throw new Error(`Invalid bootnode format, expected: <name>@<ip>:<port>, got: "${e}"`);const n=Number.parseInt(i);if(!Ae(n))throw new Error(`Invalid port number: "${i}"`);return new zs(t,s,n)}constructor(e,t,r){super(),this.name=e,this.ip=t,this.port=r}}class Ws extends q{bootnodes;id;genesisHeader;genesisState;static fromJson=vs.object({bootnodes:vs.optional(vs.array(vs.fromString(zs.fromString))),id:"string",genesis_header:ws.bytesBlobNoPrefix,genesis_state:vs.map(ws.bytesNNoPrefix(31),ws.bytesBlobNoPrefix)},e=>Ws.create({bootnodes:e.bootnodes,id:e.id,genesisHeader:e.genesis_header,genesisState:e.genesis_state??new Map}));static create({bootnodes:e=[],id:t="",genesisHeader:r=re.empty(),genesisState:s=new Map}){return new Ws({bootnodes:e,id:t,genesisHeader:r,genesisState:s})}constructor(e){super(),this.bootnodes=e.bootnodes,this.id=e.id,this.genesisHeader=e.genesisHeader,this.genesisState=e.genesisState}}class Js{omitSealVerification;static fromJson=vs.object({omit_seal_verification:"boolean"},Js.new);static new({omit_seal_verification:e}){return new Js(e)}constructor(e){this.omitSealVerification=e}}var Ys;!function(e){e.Tiny="tiny",e.Full="full"}(Ys||(Ys={}));const Xs=vs.fromString((e,t)=>{switch(e){case Ys.Tiny:return Ys.Tiny;case Ys.Full:return Ys.Full;default:throw Error(`unknown network flavor: ${e} at ${t}`)}});class Zs{$schema;version;flavor;chainSpec;databaseBasePath;authorship;static fromJson=vs.object({$schema:"string",version:"number",flavor:Xs,chain_spec:Ws.fromJson,database_base_path:"string",authorship:Js.fromJson},Zs.new);static new({$schema:e,version:t,flavor:r,chain_spec:s,database_base_path:i,authorship:n}){if(1!==t)throw new Error("Only version=1 config is supported.");return new Zs(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.$schema=e,this.version=t,this.flavor=r,this.chainSpec=s,this.databaseBasePath=i,this.authorship=n}}const ei=e=>Ke.withView(e.name,e.sizeHint,(t,r)=>e.encode(t,r.data),t=>{const r=t.clone(),s=Kt(e.skipEncoded(r));return new Ut(s.asOpaque(),e.decode(t))},e.skip,e.View);class ti extends q{workReport;timeout;static Codec=Fe.Class(ti,{workReport:ei(es.Codec),timeout:Fe.u32.asOpaque()});static create({workReport:e,timeout:t}){return new ti(e,t)}constructor(e,t){super(),this.workReport=e,this.timeout=t}}class ri extends q{headerHash;mmr;postStateRoot;reported;static Codec=Fe.Class(ri,{headerHash:Fe.bytes(Ot).asOpaque(),mmr:Fe.object({peaks:Qe(Fe.sequenceVarLen(Fe.optional(Fe.bytes(Ot))))}),postStateRoot:Fe.bytes(Ot).asOpaque(),reported:vr(Zr.Codec,e=>e.workPackageHash)});static create({headerHash:e,mmr:t,postStateRoot:r,reported:s}){return new ri(e,t,r,s)}constructor(e,t,r,s){super(),this.headerHash=e,this.mmr=t,this.postStateRoot=r,this.reported=s}}function si(e,t){return Q(e.length===t.coresCount,`Invalid per-core array length. Expected ${t.coresCount}, got: ${e.length}`),e}const ii=e=>br(t=>Ar(e,{fixedLength:t.coresCount})),ni=()=>Qe(Fe.sequenceVarLen(Fe.bytes(Ot))).convert(e=>e.array,e=>{const t=e.map(e=>e.asOpaque());return fr.fromSortedArray(ci,t)}),oi=ni();class ai{goodSet;badSet;wonkySet;punishSet;static Codec=Fe.Class(ai,{goodSet:oi,badSet:oi,wonkySet:oi,punishSet:ni()});static create({goodSet:e,badSet:t,wonkySet:r,punishSet:s}){return new ai(e,t,r,s)}constructor(e,t,r,s){this.goodSet=e,this.badSet=t,this.wonkySet=r,this.punishSet=s}static fromSortedArrays({goodSet:e,badSet:t,wonkySet:r,punishSet:s}){return new ai(fr.fromSortedArray(ci,e),fr.fromSortedArray(ci,t),fr.fromSortedArray(ci,r),fr.fromSortedArray(ci,s))}}function ci(e,t){return e.compare(t)}class li{service;gasLimit;static Codec=Fe.Class(li,{service:Fe.u32.asOpaque(),gasLimit:Fe.u64.asOpaque()});static create({service:e,gasLimit:t}){return new li(e,t)}constructor(e,t){this.service=e,this.gasLimit=t}}class hi{manager;authManager;validatorsManager;autoAccumulateServices;static Codec=Fe.Class(hi,{manager:Fe.u32.asOpaque(),authManager:Fe.u32.asOpaque(),validatorsManager:Fe.u32.asOpaque(),autoAccumulateServices:Qe(Fe.sequenceVarLen(li.Codec))});static create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s}){return new hi(e,t,r,s)}constructor(e,t,r,s){this.manager=e,this.authManager=t,this.validatorsManager=r,this.autoAccumulateServices=s}}const ui=128;class di extends q{bandersnatch;ed25519;bls;metadata;static Codec=Fe.Class(di,{bandersnatch:Fe.bytes(_t).asOpaque(),ed25519:Fe.bytes(Et).asOpaque(),bls:Fe.bytes(Rt).asOpaque(),metadata:Fe.bytes(ui)});static create({ed25519:e,bandersnatch:t,bls:r,metadata:s}){return new di(t,e,r,s)}constructor(e,t,r,s){super(),this.bandersnatch=e,this.ed25519=t,this.bls=r,this.metadata=s}}var fi;!function(e){e[e.Tickets=0]="Tickets",e[e.Keys=1]="Keys"}(fi||(fi={}));const gi=Fe.bytes(_t).asOpaque();class pi extends q{kind;keys;tickets;static Codec=br(e=>Fe.custom({name:"SafroleSealingKeys",sizeHint:{bytes:1+Ot*e.epochLength,isExact:!1}},(e,t)=>{e.varU32(Ie(t.kind)),t.kind===fi.Keys?e.sequenceFixLen(gi,t.keys):e.sequenceFixLen(os.Codec,t.tickets)},t=>{const r=e.epochLength,s=t.varU32();if(s===fi.Keys){const s=t.sequenceFixLen(gi,r);return pi.keys(Pr(s,e))}if(s===fi.Tickets){const s=t.sequenceFixLen(os.Codec,r);return pi.tickets(Pr(s,e))}throw new Error(`Unexpected safrole sealing keys kind: ${s}`)},t=>{const r=t.decoder.varU32();if(r!==fi.Keys){if(r!==fi.Tickets)throw new Error(`Unexpected safrole sealing keys kind: ${r}`);t.sequenceFixLen(os.Codec,e.epochLength)}else t.sequenceFixLen(gi,e.epochLength)}));static keys(e){return new pi(fi.Keys,e,void 0)}static tickets(e){return new pi(fi.Tickets,void 0,e)}constructor(e,t,r){super(),this.kind=e,this.keys=t,this.tickets=r}}class yi{nextValidatorData;epochRoot;sealingKeySeries;ticketsAccumulator;static Codec=Fe.Class(yi,{nextValidatorData:Mr(di.Codec),epochRoot:Fe.bytes(Bt).asOpaque(),sealingKeySeries:pi.Codec,ticketsAccumulator:Qe(Fe.sequenceVarLen(os.Codec)).convert(W,hr)});static create({nextValidatorData:e,epochRoot:t,sealingKeySeries:r,ticketsAccumulator:s}){return new yi(e,t,r,s)}constructor(e,t,r,s){this.nextValidatorData=e,this.epochRoot=t,this.sealingKeySeries=r,this.ticketsAccumulator=s}}class mi extends q{codeHash;balance;accumulateMinGas;onTransferMinGas;storageUtilisationBytes;storageUtilisationCount;static Codec=Fe.Class(mi,{codeHash:Fe.bytes(Ot).asOpaque(),balance:Fe.u64,accumulateMinGas:Fe.u64.convert(e=>e,Ur),onTransferMinGas:Fe.u64.convert(e=>e,Ur),storageUtilisationBytes:Fe.u64,storageUtilisationCount:Fe.u32});static create(e){return new mi(e.codeHash,e.balance,e.accumulateMinGas,e.onTransferMinGas,e.storageUtilisationBytes,e.storageUtilisationCount)}static calculateThresholdBalance(e,t){const r=Ee(we(100n),we(10n*BigInt(e)),we(1n*t));return r.overflow?we(2n**64n-1n):r.value}constructor(e,t,r,s,i,n){super(),this.codeHash=e,this.balance=t,this.accumulateMinGas=r,this.onTransferMinGas=s,this.storageUtilisationBytes=i,this.storageUtilisationCount=n}}class bi extends q{hash;blob;static Codec=Fe.Class(bi,{hash:Fe.bytes(Ot).asOpaque(),blob:Fe.blob});static create({hash:e,blob:t}){return new bi(e,t)}constructor(e,t){super(),this.hash=e,this.blob=t}}class Ai extends q{key;value;static Codec=Fe.Class(Ai,{key:Fe.bytes(Ot).asOpaque(),value:Fe.blob});static create({key:e,value:t}){return new Ai(e,t)}constructor(e,t){super(),this.key=e,this.value=t}}function Ii(e){const t=e;if(t.length>3)throw new Error("Lookup history items must contain 0-3 timeslots.");return t}class vi{hash;length;slots;constructor(e,t,r){this.hash=e,this.length=t,this.slots=r}static isRequested(e){return"slots"in e?0===e.slots.length:0===e.length}}var wi,Si,Ei;!function(e){e[e.Provide=0]="Provide",e[e.Remove=1]="Remove",e[e.UpdateOrAdd=2]="UpdateOrAdd"}(wi||(wi={}));class Ci{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static provide({serviceId:e,preimage:t,slot:r}){return new Ci(e,{kind:wi.Provide,preimage:t,slot:r})}static remove({serviceId:e,hash:t,length:r}){return new Ci(e,{kind:wi.Remove,hash:t,length:r})}static updateOrAdd({serviceId:e,lookupHistory:t}){return new Ci(e,{kind:wi.UpdateOrAdd,item:t})}get hash(){switch(this.action.kind){case wi.Provide:return this.action.preimage.hash;case wi.Remove:return this.action.hash;case wi.UpdateOrAdd:return this.action.item.hash}throw F(this.action)}get length(){switch(this.action.kind){case wi.Provide:return Ie(this.action.preimage.blob.length);case wi.Remove:return this.action.length;case wi.UpdateOrAdd:return this.action.item.length}throw F(this.action)}}!function(e){e[e.Update=0]="Update",e[e.Create=1]="Create"}(Si||(Si={}));class ki{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static update({serviceId:e,serviceInfo:t}){return new ki(e,{kind:Si.Update,account:t})}static create({serviceId:e,serviceInfo:t,lookupHistory:r}){return new ki(e,{kind:Si.Create,account:t,lookupHistory:r})}}!function(e){e[e.Set=0]="Set",e[e.Remove=1]="Remove"}(Ei||(Ei={}));class xi{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static set({serviceId:e,storage:t}){return new xi(e,{kind:Ei.Set,storage:t})}static remove({serviceId:e,key:t}){return new xi(e,{kind:Ei.Remove,key:t})}get key(){return this.action.kind===Ei.Remove?this.action.key:this.action.storage.key}get value(){return this.action.kind===Ei.Remove?null:this.action.storage.value}}const _i=Fe.varU32.convert(e=>Ie(e),e=>Or(e));class Bi{blocks;tickets;preImages;preImagesSize;guarantees;assurances;static Codec=Fe.Class(Bi,{blocks:Fe.u32,tickets:Fe.u32,preImages:Fe.u32,preImagesSize:Fe.u32,guarantees:Fe.u32,assurances:Fe.u32});static create({blocks:e,tickets:t,preImages:r,preImagesSize:s,guarantees:i,assurances:n}){return new Bi(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.blocks=e,this.tickets=t,this.preImages=r,this.preImagesSize=s,this.guarantees=i,this.assurances=n}static empty(){const e=Ie(0);return new Bi(e,e,e,e,e,e)}}const Ri=Fe.varU32.convert(e=>Ie(e),e=>be(e)),Oi=Fe.varU64.convert(e=>we(e),e=>Ur(e));class Ui{dataAvailabilityLoad;popularity;imports;exports;extrinsicSize;extrinsicCount;bundleSize;gasUsed;static Codec=Fe.Class(Ui,{dataAvailabilityLoad:Fe.varU32,popularity:Ri,imports:Ri,exports:Ri,extrinsicSize:Fe.varU32,extrinsicCount:Ri,bundleSize:Fe.varU32,gasUsed:Oi});static create(e){return new Ui(e.dataAvailabilityLoad,e.popularity,e.imports,e.exports,e.extrinsicSize,e.extrinsicCount,e.bundleSize,e.gasUsed)}constructor(e,t,r,s,i,n,o,a){this.dataAvailabilityLoad=e,this.popularity=t,this.imports=r,this.exports=s,this.extrinsicSize=i,this.extrinsicCount=n,this.bundleSize=o,this.gasUsed=a}static empty(){const e=Ie(0),t=be(0),r=Ur(0);return new Ui(e,t,t,t,e,t,e,r)}}class Ti{providedCount;providedSize;refinementCount;refinementGasUsed;imports;exports;extrinsicSize;extrinsicCount;accumulateCount;accumulateGasUsed;onTransfersCount;onTransfersGasUsed;static Codec=Fe.Class(Ti,{providedCount:Ri,providedSize:Fe.varU32,refinementCount:Fe.varU32,refinementGasUsed:Oi,imports:Ri,exports:Ri,extrinsicSize:Fe.varU32,extrinsicCount:Ri,accumulateCount:Fe.varU32,accumulateGasUsed:Oi,onTransfersCount:Fe.varU32,onTransfersGasUsed:Oi});static create(e){return new Ti(e.providedCount,e.providedSize,e.refinementCount,e.refinementGasUsed,e.imports,e.exports,e.extrinsicSize,e.extrinsicCount,e.accumulateCount,e.accumulateGasUsed,e.onTransfersCount,e.onTransfersGasUsed)}constructor(e,t,r,s,i,n,o,a,c,l,h,u){this.providedCount=e,this.providedSize=t,this.refinementCount=r,this.refinementGasUsed=s,this.imports=i,this.exports=n,this.extrinsicSize=o,this.extrinsicCount=a,this.accumulateCount=c,this.accumulateGasUsed=l,this.onTransfersCount=h,this.onTransfersGasUsed=u}static empty(){const e=Ie(0),t=be(0),r=Ur(0);return new Ti(t,e,e,r,t,t,e,t,e,r,e,r)}}class Ni{current;previous;cores;services;static Codec=Fe.Class(Ni,{current:Mr(Bi.Codec),previous:Mr(Bi.Codec),cores:ii(Ui.Codec),services:Fe.dictionary(_i,Ti.Codec,{sortKeys:(e,t)=>e-t})});static create(e){return new Ni(e.current,e.previous,e.cores,e.services)}constructor(e,t,r,s){this.current=e,this.previous=t,this.cores=r,this.services=s}}var Di,Mi;(Mi=Di||(Di={}))[Mi.DuplicateService=0]="DuplicateService",Mi[Mi.NoService=1]="NoService",Mi[Mi.PreimageExists=2]="PreimageExists";class Pi extends q{serviceId;data;constructor(e,t){super(),this.serviceId=e,this.data=t}getInfo(){return this.data.info}getStorage(e){return this.data.storage.get(e)?.value??null}hasPreimage(e){return this.data.preimages.has(e)}getPreimage(e){return this.data.preimages.get(e)?.blob??null}getLookupHistory(e,t){const r=this.data.lookupHistory.get(e);return void 0===r?null:r.find(e=>e.length===t)?.slots??null}getEntries(){return{storageKeys:Array.from(this.data.storage.keys()),preimages:Array.from(this.data.preimages.keys()),lookupHistory:Array.from(this.data.lookupHistory.entries()).map(([e,t])=>({hash:e,length:t[0].length}))}}static copyFrom(e,t){const r=e.getInfo(),s=cr.new(),i=cr.new(),n=cr.new();for(const r of t.preimages){const t=e.getPreimage(r);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected preimage: ${r}`);s.set(r,bi.create({hash:r,blob:t}))}for(const{hash:r,length:s}of t.lookupHistory){const t=e.getLookupHistory(r,s);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected lookupHistory: ${r}, ${s}`);const i=n.get(r)??[];i.push(new vi(r,s,t)),n.set(r,i)}for(const r of t.storageKeys){const t=e.getStorage(r);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected storage: ${r}`);i.set(r,Ai.create({key:r,value:t}))}return new Pi(e.serviceId,{info:r,preimages:s,storage:i,lookupHistory:n})}}class Li extends q{static create(e){return new Li(e)}static partial(e,t){const r=Li.empty(e);return Object.assign(r,t),r}static copyFrom(e,t){const r=new Map;for(const[s,i]of t.entries()){const t=e.getService(s);if(null===t)throw new Error(`Expected service ${s} to be part of the state!`);const n=Pi.copyFrom(t,i);r.set(s,n)}return Li.create({availabilityAssignment:e.availabilityAssignment,accumulationQueue:e.accumulationQueue,designatedValidatorData:e.designatedValidatorData,nextValidatorData:e.nextValidatorData,currentValidatorData:e.currentValidatorData,previousValidatorData:e.previousValidatorData,disputesRecords:e.disputesRecords,timeslot:e.timeslot,entropy:e.entropy,authPools:e.authPools,authQueues:e.authQueues,recentBlocks:e.recentBlocks,statistics:e.statistics,recentlyAccumulated:e.recentlyAccumulated,ticketsAccumulator:e.ticketsAccumulator,sealingKeySeries:e.sealingKeySeries,epochRoot:e.epochRoot,privilegedServices:e.privilegedServices,services:r})}intoServicesData(){const e=new Map;for(const[t,{data:r}]of this.services)e.set(t,{storageKeys:Array.from(r.storage.keys()),preimages:Array.from(r.preimages.keys()),lookupHistory:Array.from(r.lookupHistory).flatMap(([e,t])=>t.map(t=>({hash:e,length:t.length})))});return e}applyUpdate(e){const{servicesRemoved:t,servicesUpdates:r,preimages:s,storage:i,...n}=e;let o;return Object.assign(this,n),o=this.updateServices(r),o.isError?o:(o=this.updatePreimages(s),o.isError?o:(o=this.updateStorage(i),o.isError?o:(this.removeServices(t),ee.ok(J))))}removeServices(e){for(const t of e??[])Q(this.services.has(t),`Attempting to remove non-existing service: ${t}`),this.services.delete(t)}updateStorage(e){for(const{serviceId:t,action:r}of e??[]){const{kind:e}=r,s=this.services.get(t);if(void 0===s)return ee.error(Di.NoService,`Attempting to update storage of non-existing service: ${t}`);e===Ei.Set?s.data.storage.set(r.storage.key,r.storage):e===Ei.Remove?(Q(s.data.storage.has(r.key),`Attempting to remove non-existing storage item at ${t}: ${r.key}`),s.data.storage.delete(r.key)):F(e)}return ee.ok(J)}updatePreimages(e){for(const{serviceId:t,action:r}of e??[]){const e=this.services.get(t);if(void 0===e)return ee.error(Di.NoService,`Attempting to update preimage of non-existing service: ${t}`);const{kind:s}=r;if(s===wi.Provide){const{preimage:s,slot:i}=r;if(e.data.preimages.has(s.hash))return ee.error(Di.PreimageExists,`Overwriting existing preimage at ${t}: ${s}`);if(e.data.preimages.set(s.hash,s),null!==i){const t=e.data.lookupHistory.get(s.hash),r=Ie(s.blob.length),n=new vi(s.hash,r,Ii([i]));if(void 0===t)e.data.lookupHistory.set(s.hash,[n]);else{const e=t.map(e=>e.length).indexOf(r);t.splice(e,-1===e?0:1,n)}}}else if(s===wi.Remove){const{hash:t,length:s}=r;e.data.preimages.delete(t);const i=e.data.lookupHistory.get(t)??[],n=i.map(e=>e.length).indexOf(s);-1!==n&&i.splice(n,1)}else if(s===wi.UpdateOrAdd){const{item:t}=r,s=e.data.lookupHistory.get(t.hash)??[],i=s.map(e=>e.length).indexOf(t.length),n=-1===i?0:1;s.splice(i,n,t),e.data.lookupHistory.set(t.hash,s)}else F(s)}return ee.ok(J)}updateServices(e){for(const{serviceId:t,action:r}of e??[]){const{kind:e,account:s}=r;if(e===Si.Create){const{lookupHistory:e}=r;if(this.services.has(t))return ee.error(Di.DuplicateService,`${t} already exists!`);this.services.set(t,new Pi(t,{info:s,preimages:cr.new(),storage:cr.new(),lookupHistory:cr.fromEntries(null===e?[]:[[e.hash,[e]]])}))}else if(e===Si.Update){const e=this.services.get(t);if(void 0===e)return ee.error(Di.NoService,`Cannot update ${t} because it does not exist.`);e.data.info=s}else F(e)}return ee.ok(J)}availabilityAssignment;designatedValidatorData;nextValidatorData;currentValidatorData;previousValidatorData;disputesRecords;timeslot;entropy;authPools;authQueues;recentBlocks;statistics;accumulationQueue;recentlyAccumulated;ticketsAccumulator;sealingKeySeries;epochRoot;privilegedServices;services;recentServiceIds(){return Array.from(this.services.keys())}getService(e){return this.services.get(e)??null}constructor(e){super(),this.availabilityAssignment=e.availabilityAssignment,this.designatedValidatorData=e.designatedValidatorData,this.nextValidatorData=e.nextValidatorData,this.currentValidatorData=e.currentValidatorData,this.previousValidatorData=e.previousValidatorData,this.disputesRecords=e.disputesRecords,this.timeslot=e.timeslot,this.entropy=e.entropy,this.authPools=e.authPools,this.authQueues=e.authQueues,this.recentBlocks=e.recentBlocks,this.statistics=e.statistics,this.accumulationQueue=e.accumulationQueue,this.recentlyAccumulated=e.recentlyAccumulated,this.ticketsAccumulator=e.ticketsAccumulator,this.sealingKeySeries=e.sealingKeySeries,this.epochRoot=e.epochRoot,this.privilegedServices=e.privilegedServices,this.services=e.services}static empty(e){return new Li({availabilityAssignment:si(Array.from({length:e.coresCount},()=>null),e),designatedValidatorData:Dr(Array.from({length:e.validatorsCount},()=>di.create({bandersnatch:se.zero(_t).asOpaque(),bls:se.zero(Rt).asOpaque(),ed25519:se.zero(Et).asOpaque(),metadata:se.zero(ui).asOpaque()})),e),nextValidatorData:Dr(Array.from({length:e.validatorsCount},()=>di.create({bandersnatch:se.zero(_t).asOpaque(),bls:se.zero(Rt).asOpaque(),ed25519:se.zero(Et).asOpaque(),metadata:se.zero(ui).asOpaque()})),e),currentValidatorData:Dr(Array.from({length:e.validatorsCount},()=>di.create({bandersnatch:se.zero(_t).asOpaque(),bls:se.zero(Rt).asOpaque(),ed25519:se.zero(Et).asOpaque(),metadata:se.zero(ui).asOpaque()})),e),previousValidatorData:Dr(Array.from({length:e.validatorsCount},()=>di.create({bandersnatch:se.zero(_t).asOpaque(),bls:se.zero(Rt).asOpaque(),ed25519:se.zero(Et).asOpaque(),metadata:se.zero(ui).asOpaque()})),e),disputesRecords:ai.create({goodSet:fr.fromSortedArray(ci,[]),badSet:fr.fromSortedArray(ci,[]),wonkySet:fr.fromSortedArray(ci,[]),punishSet:fr.fromSortedArray(ci,[])}),timeslot:Br(0),entropy:ur.fill(()=>se.zero(Ot).asOpaque(),4),authPools:si(Array.from({length:e.coresCount},()=>[]),e),authQueues:si(Array.from({length:e.coresCount},()=>ur.fill(()=>se.zero(Ot).asOpaque(),80)),e),recentBlocks:[],statistics:Ni.create({current:Dr(Array.from({length:e.validatorsCount},()=>Bi.empty()),e),previous:Dr(Array.from({length:e.validatorsCount},()=>Bi.empty()),e),cores:si(Array.from({length:e.coresCount},()=>Ui.empty()),e),services:new Map}),accumulationQueue:Pr(Array.from({length:e.epochLength},()=>[]),e),recentlyAccumulated:Pr(Array.from({length:e.epochLength},()=>lr.new()),e),ticketsAccumulator:[],sealingKeySeries:pi.keys(Pr(Array.from({length:e.epochLength},()=>se.zero(_t).asOpaque()),e)),epochRoot:se.zero(Bt).asOpaque(),privilegedServices:hi.create({manager:Or(0),authManager:Or(0),validatorsManager:Or(0),autoAccumulateServices:[]}),services:new Map})}}const Hi=Fe.object({storageKeys:Fe.sequenceVarLen(Fe.bytes(Ot).asOpaque()),preimages:Fe.sequenceVarLen(Fe.bytes(Ot).asOpaque()),lookupHistory:Fe.sequenceVarLen(Fe.object({hash:Fe.bytes(Ot).asOpaque(),length:Fe.u32}))});Fe.dictionary(Fe.u32.asOpaque(),Hi,{sortKeys:(e,t)=>e-t});class Ki extends q{report;dependencies;static Codec=Fe.Class(Ki,{report:es.Codec,dependencies:Ar(Fe.bytes(Ot).asOpaque(),{typicalLength:4,maxLength:8,minLength:0})});static create({report:e,dependencies:t}){return new Ki(e,t)}constructor(e,t){super(),this.report=e,this.dependencies=t}}var Qi,Vi,Fi;!function(e){e[e.Unused=0]="Unused",e[e.Alpha=1]="Alpha",e[e.Phi=2]="Phi",e[e.Beta=3]="Beta",e[e.Gamma=4]="Gamma",e[e.Psi=5]="Psi",e[e.Eta=6]="Eta",e[e.Iota=7]="Iota",e[e.Kappa=8]="Kappa",e[e.Lambda=9]="Lambda",e[e.Rho=10]="Rho",e[e.Tau=11]="Tau",e[e.Chi=12]="Chi",e[e.Pi=13]="Pi",e[e.Theta=14]="Theta",e[e.Xi=15]="Xi",e[e.Delta=255]="Delta"}(Qi||(Qi={})),function(e){function t(e,t){const r=se.zero(Ot);let s=0;for(const i of Ce(e))r.raw[s]=i,r.raw[s+1]=t.raw[s/2],s+=2;const i=s/2;return r.raw.set(t.raw.subarray(i,Ot-i),s),r.asOpaque()}e.index=function(e){const t=se.zero(Ot);return t.raw[0]=e,t.asOpaque()},e.serviceInfo=function(e){const t=se.zero(Ot);t.raw[0]=Qi.Delta;let r=1;for(const s of Ce(e))t.raw[r]=s,r+=2;return t.asOpaque()},e.serviceStorage=function(e,r){const s=se.zero(Ot);return s.raw.set(Ce(Ie(2**32-1)),0),s.raw.set(r.raw.subarray(0,28),4),t(e,s)},e.servicePreimage=function(e,r){const s=se.zero(Ot);return s.raw.set(Ce(Ie(2**32-2)),0),s.raw.set(r.raw.subarray(1,29),4),t(e,s)},e.serviceLookupHistory=function(e,r,s){const i=Kt(r),n=se.zero(Ot);return n.raw.set(Ce(s),0),n.raw.set(i.raw.subarray(2,30),4),t(e,n)},e.serviceNested=t}(Vi||(Vi={})),function(e){e.authPools={key:Vi.index(Qi.Alpha),Codec:ii(Ar(Fe.bytes(Ot).asOpaque(),{minLength:0,maxLength:8,typicalLength:8})),extract:e=>e.authPools},e.authQueues={key:Vi.index(Qi.Phi),Codec:ii(Ir(Fe.bytes(Ot).asOpaque(),80)),extract:e=>e.authQueues},e.recentBlocks={key:Vi.index(Qi.Beta),Codec:Ar(ri.Codec,{minLength:0,maxLength:8,typicalLength:8}),extract:e=>e.recentBlocks},e.safrole={key:Vi.index(Qi.Gamma),Codec:yi.Codec,extract:e=>yi.create({nextValidatorData:e.nextValidatorData,epochRoot:e.epochRoot,sealingKeySeries:e.sealingKeySeries,ticketsAccumulator:e.ticketsAccumulator})},e.disputesRecords={key:Vi.index(Qi.Psi),Codec:ai.Codec,extract:e=>e.disputesRecords},e.entropy={key:Vi.index(Qi.Eta),Codec:Ir(Fe.bytes(Ot).asOpaque(),4),extract:e=>e.entropy},e.designatedValidators={key:Vi.index(Qi.Iota),Codec:Mr(di.Codec),extract:e=>e.designatedValidatorData},e.currentValidators={key:Vi.index(Qi.Kappa),Codec:Mr(di.Codec),extract:e=>e.currentValidatorData},e.previousValidators={key:Vi.index(Qi.Lambda),Codec:Mr(di.Codec),extract:e=>e.previousValidatorData},e.availabilityAssignment={key:Vi.index(Qi.Rho),Codec:ii(Fe.optional(ti.Codec)),extract:e=>e.availabilityAssignment},e.timeslot={key:Vi.index(Qi.Tau),Codec:Fe.u32.asOpaque(),extract:e=>e.timeslot},e.privilegedServices={key:Vi.index(Qi.Chi),Codec:hi.Codec,extract:e=>e.privilegedServices},e.statistics={key:Vi.index(Qi.Pi),Codec:Ni.Codec,extract:e=>e.statistics},e.accumulationQueue={key:Vi.index(Qi.Theta),Codec:Lr(Qe(Fe.sequenceVarLen(Ki.Codec))),extract:e=>e.accumulationQueue},e.recentlyAccumulated={key:Vi.index(Qi.Xi),Codec:Lr(Fe.sequenceVarLen(Fe.bytes(Ot).asOpaque()).convert(e=>Array.from(e),e=>lr.from(e))),extract:e=>e.recentlyAccumulated},e.serviceData=e=>({key:Vi.serviceInfo(e),Codec:mi.Codec}),e.serviceStorage=(e,t)=>({key:Vi.serviceStorage(e,t),Codec:$i}),e.servicePreimages=(e,t)=>({key:Vi.servicePreimage(e,t),Codec:$i}),e.serviceLookupHistory=(e,t,r)=>({key:Vi.serviceLookupHistory(e,t,r),Codec:Qe(Fe.sequenceVarLen(Fe.u32))})}(Fi||(Fi={}));const $i=Ke.new("Dump",{bytes:64,isExact:!1},(e,t)=>e.bytes(se.fromBlob(t.raw,t.raw.length)),e=>re.blobFrom(e.bytes(e.source.length-e.bytesRead()).raw),e=>e.bytes(e.decoder.source.length-e.decoder.bytesRead()));var ji;!function(e){e[e.Insert=0]="Insert",e[e.Remove=1]="Remove"}(ji||(ji={}));const Gi=re.empty();class qi{spec;backend;_recentServiceIds;static fromStateEntries(e,t,r=[]){return new qi(e,t,r)}static new(e,t,r=[]){return new qi(e,t,r)}constructor(e,t,r){this.spec=e,this.backend=t,this._recentServiceIds=r}updateBackend(e){this.backend=e}recentServiceIds(){return this._recentServiceIds}getService(e){const t=this.retrieveOptional(Fi.serviceData(e));return void 0===t?null:(this._recentServiceIds.includes(e)||this._recentServiceIds.push(e),new zi(e,t,e=>this.retrieveOptional(e)))}retrieve({key:e,Codec:t},r){const s=this.backend.get(e);if(null===s)throw new Error(`Required state entry for ${r} is missing!. Accessing key: ${e}`);return _e.decodeObject(t,s,this.spec)}retrieveOptional({key:e,Codec:t}){const r=this.backend.get(e);if(null!==r)return _e.decodeObject(t,r,this.spec)}get availabilityAssignment(){return this.retrieve(Fi.availabilityAssignment,"availabilityAssignment")}get designatedValidatorData(){return this.retrieve(Fi.designatedValidators,"designatedValidatorData")}get nextValidatorData(){return this.retrieve(Fi.safrole,"safroleData.nextValidatorData").nextValidatorData}get currentValidatorData(){return this.retrieve(Fi.currentValidators,"currentValidators")}get previousValidatorData(){return this.retrieve(Fi.previousValidators,"previousValidators")}get disputesRecords(){return this.retrieve(Fi.disputesRecords,"disputesRecords")}get timeslot(){return this.retrieve(Fi.timeslot,"timeslot")}get entropy(){return this.retrieve(Fi.entropy,"entropy")}get authPools(){return this.retrieve(Fi.authPools,"authPools")}get authQueues(){return this.retrieve(Fi.authQueues,"authQueues")}get recentBlocks(){return this.retrieve(Fi.recentBlocks,"recentBlocks")}get statistics(){return this.retrieve(Fi.statistics,"statistics")}get accumulationQueue(){return this.retrieve(Fi.accumulationQueue,"accumulationQueue")}get recentlyAccumulated(){return this.retrieve(Fi.recentlyAccumulated,"recentlyAccumulated")}get ticketsAccumulator(){return this.retrieve(Fi.safrole,"safroleData.ticketsAccumulator").ticketsAccumulator}get sealingKeySeries(){return this.retrieve(Fi.safrole,"safrole.sealingKeySeries").sealingKeySeries}get epochRoot(){return this.retrieve(Fi.safrole,"safrole.epochRoot").epochRoot}get privilegedServices(){return this.retrieve(Fi.privilegedServices,"privilegedServices")}}class zi{serviceId;accountInfo;retrieveOptional;constructor(e,t,r){this.serviceId=e,this.accountInfo=t,this.retrieveOptional=r}getInfo(){return this.accountInfo}getStorage(e){return this.retrieveOptional(Fi.serviceStorage(this.serviceId,e))??null}hasPreimage(e){return void 0!==this.retrieveOptional(Fi.servicePreimages(this.serviceId,e))}getPreimage(e){return this.retrieveOptional(Fi.servicePreimages(this.serviceId,e))??null}getLookupHistory(e,t){const r=this.retrieveOptional(Fi.serviceLookupHistory(this.serviceId,e,t));return void 0===r?null:Ii(r.map(Br))}}const Wi=31;var Ji;!function(e){e[e.Branch=0]="Branch",e[e.Leaf=1]="Leaf",e[e.EmbedLeaf=2]="EmbedLeaf"}(Ji||(Ji={}));class Yi{raw;constructor(e=new Uint8Array(64)){this.raw=e}getNodeType(){return 128&this.raw[0]?192&~this.raw[0]?Ji.EmbedLeaf:Ji.Leaf:Ji.Branch}asBranchNode(){return Q(this.getNodeType()===Ji.Branch),new Xi(this)}asLeafNode(){return Q(this.getNodeType()!==Ji.Branch),new Zi(this)}toString(){return re.blobFrom(this.raw).toString()}}class Xi{node;constructor(e){this.node=e}static fromSubNodes(e,t){const r=new Yi;return r.raw.set(e.raw,0),r.raw.set(t.raw,Ot),r.raw[0]&=127,new Xi(r)}getLeft(){return se.fromBlob(this.node.raw.subarray(0,Ot),Ot).asOpaque()}getRight(){return se.fromBlob(this.node.raw.subarray(Ot),Ot).asOpaque()}}class Zi{node;constructor(e){this.node=e}static fromValue(e,t,r){const s=new Yi;return t.length<=Ot?(s.raw[0]=128|t.length,s.raw.set(e.raw.subarray(0,Wi),1),s.raw.set(t.raw,32)):(s.raw[0]=192,s.raw.set(e.raw.subarray(0,Wi),1),s.raw.set(r().raw,32)),new Zi(s)}getKey(){return se.fromBlob(this.node.raw.subarray(1,32),Wi).asOpaque()}hasEmbeddedValue(){return this.node.getNodeType()===Ji.EmbedLeaf}getValueLength(){return 63&this.node.raw[0]}getValue(){const e=this.getValueLength();return re.blobFrom(this.node.raw.subarray(Ot,Ot+e))}getValueHash(){return se.fromBlob(this.node.raw.subarray(Ot),Ot).asOpaque()}toString(){return`LeafNode {\n key: ${this.getKey()},\n valueHash: ${this.getValueHash()}\n}`}}class en{hasher;nodes=cr.new();constructor(e){this.hasher=e}get(e){return en.withHashCompat(e,e=>this.nodes.get(e)??null)}hashNode(e){return this.hasher.hashConcat(e.raw)}*leaves(){for(const e of this.nodes.values())e.getNodeType()!==Ji.Branch&&(yield e.asLeafNode())}static withHashCompat(e,t){const r=e.raw[0];e.raw[0]&=127;const s=t(e);return e.raw[0]=r,s}}class tn extends en{remove(e){return en.withHashCompat(e,e=>{this.nodes.delete(e)})}insert(e,t){const r=t??this.hashNode(e);return en.withHashCompat(r,t=>{this.nodes.set(t,e)}),r}}class rn{nodes;root;static empty(e){return new rn(new tn(e))}static computeStateRoot(e,t){return rn.fromLeaves(e,t).getRootHash()}static fromLeaves(e,t){let r=null;const s=new tn(e);for(const e of t)r=sn(r,s,e);return new rn(s,r)}constructor(e,t=null){this.nodes=e,this.root=t}set(e,t,r){const s=Zi.fromValue(e,t,()=>r??this.nodes.hasher.hashConcat(t.raw).asOpaque());return this.root=sn(this.root,this.nodes,s),s}remove(e){throw new Error("Removing from the trie not implemented yet.")}getRootNode(){return this.root}getRootHash(){return null===this.root?se.zero(Ot).asOpaque():this.nodes.hashNode(this.root)}toString(){return an(this.root,this.nodes)}}function sn(e,t,r){if(null===e)return t.insert(r.node),r.node;const s=function(e,t,r){const s=new nn;let i=e,n=t.hashNode(e);for(;;){if(i.getNodeType()!==Ji.Branch){const e=i.asLeafNode();return s.leafToReplace=[e,n],s}const e=i.asBranchNode(),o=on(r,s.bitIndex),a=o?e.getRight():e.getLeft();s.branchingHistory.push([e,n,o]);const c=t.get(a);if(null===c){if(a.isEqualTo(se.zero(Ot)))return s;throw new Error(`Missing trie node '${a}' with key prefix: ${r}[0..${s.bitIndex}]`)}i=c,n=a,s.bitIndex+=1}}(e,t,r.getKey()),i=void 0!==s.leafToReplace?function(e,t,r,s){const i=s.getKey();let[n,o]=r;const a=n.getKey(),c=t.insert(s.node);if(a.isEqualTo(i))return n.getValueHash().isEqualTo(s.getValueHash())||t.remove(o),[s.node,c];const l=[];let h=on(i,e.bitIndex);for(;e.bitIndex<248;){h=on(i,e.bitIndex);const t=on(a,e.bitIndex);if(h!==t)break;l.push(t),e.bitIndex+=1}const u=se.zero(Ot).asOpaque();(()=>{const t=e.branchingHistory.length;return t>0&&!1===e.branchingHistory[t-1][2]})()&&!h&&(o=t.hashNode(n.node));let d=h?Xi.fromSubNodes(o,c):Xi.fromSubNodes(c,o),f=t.insert(d.node),g=l.pop();for(;void 0!==g;)d=g?Xi.fromSubNodes(u,f):Xi.fromSubNodes(f,u),f=t.insert(d.node),g=l.pop();return[d.node,f]}(s,t,s.leafToReplace,r):[r.node,t.insert(r.node)];let n=s.branchingHistory.pop(),[o,a]=i;for(;void 0!==n;){const[e,r,i]=n;t.remove(r);const c=i?Xi.fromSubNodes(e.getLeft(),a):Xi.fromSubNodes(a,e.getRight());a=t.insert(c.node),o=c.node,n=s.branchingHistory.pop()}return o}class nn{branchingHistory=[];bitIndex=0;leafToReplace}function on(e,t){Q(t<248);const r=t>>>3,s=128>>>t-(r<<3);return 0!==(e.raw[r]&s)}function an(e,t){if(null===e)return"<empty tree>";if(e.getNodeType()===Ji.Branch){const r=e.asBranchNode(),s=r.getLeft(),i=r.getRight(),n=e=>e.split("\n").map(e=>`\t\t${e}`).join("\n"),o=an(t.get(s),t),a=an(t.get(i),t);return`<branch>\n\t-- ${s}: ${n(o)}\n\t-- ${i}: ${n(a)}\n`}const r=e.asLeafNode(),s=r.getValueLength(),i=s>0?`'${r.getValue()}'(len:${s})`:`'<hash>${r.getValueHash()}'`;return`\nLeaf('${r.getKey().toString()}',${i})`}const cn={hashConcat:(e,t=[])=>Ht([e,...t])};class ln{entries;static serializeInMemory(e,t){return new ln({full:!0,data:hn(e,t)})}static fromDictionaryUnsafe(e){return new ln({full:!0,data:e})}static fromTruncatedDictionaryUnsafe(e){return new ln({full:!1,data:e})}trieCache=null;constructor(e){this.entries=e}getTrie(){if(null===this.trieCache){const e=rn.empty(cn);for(const[t,r]of this.entries.data)e.set(t.asOpaque(),r);this.trieCache=e}return this.trieCache}get(e){return this.entries.data.get(e)??null}applyUpdate(e){this.trieCache=null;for(const[t,r,s]of e)t===ji.Insert?this.entries.data.set(r,s):t===ji.Remove?this.entries.data.delete(r):F(t)}getRootHash(){return this.getTrie().getRootHash().asOpaque()}}function hn(e,t){const r=cr.new();function s(s){r.set(s.key,Ne.encodeObject(s.Codec,s.extract(t),e))}s(Fi.authPools),s(Fi.authQueues),s(Fi.recentBlocks),s(Fi.safrole),s(Fi.disputesRecords),s(Fi.entropy),s(Fi.designatedValidators),s(Fi.currentValidators),s(Fi.previousValidators),s(Fi.availabilityAssignment),s(Fi.timeslot),s(Fi.privilegedServices),s(Fi.statistics),s(Fi.accumulationQueue),s(Fi.recentlyAccumulated);for(const[e,s]of t.services.entries()){const{key:t,Codec:i}=Fi.serviceData(e);r.set(t,Ne.encodeObject(i,s.getInfo()));for(const t of s.data.preimages.values()){const{key:s,Codec:i}=Fi.servicePreimages(e,t.hash);r.set(s,Ne.encodeObject(i,t.blob))}for(const t of s.data.storage.values()){const{key:s,Codec:i}=Fi.serviceStorage(e,t.key);r.set(s,Ne.encodeObject(i,t.value))}for(const t of s.data.lookupHistory.values())for(const s of t){const{key:t,Codec:i}=Fi.serviceLookupHistory(e,s.hash,s.length);r.set(t,Ne.encodeObject(i,s.slots.slice()))}}return r}const un=Fe.object({hash:Fe.bytes(Ot).asOpaque(),length:Fe.u32,slots:Qe(Fe.sequenceVarLen(Fe.u32.asOpaque())).convert(W,Ii)},"LookupHistoryItem",({hash:e,length:t,slots:r})=>new vi(e,t,r)),dn=Fe.object({key:Fe.bytes(Ot).asOpaque(),data:Fe.sequenceVarLen(un)}),fn=Fe.sequenceVarLen(dn).convert(e=>{const t=[];for(const[r,s]of e)t.push({key:r,data:s});return t},e=>{const t=cr.new();for(const{key:r,data:s}of e){const e=t.get(r)??[];e.push(...s),t.set(r,e)}return t});class gn extends Pi{static Codec=Fe.Class(gn,{serviceId:Fe.u32.asOpaque(),data:Fe.object({info:mi.Codec,preimages:vr(bi.Codec,e=>e.hash),lookupHistory:fn,storage:vr(Ai.Codec,e=>e.key)})});constructor(e,t){super(e,t)}static create({serviceId:e,data:t}){return new gn(e,t)}}var pn,yn,mn;Fe.Class(Li,{authPools:Fi.authPools.Codec,authQueues:Fi.authQueues.Codec,recentBlocks:Fi.recentBlocks.Codec,nextValidatorData:Mr(di.Codec),epochRoot:Fe.bytes(Bt).asOpaque(),sealingKeySeries:pi.Codec,ticketsAccumulator:Qe(Fe.sequenceVarLen(os.Codec)).convert(e=>e,hr),disputesRecords:Fi.disputesRecords.Codec,entropy:Fi.entropy.Codec,designatedValidatorData:Fi.designatedValidators.Codec,currentValidatorData:Fi.currentValidators.Codec,previousValidatorData:Fi.previousValidators.Codec,availabilityAssignment:Fi.availabilityAssignment.Codec,timeslot:Fi.timeslot.Codec,privilegedServices:Fi.privilegedServices.Codec,statistics:Fi.statistics.Codec,accumulationQueue:Fi.accumulationQueue.Codec,recentlyAccumulated:Fi.recentlyAccumulated.Codec,services:Fe.dictionary(Fe.u32.asOpaque(),gn.Codec,{sortKeys:(e,t)=>e-t})}),function(e){e[e.Conflict=0]="Conflict",e[e.Commit=1]="Commit"}(pn||(pn={}));class bn{dict;static fromEntries(e){const t=Array.from(e).map(([e,t])=>{const r=se.zero(Ot).asOpaque();return r.raw.set(e.raw.subarray(0,Wi)),[r,t]});return new bn(cr.fromEntries(t))}truncatedKey=se.zero(Ot).asOpaque();constructor(e){this.dict=e}get size(){return this.dict.size}get(e){return this.truncatedKey.raw.set(e.raw.subarray(0,Wi)),this.dict.get(this.truncatedKey)}has(e){return this.truncatedKey.raw.set(e.raw.subarray(0,Wi)),this.dict.has(this.truncatedKey)}set(e,t){const r=se.zero(Ot);r.raw.set(e.raw.subarray(0,Wi)),this.dict.set(r.asOpaque(),t)}delete(e){this.truncatedKey.raw.set(e.raw.subarray(0,Wi)),this.dict.delete(this.truncatedKey)}values(){return this.dict.values()}[Symbol.iterator](){return this.dict[Symbol.iterator]()}}!function(e){e[e.InvalidLeafData=0]="InvalidLeafData"}(yn||(yn={}));class An{leaves;db;static fromLeavesBlob(e,t){if(e.length%64!=0)return ee.error(yn.InvalidLeafData,`${e.length} is not a multiply of 64: ${e}`);const r=[];for(const t of e.chunks(64)){const e=new Yi(t.raw);if(e.getNodeType()===Ji.Branch)return ee.error(yn.InvalidLeafData,`Branch node detected: ${t}`);r.push(e.asLeafNode())}return ee.ok(new An(r,t))}lookup;constructor(e,t){this.leaves=e,this.db=t,this.lookup=bn.fromEntries(e.map(e=>[e.getKey().asOpaque(),e.hasEmbeddedValue()?{kind:mn.EmbeddedValue,value:e.getValue()}:{kind:mn.DbKey,key:e.getValueHash().raw}]))}get(e){const t=this.lookup.get(e);return void 0===t?null:t.kind===mn.EmbeddedValue?t.value:t.kind===mn.DbKey?re.blobFrom(this.db.get(t.key)):void F(t)}getStateRoot(){return rn.computeStateRoot(cn,this.leaves).asOpaque()}}!function(e){e[e.EmbeddedValue=0]="EmbeddedValue",e[e.DbKey=1]="DbKey"}(mn||(mn={}));const In="best hash and posterior state root";class vn{chainSpec;root;extrinsics;headers;postStateRoots;constructor(e,t){this.chainSpec=e,this.root=t,this.extrinsics=this.root.subDb("extrinsics"),this.headers=this.root.subDb("headers"),this.postStateRoots=this.root.subDb("postStateRoots")}async setPostStateRoot(e,t){await this.postStateRoots.put(e.raw,t.raw)}getPostStateRoot(e){const t=this.postStateRoots.get(e.raw);return void 0===t?null:se.fromBlob(t,Ot).asOpaque()}async insertBlock(e){const t=e.data.header.view().encoded(),r=e.data.extrinsic.view().encoded();await this.root.db.transaction(()=>{this.headers.put(e.hash.raw,t.raw),this.extrinsics.put(e.hash.raw,r.raw)})}async setBestHeaderHash(e){await this.root.db.put(In,e.raw)}getBestHeaderHash(){const e=this.root.db.get(In);return void 0===e?se.zero(Ot).asOpaque():se.fromBlob(e,Ot).asOpaque()}getHeader(e){const t=this.headers.get(e.raw);return void 0===t?null:_e.decodeObject(us.Codec.View,t,this.chainSpec)}getExtrinsic(e){const t=this.extrinsics.get(e.raw);return void 0===t?null:_e.decodeObject(ys.Codec.View,t,this.chainSpec)}}const wn=(e=>{var t={};return o.d(t,e),t})({open:()=>s.open});class Sn{db;constructor(e,t=!1){this.db=wn.open(e,{compression:!0,keyEncoding:"binary",encoding:"binary",readOnly:t})}subDb(e){return this.db.openDB({name:e})}}class En{spec;root;states;values;constructor(e,t){this.spec=e,this.root=t,this.states=this.root.subDb("states"),this.values=this.root.subDb("values")}async insertState(e,t){const r=rn.empty(cn);return await this.updateAndCommit(e,r,Array.from(t.entries.data).map(e=>[ji.Insert,e[0],e[1]]))}async updateAndCommit(e,t,r){const s=[];for(const[e,i,n]of r)if(e===ji.Insert){const e=t.set(i.asOpaque(),n);e.hasEmbeddedValue()||s.push([e.getValueHash(),n])}else e===ji.Remove?t.remove(i.asOpaque()):F(e);const i=re.blobFromParts(Array.from(t.nodes.leaves()).map(e=>e.node.raw)),n=this.states.put(e.raw,i.raw),o=this.values.transaction(()=>{for(const[e,t]of s)this.values.put(e.raw,t.raw)});try{await Promise.all([o,n])}catch(e){return console.error(e),ee.error(pn.Commit)}return ee.ok(J)}async updateAndSetState(e,t,r){const s=rn.fromLeaves(cn,t.backend.leaves),i=function*(e,t){yield*function*(e,t){function r(t,r){return[ji.Insert,r.key,Ne.encodeObject(r.Codec,t,e)]}void 0!==t.authPools&&(yield r(t.authPools,Fi.authPools)),void 0!==t.authQueues&&(yield r(t.authQueues,Fi.authQueues)),void 0!==t.recentBlocks&&(yield r(t.recentBlocks,Fi.recentBlocks));const s=function(e,t,r,s){if(void 0!==e&&void 0!==t&&void 0!==r&&void 0!==s)return yi.create({nextValidatorData:e,epochRoot:t,sealingKeySeries:r,ticketsAccumulator:s});if([e,t,r,s].some(e=>void 0!==e))throw new Error("SafroleData needs to be updated all at once!")}(t.nextValidatorData,t.epochRoot,t.sealingKeySeries,t.ticketsAccumulator);void 0!==s&&(yield r(s,Fi.safrole)),void 0!==t.disputesRecords&&(yield r(t.disputesRecords,Fi.disputesRecords)),void 0!==t.entropy&&(yield r(t.entropy,Fi.entropy)),void 0!==t.designatedValidatorData&&(yield r(t.designatedValidatorData,Fi.designatedValidators)),void 0!==t.currentValidatorData&&(yield r(t.currentValidatorData,Fi.currentValidators)),void 0!==t.previousValidatorData&&(yield r(t.previousValidatorData,Fi.previousValidators)),void 0!==t.availabilityAssignment&&(yield r(t.availabilityAssignment,Fi.availabilityAssignment)),void 0!==t.timeslot&&(yield r(t.timeslot,Fi.timeslot)),void 0!==t.privilegedServices&&(yield r(t.privilegedServices,Fi.privilegedServices)),void 0!==t.statistics&&(yield r(t.statistics,Fi.statistics)),void 0!==t.accumulationQueue&&(yield r(t.accumulationQueue,Fi.accumulationQueue)),void 0!==t.recentlyAccumulated&&(yield r(t.recentlyAccumulated,Fi.recentlyAccumulated))}(e,t);const r=(t,r)=>Ne.encodeObject(t,r,e);yield*function*(e,t){for(const{action:r,serviceId:s}of e??[]){const e=Fi.serviceData(s);if(yield[ji.Insert,e.key,t(e.Codec,r.account)],r.kind===Si.Create&&null!==r.lookupHistory){const{lookupHistory:e}=r,i=Fi.serviceLookupHistory(s,e.hash,e.length);yield[ji.Insert,i.key,t(i.Codec,e.slots)]}}}(t.servicesUpdates,r),yield*function*(e,t){for(const{action:r,serviceId:s}of e??[])switch(r.kind){case wi.Provide:{const{hash:e,blob:i}=r.preimage,n=Fi.servicePreimages(s,e);if(yield[ji.Insert,n.key,i],null!==r.slot){const n=Fi.serviceLookupHistory(s,e,Ie(i.length));yield[ji.Insert,n.key,t(n.Codec,Ii([r.slot]))]}break}case wi.UpdateOrAdd:{const{hash:e,length:i,slots:n}=r.item,o=Fi.serviceLookupHistory(s,e,i);yield[ji.Insert,o.key,t(o.Codec,n)];break}case wi.Remove:{const{hash:e,length:t}=r,i=Fi.servicePreimages(s,e);yield[ji.Remove,i.key,Gi];const n=Fi.serviceLookupHistory(s,e,t);yield[ji.Remove,n.key,Gi];break}default:F(r)}}(t.preimages,r),yield*function*(e){for(const{action:t,serviceId:r}of e??[])switch(t.kind){case Ei.Set:{const e=Fi.serviceStorage(r,t.storage.key);yield[ji.Insert,e.key,t.storage.value];break}case Ei.Remove:{const e=Fi.serviceStorage(r,t.key);yield[ji.Remove,e.key,Gi];break}default:F(t)}}(t.storage),yield*function*(e){for(const t of e??[]){const e=Fi.serviceData(t);yield[ji.Remove,e.key,Gi]}}(t.servicesRemoved)}(this.spec,r);return await this.updateAndCommit(e,s,i)}async getStateRoot(e){return e.backend.getStateRoot()}getState(e){const t=this.states.get(e.raw);if(void 0===t)return null;const r=this.values,s=An.fromLeavesBlob(re.blobFrom(t),{get(e){const t=r.get(e);if(void 0===t)throw new Error(`Missing required value: ${re.blobFrom(e)} in the DB`);return t}});if(s.isError)throw new Error(`Inconsistent DB. Invalid leaf nodes for ${e}: ${Z(s)}`);return qi.new(this.spec,s.ok)}}const Cn=t(import.meta.url)("node:events"),kn=2**32,xn=m.new(void 0,"state-machine/port");class _n{port;listeners=new Cn.EventEmitter;responseListeners=new Cn.EventEmitter;messageId=0;constructor(e){this.port=e,e.on("message",e=>{try{this.dispatchPortMessage(e)}catch(t){throw xn.error(`[${this.constructor.name}] Failed to dispatch a message: ${t}: ${JSON.stringify(e)}`),t}})}async sendRequest(e,t,r,s){const[i,n]=this.prepareRequest(e,t,r);return this.postMessage(i,s),n}sendSignal(e,t,r,s){this.messageId=(this.messageId+1)%kn,this.messageId>>>=0,this.postMessage({kind:"signal",name:t,id:this.messageId,localState:e,data:r},s)}prepareRequest(e,t,r){this.messageId+=1;const s=new Promise((e,t)=>{this.responseListeners.once(Bn(this.messageId),(r,s)=>null!==r?t(r):e(s))});return[{kind:"request",id:this.messageId,name:t,localState:e,data:r},s]}respond(e,t,r){Q("request"===t.kind),this.postMessage({kind:"response",id:t.id,name:t.name,data:r,localState:e})}close(){this.cleanup("closing"),this.listeners.removeAllListeners(),this.port.close()}postMessage(e,t){try{this.port.postMessage(e,t)}catch(t){throw xn.error(`[${this.constructor.name}] Failed to post a message: ${t}: ${JSON.stringify(e)}`),t}}dispatchPortMessage(e){if(!function(e){return null!==e&&"object"==typeof e&&"kind"in e&&"string"==typeof e.kind&&"id"in e&&"number"==typeof e.id&&"name"in e&&"string"==typeof e.name&&"data"in e&&"localState"in e&&"string"==typeof e.localState}(e))throw new Error(`Invalid message: ${JSON.stringify(e)}.`);switch(e.kind){case"response":Q(-1!==this.responseListeners.eventNames().indexOf(Bn(e.id))),this.responseListeners.emit(Bn(e.id),null,e.data,e.name,e.localState,e);break;case"signal":this.listeners.emit("signal",e.name,e.data,e.localState,e);break;case"request":this.listeners.emit("request",e.name,e.data,e.localState,e);break;case"subscription":case"subscribe":throw new Error("unimplemented");default:throw new Error(`Unexpected message: "${e.kind}"`)}}cleanup(e){const t=this.responseListeners.eventNames();for(const r in t)this.responseListeners.emit(r,new Error(`port is ${e}`))}}function Bn(e){return`req:${e}`}const Rn=m.new(void 0,"state-machine"),On="channel";class Un{machine;port;constructor(e,t){this.machine=e,this.port=t,t.listeners.on("signal",(e,t,r)=>{try{this.dispatchSignal(e,t)}catch(t){throw Rn.error(`[${this.constructor.name}] Unable to dispatch signal (${e}): ${t}. ${this.stateInfo(r)}`),t}}),t.listeners.on("request",async(e,t,r,s)=>{try{await this.dispatchRequest(e,t,s)}catch(t){throw Rn.error(`[${this.constructor.name}] Unable to dispatch request (${e}): ${t}. ${this.stateInfo(r)}`),t}})}sendSignal(e,t){this.port.sendSignal(this.currentState().stateName,e,t)}async sendRequest(e,t){return this.port.sendRequest(this.currentState().stateName,e,t)}close(){this.port.close()}getState(e){return this.machine.getState(e)}currentState(){return this.machine.currentState()}async waitForState(e){return await this.machine.waitForState(e),this.transitionTo()}async doUntil(e,t){const r={isDone:!1},s=this.waitForState(e).then(()=>{r.isDone=!0});return await t(this.currentState(),this,()=>r.isDone),await s,this.transitionTo()}transition(e){const t=e(this.currentState(),this);return this.machine.transition(t.state,t.data),this.transitionTo()}stateInfo(e){return` (local state: "${this.currentState()}", remote state: "${e}")`}async dispatchRequest(e,t,r){const s=this.currentState(),i=s.requestHandlers.get(e);if(void 0===i)throw new Error(`Missing request handler for "${e}"`);const n=await i(t),o=this.currentState()!==s;if(void 0!==n.transitionTo&&this.machine.transition(n.transitionTo.state,n.transitionTo.data),!o)return this.port.respond(s.stateName,r,n.response);Rn.warn(`Ignoring obsolete response for an old request: "${e}"`)}dispatchSignal(e,t){const r=this.currentState().signalListeners.get(e);if(void 0===r)throw new Error(`Unexpected signal "${e}"`);const s=r(t);void 0!==s&&this.machine.transition(s.state,s.data)}transitionTo(){return Rn.trace(`[${this.machine.name}] transitioned to ${this.currentState()}`),this}static async createAndTransferChannel(e,t){const r=new T.MessageChannel,s=new _n(r.port2),i=e.currentState().stateName,[n,o]=s.prepareRequest(i,On,r.port1);t.postMessage(n,[r.port1]);try{await o}catch(e){Rn.error(JSON.stringify(e))}return new Un(e,s)}static async receiveChannel(e,t){if(null===t)throw new Error("This code is expected to be run in a worker.");const r=new Promise((r,s)=>{t.once("message",t=>{try{Q("request"===t.kind,"The initial message should be a request with channel."),Q(t.name===On),Q(t.data instanceof T.MessagePort);const s=new _n(t.data);s.respond(e.currentState().stateName,t,"OK"),r(s)}catch(e){s(e)}})}),s=await r;return new Un(e,s)}}const Tn=Symbol(),Nn=Symbol();class Dn{emitter=new Cn.EventEmitter;emit(e){this.emitter.emit(Tn,e)}on(e){return this.emitter.on(Tn,e),this}once(e){return this.emitter.once(Tn,e),this}onceDone(e){return this.emitter.once(Nn,e),this}markDone(){this.emitter.emit(Nn),this.emitter.removeAllListeners(Tn),this.emitter.removeAllListeners(Nn)}}class Mn{name;state;allStates;stateListeners=new Cn.EventEmitter;constructor(e,t,r){this.name=e,this.state=t,this.allStates=new Map;for(const e of r)this.allStates.set(e.stateName,e)}getState(e){const t=this.allStates.get(e);return Q(void 0!==t,`Unable to retrieve state object for ${e}.`),t}currentState(){return this.state}waitForState(e){if(this.state.stateName===e)throw new Error(`Attempting to await a state that is already active: ${e}`);return new Promise(t=>{this.stateListeners.once(e,t)})}transition(e,t){if(this.state.stateName===e)throw new Error("Attempting transition to already active state!");if(!this.state.canTransitionTo(e))throw new Error(`Unallowed transition from ${this.state} to ${e}`);const r=this.allStates.get(e);if(void 0===r)throw new Error(`Unavailable state: ${e}`);r.onActivation(t);const s=this.transitionTo(r);return s.stateListeners.emit(e,s),s}transitionTo(e){return this.state=e,this}}const Pn=m.new(void 0,"state-machine/state");class Ln{stateName;signalListeners;requestHandlers;allowedTransitions;data=null;constructor({name:e,signalListeners:t={},requestHandlers:r={},allowedTransitions:s=[]}){this.stateName=e,this.allowedTransitions=s,this.signalListeners=new Map(Object.entries(t)),this.requestHandlers=new Map(Object.entries(r))}onActivation(e){Pn.trace(`[${this.constructor.name}] Changing state to: ${this}`),this.data=e}canTransitionTo(e){return-1!==this.allowedTransitions.indexOf(e)}toString(){return`<State ${this.stateName}>`}}class Hn extends Ln{constructor(){super({name:"finished"})}close(e){e.close()}async waitForWorkerToFinish(){return this.data}}class Kn extends Ln{readyName;constructor(e){super({name:"init(main)",allowedTransitions:[e]}),this.readyName=e}sendConfig(e,t){return e.sendSignal("config",t),{state:this.readyName,data:t}}}class Qn extends Ln{workerReadyName;handleConfig;constructor(e,t){super({name:"init(worker)",allowedTransitions:[e],signalListeners:{config:e=>this.onConfig(e)}}),this.workerReadyName=e,this.handleConfig=t}onConfig(e){return{state:this.workerReadyName,data:this.handleConfig(e)}}}async function Vn(e,t,r,s){const i=new T.Worker(e),n=function(e,t,r){const s=new Kn(t),i=new Hn;return new Mn(e,s,[s,r,i])}(`main->${r}`,r,s),o=await Un.createAndTransferChannel(n,i);return t.trace(`[${n.name}] Worker spawned ${o.currentState()}`),o}const Fn=4294967295,$n=4294967296,jn=4096,Gn=(Q(!0,"incorrect minimal allocation shift"),7),qn=jn>>Gn,zn=1048575,Wn=1048576,Jn=e=>V(e,e>=0&&e<=Fn,`Incorrect memory index: ${e}!`),Yn=e=>V(e,e>=0&&e<=4294967296,`Incorrect sbrk index: ${e}!`);var Xn,Zn;(Zn=Xn||(Xn={}))[Zn.OK=255]="OK",Zn[Zn.HALT=0]="HALT",Zn[Zn.PANIC=1]="PANIC",Zn[Zn.FAULT=2]="FAULT",Zn[Zn.HOST=3]="HOST",Zn[Zn.OOG=4]="OOG";const eo=e=>Ie(e);var to,ro;!function(e){e[e.Halt=0]="Halt",e[e.Panic=1]="Panic"}(to||(to={}));class so{lookupTableForward;constructor(e){this.lookupTableForward=this.buildLookupTableForward(e)}isInstruction(e){return 0===this.lookupTableForward[e]}getNoOfBytesToNextInstruction(e){return Q(e>=0,`index (${e}) cannot be a negative number`),Math.min(this.lookupTableForward[e]??0,25)}buildLookupTableForward(e){const t=new Uint8Array(e.bitLength);let r=0;for(let s=e.bitLength-1;s>=0;s--)e.isSet(s)?r=0:r++,t[s]=r;return t}static empty(){return new so(pe.empty(0))}}!function(e){e[e.NO_ARGUMENTS=0]="NO_ARGUMENTS",e[e.ONE_IMMEDIATE=1]="ONE_IMMEDIATE",e[e.TWO_IMMEDIATES=2]="TWO_IMMEDIATES",e[e.ONE_OFFSET=3]="ONE_OFFSET",e[e.ONE_REGISTER_ONE_IMMEDIATE=4]="ONE_REGISTER_ONE_IMMEDIATE",e[e.ONE_REGISTER_TWO_IMMEDIATES=5]="ONE_REGISTER_TWO_IMMEDIATES",e[e.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET=6]="ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET",e[e.TWO_REGISTERS=7]="TWO_REGISTERS",e[e.TWO_REGISTERS_ONE_IMMEDIATE=8]="TWO_REGISTERS_ONE_IMMEDIATE",e[e.TWO_REGISTERS_ONE_OFFSET=9]="TWO_REGISTERS_ONE_OFFSET",e[e.TWO_REGISTERS_TWO_IMMEDIATES=10]="TWO_REGISTERS_TWO_IMMEDIATES",e[e.THREE_REGISTERS=11]="THREE_REGISTERS",e[e.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE=12]="ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE"}(ro||(ro={}));class io{u32;i32;u64;i64;view;bytes;constructor(){const e=new ArrayBuffer(8);this.u32=new Uint32Array(e),this.i32=new Int32Array(e),this.u64=new BigUint64Array(e),this.i64=new BigInt64Array(e),this.view=new DataView(e),this.bytes=new Uint8Array(e)}setBytes(e){const t=e.length,r=t>0?128&e[t-1]:0,s=Math.min(t,8),i=0!==r?255:0;for(let t=0;t<s;t++)this.view.setUint8(t,e[t]);for(let e=t;e<8;e++)this.view.setUint8(e,i)}getUnsigned(){return this.u32[0]}getSigned(){return this.i32[0]}getU32(){return this.u32[0]}getI32(){return this.i32[0]}getU64(){return this.u64[0]}getI64(){return this.i64[0]}getBytesAsLittleEndian(){return this.bytes.subarray(0,4)}getExtendedBytesAsLittleEndian(){return this.bytes}}class no{bytes;asSigned;asUnsigned;constructor(e=new Uint8Array(104)){this.bytes=e,Q(104===e.length,"Invalid size of registers array."),this.asSigned=new BigInt64Array(e.buffer,e.byteOffset),this.asUnsigned=new BigUint64Array(e.buffer,e.byteOffset)}static fromBytes(e){return Q(104===e.length,"Invalid size of registers array."),new no(e)}getBytesAsLittleEndian(e,t){const r=e<<3;return this.bytes.subarray(r,r+t)}getAllBytesAsLittleEndian(){return this.bytes}copyFrom(e){const t=e instanceof BigUint64Array?e:e.asUnsigned;this.asUnsigned.set(t)}reset(){for(let e=0;e<13;e++)this.asUnsigned[e]=0n}getLowerU32(e){return Number(0xffffffffn&this.asUnsigned[e])}getLowerI32(e){return 0|Number(this.getLowerU32(e))}setU32(e,t){this.asUnsigned[e]=oo(t)}setI32(e,t){this.asSigned[e]=oo(t)}getU64(e){return this.asUnsigned[e]}getI64(e){return this.asSigned[e]}setU64(e,t){this.asUnsigned[e]=t}setI64(e,t){this.asSigned[e]=t}getAllU64(){return this.asUnsigned}}function oo(e){const t="number"==typeof e?BigInt(e):e,r=BigInt(4294967295),s=t&r;return(s&BigInt(2147483648))!==BigInt(0)?s|~r:s}class ao{byte=new Int8Array(1);setByte(e){this.byte[0]=e}getHighNibble(){return(240&this.byte[0])>>>4}getLowNibble(){return 15&this.byte[0]}getHighNibbleAsRegisterIndex(){return Math.min(this.getHighNibble(),12)}getLowNibbleAsRegisterIndex(){return Math.min(this.getLowNibble(),12)}getHighNibbleAsLength(){return Math.min(this.getHighNibble(),4)}getLowNibbleAsLength(){return Math.min(this.getLowNibble(),4)}}class co{nibblesDecoder=new ao;offsetDecoder=new io;code=new Uint8Array;mask=so.empty();reset(e,t){this.code=e,this.mask=t}fillArgs(e,t){const r=1+this.mask.getNoOfBytesToNextInstruction(e+1);switch(t.noOfBytesToSkip=r,t.type){case ro.NO_ARGUMENTS:break;case ro.ONE_IMMEDIATE:{const s=Math.min(4,r-1),i=e+1;t.immediateDecoder.setBytes(this.code.subarray(i,i+s));break}case ro.THREE_REGISTERS:{const r=this.code[e+1],s=this.code[e+2];this.nibblesDecoder.setByte(r),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex(),this.nibblesDecoder.setByte(s),t.thirdRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();break}case ro.TWO_REGISTERS_ONE_IMMEDIATE:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2));t.immediateDecoder.setBytes(this.code.subarray(i,n));break}case ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=this.nibblesDecoder.getHighNibbleAsLength(),n=e+2,o=n+i;t.immediateDecoder.setBytes(this.code.subarray(n,o));const a=e+2+i,c=a+Math.min(4,Math.max(0,r-2-i));this.offsetDecoder.setBytes(this.code.subarray(a,c)),t.nextPc=e+this.offsetDecoder.getSigned();break}case ro.TWO_REGISTERS_ONE_OFFSET:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2));this.offsetDecoder.setBytes(this.code.subarray(i,n)),t.nextPc=e+this.offsetDecoder.getSigned();break}case ro.TWO_REGISTERS:{const r=this.code[e+1];this.nibblesDecoder.setByte(r),t.firstRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();break}case ro.ONE_OFFSET:{const s=e+1,i=s+Math.min(4,r-1),n=this.code.subarray(s,i);this.offsetDecoder.setBytes(n);const o=this.offsetDecoder.getSigned();t.nextPc=e+o;break}case ro.ONE_REGISTER_ONE_IMMEDIATE:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2)),o=this.code.subarray(i,n);t.immediateDecoder.setBytes(o);break}case ro.TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s);const i=this.nibblesDecoder.getLowNibbleAsLength(),n=e+2,o=n+i,a=this.code.subarray(n,o);t.firstImmediateDecoder.setBytes(a);const c=o,l=c+Math.min(4,Math.max(0,r-2-i)),h=this.code.subarray(c,l);t.secondImmediateDecoder.setBytes(h);break}case ro.ONE_REGISTER_TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=this.nibblesDecoder.getHighNibbleAsLength(),n=e+2,o=n+i,a=this.code.subarray(n,o);t.firstImmediateDecoder.setBytes(a);const c=o,l=c+Math.min(4,Math.max(0,r-2-i)),h=this.code.subarray(c,l);t.secondImmediateDecoder.setBytes(h);break}case ro.TWO_REGISTERS_TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=this.code[e+2];this.nibblesDecoder.setByte(i);const n=this.nibblesDecoder.getLowNibbleAsLength(),o=e+3,a=o+n,c=this.code.subarray(o,a);t.firstImmediateDecoder.setBytes(c);const l=a,h=l+Math.min(4,Math.max(0,r-3-n)),u=this.code.subarray(l,h);t.secondImmediateDecoder.setBytes(u);break}case ro.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE:{const r=this.code[e+1];this.nibblesDecoder.setByte(r),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const s=e+2,i=s+8,n=this.code.subarray(s,i);t.immediateDecoder.setBytes(n);break}}}}class lo{unsignedImmediate;bytes;constructor(){const e=new ArrayBuffer(8);this.unsignedImmediate=new BigUint64Array(e),this.bytes=new Uint8Array(e)}setBytes(e){let t=0;for(;t<e.length;t++)this.bytes[t]=e[t];for(;t<8;t++)this.bytes[t]=0}getValue(){return this.unsignedImmediate[0]}getBytesAsLittleEndian(){return this.bytes.subarray(0,8)}}const ho=Object.keys(ro).length/2;var uo;!function(e){e[e.TRAP=0]="TRAP",e[e.FALLTHROUGH=1]="FALLTHROUGH",e[e.ECALLI=10]="ECALLI",e[e.LOAD_IMM_64=20]="LOAD_IMM_64",e[e.STORE_IMM_U8=30]="STORE_IMM_U8",e[e.STORE_IMM_U16=31]="STORE_IMM_U16",e[e.STORE_IMM_U32=32]="STORE_IMM_U32",e[e.STORE_IMM_U64=33]="STORE_IMM_U64",e[e.JUMP=40]="JUMP",e[e.JUMP_IND=50]="JUMP_IND",e[e.LOAD_IMM=51]="LOAD_IMM",e[e.LOAD_U8=52]="LOAD_U8",e[e.LOAD_I8=53]="LOAD_I8",e[e.LOAD_U16=54]="LOAD_U16",e[e.LOAD_I16=55]="LOAD_I16",e[e.LOAD_U32=56]="LOAD_U32",e[e.LOAD_I32=57]="LOAD_I32",e[e.LOAD_U64=58]="LOAD_U64",e[e.STORE_U8=59]="STORE_U8",e[e.STORE_U16=60]="STORE_U16",e[e.STORE_U32=61]="STORE_U32",e[e.STORE_U64=62]="STORE_U64",e[e.STORE_IMM_IND_U8=70]="STORE_IMM_IND_U8",e[e.STORE_IMM_IND_U16=71]="STORE_IMM_IND_U16",e[e.STORE_IMM_IND_U32=72]="STORE_IMM_IND_U32",e[e.STORE_IMM_IND_U64=73]="STORE_IMM_IND_U64",e[e.LOAD_IMM_JUMP=80]="LOAD_IMM_JUMP",e[e.BRANCH_EQ_IMM=81]="BRANCH_EQ_IMM",e[e.BRANCH_NE_IMM=82]="BRANCH_NE_IMM",e[e.BRANCH_LT_U_IMM=83]="BRANCH_LT_U_IMM",e[e.BRANCH_LE_U_IMM=84]="BRANCH_LE_U_IMM",e[e.BRANCH_GE_U_IMM=85]="BRANCH_GE_U_IMM",e[e.BRANCH_GT_U_IMM=86]="BRANCH_GT_U_IMM",e[e.BRANCH_LT_S_IMM=87]="BRANCH_LT_S_IMM",e[e.BRANCH_LE_S_IMM=88]="BRANCH_LE_S_IMM",e[e.BRANCH_GE_S_IMM=89]="BRANCH_GE_S_IMM",e[e.BRANCH_GT_S_IMM=90]="BRANCH_GT_S_IMM",e[e.MOVE_REG=100]="MOVE_REG",e[e.SBRK=101]="SBRK",e[e.COUNT_SET_BITS_64=102]="COUNT_SET_BITS_64",e[e.COUNT_SET_BITS_32=103]="COUNT_SET_BITS_32",e[e.LEADING_ZERO_BITS_64=104]="LEADING_ZERO_BITS_64",e[e.LEADING_ZERO_BITS_32=105]="LEADING_ZERO_BITS_32",e[e.TRAILING_ZERO_BITS_64=106]="TRAILING_ZERO_BITS_64",e[e.TRAILING_ZERO_BITS_32=107]="TRAILING_ZERO_BITS_32",e[e.SIGN_EXTEND_8=108]="SIGN_EXTEND_8",e[e.SIGN_EXTEND_16=109]="SIGN_EXTEND_16",e[e.ZERO_EXTEND_16=110]="ZERO_EXTEND_16",e[e.REVERSE_BYTES=111]="REVERSE_BYTES",e[e.STORE_IND_U8=120]="STORE_IND_U8",e[e.STORE_IND_U16=121]="STORE_IND_U16",e[e.STORE_IND_U32=122]="STORE_IND_U32",e[e.STORE_IND_U64=123]="STORE_IND_U64",e[e.LOAD_IND_U8=124]="LOAD_IND_U8",e[e.LOAD_IND_I8=125]="LOAD_IND_I8",e[e.LOAD_IND_U16=126]="LOAD_IND_U16",e[e.LOAD_IND_I16=127]="LOAD_IND_I16",e[e.LOAD_IND_U32=128]="LOAD_IND_U32",e[e.LOAD_IND_I32=129]="LOAD_IND_I32",e[e.LOAD_IND_U64=130]="LOAD_IND_U64",e[e.ADD_IMM_32=131]="ADD_IMM_32",e[e.AND_IMM=132]="AND_IMM",e[e.XOR_IMM=133]="XOR_IMM",e[e.OR_IMM=134]="OR_IMM",e[e.MUL_IMM_32=135]="MUL_IMM_32",e[e.SET_LT_U_IMM=136]="SET_LT_U_IMM",e[e.SET_LT_S_IMM=137]="SET_LT_S_IMM",e[e.SHLO_L_IMM_32=138]="SHLO_L_IMM_32",e[e.SHLO_R_IMM_32=139]="SHLO_R_IMM_32",e[e.SHAR_R_IMM_32=140]="SHAR_R_IMM_32",e[e.NEG_ADD_IMM_32=141]="NEG_ADD_IMM_32",e[e.SET_GT_U_IMM=142]="SET_GT_U_IMM",e[e.SET_GT_S_IMM=143]="SET_GT_S_IMM",e[e.SHLO_L_IMM_ALT_32=144]="SHLO_L_IMM_ALT_32",e[e.SHLO_R_IMM_ALT_32=145]="SHLO_R_IMM_ALT_32",e[e.SHAR_R_IMM_ALT_32=146]="SHAR_R_IMM_ALT_32",e[e.CMOV_IZ_IMM=147]="CMOV_IZ_IMM",e[e.CMOV_NZ_IMM=148]="CMOV_NZ_IMM",e[e.ADD_IMM_64=149]="ADD_IMM_64",e[e.MUL_IMM_64=150]="MUL_IMM_64",e[e.SHLO_L_IMM_64=151]="SHLO_L_IMM_64",e[e.SHLO_R_IMM_64=152]="SHLO_R_IMM_64",e[e.SHAR_R_IMM_64=153]="SHAR_R_IMM_64",e[e.NEG_ADD_IMM_64=154]="NEG_ADD_IMM_64",e[e.SHLO_L_IMM_ALT_64=155]="SHLO_L_IMM_ALT_64",e[e.SHLO_R_IMM_ALT_64=156]="SHLO_R_IMM_ALT_64",e[e.SHAR_R_IMM_ALT_64=157]="SHAR_R_IMM_ALT_64",e[e.ROT_R_64_IMM=158]="ROT_R_64_IMM",e[e.ROT_R_64_IMM_ALT=159]="ROT_R_64_IMM_ALT",e[e.ROT_R_32_IMM=160]="ROT_R_32_IMM",e[e.ROT_R_32_IMM_ALT=161]="ROT_R_32_IMM_ALT",e[e.BRANCH_EQ=170]="BRANCH_EQ",e[e.BRANCH_NE=171]="BRANCH_NE",e[e.BRANCH_LT_U=172]="BRANCH_LT_U",e[e.BRANCH_LT_S=173]="BRANCH_LT_S",e[e.BRANCH_GE_U=174]="BRANCH_GE_U",e[e.BRANCH_GE_S=175]="BRANCH_GE_S",e[e.LOAD_IMM_JUMP_IND=180]="LOAD_IMM_JUMP_IND",e[e.ADD_32=190]="ADD_32",e[e.SUB_32=191]="SUB_32",e[e.MUL_32=192]="MUL_32",e[e.DIV_U_32=193]="DIV_U_32",e[e.DIV_S_32=194]="DIV_S_32",e[e.REM_U_32=195]="REM_U_32",e[e.REM_S_32=196]="REM_S_32",e[e.SHLO_L_32=197]="SHLO_L_32",e[e.SHLO_R_32=198]="SHLO_R_32",e[e.SHAR_R_32=199]="SHAR_R_32",e[e.ADD_64=200]="ADD_64",e[e.SUB_64=201]="SUB_64",e[e.MUL_64=202]="MUL_64",e[e.DIV_U_64=203]="DIV_U_64",e[e.DIV_S_64=204]="DIV_S_64",e[e.REM_U_64=205]="REM_U_64",e[e.REM_S_64=206]="REM_S_64",e[e.SHLO_L_64=207]="SHLO_L_64",e[e.SHLO_R_64=208]="SHLO_R_64",e[e.SHAR_R_64=209]="SHAR_R_64",e[e.AND=210]="AND",e[e.XOR=211]="XOR",e[e.OR=212]="OR",e[e.MUL_UPPER_S_S=213]="MUL_UPPER_S_S",e[e.MUL_UPPER_U_U=214]="MUL_UPPER_U_U",e[e.MUL_UPPER_S_U=215]="MUL_UPPER_S_U",e[e.SET_LT_U=216]="SET_LT_U",e[e.SET_LT_S=217]="SET_LT_S",e[e.CMOV_IZ=218]="CMOV_IZ",e[e.CMOV_NZ=219]="CMOV_NZ",e[e.ROT_L_64=220]="ROT_L_64",e[e.ROT_L_32=221]="ROT_L_32",e[e.ROT_R_64=222]="ROT_R_64",e[e.ROT_R_32=223]="ROT_R_32",e[e.AND_INV=224]="AND_INV",e[e.OR_INV=225]="OR_INV",e[e.XNOR=226]="XNOR",e[e.MAX=227]="MAX",e[e.MAX_U=228]="MAX_U",e[e.MIN=229]="MIN",e[e.MIN_U=230]="MIN_U"}(uo||(uo={}));const fo=uo.MIN_U,go=(()=>{const e=new Array(fo+1);return e[uo.TRAP]=ro.NO_ARGUMENTS,e[uo.FALLTHROUGH]=ro.NO_ARGUMENTS,e[uo.ECALLI]=ro.ONE_IMMEDIATE,e[uo.LOAD_IMM_64]=ro.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE,e[uo.STORE_IMM_U8]=ro.TWO_IMMEDIATES,e[uo.STORE_IMM_U16]=ro.TWO_IMMEDIATES,e[uo.STORE_IMM_U32]=ro.TWO_IMMEDIATES,e[uo.STORE_IMM_U64]=ro.TWO_IMMEDIATES,e[uo.JUMP]=ro.ONE_OFFSET,e[uo.JUMP_IND]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_U8]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_I8]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_U16]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_I16]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_U32]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_I32]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.LOAD_U64]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.STORE_U8]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.STORE_U16]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.STORE_U32]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.STORE_U64]=ro.ONE_REGISTER_ONE_IMMEDIATE,e[uo.STORE_IMM_IND_U8]=ro.ONE_REGISTER_TWO_IMMEDIATES,e[uo.STORE_IMM_IND_U16]=ro.ONE_REGISTER_TWO_IMMEDIATES,e[uo.STORE_IMM_IND_U32]=ro.ONE_REGISTER_TWO_IMMEDIATES,e[uo.STORE_IMM_IND_U64]=ro.ONE_REGISTER_TWO_IMMEDIATES,e[uo.LOAD_IMM_JUMP]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_EQ_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_NE_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_LT_U_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_LE_U_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_GE_U_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_GT_U_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_LT_S_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_LE_S_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_GE_S_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.BRANCH_GT_S_IMM]=ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[uo.MOVE_REG]=ro.TWO_REGISTERS,e[uo.SBRK]=ro.TWO_REGISTERS,e[uo.COUNT_SET_BITS_64]=ro.TWO_REGISTERS,e[uo.COUNT_SET_BITS_32]=ro.TWO_REGISTERS,e[uo.LEADING_ZERO_BITS_64]=ro.TWO_REGISTERS,e[uo.LEADING_ZERO_BITS_32]=ro.TWO_REGISTERS,e[uo.TRAILING_ZERO_BITS_64]=ro.TWO_REGISTERS,e[uo.TRAILING_ZERO_BITS_32]=ro.TWO_REGISTERS,e[uo.SIGN_EXTEND_8]=ro.TWO_REGISTERS,e[uo.SIGN_EXTEND_16]=ro.TWO_REGISTERS,e[uo.ZERO_EXTEND_16]=ro.TWO_REGISTERS,e[uo.REVERSE_BYTES]=ro.TWO_REGISTERS,e[uo.STORE_IND_U8]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.STORE_IND_U16]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.STORE_IND_U32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.STORE_IND_U64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_U8]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_I8]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_U16]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_I16]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_U32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_I32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.LOAD_IND_U64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ADD_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ADD_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.AND_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.XOR_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.OR_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.MUL_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.MUL_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SET_LT_U_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SET_LT_S_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_L_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_R_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHAR_R_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.NEG_ADD_IMM_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_L_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_R_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHAR_R_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.NEG_ADD_IMM_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SET_GT_U_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SET_GT_S_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_L_IMM_ALT_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_R_IMM_ALT_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHAR_R_IMM_ALT_32]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_L_IMM_ALT_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHLO_R_IMM_ALT_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.SHAR_R_IMM_ALT_64]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.CMOV_IZ_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.CMOV_NZ_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ROT_R_64_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ROT_R_64_IMM_ALT]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ROT_R_32_IMM]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.ROT_R_32_IMM_ALT]=ro.TWO_REGISTERS_ONE_IMMEDIATE,e[uo.BRANCH_EQ]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.BRANCH_NE]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.BRANCH_LT_U]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.BRANCH_LT_S]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.BRANCH_GE_U]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.BRANCH_GE_S]=ro.TWO_REGISTERS_ONE_OFFSET,e[uo.LOAD_IMM_JUMP_IND]=ro.TWO_REGISTERS_TWO_IMMEDIATES,e[uo.ADD_32]=ro.THREE_REGISTERS,e[uo.ADD_64]=ro.THREE_REGISTERS,e[uo.SUB_32]=ro.THREE_REGISTERS,e[uo.SUB_64]=ro.THREE_REGISTERS,e[uo.AND]=ro.THREE_REGISTERS,e[uo.XOR]=ro.THREE_REGISTERS,e[uo.OR]=ro.THREE_REGISTERS,e[uo.MUL_32]=ro.THREE_REGISTERS,e[uo.MUL_64]=ro.THREE_REGISTERS,e[uo.MUL_UPPER_S_S]=ro.THREE_REGISTERS,e[uo.MUL_UPPER_U_U]=ro.THREE_REGISTERS,e[uo.MUL_UPPER_S_U]=ro.THREE_REGISTERS,e[uo.DIV_U_32]=ro.THREE_REGISTERS,e[uo.DIV_S_32]=ro.THREE_REGISTERS,e[uo.REM_U_32]=ro.THREE_REGISTERS,e[uo.REM_S_32]=ro.THREE_REGISTERS,e[uo.DIV_U_64]=ro.THREE_REGISTERS,e[uo.DIV_S_64]=ro.THREE_REGISTERS,e[uo.REM_U_64]=ro.THREE_REGISTERS,e[uo.REM_S_64]=ro.THREE_REGISTERS,e[uo.SET_LT_U]=ro.THREE_REGISTERS,e[uo.SET_LT_S]=ro.THREE_REGISTERS,e[uo.SHLO_L_32]=ro.THREE_REGISTERS,e[uo.SHLO_R_32]=ro.THREE_REGISTERS,e[uo.SHAR_R_32]=ro.THREE_REGISTERS,e[uo.SHLO_L_64]=ro.THREE_REGISTERS,e[uo.SHLO_R_64]=ro.THREE_REGISTERS,e[uo.SHAR_R_64]=ro.THREE_REGISTERS,e[uo.CMOV_IZ]=ro.THREE_REGISTERS,e[uo.CMOV_NZ]=ro.THREE_REGISTERS,e[uo.ROT_L_64]=ro.THREE_REGISTERS,e[uo.ROT_L_32]=ro.THREE_REGISTERS,e[uo.ROT_R_64]=ro.THREE_REGISTERS,e[uo.ROT_R_32]=ro.THREE_REGISTERS,e[uo.AND_INV]=ro.THREE_REGISTERS,e[uo.OR_INV]=ro.THREE_REGISTERS,e[uo.XNOR]=ro.THREE_REGISTERS,e[uo.MAX]=ro.THREE_REGISTERS,e[uo.MAX_U]=ro.THREE_REGISTERS,e[uo.MIN]=ro.THREE_REGISTERS,e[uo.MIN_U]=ro.THREE_REGISTERS,e})(),po=e=>Ie(e),yo=e=>we(e),mo=e=>"number"==typeof e&&e<2**32?po(e):yo(e);function bo(e){return new Ao(we(e))}class Ao{gas;constructor(e){this.gas=e}set(e){this.gas=we(e)}get(){return mo(this.gas)}sub(e){return this.gas=we(this.gas-we(e)),this.gas<0n}}const Io=[[uo.TRAP,1],[uo.FALLTHROUGH,1],[uo.ECALLI,1],[uo.LOAD_IMM_64,1],[uo.STORE_IMM_U8,1],[uo.STORE_IMM_U16,1],[uo.STORE_IMM_U32,1],[uo.STORE_IMM_U64,1],[uo.JUMP,1],[uo.JUMP_IND,1],[uo.LOAD_IMM,1],[uo.LOAD_U8,1],[uo.LOAD_I8,1],[uo.LOAD_U16,1],[uo.LOAD_I16,1],[uo.LOAD_U32,1],[uo.LOAD_I32,1],[uo.LOAD_U64,1],[uo.STORE_U8,1],[uo.STORE_U16,1],[uo.STORE_U32,1],[uo.STORE_U64,1],[uo.STORE_IMM_IND_U8,1],[uo.STORE_IMM_IND_U16,1],[uo.STORE_IMM_IND_U32,1],[uo.STORE_IMM_IND_U64,1],[uo.LOAD_IMM_JUMP,1],[uo.BRANCH_EQ_IMM,1],[uo.BRANCH_NE_IMM,1],[uo.BRANCH_LT_U_IMM,1],[uo.BRANCH_LE_U_IMM,1],[uo.BRANCH_GE_U_IMM,1],[uo.BRANCH_GT_U_IMM,1],[uo.BRANCH_LT_S_IMM,1],[uo.BRANCH_LE_S_IMM,1],[uo.BRANCH_GE_S_IMM,1],[uo.BRANCH_GT_S_IMM,1],[uo.MOVE_REG,1],[uo.SBRK,1],[uo.COUNT_SET_BITS_64,1],[uo.COUNT_SET_BITS_32,1],[uo.LEADING_ZERO_BITS_64,1],[uo.LEADING_ZERO_BITS_32,1],[uo.TRAILING_ZERO_BITS_64,1],[uo.TRAILING_ZERO_BITS_32,1],[uo.SIGN_EXTEND_8,1],[uo.SIGN_EXTEND_16,1],[uo.ZERO_EXTEND_16,1],[uo.REVERSE_BYTES,1],[uo.STORE_IND_U8,1],[uo.STORE_IND_U16,1],[uo.STORE_IND_U32,1],[uo.STORE_IND_U64,1],[uo.LOAD_IND_U8,1],[uo.LOAD_IND_I8,1],[uo.LOAD_IND_U16,1],[uo.LOAD_IND_I16,1],[uo.LOAD_IND_U32,1],[uo.LOAD_IND_I32,1],[uo.LOAD_IND_U64,1],[uo.ADD_IMM_32,1],[uo.AND_IMM,1],[uo.XOR_IMM,1],[uo.OR_IMM,1],[uo.MUL_IMM_32,1],[uo.SET_LT_U_IMM,1],[uo.SET_LT_S_IMM,1],[uo.SHLO_L_IMM_32,1],[uo.SHLO_R_IMM_32,1],[uo.SHAR_R_IMM_32,1],[uo.NEG_ADD_IMM_32,1],[uo.SET_GT_U_IMM,1],[uo.SET_GT_S_IMM,1],[uo.SHLO_L_IMM_ALT_32,1],[uo.SHLO_R_IMM_ALT_32,1],[uo.SHAR_R_IMM_ALT_32,1],[uo.CMOV_IZ_IMM,1],[uo.CMOV_NZ_IMM,1],[uo.ADD_IMM_64,1],[uo.MUL_IMM_64,1],[uo.SHLO_L_IMM_64,1],[uo.SHLO_R_IMM_64,1],[uo.SHAR_R_IMM_64,1],[uo.NEG_ADD_IMM_64,1],[uo.SHLO_L_IMM_ALT_64,1],[uo.SHLO_R_IMM_ALT_64,1],[uo.SHAR_R_IMM_ALT_64,1],[uo.ROT_R_64_IMM,1],[uo.ROT_R_64_IMM_ALT,1],[uo.ROT_R_32_IMM,1],[uo.ROT_R_32_IMM_ALT,1],[uo.BRANCH_EQ,1],[uo.BRANCH_NE,1],[uo.BRANCH_LT_U,1],[uo.BRANCH_LT_S,1],[uo.BRANCH_GE_U,1],[uo.BRANCH_GE_S,1],[uo.LOAD_IMM_JUMP_IND,1],[uo.ADD_32,1],[uo.SUB_32,1],[uo.MUL_32,1],[uo.DIV_U_32,1],[uo.DIV_S_32,1],[uo.REM_U_32,1],[uo.REM_S_32,1],[uo.SHLO_L_32,1],[uo.SHLO_R_32,1],[uo.SHAR_R_32,1],[uo.ADD_64,1],[uo.SUB_64,1],[uo.MUL_64,1],[uo.DIV_U_64,1],[uo.DIV_S_64,1],[uo.REM_U_64,1],[uo.REM_S_64,1],[uo.SHLO_L_64,1],[uo.SHLO_R_64,1],[uo.SHAR_R_64,1],[uo.AND,1],[uo.XOR,1],[uo.OR,1],[uo.MUL_UPPER_S_S,1],[uo.MUL_UPPER_U_U,1],[uo.MUL_UPPER_S_U,1],[uo.SET_LT_U,1],[uo.SET_LT_S,1],[uo.CMOV_IZ,1],[uo.CMOV_NZ,1],[uo.ROT_L_64,1],[uo.ROT_L_32,1],[uo.ROT_R_64,1],[uo.ROT_R_32,1],[uo.AND_INV,1],[uo.OR_INV,1],[uo.XNOR,1],[uo.MAX,1],[uo.MAX_U,1],[uo.MIN,1],[uo.MIN_U,1]].reduce((e,t)=>{const[r,s]=(([e,t])=>[e,{gas:po(t)}])(t);return e[r]=s,e},{}),vo=(()=>{const e=new Array(fo+1);return e.fill(!1),e[uo.TRAP]=!0,e[uo.FALLTHROUGH]=!0,e[uo.JUMP]=!0,e[uo.JUMP_IND]=!0,e[uo.LOAD_IMM_JUMP]=!0,e[uo.LOAD_IMM_JUMP_IND]=!0,e[uo.BRANCH_EQ]=!0,e[uo.BRANCH_NE]=!0,e[uo.BRANCH_GE_U]=!0,e[uo.BRANCH_GE_S]=!0,e[uo.BRANCH_LT_U]=!0,e[uo.BRANCH_LT_S]=!0,e[uo.BRANCH_EQ_IMM]=!0,e[uo.BRANCH_NE_IMM]=!0,e[uo.BRANCH_LT_U_IMM]=!0,e[uo.BRANCH_LT_S_IMM]=!0,e[uo.BRANCH_LE_U_IMM]=!0,e[uo.BRANCH_LE_S_IMM]=!0,e[uo.BRANCH_GE_U_IMM]=!0,e[uo.BRANCH_GE_S_IMM]=!0,e[uo.BRANCH_GT_U_IMM]=!0,e[uo.BRANCH_GT_S_IMM]=!0,e})();class wo{basicBlocks=new Set;reset(e,t){this.basicBlocks.clear(),this.basicBlocks.add(0);const r=e.length,s=r=>t.isInstruction(r)&&vo[e[r]];for(let e=0;e<r;e++)t.isInstruction(e)&&s(e)&&this.basicBlocks.add(e+1+t.getNoOfBytesToNextInstruction(e+1))}isBeginningOfBasicBlock(e){return this.basicBlocks.has(e)}}const So=(()=>{const e=new Array(fo+1);for(let t=0;t<fo+1;t++){const r=Io[t]?.gas;e[t]=r}return e})();class Eo{nextPc=0;status=null;exitParam=null;reset(){this.nextPc=0,this.status=null,this.exitParam=null}}const Co=e=>V(e,e>=0&&e<jn,`Incorect page index: ${e}!`),ko=e=>V(e,e>=0&&e<=zn,`Incorrect page number: ${e}!`);function xo(e){return ko(e===zn?0:e+1)}function _o(e){return jn*Math.ceil(e/jn)}function Bo(e){return ko(e>>>12)}function Ro(e){return Jn(e>>>12<<12)}function Oo(e){return Jn(e<<12>>>0)}class Uo{address;isAccessFault;constructor(e,t=!0){this.address=e,this.isAccessFault=t}static fromPageNumber(e,t=!1){const r=Oo(ko(e));return new Uo(r,t)}static fromMemoryIndex(e,t=!1){const r=Ro(Jn(e%$n));return new Uo(r,t)}}class To extends Error{constructor(){super("Out of bounds")}}Error,Error;class No extends Error{constructor(){super("Space between sbrk index and max heap index should be empty!")}}class Do extends Error{constructor(){super("MemoryBuilder was finalized and cannot be changed!")}}class Mo extends Error{constructor(){super("You are trying to access reserved memory!")}}class Po extends Error{constructor(){super("You try to fill data on memory page that does not exist!")}}Error;class Lo extends Error{constructor(){super("Out of memory")}}class Ho{start;length;end;lastIndex=null;constructor(e,t){this.start=e,this.length=t,this.end=Jn((this.start+this.length)%$n),t>0&&(this.lastIndex=Jn((this.end-1+$n)%$n))}static fromStartAndLength(e,t){if(!Number.isInteger(t)||t<0||t>$n)throw new TypeError(`length must be a non-negative integer and less than 4294967296, got ${t}`);return new Ho(e,t)}isEmpty(){return 0===this.length}isWrapped(){return this.start>=this.end&&!this.isEmpty()}isInRange(e){return this.isWrapped()?e>=this.start||e<this.end:e>=this.start&&e<this.end}overlapsWith(e){return null!==this.lastIndex&&null!==e.lastIndex&&(this.isInRange(e.start)||this.isInRange(e.lastIndex)||e.isInRange(this.start)||e.isInRange(this.lastIndex))}}const Ko=Ho.fromStartAndLength(Jn(0),65536);class Qo{start;length;end;constructor(e,t){this.start=e,this.length=t,this.end=ko((this.start+this.length)%Wn)}static fromMemoryRange(e){const t=Bo(e.start);if(e.isEmpty())return new Qo(t,0);const r=Bo(e.lastIndex??e.end),s=xo(r);if((t===s||t===r)&&e.length>jn)return new Qo(t,Wn);const i=t<s?s-t:Wn-t+s;return Qo.fromStartAndLength(t,i)}static fromStartAndLength(e,t){if(!Number.isInteger(t)||t<0||t>Wn)throw new TypeError(`length must be a non-negative integer and less than 1048576, got ${t}`);return new Qo(e,t)}isEmpty(){return 0===this.length}*[Symbol.iterator](){if(this.isEmpty())return;const e=this.end;let t=this.start;do{yield t,t=xo(t)}while(t!==e)}}class Vo{start;constructor(e){this.start=Oo(e)}}class Fo extends Vo{data;constructor(e,t){super(e),this.data=t}loadInto(e,t,r){const s=t+r;if(s>jn)return ee.error(Uo.fromMemoryIndex(this.start+jn));const i=this.data.subarray(t,s);return e.fill(0,i.length,r),e.set(i),ee.ok(J)}storeFrom(e,t){return ee.error(Uo.fromMemoryIndex(this.start,!0))}setData(e,t){this.data.set(t,e)}isWriteable(){return!1}getPageDump(){return this.data}}class $o extends Vo{buffer;view;constructor(e,t){super(e);const r=t?.length??0,s=Math.min(jn,Math.max(r,qn));this.buffer=new ArrayBuffer(s,{maxByteLength:jn}),this.view=new Uint8Array(this.buffer),void 0!==t&&this.view.set(t)}loadInto(e,t,r){const s=t+r;if(s>jn)return ee.error(Uo.fromMemoryIndex(this.start+jn));const i=this.view.subarray(t,s);return e.fill(0,i.length,r),e.set(i),ee.ok(J)}storeFrom(e,t){if(this.buffer.byteLength<e+t.length&&this.buffer.byteLength<jn){const r=Math.min(jn,Math.max(qn,e+t.length));this.buffer.resize(r)}return this.view.set(t,e),ee.ok(J)}setData(e,t){if(this.buffer.byteLength<e+t.length&&this.buffer.byteLength<jn){const r=Math.min(jn,Math.max(qn,e+t.length));this.buffer.resize(r)}this.view.set(t,e)}isWriteable(){return!0}getPageDump(){return this.view}}var jo;!function(e){e[e.READ=0]="READ",e[e.WRITE=1]="WRITE"}(jo||(jo={}));class Go{sbrkIndex;virtualSbrkIndex;endHeapIndex;memory;static fromInitialMemory(e){return new Go(e?.sbrkIndex,e?.sbrkIndex,e?.endHeapIndex,e?.memory)}constructor(e=Yn(Ko.end),t=Yn(Ko.end),r=Yn(Fn),s=new Map){this.sbrkIndex=e,this.virtualSbrkIndex=t,this.endHeapIndex=r,this.memory=s}reset(){this.sbrkIndex=Yn(Ko.end),this.virtualSbrkIndex=Yn(Ko.end),this.endHeapIndex=Yn(Fn),this.memory=new Map}copyFrom(e){this.sbrkIndex=e.sbrkIndex,this.virtualSbrkIndex=e.virtualSbrkIndex,this.endHeapIndex=e.endHeapIndex,this.memory=e.memory}storeFrom(e,t){if(0===t.length)return ee.ok(J);const r=this.getPages(e,t.length,jo.WRITE);if(r.isError)return ee.error(r.error);const s=r.ok;let i=e,n=t.length;for(const r of s){const s=Co(i%jn),o=Math.min(jn-s,n),a=i-e,c=t.subarray(a,a+o);r.storeFrom(s,c),i+=o,n-=o}return ee.ok(J)}getPages(e,t,r){if(0===t)return ee.ok([]);const s=Ho.fromStartAndLength(e,t),i=Qo.fromMemoryRange(s),n=[];for(const e of i){if(e<16)return ee.error(Uo.fromPageNumber(e,!0));const t=this.memory.get(e);if(void 0===t)return ee.error(Uo.fromPageNumber(e));if(r===jo.WRITE&&!t.isWriteable())return ee.error(Uo.fromPageNumber(e,!0));n.push(t)}return ee.ok(n)}loadInto(e,t){if(0===e.length)return ee.ok(J);const r=this.getPages(t,e.length,jo.READ);if(r.isError)return ee.error(r.error);const s=r.ok;let i=t,n=e.length;for(const r of s){const s=Co(i%jn),o=Math.min(jn-s,n),a=i-t,c=e.subarray(a);r.loadInto(c,s,o),i+=o,n-=o}return ee.ok(J)}sbrk(e){const t=this.sbrkIndex,r=this.virtualSbrkIndex;if(Fn<r+e||r+e>this.endHeapIndex)throw new Lo;const s=Yn(this.virtualSbrkIndex+e);if(s<=t)return this.virtualSbrkIndex=s,r;const i=Yn(_o(s)),n=Bo(t),o=(i-t)/jn,a=Qo.fromStartAndLength(n,o);for(const e of a){const t=new $o(e);this.memory.set(e,t)}return this.virtualSbrkIndex=s,this.sbrkIndex=i,r}getPageDump(e){const t=this.memory.get(e);return t?.getPageDump()??null}getDirtyPages(){return this.memory.keys()}}class qo{initialMemory=new Map;isFinalized=!1;ensureNotFinalized(){if(this.isFinalized)throw new Do}ensureNoReservedMemoryUsage(e){if(e.overlapsWith(Ko))throw new Mo}setReadablePages(e,t,r=new Uint8Array){this.ensureNotFinalized(),Q(e<t,"end has to be bigger than start"),Q(e%jn===0,"start needs to be a multiple of page size (4096)"),Q(t%jn===0,"end needs to be a multiple of page size (4096)"),Q(r.length<=t-e,"the initial data is longer than address range");const s=t-e,i=Ho.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=Array.from(Qo.fromMemoryRange(i)),o=n.length;for(let e=0;e<o;e++){const t=n[e],s=r.subarray(e*jn,(e+1)*jn),i=new Fo(t,s);this.initialMemory.set(t,i)}return this}setWriteablePages(e,t,r=new Uint8Array){this.ensureNotFinalized(),Q(e<t,"end has to be bigger than start"),Q(e%jn===0,"start needs to be a multiple of page size (4096)"),Q(t%jn===0,"end needs to be a multiple of page size (4096)"),Q(r.length<=t-e,"the initial data is longer than address range");const s=t-e,i=Ho.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=Array.from(Qo.fromMemoryRange(i)),o=n.length;for(let e=0;e<o;e++){const t=n[e],s=r.subarray(e*jn,(e+1)*jn),i=new $o(t,s);this.initialMemory.set(t,i)}return this}setData(e,t){this.ensureNotFinalized();const r=jn-e%jn;Q(t.length<=r,"The data has to fit into a single page.");const s=t.length,i=Ho.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=Bo(e),o=this.initialMemory.get(n);if(void 0===o)throw new Po;const a=Co(e-o.start);return o.setData(a,t),this}finalize(e,t){Q(e<=t,`startHeapIndex (${e}) has to be less than or equal to endHeapIndex (${t})`),this.ensureNotFinalized();const r=Ho.fromStartAndLength(e,t-e),s=Qo.fromMemoryRange(r);for(const e of s)if(this.initialMemory.has(e))throw new No;const i=Go.fromInitialMemory({memory:this.initialMemory,sbrkIndex:Yn(e),endHeapIndex:t});return this.isFinalized=!0,i}}class zo{mathOps;shiftOps;bitOps;booleanOps;moveOps;bitRotationOps;constructor(e,t,r,s,i,n){this.mathOps=e,this.shiftOps=t,this.bitOps=r,this.booleanOps=s,this.moveOps=i,this.bitRotationOps=n}dispatch(e,t){switch(e){case uo.ADD_32:this.mathOps.addU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.ADD_64:this.mathOps.addU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MUL_32:this.mathOps.mulU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MUL_64:this.mathOps.mulU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MUL_UPPER_U_U:this.mathOps.mulUpperUU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MUL_UPPER_S_S:this.mathOps.mulUpperSS(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MUL_UPPER_S_U:this.mathOps.mulUpperSU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SUB_32:this.mathOps.subU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SUB_64:this.mathOps.subU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.DIV_S_32:this.mathOps.divSignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.DIV_S_64:this.mathOps.divSignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.DIV_U_32:this.mathOps.divUnsignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.DIV_U_64:this.mathOps.divUnsignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.REM_S_32:this.mathOps.remSignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.REM_S_64:this.mathOps.remSignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.REM_U_32:this.mathOps.remUnsignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.REM_U_64:this.mathOps.remUnsignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHLO_L_32:this.shiftOps.shiftLogicalLeftU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHLO_L_64:this.shiftOps.shiftLogicalLeftU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHLO_R_32:this.shiftOps.shiftLogicalRightU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHLO_R_64:this.shiftOps.shiftLogicalRightU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHAR_R_32:this.shiftOps.shiftArithmeticRightU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SHAR_R_64:this.shiftOps.shiftArithmeticRightU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.OR:this.bitOps.or(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.AND:this.bitOps.and(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.XOR:this.bitOps.xor(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SET_LT_S:this.booleanOps.setLessThanSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.SET_LT_U:this.booleanOps.setLessThanUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.CMOV_IZ:this.moveOps.cmovIfZero(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.CMOV_NZ:this.moveOps.cmovIfNotZero(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.ROT_L_64:this.bitRotationOps.rotL64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.ROT_L_32:this.bitRotationOps.rotL32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.ROT_R_64:this.bitRotationOps.rotR64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.ROT_R_32:this.bitRotationOps.rotR32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.AND_INV:this.bitOps.andInv(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.OR_INV:this.bitOps.orInv(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.XNOR:this.bitOps.xnor(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MAX:this.mathOps.max(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MAX_U:this.mathOps.maxU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MIN:this.mathOps.min(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case uo.MIN_U:this.mathOps.minU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex)}}}class Wo{mathOps;shiftOps;bitOps;booleanOps;moveOps;storeOps;loadOps;bitRotationOps;constructor(e,t,r,s,i,n,o,a){this.mathOps=e,this.shiftOps=t,this.bitOps=r,this.booleanOps=s,this.moveOps=i,this.storeOps=n,this.loadOps=o,this.bitRotationOps=a}dispatch(e,t){switch(e){case uo.ADD_IMM_32:this.mathOps.addImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.ADD_IMM_64:this.mathOps.addImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.MUL_IMM_32:this.mathOps.mulImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.MUL_IMM_64:this.mathOps.mulImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.NEG_ADD_IMM_32:this.mathOps.negAddImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.NEG_ADD_IMM_64:this.mathOps.negAddImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_L_IMM_32:this.shiftOps.shiftLogicalLeftImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_L_IMM_64:this.shiftOps.shiftLogicalLeftImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_L_IMM_ALT_32:this.shiftOps.shiftLogicalLeftImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_L_IMM_ALT_64:this.shiftOps.shiftLogicalLeftImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_R_IMM_32:this.shiftOps.shiftLogicalRightImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_R_IMM_64:this.shiftOps.shiftLogicalRightImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_R_IMM_ALT_32:this.shiftOps.shiftLogicalRightImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHLO_R_IMM_ALT_64:this.shiftOps.shiftLogicalRightImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHAR_R_IMM_32:this.shiftOps.shiftArithmeticRightImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHAR_R_IMM_64:this.shiftOps.shiftArithmeticRightImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHAR_R_IMM_ALT_32:this.shiftOps.shiftArithmeticRightImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SHAR_R_IMM_ALT_64:this.shiftOps.shiftArithmeticRightImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.OR_IMM:this.bitOps.orImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.AND_IMM:this.bitOps.andImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.XOR_IMM:this.bitOps.xorImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SET_LT_S_IMM:this.booleanOps.setLessThanSignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SET_LT_U_IMM:this.booleanOps.setLessThanUnsignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SET_GT_S_IMM:this.booleanOps.setGreaterThanSignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.SET_GT_U_IMM:this.booleanOps.setGreaterThanUnsignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.CMOV_IZ_IMM:this.moveOps.cmovIfZeroImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.CMOV_NZ_IMM:this.moveOps.cmovIfNotZeroImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.STORE_IND_U8:this.storeOps.storeIndU8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.STORE_IND_U16:this.storeOps.storeIndU16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.STORE_IND_U32:this.storeOps.storeIndU32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.STORE_IND_U64:this.storeOps.storeIndU64(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_U8:this.loadOps.loadIndU8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_U16:this.loadOps.loadIndU16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_U32:this.loadOps.loadIndU32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_U64:this.loadOps.loadIndU64(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_I8:this.loadOps.loadIndI8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_I16:this.loadOps.loadIndI16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.LOAD_IND_I32:this.loadOps.loadIndI32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case uo.ROT_R_64_IMM:this.bitRotationOps.rotR64Imm(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.ROT_R_64_IMM_ALT:this.bitRotationOps.rotR64ImmAlt(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.ROT_R_32_IMM:this.bitRotationOps.rotR32Imm(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case uo.ROT_R_32_IMM_ALT:this.bitRotationOps.rotR32ImmAlt(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex)}}}class Jo{moveOps;memoryOps;bitOps;bitRotationOps;constructor(e,t,r,s){this.moveOps=e,this.memoryOps=t,this.bitOps=r,this.bitRotationOps=s}dispatch(e,t){switch(e){case uo.MOVE_REG:this.moveOps.moveRegister(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.SBRK:this.memoryOps.sbrk(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.COUNT_SET_BITS_64:this.bitOps.countSetBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.COUNT_SET_BITS_32:this.bitOps.countSetBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.LEADING_ZERO_BITS_64:this.bitOps.leadingZeroBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.LEADING_ZERO_BITS_32:this.bitOps.leadingZeroBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.TRAILING_ZERO_BITS_64:this.bitOps.trailingZeroBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.TRAILING_ZERO_BITS_32:this.bitOps.trailingZeroBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.SIGN_EXTEND_8:this.bitOps.signExtend8(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.SIGN_EXTEND_16:this.bitOps.signExtend16(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.ZERO_EXTEND_16:this.bitOps.zeroExtend16(t.firstRegisterIndex,t.secondRegisterIndex);break;case uo.REVERSE_BYTES:this.bitRotationOps.reverseBytes(t.firstRegisterIndex,t.secondRegisterIndex)}}}class Yo{branchOps;loadOps;constructor(e,t){this.branchOps=e,this.loadOps=t}dispatch(e,t){switch(e){case uo.LOAD_IMM_JUMP:this.loadOps.loadImmediate(t.registerIndex,t.immediateDecoder),this.branchOps.jump(t.nextPc);break;case uo.BRANCH_EQ_IMM:this.branchOps.branchEqImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_NE_IMM:this.branchOps.branchNeImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_LT_U_IMM:this.branchOps.branchLtUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_LE_U_IMM:this.branchOps.branchLeUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_GE_U_IMM:this.branchOps.branchGeUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_GT_U_IMM:this.branchOps.branchGtUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_LT_S_IMM:this.branchOps.branchLtSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_LE_S_IMM:this.branchOps.branchLeSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_GE_S_IMM:this.branchOps.branchGeSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case uo.BRANCH_GT_S_IMM:this.branchOps.branchGtSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc)}}}class Xo{branchOps;constructor(e){this.branchOps=e}dispatch(e,t){switch(e){case uo.BRANCH_EQ:this.branchOps.branchEq(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case uo.BRANCH_NE:this.branchOps.branchNe(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case uo.BRANCH_LT_U:this.branchOps.branchLtUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case uo.BRANCH_LT_S:this.branchOps.branchLtSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case uo.BRANCH_GE_U:this.branchOps.branchGeUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case uo.BRANCH_GE_S:this.branchOps.branchGeSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc)}}}class Zo{branchOps;constructor(e){this.branchOps=e}dispatch(e,t){e===uo.JUMP&&this.branchOps.jump(t.nextPc)}}class ea{loadOps;storeOps;dynamicJumpOps;constructor(e,t,r){this.loadOps=e,this.storeOps=t,this.dynamicJumpOps=r}dispatch(e,t){switch(e){case uo.LOAD_IMM:this.loadOps.loadImmediate(t.registerIndex,t.immediateDecoder);break;case uo.STORE_U8:this.storeOps.storeU8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.STORE_U16:this.storeOps.storeU16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.STORE_U32:this.storeOps.storeU32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.STORE_U64:this.storeOps.storeU64(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_U8:this.loadOps.loadU8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_U16:this.loadOps.loadU16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_U32:this.loadOps.loadU32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_U64:this.loadOps.loadU64(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_I8:this.loadOps.loadI8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_I16:this.loadOps.loadI16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.LOAD_I32:this.loadOps.loadI32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case uo.JUMP_IND:{const e=this.dynamicJumpOps.caluclateJumpAddress(t.immediateDecoder,t.registerIndex);this.dynamicJumpOps.jumpInd(e);break}}}}class ta{storeOps;constructor(e){this.storeOps=e}dispatch(e,t){switch(e){case uo.STORE_IMM_IND_U8:this.storeOps.storeImmediateIndU8(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case uo.STORE_IMM_IND_U16:this.storeOps.storeImmediateIndU16(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case uo.STORE_IMM_IND_U32:this.storeOps.storeImmediateIndU32(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case uo.STORE_IMM_IND_U64:this.storeOps.storeImmediateIndU64(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder)}}}class ra{storeOps;constructor(e){this.storeOps=e}dispatch(e,t){switch(e){case uo.STORE_IMM_U8:this.storeOps.storeImmediateU8(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case uo.STORE_IMM_U16:this.storeOps.storeImmediateU16(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case uo.STORE_IMM_U32:this.storeOps.storeImmediateU32(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case uo.STORE_IMM_U64:this.storeOps.storeImmediateU64(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder)}}}class sa{noArgsOps;constructor(e){this.noArgsOps=e}dispatch(e){switch(e){case uo.TRAP:this.noArgsOps.trap();break;case uo.FALLTHROUGH:this.noArgsOps.fallthrough()}}}class ia{loadOps;dynamicJumpOps;constructor(e,t){this.loadOps=e,this.dynamicJumpOps=t}dispatch(e,t){switch(e){case uo.LOAD_IMM_JUMP_IND:{const e=this.dynamicJumpOps.caluclateJumpAddress(t.secondImmediateDecoder,t.secondRegisterIndex);this.loadOps.loadImmediate(t.firstRegisterIndex,t.firstImmediateDecoder),this.dynamicJumpOps.jumpInd(e);break}}}}class na{hostCallOps;constructor(e){this.hostCallOps=e}dispatch(e,t){e===uo.ECALLI&&this.hostCallOps.hostCall(t.immediateDecoder)}}class oa{loadOps;constructor(e){this.loadOps=e}dispatch(e,t){e===uo.LOAD_IMM_64&&this.loadOps.loadImmediateU64(t.registerIndex,t.immediateDecoder)}}class aa{regs;constructor(e){this.regs=e}or(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|this.regs.getU64(t))}orImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|t.getU64())}and(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&this.regs.getU64(t))}andImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&t.getU64())}xor(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^this.regs.getU64(t))}xorImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^t.getU64())}andInv(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&~this.regs.getU64(t))}orInv(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|~this.regs.getU64(t))}xnor(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^~this.regs.getU64(t))}countSetBits64(e,t){this.regs.setU32(t,function(e){let t=e;return t-=t>>1n&0x5555555555555555n,t=(0x3333333333333333n&t)+(t>>2n&0x3333333333333333n),t=t+(t>>4n)&0x0f0f0f0f0f0f0f0fn,t+=t>>8n,t+=t>>16n,t+=t>>32n,Number(0x7fn&t)}(this.regs.getU64(e)))}countSetBits32(e,t){this.regs.setU32(t,function(e){let t=e;return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,63&t}(this.regs.getLowerU32(e)))}leadingZeroBits64(e,t){this.regs.setU32(t,function(e){const t=Number(e>>32n),r=Number(0xffffffffn&e),s=Math.clz32(t);return s<32?s:s+Math.clz32(r)}(this.regs.getU64(e)))}leadingZeroBits32(e,t){this.regs.setU32(t,Math.clz32(this.regs.getLowerU32(e)))}trailingZeroBits64(e,t){this.regs.setU32(t,function(e){if(0n===e)return 64;let t=e,r=0;for(;0n==(1n&t);)r++,t>>=1n;return r}(this.regs.getU64(e)))}trailingZeroBits32(e,t){this.regs.setU32(t,function(e){if(0===e)return 32;let t=e,r=0;for(;!(1&t);)r++,t>>>=1;return r}(this.regs.getLowerU32(e)))}signExtend(e,t){const r=2**t-1,s=e&r;return(s&1<<t-1)>0?~BigInt(r)|BigInt(s):BigInt(s)}signExtend8(e,t){const r=this.signExtend(this.regs.getLowerU32(e),8);this.regs.setU64(t,r)}signExtend16(e,t){const r=this.signExtend(this.regs.getLowerU32(e),16);this.regs.setU64(t,r)}zeroExtend16(e,t){const r=0x000000000000ffffn&this.regs.getU64(e);this.regs.setU64(t,r)}}const ca=4294967295,la=-(2**31),ha=32,ua=64n;function da(e,t){return e>ca-t?ca-(ca-e+(ca-t))-1:e+t}function fa(e,t){return(e+t)%2n**64n}function ga(e,t){return t>e?ca-t+e+1:e-t}function pa(e,t){return(2n**64n+e-t)%2n**64n}function ya(e,t){if(e>65536||t>65536){const r=65535&e,s=65535&t,i=r*s;return 65535&i|(i>>16)+(65535&r*(t>>16))+(65535&(e>>16)*s)<<16}return e*t}function ma(e,t){return e*t%2n**64n}function ba(e){return e>=1n<<63n?e-(1n<<64n):e}function Aa(e,t){return(0xffffffffffffffffn&e)*(0xffffffffffffffffn&t)>>64n&0xffffffffffffffffn}function Ia(e,t){return ba(0xffffffffffffffffn&e*t>>64n)}function va(e,t){Q(t>=0,"Shift count must be non-negative");const r=e<0?"1":"0",s=e.toString(2).padStart(64,r);return(e<0n?(1n<<BigInt(s.length))+e:e)>>t}function wa(...e){if(0===e.length)throw new Error("No arguments provided");return e.reduce((e,t)=>t>e?t:e)}function Sa(...e){if(0===e.length)throw new Error("No arguments provided");return e.reduce((e,t)=>t<e?t:e)}class Ea{regs;constructor(e){this.regs=e}shiftLogicalLeftU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)<<this.regs.getLowerU32(t)%ha)}shiftLogicalLeftU64(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<<this.regs.getU64(t)%ua)}shiftLogicalRightU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)>>>this.regs.getLowerU32(t)%ha)}shiftLogicalRightU64(e,t,r){this.regs.setU64(r,va(this.regs.getU64(e),this.regs.getU64(t)%ua))}shiftArithmeticRightU32(e,t,r){this.regs.setI32(r,this.regs.getLowerI32(e)>>this.regs.getLowerU32(t)%ha)}shiftArithmeticRightU64(e,t,r){this.regs.setI64(r,this.regs.getI64(e)>>this.regs.getU64(t)%ua)}shiftLogicalLeftImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)<<t.getU32()%ha)}shiftLogicalLeftImmediateU64(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<<t.getU64()%ua)}shiftLogicalRightImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)>>>t.getU32()%ha)}shiftLogicalRightImmediateU64(e,t,r){this.regs.setU64(r,va(this.regs.getU64(e),t.getU64()%ua))}shiftArithmeticRightImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerI32(e)>>t.getU32()%ha)}shiftArithmeticRightImmediateU64(e,t,r){this.regs.setU64(r,this.regs.getI64(e)>>t.getU64()%ua)}shiftLogicalLeftImmediateAlternativeU32(e,t,r){this.regs.setU32(r,t.getU32()<<this.regs.getLowerU32(e)%ha)}shiftLogicalLeftImmediateAlternativeU64(e,t,r){this.regs.setU64(r,t.getU64()<<this.regs.getU64(e)%ua)}shiftLogicalRightImmediateAlternativeU32(e,t,r){this.regs.setU32(r,t.getU32()>>>this.regs.getLowerU32(e)%ha)}shiftLogicalRightImmediateAlternativeU64(e,t,r){this.regs.setU64(r,va(t.getU64(),this.regs.getU64(e)%ua))}shiftArithmeticRightImmediateAlternativeU32(e,t,r){this.regs.setI32(r,t.getU32()>>this.regs.getLowerU32(e)%ha)}shiftArithmeticRightImmediateAlternativeU64(e,t,r){this.regs.setI64(r,t.getI64()>>this.regs.getU64(e)%ua)}}class Ca{regs;constructor(e){this.regs=e}addU32(e,t,r){this.regs.setU64(r,oo(da(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}addU64(e,t,r){this.regs.setU64(r,fa(this.regs.getU64(e),this.regs.getU64(t)))}addImmediateU32(e,t,r){this.regs.setU64(r,oo(da(this.regs.getLowerU32(e),t.getU32())))}addImmediateU64(e,t,r){this.regs.setU64(r,fa(this.regs.getU64(e),t.getU64()))}mulU32(e,t,r){this.regs.setU64(r,oo(ya(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}mulU64(e,t,r){this.regs.setU64(r,ma(this.regs.getU64(e),this.regs.getU64(t)))}mulUpperUU(e,t,r){this.regs.setU64(r,Aa(this.regs.getU64(e),this.regs.getU64(t)))}mulUpperSS(e,t,r){this.regs.setI64(r,Ia(this.regs.getI64(e),this.regs.getI64(t)))}mulUpperSU(e,t,r){this.regs.setI64(r,ba(0xffffffffffffffffn&this.regs.getI64(e)*(0xffffffffffffffffn&this.regs.getU64(t))>>64n))}mulImmediateU32(e,t,r){this.regs.setU64(r,oo(ya(this.regs.getLowerU32(e),t.getU32())))}mulImmediateU64(e,t,r){this.regs.setU64(r,ma(this.regs.getU64(e),t.getU64()))}mulUpperSSImmediate(e,t,r){this.regs.setI64(r,Ia(this.regs.getI64(e),t.getI64()))}mulUpperUUImmediate(e,t,r){this.regs.setU64(r,Aa(this.regs.getU64(e),t.getU64()))}subU32(e,t,r){this.regs.setU64(r,oo(ga(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}subU64(e,t,r){this.regs.setU64(r,pa(this.regs.getU64(e),this.regs.getU64(t)))}negAddImmediateU32(e,t,r){this.regs.setU64(r,oo(ga(t.getU32(),this.regs.getLowerU32(e))))}negAddImmediateU64(e,t,r){this.regs.setU64(r,pa(t.getU64(),this.regs.getU64(e)))}divSignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,2n**64n-1n):-1===this.regs.getLowerI32(t)&&this.regs.getLowerI32(e)===la?this.regs.setU64(r,oo(this.regs.getLowerU32(e))):this.regs.setI64(r,oo(~~(this.regs.getLowerI32(e)/this.regs.getLowerI32(t))))}divSignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,2n**64n-1n):-1n===this.regs.getI64(t)&&this.regs.getI64(e)===-(2n**63n)?this.regs.setU64(r,this.regs.getU64(e)):this.regs.setI64(r,~~(this.regs.getI64(e)/this.regs.getI64(t)))}divUnsignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,2n**64n-1n):this.regs.setU64(r,oo(~~(this.regs.getLowerU32(e)/this.regs.getLowerU32(t))))}divUnsignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,2n**64n-1n):this.regs.setU64(r,~~(this.regs.getU64(e)/this.regs.getU64(t)))}remSignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,BigInt(this.regs.getLowerI32(e))):-1===this.regs.getLowerI32(t)&&this.regs.getLowerI32(e)===la?this.regs.setU64(r,0n):this.regs.setI64(r,oo(this.regs.getLowerI32(e)%this.regs.getLowerI32(t)))}remSignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,this.regs.getU64(e)):-1n===this.regs.getI64(t)&&this.regs.getI64(e)===-(2n**63n)?this.regs.setU64(r,0n):this.regs.setI64(r,this.regs.getI64(e)%this.regs.getI64(t))}remUnsignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,oo(this.regs.getLowerU32(e))):this.regs.setU64(r,oo(this.regs.getLowerU32(e)%this.regs.getLowerU32(t)))}remUnsignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,this.regs.getU64(e)):this.regs.setU64(r,this.regs.getU64(e)%this.regs.getU64(t))}max(e,t,r){this.regs.setI64(r,wa(this.regs.getI64(e),this.regs.getI64(t)))}maxU(e,t,r){this.regs.setU64(r,wa(this.regs.getU64(e),this.regs.getU64(t)))}min(e,t,r){this.regs.setI64(r,Sa(this.regs.getI64(e),this.regs.getI64(t)))}minU(e,t,r){this.regs.setU64(r,Sa(this.regs.getU64(e),this.regs.getU64(t)))}}class ka{regs;constructor(e){this.regs=e}setLessThanSignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getI64(e)<t.getI64()?1n:0n)}setLessThanUnsignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<t.getU64()?1n:0n)}setLessThanSigned(e,t,r){this.regs.setU64(r,this.regs.getI64(e)<this.regs.getI64(t)?1n:0n)}setLessThanUnsigned(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<this.regs.getU64(t)?1n:0n)}setGreaterThanSignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getI64(e)>t.getI64()?1n:0n)}setGreaterThanUnsignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)>t.getU64()?1n:0n)}}class xa{regs;constructor(e){this.regs=e}cmovIfZeroImmediate(e,t,r){0n===this.regs.getU64(e)&&this.regs.setU64(r,t.getU64())}cmovIfNotZeroImmediate(e,t,r){0n!==this.regs.getU64(e)&&this.regs.setU64(r,t.getU64())}cmovIfZero(e,t,r){0n===this.regs.getU64(t)&&this.regs.setU64(r,this.regs.getU64(e))}cmovIfNotZero(e,t,r){0n!==this.regs.getU64(t)&&this.regs.setU64(r,this.regs.getU64(e))}moveRegister(e,t){this.regs.setU64(t,this.regs.getU64(e))}}var _a,Ba;(Ba=_a||(_a={}))[Ba.HALT=0]="HALT",Ba[Ba.PANIC=1]="PANIC",Ba[Ba.FAULT_ACCESS=2]="FAULT_ACCESS",Ba[Ba.FAULT=3]="FAULT",Ba[Ba.HOST=4]="HOST";class Ra{regs;instructionResult;basicBlocks;constructor(e,t,r){this.regs=e,this.instructionResult=t,this.basicBlocks=r}setBasicBlocks(e){this.basicBlocks=e}branch(e,t){t&&(this.basicBlocks.isBeginningOfBasicBlock(e)?this.instructionResult.nextPc=e:this.instructionResult.status=_a.PANIC)}jump(e){this.branch(e,!0)}branchEqImmediate(e,t,r){this.branch(r,this.regs.getU64(e)===t.getU64())}branchEq(e,t,r){this.branch(r,this.regs.getU64(e)===this.regs.getU64(t))}branchNeImmediate(e,t,r){this.branch(r,this.regs.getU64(e)!==t.getU64())}branchNe(e,t,r){this.branch(r,this.regs.getU64(e)!==this.regs.getU64(t))}branchLtUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)<t.getU64())}branchLtUnsigned(e,t,r){this.branch(r,this.regs.getU64(e)<this.regs.getU64(t))}branchLeUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)<=t.getU64())}branchGtUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)>t.getU64())}branchGeUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)>=t.getU64())}branchGeUnsigned(e,t,r){this.branch(r,this.regs.getU64(e)>=this.regs.getU64(t))}branchLtSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)<t.getI64())}branchLtSigned(e,t,r){this.branch(r,this.regs.getI64(e)<this.regs.getI64(t))}branchLeSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)<=t.getI64())}branchGtSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)>t.getI64())}branchGeSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)>=t.getI64())}branchGeSigned(e,t,r){this.branch(r,this.regs.getI64(e)>=this.regs.getI64(t))}}class Oa{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}loadImmediate(e,t){this.regs.setU64(e,t.getU64())}loadImmediateU64(e,t){this.regs.setU64(e,t.getValue())}loadNumber(e,t,r){const s=this.regs.getBytesAsLittleEndian(t,8),i=this.memory.loadInto(s.subarray(0,r),Jn(e));i.isError?i.error.isAccessFault?this.instructionResult.status=_a.FAULT_ACCESS:(this.instructionResult.status=_a.FAULT,this.instructionResult.exitParam=e):s.fill(0,r)}loadSignedNumber(e,t,r){const s=this.regs.getBytesAsLittleEndian(t,8),i=this.memory.loadInto(s.subarray(0,r),Jn(e));i.isError?i.error.isAccessFault?this.instructionResult.status=_a.FAULT_ACCESS:(this.instructionResult.status=_a.FAULT,this.instructionResult.exitParam=e):(128&s[r-1])>0?s.fill(255,r):s.fill(0,r)}loadU8(e,t){this.loadNumber(e,t,1)}loadU16(e,t){this.loadNumber(e,t,2)}loadU32(e,t){this.loadNumber(e,t,4)}loadU64(e,t){this.loadNumber(e,t,8)}loadI8(e,t){this.loadSignedNumber(e,t,1)}loadI16(e,t){this.loadSignedNumber(e,t,2)}loadI32(e,t){this.loadSignedNumber(e,t,4)}loadIndU8(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,1)}loadIndU16(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,2)}loadIndU32(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,4)}loadIndU64(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,8)}loadIndI8(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,1)}loadIndI16(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,2)}loadIndI32(e,t,r){const s=da(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,4)}}class Ua{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}storeU8(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,1))}storeU16(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,2))}storeU32(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,4))}storeU64(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,8))}storeIndU8(e,t,r){const s=da(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,1))}storeIndU16(e,t,r){const s=da(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,2))}storeIndU32(e,t,r){const s=da(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,4))}storeIndU64(e,t,r){const s=da(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,8))}storeImmediateU8(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,1))}storeImmediateU16(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,2))}storeImmediateU32(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,4))}storeImmediateU64(e,t){this.store(e,t.getExtendedBytesAsLittleEndian())}storeImmediateIndU8(e,t,r){const s=da(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,1))}storeImmediateIndU16(e,t,r){const s=da(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,2))}storeImmediateIndU32(e,t,r){const s=da(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,4))}storeImmediateIndU64(e,t,r){const s=da(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getExtendedBytesAsLittleEndian())}store(e,t){const r=this.memory.storeFrom(Jn(e),t);r.isOk||(r.error.isAccessFault?this.instructionResult.status=_a.FAULT_ACCESS:(this.instructionResult.status=_a.FAULT,this.instructionResult.exitParam=Ro(r.error.address)))}}class Ta{instructionResult;constructor(e){this.instructionResult=e}trap(){this.instructionResult.status=_a.PANIC}fallthrough(){}}class Na{regs;jumpTable;instructionResult;basicBlocks;constructor(e,t,r,s){this.regs=e,this.jumpTable=t,this.instructionResult=r,this.basicBlocks=s}djump(e){if(4294901760===e)return void(this.instructionResult.status=_a.HALT);if(0===e||e%2!=0)return void(this.instructionResult.status=_a.PANIC);const t=e/2-1;if(!this.jumpTable.hasIndex(t))return void(this.instructionResult.status=_a.PANIC);const r=this.jumpTable.getDestination(t);this.basicBlocks.isBeginningOfBasicBlock(r)?this.instructionResult.nextPc=r:this.instructionResult.status=_a.PANIC}caluclateJumpAddress(e,t){return da(this.regs.getLowerU32(t),e.getU32())}jumpInd(e){this.djump(e)}}class Da{instructionResult;constructor(e){this.instructionResult=e}hostCall(e){this.instructionResult.status=_a.HOST,this.instructionResult.exitParam=e.getUnsigned()}}class Ma{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}sbrk(e,t){try{this.regs.setU32(t,this.memory.sbrk(this.regs.getLowerU32(e)))}catch{this.instructionResult.status=_a.FAULT}}}class Pa{regs;constructor(e){this.regs=e}reverseBytes(e,t){const r=this.regs.getU64(e);let s=0n;for(let e=0;e<8;e++)s=s<<8n|r>>BigInt(8*e)&0xffn;this.regs.setU64(t,s)}rotate32Left(e,t){const r=t%32,s=2**32-1;return(e<<r&s|e>>>32-r)>>>0&s}rotate64Left(e,t){const r=t%64,s=(1n<<64n)-1n;return(e<<BigInt(r)&s|va(e,BigInt(64-r)))&s}rotate32Right(e,t){const r=t%32,s=2**32-1;return(e>>>r|e<<32-r&s)&s}rotate64Right(e,t){const r=t%64,s=(1n<<64n)-1n;return(va(e,BigInt(r))|e<<BigInt(64-r)&s)&s}rotR64Imm(e,t,r){const s=t.getU32(),i=this.regs.getU64(e);this.regs.setU64(r,this.rotate64Right(i,s))}rotR64ImmAlt(e,t,r){const s=this.regs.getLowerU32(e),i=t.getU64();this.regs.setU64(r,this.rotate64Right(i,s))}rotR32Imm(e,t,r){const s=t.getU32(),i=this.regs.getLowerU32(e);this.regs.setU32(r,this.rotate32Right(i,s))}rotR32ImmAlt(e,t,r){const s=this.regs.getLowerU32(e),i=t.getU32();this.regs.setU32(r,this.rotate32Right(i,s))}rotL64(e,t,r){const s=this.regs.getU64(e),i=this.regs.getLowerU32(t);this.regs.setU64(r,this.rotate64Left(s,i))}rotL32(e,t,r){const s=this.regs.getLowerU32(e),i=this.regs.getLowerU32(t);this.regs.setU32(r,this.rotate32Left(s,i))}rotR64(e,t,r){const s=this.regs.getU64(e),i=this.regs.getLowerU32(t);this.regs.setU64(r,this.rotate64Right(s,i))}rotR32(e,t,r){const s=this.regs.getLowerU32(e),i=this.regs.getLowerU32(t);this.regs.setU32(r,this.rotate32Right(s,i))}}class La{indices;constructor(e,t){Q(0===e||t.length%e===0,`Length of jump table (${t.length}) should be a multiple of item lenght (${e})!`);const r=0===e?0:t.length/e;this.indices=new Uint32Array(r);for(let s=0;s<r;s++)this.indices[s]=this.decodeNext(t.subarray(s*e,(s+1)*e))}decodeNext(e){const t=e.length;let r=0;for(let s=0;s<t;s++){if((4278190080&r)>0)return 2**32-1;r<<=8,r|=e[t-s-1]}return r}hasIndex(e){return e<this.indices.length&&e>=0}getDestination(e){return this.indices[e]}static empty(){return new La(0,new Uint8Array)}copyFrom(e){this.indices=e.indices}}const Ha=m.new(void 0,"pvm-interpreter");var Ka;!function(e){e[e.InvalidProgramError=0]="InvalidProgramError"}(Ka||(Ka={}));class Qa{code;mask;jumpTable;constructor(e){const{code:t,mask:r,jumpTable:s,jumpTableItemLength:i}=this.decodeProgram(e);this.code=new Uint8Array(t),this.mask=new so(r),this.jumpTable=new La(i,s)}decodeProgram(e){const t=_e.fromBlob(e),r=t.varU32(),s=t.u8(),i=t.varU32(),n=r*s,o=t.bytes(n).raw,a=t.bytes(i).raw,c=t.bitVecFixLen(i);return t.finish(),{mask:c,code:a,jumpTableItemLength:s,jumpTable:o}}getMask(){return this.mask}getCode(){return this.code}getJumpTable(){return this.jumpTable}static deblob(e){try{return ee.ok(new Qa(e))}catch(e){return Ha.error(`Invalid program: ${e}`),ee.error(Ka.InvalidProgramError)}}}class Va{useSbrkGas;ignoreInstructionGas;registers=new no;code=new Uint8Array;mask=so.empty();pc=0;gas=bo(mo(0));initialGas=bo(mo(0));argsDecoder;threeRegsDispatcher;twoRegsOneImmDispatcher;twoRegsDispatcher;oneRegOneImmOneOffsetDispatcher;twoRegsOneOffsetDispatcher;oneOffsetDispatcher;oneRegOneImmDispatcher;instructionResult=new Eo;memory=new Go;twoImmsDispatcher;oneRegTwoImmsDispatcher;noArgsDispatcher;twoRegsTwoImmsDispatcher;oneImmDispatcher;oneRegOneExtImmDispatcher;status=Xn.OK;argsDecodingResults=(()=>{const e=new Array(ho);return e[ro.NO_ARGUMENTS]={type:ro.NO_ARGUMENTS,noOfBytesToSkip:1},e[ro.ONE_IMMEDIATE]={type:ro.ONE_IMMEDIATE,noOfBytesToSkip:1,immediateDecoder:new io},e[ro.TWO_REGISTERS]={type:ro.TWO_REGISTERS,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0},e[ro.THREE_REGISTERS]={type:ro.THREE_REGISTERS,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,thirdRegisterIndex:0},e[ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET]={type:ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,noOfBytesToSkip:1,registerIndex:0,immediateDecoder:new io,nextPc:0},e[ro.TWO_REGISTERS_ONE_OFFSET]={type:ro.TWO_REGISTERS_ONE_OFFSET,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,nextPc:0},e[ro.TWO_REGISTERS_ONE_IMMEDIATE]={type:ro.TWO_REGISTERS_ONE_IMMEDIATE,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,immediateDecoder:new io},e[ro.ONE_REGISTER_ONE_IMMEDIATE]={type:ro.ONE_REGISTER_ONE_IMMEDIATE,noOfBytesToSkip:1,registerIndex:0,immediateDecoder:new io},e[ro.ONE_REGISTER_TWO_IMMEDIATES]={type:ro.ONE_REGISTER_TWO_IMMEDIATES,noOfBytesToSkip:1,registerIndex:0,firstImmediateDecoder:new io,secondImmediateDecoder:new io},e[ro.ONE_OFFSET]={type:ro.ONE_OFFSET,noOfBytesToSkip:1,nextPc:0},e[ro.TWO_IMMEDIATES]={type:ro.TWO_IMMEDIATES,noOfBytesToSkip:1,firstImmediateDecoder:new io,secondImmediateDecoder:new io},e[ro.TWO_REGISTERS_TWO_IMMEDIATES]={type:ro.TWO_REGISTERS_TWO_IMMEDIATES,noOfBytesToSkip:1,firstImmediateDecoder:new io,secondImmediateDecoder:new io,firstRegisterIndex:0,secondRegisterIndex:0},e[ro.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE]={type:ro.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE,noOfBytesToSkip:9,registerIndex:0,immediateDecoder:new lo},e})();basicBlocks;jumpTable=La.empty();constructor({useSbrkGas:e=!1,ignoreInstructionGas:t=!1}={}){this.useSbrkGas=e,this.ignoreInstructionGas=t,this.argsDecoder=new co,this.basicBlocks=new wo;const r=new Ca(this.registers),s=new Ea(this.registers),i=new aa(this.registers),n=new ka(this.registers),o=new xa(this.registers),a=new Ra(this.registers,this.instructionResult,this.basicBlocks),c=new Oa(this.registers,this.memory,this.instructionResult),l=new Ua(this.registers,this.memory,this.instructionResult),h=new Ta(this.instructionResult),u=new Na(this.registers,this.jumpTable,this.instructionResult,this.basicBlocks),d=new Da(this.instructionResult),f=new Ma(this.registers,this.memory,this.instructionResult),g=new Pa(this.registers);this.threeRegsDispatcher=new zo(r,s,i,n,o,g),this.twoRegsOneImmDispatcher=new Wo(r,s,i,n,o,l,c,g),this.twoRegsDispatcher=new Jo(o,f,i,g),this.oneRegOneImmOneOffsetDispatcher=new Yo(a,c),this.twoRegsOneOffsetDispatcher=new Xo(a),this.oneOffsetDispatcher=new Zo(a),this.oneRegOneImmDispatcher=new ea(c,l,u),this.twoImmsDispatcher=new ra(l),this.oneRegTwoImmsDispatcher=new ta(l),this.noArgsDispatcher=new sa(h),this.twoRegsTwoImmsDispatcher=new ia(c,u),this.oneImmDispatcher=new na(d),this.oneRegOneExtImmDispatcher=new oa(c)}reset(e,t,r,s,i){const n=new Qa(e);this.code=n.getCode(),this.mask=n.getMask(),this.jumpTable.copyFrom(n.getJumpTable()),this.pc=t,this.gas=bo(r),this.initialGas=bo(r),this.status=Xn.OK,this.argsDecoder.reset(this.code,this.mask),this.basicBlocks.reset(this.code,this.mask),this.instructionResult.reset(),void 0!==s?this.registers.copyFrom(s):this.registers.reset(),void 0!==i?this.memory.copyFrom(i):this.memory.reset()}printProgram(){const e=(t=this.code,r=this.mask,t.reduce((e,t,s)=>(r.isInstruction(s)?e.push([uo[t]]):e[e.length-1].push(t),e),[]));var t,r;return console.table(e),e}runProgram(){for(;this.nextStep()===Xn.OK;);}nextStep(){this.status===Xn.HOST&&(this.status=Xn.OK,this.pc=this.instructionResult.nextPc,this.instructionResult.reset());const e=this.code[this.pc]??uo.TRAP,t=void 0!==uo[e],r=So[e]??So[uo.TRAP];if(!this.ignoreInstructionGas&&this.gas.sub(r))return this.status=Xn.OOG,this.status;const s=go[e]??ro.NO_ARGUMENTS,i=this.argsDecodingResults[s];if(this.argsDecoder.fillArgs(this.pc,i),t)switch(this.instructionResult.nextPc=this.pc+i.noOfBytesToSkip,i.type){case ro.NO_ARGUMENTS:this.noArgsDispatcher.dispatch(e);break;case ro.ONE_IMMEDIATE:this.oneImmDispatcher.dispatch(e,i);break;case ro.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET:this.oneRegOneImmOneOffsetDispatcher.dispatch(e,i);break;case ro.TWO_REGISTERS:if(this.useSbrkGas&&e===uo.SBRK){const e=e=>_o(e)/jn*16;if(this.gas.sub(mo(e(this.registers.getLowerU32(i.firstRegisterIndex)))))return this.status=Xn.OOG,this.status}this.twoRegsDispatcher.dispatch(e,i);break;case ro.THREE_REGISTERS:this.threeRegsDispatcher.dispatch(e,i);break;case ro.TWO_REGISTERS_ONE_IMMEDIATE:this.twoRegsOneImmDispatcher.dispatch(e,i);break;case ro.TWO_REGISTERS_ONE_OFFSET:this.twoRegsOneOffsetDispatcher.dispatch(e,i);break;case ro.ONE_OFFSET:this.oneOffsetDispatcher.dispatch(e,i);break;case ro.ONE_REGISTER_ONE_IMMEDIATE:this.oneRegOneImmDispatcher.dispatch(e,i);break;case ro.TWO_IMMEDIATES:this.twoImmsDispatcher.dispatch(e,i);break;case ro.ONE_REGISTER_TWO_IMMEDIATES:this.oneRegTwoImmsDispatcher.dispatch(e,i);break;case ro.TWO_REGISTERS_TWO_IMMEDIATES:this.twoRegsTwoImmsDispatcher.dispatch(e,i);break;case ro.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE:this.oneRegOneExtImmDispatcher.dispatch(e,i)}else this.instructionResult.status=_a.PANIC;if(null!==this.instructionResult.status){switch(this.instructionResult.status!==_a.FAULT&&this.instructionResult.status!==_a.FAULT_ACCESS||this.gas.sub(So[uo.TRAP]),this.instructionResult.status){case _a.FAULT:this.status=Xn.FAULT;break;case _a.HALT:this.status=Xn.HALT;break;case _a.PANIC:case _a.FAULT_ACCESS:this.status=Xn.PANIC;break;case _a.HOST:this.status=Xn.HOST}return this.status}return this.pc=this.instructionResult.nextPc,this.status}getRegisters(){return this.registers}getPC(){return this.pc}setNextPC(e){this.pc=e}getGas(){return this.gas.get()}getGasConsumed(){const e=yo(this.initialGas.get())-yo(this.gas.get());return e<0?this.initialGas.get():yo(e)}getGasCounter(){return this.gas}getStatus(){return this.status}getExitParam(){const e=this.instructionResult.exitParam;return null!==e?Ie(e):e}getMemory(){return this.memory}getMemoryPage(e){return this.memory.getPageDump(ko(e))}}class Fa{memory;constructor(e){this.memory=e}storeFrom(e,t){return 0===t.length?ee.ok(J):e+we(t.length)>$n?ee.error(new To):this.memory.storeFrom(Jn(Number(e)),t)}loadInto(e,t){return 0===e.length?ee.ok(J):t+we(e.length)>$n?ee.error(new To):this.memory.loadInto(e,Jn(Number(t)))}getMemory(){return this.memory}}class $a{registers;constructor(e){this.registers=e}get(e){return we(this.registers.getU64(e))}set(e,t){this.registers.setU64(e,t)}}class ja{consumedGas;status;memorySlice;constructor(e,t,r){this.consumedGas=e,this.status=t,this.memorySlice=r,Q(null===t&&null!==r||null!==t&&null===r,"`status` and `memorySlice` must not both be null or both be non-null — exactly one must be provided")}static fromStatus(e,t){return new ja(e,t,null)}static fromMemorySlice(e,t){return new ja(e,null,t)}hasMemorySlice(){return this.memorySlice instanceof Uint8Array&&null===this.status}hasStatus(){return!this.hasMemorySlice()}}class Ga{pvmInstanceManager;hostCalls;constructor(e,t){this.pvmInstanceManager=e,this.hostCalls=t}getReturnValue(e,t){const r=t.getGasConsumed();if(e===Xn.OOG)return ja.fromStatus(r,e);if(e===Xn.HALT){const e=t.getMemory(),s=t.getRegisters(),i=s.getLowerU32(7),n=s.getLowerU32(8),o=new Uint8Array(n),a=Jn(i);return e.loadInto(o,a).isError?ja.fromMemorySlice(r,new Uint8Array):ja.fromMemorySlice(r,o)}return ja.fromStatus(r,Xn.PANIC)}async execute(e){for(e.runProgram();;){let t=e.getStatus();if(t!==Xn.HOST)return this.getReturnValue(t,e);Q(null!==e.getExitParam(),"We know that the exit param is not null, because the status is `Status.HOST`");const r=e.getExitParam()??-1,s=e.getGasCounter(),i=new $a(e.getRegisters()),n=new Fa(e.getMemory()),o=this.hostCalls.get(eo(r)),a="number"==typeof o.gasCost?o.gasCost:o.gasCost(i);if(s.sub(a))return ja.fromStatus(e.getGasConsumed(),Xn.OOG);if(await o.execute(s,i,n)===to.Halt)return t=Xn.HALT,this.getReturnValue(t,e);e.runProgram(),t=e.getStatus()}}async runProgram(e,t,r,s,i){const n=await this.pvmInstanceManager.getInstance();n.reset(e,t,r,s,i);try{return await this.execute(n)}finally{this.pvmInstanceManager.releaseInstance(n)}}}class qa{instances=[];waitingQueue=[];constructor(e){for(let t=0;t<e;t++)this.instances.push(new Va({useSbrkGas:!1,ignoreInstructionGas:!0}))}async getInstance(){const e=this.instances.pop();return void 0!==e?Promise.resolve(e):new Promise(e=>{this.waitingQueue.push(e)})}releaseInstance(e){const t=this.waitingQueue.shift();if(void 0!==t)return t(e);this.instances.push(e)}}const za={NONE:we(0xffffffffffffffffn),WHAT:we(0xfffffffffffffffen),OOB:we(0xfffffffffffffffdn),WHO:we(0xfffffffffffffffcn),FULL:we(0xfffffffffffffffbn),CORE:we(0xfffffffffffffffan),CASH:we(0xfffffffffffffff9n),LOW:we(0xfffffffffffffff8n),HUH:we(0xfffffffffffffff7n),OK:we(0n)},Wa=Ie(2**32-1),Ja=we(Wa),Ya=Or(2**32-1);function Xa(e,t,r){const s=t.get(e);return s===2n**64n-1n?r:Za(s)}function Za(e){const{lower:t,upper:r}=(e=>{const t=e>>32n;return{lower:Number(e&2n**32n-1n),upper:Number(t)}})(e);return 0===r?Or(t):null}function ec(e,t){Q(t.length>=4,"Not enough space in the destination."),t.set(Ce(e))}function tc(e){return e>Ja?Wa:Ie(Number(e))}const rc=m.new(void 0,"host-calls");class sc{hostCalls=new Map;missing=new ic;constructor(...e){for(const t of e)Q(void 0===this.hostCalls.get(t.index),`Overwriting host call handler at index ${t.index}`),this.hostCalls.set(t.index,t)}get(e){const t=this.hostCalls.get(e)??this.missing;return rc.trace(`[${t.currentServiceId}] PVM invoking ${e} (${t.constructor.name}:${t.index})`),t}}class ic{index=eo(2**32-1);gasCost=po(10);currentServiceId=Ya;execute(e,t,r){return t.set(7,za.WHAT),Promise.resolve(void 0)}}const nc=4096,oc=65536,ac=2**24,cc=4278059008,lc=4278124544;function hc(e){return nc*Math.ceil(e/nc)}class uc extends q{start;end;data;static from({start:e,end:t,data:r}){return new uc(e,t,r)}constructor(e,t,r){super(),this.start=e,this.end=t,this.data=r}}class dc extends q{readable;writeable;sbrkIndex;heapEnd;constructor(e,t,r,s){super(),this.readable=e,this.writeable=t,this.sbrkIndex=r,this.heapEnd=s}}class fc extends q{code;memory;registers;constructor(e,t,r){super(),this.code=e,this.memory=t,this.registers=r}}function gc(e,t,r=null){return new uc(e,t,r)}class pc{code;registers;memory;metadata;static fromSpi(e,t,r){const{code:s,metadata:i}=r?yc(e):{code:e},{code:n,memory:o,registers:a}=function(e,t){const r=_e.fromBlob(e),s=r.u24(),i=r.u24(),n=V(t.length,t.length<=ac,"Incorrect arguments length"),o=V(s,s<=ac,"Incorrect readonly segment length"),a=V(i,i<=ac,"Incorrect heap segment length"),c=r.u16(),l=r.u24(),h=r.bytes(o).raw,u=r.bytes(a).raw,d=r.u32(),f=r.bytes(d).raw;r.finish();const g=oc+hc(o),p=131072+(y=o,oc*Math.ceil(y/oc));var y;const m=p+hc(a),b=p+hc(a)+c*nc,A=cc-hc(l),I=cc,v=lc,w=v+hc(n),S=w+hc(n);function E(e){return!1!==e}const C=[o>0&&gc(65536,g,h),n>0&&gc(v,w,t),w<S&&gc(w,S)].filter(E),k=[a>0&&gc(p,m,u),m<b&&gc(m,b),A<I&&gc(A,I)].filter(E);return new fc(f,new dc(C,k,b,A),function(e){const t=new BigUint64Array(13);return t[0]=BigInt(4294901760),t[1]=BigInt(cc),t[7]=BigInt(lc),t[8]=BigInt(e),t}(t.length))}(s,t),c=new no;c.copyFrom(a);const l=new qo;for(const{start:e,end:t,data:r}of o.readable){const s=Jn(e),i=Jn(t);l.setReadablePages(s,i,r??new Uint8Array)}for(const{start:e,end:t,data:r}of o.writeable){const s=Jn(e),i=Jn(t);l.setWriteablePages(s,i,r??new Uint8Array)}const h=Jn(o.sbrkIndex),u=Yn(o.heapEnd),d=l.finalize(h,u);return new pc(n,c,d,i)}static fromGeneric(e,t){const{code:r,metadata:s}=t?yc(e):{code:e},i=new no,n=new Go;return new pc(r,i,n,s)}constructor(e,t,r,s=new Uint8Array){this.code=e,this.registers=t,this.memory=r,this.metadata=s}}function yc(e){const t=_e.fromBlob(e);return{metadata:t.bytesBlob().raw,code:t.remainingBytes().raw}}var mc,bc,Ac;!function(e){e[e.NoLookup=0]="NoLookup",e[e.NoState=1]="NoState",e[e.NoServiceCode=2]="NoServiceCode",e[e.ServiceCodeMismatch=3]="ServiceCodeMismatch"}(mc||(mc={}));class Ic{context;keccakHasher;allocator;constructor(e,t,r){this.context=e,this.keccakHasher=t,this.allocator=r}hashConcat(e,t){return ar(this.keccakHasher,[e,t])}hashConcatPrepend(e,t,r){return ar(this.keccakHasher,[e,t,r])}header(e){return new Ut(Kt(e.encoded(),this.allocator).asOpaque(),e)}extrinsic(e){const t=e.guarantees.view().map(e=>e.view()).map(e=>{const t=Kt(e.report.encoded(),this.allocator).asOpaque();return re.blobFromParts([t.raw,e.slot.encoded().raw,e.credentials.encoded().raw])}),r=Ne.encodeObject(Fe.sequenceVarLen($i),t,this.context),s=Kt(e.tickets.encoded(),this.allocator).asOpaque(),i=Kt(e.preimages.encoded(),this.allocator).asOpaque(),n=Kt(r,this.allocator).asOpaque(),o=Kt(e.assurances.encoded(),this.allocator).asOpaque(),a=Kt(e.disputes.encoded(),this.allocator).asOpaque(),c=re.blobFromParts([s.raw,i.raw,n.raw,o.raw,a.raw]);return new Tt(Kt(c,this.allocator).asOpaque(),e,c)}workPackage(e){return this.encode(Gr.Codec,e)}encode(e,t){const r=Ne.encodeObject(e,t,this.context);return new Tt(Kt(r,this.allocator).asOpaque(),t,r)}}!function(e){e.PreimageUnneeded="preimage_unneeded",e.PreimagesNotSortedUnique="preimages_not_sorted_unique",e.AccountNotFound="account_not_found"}(bc||(bc={}));class vc{state;constructor(e){this.state=e}integrate(e){for(let t=1;t<e.preimages.length;t++){const r=e.preimages[t-1],s=e.preimages[t];if(!(r.requester<s.requester)&&(r.requester>s.requester||s.blob.compare(r.blob).isLessOrEqual()))return ee.error(bc.PreimagesNotSortedUnique)}const{preimages:t,slot:r}=e,s=[];for(const e of t){const{requester:t,blob:i}=e,n=Kt(i).asOpaque(),o=this.state.getService(t);if(null===o)return ee.error(bc.AccountNotFound);const a=o.hasPreimage(n),c=o.getLookupHistory(n,Ie(i.length));if(a||null===c||!vi.isRequested(c))return ee.error(bc.PreimageUnneeded);s.push(Ci.provide({serviceId:t,preimage:bi.create({hash:n,blob:i}),slot:r}))}return ee.ok({preimages:s})}}class wc{spec;importer;toImport=dr.fromSortedArray((e,t)=>{const r=e.timeSlot-t.timeSlot;return r<0?M.Greater:r>0?M.Less:M.Equal});lastEpoch=Nr(2**32-1);constructor(e,t){this.spec=e,this.importer=t}tryToReadTimeSlot(e){try{return e.header.view().timeSlotIndex.materialize()}catch{return null}}isCurrentEpoch(e){const t=Math.floor(e/this.spec.epochLength);return this.lastEpoch===t}startPreverification(){for(const e of this.toImport)this.isCurrentEpoch(e.timeSlot)&&(e.seal=this.importer.preverifySeal(e.timeSlot,e.block))}push(e){const t=this.tryToReadTimeSlot(e);if(null===t)return null;const r={timeSlot:t,block:e,seal:this.isCurrentEpoch(t)?this.importer.preverifySeal(t,e):Promise.resolve(null)};return this.toImport.insert(r),t}shift(){const e=this.toImport.pop();if(void 0!==e){const t=Math.floor(e.timeSlot/this.spec.epochLength),r=this.lastEpoch!==t;this.lastEpoch=Nr(t),r&&this.startPreverification()}return e}}!function(e){e[e.ParentNotFound=0]="ParentNotFound",e[e.InvalidTimeSlot=1]="InvalidTimeSlot",e[e.InvalidExtrinsic=2]="InvalidExtrinsic",e[e.StateRootNotFound=3]="StateRootNotFound",e[e.InvalidStateRoot=4]="InvalidStateRoot",e[e.AlreadyImported=5]="AlreadyImported"}(Ac||(Ac={}));const Sc=se.zero(Ot).asOpaque();class Ec{hasher;blocks;constructor(e,t){this.hasher=e,this.blocks=t}async verifyBlock(e){const t=e.header.view(),r=this.hasher.header(t);if(null!==this.blocks.getHeader(r.hash))return ee.error(Ac.AlreadyImported,`Block ${r.hash} is already imported.`);const s=t.parentHeaderHash.materialize();if(!s.isEqualTo(Sc)){const e=this.blocks.getHeader(s);if(null===e)return ee.error(Ac.ParentNotFound,`Parent ${s.toString()} not found`);const r=t.timeSlotIndex.materialize(),i=e.timeSlotIndex.materialize();if(r<=i)return ee.error(Ac.InvalidTimeSlot,`Invalid time slot index: ${r}, expected > ${i}`)}const i=t.extrinsicHash.materialize(),n=this.hasher.extrinsic(e.extrinsic.view());if(!i.isEqualTo(n.hash))return ee.error(Ac.InvalidExtrinsic,`Invalid extrinsic hash: ${i.toString()}, expected ${n.hash.toString()}`);const o=t.priorStateRoot.materialize(),a=this.blocks.getPostStateRoot(s);return null===a?ee.error(Ac.StateRootNotFound,`Posterior state root ${s.toString()} not found`):o.isEqualTo(a)?ee.ok(r.hash):ee.error(Ac.InvalidStateRoot,`Invalid prior state root: ${o.toString()}, expected ${a.toString()} (ours)`)}hashHeader(e){return this.hasher.header(e.header.view())}}var Cc;function kc(e,t){for(let r=1;r<e.length;r++)if(e[r-1][t].compare(e[r][t]).isGreaterOrEqual())return!1;return!0}!function(e){e.AlreadyJudged="already_judged",e.BadVoteSplit="bad_vote_split",e.VerdictsNotSortedUnique="verdicts_not_sorted_unique",e.JudgementsNotSortedUnique="judgements_not_sorted_unique",e.CulpritsNotSortedUnique="culprits_not_sorted_unique",e.FaultsNotSortedUnique="faults_not_sorted_unique",e.NotEnoughCulprits="not_enough_culprits",e.NotEnoughFaults="not_enough_faults",e.CulpritsVerdictNotBad="culprits_verdict_not_bad",e.FaultVerdictWrong="fault_verdict_wrong",e.OffenderAlreadyReported="offender_already_reported",e.BadJudgementAge="bad_judgement_age",e.BadValidatorIndex="bad_validator_index",e.BadSignature="bad_signature",e.BadGuarantorKey="bad_guarantor_key",e.BadAuditorKey="bad_auditor_key"}(Cc||(Cc={}));const xc=re.blobFromString("jam_valid").raw,_c=re.blobFromString("jam_invalid").raw,Bc=re.blobFromString("jam_guarantee").raw;function Rc({key:e,signature:t,workReportHash:r}){return{key:e,signature:t,message:re.blobFromParts(Bc,r.raw)}}function Oc({workReportHash:e,wasConsideredValid:t,signature:r,key:s}){const i=t?xc:_c;return{key:s,signature:r,message:re.blobFromParts(i,e.raw)}}function Uc(e,t,r){const{isWorkReportValid:s,signature:i}=e,n=s?xc:_c;return{key:r,signature:i,message:re.blobFromParts(n,t.raw)}}class Tc{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}verifyCulprits(e,t,r,s){if(!kc(e.culprits,"key"))return ee.error(Cc.CulpritsNotSortedUnique);const i=e.culprits.length;for(let n=0;n<i;n++){const{key:i,workReportHash:o}=e.culprits[n];if(void 0!==this.state.disputesRecords.punishSet.findExact(i))return ee.error(Cc.OffenderAlreadyReported);if(!s.has(i))return ee.error(Cc.BadGuarantorKey);if(void 0===t.toAddToBadSet.findExact(o))return ee.error(Cc.CulpritsVerdictNotBad);const a=r.culprits[n];if(!a?.isValid)return ee.error(Cc.BadSignature)}return ee.ok(null)}verifyFaults(e,t,r,s){if(!kc(e.faults,"key"))return ee.error(Cc.FaultsNotSortedUnique);const i=e.faults.length;for(let n=0;n<i;n++){const{key:i,workReportHash:o,wasConsideredValid:a}=e.faults[n];if(void 0!==this.state.disputesRecords.punishSet.findExact(i))return ee.error(Cc.OffenderAlreadyReported);if(!s.has(i))return ee.error(Cc.BadAuditorKey);if(a){const e=t.toAddToGoodSet.findExact(o),r=t.toAddToBadSet.findExact(o);if(void 0!==e||void 0===r)return ee.error(Cc.FaultVerdictWrong)}if(!r.faults[n].isValid)return ee.error(Cc.BadSignature)}return ee.ok(null)}verifyVerdicts(e,t){if(!kc(e.verdicts,"workReportHash"))return ee.error(Cc.VerdictsNotSortedUnique);if(e.verdicts.some(e=>!function(e){for(let t=1;t<e.length;t++)if(e[t-1].index>=e[t].index)return!1;return!0}(e.votes)))return ee.error(Cc.JudgementsNotSortedUnique);const r=Math.floor(this.state.timeslot/this.chainSpec.epochLength);let s=0;for(const{votesEpoch:i,votes:n}of e.verdicts){if(i!==r&&i+1!==r)return ee.error(Cc.BadJudgementAge);const e=i===r?this.state.currentValidatorData:this.state.previousValidatorData;for(const{index:r}of n){const i=e[r]?.ed25519;if(void 0===i)return ee.error(Cc.BadValidatorIndex);if(!t.judgements[s].isValid)return ee.error(Cc.BadSignature);s+=1}}return ee.ok(null)}verifyIfAlreadyJudged(e){for(const t of e.verdicts){const e=this.state.disputesRecords.goodSet.findExact(t.workReportHash),r=this.state.disputesRecords.badSet.findExact(t.workReportHash),s=this.state.disputesRecords.wonkySet.findExact(t.workReportHash);if(void 0!==e||void 0!==r||void 0!==s)return ee.error(Cc.AlreadyJudged)}return ee.ok(null)}calculateVotesForWorkReports(e){const t=cr.new();for(const r of e.verdicts){const e=r.votes,s=r.workReportHash;let i=0;for(const{isWorkReportValid:t}of e)t&&(i+=1);t.set(s,i)}return t}verifyVotesForWorkReports(e,t){for(const[r,s]of e)if(s===this.chainSpec.validatorsSuperMajority){const e=t.faults.find(e=>e.workReportHash.isEqualTo(r));if(void 0===e)return ee.error(Cc.NotEnoughFaults)}else if(0===s){const e=t.culprits.find(e=>e.workReportHash.isEqualTo(r)),s=t.culprits.findLast(e=>e.workReportHash.isEqualTo(r));if(e===s)return ee.error(Cc.NotEnoughCulprits)}else if(s!==this.chainSpec.thirdOfValidators)return ee.error(Cc.BadVoteSplit);return ee.ok(null)}getDisputesRecordsNewItems(e){const t=[],r=[],s=[];for(const[i,n]of e)n>=this.chainSpec.validatorsSuperMajority?t.push(i):0===n?r.push(i):n>=this.chainSpec.thirdOfValidators&&s.push(i);return{toAddToGoodSet:fr.fromArray(ci,t),toAddToBadSet:fr.fromArray(ci,r),toAddToWonkySet:fr.fromArray(ci,s)}}getClearedCoreAssignment(e){const t=this.state.availabilityAssignment.slice();for(let r=0;r<t.length;r++){const s=t[r];if(null!==s){const i=e.get(s.workReport.hash);void 0!==i&&i<this.chainSpec.validatorsSuperMajority&&(t[r]=null)}}return si(t,this.chainSpec)}getOffenders(e){const t=[];for(const{key:r}of e.culprits)t.push(r);for(const{key:r}of e.faults)t.push(r);return t}getUpdatedDisputesRecords(e,t){const r=dr.fromArray(ci,t);return ai.create({goodSet:fr.fromTwoSortedCollections(this.state.disputesRecords.goodSet,e.toAddToGoodSet),badSet:fr.fromTwoSortedCollections(this.state.disputesRecords.badSet,e.toAddToBadSet),wonkySet:fr.fromTwoSortedCollections(this.state.disputesRecords.wonkySet,e.toAddToWonkySet),punishSet:fr.fromTwoSortedCollections(this.state.disputesRecords.punishSet,r)})}prepareSignaturesToVerification(e){const t={culprits:[],judgements:[],faults:[]},r=Math.floor(this.state.timeslot/this.chainSpec.epochLength);for(const{votesEpoch:s,votes:i,workReportHash:n}of e.verdicts){const e=s===r?this.state.currentValidatorData:this.state.previousValidatorData;for(const r of i){const s=e[r.index];if(void 0===s)return ee.error(Cc.BadValidatorIndex);const i=s.ed25519;t.judgements.push(Uc(r,n,i))}}return t.culprits=e.culprits.map(Rc),t.faults=e.faults.map(Oc),ee.ok(t)}getValidatorKeys(){const e=this.state.disputesRecords.punishSet,t=this.state.currentValidatorData.map(e=>e.ed25519),r=this.state.previousValidatorData.map(e=>e.ed25519),s=t.concat(r).filter(t=>!e.has(t));return lr.from(s)}async transition(e){const t=this.prepareSignaturesToVerification(e);if(t.isError)return ee.error(t.error);const r=async function(e){const t={culprits:[],faults:[],judgements:[]},r=Object.entries(e);for(const[e,s]of r)t[e]=(await kt(s)).map((e,t)=>({isValid:e,signature:s[t].signature}));return Promise.resolve(t)}(t.ok),s=this.calculateVotesForWorkReports(e),i=this.getDisputesRecordsNewItems(s),n=await r,o=this.getValidatorKeys(),a=[this.verifyVerdicts(e,n),this.verifyVotesForWorkReports(s,e),this.verifyCulprits(e,i,n,o),this.verifyFaults(e,i,n,o),this.verifyIfAlreadyJudged(e)].find(e=>e.isError);if(a?.isError)return ee.error(a.error);const c=this.getOffenders(e),l=this.getUpdatedDisputesRecords(i,c),h=this.getClearedCoreAssignment(s);return ee.ok({offendersMark:c,stateUpdate:{disputesRecords:l,availabilityAssignment:h}})}}const Nc=re.blobFromString("jam_entropy").raw,Dc=re.blobFromString("jam_fallback_seal").raw,Mc=re.blobFromString("jam_ticket_seal").raw;var Pc;!function(e){e[e.Ok=0]="Ok",e[e.Error=1]="Error"}(Pc||(Pc={}));const Lc=async function(e,t,r,s,i,n){const o=re.blobFromParts(t.map(e=>e.raw)).raw,a=await e.verifySeal(o,r,s.raw,i.raw,n.raw);return a[0]===Pc.Error?ee.error(null):ee.ok(se.fromBlob(a.subarray(1),Ot).asOpaque())},Hc=async function(e,t,r,s){const i=s.length+Mc.length+1,n=re.blobFromParts(r.map(e=>re.blobFromParts([e.signature.raw,Mc,s.raw,Uint8Array.of(e.attempt)]).raw)).raw,o=re.blobFromParts(t.map(e=>e.raw)).raw;try{const t=await e.batchVerifyTicket(o,n,i);return Array.from(re.blobFrom(t).chunks(33)).map(e=>({isValid:e.raw[0]===Pc.Ok,entropyHash:se.fromBlob(e.raw.subarray(1,33),Ot).asOpaque()}))}catch(e){if("RuntimeError: unreachable"==`${e}`)return Array.from({length:r.length},()=>({isValid:!1,entropyHash:se.zero(Ot).asOpaque()}));throw e}},Kc=async function(e,t){const r=re.blobFromParts(t.map(e=>e.raw)).raw,s=await e.getRingCommitment(r);return s[0]===Pc.Error?ee.error(null):ee.ok(se.fromBlob(s.subarray(1),Bt).asOpaque())};class Qc{runInternal;state;static new(e,t){return new Qc(e,t)}constructor(e,t){this.runInternal=e,this.state=t}listenToParentPort(){if(null===T.parentPort)throw new Error("This method is meant to be run inside a worker thread!");T.parentPort.once("close",()=>{process.exit(0)}),T.parentPort.once("message",e=>{this.listenTo(e),T.parentPort?.postMessage("ready")})}listenTo(e){e.once("close",()=>{e.removeAllListeners(),process.exit(0)}),e.on("message",t=>{const{params:r}=t;this.run(r).then(t=>{const r=ee.ok(t);e.postMessage(r,t.getTransferList())}).catch(t=>{const r=ee.error(`${t}`);e.postMessage(r,[])})})}async run(e){return await this.runInternal(e,this.state)}async destroy(){}}class Vc{workers;maxWorkers;workerPath;static async initialize(e,t){Q(t.maxWorkers>0,"Max workers has to be positive."),Q(t.minWorkers<=t.maxWorkers,"Min workers has to be lower or equal to max workers.");const r=[];for(let s=0;s<t.minWorkers;s++)r.push(await Fc(e));return new Vc(r,t.maxWorkers,e)}freeWorkerIndices=[];taskQueue=[];isDestroyed=!1;isWorkerInitializing=!1;constructor(e,t,r){this.workers=e,this.maxWorkers=t,this.workerPath=r;for(let t=0;t<e.length;t++)this.freeWorkerIndices.push(t)}async initNewWorker(e=()=>{}){this.workers.length>=this.maxWorkers?console.warn(`Task queue has ${this.taskQueue.length} pending items and we can't init any more workers.`):this.isWorkerInitializing||(this.isWorkerInitializing=!0,this.workers.push(await Fc(this.workerPath)),this.freeWorkerIndices.push(this.workers.length-1),this.isWorkerInitializing=!1,e())}async destroy(){for(const e of this.workers)e.port.close(),await e.worker.terminate();this.workers.length=0,this.isDestroyed=!0}async run(e){return new Promise((t,r)=>{this.isDestroyed?r("pool destroyed"):(this.taskQueue.push({params:e,resolve:t,reject:r}),this.processEntryFromTaskQueue())})}processEntryFromTaskQueue(){const e=this.freeWorkerIndices.pop();if(void 0===e)return void(this.taskQueue.length>5&&this.initNewWorker(()=>{this.processEntryFromTaskQueue()}));const t=this.taskQueue.pop();void 0!==t?this.workers[e].runTask(t,()=>{this.freeWorkerIndices.push(e),this.processEntryFromTaskQueue()}):this.freeWorkerIndices.push(e)}}async function Fc(e){const{port1:t,port2:r}=new MessageChannel,s=new T.Worker(e,{});return s.postMessage(t,[t]),await new Promise((e,t)=>{s.once("message",e),s.once("error",t)}),s.unref(),new $c(s,r)}class $c{worker;port;constructor(e,t){this.worker=e,this.port=t}runTask(e,t){const r={params:e.params};this.port.once("message",r=>{r.isOk?e.resolve(r.ok):e.reject(new Error(r.error)),t()}),this.port.postMessage(r,r.params.getTransferList())}}var jc;!function(e){e[e.RingCommitment=0]="RingCommitment",e[e.BatchVerifyTickets=1]="BatchVerifyTickets",e[e.VerifySeal=2]="VerifySeal"}(jc||(jc={}));class Gc{data;constructor(e){this.data=e}getTransferList(){return[]}}class qc{params;constructor(e){this.params=e}getTransferList(){return[]}}const zc=Qc.new(e=>{const t=e.params,r=t.method;return r===jc.RingCommitment?Promise.resolve(new Gc((0,xt.hc)(t.keys))):r===jc.BatchVerifyTickets?Promise.resolve(new Gc((0,xt.ZJ)(t.keys,t.ticketsData,t.contextLength))):r===jc.VerifySeal?Promise.resolve(new Gc((0,xt.KG)(t.keys,t.authorIndex,t.signature,t.payload,t.auxData))):void F(r)},null);class Wc{executor;constructor(e){this.executor=e}destroy(){return this.executor.destroy()}static async new({synchronous:e}){const t=A().cpus().length;return new Wc(e?zc:await Vc.initialize(new URL(o(884),o.b),{minWorkers:Math.max(1,Math.floor(t/2)),maxWorkers:t}))}async verifySeal(e,t,r,s,i){return(await this.executor.run(new qc({method:jc.VerifySeal,keys:e,authorIndex:t,signature:r,payload:s,auxData:i}))).data}async getRingCommitment(e){return(await this.executor.run(new qc({method:jc.RingCommitment,keys:e}))).data}async batchVerifyTicket(e,t,r){return(await this.executor.run(new qc({method:jc.BatchVerifyTickets,keys:e,ticketsData:t,contextLength:r}))).data}}const Jc=(e,t)=>ge(e.id,t.id);var Yc,Xc,Zc,el,tl,rl,sl;!function(e){e[e.IncorrectData=1]="IncorrectData",e[e.BadSlot=2]="BadSlot",e[e.UnexpectedTicket=3]="UnexpectedTicket",e[e.BadTicketOrder=4]="BadTicketOrder",e[e.BadTicketProof=5]="BadTicketProof",e[e.BadTicketAttempt=6]="BadTicketAttempt",e[e.DuplicateTicket=7]="DuplicateTicket"}(Yc||(Yc={}));class il{chainSpec;state;bandersnatch;constructor(e,t,r=Wc.new({synchronous:!0})){this.chainSpec=e,this.state=t,this.bandersnatch=r}isEpochChanged(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)>t}isSameEpoch(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)===t}isNextEpoch(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)===t+1}getSlotPhaseIndex(e){return e%this.chainSpec.epochLength}getEntropy(e,t){const[r,...s]=this.state.entropy,i=Ht([r.raw,t]).asOpaque();return this.isEpochChanged(e)?ur.new([i,r,s[0],s[1]],4):ur.new([i,...s],4)}async getValidatorKeys(e){if(!this.isEpochChanged(e)){const{nextValidatorData:e,currentValidatorData:t,previousValidatorData:r,epochRoot:s}=this.state;return ee.ok({nextValidatorData:e,currentValidatorData:t,previousValidatorData:r,epochRoot:s})}const t=this.state.disputesRecords.punishSet,r=this.state.designatedValidatorData.map(e=>!1!==t.has(e.ed25519)?di.create({bandersnatch:se.zero(_t).asOpaque(),ed25519:se.zero(Et).asOpaque(),bls:e.bls,metadata:e.metadata}):e),{nextValidatorData:s,currentValidatorData:i}=this.state,n=await Kc(await this.bandersnatch,r.map(e=>e.bandersnatch));return n.isOk?ee.ok({nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n.ok}):ee.error(Yc.IncorrectData)}outsideInSequencer(e){const t=e.length,r=new Array(t),s=Math.floor(t/2);t%2==1&&(r[s]=e[s]);for(let i=0;i<s;i+=1)r[2*i]=e[i],r[2*i+1]=e[t-i-1];return Pr(r,this.chainSpec)}fallbackKeySequencer(e,t){const r=this.chainSpec.epochLength,s=[],i=t.length;for(let n=Ie(0);n<r;n++){const r=Ce(n),o=Ht([e.raw,r]).raw,a=_e.fromBlob(o).u32()%i;s.push(t[a].bandersnatch)}return Pr(s,this.chainSpec)}getSlotKeySequence(e,t,r){const s=this.getSlotPhaseIndex(this.state.timeslot);return this.isNextEpoch(e)&&s>=this.chainSpec.contestLength&&this.state.ticketsAccumulator.length===this.chainSpec.epochLength?pi.tickets(this.outsideInSequencer(this.state.ticketsAccumulator)):this.isSameEpoch(e)?this.state.sealingKeySeries:pi.keys(this.fallbackKeySequencer(r,t))}getEpochMark(e,t){if(!this.isEpochChanged(e))return null;const r=this.state.entropy;return ls.create({entropy:r[0],ticketsEntropy:r[1],validators:t.map(e=>cs.create(e))})}verifyTickets(e){const t=e.length;for(let r=1;r<t;r++){const t=e[r-1].id.compare(e[r].id);if(t.isEqual())return ee.error(Yc.DuplicateTicket);if(t.isGreater())return ee.error(Yc.BadTicketOrder)}return ee.ok(null)}async getNewTicketAccumulator(e,t,r,s){const i=0===t.length?[]:await Hc(await this.bandersnatch,r.map(e=>e.bandersnatch),t,s),n=t.map((e,t)=>({id:i[t].entropyHash,attempt:e.attempt}));if(!i.every(e=>e.isValid))return ee.error(Yc.BadTicketProof);const o=this.verifyTickets(n);if(o.isError)return ee.error(o.error);if(this.isEpochChanged(e))return ee.ok(n);const a=fr.fromSortedArray(Jc,this.state.ticketsAccumulator),c=fr.fromSortedArray(Jc,n),l=fr.fromTwoSortedCollections(a,c);return a.length+c.length!==l.length?ee.error(Yc.DuplicateTicket):ee.ok(l.array.slice(0,this.chainSpec.epochLength))}getTicketsMark(e){const t=this.getSlotPhaseIndex(this.state.timeslot),r=this.getSlotPhaseIndex(e);return this.isSameEpoch(e)&&t<this.chainSpec.contestLength&&this.chainSpec.contestLength<=r&&this.state.ticketsAccumulator.length===this.chainSpec.epochLength?this.outsideInSequencer(this.state.ticketsAccumulator):null}isExtrinsicLengthValid(e,t){return this.getSlotPhaseIndex(e)<this.chainSpec.contestLength?t.length<=this.chainSpec.maxTicketsPerExtrinsic:0===t.length}areTicketAttemptsValid(e){const t=e.length;for(let r=0;r<t;r++)if(e[r].attempt>=this.chainSpec.ticketsPerValidator)return!1;return!0}getSafroleSealState(e){const t=this.isEpochChanged(e),r=t?this.state.nextValidatorData:this.state.currentValidatorData,s=this.state.entropy[t?1:2];return{currentValidatorData:r,currentEntropy:this.state.entropy[t?2:3],sealingKeySeries:this.getSlotKeySequence(e,r,s)}}async transition(e){if(this.state.timeslot>=e.slot)return ee.error(Yc.BadSlot);if(!this.isExtrinsicLengthValid(e.slot,e.extrinsic))return ee.error(Yc.UnexpectedTicket);if(!this.areTicketAttemptsValid(e.extrinsic))return ee.error(Yc.BadTicketAttempt);const t=await this.getValidatorKeys(e.slot);if(t.isError)return ee.error(t.error);const{nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n}=t.ok,o=this.getEntropy(e.slot,e.entropy),a=this.getSlotKeySequence(e.slot,s,o[2]),c=await this.getNewTicketAccumulator(e.slot,e.extrinsic,this.state.nextValidatorData,o[2]);if(c.isError)return ee.error(c.error);const l={nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n,timeslot:e.slot,entropy:o,sealingKeySeries:a,ticketsAccumulator:c.ok},h={epochMark:this.getEpochMark(e.slot,r),ticketsMark:this.getTicketsMark(e.slot),stateUpdate:l};return ee.ok(h)}}!function(e){e[e.InvalidValidatorIndex=0]="InvalidValidatorIndex",e[e.InvalidValidator=1]="InvalidValidator",e[e.InvalidTicket=2]="InvalidTicket",e[e.IncorrectSeal=3]="IncorrectSeal",e[e.IncorrectEntropySource=4]="IncorrectEntropySource"}(Xc||(Xc={}));class nl{bandersnatch;constructor(e=Wc.new({synchronous:!0})){this.bandersnatch=e}async verifyHeaderSeal(e,t){const r=await this.verifySeal(e,t);if(r.isError)return r;const s=re.blobFromParts(Nc,r.ok.raw),i=await Lc(await this.bandersnatch,t.currentValidatorData.map(e=>e.bandersnatch),e.bandersnatchBlockAuthorIndex.materialize(),e.entropySource.materialize(),s,re.blobFromNumbers([]));return i.isError?ee.error(Xc.IncorrectEntropySource):ee.ok(i.ok)}async verifySeal(e,t){const r=t.currentValidatorData,s=e.bandersnatchBlockAuthorIndex.materialize(),i=r[s];if(void 0===i)return ee.error(Xc.InvalidValidatorIndex);const n=e.timeSlotIndex.materialize(),o=t.sealingKeySeries,a=t.currentEntropy;return o.kind===fi.Tickets?await this.verifySealWithTicket(o.tickets,n,a,r,s,e):await this.verifySealWithKeys(o.keys,i,n,a,r,s,e)}async verifySealWithTicket(e,t,r,s,i,n){const o=t%e.length,{id:a,attempt:c}=e[o],l=re.blobFromParts(Mc,r.raw,new Uint8Array([c])),h=await Lc(await this.bandersnatch,s.map(e=>e.bandersnatch),i,n.seal.materialize(),l,hs(n));return h.isError?ee.error(Xc.IncorrectSeal):a.isEqualTo(h.ok)?ee.ok(h.ok):ee.error(Xc.InvalidTicket)}async verifySealWithKeys(e,t,r,s,i,n,o){if(!e[r%e.length].isEqualTo(t.bandersnatch))return ee.error(Xc.InvalidValidator);const a=re.blobFromParts(Dc,s.raw),c=await Lc(await this.bandersnatch,i.map(e=>e.bandersnatch),n,o.seal.materialize(),a,hs(o));return c.isError?ee.error(Xc.IncorrectSeal):ee.ok(c.ok)}}function ol(e){if(e.length===Zc.Requested)return{status:Zc.Requested};if(e.length===Zc.Available)return{status:Zc.Available,data:[e[0]]};if(e.length===Zc.Unavailable)return{status:Zc.Unavailable,data:[e[0],e[1]]};if(e.length===Zc.Reavailable)return{status:Zc.Reavailable,data:[e[0],e[1],e[2]]};throw new Error(`Invalid slots length: ${e.length}`)}!function(e){e[e.Requested=0]="Requested",e[e.Available=1]="Available",e[e.Unavailable=2]="Unavailable",e[e.Reavailable=3]="Reavailable"}(Zc||(Zc={})),function(e){e[e.AlreadyRequested=0]="AlreadyRequested",e[e.AlreadyAvailable=1]="AlreadyAvailable",e[e.InsufficientFunds=2]="InsufficientFunds"}(el||(el={})),function(e){e[e.DestinationNotFound=0]="DestinationNotFound",e[e.GasTooLow=1]="GasTooLow",e[e.BalanceBelowThreshold=2]="BalanceBelowThreshold"}(tl||(tl={})),function(e){e[e.InvalidService=0]="InvalidService",e[e.InvalidPreimage=1]="InvalidPreimage"}(rl||(rl={})),function(e){e[e.ServiceNotFound=0]="ServiceNotFound",e[e.WasNotRequested=1]="WasNotRequested",e[e.AlreadyProvided=2]="AlreadyProvided"}(sl||(sl={}));class al{source;destination;amount;memo;gas;static Codec=Fe.Class(al,{source:Fe.u32.asOpaque(),destination:Fe.u32.asOpaque(),amount:Fe.u64,memo:Fe.bytes(128),gas:Fe.u64.asOpaque()});constructor(e,t,r,s,i){this.source=e,this.destination=t,this.amount=r,this.memo=s,this.gas=i}static create({source:e,destination:t,amount:r,memo:s,gas:i}){return new al(e,t,r,s,i)}}class cl{services;transfers;authorizationQueues=new Map;yieldedRoot=null;validatorsData=null;privilegedServices=null;constructor(e,t){this.services=e,this.transfers=t}static empty(){return new cl({servicesUpdates:[],servicesRemoved:[],preimages:[],storage:[]},[])}static new(e){return new cl(e,[])}static copyFrom(e){const t={servicesUpdates:[...e.services.servicesUpdates],servicesRemoved:[...e.services.servicesRemoved],preimages:[...e.services.preimages],storage:[...e.services.storage]},r=[...e.transfers],s=new cl(t,r);for(const[t,r]of e.authorizationQueues)s.authorizationQueues.set(t,r);return s.yieldedRoot=e.yieldedRoot,s.validatorsData=null===e.validatorsData?null:[...e.validatorsData],s.privilegedServices=null===e.privilegedServices?null:hi.create({...e.privilegedServices}),s}}class ll{chainSpec;state;currentServiceId;currentTimeslot;updatedState;checkpointedState=null;nextNewServiceId;constructor(e,t,r,s,i,n=cl.empty()){if(this.chainSpec=e,this.state=t,this.currentServiceId=r,this.currentTimeslot=i,this.updatedState=n,this.nextNewServiceId=this.getNextAvailableServiceId(s),null===this.state.getService(this.currentServiceId))throw new Error(`Invalid state initialization. Service info missing for ${this.currentServiceId}.`)}getStateUpdates(){return[this.updatedState,this.checkpointedState]}getNextNewServiceId(){return this.nextNewServiceId}getCurrentServiceInfo(){const e=this.updatedState.services.servicesUpdates.find(e=>e.serviceId===this.currentServiceId);if(void 0!==e)return e.action.account;const t=this.state.getService(this.currentServiceId);return V(t,null!==t,"Service existence in state validated in constructor.").getInfo()}getServiceInfo(e){if(null===e)return null;if(e===this.currentServiceId)return this.getCurrentServiceInfo();const t=this.updatedState.services.servicesRemoved.some(t=>t===e);if(t)return null;const r=this.updatedState.services.servicesUpdates.find(t=>t.serviceId===e&&t.action.kind===Si.Create);if(void 0!==r)return r.action.account;const s=this.state.getService(e);return null===s?null:s.getInfo()}getUpdatedPreimageStatus(e,t){const r=this.updatedState.services.preimages.findLast(r=>r.serviceId===this.currentServiceId&&r.hash.isEqualTo(e)&&BigInt(r.length)===t),s=()=>{const r=this.state.getService(this.currentServiceId),s=hl(t);if(null===s||null===r)return null;const i=r.getLookupHistory(e,s);return null===i?null:new vi(e,s,i)};if(void 0===r)return s();const{action:i}=r;switch(i.kind){case wi.Provide:return new vi(e,r.length,Ii([this.currentTimeslot]));case wi.Remove:{const t=s();return null===t?null:new vi(e,t.length,Ii([...t.slots,this.currentTimeslot]))}case wi.UpdateOrAdd:return i.item}F(i)}isPreviousCodeExpired(e,t,r){const s=this.state.getService(e),i=hl(r),n=null===s||null===i?null:s.getLookupHistory(t,i),o=null===n?null:ol(n);if(o?.status!==Zc.Unavailable)return[!1,"wrong status"];const a=this.currentTimeslot,c=o.data[1]<a-this.chainSpec.preimageExpungePeriod;return[c,c?"":"not expired"]}hasExistingPreimage(e,t){if(null===e)return!1;if(void 0!==this.updatedState.services.preimages.find(r=>r.serviceId===e&&r.hash.isEqualTo(t)))return!0;const r=this.state.getService(e);return void 0!==r&&(r?.hasPreimage(t)??!1)}addPreimageUpdate(e){this.updatedState.services.preimages.push(e)}getNextAvailableServiceId(e){let t=e;const r=2**32-512;for(;;){if(null===this.getServiceInfo(t))return t;t=Or((t-256+1+r)%r+256)}}checkPreimageStatus(e,t){const r=this.getUpdatedPreimageStatus(e,t);return null===r?null:ol(r.slots)}requestPreimage(e,t){const r=this.getUpdatedPreimageStatus(e,t);if(null!==r){const e=r.slots.length;if(e===Zc.Requested)return ee.error(el.AlreadyRequested);if(e===Zc.Available||e===Zc.Reavailable)return ee.error(el.AlreadyAvailable);Q(e===Zc.Unavailable)}const s=this.getCurrentServiceInfo(),i=null!==r,n=i?0:2,o=t-BigInt(r?.length??0),a=s.storageUtilisationCount+n,c=s.storageUtilisationBytes+BigInt(o)+(i?0n:81n);Q(a>=0,`storageUtilisationCount has to be a positive number, got: ${a}`),Q(c>=0,`storageUtilisationBytes has to be a positive number, got: ${c}`);const l=!ve(a),h=!Se(c),u=this.updateServiceStorageUtilisation({overflow:l,value:l?Ie(0):a},{overflow:h,value:h?we(0):c},s);if(u.isError)return ee.error(el.InsufficientFunds,u.details);const d=tc(t);return null===r?this.addPreimageUpdate(Ci.updateOrAdd({serviceId:this.currentServiceId,lookupHistory:new vi(e,d,Ii([]))})):this.addPreimageUpdate(Ci.updateOrAdd({serviceId:this.currentServiceId,lookupHistory:new vi(e,d,Ii([...r.slots,this.currentTimeslot]))})),ee.ok(J)}updateServiceStorageUtilisation(e,t,r){if(e.overflow||t.overflow)return ee.error("insufficient funds");const s=mi.calculateThresholdBalance(e.value,t.value);return r.balance<s?ee.error("insufficient funds"):(this.updateCurrentServiceInfo(mi.create({...r,storageUtilisationBytes:t.value,storageUtilisationCount:e.value})),ee.ok(J))}updateCurrentServiceInfo(e){const t=this.updatedState.services.servicesUpdates.findIndex(e=>e.serviceId===this.currentServiceId),r=-1===t?0:1;this.updatedState.services.servicesUpdates.splice(t,r,ki.update({serviceId:this.currentServiceId,serviceInfo:e}))}forgetPreimage(e,t){const r=this.currentServiceId,s=this.getUpdatedPreimageStatus(e,t);if(null===s)return ee.error(null);const i=ol(s.slots);if(i.status===Zc.Requested)return this.addPreimageUpdate(Ci.remove({serviceId:r,hash:s.hash,length:s.length})),ee.ok(J);const n=this.currentTimeslot;return i.status===Zc.Unavailable?i.data[1]<n-this.chainSpec.preimageExpungePeriod?(this.addPreimageUpdate(Ci.remove({serviceId:r,hash:s.hash,length:s.length})),ee.ok(J)):ee.error(null):i.status===Zc.Available?(this.addPreimageUpdate(Ci.updateOrAdd({serviceId:r,lookupHistory:new vi(s.hash,s.length,Ii([i.data[0],n]))})),ee.ok(J)):i.status===Zc.Reavailable?i.data[1]<n-this.chainSpec.preimageExpungePeriod?(this.addPreimageUpdate(Ci.updateOrAdd({serviceId:r,lookupHistory:new vi(s.hash,s.length,Ii([i.data[2],n]))})),ee.ok(J)):ee.error(null):void F(i)}transfer(e,t,r,s){const i=this.getCurrentServiceInfo(),n=this.getServiceInfo(e);if(null===n||null===e)return ee.error(tl.DestinationNotFound);if(r<n.onTransferMinGas)return ee.error(tl.GasTooLow);const o=i.balance-t;return o<mi.calculateThresholdBalance(i.storageUtilisationCount,i.storageUtilisationBytes)?ee.error(tl.BalanceBelowThreshold):(this.updatedState.transfers.push(al.create({source:this.currentServiceId,destination:e,amount:t,memo:s,gas:r})),this.updateCurrentServiceInfo(mi.create({...i,balance:we(o)})),ee.ok(J))}newService(e,t,r,s){const i=this.nextNewServiceId,n=Ie(2),o=Ee(we(81),t),a=tc(t),c=mi.calculateThresholdBalance(n,o.value),l=this.getCurrentServiceInfo(),h=mi.calculateThresholdBalance(l.storageUtilisationCount,l.storageUtilisationBytes),u=l.balance-c;return u<h||o.overflow?ee.error("insufficient funds"):(this.updatedState.services.servicesUpdates.push(ki.create({serviceId:i,serviceInfo:mi.create({codeHash:e,balance:c,accumulateMinGas:r,onTransferMinGas:s,storageUtilisationBytes:o.value,storageUtilisationCount:n}),lookupHistory:new vi(e.asOpaque(),a,Ii([]))})),this.updateCurrentServiceInfo(mi.create({...l,balance:we(u)})),this.nextNewServiceId=this.getNextAvailableServiceId(function(e){const t=2**32-512;return Or(256+(e-256+42+t)%t)}(i)),ee.ok(i))}upgradeService(e,t,r){const s=this.getCurrentServiceInfo();this.updateCurrentServiceInfo(mi.create({...s,codeHash:e,accumulateMinGas:Ur(t),onTransferMinGas:Ur(r)}))}updateValidatorsData(e){this.updatedState.validatorsData=e}checkpoint(){this.checkpointedState=cl.copyFrom(this.updatedState)}updateAuthorizationQueue(e,t){this.updatedState.authorizationQueues.set(e,t)}updatePrivilegedServices(e,t,r,s){this.updatedState.privilegedServices=hi.create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s.map(([e,t])=>li.create({service:e,gasLimit:t}))})}yield(e){this.updatedState.yieldedRoot=e}providePreimage(e,t){const r=null===e?null:this.state.getService(e);if(null===r||null===e)return ee.error(sl.ServiceNotFound);const s=Kt(t).asOpaque();if(e===this.currentServiceId){const e=this.getUpdatedPreimageStatus(s,we(t.length));if(null===e||!vi.isRequested(e))return ee.error(sl.WasNotRequested)}else{const e=r.getLookupHistory(s,Ie(t.length));if(null===e||!vi.isRequested(e))return ee.error(sl.WasNotRequested)}return this.hasExistingPreimage(e,s)?ee.error(sl.AlreadyProvided):(this.addPreimageUpdate(Ci.provide({serviceId:e,preimage:bi.create({hash:s,blob:t}),slot:this.currentTimeslot})),ee.ok(J))}eject(e,t){const r=this.getServiceInfo(e);if(null===r||null===e)return ee.error(rl.InvalidService,"Service missing");const s=this.getCurrentServiceInfo(),i=se.zero(Ot).asOpaque();if(ec(this.currentServiceId,i.raw),!r.codeHash.isEqualTo(i))return ee.error(rl.InvalidService,"Invalid code hash");if(2!==r.storageUtilisationCount)return ee.error(rl.InvalidPreimage,"Too many storage items");const n=we(81),o=we(((e,...t)=>t.reduce((e,t)=>t<e?e:t,e))(r.storageUtilisationBytes,n)-n),[a,c]=this.isPreviousCodeExpired(e,t,o);if(!a)return ee.error(rl.InvalidPreimage,`Previous code available: ${c}`);const l=Ee(s.balance,r.balance);return l.overflow?ee.error(rl.InvalidService,"Balance overflow"):(this.updateCurrentServiceInfo(mi.create({...s,balance:l.value})),this.updatedState.services.servicesRemoved.push(e),ee.ok(J))}replaceOrAddStorageUpdate(e,t){const r=null===t?xi.remove({serviceId:this.currentServiceId,key:e}):xi.set({serviceId:this.currentServiceId,storage:Ai.create({key:e,value:t})}),s=this.updatedState.services.storage.findIndex(t=>t.serviceId===r.serviceId&&t.key.isEqualTo(e)),i=-1===s?0:1;this.updatedState.services.storage.splice(s,i,r)}read(e,t){if(null===e)return null;if(this.currentServiceId===e){const r=this.updatedState.services.storage.find(r=>r.serviceId===e&&r.key.isEqualTo(t));if(void 0!==r)return r.value}const r=this.state.getService(e);return r?.getStorage(t)??null}write(e,t){const r=this.read(this.currentServiceId,e),s=null===r&&null!==t,i=null!==r&&null===t,n=s?1:i?-1:0,o=(t?.length??0)-(r?.length??0),a=s?BigInt(Ot):i?BigInt(-32):0n,c=this.getCurrentServiceInfo(),l=c.storageUtilisationCount+n,h=c.storageUtilisationBytes+BigInt(o)+a;Q(l>=0,`storageUtilisationCount has to be a positive number, got: ${l}`),Q(h>=0,`storageUtilisationBytes has to be a positive number, got: ${h}`);const u=!ve(l),d=!Se(h),f=this.updateServiceStorageUtilisation({overflow:u,value:u?Ie(0):l},{overflow:d,value:d?we(0):h},c);return f.isError?ee.error("full",f.details):(this.replaceOrAddStorageUpdate(e,t),ee.ok(J))}readSnapshotLength(e){const t=this.state.getService(this.currentServiceId);return t?.getStorage(e)?.length??null}lookup(e,t){if(null===e)return null;const r=this.updatedState.services.preimages.find(r=>r.serviceId===e&&r.hash.isEqualTo(t));if(void 0!==r&&r.action.kind===wi.Provide)return r.action.preimage.blob;const s=this.state.getService(e);return s?.getPreimage(t)??null}}function hl(e){return e>=2n**32n?null:Ie(Number(e))}function ul(e){const t=e.map(e=>e.workPackageSpec.hash);return lr.from(t)}const dl=Fe.object({serviceId:Fe.u32.asOpaque(),entropy:Fe.bytes(Ot).asOpaque(),timeslot:Fe.u32.asOpaque()}),fl=Fe.object({serviceId:Fe.u32.convert(e=>e,e=>e),gas:Fe.u64.convert(e=>we(e),e=>Ur(e))});class gl{currentServiceId;index=eo(0);gasCost=po(10);constructor(e){this.currentServiceId=e}execute(e,t){return t.set(7,we(e.get())),Promise.resolve(void 0)}}const pl=Oe(di.Codec.sizeHint),yl=e=>we(e);var ml,bl,Al;!function(e){e[e.SourcePageFault=0]="SourcePageFault",e[e.DestinationPageFault=1]="DestinationPageFault",e[e.NoMachine=2]="NoMachine"}(ml||(ml={})),function(e){e[e.NoMachine=0]="NoMachine",e[e.InvalidPage=1]="InvalidPage"}(bl||(bl={})),Symbol("Machine index not found."),Symbol("Too many segments already exported.");class Il{currentServiceId;fetch;index=eo(18);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.fetch=t}async execute(e,t,r){const s=this.getValue(t),i=t.get(7),n=we(s?.length??0),o=xe(t.get(8),n),a=xe(t.get(9),we(n-o)),c=null===s?new Uint8Array:s.raw.subarray(Number(o),Number(o+a));if(r.storeFrom(i,c).isError)return to.Panic;t.set(7,null===s?za.NONE:n)}getValue(e){const t=tc(e.get(10));if(t===Al.Constants)return this.fetch.constants();if(t===Al.Entropy)return this.fetch.entropy();if(t===Al.AuthorizerTrace)return this.fetch.authorizerTrace();if(t===Al.OtherWorkItemExtrinsics){const t=e.get(11),r=e.get(12);return this.fetch.workItemExtrinsic(t,r)}if(t===Al.MyExtrinsics){const t=e.get(11);return this.fetch.workItemExtrinsic(null,t)}if(t===Al.OtherWorkItemImports){const t=e.get(11),r=e.get(12);return this.fetch.workItemImport(t,r)}if(t===Al.MyImports){const t=e.get(11);return this.fetch.workItemImport(null,t)}if(t===Al.WorkPackage)return this.fetch.workPackage();if(t===Al.Authorizer)return this.fetch.authorizer();if(t===Al.AuthorizationToken)return this.fetch.authorizationToken();if(t===Al.RefineContext)return this.fetch.refineContext();if(t===Al.AllWorkItems)return this.fetch.allWorkItems();if(t===Al.OneWorkItem){const t=e.get(11);return this.fetch.oneWorkItem(t)}if(t===Al.WorkItemPayload){const t=e.get(11);return this.fetch.workItemPayload(t)}if(t===Al.AllOperands)return this.fetch.allOperands();if(t===Al.OneOperand){const t=e.get(11);return this.fetch.oneOperand(t)}if(t===Al.AllTransfers)return this.fetch.allTransfers();if(t===Al.OneTransfer){const t=e.get(11);return this.fetch.oneTransfer(t)}return null}}!function(e){e[e.Constants=0]="Constants",e[e.Entropy=1]="Entropy",e[e.AuthorizerTrace=2]="AuthorizerTrace",e[e.OtherWorkItemExtrinsics=3]="OtherWorkItemExtrinsics",e[e.MyExtrinsics=4]="MyExtrinsics",e[e.OtherWorkItemImports=5]="OtherWorkItemImports",e[e.MyImports=6]="MyImports",e[e.WorkPackage=7]="WorkPackage",e[e.Authorizer=8]="Authorizer",e[e.AuthorizationToken=9]="AuthorizationToken",e[e.RefineContext=10]="RefineContext",e[e.AllWorkItems=11]="AllWorkItems",e[e.OneWorkItem=12]="OneWorkItem",e[e.WorkItemPayload=13]="WorkItemPayload",e[e.AllOperands=14]="AllOperands",e[e.OneOperand=15]="OneOperand",e[e.AllTransfers=16]="AllTransfers",e[e.OneTransfer=17]="OneTransfer"}(Al||(Al={}));class vl{currentServiceId;account;index=eo(4);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=Xa(7,t,this.currentServiceId),i=t.get(8),n=this.account.getServiceInfo(s),o=null===n?re.empty():Ne.encodeObject(wl,{...n,thresholdBalance:mi.calculateThresholdBalance(n.storageUtilisationCount,n.storageUtilisationBytes)});if(r.storeFrom(i,o.raw).isError)return to.Panic;null!==n?t.set(7,za.OK):t.set(7,za.NONE)}}const wl=Fe.object({codeHash:Fe.bytes(Ot),balance:Fe.u64,thresholdBalance:Fe.u64,accumulateMinGas:Fe.u64.convert(e=>e,Ur),onTransferMinGas:Fe.u64.convert(e=>e,Ur),storageUtilisationBytes:Fe.u64,storageUtilisationCount:Fe.u32},"ServiceAccountInfoWithThresholdBalance"),Sl=m.new(void 0,"host-calls"),El=new TextDecoder("utf8");class Cl{currentServiceId;index=eo(100);gasCost=po(0);constructor(e){this.currentServiceId=e}execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=t.get(10),a=t.get(11),c=new Uint8Array(tc(n)),l=new Uint8Array(tc(a));return 0n!==i&&r.loadInto(c,i),r.loadInto(l,o),Sl.trace(`[${this.currentServiceId}] [${s}] ${El.decode(c)} ${El.decode(l)}`),Promise.resolve(void 0)}}class kl{currentServiceId;account;index=eo(1);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=Xa(7,t,this.currentServiceId),i=t.get(8),n=t.get(9),o=se.zero(Ot);if(r.loadInto(o.raw,i).isError)return to.Panic;const a=this.account.lookup(s,o),c=we(null===a?0:a.raw.length),l=t.get(10),h=t.get(11),u=xe(l,c),d=xe(h,we(c-u)),f=null===a?new Uint8Array(0):a.raw.subarray(Number(u),Number(u+d));if(r.storeFrom(n,f).isError)return to.Panic;null!==a?t.set(7,c):t.set(7,za.NONE)}}class xl{currentServiceId;account;index=eo(2);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=Xa(7,t,this.currentServiceId),i=t.get(8),n=t.get(9),o=t.get(10),a=tc(n),c=new Uint8Array(4+a);if(null!==s&&ec(s,c),r.loadInto(c.subarray(4),i).isError)return to.Panic;const l=Kt(c),h=this.account.read(s,l),u=we(null===h?0:h.raw.length),d=t.get(11),f=t.get(12),g=xe(d,u),p=xe(f,we(u-g)),y=null===h?new Uint8Array(0):h.raw.subarray(Number(g),Number(g+p));if(r.storeFrom(o,y).isError)return to.Panic;null!==h?t.set(7,u):t.set(7,za.NONE)}}class _l{currentServiceId;account;index=eo(3);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=t.get(10),a=tc(i),c=new Uint8Array(4+a);if(ec(this.currentServiceId,c),r.loadInto(c.subarray(4),s).isError)return to.Panic;const l=Kt(c),h=tc(o),u=new Uint8Array(h);if(r.loadInto(u,n).isError)return to.Panic;const d=0n===o?null:re.blobFrom(u);if(this.account.write(l,d).isError)return void t.set(7,za.FULL);const f=this.account.readSnapshotLength(l);t.set(7,null===f?za.NONE:we(f))}}const Bl=[class{currentServiceId;partialState;index=eo(5);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=Za(t.get(7)),i=Za(t.get(8)),n=Za(t.get(9)),o=t.get(10),a=t.get(11),c=new Array,l=new Uint8Array(Oe(fl.sizeHint)),h=_e.fromBlob(l);let u=o;for(let e=0n;e<a;e+=1n){if(h.resetTo(0),r.loadInto(l,u).isError)return to.Panic;const{serviceId:e,gas:t}=h.object(fl);c.push([e,t]),u=we(u+we(h.bytesRead()))}null!==s&&null!==i&&null!==n?(this.partialState.updatePrivilegedServices(s,i,n,c),t.set(7,za.OK)):t.set(7,za.WHO)}},class{currentServiceId;partialState;chainSpec;index=eo(6);gasCost=po(10);constructor(e,t,r){this.currentServiceId=e,this.partialState=t,this.chainSpec=r}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=new Uint8Array(2560);if(r.loadInto(n,i).isError)return to.Panic;if(s>=this.chainSpec.coresCount)return void t.set(7,za.CORE);const o=_e.fromBlob(n).sequenceFixLen(Fe.bytes(Ot),80),a=ur.new(o,80);t.set(7,za.OK),this.partialState.updateAuthorizationQueue(Tr(Number(s)),a)}},class{currentServiceId;partialState;chainSpec;index=eo(7);gasCost=po(10);constructor(e,t,r){this.currentServiceId=e,this.partialState=t,this.chainSpec=r}async execute(e,t,r){const s=t.get(7),i=new Uint8Array(pl*this.chainSpec.validatorsCount);if(r.loadInto(i,s).isError)return to.Panic;const n=_e.fromBlob(i).sequenceFixLen(di.Codec,this.chainSpec.validatorsCount);t.set(7,za.OK),this.partialState.updateValidatorsData(Dr(n,this.chainSpec))}},class{currentServiceId;partialState;index=eo(8);gasCost=po(10);gasHostCall;constructor(e,t){this.currentServiceId=e,this.partialState=t,this.gasHostCall=new gl(e)}async execute(e,t){await this.gasHostCall.execute(e,t),this.partialState.checkpoint()}},class{currentServiceId;partialState;index=eo(9);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=Ur(t.get(9)),o=Ur(t.get(10)),a=se.zero(Ot);if(r.loadInto(a.raw,s).isError)return to.Panic;const c=this.partialState.newService(a.asOpaque(),i,n,o);c.isOk?t.set(7,we(c.ok)):t.set(7,za.CASH)}},class{currentServiceId;partialState;index=eo(10);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=se.zero(Ot);if(r.loadInto(o.raw,s).isError)return to.Panic;this.partialState.upgradeService(o.asOpaque(),i,n),t.set(7,za.OK)}},class{currentServiceId;partialState;index=eo(11);gasCost=e=>{const t=10n+e.get(9);return mo(t)};constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=Za(t.get(7)),i=t.get(8),n=Ur(t.get(9)),o=t.get(10),a=se.zero(128);if(r.loadInto(a.raw,o).isError)return to.Panic;const c=this.partialState.transfer(s,i,n,a);if(c.isOk)return void t.set(7,za.OK);const l=c.error;l!==tl.DestinationNotFound?l!==tl.GasTooLow?l!==tl.BalanceBelowThreshold?F(l):t.set(7,za.CASH):t.set(7,za.LOW):t.set(7,za.WHO)}},class{currentServiceId;partialState;index=eo(12);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=Za(t.get(7)),i=t.get(8),n=se.zero(Ot).asOpaque();if(r.loadInto(n.raw,i).isError)return to.Panic;if(s===this.currentServiceId)return void t.set(7,za.WHO);const o=this.partialState.eject(s,n);if(o.isOk)return void t.set(7,za.OK);const a=o.error;a===rl.InvalidService?t.set(7,za.WHO):a===rl.InvalidPreimage?t.set(7,za.HUH):F(a)}},class{currentServiceId;partialState;index=eo(13);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=se.zero(Ot);if(r.loadInto(n.raw,s).isError)return to.Panic;const o=this.partialState.checkPreimageStatus(n.asOpaque(),i),a=we(0n);if(null===o)return t.set(7,za.NONE),void t.set(8,a);switch(o.status){case Zc.Requested:return t.set(7,a),void t.set(8,a);case Zc.Available:return t.set(7,we(1n+(BigInt(o.data[0])<<32n))),void t.set(8,a);case Zc.Unavailable:return t.set(7,we(2n+(BigInt(o.data[0])<<32n))),void t.set(8,we(o.data[1]));case Zc.Reavailable:return t.set(7,we(3n+(BigInt(o.data[0])<<32n))),void t.set(8,we((BigInt(o.data[2])<<32n)+BigInt(o.data[1])))}}},class{currentServiceId;partialState;index=eo(14);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=se.zero(Ot);if(r.loadInto(n.raw,s).isError)return to.Panic;const o=this.partialState.requestPreimage(n.asOpaque(),i);if(o.isOk)return void t.set(7,za.OK);const a=o.error;a!==el.AlreadyAvailable&&a!==el.AlreadyRequested?a!==el.InsufficientFunds?F(a):t.set(7,za.FULL):t.set(7,za.HUH)}},class{currentServiceId;partialState;index=eo(15);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=se.zero(Ot);if(r.loadInto(n.raw,s).isError)return to.Panic;this.partialState.forgetPreimage(n.asOpaque(),i).isOk?t.set(7,za.OK):t.set(7,za.HUH)}},class{currentServiceId;partialState;index=eo(16);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=se.zero(Ot);if(r.loadInto(i.raw,s).isError)return to.Panic;this.partialState.yield(i),t.set(7,za.OK)}},class{currentServiceId;partialState;index=eo(27);gasCost=po(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=Xa(7,t,this.currentServiceId),i=t.get(8),n=tc(t.get(9)),o=re.blobFrom(new Uint8Array(n));if(r.loadInto(o.raw,i).isError)return to.Panic;const a=this.partialState.providePreimage(s,o);if(a.isOk)return void t.set(7,za.OK);const c=a.error;c!==sl.ServiceNotFound?c!==sl.WasNotRequested&&c!==sl.AlreadyProvided?F(c):t.set(7,za.HUH):t.set(7,za.WHO)}}];var Rl;!function(e){e.IS_AUTHORIZED=yl(0),e.REFINE=yl(0),e.ACCUMULATE=yl(5),e.ON_TRANSFER=yl(10)}(Rl||(Rl={}));class Ol{serviceCode;entrypoint;pvm;hostCalls;pvmInstanceManager=new qa(4);constructor(e,t,r){this.serviceCode=e,this.entrypoint=r,this.hostCalls=new sc(...t),this.pvm=new Ga(this.pvmInstanceManager,this.hostCalls)}static prepareAccumulateHostCalls(e,t,r){const s=Bl.map(s=>new s(e,t.partialState,r)),i=[new Cl(e),new gl(e),new xl(e,t.serviceExternalities),new _l(e,t.serviceExternalities),new Il(e,t.fetchExternalities),new kl(e,t.serviceExternalities),new vl(e,t.serviceExternalities)];return s.concat(i)}static prepareOnTransferHostCalls(e,t){return[new Cl(e),new gl(e),new xl(e,t.partialState),new _l(e,t.partialState),new kl(e,t.partialState),new vl(e,t.partialState)]}async run(e,t){const r=pc.fromSpi(this.serviceCode.raw,e.raw,!0);return this.pvm.runProgram(r.code,Number(this.entrypoint),t,r.registers,r.memory)}static createAccumulateExecutor(e,t,r,s){const i=Ol.prepareAccumulateHostCalls(e,r,s);return new Ol(t,i,Rl.ACCUMULATE)}static createOnTransferExecutor(e,t,r){const s=Ol.prepareOnTransferHostCalls(e,r);return new Ol(t,s,Rl.ON_TRANSFER)}}const Ul=Fe.object({timeslot:Fe.u32.asOpaque(),serviceId:Fe.u32.asOpaque(),transfers:Fe.sequenceVarLen(al.Codec)});var Tl;!function(e){e[e.ServiceBalanceOverflow=1]="ServiceBalanceOverflow",e[e.ServiceInfoNotExist=2]="ServiceInfoNotExist"}(Tl||(Tl={}));const Nl=m.new(void 0,"deferred-transfers");class Dl{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getPotentiallyUpdatedServiceInfo(e,t,r){if(r.includes(e))return null;const s=t.find(t=>t.serviceId===e);return void 0!==s?s.action.account:this.state.getService(e)?.getInfo()??null}getPotentiallyUpdatedPreimage(e,t,r){const s=e.findLast(e=>e.serviceId===t&&e.hash.isEqualTo(r));if(void 0===s)return this.state.getService(t)?.getPreimage(r)??null;switch(s.action.kind){case wi.Provide:return s.action.preimage.blob;case wi.Remove:return null;case wi.UpdateOrAdd:return this.state.getService(t)?.getPreimage(r)??null}}async transition({pendingTransfers:e,timeslot:t,servicesUpdates:r,servicesRemoved:s,preimages:i}){const n=new Map,o=[...r],a=function(e){const t=new Set;for(const r of e)t.add(r);return Array.from(t)}(e.flatMap(e=>[e.source,e.destination]));for(const r of a){const a=e.filter(e=>e.destination===r),c=this.getPotentiallyUpdatedServiceInfo(r,o,s);if(null===c)return ee.error(Tl.ServiceInfoNotExist);const l=c.codeHash,h=this.getPotentiallyUpdatedPreimage(i,r,l.asOpaque()),u=o.findIndex(e=>e.serviceId===r),d=Ee(c.balance,...a.map(e=>e.amount));if(d.overflow)return ee.error(Tl.ServiceBalanceOverflow);const f=mi.create({...c,balance:d.value}),g=ki.update({serviceId:r,serviceInfo:f});if(u<0||o[u].action.kind===Si.Create?o.push(g):o[u]=g,null===h||0===a.length){Nl.trace(`Skipping ON_TRANSFER execution for service ${r}, code is null or no transfers`),n.set(r,{count:Ie(a.length),gasUsed:Ur(0)});continue}const p=new ll(this.chainSpec,this.state,r,r,t),y=Ol.createOnTransferExecutor(r,h,{partialState:p}),m=Ne.encodeObject(Ul,{timeslot:t,serviceId:r,transfers:a},this.chainSpec),b=a.reduce((e,t)=>e+t.gas,0n),{consumedGas:A}=await y.run(m,mo(b));n.set(r,{count:Ie(a.length),gasUsed:Ur(A)})}return ee.ok({servicesUpdates:o,transferStatistics:n})}}class Ml extends q{static Codec=Fe.Class(Ml,{hash:Fe.bytes(Ot).asOpaque(),exportsRoot:Fe.bytes(Ot).asOpaque(),authorizerHash:Fe.bytes(Ot).asOpaque(),payloadHash:Fe.bytes(Ot),gas:Fe.varU64.asOpaque(),result:Wr.Codec,authorizationOutput:Fe.blob});hash;exportsRoot;authorizerHash;payloadHash;gas;result;authorizationOutput;static create({authorizationOutput:e,authorizerHash:t,exportsRoot:r,gas:s,hash:i,payloadHash:n,result:o}){return new Ml({gas:Ur(s),payloadHash:n.asOpaque(),result:o,authorizationOutput:re.blobFrom(e.raw),exportsRoot:r.asOpaque(),hash:i.asOpaque(),authorizerHash:t.asOpaque()})}constructor(e){super(),this.gas=e.gas,this.payloadHash=e.payloadHash,this.result=e.result,this.authorizationOutput=e.authorizationOutput,this.exportsRoot=e.exportsRoot,this.hash=e.hash,this.authorizerHash=e.authorizerHash}static new(e){return new Ml(e)}}class Pl{static Codec=Fe.Class(Pl,{hash:Fe.bytes(Ot).asOpaque(),exportsRoot:Fe.bytes(Ot).asOpaque(),authorizerHash:Fe.bytes(Ot).asOpaque(),authorizationOutput:Fe.blob,payloadHash:Fe.bytes(Ot),result:Wr.Codec});hash;exportsRoot;authorizerHash;authorizationOutput;payloadHash;result;static create({authorizationOutput:e,authorizerHash:t,exportsRoot:r,hash:s,payloadHash:i,result:n}){return new Pl({payloadHash:i,result:n,authorizationOutput:e,exportsRoot:r,hash:s,authorizerHash:t})}constructor(e){this.payloadHash=e.payloadHash,this.result=e.result,this.authorizationOutput=e.authorizationOutput,this.exportsRoot=e.exportsRoot,this.hash=e.hash,this.authorizerHash=e.authorizerHash}static new(e){return new Pl(e)}}class Ll{operands;reportsLength;gasCost;constructor(e,t,r){this.operands=e,this.reportsLength=t,this.gasCost=r}static empty(){return new Ll([],Ie(0),Ur(0n))}}class Hl{reportsDataByServiceId;autoAccumulateServicesByServiceId;serviceIds;constructor(e,t){const{autoAccumulateServicesByServiceId:r,serviceIds:s}=this.transformAutoAccumulateServices(t);this.autoAccumulateServicesByServiceId=r;const{reportsDataByServiceId:i,serviceIds:n}=this.transformReports(e);this.reportsDataByServiceId=i,this.serviceIds=this.mergeServiceIds(n,s)}mergeServiceIds(e,t){const r=new Set;for(const t of e)r.add(t);for(const e of t)r.add(e);return Array.from(r)}transformAutoAccumulateServices(e){const t=new Set,r=new Map;for(const s of e)r.set(s.service,s),t.add(s.service);return{autoAccumulateServicesByServiceId:r,serviceIds:t}}transformReports(e){const t=new Map,r=new Set;for(const s of e)for(const e of s.results){const i=e.serviceId;r.add(i);const n=t.get(i)??Ll.empty();n.reportsLength=Ie(n.reportsLength+1),n.gasCost=Ur(n.gasCost+e.gas),n.operands.push(Ml.new({gas:e.gas,payloadHash:e.payloadHash,result:e.result,authorizationOutput:s.authorizationOutput,exportsRoot:s.workPackageSpec.exportsRoot,hash:s.workPackageSpec.hash,authorizerHash:s.authorizerHash})),t.set(i,n)}for(const e of r){const r=t.get(e)??null,s=this.autoAccumulateServicesByServiceId.get(e)??null;null!==r&&null!==s&&(r.gasCost=Ur(r.gasCost+s.gasLimit))}return{reportsDataByServiceId:t,serviceIds:r}}getOperands(e){return this.reportsDataByServiceId.get(e)?.operands??[]}getReportsLength(e){return this.reportsDataByServiceId.get(e)?.reportsLength??Ie(0)}getGasCost(e){return this.reportsDataByServiceId.get(e)?.gasCost??Ur(0n)}getServiceIds(){return this.serviceIds}}class Kl{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getWorkReportsToAccumulateImmediately(e){return e.filter(e=>0===e.context.prerequisites.length&&0===e.segmentRootLookup.length)}getWorkReportDependencies(e){return Array.from(lr.from(e.context.prerequisites.concat(e.segmentRootLookup.map(e=>e.workPackageHash))))}getWorkReportsToAccumulateLater(e){const t=this.state.recentlyAccumulated.flatMap(e=>Array.from(e));return Ql(e.filter(e=>e.context.prerequisites.length>0||e.segmentRootLookup.length>0).map(e=>Ki.create({report:e,dependencies:this.getWorkReportDependencies(e)})),lr.from(t))}enqueueReports(e){const t=[];let r=[...e];for(;r.length>0;){const e=r.filter(({dependencies:e})=>0===e.length).map(({report:e})=>e);if(0===e.length)return t;t.push(...e),r=Ql(r,ul(e))}return t}getQueueFromState(e){const t=e%this.chainSpec.epochLength,r=this.state.accumulationQueue.slice(t),s=this.state.accumulationQueue.slice(0,t);return r.concat(s).flat()}}function Ql(e,t){return e.filter(({report:e})=>!t.has(e.workPackageSpec.hash)).map(e=>{const{report:r,dependencies:s}=e;return Ki.create({report:r,dependencies:s.filter(e=>!t.has(e))})})}var Vl;!function(e){e[e.InvalidAnchor=0]="InvalidAnchor",e[e.InvalidOrder=1]="InvalidOrder",e[e.InvalidSignature=2]="InvalidSignature",e[e.NoReportPending=3]="NoReportPending",e[e.InvalidValidatorIndex=4]="InvalidValidatorIndex"}(Vl||(Vl={}));class Fl{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}async transition(e){const t=this.chainSpec.coresCount,r=this.verifySignatures(e.assurances),s=e.assurances.map(e=>e.materialize()),i=ur.new(Array(t).fill(0),t);let n=-1;for(const r of s){const{anchor:s,validatorIndex:o,bitfield:a}=r;if(!s.isEqualTo(e.parentHash))return ee.error(Vl.InvalidAnchor,`anchor: expected: ${e.parentHash}, got ${s}`);if(n>=o)return ee.error(Vl.InvalidOrder,`order: expected: ${n+1}, got: ${o}`);n=r.validatorIndex,Q(a.bitLength===t,`Invalid bitfield length of ${a.bitLength}`);const c=a.indicesOfSetBits();for(const e of c)i[e]+=1}const o=[],a=[],c=this.chainSpec.validatorsSuperMajority;for(let r=0;r<t;r++){const t=i[r],s=this.state.availabilityAssignment[r],n=null!==s;if(t>0&&!n)return ee.error(Vl.NoReportPending,`no report pending for core ${r} yet we got an assurance`);n&&(e.slot>=s.timeout+5&&a.push(r),t>=c&&(o.push(s.workReport.data),a.push(r)))}const l=await r;if(l.isError)return l;const h=this.state.availabilityAssignment.slice();for(const e of a)h[e]=null;return ee.ok({availableReports:o,stateUpdate:{availabilityAssignment:h}})}async verifySignatures(e){const t=this.state.currentValidatorData,r=[];for(const s of e){const e=s.view(),i=t[e.validatorIndex.materialize()];if(void 0===i)return ee.error(Vl.InvalidValidatorIndex);r.push({signature:e.signature.materialize(),key:i.ed25519,message:jl(e.anchor.encoded(),e.bitfield.encoded())})}const s=await kt(r),i=s.every(e=>e);if(!i){const e=s.reduce((e,t,r)=>t?e:e.concat(r),[]);return ee.error(Vl.InvalidSignature,`invalid signatures at ${e.join(", ")}`)}return ee.ok(J)}}const $l=re.blobFromString("jam_available").raw;function jl(e,t){return re.blobFromParts($l,Kt(re.blobFromParts(e.raw,t.raw)).raw)}const Gl=re.blobFromString("peak");class ql{hasher;mountains;static empty(e){return new ql(e)}static fromPeaks(e,t){return new ql(e,t.peaks.reduce((e,t,r)=>(null!==t&&e.push(zl.fromPeak(t,2**r)),e),[]).reverse())}constructor(e,t=[]){this.hasher=e,this.mountains=t}append(e){let t=zl.fromPeak(e,1);for(;;){const e=this.mountains.pop();if(void 0===e)return void this.mountains.push(t);if(e.size!==t.size)return this.mountains.push(e),void this.mountains.push(t);t=e.mergeWith(this.hasher,t)}}getSuperPeakHash(){if(0===this.mountains.length)return se.zero(Ot).asOpaque();const e=this.mountains.slice().reverse(),t=e.length;let r=e[0].peak;for(let s=1;s<t;s++){const t=e[s];r=this.hasher.hashConcatPrepend(Gl,r,t.peak)}return r}getPeaks(){const e=[],t=this.mountains;let r=1,s=t.length-1;for(;s>=0;){const i=t[s];i.size>=r&&i.size<2*r?(e.push(i.peak),s-=1):e.push(null),r<<=1}return{peaks:e}}}class zl{peak;size;constructor(e,t){this.peak=e,this.size=t}static fromPeak(e,t){return new zl(e,t)}static fromChildren(e,t){const[r,s]=t,i=e.hashConcat(r.peak,s.peak),n=r.size+s.size;return new zl(i,n)}mergeWith(e,t){return zl.fromChildren(e,[this,t])}toString(){return`${this.size} @ ${this.peak}`}}var Wl;!function(e){e[e.BadCoreIndex=0]="BadCoreIndex",e[e.FutureReportSlot=1]="FutureReportSlot",e[e.ReportEpochBeforeLast=2]="ReportEpochBeforeLast",e[e.InsufficientGuarantees=3]="InsufficientGuarantees",e[e.OutOfOrderGuarantee=4]="OutOfOrderGuarantee",e[e.NotSortedOrUniqueGuarantors=5]="NotSortedOrUniqueGuarantors",e[e.WrongAssignment=6]="WrongAssignment",e[e.CoreEngaged=7]="CoreEngaged",e[e.AnchorNotRecent=8]="AnchorNotRecent",e[e.BadServiceId=9]="BadServiceId",e[e.BadCodeHash=10]="BadCodeHash",e[e.DependencyMissing=11]="DependencyMissing",e[e.DuplicatePackage=12]="DuplicatePackage",e[e.BadStateRoot=13]="BadStateRoot",e[e.BadBeefyMmrRoot=14]="BadBeefyMmrRoot",e[e.CoreUnauthorized=15]="CoreUnauthorized",e[e.BadValidatorIndex=16]="BadValidatorIndex",e[e.WorkReportGasTooHigh=17]="WorkReportGasTooHigh",e[e.ServiceItemGasTooLow=18]="ServiceItemGasTooLow",e[e.TooManyDependencies=19]="TooManyDependencies",e[e.SegmentRootLookupInvalid=20]="SegmentRootLookupInvalid",e[e.BadSignature=21]="BadSignature",e[e.WorkReportTooBig=22]="WorkReportTooBig"}(Wl||(Wl={}));const Jl=Fe.object({B_I:Fe.u64,B_L:Fe.u64,B_S:Fe.u64,C:Fe.u16,D:Fe.u32,E:Fe.u32,G_A:Fe.u64,G_I:Fe.u64,G_R:Fe.u64,G_T:Fe.u64,H:Fe.u16,I:Fe.u16,J:Fe.u16,L:Fe.u32,O:Fe.u16,P:Fe.u16,Q:Fe.u16,R:Fe.u16,S:Fe.u16,T:Fe.u16,U:Fe.u16,V:Fe.u16,W_A:Fe.u16,W_B:Fe.u32,W_C:Fe.u32,W_E:Fe.u32,W_G:Fe.u32,W_M:Fe.u32,W_P:Fe.u32,W_R:Fe.u32,W_T:Fe.u32,W_X:Fe.u32,Y:Fe.u32}),Yl=new Map;class Xl{entropyHash;operands;chainSpec;constructor(e,t,r){this.entropyHash=e,this.operands=t,this.chainSpec=r}constants(){return function(e){const t=Yl.get(e);if(void 0!==t)return t;const r=Ne.encodeObject(Jl,{B_I:we(10n),B_L:we(1n),B_S:we(100n),C:be(e.coresCount),D:Ie(e.preimageExpungePeriod),E:Ie(e.epochLength),G_A:we(eh),G_I:we(5e7),G_R:we(5e9),G_T:we(th),H:be(8),I:be(jr),J:be(8),L:Ie(14400),O:be(8),P:be(e.slotDuration),Q:be(80),R:be(0),S:be(1024),T:be(e.rotationPeriod),U:be(5),V:be(0),W_A:be(e.validatorsCount),W_B:Ie(13794305),W_C:Ie(4e6),W_E:Ie(684),W_G:Ie(4104),W_M:Ie(3072),W_P:Ie(6),W_R:Ie(49152),W_T:Ie(128),W_X:Ie(3072),Y:Ie(e.contestLength)});return Yl.set(e,r),r}(this.chainSpec)}entropy(){return this.entropyHash.asOpaque()}authorizerTrace(){return null}workItemExtrinsic(e,t){return null}workItemImport(e,t){return null}workPackage(){return null}authorizer(){return null}authorizationToken(){return null}refineContext(){return null}allWorkItems(){return null}oneWorkItem(e){return null}workItemPayload(e){return null}allOperands(){return K.is(D.V0_6_4)?Ne.encodeObject(Fe.sequenceVarLen(Pl.Codec),this.operands,this.chainSpec):Ne.encodeObject(Fe.sequenceVarLen(Ml.Codec),this.operands,this.chainSpec)}oneOperand(e){if(e>=2n**32n)return null;const t=this.operands[Number(e)];return void 0===t?null:K.isGreaterOrEqual(D.V0_6_5)?Ne.encodeObject(Ml.Codec,t,this.chainSpec):Ne.encodeObject(Pl.Codec,t,this.chainSpec)}allTransfers(){return null}oneTransfer(e){return null}}var Zl;!function(e){e[e.NoService=0]="NoService",e[e.NoPreimage=1]="NoPreimage"}(Zl||(Zl={}));const eh=10000000n,th=3500000000n,rh=m.new(void 0,"accumulate"),sh=Fe.object({slot:Fe.u32.asOpaque(),serviceId:Fe.u32.asOpaque(),operands:Fe.sequenceVarLen(Pl.Codec)}),ih=Fe.object({slot:Fe.u32.asOpaque(),serviceId:Fe.u32.asOpaque(),operands:Fe.sequenceVarLen(Ml.Codec)}),nh=Fe.object({slot:Fe.varU32.asOpaque(),serviceId:Fe.varU32.asOpaque(),operands:Fe.varU32});class oh{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}findReportCutoffIndex(e,t){const r=t.length;let s=0n;for(let i=0;i<r;i++){const r=t[i].results.map(e=>e.gas).reduce((e,t)=>e+t,0n);if(s+r>e)return i;s+=r}return r}async pvmAccumulateInvocation(e,t,r,s,i,n){const o=this.state.getService(t);if(null===o)return rh.log(`Service with id ${t} not found.`),ee.error(Zl.NoService);const a=o.getInfo().codeHash,c=o.getPreimage(a.asOpaque());if(null===c)return rh.log(`Code with hash ${a} not found for service ${t}.`),ee.error(Zl.NoPreimage);const l=function({serviceId:e,entropy:t,timeslot:r},s){const i=ke(Kt(Ne.encodeObject(dl,{serviceId:e,entropy:t,timeslot:r},s)).raw.subarray(0,4))>>>0;return Or(i%(2**32-512)+256)}({serviceId:t,entropy:i,timeslot:e},this.chainSpec),h=new ll(this.chainSpec,this.state,t,l,e,n),u={partialState:h,serviceExternalities:h,fetchExternalities:new Xl(i,r,this.chainSpec)},d=Ol.createAccumulateExecutor(t,c,u,this.chainSpec);let f=re.empty();f=K.is(D.V0_6_4)?Ne.encodeObject(sh,{slot:e,serviceId:t,operands:r},this.chainSpec):K.is(D.V0_6_5)?Ne.encodeObject(ih,{slot:e,serviceId:t,operands:r},this.chainSpec):Ne.encodeObject(nh,{slot:e,serviceId:t,operands:Ie(r.length)});const g=await d.run(f,mo(s)),[p,y]=h.getStateUpdates();if(g.hasStatus()){const e=g.status;if(e===Xn.OOG||e===Xn.PANIC)return ee.ok({stateUpdate:y,consumedGas:Ur(g.consumedGas)})}if(g.hasMemorySlice()&&g.memorySlice.length===Ot){const e=se.fromBlob(g.memorySlice,Ot);p.yieldedRoot=e.asOpaque()}return ee.ok({stateUpdate:p,consumedGas:Ur(g.consumedGas)})}async accumulateSingleService(e,t,r,s,i,n){rh.trace(`Accumulating service ${e}, items: ${t.length} at slot: ${s}.`);const o=await this.pvmAccumulateInvocation(s,e,t,r,i,n);return o.isError?(rh.trace(`Accumulation failed for ${e}.`),{stateUpdate:null,consumedGas:r}):(rh.trace(`Accumulation successful for ${e}.`),o.ok)}async accumulateSequentially(e,t,r,s,i,n){const o=this.findReportCutoffIndex(e,t);if(0===o)return{accumulatedReports:Ie(0),gasCost:Ur(0),yieldedRoots:[],pendingTransfers:[],stateUpdates:[]};const a=t.slice(0,o),c=this.state.privilegedServices.autoAccumulateServices,l=new Hl(a,c),h=t.slice(o),{gasCost:u,yieldedRoots:d,pendingTransfers:f,stateUpdates:g,...p}=await this.accumulateInParallel(l,r,s,i,n);$(p);const y=this.mergeServiceStateUpdates(g);if(y.isError)throw new Error("we should be returning Result here");const{accumulatedReports:m,gasCost:b,yieldedRoots:A,pendingTransfers:I,stateUpdates:v,...w}=await this.accumulateSequentially(Ur(e-u),h,r,s,i,y.ok);return $(w),{accumulatedReports:Ie(o+m),gasCost:Ur(u+b),yieldedRoots:d.concat(A),pendingTransfers:f.concat(I),stateUpdates:g.concat(v)}}async accumulateInParallel(e,t,r,s,i){const n=e.getServiceIds(),o=[];let a=Ur(0);const c=[],l=[];for(const h of n){const{consumedGas:n,stateUpdate:u}=await this.accumulateSingleService(h,e.getOperands(h),e.getGasCost(h),t,r,cl.copyFrom(i));a=Ur(a+n);const d=s.get(h)??{count:Ie(0),gasUsed:Ur(0)};d.count=Ie(d.count+e.getReportsLength(h)),d.gasUsed=Ur(d.gasUsed+n),s.set(h,d),null!==u&&(o.push([h,u]),l.push(...u.transfers),null!==u.yieldedRoot&&c.push([h,u.yieldedRoot]))}return{stateUpdates:o,pendingTransfers:l,yieldedRoots:c,gasCost:a}}mergeServiceStateUpdates(e){const{authManager:t,manager:r,validatorsManager:s}=this.state.privilegedServices;let i=null;const n=this.state.authQueues.slice();let o=!1,a=null;const c=[];for(const[l,h]of e){if(l===r&&null!==h.privilegedServices){const{manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s}=h.privilegedServices;Q(null===i,"Only one service can update privileged services!"),i=hi.create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s})}if(l===t&&null!==h.authorizationQueues)for(const[e,t]of h.authorizationQueues)n[e]=t,o=!0;l===s&&null!==h.validatorsData&&(Q(null===a,"Only one service can update designated validators!"),a=h.validatorsData),c.push(h.services)}const l=c.reduce((e,t)=>(e.servicesRemoved.push(...t.servicesRemoved),e.servicesUpdates.push(...t.servicesUpdates),e.preimages.push(...t.preimages),e.storage.push(...t.storage),e),{servicesRemoved:[],servicesUpdates:[],preimages:[],storage:[]}),h=new Set;for(const e of l.servicesUpdates)if(e.action.kind===Si.Create){if(h.has(e.serviceId))return ee.error("duplicate service created",`duplicate service ${e.serviceId} has been created!`);h.add(e.serviceId)}const u=cl.new(l);if(null!==i&&(u.privilegedServices=i),null!==a&&(u.validatorsData=a),o)for(const[e,t]of n.entries())u.authorizationQueues.set(Tr(e),t);return ee.ok(u)}getAccumulationStateUpdate(e,t,r){const s=this.chainSpec.epochLength,i=r%s,n=ul(e),o=Array.from(n).sort((e,t)=>ci(e,t).value),a=Pr(this.state.recentlyAccumulated.slice(1).concat(lr.from(o)),this.chainSpec),c=this.state.accumulationQueue.slice();c[i]=Ql(t,n);for(let e=1;e<s;e++)if(e<r-this.state.timeslot)c[(i+s-e)%s]=[];else{const t=(i+s-e)%s;c[t]=Ql(c[t],n)}return{recentlyAccumulated:a,accumulationQueue:Pr(c,this.chainSpec),timeslot:r}}getGasLimit(){const e=eh*BigInt(this.chainSpec.coresCount)+this.state.privilegedServices.autoAccumulateServices.reduce((e,{gasLimit:t})=>e+t,0n),t=Ur(th>e?th:e);return Ur(t)}async transition({reports:e,slot:t,entropy:r}){const s=new Map,i=new Kl(this.chainSpec,this.state),n=i.getWorkReportsToAccumulateImmediately(e),o=i.getWorkReportsToAccumulateLater(e),a=Ql(i.getQueueFromState(t).concat(o),ul(n)),c=i.enqueueReports(a),l=n.concat(c),h=this.getGasLimit(),{accumulatedReports:u,yieldedRoots:d,gasCost:f,pendingTransfers:g,stateUpdates:p,...y}=await this.accumulateSequentially(h,l,t,r,s,cl.empty());$(y);const m=l.slice(0,u),b=this.getAccumulationStateUpdate(m,o,t),A=this.mergeServiceStateUpdates(p);if(A.isError)return A;const I=await async function(e){const t=await or.create(),r=(s=t,{hashConcat:(e,t=[])=>ar(s,[e,...t].map(re.blobFrom)).asOpaque()});var s;return function(e,t){return 1===e.length?t.hashConcat(e[0].raw):function e(t,r){if(0===t.length)return se.zero(Ot).asOpaque();if(1===t.length)return t[0];const s=Math.ceil(t.length/2),i=t.slice(0,s),n=t.slice(s);return r.hashConcat(re.blobFromString("node").raw,[e(i,r).raw,e(n,r).raw])}(e,t)}(e.sort((e,t)=>e[0]-t[0]).map(([e,t])=>re.blobFromParts([Ce(e),t.raw])),r)}(d);return ee.ok({root:I,stateUpdate:{...b,...A.ok.services},accumulationStatistics:s,pendingTransfers:g})}}class ah{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}transition(e){const t=this.state.authPools.slice();for(let r=Tr(0);r<this.chainSpec.coresCount;r++){let s=t[r].slice();const i=this.state.authQueues[r],n=e.used.get(r);for(void 0!==n&&(s=s.filter(e=>!n.delete(e))),s.push(i[e.slot%80]);s.length>8;)s.shift();t[r]=hr(s)}return{authPools:si(t,this.chainSpec)}}}class ch{hasher;state;constructor(e,t){this.hasher=e,this.state=t}transition(e){const t=this.state.recentBlocks.slice(),r=t.length>0?t[t.length-1]:null;null!==r&&(r.postStateRoot=e.priorStateRoot);const s=null!==r?ql.fromPeaks(this.hasher,r.mmr):ql.empty(this.hasher);return s.append(e.accumulateRoot),t.push({headerHash:e.headerHash,mmr:s.getPeaks(),postStateRoot:se.zero(Ot).asOpaque(),reported:e.workPackages}),t.length>8&&t.shift(),{recentBlocks:t}}}function lh(e,t,r){return function(e,t,r){const s=hh(Br(t%r.epochLength),r.rotationPeriod),i=(n=function(e,t){Q(32===t.length,`Expected entropy of length 32, got ${t.length}`);const r=e.length,s=function(e,t){const r=new Array(t),s=new Uint8Array(36);s.set(e.raw);for(let e=0;e<t;e++){s.set(Ce(Ie(Math.floor(e/8))),32);const t=4*e%32,i=t+4,n=ke(Kt(s).raw.subarray(t,i))>>>0;r[e]=n}return r}(t,e.length),i=new Array(r);let n=r;for(let t=0;t<r;t++){const r=s[t]%n;i[t]=e[r],n--,e[r]=e[n],e.length=n}return i}(Array(r.validatorsCount).fill(0).map((e,t)=>Tr(Math.floor(t*r.coresCount/r.validatorsCount))),e),o=s,a=r.coresCount,n.map(e=>(e+o)%a));var n,o,a;return i}(t,r,e)}function hh(e,t){return Math.floor(e/t)}const uh=re.blobFromString("jam_guarantee").raw;function dh(e){return re.blobFromParts(uh,e.raw)}const fh=1e7;class gh{chainSpec;state;mmrHasher;headerChain;constructor(e,t,r,s){this.chainSpec=e,this.state=t,this.mmrHasher=r,this.headerChain=s}async transition(e){const t=function(e,t){const r=t.coresCount;let s=-1;for(const t of e){const e=t.view().report.view().coreIndex.materialize();if(s>=e)return ee.error(Wl.OutOfOrderGuarantee,`Core indices of work reports are not unique or in order. Got: ${e}, expected at least: ${s+1}`);if(e>=r)return ee.error(Wl.BadCoreIndex,`Invalid core index. Got: ${e}, max: ${r}`);s=e}return ee.ok(J)}(e.guarantees,this.chainSpec);if(t.isError)return t;const r=function(e){for(const t of e){const e=t.view().report.view(),r=e.context.view().prerequisites.view().length,s=e.segmentRootLookup.view().length;if(r+s>8)return ee.error(Wl.TooManyDependencies,`Report at ${e.coreIndex.materialize()} has too many dependencies. Got ${r} + ${s}, max: 8`);const i=e.authorizationOutput.view().length;let n=0;for(const t of e.results.view())n+=t.view().result.view().okBlob?.raw.length??0;if(i+n>49152)return ee.error(Wl.WorkReportTooBig,`Work report at ${e.coreIndex.materialize()} too big. Got ${i} + ${n}, max: 49152`)}return ee.ok(J)}(e.guarantees);if(r.isError)return r;const s=this.workReportHashes(e.guarantees),i=this.verifyCredentials(e,s);if(i.isError)return i;const n=kt(i.ok),o=this.verifyPostSignatureChecks(e.guarantees);if(o.isError)return o;const a=this.verifyContextualValidity(e);if(a.isError)return a;const c=this.checkSignatures(i.ok,await n);if(c.isError)return c;let l=0;const h=this.state.availabilityAssignment.slice();for(const t of e.guarantees){const r=t.view().report.materialize(),i=s[l];h[r.coreIndex]=ti.create({workReport:new Ut(i,r),timeout:e.slot}),l+=1}return ee.ok({stateUpdate:{availabilityAssignment:si(h,this.chainSpec)},reported:a.ok,reporters:fr.fromArray(ge,i.ok.map(e=>e.key)).slice()})}workReportHashes(e){const t=[];for(const r of e)t.push(z(Kt(r.view().report.encoded())));return t}verifyCredentials(e,t){return function(e,t,r,s){const i=[],n=r;let o=0;for(const r of e){const e=r.view(),a=e.report.view().coreIndex.materialize(),c=t[o];o+=1;const l=e.credentials.view();if(l.length<ts[0]||l.length>ts[1])return ee.error(Wl.InsufficientGuarantees,`Invalid number of credentials. Expected ${ts}, got ${l.length}`);const h=s(n,e.slot.materialize());if(h.isError)return h;const u=h.ok;let d=-1;for(const e of l){const t=e.view(),r=t.validatorIndex.materialize();if(d>=r)return ee.error(Wl.NotSortedOrUniqueGuarantors,`Credentials must be sorted by validator index. Got ${r}, expected at least ${d+1}`);d=r;const s=t.signature.materialize(),n=u[r];if(void 0===n)return ee.error(Wl.BadValidatorIndex,`Invalid validator index: ${r}`);if(n.core!==a)return ee.error(Wl.WrongAssignment,`Invalid core assignment for validator ${r}. Expected: ${n.core}, got: ${a}`);i.push({signature:s,key:n.ed25519,message:dh(c)})}}return ee.ok(i)}(e.guarantees,t,e.slot,(e,t)=>this.getGuarantorAssignment(e,t))}verifyPostSignatureChecks(e){return function(e,t,r,s){for(const i of e){const e=i.materialize().report,n=e.coreIndex;if(null!==t[n])return ee.error(Wl.CoreEngaged,`Report pending availability at core: ${n}`);const o=e.authorizerHash;if(void 0===r[n].find(e=>e.isEqualTo(o)))return ee.error(Wl.CoreUnauthorized,`Authorizer hash not found in the pool of core ${n}: ${o}`);for(const t of e.results){const e=s(t.serviceId);if(null===e)return ee.error(Wl.BadServiceId,`No service with id: ${t.serviceId}`);const r=e.getInfo();if(t.gas<r.accumulateMinGas)return ee.error(Wl.ServiceItemGasTooLow,`Service (${t.serviceId}) gas is less than minimal. Got: ${t.gas}, expected at least: ${r.accumulateMinGas}`)}const a=Ee(...e.results.map(e=>e.gas));if(a.overflow||a.value>fh)return ee.error(Wl.WorkReportGasTooHigh,`Total gas too high. Got: ${a.value} (ovfl: ${a.overflow}), maximal: ${fh}`)}return ee.ok(J)}(e,this.state.availabilityAssignment,this.state.authPools,e=>this.state.getService(e))}verifyContextualValidity(e){return function(e,t,r,s){const i=[],n=cr.new(),o=lr.new(),a=lr.new();for(const r of e.guarantees){const e=r.materialize();i.push(e.report.context);const s=Zr.create({workPackageHash:e.report.workPackageSpec.hash,segmentTreeRoot:e.report.workPackageSpec.exportsRoot});n.set(s.workPackageHash,s),o.insertAll(e.report.context.prerequisites),a.insertAll(e.report.segmentRootLookup.map(e=>e.workPackageHash));for(const r of e.report.results){const e=t.getService(r.serviceId);if(null===e)return ee.error(Wl.BadServiceId,`No service with id: ${r.serviceId}`);if(!r.codeHash.isEqualTo(e.getInfo().codeHash))return ee.error(Wl.BadCodeHash,`Service (${r.serviceId}) code hash mismatch. Got: ${r.codeHash}, expected: ${e.getInfo().codeHash}`)}}if(n.size!==e.guarantees.length)return ee.error(Wl.DuplicatePackage,"Duplicate work package detected.");const c=function(e,t,r,s,i){const n=cr.new();for(const e of r.recentBlocks)n.set(e.headerHash,e);for(const r of t){const t=n.get(r.anchor);if(void 0===t)return ee.error(Wl.AnchorNotRecent,`Anchor block ${r.anchor} not found in recent blocks.`);if(!t.postStateRoot.isEqualTo(r.stateRoot))return ee.error(Wl.BadStateRoot,`Anchor state root mismatch. Got: ${r.stateRoot}, expected: ${t.postStateRoot}.`);const o=ql.fromPeaks(s,t.mmr).getSuperPeakHash();if(!o.isEqualTo(r.beefyRoot))return ee.error(Wl.BadBeefyMmrRoot,`Invalid BEEFY super peak hash. Got: ${r.beefyRoot}, expected: ${o}. Anchor: ${t.headerHash}`);if(r.lookupAnchorSlot<e)return ee.error(Wl.SegmentRootLookupInvalid,`Lookup anchor slot's too old. Got: ${r.lookupAnchorSlot}, minimal: ${e}`);if(!i.isInChain(r.lookupAnchor))return ee.error(Wl.SegmentRootLookupInvalid,`Lookup anchor is not found in chain. Hash: ${r.lookupAnchor} (slot: ${r.lookupAnchorSlot})`)}return ee.ok(J)}(Math.max(0,e.slot-14400),i,t,r,s);if(c.isError)return c;const l=function(e,t){const r=lr.new();for(const e of t.recentBlocks)r.insertAll(Array.from(e.reported.keys()));for(const e of t.recentlyAccumulated)r.insertAll(Array.from(e));for(const e of t.accumulationQueue)r.insertAll(e.map(e=>e.report.workPackageSpec.hash));for(const e of t.availabilityAssignment)null!==e&&r.insert(e.workReport.data.workPackageSpec.hash);const s=r.intersection(e);for(const e of s)return ee.error(Wl.DuplicatePackage,`The same work package hash found in the pipeline (workPackageHash: ${e})`);return ee.ok(J)}(lr.viewDictionaryKeys(n),t);if(l.isError)return l;const h=cr.new();for(const e of t.recentBlocks)for(const t of e.reported.values())h.set(t.workPackageHash,t.segmentTreeRoot);const u=function({currentWorkPackages:e,recentlyReported:t,prerequisiteHashes:r,segmentRootLookupHashes:s}){const i=(r,s=!1)=>{for(const i of r)if(!e.has(i)&&!t.has(i))return ee.error(s?Wl.SegmentRootLookupInvalid:Wl.DependencyMissing,`Missing work package ${i} in current extrinsic or recent history.`);return ee.ok(J)},n=i(r);if(n.isError)return n;const o=i(s,!0);return o.isError?o:ee.ok(J)}({currentWorkPackages:n,recentlyReported:h,prerequisiteHashes:o,segmentRootLookupHashes:a});if(u.isError)return u;for(const t of e.guarantees){const e=t.materialize().report;for(const t of e.segmentRootLookup){let e=n.get(t.workPackageHash);if(void 0===e){const r=h.get(t.workPackageHash);e=void 0!==r?Zr.create({workPackageHash:t.workPackageHash,segmentTreeRoot:r}):void 0}if(void 0===e||!e.segmentTreeRoot.isEqualTo(t.segmentTreeRoot))return ee.error(Wl.SegmentRootLookupInvalid,`Mismatching segment tree root for package ${t.workPackageHash}. Got: ${t.segmentTreeRoot}, expected: ${e?.segmentTreeRoot}`)}}return ee.ok(n)}(e,this.state,this.mmrHasher,this.headerChain)}checkSignatures(e,t){if(t.every(e=>e))return ee.ok(J);const r=t.map((t,r)=>t?null:e[r].key).filter(e=>null!==e);return ee.error(Wl.BadSignature,`Invalid signatures for validators with keys: ${r.join(", ")}`)}getGuarantorAssignment(e,t){const r=this.chainSpec.epochLength,s=this.chainSpec.rotationPeriod,i=hh(e,s),n=hh(t,s),o=Math.max(0,i-1)*s;if(t>e)return ee.error(Wl.FutureReportSlot,`Report slot is in future. Block ${e}, Report: ${t}`);if(t<o)return ee.error(Wl.ReportEpochBeforeLast,`Report slot is too old. Block ${e}, Report: ${t}`);let a=this.state.entropy[2],c=this.state.currentValidatorData,l=e;i>n&&(l=Br(e-s),function(e,t,r){const s=Math.floor(t/r);return Math.floor(e/r)!==s}(l,e,r)&&(a=this.state.entropy[3],c=this.state.previousValidatorData));const h=lh(this.chainSpec,a,l);return ee.ok((u=c,d=(e,t)=>({core:e,ed25519:t.ed25519}),h.map((e,t)=>d(e,u[t]))));var u,d}}class ph{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getStatistics(e){if(Math.floor(this.state.timeslot/this.chainSpec.epochLength)===Math.floor(e/this.chainSpec.epochLength))return this.state.statistics;const t=Dr(Array.from({length:this.chainSpec.validatorsCount},()=>Bi.empty()),this.chainSpec);return Ni.create({...this.state.statistics,current:t,previous:this.state.statistics.current})}calculateDAScoreCore(e){if(void 0===e)return Ie(0);let t=0;return t+=e.workPackageSpec.length+4104*Math.ceil(65*e.workPackageSpec.exportsCount/64),Ie(t)}calculateRefineScore(e){const t={gasUsed:0n,imported:0,extrinsicCount:0,extrinsicSize:0,exported:0};for(const r of e)t.gasUsed+=r.load.gasUsed,t.imported+=r.load.importedSegments,t.extrinsicCount+=r.load.extrinsicCount,t.extrinsicSize+=r.load.extrinsicSize,t.exported+=r.load.exportedSegments;return{gasUsed:Ur(t.gasUsed),exported:be(t.exported),imported:be(t.imported),extrinsicCount:be(t.extrinsicCount),extrinsicSize:Ie(t.extrinsicSize)}}calculateProvidedScoreService(e){const t={count:0,size:0};for(const r of e)t.count+=1,t.size+=r.blob.length;return{count:be(t.count),size:Ie(t.size)}}collectServiceIds(e,t,r,s){const i=new Set;for(const t of e)i.add(t.requester);for(const e of t)i.add(e.serviceId);for(const e of r)i.add(e);for(const e of s)i.add(e);return i}transition(e){const{slot:t,authorIndex:r,extrinsic:s,incomingReports:i,availableReports:n}=e,o=this.getStatistics(t),{current:a,cores:c,services:l}=o;Q(void 0!==a[r],"authorIndex is out of bounds");const h=a[r].blocks+1;a[r].blocks=Ie(h);const u=a[r].tickets+s.tickets.length;a[r].tickets=Ie(u);const d=a[r].preImages+s.preimages.length;a[r].preImages=Ie(d);const f=s.preimages.reduce((e,t)=>e+t.blob.length,0),g=a[r].preImagesSize+f;a[r].preImagesSize=Ie(g);for(const{credentials:e}of s.guarantees)for(const{validatorIndex:t}of e){const e=a[t].guarantees+1;a[t].guarantees=Ie(e)}for(const{validatorIndex:e}of s.assurances){const t=a[e].assurances+1;a[e].assurances=Ie(t)}for(let e=0;e<this.chainSpec.coresCount;e++){const t=Tr(e),r=i.find(e=>e.coreIndex===t),{imported:o,extrinsicCount:a,extrinsicSize:l,exported:h,gasUsed:u}=void 0!==r?this.calculateRefineScore(r.results.map(e=>e)):{imported:be(0),extrinsicCount:be(0),extrinsicSize:Ie(0),exported:be(0),gasUsed:Ur(0n)},d=n.find(e=>e.coreIndex===t),f=s.assurances.reduce((t,{bitfield:r})=>t+(r.isSet(e)?1:0),0);c[t].imports=o,c[t].extrinsicCount=a,c[t].extrinsicSize=l,c[t].exports=h,c[t].gasUsed=u,c[t].bundleSize=Ie(r?.workPackageSpec.length??0),c[t].dataAvailabilityLoad=this.calculateDAScoreCore(d),c[t].popularity=be(f)}l.clear();const p=this.collectServiceIds(s.preimages,i.flatMap(e=>e.results),e.accumulationStatistics.keys(),e.transferStatistics.keys());for(const t of p){const r=i.flatMap(e=>e.results.filter(e=>e.serviceId===t)),{gasUsed:n,imported:o,extrinsicCount:a,extrinsicSize:c,exported:h}=this.calculateRefineScore(r),u=s.preimages.filter(e=>e.requester===t),{count:d,size:f}=this.calculateProvidedScoreService(u),{count:g,gasUsed:p}=e.accumulationStatistics.get(t)??{count:Ie(0),gasUsed:Ur(0n)},{count:y,gasUsed:m}=e.transferStatistics.get(t)??{count:Ie(0),gasUsed:Ur(0n)},b=Ti.empty();b.refinementCount=Ie(r.length),b.refinementGasUsed=n,b.imports=o,b.extrinsicCount=a,b.extrinsicSize=c,b.exports=h,b.providedCount=d,b.providedSize=f,b.providedCount=d,b.providedSize=f,b.accumulateCount=g,b.accumulateGasUsed=p,b.onTransfersCount=y,b.onTransfersGasUsed=m,l.set(t,b)}return{statistics:o}}}class yh{blocks;constructor(e){this.blocks=e}isInChain(e){return null!==this.blocks.getHeader(e)}}var mh;!function(e){e[e.Assurances=0]="Assurances",e[e.Disputes=1]="Disputes",e[e.Safrole=2]="Safrole",e[e.Reports=3]="Reports",e[e.Preimages=4]="Preimages",e[e.SafroleSeal=5]="SafroleSeal",e[e.Accumulate=6]="Accumulate",e[e.DeferredTransfers=7]="DeferredTransfers"}(mh||(mh={}));const bh=(e,t)=>ee.taggedError(mh,e,t);class Ah{chainSpec;state;hasher;safrole;safroleSeal;disputes;reports;assurances;accumulate;deferredTransfers;preimages;recentHistory;authorization;statistics;constructor(e,t,r,s,{enableParallelSealVerification:i}){this.chainSpec=e,this.state=t,this.hasher=s;const n=Wc.new({synchronous:!i});this.statistics=new ph(e,t),this.safrole=new il(e,t,n),this.safroleSeal=new nl(n),this.recentHistory=new ch(s,t),this.disputes=new Tc(e,t),this.reports=new gh(e,t,s,new yh(r)),this.assurances=new Fl(e,t),this.accumulate=new oh(e,t),this.deferredTransfers=new Dl(e,t),this.preimages=new vc(t),this.authorization=new ah(e,t)}async verifySeal(e,t){const r=this.safrole.getSafroleSealState(e);return await this.safroleSeal.verifyHeaderSeal(t.header.view(),r)}async transition(e,t,r=null,s=!1){const i=e.header.materialize(),n=i.timeSlotIndex;let o=r;if(s&&(o=Kt(i.seal).asOpaque()),null===o){const t=await this.verifySeal(n,e);if(t.isError)return bh(mh.SafroleSeal,t);o=t.ok}const a=await this.disputes.transition(e.extrinsic.view().disputes.materialize());if(a.isError)return bh(mh.Disputes,a);const{disputesRecords:c,availabilityAssignment:l,...h}=a.ok.stateUpdate;$(h);const u=await this.reports.transition({slot:n,guarantees:e.extrinsic.view().guarantees.view(),knownPackages:[]});if(u.isError)return bh(mh.Reports,u);const{availabilityAssignment:d,...f}=u.ok.stateUpdate;$(f);const g=await this.assurances.transition({assurances:e.extrinsic.view().assurances.view(),slot:n,parentHash:i.parentHeaderHash});if(g.isError)return bh(mh.Assurances,g);const{availabilityAssignment:p,...y}=g.ok.stateUpdate;$(y);const m=await this.safrole.transition({slot:n,entropy:o,extrinsic:e.extrinsic.view().tickets.materialize()});if(m.isError)return bh(mh.Safrole,m);const{timeslot:b,ticketsAccumulator:A,sealingKeySeries:I,epochRoot:v,entropy:w,nextValidatorData:S,currentValidatorData:E,previousValidatorData:C,...k}=m.ok.stateUpdate;$(k);const x=this.preimages.integrate({slot:n,preimages:e.extrinsic.view().preimages.materialize()});if(x.isError)return bh(mh.Preimages,x);const{preimages:_,...B}=x.ok;$(B);const R=await this.accumulate.transition({slot:n,reports:g.ok.availableReports,entropy:w[0]});if(R.isError)return bh(mh.Accumulate,R);const{root:O,stateUpdate:U,accumulationStatistics:T,pendingTransfers:N,...D}=R.ok;$(D);const{privilegedServices:M,authQueues:P,designatedValidatorData:L,timeslot:H,preimages:K,...Q}=U,V=await this.deferredTransfers.transition({pendingTransfers:N,...Q,preimages:K,timeslot:n});if(V.isError)return bh(mh.DeferredTransfers,V);const{servicesUpdates:F,transferStatistics:j,...G}=V.ok;$(G),Q.servicesUpdates=F;const q=this.recentHistory.transition({headerHash:t,priorStateRoot:i.priorStateRoot,accumulateRoot:O,workPackages:u.ok.reported}),{recentBlocks:z,...W}=q;$(W);const J=this.authorization.transition({slot:n,used:this.getUsedAuthorizerHashes(e.extrinsic.view().guarantees.view())}),{authPools:Y,...X}=J;$(X);const Z=e.extrinsic.materialize(),te=this.statistics.transition({slot:n,authorIndex:i.bandersnatchBlockAuthorIndex,extrinsic:Z,incomingReports:Z.guarantees.map(e=>e.report),availableReports:g.ok.availableReports,accumulationStatistics:T,transferStatistics:j}),{statistics:re,...se}=te;return $(se),ee.ok({...void 0!==P?{authQueues:P}:{},...void 0!==L?{designatedValidatorData:L}:{},...void 0!==M?{privilegedServices:M}:{},authPools:Y,preimages:_.concat(K),disputesRecords:c,availabilityAssignment:Ih(this.state.availabilityAssignment,d,l,p),recentBlocks:z,statistics:re,timeslot:b,epochRoot:v,entropy:w,currentValidatorData:E,nextValidatorData:S,previousValidatorData:C,sealingKeySeries:I,ticketsAccumulator:A,...Q})}getUsedAuthorizerHashes(e){const t=new Map;for(const r of e){const e=r.view().report.view(),s=e.coreIndex.materialize(),i=t.get(s)??lr.new();i.insert(e.authorizerHash.materialize()),t.set(s,i)}return t}}function Ih(e,t,r,s){const i=e.slice();for(const n of t.keys())null!==r[n]&&null!==s[n]||(i[n]=null),null!==t[n]&&e[n]!==t[n]&&(i[n]=t[n]);return i}var vh;!function(e){e[e.Verifier=0]="Verifier",e[e.Stf=1]="Stf",e[e.Update=2]="Update"}(vh||(vh={}));const wh=(e,t)=>ee.taggedError(vh,e,t);class Sh{logger;blocks;states;verifier;stf;state;constructor(e,t,r,s,i){this.logger=r,this.blocks=s,this.states=i;const n=this.blocks.getBestHeaderHash(),o=i.getState(n);if(null===o)throw new Error(`Unable to load best state from header hash: ${n}.`);this.verifier=new Ec(t,s),this.stf=new Ah(e,o,s,t,{enableParallelSealVerification:!0}),this.state=o,r.info(`😎 Best time slot: ${o.timeslot} (header hash: ${n})`)}async preverifySeal(e,t){try{const r=await this.stf.verifySeal(e,t);return r.isOk?r.ok:(this.logger.warn(`Unable to pre-verify the seal: ${Z(r)}`),null)}catch(e){return this.logger.warn(`Error while trying to pre-verify the seal: ${e}`),null}}async importBlock(e,t,r=!1){const s=this.logger;s.log("🧱 Attempting to import a new block "+(null!==t?"(seal preverified)":""));const i=G("import:verify"),n=await this.verifier.verifyBlock(e);if(s.log(i()),n.isError)return wh(vh.Verifier,n);const o=e.header.view().timeSlotIndex.materialize(),a=n.ok;s.log(`🧱 Verified block: Got hash ${a} for block at slot ${o}.`);const c=G("import:stf"),l=await this.stf.transition(e,a,t,r);if(s.log(c()),l.isError)return wh(vh.Stf,l);const h=l.ok,u=G("import:state"),d=await this.states.updateAndSetState(a,this.state,h);if(d.isError)return s.error(`🧱 Unable to update state: ${Z(d)}`),wh(vh.Update,d);const f=this.states.getState(a);if(null===f)throw new Error("Freshly updated state not in the DB?");this.state.updateBackend(f.backend),s.log(u());const g=G("import:db"),p=this.blocks.insertBlock(new Ut(a,e)),y=await this.states.getStateRoot(f);s.log(`🧱 Storing post-state-root for ${a}: ${y}.`);const m=this.blocks.setPostStateRoot(a,y);return await Promise.all([p,m]),s.log(g()),await this.blocks.setBestHeaderHash(a),ee.ok(new Ut(a,e.header.view()))}bestBlockHash(){return this.blocks.getBestHeaderHash()}}const Eh=m.new(void 0,"importer");class Ch extends Ln{onBestBlock=new Dn;constructor(){super({name:"ready(main)",allowedTransitions:["finished"],signalListeners:{bestBlock:e=>this.triggerBestBlock(e)}})}getConfig(){if(null===this.data)throw new Error("Did not receive chain spec config!");return this.data}triggerBestBlock(e){if(e instanceof Uint8Array){const t=this.getConfig(),r=_e.decodeObject(fs,e,t.chainSpec);this.onBestBlock.emit(r)}}sendBlock(e,t){e.sendSignal("block",t,[t.buffer])}finish(e){return this.onBestBlock.markDone(),{state:"finished",data:e.sendRequest("finish",null)}}}class kh extends Ln{onBlock=new Dn;constructor(){super({name:"ready(importer)",allowedTransitions:["finished"],requestHandlers:{finish:async()=>this.endWork()},signalListeners:{block:e=>this.triggerOnBlock(e)}})}getConfig(){if(null===this.data)throw new Error("Did not receive chain spec config!");return this.data}announce(e,t){const r=this.getConfig(),s=Ne.encodeObject(fs,t,r.chainSpec).raw;e.sendSignal("bestBlock",s,[s.buffer])}triggerOnBlock(e){if(e instanceof Uint8Array){const t=this.getConfig(),r=_e.decodeObject(ms.Codec.View,e,t.chainSpec);this.onBlock.emit(r)}else Eh.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(e)}.`)}async endWork(){return this.onBlock.markDone(),{response:null,transitionTo:{state:"finished",data:Promise.resolve(null)}}}}const xh=m.new(void 0,"importer");if(!T.isMainThread){m.configureAll(process.env.JAM_LOG??"",l.LOG);const e=function(){const e=new Qn("ready(importer)",mr.reInit),t=new kh,r=new Hn;return new Mn("importer",e,[e,t,r])}();Un.receiveChannel(e,T.parentPort).then(e=>async function(e){xh.info(`📥 Importer starting ${e.currentState()}`);const t=await e.waitForState("ready(importer)"),r=await t.doUntil("finished",async(e,t)=>{xh.info("📥 Importer waiting for blocks.");const r=e.getConfig(),s=new Sn(r.dbPath),i=new vn(r.chainSpec,s),n=new En(r.chainSpec,s),o=new Sh(r.chainSpec,new Ic(r.chainSpec,await _h,new Nt),xh,i,n);let a=!1;const c=new wc(r.chainSpec,o);e.onBlock.on(async s=>{const i=c.push(s)??Br(0);if(xh.log(`🧊 Got block: #${i}`),!a){a=!0;try{for(;;){const s=c.shift();if(void 0===s)return;const{block:i,seal:n,timeSlot:a}=s,l=G("importBlock"),h=await o.importBlock(i,await n,r.omitSealVerification);if(h.isOk){const r=h.ok;e.announce(t,r),xh.info(`🧊 Best block: #${r.data.timeSlotIndex.materialize()} (${r.hash})`)}else xh.log(`❌ Rejected block #${a}: ${Z(h)}`);xh.log(l())}}finally{a=!1}}})});xh.info("📥 Importer finished. Closing channel."),r.currentState().close(e)}(e)).catch(e=>xh.error(e))}const _h=or.create(),Bh=t(import.meta.url)("node:timers/promises");class Rh{chainSpec;keccakHasher;blocks;states;hashAllocator=new Nt;lastHeaderHash;lastHeader;lastState;constructor(e,t,r,s){this.chainSpec=e,this.keccakHasher=t,this.blocks=r,this.states=s;const{lastHeaderHash:i,lastHeader:n,lastState:o}=Rh.getLastHeaderAndState(r,s);this.lastHeaderHash=i,this.lastHeader=n,this.lastState=o}refreshLastHeaderAndState(){const{lastHeaderHash:e,lastHeader:t,lastState:r}=Rh.getLastHeaderAndState(this.blocks,this.states);this.lastHeaderHash=e,this.lastHeader=t,this.lastState=r}static getLastHeaderAndState(e,t){const r=e.getBestHeaderHash(),s=e.getHeader(r)?.materialize()??null,i=t.getState(r);if(null===s)throw new Error(`Missing best header: ${r}! Make sure DB is initialized.`);if(null===i)throw new Error(`Missing last state at ${r}! Make sure DB is initialized.`);return{lastHeaderHash:r,lastHeader:s,lastState:i}}async nextEncodedBlock(){const e=await this.nextBlock();return Ne.encodeObject(ms.Codec,e,this.chainSpec)}async nextBlock(){this.refreshLastHeaderAndState();const e=this.lastHeader.timeSlotIndex+1,t=Rr(e%6),r=new Ic(this.chainSpec,this.keccakHasher,this.hashAllocator),s=this.lastHeaderHash,i=this.states.getStateRoot(this.lastState),n=ys.create({tickets:[],preimages:[],guarantees:[],assurances:[],disputes:_r.create({verdicts:[],culprits:[],faults:[]})}),o=Ne.encodeObject(ys.Codec,n,this.chainSpec),a=_e.decodeObject(ys.Codec.View,o,this.chainSpec),c=r.extrinsic(a).hash,l=Ne.create();l.i32(e),l.i16(t),l.bytes(se.fill(90,0));const h=se.fromBlob(l.viewResult().raw,96),u=us.create({parentHeaderHash:s,priorStateRoot:await i,extrinsicHash:c,timeSlotIndex:Br(e),epochMarker:null,ticketsMarker:null,offendersMarker:[],bandersnatchBlockAuthorIndex:t,entropySource:se.fill(96,42*e%256).asOpaque(),seal:h.asOpaque()}),d=Ne.encodeObject(us.Codec,u,this.chainSpec),f=_e.decodeObject(us.Codec.View,d,this.chainSpec);return this.lastHeaderHash=r.header(f).hash,this.lastHeader=u,ms.create({header:u,extrinsic:n})}}const Oh=m.new(void 0,"block-generator");class Uh extends Ln{onBlock=new Dn;constructor(){super({name:"ready(main)",allowedTransitions:["finished"],signalListeners:{block:e=>this.triggerOnBlock(e)}})}triggerOnBlock(e){e instanceof Uint8Array?this.onBlock.emit(e):Oh.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(e)}.`)}finish(e){return this.onBlock.markDone(),{state:"finished",data:e.sendRequest("finish",null)}}}class Th extends Ln{constructor(){super({name:"ready(generator)",allowedTransitions:["finished"],requestHandlers:{finish:async()=>this.endWork()}})}sendBlock(e,t){e.sendSignal("block",t.raw,[t.raw.buffer])}getConfig(){if(null===this.data)throw new Error("Config not received.");return this.data}async endWork(){return{response:null,transitionTo:{state:"finished",data:Promise.resolve(null)}}}}const Nh=m.new(void 0,"block-generator");if(!T.isMainThread){m.configureAll(process.env.JAM_LOG??"",l.LOG);const e=function(){const e=new Qn("ready(generator)",mr.reInit),t=new Th,r=new Hn;return new Mn("block-generator",e,[e,t,r])}();Un.receiveChannel(e,T.parentPort).then(e=>async function(e){Nh.info(`🎁 Block Generator running ${e.currentState()}`);const t=await e.waitForState("ready(generator)"),r=t.currentState().getConfig(),s=new Sn(r.dbPath),i=new vn(r.chainSpec,s),n=new En(r.chainSpec,s),o=await t.doUntil("finished",async(e,t,s)=>{let o=0;const a=new Rh(r.chainSpec,await or.create(),i,n);for(;!s();){o+=1;const r=await a.nextEncodedBlock();Nh.trace(`Sending block ${o}`),e.sendBlock(t,r),await(0,Bh.setTimeout)(3e3)}});Nh.info("Block Generator finished. Closing channel."),o.currentState().close(e)}(e)).catch(e=>{Nh.error(e),void 0!==e.stack&&Nh.error(e.stack),void 0!==e.cause&&Nh.error(e.cause)})}const Dh=t(import.meta.url)("dgram");var Mh,Ph;(Ph=Mh||(Mh={}))[Ph.NOTSET=0]="NOTSET",Ph[Ph.DEBUG=1]="DEBUG",Ph[Ph.INFO=2]="INFO",Ph[Ph.WARN=3]="WARN",Ph[Ph.ERROR=4]="ERROR",Ph[Ph.SILENT=100]="SILENT";const Lh="captureStackTrace"in Error,Hh="stackTraceLimit"in Error;function Kh(e){switch(e){case Mh.NOTSET:return"NOTSET";case Mh.DEBUG:return"DEBUG";case Mh.INFO:return"INFO";case Mh.WARN:return"WARN";case Mh.ERROR:return"ERROR";case Mh.SILENT:return"SILENT"}}function Qh(e,t){return"function"==typeof t?t():t}function Vh(e){return JSON.stringify(e,Qh)}const Fh=Symbol("level"),$h=Symbol("key"),jh=Symbol("keys"),Gh=Symbol("date"),qh=Symbol("msg"),zh=Symbol("stack"),Wh=Symbol("data"),Jh=(function(e,...t){return r=>{let s=e[0];for(let i=0;i<t.length;i++){const n=t[i];if(n===$h)s+=r.key;else if(n===jh)s+=r.keys;else if(n===Gh)s+=r.date().toISOString();else if(n===qh)null!=r.msg&&(s+=r.msg);else if(n===Fh)s+=Kh(r.level);else if(n===Wh)s+=Vh(r.data);else if(n===zh){const e=r.stack();""!==e&&(s+="\n"+e)}else s+=n.toString();s+=e[i+1]}return s}})`${Fh}:${$h}:${qh}`,Yh=class{formatter;constructor(e=Jh){this.formatter=e}setFormatter(e){this.formatter=e}handle(e,t){const r=null!=t?t(e):this.format(e);this.emit(r)}format(e){return this.formatter(e)}},Xh=class extends Yh{emit(e){console.error(e)}};class Zh{key;level;filter;keys;handlers;parent;_loggers=new Map;loggersRegistry;constructor(e="root",t=Mh.NOTSET,r=[new Xh],s){this.key=e,this.level=t,this.handlers=new Set(r),this.parent=s,this.keys=null!=s?`${s.keys}.${e}`:e,this.loggersRegistry=new FinalizationRegistry(e=>{this._loggers.delete(e)})}get loggers(){return new Map([...this._loggers.entries()].map(([e,t])=>{const r=t.deref();return null!=r?[e,r]:void 0}).filter(e=>null!=e))}getChild(e){let t=this._loggers.get(e),r=t?.deref();return null!=r||(r=new Zh(e,Mh.NOTSET,[],this),t=new WeakRef(r),this._loggers.set(e,t),this.loggersRegistry.register(r,e)),r}getParent(){return this.parent}setLevel(e){this.level=e}getEffectiveLevel(){return this.level!==Mh.NOTSET?this.level:this.parent?this.parent.getEffectiveLevel():this.level}isEnabledFor(e){return e>=this.level}addHandler(e){this.handlers.add(e)}removeHandler(e){this.handlers.delete(e)}clearHandlers(){this.handlers.clear()}hasHandlers(){return!!this.handlers.size||(this.parent?.hasHandlers()??!1)}setFilter(e){this.filter=e}unsetFilter(){delete this.filter}debug(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Mh.DEBUG,t):this.log(e,t,Mh.DEBUG,r)}info(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Mh.INFO,t):this.log(e,t,Mh.INFO,r)}warn(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Mh.WARN,t):this.log(e,t,Mh.WARN,r)}error(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Mh.ERROR,t):this.log(e,t,Mh.ERROR,r)}log(e,t,r,s){if(r<this.getEffectiveLevel())return;const i=this.makeRecord(e,t,r);this.callHandlers(i,r,s)}makeRecord(e,t,r){return{logger:this,key:this.key,keys:this.keys,level:r,msg:e?.toString(),data:t,date:()=>new Date,stack:()=>{let e;if(Lh&&Hh){Error.stackTraceLimit++;const t={};Error.captureStackTrace(t,Zh.prototype.log),Error.stackTraceLimit--,e=t.stack,e=e.slice(e.indexOf("\n",e.indexOf("\n")+1)+1)}else e=(new Error).stack??"",e=e.slice(e.indexOf("\n")+1);return e}}}callHandlers(e,t,r,s=""){if(!(t<this.getEffectiveLevel())&&(s=`${this.key}.${s}`,null==this.filter||this.filter.test(s))){for(const t of this.handlers)t.handle(e,r);this.parent&&this.parent.callHandlers(e,t,r,s)}}}const eu=Zh;t(import.meta.url)("node:process");class tu extends Event{detail;constructorParams;constructor(e=new.target.name,t,r){"string"==typeof e?(super(e,t),this.detail=t?.detail):(super(new.target.name,e),this.detail=e.detail,r=t),this.constructorParams=r??arguments}clone(){try{return new this.constructor(...this.constructorParams)}catch(e){if("TypeError"===e.name)throw new TypeError(`Cloning ${this.constructor.name} requires the original constructor arguments to be passed into super`);throw e}}}const ru=tu;class su extends ru{constructor(e){super(su.name,e,arguments)}}const iu=su;class nu extends ru{constructor(e){super(nu.name,e,arguments)}}const ou=nu;class au extends ru{constructor(e){super(au.name,e,arguments)}}const cu=au,lu=Symbol("_eventTarget"),hu=Symbol("eventTarget"),uu=Symbol("_eventHandlers"),du=Symbol("eventHandlers"),fu=Symbol("_eventHandled"),gu=Symbol("eventHandled"),pu=Symbol("_handleEventError"),yu=Symbol("handleEventError");function mu(e){return{capture:!1,once:!1,passive:!1,..."boolean"==typeof e?{capture:e}:"object"==typeof e?e:void 0}}function bu(e,t){return e.capture===t.capture}function Au(){return e=>{const t=class extends e{[lu]=new EventTarget;[uu]=new Map;[fu]=new WeakSet;[pu]=e=>{throw e.detail};constructor(...e){super(...e),this[lu].addEventListener(cu.name,this[pu])}get[hu](){return this[lu]}get[du](){return this[uu]}get[gu](){return this[fu]}get[yu](){return this[pu]}addEventListener(e,t,r){r=mu(r);const s=this;let i,n,o=!1;if("function"==typeof t||"function"==typeof t?.handleEvent){n=this[uu].get(e),void 0===n&&(n=new Set,this[uu].set(e,n));for(const e of n)if(e.callback===t&&(i=e.handler,bu(e.options,r))){o=!0;break}}"function"==typeof t?null==i?(i=async function(e){let r;s[fu].add(e);try{r=t.call(s,e)}catch(e){this.dispatchEvent(new cu({detail:e}))}if("function"==typeof r?.then)try{await r}catch(e){this.dispatchEvent(new cu({detail:e}))}},n.add({callback:t,options:r,handler:i})):o||n.add({callback:t,options:r,handler:i}):"function"==typeof t?.handleEvent?null==i?(i=async function(e){let r;s[fu].add(e);try{r=t.handleEvent(e)}catch(e){this.dispatchEvent(new cu({detail:e}))}if("function"==typeof r?.then)try{await r}catch(e){this.dispatchEvent(new cu({detail:e}))}return r},n.add({callback:t,options:r,handler:i})):o||n.add({callback:t,options:r,handler:i}):i=t,this[lu].addEventListener(e,i,r),e===cu.name&&1===n?.size&&this[lu].removeEventListener(cu.name,this[pu])}removeEventListener(e,t,r){let s,i,n;if(r=mu(r),null!=t){if(i=this[uu].get(e),void 0===i)return;for(const e of i)if(e.callback===t&&bu(e.options,r)){s=e.handler,n=e;break}if(null==s)return}else s=t;this[lu].removeEventListener(e,s,r),null!=i&&null!=n&&(i.delete(n),e===cu.name&&0===i.size&&this[lu].addEventListener(cu.name,this[pu]))}dispatchEvent(e){if(Object.defineProperties(e,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),e instanceof cu)return this[lu].dispatchEvent(e);{let t=this[lu].dispatchEvent(e);if(t&&!this[fu].has(e)){const r=new iu({bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e});Object.defineProperties(r,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),t=this[lu].dispatchEvent(r)}if(t){const r=new ou({bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e});Object.defineProperties(r,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),t=this[lu].dispatchEvent(r)}return t}}};return Object.defineProperty(t,"name",Object.getOwnPropertyDescriptor(e,"name")),t}}async function Iu(e,t){const r=[],s=[];let i;try{for(const t of e){const[e,i]=await t(s);r.push(e),s.push(i)}return await t(s)}catch(e){throw i=e,e}finally{r.reverse();for(const e of r)await e(i)}}async function*vu(e,t){const r=[],s=[];let i;try{for(const t of e){const[e,i]=await t(s);r.push(e),s.push(i)}return yield*t(s)}catch(e){throw i=e,e}finally{r.reverse();for(const e of r)await e(i)}}class wu extends Promise{static get[Symbol.species](){return Promise}static resolve(e){return e instanceof wu?e:super.resolve(e)}static reject(e){return super.reject(e)}static all(e,t){const r=super.all(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static allSettled(e,t){const r=super.allSettled(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static race(e,t){const r=super.race(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static any(e,t){const r=super.any(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static from(e,t){return new this((t,r)=>{e.then(t,r)},t)}reject;abortController;constructor(e,t){let r,s,i,n;"function"==typeof t?(r=new AbortController,t(r.signal),s=r.signal,i=!0):null!=t?(r=t,s=t.signal,i=!0):(r=new AbortController,s=new Proxy(r.signal,{get:(e,t,r)=>"addEventListener"===t?function(...r){return i=!0,e[t].apply(this,r)}:Reflect.get(e,t,r),set:(e,t,r)=>("onabort"===t&&(i=!0),Reflect.set(e,t,r)),deleteProperty:(e,t)=>("onabort"===t&&(i=!0),Reflect.deleteProperty(e,t))}),i=!1),super((t,r)=>{n=e=>{e instanceof DOMException&&"AbortError"===e.name&&(e=void 0),r(e)},e(t,n,s)}),i||r.signal.addEventListener("abort",()=>{n(r.signal.reason)},{once:!0}),this.reject=n,this.abortController=r}get[Symbol.toStringTag](){return this.constructor.name}cancel(e){this.abortController.abort(e)}then(e,t,r){let s,i,n;"function"==typeof e&&(i=t=>e(t,s)),"function"==typeof t&&(n=e=>t(e,s));const o=super.then(i,n),a=wu.from(o,r);return s=a.abortController.signal,a}catch(e,t){let r,s;"function"==typeof e&&(s=t=>e(t,r));const i=super.catch(s);return"function"==typeof t?(i.abortController=new AbortController,t(i.abortController.signal)):null!=t&&(i.abortController=t),r=i.abortController.signal,i}finally(e,t){let r,s;"function"==typeof e&&(s=()=>e(r));const i=super.finally(s);return"function"==typeof t?(i.abortController=new AbortController,t(i.abortController.signal)):null!=t&&(i.abortController=t),r=i.abortController.signal,i}}const Su=wu,Eu=t(import.meta.url)("node:perf_hooks");var Cu,ku=(Cu=function(e,t){return Cu=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},Cu(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}Cu(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),xu=function(e){function t(t){var r,s,i,n=this.constructor,o=e.call(this,t)||this;return Object.defineProperty(o,"name",{value:n.name,enumerable:!1,configurable:!0}),r=o,s=n.prototype,(i=Object.setPrototypeOf)?i(r,s):r.__proto__=s,function(e,t){void 0===t&&(t=e.constructor);var r=Error.captureStackTrace;r&&r(e,t)}(o),o}return ku(t,e),t}(Error);const _u=class extends xu{static description="";static fromJSON(e){if("object"!=typeof e||e.type!==this.name||"object"!=typeof e.data||"string"!=typeof e.data.message||isNaN(Date.parse(e.data.timestamp))||"object"!=typeof e.data.data||"stack"in e.data&&"string"!=typeof e.data.stack)throw new TypeError(`Cannot decode JSON to ${this.name}`);const t=new this(e.data.message,{timestamp:new Date(e.data.timestamp),data:e.data.data,cause:e.data.cause});return t.stack=e.data.stack,t}data;cause;timestamp;constructor(e="",t={}){super(e),this.timestamp=t.timestamp??new Date(Eu.performance.timeOrigin+Eu.performance.now()),this.data=t.data??{},this.cause=t.cause}get description(){return this.constructor.description}toJSON(){return{type:this.constructor.name,description:this.description,data:{message:this.message,timestamp:this.timestamp,data:this.data,cause:this.cause,stack:this.stack}}}};function Bu(e,t,r=new Set){if(r.has(e))return!1;if(r.add(e),t(e))return!0;if(e instanceof AggregateError){for(const s of e.errors){const e=Bu(s,t,r);if(e)return e}return Bu(e.cause,t,r)}return e instanceof Error&&Bu(e.cause,t,r)}class Ru extends _u{static description="Timer error"}class Ou extends Ru{static description="The timer has already ended"}class Uu{_delay;lazy;timestamp;_scheduled;handler;p;resolveP;rejectP;abortController;timeoutRef;_status=null;constructor(e,t=0,r=!1,s){let i,n;"function"==typeof e?i=e:"object"==typeof e&&null!==e&&(i=e.handler,t=e.delay??t,r=e.lazy??r,s=e.controller??s),isNaN(t)?t=0:(t=Math.max(t,0),isFinite(t)&&(t=Math.min(t,2**31-1))),this.handler=i,this._delay=t,this.lazy=r,"function"==typeof s?(n=new AbortController,s(n.signal)):null!=s?n=s:(n=new AbortController,n.signal.addEventListener("abort",()=>{this.reject(n.signal.reason)})),this.p=new Su((e,t)=>{this.resolveP=e.bind(this.p),this.rejectP=t.bind(this.p)},n),this.abortController=n,isFinite(t)?(this.timeoutRef=setTimeout(()=>{this.fulfill()},t),this.timestamp=new Date(Eu.performance.timeOrigin+Eu.performance.now()),this._scheduled=new Date(this.timestamp.getTime()+t)):(this.timeoutRef=setInterval(()=>{},2**31-1),this.timestamp=new Date(Eu.performance.timeOrigin+Eu.performance.now()))}get[Symbol.toStringTag](){return this.constructor.name}get status(){return this._status}get scheduled(){return this._scheduled}get delay(){return this._delay}getTimeout(){return null!==this._status?0:null==this._scheduled?1/0:Math.max(Math.trunc(this._scheduled.getTime()-(Eu.performance.timeOrigin+Eu.performance.now())),0)}toString(){return this.getTimeout().toString()}valueOf(){return this.getTimeout()}cancel(e){this.p.catch(()=>{}),this.p.cancel(e)}then(e,t,r){return this.p.then(e,t,r)}catch(e,t){return this.p.catch(e,t)}finally(e,t){return this.p.finally(e,t)}refresh(){if(null!=this._status)throw new Ou;return this.reset(this._delay)}reset(e){if(null!=this._status)throw new Ou;clearTimeout(this.timeoutRef),this._delay=e,isFinite(e)?(this.timeoutRef=setTimeout(()=>{this.fulfill()},e),this._scheduled=new Date(Eu.performance.timeOrigin+Eu.performance.now()+e)):(this.timeoutRef=setInterval(()=>{},2**31-1),delete this._scheduled)}async fulfill(){if(this._status="settling",clearTimeout(this.timeoutRef),delete this.timeoutRef,null!=this.handler)try{const e=await this.handler(this.abortController.signal);this.resolveP(e)}catch(e){this.rejectP(e)}else this.resolveP();delete this.handler,this._status="settled"}async reject(e){this.lazy&&"settling"===this._status||"settled"===this._status||(this._status="settling",clearTimeout(this.timeoutRef),delete this.timeoutRef,this.rejectP(e),delete this.handler,this._status="settled")}}const Tu=Uu;function Nu(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function Du(e,t,r,s,i,n){let o,a;if(void 0!==i.timer&&"number"!=typeof i.timer||void 0!==i.signal)if((void 0===i.timer||"number"==typeof i.timer)&&i.signal instanceof AbortSignal){o=new AbortController;const e=new s,t=new Tu(()=>{o.abort(e)},i.timer??r),n=i.signal,c=()=>{t.cancel(),o.abort(n.reason)};n.aborted?(t.cancel(),o.abort(n.reason)):n.addEventListener("abort",c),i.signal=o.signal,i.timer=t,a=()=>{n.removeEventListener("abort",c),t.cancel()}}else if(i.timer instanceof Tu&&void 0===i.signal){o=new AbortController;const e=new s;let t=!1;i.timer.then((r,s)=>(t||s.aborted||o.abort(e),r),()=>{}),i.signal=o.signal,a=()=>{t=!0}}else{o=new AbortController;const e=i.signal,t=()=>{o.abort(e.reason)};e.aborted?o.abort(e.reason):e.addEventListener("abort",t),i.signal=o.signal,a=()=>{e.removeEventListener("abort",t)}}else{o=new AbortController;const e=new s,t=new Tu(()=>{o.abort(e)},i.timer??r);o.signal.addEventListener("abort",()=>{t.cancel()}),i.signal=o.signal,i.timer=t,a=()=>{t.cancel()}}const c=e(i,...n);return new Su((e,r,s)=>{t||(s.aborted?r(s.reason):s.addEventListener("abort",()=>{r(s.reason)},{once:!0})),c.then(e,r)},o).finally(()=>{a()},o)}class Mu extends _u{static description="Async locks error"}class Pu extends Mu{static description="Async locks timeout"}const Lu=class{limit;priority;_count=0;currentWeight=0;queue=[];abortQueueMap=new WeakMap;constructor(e,t=!1){if(e<1)throw new RangeError("Semaphore must be constructed with `limit` >= 1");this.limit=e,this.priority=t}get count(){return this._count}isLocked(){return this._count>0}lock(...e){const t=(2===e.length||"number"==typeof e[0]?e[0]:void 0)??1;let r=2===e.length?e[1]:"number"!=typeof e[0]?e[0]:void 0;if(t<1)throw new RangeError("Semaphore must be locked with `weight` >= 1");return r=null!=r?{...r}:{},()=>Du((e,t)=>{this._count++;const{p:r,resolveP:s,rejectP:i}=Nu();if(e.signal.aborted)return this._count--,i(e.signal.reason),r;const n=()=>{this._count--;const t=this.abortQueueMap.get(n);null!=t&&(t.aborted=!0),i(e.signal.reason)};let o=!1;const a={task:()=>{this.currentWeight+=t,e.signal.removeEventListener("abort",n),s([async()=>{o||(o=!0,this._count--,this.currentWeight-=t,this.processQueue())},this])},weight:t,abortHandler:n,aborted:!1};return e.signal.addEventListener("abort",n,{once:!0}),this.abortQueueMap.set(n,a),this.insertQueue(a),this.processQueue(),r},!0,1/0,Pu,r,[t])}waitForUnlock(...e){const t=(2===e.length||"number"==typeof e[0]?e[0]:void 0)??1;let r=2===e.length?e[1]:"number"!=typeof e[0]?e[0]:void 0;if(t<1)throw new RangeError("Semaphore must be locked with `weight` >= 1");return r=null!=r?{...r}:{},Du((e,t)=>{const{p:r,resolveP:s,rejectP:i}=Nu();if(e.signal.aborted)return i(e.signal.reason),r;const n=()=>{const t=this.abortQueueMap.get(n);null!=t&&(t.aborted=!0),i(e.signal.reason)},o={task:()=>{e.signal.removeEventListener("abort",n),s()},weight:t,abortHandler:n,aborted:!1};return e.signal.addEventListener("abort",n,{once:!0}),this.abortQueueMap.set(n,o),this.insertQueue(o),this.processQueue(),r},!0,1/0,Pu,r,[t])}withF(...e){const t=e.pop();return Iu([this.lock(...e)],([e])=>t(e))}withG(...e){const t=e.pop();return vu([this.lock(...e)],([e])=>t(e))}insertQueue(e){if(this.priority){let t=this.queue.length;for(;t>0&&this.queue[t-1].weight<e.weight;)t--;this.queue.splice(t,0,e)}else this.queue.unshift(e)}processQueue(){for(;this.queue.length>0&&this.currentWeight+this.queue[this.queue.length-1].weight<=this.limit;){const e=this.queue.pop();e.aborted||e.task()}}},Hu=class{semaphore=new Lu(1);get count(){return this.semaphore.count}isLocked(){return this.semaphore.isLocked()}lock(e){const t=this.semaphore.lock(1,e);return()=>{const e=t();return e.then(([e])=>[e,this],void 0,t=>{t.addEventListener("abort",()=>{e.cancel(t.reason)},{once:!0})})}}waitForUnlock(e){return this.semaphore.waitForUnlock(1,e)}withF(...e){const t=e.pop();return Iu([this.lock(...e)],([e])=>t(e))}withG(...e){const t=e.pop();return vu([this.lock(...e)],([e])=>t(e))}},Ku=class{readersLock=new Hu;writersLock=new Hu;readersRelease;readerCountBlocked=0;acquireReadersLockP;_readerCount=0;_writerCount=0;get count(){return this.readerCount+this.writerCount}get readerCount(){return this._readerCount+this.readerCountBlocked}get writerCount(){return this._writerCount}isLocked(e){return"read"===e?0===this._writerCount&&this.readersLock.isLocked():"write"===e?this.writersLock.isLocked():this.readersLock.isLocked()||this.writersLock.isLocked()}lock(...e){const t=(2===e.length||"string"==typeof e[0]?e[0]:void 0)??"write",r=2===e.length?e[1]:"string"!=typeof e[0]?e[0]:void 0;switch(t){case"read":return this.read(r);case"write":return this.write(r)}}read(e){return e=null!=e?{...e}:{},()=>Du(async e=>{if(this._writerCount>0){++this.readerCountBlocked;const t=this.writersLock.waitForUnlock(e);try{await t}finally{--this.readerCountBlocked}}if(1===++this._readerCount){const t=this.readersLock.lock(e);this.acquireReadersLockP=t();try{[this.readersRelease]=await this.acquireReadersLockP}catch(e){throw--this._readerCount,e}}else await this.acquireReadersLockP.catch(()=>{});let t=!1;return[async()=>{t||(t=!0,0===--this._readerCount&&await this.readersRelease())},this]},!0,1/0,Pu,e,[])}write(e){return e=null!=e?{...e}:{},()=>Du(async e=>{++this._writerCount;const t=this.writersLock.lock(e)();let r;try{[r]=await t}catch(e){throw--this._writerCount,e}const s=this.readersLock.lock(e)();try{[this.readersRelease]=await s}catch(e){throw await r(),--this._writerCount,e}let i=!1;return[async()=>{i||(i=!0,await this.readersRelease(),await r(),--this._writerCount)},this]},!0,1/0,Pu,e,[])}waitForUnlock(e){const t=this.readersLock.waitForUnlock(e),r=this.writersLock.waitForUnlock(e);return Su.all([t,r]).then(()=>{},void 0,e=>{e.addEventListener("abort",()=>{t.cancel(e.reason),r.cancel(e.reason)},{once:!0})})}withF(...e){let t;switch(2===e.length||"string"==typeof e[0]?t=e.shift():null==typeof e[0]&&e.shift(),t=t??"write",t){case"read":return this.withReadF(...e);case"write":return this.withWriteF(...e)}}withReadF(...e){const t=e.pop();return Iu([this.read(...e)],([e])=>t(e))}withWriteF(...e){const t=e.pop();return Iu([this.write(...e)],([e])=>t(e))}withG(...e){let t;switch(2===e.length||"string"==typeof e[0]?t=e.shift():null==typeof e[0]&&e.shift(),t=t??"write",t){case"read":return this.withReadG(...e);case"write":return this.withWriteG(...e)}}withReadG(...e){const t=e.pop();return vu([this.read(...e)],([e])=>t(e))}withWriteG(...e){const t=e.pop();return vu([this.write(...e)],([e])=>t(e))}},Qu=Symbol("_running"),Vu=Symbol("running"),Fu=Symbol("_destroyed"),$u=Symbol("destroyed"),ju=Symbol("_status"),Gu=Symbol("status"),qu=Symbol("_statusP"),zu=Symbol("statusP"),Wu=Symbol("resolveStatusP"),Ju=Symbol("initLock"),Yu=(async()=>{}).constructor,Xu=function*(){}.constructor,Zu=async function*(){}.constructor,ed="captureStackTrace"in Error;function td(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function rd(e,t){if(null!=e.stack){const r=e.stack.slice(0,e.stack.indexOf("\n")+1);ed?Error.captureStackTrace(e,t):e.stack=(new Error).stack??"",e.stack=e.stack.replace(/[^\n]+\n/,r)}}class sd extends ru{}class id extends sd{}class nd extends sd{}class od extends sd{}class ad extends sd{}class cd extends sd{}class ld extends sd{}class hd extends _u{static description="Async init error"}class ud extends hd{static description="Async init is not running"}class dd extends hd{static description="Async init is destroyed"}function fd({eventDestroy:e=cd,eventDestroyed:t=ld}={}){return r=>{const{p:s,resolveP:i}=td(),n=class extends(Au()(r)){[Fu]=!1;[ju]=null;[qu]=s;[Wu]=i;[Ju]=new Ku;get[$u](){return this[Fu]}get[Gu](){return this[ju]}get[zu](){return this[qu]}async destroy(...r){return this[Ju].withWriteF(async()=>{if(this[Fu])return;this[ju]="destroying",this[Wu]("destroying");const{p:s,resolveP:i}=td();let n;return this[qu]=s,this[Wu]=i,this.dispatchEvent(new e),"function"==typeof super.destroy&&(n=await super.destroy(...r)),this[Fu]=!0,this.dispatchEvent(new t),n}).finally(()=>{this[ju]=null,this[Wu](null);const{p:e,resolveP:t}=td();this[qu]=e,this[Wu]=t})}};return Object.defineProperty(n,"name",Object.getOwnPropertyDescriptor(r,"name")),n}}function gd(e=new dd,t=!1,r=[]){return(s,i,n)=>{let o;null!=n.value?o="value":null!=n.get?o="get":null!=n.set&&(o="set");const a=n[o];if("function"!=typeof a)throw new TypeError(`${i} is not a function`);return n[o]=a instanceof Yu?async function(...s){if(this[Ju].isLocked("write")&&null===this[ju]&&await this[qu],r.includes(this[ju]))return a.apply(this,s);if(t)return this[Ju].withReadF(async()=>{if(this[Fu])throw rd(e,n[o]),e;return a.apply(this,s)});if(this[Ju].isLocked("write")||this[Fu])throw rd(e,n[o]),e;return a.apply(this,s)}:a instanceof Xu?function*(...t){if(r.includes(this[ju]))return yield*a.apply(this,t);if(this[Ju].isLocked("write")&&null!==this[Gu]||this[Fu])throw rd(e,n[o]),e;return yield*a.apply(this,t)}:a instanceof Zu?async function*(...s){if(this[Ju].isLocked("write")&&null===this[ju]&&await this[qu],r.includes(this[ju]))return yield*a.apply(this,s);if(t)return yield*this[Ju].withReadG(()=>{if(this[Fu])throw rd(e,n[o]),e;return a.apply(this,s)});if(this[Ju].isLocked("write")||this[Fu])throw rd(e,n[o]),e;return yield*a.apply(this,s)}:function(...t){if(r.includes(this[ju]))return a.apply(this,t);if(this[Ju].isLocked("write")&&null!==this[Gu]||this[Fu])throw rd(e,n[o]),e;return a.apply(this,t)},Object.defineProperty(n[o],"name",{value:i}),n}}function pd({eventStart:e=id,eventStarted:t=nd,eventStop:r=od,eventStopped:s=ad}={}){return i=>{const{p:n,resolveP:o}=td(),a=class extends(Au()(i)){[Qu]=!1;[ju]=null;[qu]=n;[Wu]=o;[Ju]=new Ku;get[Vu](){return this[Qu]}get[Gu](){return this[ju]}get[zu](){return this[qu]}async start(...r){return this[Ju].withWriteF(async()=>{if(this[Qu])return;this[ju]="starting",this[Wu]("starting");const{p:s,resolveP:i}=td();let n;return this[qu]=s,this[Wu]=i,this.dispatchEvent(new e),"function"==typeof super.start&&(n=await super.start(...r)),this[Qu]=!0,this.dispatchEvent(new t),n}).finally(()=>{this[ju]=null,this[Wu](null);const{p:e,resolveP:t}=td();this[qu]=e,this[Wu]=t})}async stop(...e){return this[Ju].withWriteF(async()=>{if(!this[Qu])return;this[ju]="stopping",this[Wu]("stopping");const{p:t,resolveP:i}=td();let n;return this[qu]=t,this[Wu]=i,this.dispatchEvent(new r),"function"==typeof super.stop&&(n=await super.stop(...e)),this[Qu]=!1,this.dispatchEvent(new s),n}).finally(()=>{this[ju]=null,this[Wu](null);const{p:e,resolveP:t}=td();this[qu]=e,this[Wu]=t})}};return Object.defineProperty(a,"name",Object.getOwnPropertyDescriptor(i,"name")),a}}function yd(e=new ud,t=!1,r=[]){return(s,i,n)=>{let o;null!=n.value?o="value":null!=n.get?o="get":null!=n.set&&(o="set");const a=n[o];if("function"!=typeof a)throw new TypeError(`${i} is not a function`);return n[o]=a instanceof Yu?async function(...s){if(this[Ju].isLocked("write")&&null===this[ju]&&await this[qu],r.includes(this[ju]))return a.apply(this,s);if(t)return this[Ju].withReadF(async()=>{if(!this[Qu])throw rd(e,n[o]),e;return a.apply(this,s)});if(this[Ju].isLocked("write")||!this[Qu])throw rd(e,n[o]),e;return a.apply(this,s)}:a instanceof Xu?function*(...t){if(r.includes(this[ju]))return yield*a.apply(this,t);if(this[Ju].isLocked("write")&&null!==this[Gu]||!this[Qu])throw rd(e,n[o]),e;return yield*a.apply(this,t)}:a instanceof Zu?async function*(...s){if(this[Ju].isLocked("write")&&null===this[ju]&&await this[qu],r.includes(this[ju]))return yield*a.apply(this,s);if(t)return yield*this[Ju].withReadG(()=>{if(!this[Qu])throw rd(e,n[o]),e;return a.apply(this,s)});if(this[Ju].isLocked("write")||!this[Qu])throw rd(e,n[o]),e;return yield*a.apply(this,s)}:function(...t){if(r.includes(this[ju]))return a.apply(this,t);if(this[Ju].isLocked("write")&&null!==this[Gu]||!this[Qu])throw rd(e,n[o]),e;return a.apply(this,t)},Object.defineProperty(n[o],"name",{value:i}),n}}class md extends Uint8Array{string;static fromString(e){const t=Buffer.from(e,"hex");return new this(t.buffer,t.byteOffset,t.byteLength)}static fromBuffer(e){return new this(e.buffer,e.byteOffset,e.byteLength)}constructor(...e){super(...e),this.string=this.toBuffer().toString("hex")}toString(){return this.string}toBuffer(){return Buffer.from(this.buffer,this.byteOffset,this.byteLength)}[Symbol.toPrimitive](e){return this.toString()}}const bd=md;class Ad{[Symbol.toStringTag]="QUICConnectionMap";_serverConnections=new Map;_clientConnections=new Map;constructor(e){if(null!=e)for(const[t,r]of e)this.set(t,r)}get size(){return this._serverConnections.size+this._clientConnections.size}get serverConnections(){return this._serverConnections}get clientConnections(){return this._clientConnections}has(e){return this._serverConnections.has(e.toString())||this._clientConnections.has(e.toString())}get(e){return this._serverConnections.get(e.toString())??this._clientConnections.get(e.toString())}set(e,t){return"server"===t.type?this._serverConnections.set(e.toString(),t):"client"===t.type&&this._clientConnections.set(e.toString(),t),this}delete(e){return this._serverConnections.delete(e.toString())||this._clientConnections.delete(e.toString())}clear(){this._serverConnections.clear(),this._clientConnections.clear()}forEach(e,t){this._serverConnections.forEach((r,s)=>{e.bind(t)(r,bd.fromString(s),this)}),this._clientConnections.forEach((r,s)=>{e.bind(t)(r,bd.fromString(s),this)})}[Symbol.iterator](){const e=this._serverConnections[Symbol.iterator](),t=this._clientConnections[Symbol.iterator](),r={next:()=>{const r=e.next();if(!r.done){const[e,t]=r.value;return{done:!1,value:[bd.fromString(e),t]}}const s=t.next();if(!s.done){const[e,t]=s.value;return{done:!1,value:[bd.fromString(e),t]}}return{done:!0,value:void 0}},[Symbol.iterator]:()=>r};return r}entries(){return this[Symbol.iterator]()}keys(){const e={next:()=>{const e=this[Symbol.iterator]().next();return e.done?{done:!0,value:void 0}:{done:!1,value:e.value[0]}},[Symbol.iterator]:()=>e};return e}values(){const e={next:()=>{const e=this[Symbol.iterator]().next();return e.done?{done:!0,value:void 0}:{done:!1,value:e.value[1]}},[Symbol.iterator]:()=>e};return e}}const Id=Ad,vd=t(import.meta.url)("process");var wd=o(928);const Sd=t(import.meta.url)("url"),Ed=t(import.meta.url)("node:module").createRequire("file:///home/runner/work/typeberry/typeberry/node_modules/@matrixai/quic/dist/native/quiche.js"),Cd=Sd.fileURLToPath(new URL(o(810),o.b)),kd=wd.join(Cd,"../../"),xd=wd.join(kd,"prebuild");function _d(e){const t=e.map(e=>wd.join(xd,`quic-${e}.node`));for(const e of t){try{return Ed(e)}catch(e){if("MODULE_NOT_FOUND"!==e.code)throw e}try{return Ed(Sd.pathToFileURL(e).href)}catch(e){if("MODULE_NOT_FOUND"!==e.code)throw e}}const r=e.map(e=>`@matrixai/quic-${e}`);for(const e of r){try{return Ed(e)}catch(e){if("MODULE_NOT_FOUND"!==e.code)throw e}try{return Ed(Sd.pathToFileURL(e).href)}catch(e){if("MODULE_NOT_FOUND"!==e.code)throw e}}throw new Error(`Failed requiring possible native bindings: ${t.concat(r)}`)}let Bd;switch(vd.platform){case"win32":switch(vd.arch){case"x64":Bd=_d(["win32-x64"]);break;case"ia32":Bd=_d(["win32-ia32"]);break;case"arm64":Bd=_d(["win32-arm64"]);break;default:throw new Error(`Unsupported architecture on Windows: ${vd.arch}`)}break;case"darwin":switch(vd.arch){case"x64":Bd=_d(["darwin-x64","darwin-x64+arm64","darwin-arm64+x64","darwin-universal"]);break;case"arm64":Bd=_d(["darwin-arm64","darwin-arm64+x64","darwin-x64+arm64","darwin-universal"]);break;default:throw new Error(`Unsupported architecture on macOS: ${vd.arch}`)}break;case"linux":switch(vd.arch){case"x64":Bd=_d(["linux-x64"]);break;case"arm64":Bd=_d(["linux-arm64"]);break;case"arm":Bd=_d(["linux-arm"]);break;default:throw new Error(`Unsupported architecture on Linux: ${vd.arch}`)}break;default:throw new Error(`Unsupported OS: ${vd.platform}, architecture: ${vd.arch}`)}const Rd=Bd,Od=t(import.meta.url)("dns");var Ud=o(618);class Td extends _u{static description="QUIC error"}class Nd extends _u{static description="You should never see this error"}class Dd extends _u{static description="Host provided was not valid"}class Md extends _u{static description="Port provided was not valid"}class Pd extends Td{static description="QUIC config error"}class Ld extends Td{static description="QUIC Socket error"}class Hd extends Ld{static description="QUIC Socket is not running"}class Kd extends Ld{static description="QUIC Socket has active connections"}class Qd extends Ld{static description="QUIC Socket cannot bind to the specified address"}class Vd extends Ld{static description="QUIC Socket cannot send to the specified address"}class Fd extends Ld{static description="QUIC Socket internal error"}class $d extends Td{static description="QUIC Client error"}class jd extends $d{static description="QUIC Client is destroyed"}class Gd extends $d{static description="QUIC Client cannot be created with an unstarted shared QUIC socket"}class qd extends $d{static description="QUIC Client had a failure relating to an invalid argument"}class zd extends $d{static description="QUIC Client cannot be created with the specified host"}class Wd extends $d{static description="QUIC Client internal error"}class Jd extends Td{static description="QUIC Server error"}class Yd extends Jd{static description="QUIC Server is not running"}class Xd extends Jd{static description="QUIC Server cannot start with an unstarted shared QUIC socket"}class Zd extends Jd{static description="QUIC Server creating a new connection"}class ef extends Jd{static description="QUIC Server internal error"}class tf extends Jd{static description="QUIC Server is stopping"}class rf extends Td{static description="QUIC Connection error"}class sf extends rf{static description="QUIC Connection is stopping"}class nf extends rf{static description="QUIC Connection is not running"}class of extends rf{static description="QUIC Connection cannot be restarted because it has already been closed"}class af extends Td{static description="QUIC Connection start requires data when it is a server connection"}class cf extends rf{static description="QUIC connection invalid configuration"}class lf extends rf{static description="QUIC Connection local error";constructor(e="",t){super(e,t)}}class hf extends lf{static description="QUIC Connection local TLS error";constructor(e="",t){super(e,t)}}class uf extends rf{static description="QUIC Connection peer error";constructor(e="",t){super(e,t)}}class df extends lf{static description="QUIC Connection local TLS error";constructor(e="",t){super(e,t)}}class ff extends rf{static description="QUIC Connection max idle timeout exhausted"}class gf extends rf{static description="QUIC Connection internal error"}class pf extends Td{static description="QUIC Stream error"}class yf extends pf{static description="QUIC Stream is destroyed"}class mf extends pf{static description="QUIC Stream locally closed readable side";constructor(e="",t){super(e,t)}}class bf extends pf{static description="QUIC Stream locally closed writable side";constructor(e="",t){super(e,t)}}class Af extends pf{static description="QUIC Stream peer closed readable side";constructor(e="",t){super(e,t)}}class If extends pf{static description="QUIC Stream peer closed writable side";constructor(e="",t){super(e,t)}}class vf extends pf{static description="QUIC Stream internal error"}class wf extends pf{static description="QUIC Stream limit has been reached"}const Sf=new TextEncoder,Ef=new TextDecoder("utf-8");function Cf(e){throw new Nd(e)}function kf(e){return function(...t){return new Promise((r,s)=>{t.push((e,...t)=>{if(null!=e)return s(e);0===t.length?r():1===t.length?r(t[0]):r(t)}),e.apply(this,t)})}}function xf(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function _f(e){const[t]=Ud.Validator.isValidIPv4String(e);return t}function Bf(e){const[t]=Ud.Validator.isValidIPv6String(e);return!!t||Rf(e)}function Rf(e){if(e.startsWith("::ffff:"))try{return Ud.IPv6.fromString(e),!0}catch{if(_f(e.slice(7)))return!0}return!1}function Of(e){if(!_f(e))throw new TypeError("Invalid IPv4 address");return"::ffff:"+e}function Uf(e){const t=e.slice(7);if(_f(t))return t;const r=t.match(/^([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/);if(null==r)throw new TypeError("Invalid IPv4 mapped IPv6 address");return(r[1].padStart(4,"0")+r[2].padStart(4,"0")).match(/.{1,2}/g).map(e=>parseInt(e,16)).join(".")}function Tf(e){const t=new Ud.IPv4("0.0.0.0"),r=new Ud.IPv6("::");if(Rf(e)){const r=Uf(e);return new Ud.IPv4(r).isEquals(t)?Of("127.0.0.1"):e}return _f(e)&&new Ud.IPv4(e).isEquals(t)?"127.0.0.1":Bf(e)&&new Ud.IPv6(e).isEquals(r)?"::1":e}async function Nf(e){return(await Od.promises.lookup(e,{family:0,all:!1,verbatim:!0})).address}async function Df(e,t){if(_f(e))return[e,"udp4"];if(Bf(e))return[e,"udp6"];try{return Df(e=await t(e),t)}catch{throw new Dd}}function Mf(e){if(!function(e){return"number"==typeof e&&e>=0&&e<=65535}(e))throw new Md;return e}function Pf(e,t=0){let r;return r=_f(e)?`${e}:${t}`:Bf(e)?`[${e}]:${t}`:`${e}:${t}`,r}function Lf(e,t,r,s,i){if("0.0.0.0"===(n=r)||"::"===n||"::0"===n||"::ffff:0.0.0.0"===n||"::ffff:0:0"===n)throw new i(`Invalid wildcard target host ${r}`);var n;const o=Rf(e),a=Rf(r);if("ipv4&ipv6"===t&&"udp4"===s)return Of(r);if("ipv4"===t){if(o){if("udp4"===s)return Of(r);if("udp6"===s&&!a)throw new i(`Invalid target host ${r} from an IPv4 socket`)}else if("udp6"===s){if(a)return Uf(r);throw new i(`Invalid target host ${r} from an IPv4 socket`)}return r}if("ipv6"===t){if("udp4"===s||a)throw new i(`Invalid target host ${r} from an IPv6 socket`);return r}return r}function Hf(e){const t=[];if("string"==typeof e)t.push(e.trim()+"\n");else if(e instanceof Uint8Array)t.push(Ef.decode(e).trim()+"\n");else if(Array.isArray(e))for(const r of e)"string"==typeof r?t.push(r.trim()+"\n"):t.push(Ef.decode(r).trim()+"\n");return t}function Kf(e){const t=e.replace(/-----BEGIN .*-----/,"").replace(/-----END .*-----/,"").replace(/\s+/g,""),r=Buffer.from(t,"base64");return new Uint8Array(r)}function Qf(e){return`${e.name}${"description"in e?`: ${e.description}`:""}${void 0!==e.message?` - ${e.message}`:""}`}function Vf(e){let t;return null!=(t=e.message.match(/StreamStopped\((\d{1,16})\)/))&&parseInt(t[1])}function Ff(e){let t;return null!=(t=e.message.match(/StreamReset\((\d{1,16})\)/))&&parseInt(t[1])}function $f(e,t=1e5){Cn.setMaxListeners(t,e)}class jf extends ru{}class Gf extends jf{}class qf extends Gf{}class zf extends Gf{}class Wf extends Gf{}class Jf extends jf{}class Yf extends Jf{}class Xf extends Gf{}class Zf extends Jf{}class eg extends jf{}class tg extends eg{}class rg extends eg{}class sg extends eg{}class ig extends jf{}class ng extends ig{}class og extends ig{}class ag extends ig{}class cg extends ig{}class lg extends ig{}class hg extends jf{}class ug extends hg{}class dg extends hg{}class fg extends hg{}class gg extends hg{}class pg extends hg{}var yg=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let mg=class{connectionMap=new Id;logger;server;resolveHostname;_host;_port;_type;_closed=!1;_closedP;resolveClosedP;socket;socketBind;socketClose;socketSend;handleEventQUICSocketError=e=>{const t=e.detail;this.logger.debug(Qf(t))};handleEventQUICSocketClose=async()=>{await this.socketClose(),this._closed=!0,this.resolveClosedP(),this[Vu]&&await this.stop({force:!0})};handleSocketMessage=async(e,t)=>{let r;try{r=Rd.Header.fromSlice(e,Rd.MAX_CONN_ID_LEN)}catch(e){if("BufferTooShort"===e.message||"InvalidPacket"===e.message)return;throw e}const s=new bd(r.dcid),i={host:t.address,port:t.port},n=this.connectionMap.get(s);if(null!=n)await n.recv(e,i);else{if(null==this.server)return;try{await this.server.acceptConnection(i,r,s,e)}catch(e){if(Bu(e,e=>e instanceof Ld)){const t=new Fd("Failed to call accept connection due to socket send",{cause:e});return this.dispatchEvent(new zf({detail:t})),void this.dispatchEvent(new Wf)}if(e instanceof Zd)return;throw e}}};constructor({resolveHostname:e=Nf,logger:t}){this.logger=t??new eu(this.constructor.name),this.resolveHostname=e;const{p:r,resolveP:s}=xf();this._closedP=r,this.resolveClosedP=s}get host(){return this._host}get port(){return this._port}get type(){return this._type}get closed(){return this._closed}get closedP(){return this._closedP}async start({host:e="::",port:t=0,reuseAddr:r=!1,ipv6Only:s=!1}={}){$f(this[lu]);let i=Pf(e,t);this.logger.info(`Start ${this.constructor.name} on ${i}`);const[n,o]=await Df(e,this.resolveHostname),a=Mf(t);this.socket=Dh.createSocket({type:o,reuseAddr:r,ipv6Only:s}),this.socketBind=kf(this.socket.bind).bind(this.socket),this.socketClose=kf(this.socket.close).bind(this.socket),this.socketSend=kf(this.socket.send).bind(this.socket);const{p:c,rejectP:l}=xf();c.catch(()=>{}),this.socket.once("error",l);const h=this.socketBind(a,n);try{await Promise.race([h,c])}catch(t){throw new Qd(e!==n?`Could not bind to resolved ${e} -> ${n}`:`Could not bind to ${e}`,{cause:t})}this.socket.removeListener("error",l);const u=this.socket.address();this._host=u.address,this._port=u.port,"::"!==n||s?"udp4"===o||Rf(n)?this._type="ipv4":"udp6"===o&&(this._type="ipv6"):this._type="ipv4&ipv6",this.socket.on("message",this.handleSocketMessage),this.addEventListener(zf.name,this.handleEventQUICSocketError),this.addEventListener(Wf.name,this.handleEventQUICSocketClose,{once:!0}),this._closed=!1,i=Pf(this._host,this._port),this.logger.info(`Started ${this.constructor.name} on ${i}`)}async stop({force:e=!1}={}){const t=Pf(this._host,this._port);if(this.logger.info(`Stop ${this.constructor.name} on ${t}`),!e&&this.connectionMap.size>0)throw new Kd(`Cannot stop QUICSocket with ${this.connectionMap.size} active connection(s)`);this._closed||this.dispatchEvent(new Wf),await this._closedP;const{p:r,resolveP:s}=xf();this._closedP=r,this.resolveClosedP=s,this.removeEventListener(zf.name,this.handleEventQUICSocketError),this.removeEventListener(Wf.name,this.handleEventQUICSocketClose),this.socket.off("message",this.handleSocketMessage),this.logger.info(`Stopped ${this.constructor.name} on ${t}`)}async send(...e){let t;if(3===e.length&&"string"==typeof e[2])t=2;else{if(5!==e.length||"string"!=typeof e[4])throw new TypeError("QUICSocket.send requires `port` and `address` parameters");t=4}const r=e[t];let[s,i]=await Df(r,this.resolveHostname);return s=Tf(s),s=Lf(this._host,this._type,s,i,Vd),e[t]=s,this.socketSend(...e)}async send_(...e){return this.socketSend(...e)}setServer(e){this.server=e}unsetServer(){delete this.server}};yg([yd(new Hd)],mg.prototype,"host",null),yg([yd(new Hd)],mg.prototype,"port",null),yg([yd(new Hd)],mg.prototype,"type",null),yg([yd(new Hd)],mg.prototype,"send",null),yg([yd(new Hd)],mg.prototype,"send_",null),mg=yg([pd({eventStart:class extends Gf{},eventStarted:class extends Gf{},eventStop:class extends Gf{},eventStopped:qf})],mg);const bg=mg,Ag=new WeakMap;const Ig=function(e,t,r){const s=e.name??e.constructor.name,i=e[t];if(Ag.has(i))throw new TypeError(`\`${s}.${t.toString()}\` redeclares \`@context\` decorator`);Ag.set(i,r)};class vg extends _u{static description="Contexts error"}class wg extends vg{static description="Aborted due to timer expiration"}const Sg=function(e=!1,t=1/0,r=wg){return(s,i,n)=>{const o=s.name??s.constructor.name,a=n.value;if("function"!=typeof a)throw new TypeError(`\`${o}.${i.toString()}\` is not a function`);const c=function(e,t,r){const s=Ag.get(e[t]);if(null==s)throw new TypeError(`\`${r}.${t.toString()}\` does not have a \`@context\` parameter decorator`);return s}(s,i,o);return n.value=function(...s){let n=s[c];return n=void 0===n?{}:{...n},s[c]=n,function(e,t,r){if("object"!=typeof e||null===e)throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter is not a context object`);if(void 0!==e.signal&&!(e.signal instanceof AbortSignal))throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter's \`signal\` property is not an instance of \`AbortSignal\``);if(void 0!==e.timer&&!("number"==typeof e.timer||e.timer instanceof Tu))throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter's \`timer\` property is not a number nor an instance of \`Timer\``)}(n,i,o),function(e,t,r,s,i,n){let o,a;if(void 0!==i.timer&&"number"!=typeof i.timer||void 0!==i.signal)if((void 0===i.timer||"number"==typeof i.timer)&&i.signal instanceof AbortSignal){o=new AbortController;const e=new s,t=new Tu(()=>{o.abort(e)},i.timer??r),n=i.signal,c=()=>{t.cancel(),o.abort(n.reason)};n.aborted?(t.cancel(),o.abort(n.reason)):n.addEventListener("abort",c),i.signal=o.signal,i.timer=t,a=()=>{n.removeEventListener("abort",c),t.cancel()}}else if(i.timer instanceof Tu&&void 0===i.signal){o=new AbortController;const e=new s;let t=!1;i.timer.then((r,s)=>(t||s.aborted||o.abort(e),r),()=>{}),i.signal=o.signal,a=()=>{t=!0}}else{o=new AbortController;const e=i.signal,t=()=>{o.abort(e.reason)};e.aborted?o.abort(e.reason):e.addEventListener("abort",t),i.signal=o.signal,a=()=>{e.removeEventListener("abort",t)}}else{o=new AbortController;const e=new s,t=new Tu(()=>{o.abort(e)},i.timer??r);o.signal.addEventListener("abort",()=>{t.cancel()}),i.signal=o.signal,i.timer=t,a=()=>{t.cancel()}}const c=e(i,...n);return new Su((e,r,s)=>{t||(s.aborted?r(s.reason):s.addEventListener("abort",()=>{r(s.reason)},{once:!0})),c.then(e,r)},o).finally(()=>{a()},o)}((e,...t)=>a.apply(this,t),"boolean"==typeof e?e:e(this),"number"==typeof t?t:t(this),r,n,s)},Object.defineProperty(n.value,"name",{value:"symbol"==typeof i?`[${i.description}]`:i}),n}},Eg=["rsa_pkcs1_sha256","rsa_pkcs1_sha384","rsa_pkcs1_sha512","rsa_pss_rsae_sha256","rsa_pss_rsae_sha384","rsa_pss_rsae_sha512","ecdsa_secp256r1_sha256","ecdsa_secp384r1_sha384","ecdsa_secp521r1_sha512","ed25519"].join(":"),Cg=1/0,kg={sigalgs:Eg,verifyPeer:!0,grease:!0,keepAliveIntervalTime:void 0,maxIdleTimeout:0,maxRecvUdpPayloadSize:Rd.MAX_DATAGRAM_SIZE,maxSendUdpPayloadSize:Rd.MAX_DATAGRAM_SIZE,initialMaxData:10485760,initialMaxStreamDataBidiLocal:1048576,initialMaxStreamDataBidiRemote:1048576,initialMaxStreamDataUni:1048576,initialMaxStreamsBidi:100,initialMaxStreamsUni:100,maxConnectionWindow:Rd.MAX_CONNECTION_WINDOW,maxStreamWindow:Rd.MAX_STREAM_WINDOW,enableDgram:[!1,0,0],disableActiveMigration:!0,applicationProtos:["quic"],enableEarlyData:!0,readableChunkSize:4096},xg={sigalgs:Eg,verifyPeer:!1,grease:!0,keepAliveIntervalTime:void 0,maxIdleTimeout:0,maxRecvUdpPayloadSize:Rd.MAX_DATAGRAM_SIZE,maxSendUdpPayloadSize:Rd.MAX_DATAGRAM_SIZE,initialMaxData:10485760,initialMaxStreamDataBidiLocal:1048576,initialMaxStreamDataBidiRemote:1048576,initialMaxStreamDataUni:1048576,initialMaxStreamsBidi:100,initialMaxStreamsUni:100,maxConnectionWindow:Rd.MAX_CONNECTION_WINDOW,maxStreamWindow:Rd.MAX_STREAM_WINDOW,enableDgram:[!1,0,0],disableActiveMigration:!0,applicationProtos:["quic"],enableEarlyData:!0,readableChunkSize:4096},_g=t(import.meta.url)("stream/web");var Bg=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};const Rg=Symbol("abort readableP reason");let Og=class{static createQUICStream({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i=()=>0,codeToReason:n=(e,t)=>new Error(`${e.toString()} ${t.toString()}`),logger:o=new eu(`${this.name} ${t}`)}){o.info(`Create ${this.name}`);const a=new this({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i,codeToReason:n,logger:o});return"uni"===a.type&&("local"===e?(a.readableController.close(),a._readClosed=!0):"peer"===e&&(a.writable.close().catch(()=>{}),a._writeClosed=!0)),a.addEventListener(dg.name,a.handleEventQUICStreamError),a.addEventListener(fg.name,a.handleEventQUICStreamCloseRead,{once:!0}),a.addEventListener(gg.name,a.handleEventQUICStreamCloseWrite,{once:!0}),o.info(`Created ${this.name}`),a}type;initiated;streamId;readable;writable;closedP;logger;connection;reasonToCode;codeToReason;readableController;writableController;_readClosed=!1;_writeClosed=!1;readableChunk;resolveReadableP;rejectReadableP;resolveWritableP;rejectWritableP;resolveClosedP;handleEventQUICStreamError=e=>{const t=e.detail;if(t instanceof vf)throw this.logger.debug(Qf(t)),t;t instanceof mf||t instanceof Af?this.dispatchEvent(new fg({detail:t})):(t instanceof bf||t instanceof If)&&this.dispatchEvent(new gg({detail:t}))};handleEventQUICStreamCloseRead=async()=>{this._readClosed=!0,this._readClosed&&this._writeClosed&&(this.resolveClosedP(),this[$u]||"destroying"===this[Gu]||await this.destroy({force:!1}))};handleEventQUICStreamCloseWrite=async()=>{this._writeClosed=!0,this._readClosed&&this._writeClosed&&(this.resolveClosedP(),this[$u]||"destroying"===this[Gu]||await this.destroy({force:!1}))};constructor({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i,codeToReason:n,logger:o}){!function(e){return!(2&e)}(t)?function(e){return!!(2&e)}(t)&&(this.type="uni"):this.type="bidi",this.logger=o,this.initiated=e,this.streamId=t,this.connection=r,this.reasonToCode=i,this.codeToReason=n;const{p:a,resolveP:c}=xf();if(this.closedP=a,this.resolveClosedP=c,"uni"===this.type&&"local"===e?this.readableChunk=void 0:this.readableChunk=Buffer.allocUnsafe(s.readableChunkSize),"uni"===this.type&&"local"===e?this.readable=new _g.ReadableStream({start:this.readableStart.bind(this)}):this.readable=new _g.ReadableStream({start:this.readableStart.bind(this),pull:this.readablePull.bind(this),cancel:this.readableCancel.bind(this)},new _g.CountQueuingStrategy({highWaterMark:1})),"uni"===this.type&&"peer"===this.initiated)this.writable=new _g.WritableStream({start:this.writableStart.bind(this)});else{this.writable=new _g.WritableStream({start:this.writableStart.bind(this),write:this.writableWrite.bind(this),close:this.writableClose.bind(this),abort:this.writableAbort.bind(this)},{highWaterMark:1});try{r.conn.streamSend(t,new Uint8Array(0),!1)}catch(e){if(!1===Vf(e)){if("StreamLimit"===e.message){const t="bidi"===this.type?s.initialMaxStreamsBidi:s.initialMaxStreamsUni;throw new wf(`Stream limit of ${t} has been reached`,{cause:e})}throw new vf(`Failed to prime local stream state with a 0-length message: ${e.message}`,{cause:e})}}}}get writeClosed(){return this._writeClosed}get readClosed(){return this._readClosed}get meta(){return this.connection.meta()}get closed(){return this._readClosed&&this._writeClosed}async destroy({force:e=!0,reason:t}={}){this.logger.info(`Destroy ${this.constructor.name}`),!e||this._readClosed&&this._writeClosed||this.cancel(t),await this.closedP,this.removeEventListener(dg.name,this.handleEventQUICStreamError),this.removeEventListener(fg.name,this.handleEventQUICStreamCloseRead),this.removeEventListener(gg.name,this.handleEventQUICStreamCloseWrite),this.logger.info(`Destroyed ${this.constructor.name}`)}cancel(e){this.readableCancel(e),this.writableAbort(e)}read(){if(this.connection.conn.streamFinished(this.streamId)){let e;try{e=this.connection.conn.streamRecv(this.streamId,this.readableChunk)}catch(e){let t;if(!1!==(t=Ff(e))){const e=this.codeToReason("read",t),r=new Af("Peer reset the readable stream",{data:{code:t},cause:e});return this.readableController.error(e),this.rejectReadableP?.(e),void this.dispatchEvent(new dg({detail:r}))}{const t=new vf("Failed `streamRecv` on the readable stream",{cause:e});throw this.readableController.error(t),this.rejectReadableP?.(t),this.dispatchEvent(new dg({detail:t})),t}}if(null===e){const e=new vf("Failed `streamRecv` on the readable stream");throw this.readableController.error(e),this.rejectReadableP?.(e),this.dispatchEvent(new dg({detail:e})),e}const[t]=e;return t>0&&this.readableController.enqueue(Buffer.from(this.readableChunk.subarray(0,t))),this.readableController.close(),this.dispatchEvent(new fg),void this.rejectReadableP?.(Rg)}this.resolveReadableP?.()}write(){try{this.connection.conn.streamCapacity(this.streamId)}catch(e){let t;if(!1!==(t=Vf(e))){this.connection.conn.streamShutdown(this.streamId,Rd.Shutdown.Write,t);const e=this.codeToReason("write",t),r=new If("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),this.rejectWritableP?.(e),void this.dispatchEvent(new dg({detail:r}))}{const t=new vf("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.rejectWritableP?.(t),this.dispatchEvent(new dg({detail:t})),t}}this.resolveWritableP?.()}readableStart(e){this.readableController=e}writableStart(e){this.writableController=e}async readablePull(){if(!this.connection.conn.streamReadable(this.streamId)){const{p:e,resolveP:t,rejectP:r}=xf();e.catch(()=>{}),this.resolveReadableP=t,this.rejectReadableP=r;try{await e}catch(e){return}}let e;try{e=this.connection.conn.streamRecv(this.streamId,this.readableChunk)}catch(e){let t;if(!1!==(t=Ff(e))){const e=this.codeToReason("read",t),r=new Af("Peer reset the readable stream",{data:{code:t},cause:e});return this.readableController.error(e),void this.dispatchEvent(new dg({detail:r}))}{const t=new vf("Failed `streamRecv` on the readable stream",{cause:e});throw this.readableController.error(t),this.dispatchEvent(new dg({detail:t})),t}}if(null===e){const e=new vf("Failed `streamRecv` on the readable stream because it is not readable");throw this.readableController.error(e),this.dispatchEvent(new dg({detail:e})),e}const[t,r]=e;t>0&&this.readableController.enqueue(Buffer.from(this.readableChunk.subarray(0,t))),r&&(this.readableController.close(),this.dispatchEvent(new fg)),this.dispatchEvent(new pg)}async writableWrite(e){if(0===e.byteLength)return;let t;for(;;){try{const r=this.connection.conn.streamSend(this.streamId,e,!1);t=null===r?0:r}catch(e){let t;if(!1!==(t=Vf(e))){const e=this.codeToReason("write",t),r=new If("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),void this.dispatchEvent(new dg({detail:r}))}{const t=new vf("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.dispatchEvent(new dg({detail:t})),t}}if(this.dispatchEvent(new pg),t<e.byteLength){e=e.subarray(t,e.byteLength);const{p:r,resolveP:s,rejectP:i}=xf();r.catch(()=>{}),this.resolveWritableP=s,this.rejectWritableP=i,await r;continue}return}}writableClose(){try{this.connection.conn.streamSend(this.streamId,new Uint8Array(0),!0)}catch(e){let t;if(!1!==(t=Vf(e))){const e=this.codeToReason("write",t),r=new If("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),void this.dispatchEvent(new dg({detail:r}))}{const t=new vf("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.dispatchEvent(new dg({detail:t})),t}}this.dispatchEvent(new gg),this.dispatchEvent(new pg)}readableCancel(e){if(this._readClosed)return;const t=this.reasonToCode("read",e);try{this.connection.conn.streamShutdown(this.streamId,Rd.Shutdown.Read,t)}catch(r){const e=new vf("Local stream readable could not be shutdown",{cause:r});throw this.readableController.error(e),this.dispatchEvent(new dg({detail:e})),e}const r=new mf("Closing readable stream locally",{data:{code:t},cause:e});this.readableController.error(e),this.rejectReadableP?.(e),this.dispatchEvent(new dg({detail:r})),this.dispatchEvent(new pg)}writableAbort(e){if(this._writeClosed)return;const t=this.reasonToCode("write",e);try{this.connection.conn.streamShutdown(this.streamId,Rd.Shutdown.Write,t)}catch(r){const e=new vf("Local stream writable could not be shutdown",{cause:r});throw this.writableController.error(e),this.dispatchEvent(new dg({detail:e})),e}const r=new bf("Closing writable stream locally",{data:{code:t},cause:e});this.writableController.error(e),this.rejectWritableP?.(e),this.dispatchEvent(new dg({detail:r})),this.dispatchEvent(new pg)}};Bg([gd(new yf)],Og.prototype,"meta",null),Bg([gd(new yf,!1,["destroying"])],Og.prototype,"read",null),Bg([gd(new yf,!1,["destroying"])],Og.prototype,"write",null),Og=Bg([fd({eventDestroy:class extends hg{},eventDestroyed:ug})],Og);const Ug=Og;var Tg,Ng,Dg,Mg,Pg,Lg;!function(e){e[e.Reno=0]="Reno",e[e.CUBIC=1]="CUBIC",e[e.BBR=2]="BBR"}(Tg||(Tg={})),function(e){e[e.Read=0]="Read",e[e.Write=1]="Write"}(Ng||(Ng={})),function(e){e[e.Initial=0]="Initial",e[e.Retry=1]="Retry",e[e.Handshake=2]="Handshake",e[e.ZeroRTT=3]="ZeroRTT",e[e.VersionNegotiation=4]="VersionNegotiation",e[e.Short=5]="Short"}(Dg||(Dg={})),function(e){e[e.NoError=0]="NoError",e[e.InternalError=1]="InternalError",e[e.ConnectionRefused=2]="ConnectionRefused",e[e.FlowControlError=3]="FlowControlError",e[e.StreamLimitError=4]="StreamLimitError",e[e.StreamStateError=5]="StreamStateError",e[e.FinalSizeError=6]="FinalSizeError",e[e.FrameEncodingError=7]="FrameEncodingError",e[e.TransportParameterError=8]="TransportParameterError",e[e.ConnectionIdLimitError=9]="ConnectionIdLimitError",e[e.ProtocolViolation=10]="ProtocolViolation",e[e.InvalidToken=11]="InvalidToken",e[e.ApplicationError=12]="ApplicationError",e[e.CryptoBufferExceeded=13]="CryptoBufferExceeded",e[e.KeyUpdateError=14]="KeyUpdateError",e[e.AEADLimitReached=15]="AEADLimitReached",e[e.NoViablePath=16]="NoViablePath"}(Mg||(Mg={})),(Lg=Pg||(Pg={}))[Lg.CloseNotify=256]="CloseNotify",Lg[Lg.UnexpectedMessage=266]="UnexpectedMessage",Lg[Lg.BadRecordMac=276]="BadRecordMac",Lg[Lg.RecordOverflow=278]="RecordOverflow",Lg[Lg.HandshakeFailure=296]="HandshakeFailure",Lg[Lg.BadCertificate=298]="BadCertificate",Lg[Lg.UnsupportedCertificate=299]="UnsupportedCertificate",Lg[Lg.CertificateRevoked=300]="CertificateRevoked",Lg[Lg.CertificateExpired=301]="CertificateExpired",Lg[Lg.CertificateUnknown=302]="CertificateUnknown",Lg[Lg.IllegalParameter=303]="IllegalParameter",Lg[Lg.UnknownCA=304]="UnknownCA",Lg[Lg.AccessDenied=305]="AccessDenied",Lg[Lg.DecodeError=306]="DecodeError",Lg[Lg.DecryptError=307]="DecryptError",Lg[Lg.ProtocolVersion=326]="ProtocolVersion",Lg[Lg.InsufficientSecurity=327]="InsufficientSecurity",Lg[Lg.InternalError=336]="InternalError",Lg[Lg.InappropriateFallback=342]="InappropriateFallback",Lg[Lg.UserCanceled=346]="UserCanceled",Lg[Lg.MissingExtension=365]="MissingExtension",Lg[Lg.UnsupportedExtension=366]="UnsupportedExtension",Lg[Lg.UnrecognizedName=368]="UnrecognizedName",Lg[Lg.BadCertificateStatusResponse=369]="BadCertificateStatusResponse",Lg[Lg.UnknownPSKIdentity=371]="UnknownPSKIdentity",Lg[Lg.CertificateRequired=372]="CertificateRequired",Lg[Lg.NoApplicationProtocol=376]="NoApplicationProtocol";var Hg=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let Kg=class{type;closedP;conn;streamMap=new Map;sendId;logger;socket;config;reasonToCode;codeToReason;recvLock=new Hu;streamIdClientBidi=0;streamIdServerBidi=1;streamIdClientUni=2;streamIdServerUni=3;streamIdUsedClientBidi=-4;streamIdUsedServerBidi=-3;streamIdUsedClientUni=-2;streamIdUsedServerUni=-1;streamIdUsedSet=new Set;connTimeoutTimer;keepAliveIntervalTimer;_remoteHost;_remotePort;certDERs=[];caDERs=[];secureEstablished=!1;secureEstablishedP;resolveSecureEstablishedP;rejectSecureEstablishedP;resolveClosedP;errorLast=null;handleEventQUICConnectionError=e=>{const t=e.detail;if(this.errorLast=t,this.logger.info(Qf(t)),t instanceof gf)throw t;this.dispatchEvent(new ag({detail:t}))};handleEventQUICConnectionClose=async e=>{const t=e.detail;this.secureEstablished||this.rejectSecureEstablishedP(t),t instanceof lf&&await this.send(),this[Vu]&&"stopping"!==this[Gu]&&await this.stop({force:!0})};handleEventQUICStream=e=>{e.detail instanceof ru&&!(e.detail instanceof pg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICStreamSend=async()=>{this[Vu]&&await this.send()};handleEventQUICStreamDestroyed=e=>{const t=e.target;t.removeEventListener(pg.name,this.handleEventQUICStreamSend),t.removeEventListener(ou.name,this.handleEventQUICStream),this.streamMap.delete(t.streamId)};constructor({type:e,scid:t,dcid:r,serverName:s=null,remoteInfo:i,config:n,socket:o,reasonToCode:a=()=>0,codeToReason:c=(e,t)=>new Error(`${e} ${t}`),logger:l}){if(this.logger=l??new eu(`${this.constructor.name} ${t}`),this.sendId=t.toString(),null!=n.keepAliveIntervalTime&&0!==n.maxIdleTimeout&&n.keepAliveIntervalTime>=n.maxIdleTimeout)throw new cf("`keepAliveIntervalTime` must be less than `maxIdleTimeout`");const h=function(e){if(null!=e.key&&null==e.cert)throw new Pd("The cert option must be set when key is set");if(null==e.key&&null!=e.cert)throw new Pd("The key option must be set when cert is set");if(null!=e.key&&null!=e.cert&&Array.isArray(e.key)&&Array.isArray(e.cert)&&e.key.length!==e.cert.length)throw new Pd("The number of keys must match the number of certs");let t,r,s,i;if(null!=e.ca){const r=Hf(e.ca);t=Sf.encode(r.join(""))}null!=e.key&&(r=Hf(e.key).map(e=>Sf.encode(e))),null!=e.cert&&(s=Hf(e.cert).map(e=>Sf.encode(e)));try{i=Rd.Config.withBoringSslCtx(e.verifyPeer,null!=e.verifyCallback,t,r,s,e.sigalgs)}catch(e){throw new Pd(`Failed to build Quiche config with custom SSL context: ${e.message}`,{cause:e})}return null!=e.logKeys&&i.logKeys(),e.enableEarlyData&&i.enableEarlyData(),i.grease(e.grease),i.setMaxIdleTimeout(e.maxIdleTimeout),i.setMaxRecvUdpPayloadSize(e.maxRecvUdpPayloadSize),i.setMaxSendUdpPayloadSize(e.maxSendUdpPayloadSize),i.setInitialMaxData(e.initialMaxData),i.setInitialMaxStreamDataBidiLocal(e.initialMaxStreamDataBidiLocal),i.setInitialMaxStreamDataBidiRemote(e.initialMaxStreamDataBidiRemote),i.setInitialMaxStreamDataUni(e.initialMaxStreamDataUni),i.setInitialMaxStreamsBidi(e.initialMaxStreamsBidi),i.setInitialMaxStreamsUni(e.initialMaxStreamsUni),i.enableDgram(...e.enableDgram),i.setDisableActiveMigration(e.disableActiveMigration),i.setApplicationProtos(e.applicationProtos),i}(n);let u;if("client"===e?(this.logger.info(`Connect ${this.constructor.name}`),u=Rd.Connection.connect(s,t,{host:o.host,port:o.port},{host:i.host,port:i.port},h)):"server"===e&&(this.logger.info(`Accept ${this.constructor.name}`),u=Rd.Connection.accept(t,r,{host:o.host,port:o.port},{host:i.host,port:i.port},h)),null!=n.logKeys&&u.setKeylog(n.logKeys),this.type=e,this.conn=u,this.socket=o,this.config=n,null!=this.config.cert){const e=Hf(this.config.cert);this.certDERs=e.map(Kf)}if(null!=this.config.ca){const e=Hf(this.config.ca);this.caDERs=e.map(Kf)}this.reasonToCode=a,this.codeToReason=c,this._remoteHost=i.host,this._remotePort=i.port;const{p:d,resolveP:f,rejectP:g}=xf();d.catch(()=>{}),this.secureEstablishedP=d,this.resolveSecureEstablishedP=()=>{this.secureEstablished=!0,f()},this.rejectSecureEstablishedP=g;const{p,resolveP:y}=xf();this.closedP=p,this.resolveClosedP=y}get connectionId(){const e=this.conn.sourceId();return new bd(e.buffer,e.byteOffset,e.byteLength)}get connectionIdPeer(){const e=this.conn.destinationId();return new bd(e.buffer,e.byteOffset,e.byteLength)}get connectionIdShared(){const e=this.conn.sourceId(),t=this.conn.destinationId();return Buffer.compare(e,t)<=0?new bd(Buffer.concat([e,t])):new bd(Buffer.concat([t,e]))}get remoteHost(){return this._remoteHost}get remotePort(){return this._remotePort}get localHost(){return this.socket.host}get localPort(){return this.socket.port}get closed(){return this.conn.isClosed()}async start({data:e,remoteInfo:t}={},r){if(this.logger.info(`Start ${this.constructor.name}`),this.conn.isClosed())throw new of;r.signal.throwIfAborted();const{p:s,rejectP:i}=xf();s.catch(()=>{});const n=()=>{i(r.signal.reason)};if(r.signal.addEventListener("abort",n),this.addEventListener(og.name,this.handleEventQUICConnectionError),this.addEventListener(ag.name,this.handleEventQUICConnectionClose,{once:!0}),"client"===this.type)await this.send();else if("server"===this.type){if(null==e||null==t)throw new af("Starting a server connection requires initial data and remote information");await this.recv(e,t)}try{await Promise.race([this.secureEstablishedP,s])}catch(e){if(r.signal.aborted){for(const t of this.conn.readable())this.conn.streamShutdown(t,Rd.Shutdown.Read,this.reasonToCode("read",e));for(const t of this.conn.writable())this.conn.streamShutdown(t,Rd.Shutdown.Write,this.reasonToCode("write",e));this.conn.close(!1,Mg.ApplicationError,Buffer.from(""));const t=this.conn.localError(),r=new lf("Failed to start QUIC connection due to start timeout",{data:t,cause:e});this.dispatchEvent(new og({detail:r}))}throw await this.closedP,e}finally{r.signal.removeEventListener("abort",n)}null!=this.config.keepAliveIntervalTime&&this.startKeepAliveIntervalTimer(this.config.keepAliveIntervalTime),this.logger.info(`Started ${this.constructor.name}`)}async stop({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){this.logger.info(`Stop ${this.constructor.name}`),this.stopKeepAliveIntervalTimer(),await async function(){return await new Promise(e=>queueMicrotask(e))}();const i=[];for(const e of this.streamMap.values())i.push(e.destroy({reason:this.errorLast,force:s||this.conn.isDraining()||this.conn.isClosed()}));if(await Promise.all(i),!this.conn.isDraining()&&!this.conn.isClosed()){this.conn.close(e,t,r);const s=this.conn.localError(),i=`Locally closed with ${s.isApp?"application":"transport"} code ${s.errorCode}`,n=new lf(i,{data:s});this.dispatchEvent(new og({detail:n}))}await this.closedP,this.removeEventListener(og.name,this.handleEventQUICConnectionError),this.removeEventListener(ag.name,this.handleEventQUICConnectionClose),this.logger.info(`Stopped ${this.constructor.name}`)}getConnectionError(){return this.conn.localError()??this.conn.peerError()??void 0}getLocalCACertsChain(){return this.caDERs}getLocalCertsChain(){return this.certDERs}getRemoteCertsChain(){return this.conn.peerCertChain()??[]}meta(){return{localHost:this.localHost,localPort:this.localPort,remoteHost:this.remoteHost,remotePort:this.remotePort,localCertsChain:this.certDERs,localCACertsChain:this.caDERs,remoteCertsChain:this.getRemoteCertsChain()}}async recv(e,t){await this.recvLock.withF(async()=>{const r={to:{host:this.localHost,port:this.localPort},from:{host:t.host,port:t.port}};try{this.conn.recv(e,r)}catch(e){const t=this.conn.localError();if(null==t){const t=new gf("Failed connection recv due with unknown error",{cause:e});throw this.dispatchEvent(new og({detail:t})),t}{let r;return r="TlsFail"===e.message?new hf("Failed connection due to native TLS verification",{cause:e,data:t}):new lf("Failed connection due to local error",{cause:e,data:t}),void this.dispatchEvent(new og({detail:r}))}}this._remoteHost=t.host,this._remotePort=t.port,!this.secureEstablished&&this.conn.isEstablished()&&null==this.config.verifyCallback&&this.resolveSecureEstablishedP(),this.secureEstablished&&this.processStreams(),await this.send()})}async send(){let e,t;for(;;){const r=Buffer.allocUnsafe(this.config.maxSendUdpPayloadSize);try{const s=this.conn.send(r);if(null===s)break;[e,t]=s}catch(e){const t=new gf("Failed connection send with unknown internal error",{cause:e});throw this.dispatchEvent(new og({detail:t})),t}this.dispatchEvent(new lg({detail:{id:this.sendId,msg:r.subarray(0,e),port:t.to.port,address:t.to.host}}))}if(this.setConnTimeoutTimer(),!this.secureEstablished&&!this.conn.isDraining()&&!this.conn.isClosed()&&this.conn.isEstablished()&&this.config.verifyPeer&&null!=this.config.verifyCallback){const e=this.conn.peerCertChain(),t=await this.config.verifyCallback(e,this.caDERs);if(null!=t){this.conn.close(!1,t,Buffer.from(""));const e=this.conn.localError(),r=new hf("Failed connection due to custom TLS verification",{data:e});return void this.dispatchEvent(new og({detail:r}))}this.resolveSecureEstablishedP(),this.processStreams()}if("stopping"!==this[Gu]){const e=this.conn.peerError();if(null!=e){const t=`Peer closed with ${e.isApp?"application":"transport"} code ${e.errorCode}`;return void(e.errorCode>=Rd.CRYPTO_ERROR_START&&e.errorCode<=Rd.CRYPTO_ERROR_STOP?this.dispatchEvent(new og({detail:new df(t,{data:e})})):this.dispatchEvent(new og({detail:new uf(t,{data:e})})))}}}isStreamUsed(e){let t;switch(3&e){case 0:if(t=this.streamIdUsedClientBidi+4,e<=this.streamIdUsedClientBidi||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedClientBidi=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 1:if(t=this.streamIdUsedServerBidi+4,e<=this.streamIdUsedServerBidi||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedServerBidi=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 2:if(t=this.streamIdUsedClientUni+4,e<=this.streamIdUsedClientUni||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedClientUni=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 3:if(t=this.streamIdUsedServerUni+4,e<=this.streamIdUsedServerUni||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedServerUni=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;default:Cf("got an unexpected ID type")}}processStreams(){for(const e of this.conn.readable()){let t=this.streamMap.get(e);if(null==t){if(!1===this[Vu]||"stopping"===this[Gu]){this.conn.streamShutdown(e,Ng.Write,this.reasonToCode("write",sf)),this.conn.streamShutdown(e,Ng.Read,this.reasonToCode("read",sf));continue}this.isStreamUsed(e)&&Cf("We should never repeat streamIds when creating streams"),t=Ug.createQUICStream({initiated:"peer",streamId:e,config:this.config,connection:this,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${Ug.name} ${e}`)}),this.streamMap.set(t.streamId,t),t.addEventListener(pg.name,this.handleEventQUICStreamSend),t.addEventListener(ug.name,this.handleEventQUICStreamDestroyed,{once:!0}),t.addEventListener(ou.name,this.handleEventQUICStream),this.dispatchEvent(new cg({detail:t}))}t.read()}for(const e of this.conn.writable()){let t=this.streamMap.get(e);if(null==t){if(!1===this[Vu]||"stopping"===this[Gu]){this.conn.streamShutdown(e,Ng.Write,this.reasonToCode("write",sf)),this.conn.streamShutdown(e,Ng.Read,this.reasonToCode("read",sf));continue}if(this.isStreamUsed(e)){try{this.conn.streamSend(e,new Uint8Array,!1)}catch(e){if(!1!==Vf(e))continue;if("FinalSize"===e.message)continue;throw e}Cf("We never expect a duplicate stream to be readable")}t=Ug.createQUICStream({initiated:"peer",streamId:e,config:this.config,connection:this,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${Ug.name} ${e}`)}),this.streamMap.set(t.streamId,t),t.addEventListener(pg.name,this.handleEventQUICStreamSend),t.addEventListener(ug.name,this.handleEventQUICStreamDestroyed,{once:!0}),t.addEventListener(ou.name,this.handleEventQUICStream),this.dispatchEvent(new cg({detail:t}))}t.write()}}setConnTimeoutTimer(){const e=async t=>{if(t.aborted)return;if(this.conn.onTimeout(),this.conn.isClosed())return this.resolveClosedP(),void(this.conn.isTimedOut()&&this.dispatchEvent(new og({detail:new ff})));await this.send();const r=this.conn.timeout();null!=r&&(this.connTimeoutTimer=new Tu({delay:r+1,handler:e,lazy:!0}))},t=this.conn.timeout();if(null==t)return this.connTimeoutTimer?.cancel(),delete this.connTimeoutTimer,void(this.conn.isClosed()&&(this.resolveClosedP(),this.conn.isTimedOut()&&this.dispatchEvent(new og({detail:new ff}))));null==this.connTimeoutTimer||"settled"===this.connTimeoutTimer.status?this.connTimeoutTimer=new Tu({delay:t+1,handler:e,lazy:!0}):null==this.connTimeoutTimer.status&&this.connTimeoutTimer.reset(t+1)}newStream(e="bidi"){let t;"client"===this.type&&"bidi"===e?t=this.streamIdClientBidi:"server"===this.type&&"bidi"===e?t=this.streamIdServerBidi:"client"===this.type&&"uni"===e?t=this.streamIdClientUni:"server"===this.type&&"uni"===e&&(t=this.streamIdServerUni),this.isStreamUsed(t)&&Cf("We should never repeat streamIds when creating streams");const r=Ug.createQUICStream({initiated:"local",streamId:t,connection:this,config:this.config,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${Ug.name} ${t}`)});return this.streamMap.set(r.streamId,r),r.addEventListener(pg.name,this.handleEventQUICStreamSend),r.addEventListener(ug.name,this.handleEventQUICStreamDestroyed,{once:!0}),r.addEventListener(ou.name,this.handleEventQUICStream),"client"===this.type&&"bidi"===e?this.streamIdClientBidi=this.streamIdClientBidi+4:"server"===this.type&&"bidi"===e?this.streamIdServerBidi=this.streamIdServerBidi+4:"client"===this.type&&"uni"===e?this.streamIdClientUni=this.streamIdClientUni+4:"server"===this.type&&"uni"===e&&(this.streamIdServerUni=this.streamIdServerUni+4),r}destroyStreams(e){for(const t of this.streamMap.values())t.cancel(e)}startKeepAliveIntervalTimer(e){const t=async r=>{r.aborted||(this.conn.sendAckEliciting(),await this.send(),r.aborted||(this.keepAliveIntervalTimer=new Tu({delay:e,handler:t,lazy:!0})))};this.keepAliveIntervalTimer=new Tu({delay:e,handler:t,lazy:!0})}stopKeepAliveIntervalTimer(){this.keepAliveIntervalTimer?.cancel()}};var Qg,Vg;Hg([yd(new nf)],Kg.prototype,"connectionIdPeer",null),Hg([yd(new nf)],Kg.prototype,"connectionIdShared",null),Hg([Sg(!0,Cg,class extends rf{static description="QUIC Connection start timeout"}),(Qg=1,Vg=Ig,function(e,t){Vg(e,t,Qg)})],Kg.prototype,"start",null),Hg([yd(new nf,!1,["starting","stopping"])],Kg.prototype,"recv",null),Hg([yd(new nf,!1,["starting","stopping"])],Kg.prototype,"send",null),Hg([yd(new nf)],Kg.prototype,"newStream",null),Kg=Hg([pd({eventStart:class extends ig{},eventStarted:class extends ig{},eventStop:class extends ig{},eventStopped:ng})],Kg);const Fg=Kg;var $g=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let jg=class{isSocketShared;reasonToCode;codeToReason;minIdleTimeout;logger;socket;crypto;config;_closed=!1;_closedP;resolveClosedP;stopAbortController;handleEventQUICServerError=e=>{const t=e.detail;if(this.logger.info(Qf(t)),t instanceof ef)throw t;this.dispatchEvent(new sg({detail:t}))};handleEventQUICServerClose=async e=>{const t=e.detail;if(!(t instanceof Xd||this.isSocketShared)){this.socket.removeEventListener(qf.name,this.handleEventQUICSocketStopped);try{await this.socket.stop({force:!0})}catch(e){const t=new ef("Failed to stop QUICSocket",{cause:e});this.dispatchEvent(new rg({detail:t}))}}this._closed=!0,this.resolveClosedP(),this[Vu]&&"stopping"!==this[Gu]&&(void 0!==t?await this.stop({isApp:!1,errorCode:Mg.InternalError,reason:Buffer.from(t.description),force:!0}):await this.stop({force:!0}))};handleEventQUICSocket=e=>{e.detail instanceof ru&&this.dispatchEvent(e.detail.clone())};handleEventQUICSocketStopped=()=>{const e=new Xd;this.removeEventListener(ou.name,this.handleEventQUICSocket),this.dispatchEvent(new rg({detail:e}))};handleEventQUICConnection=e=>{e.detail instanceof ru&&!(e.detail instanceof lg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICConnectionSend=async e=>{if(this.socket[Vu]&&"stopping"!==this.socket[Gu])try{await this.socket.send_(e.detail.msg,e.detail.port,e.detail.address)}catch(t){switch(t.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":case"EHOSTUNREACH":this.dispatchEvent(new Xf(`${Xf.name}-${e.detail.id}`,{detail:t}));break;default:this.dispatchEvent(new rg({detail:new ef("Failed to send data on the QUICSocket",{data:e.detail,cause:t})}))}}};handleEventQUICConnectionStopped=e=>{const t=e.target;t.removeEventListener(lg.name,this.handleEventQUICConnectionSend),t.removeEventListener(ou.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(t.connectionId)};constructor({crypto:e,config:t,socket:r,resolveHostname:s=Nf,reasonToCode:i,codeToReason:n,minIdleTimeout:o,logger:a}){this.logger=a??new eu(this.constructor.name),this.crypto=e,null==r?(this.socket=new bg({resolveHostname:s,logger:this.logger.getChild(bg.name)}),this.isSocketShared=!1):(this.socket=r,this.isSocketShared=!0),this.config={...xg,...t},this.reasonToCode=i,this.codeToReason=n,this.minIdleTimeout=o;const{p:c,resolveP:l}=xf();this._closedP=c,this.resolveClosedP=l}get host(){return this.socket.host}get port(){return this.socket.port}get closed(){return this._closed}get closedP(){return this._closedP}async start({host:e="::",port:t=0,reuseAddr:r,ipv6Only:s}={}){let i;if(this.stopAbortController=new AbortController,$f(this.stopAbortController.signal),this.isSocketShared){if(!this.socket[Vu])throw new Xd;i=Pf(this.socket.host,this.socket.port),this.logger.info(`Start ${this.constructor.name} on ${i}`)}else i=Pf(e,t),this.logger.info(`Start ${this.constructor.name} on ${i}`),await this.socket.start({host:e,port:t,reuseAddr:r,ipv6Only:s}),i=Pf(this.socket.host,this.socket.port);this.socket.setServer(this),this.addEventListener(rg.name,this.handleEventQUICServerError),this.addEventListener(sg.name,this.handleEventQUICServerClose,{once:!0}),this.socket.addEventListener(qf.name,this.handleEventQUICSocketStopped,{once:!0}),this.isSocketShared||this.socket.addEventListener(ou.name,this.handleEventQUICSocket),this._closed=!1,this.logger.info(`Started ${this.constructor.name} on ${i}`)}async stop({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){let i;this.socket[Vu]&&(i=Pf(this.socket.host,this.socket.port)),this.logger.info(`Stop ${this.constructor.name}${null!=i?` on ${i}`:""}`),this.socket.unsetServer();const n=[];s&&this.stopAbortController?.abort(new tf),this.stopAbortController=void 0;for(const i of this.socket.connectionMap.serverConnections.values())n.push(i.stop({isApp:e,errorCode:t,reason:r,force:s}));await Promise.all(n),this._closed||this.dispatchEvent(new sg),await this._closedP;const{p:o,resolveP:a}=xf();this._closedP=o,this.resolveClosedP=a,this.removeEventListener(rg.name,this.handleEventQUICServerError),this.removeEventListener(sg.name,this.handleEventQUICServerClose),this.socket.removeEventListener(qf.name,this.handleEventQUICSocketStopped),this.isSocketShared||this.socket.removeEventListener(ou.name,this.handleEventQUICSocket),this.logger.info(`Stopped ${this.constructor.name}${null!=i?` on ${i}`:""}`)}async acceptConnection(e,t,r,s){if(t.ty!==Rd.Type.Initial&&t.ty!==Rd.Type.ZeroRTT)return;const i=new bd(await this.crypto.ops.sign(this.crypto.key,r),0,Rd.MAX_CONN_ID_LEN),n=Pf(e.host,e.port);if(!Rd.versionIsSupported(t.version)){const r=Buffer.allocUnsafe(Rd.MAX_DATAGRAM_SIZE),s=Rd.negotiateVersion(t.scid,t.dcid,r);try{await this.socket.send_(r,0,s,e.port,e.host)}catch(e){throw new Zd(`Failed to send version datagram ${n}`,{cause:e})}return}const o=t.token;if(0===o.byteLength){const s=await this.mintToken(r,e.host),o=Buffer.allocUnsafe(Rd.MAX_DATAGRAM_SIZE),a=Rd.retry(t.scid,t.dcid,i,s,t.version,o);try{await this.socket.send_(o,0,a,e.port,e.host)}catch(e){throw new Zd(`Failed to send stateless retry datagram to ${n}`,{cause:e})}return}const a=await this.validateToken(Buffer.from(o),e.host);if(null==a)return;if(i.byteLength!==t.dcid.byteLength)return;const c=new bd(t.dcid),l=new Fg({type:"server",scid:c,dcid:a,socket:this.socket,remoteInfo:e,config:{...this.config},reasonToCode:this.reasonToCode,codeToReason:this.codeToReason,logger:this.logger.getChild(`${Fg.name} ${i.toString()}`)});this.socket.connectionMap.set(l.connectionId,l),l.addEventListener(lg.name,this.handleEventQUICConnectionSend),l.addEventListener(ng.name,this.handleEventQUICConnectionStopped,{once:!0}),l.addEventListener(ou.name,this.handleEventQUICConnection);try{await l.start({data:s,remoteInfo:e},{timer:this.minIdleTimeout,signal:this.stopAbortController?.signal})}catch(e){throw l.removeEventListener(lg.name,this.handleEventQUICConnectionSend),l.removeEventListener(ng.name,this.handleEventQUICConnectionStopped),l.removeEventListener(ou.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(l.connectionId),new Zd("Failed to start accepted connection",{cause:e})}return this.dispatchEvent(new tg({detail:l})),l}updateCrypto(e){this.crypto={...this.crypto,...e}}updateConfig(e){this.config={...this.config,...e}}async mintToken(e,t){return async function(e,t,r){const s={dcid:e.toString(),host:t},i=JSON.stringify(s),n=Buffer.from(i),o=Buffer.from(await r.ops.sign(r.key,n)),a={msg:n.toString("base64url"),sig:o.toString("base64url")},c=JSON.stringify(a);return Buffer.from(c)}(e,t,this.crypto)}async validateToken(e,t){return async function(e,t,r){let s;try{s=JSON.parse(e.toString())}catch{return}if("object"!=typeof s||null==s)return;if("string"!=typeof s.msg||"string"!=typeof s.sig)return;const i=Buffer.from(s.msg,"base64url"),n=Buffer.from(s.sig,"base64url");if(!await r.ops.verify(r.key,i,n))return;let o;try{o=JSON.parse(i.toString())}catch{return}return"object"==typeof o&&null!=o&&"string"==typeof o.dcid&&"string"==typeof o.host&&o.host===t?bd.fromString(o.dcid):void 0}(e,t,this.crypto)}};$g([yd(new Yd)],jg.prototype,"host",null),$g([yd(new Yd)],jg.prototype,"port",null),$g([yd(new Yd)],jg.prototype,"acceptConnection",null),jg=$g([pd({eventStart:class extends eg{},eventStarted:class extends eg{},eventStop:class extends eg{},eventStopped:class extends eg{}})],jg);var Gg=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let qg=class{static async createQUICClient({host:e,port:t,serverName:r,localHost:s="::",localPort:i=0,socket:n,crypto:o,config:a={},resolveHostname:c=Nf,reuseAddr:l,ipv6Only:h,reasonToCode:u,codeToReason:d,logger:f=new eu(`${this.name}`)},g){let p=Pf(e,t);f.info(`Create ${this.name} to ${p}`);const y={...kg,...a},m=new ArrayBuffer(Rd.MAX_CONN_ID_LEN);await o.ops.randomBytes(m);const b=new bd(m);let[A,I]=await Df(e,c);const v=Mf(t);let w,S;if(A=Tf(A),null==n){const[e]=await Df(s,c),t=Mf(i);n=new bg({resolveHostname:c,logger:f.getChild(bg.name)}),w=!1,await n.start({host:e,port:t,reuseAddr:l,ipv6Only:h})}else if(w=!0,!n[Vu])throw new Xd;try{A=Lf(n.host,n.type,A,I,zd)}catch(e){throw w||await n.stop({force:!0}),e}try{S=new Fg({type:"client",scid:b,serverName:r??e,socket:n,remoteInfo:{host:A,port:v},config:y,reasonToCode:u,codeToReason:d,logger:f.getChild(`${Fg.name} ${b.toString()}`)})}catch(e){throw w||await n.stop({force:!0}),e}const E=new this({socket:n,connection:S,isSocketShared:w,logger:f});w||n.addEventListener(ou.name,E.handleEventQUICSocket),n.addEventListener(qf.name,E.handleEventQUICSocketStopped,{once:!0}),S.addEventListener(ou.name,E.handleEventQUICConnection),S.addEventListener(og.name,E.handleEventQUICConnectionError),S.addEventListener(lg.name,E.handleEventQUICConnectionSend),S.addEventListener(ng.name,E.handleEventQUICConnectionStopped,{once:!0}),E.addEventListener(Yf.name,E.handleEventQUICClientError),E.addEventListener(Zf.name,E.handleEventQUICClientClose,{once:!0}),n.connectionMap.set(S.connectionId,S);const C=new AbortController,k=()=>{C.abort(g.signal.reason)};g.signal.aborted?C.abort(g.signal.reason):g.signal.addEventListener("abort",k);const x=e=>{switch(e.detail.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":C.abort(new qd(void 0,{cause:e.detail}))}};E.addEventListener(`${Xf.name}-${S.sendId}`,x);try{await S.start(void 0,{timer:g.timer,signal:C.signal})}catch(e){throw n.connectionMap.delete(S.connectionId),n.removeEventListener(qf.name,E.handleEventQUICSocketStopped),w||(n.removeEventListener(ou.name,E.handleEventQUICSocket),await n.stop({force:!0})),S.removeEventListener(ou.name,E.handleEventQUICConnection),S.removeEventListener(og.name,E.handleEventQUICConnectionError),S.removeEventListener(lg.name,E.handleEventQUICConnectionSend),S.removeEventListener(ng.name,E.handleEventQUICConnectionStopped),E.removeEventListener(Yf.name,E.handleEventQUICClientError),E.removeEventListener(Zf.name,E.handleEventQUICClientClose),e}finally{g.signal.removeEventListener("abort",k),E.removeEventListener(`${Xf.name}-${S.sendId}`,x)}return p=Pf(A,t),f.info(`Created ${this.name} to ${p}`),E}isSocketShared;connection;closedP;logger;socket;config;_closed=!1;resolveClosedP;handleEventQUICClientError=e=>{const t=e.detail;if(this.logger.info(Qf(t)),t instanceof Wd||t instanceof gf)throw t;this.dispatchEvent(new Zf({detail:t}))};handleEventQUICClientClose=async e=>{const t=e.detail;if(this.connection.removeEventListener(og.name,this.handleEventQUICConnectionError),await this.connection.stop({isApp:!1,errorCode:Mg.InternalError,reason:Buffer.from(t.description),force:!0}),!(t instanceof Gd||this.isSocketShared)){this.socket.removeEventListener(qf.name,this.handleEventQUICSocketStopped);try{await this.socket.stop({force:!0})}catch(e){const t=new Wd("Failed to stop QUICSocket",{cause:e});this.dispatchEvent(new Yf({detail:t}))}}this._closed=!0,this.resolveClosedP(),this[$u]||"destroying"===this[Gu]||await this.destroy({force:!0})};handleEventQUICSocket=e=>{e.detail instanceof ru&&!(e.detail instanceof lg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICSocketStopped=()=>{const e=new Gd;this.removeEventListener(ou.name,this.handleEventQUICSocket),this.dispatchEvent(new Yf({detail:e}))};handleEventQUICConnection=e=>{e.detail instanceof ru&&this.dispatchEvent(e.detail.clone())};handleEventQUICConnectionError=e=>{const t=e.detail;this.dispatchEvent(new Yf({detail:t}))};handleEventQUICConnectionSend=async e=>{try{if(!this.socket[Vu]||"stopping"===this.socket[Gu])return;await this.socket.send_(e.detail.msg,e.detail.port,e.detail.address)}catch(t){switch(t.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":case"EHOSTUNREACH":this.dispatchEvent(new Xf(`${Xf.name}-${e.detail.id}`,{detail:t}));break;default:this.dispatchEvent(new Yf({detail:new Wd("Failed to send data on the QUICSocket",{data:e.detail,cause:t})}))}}};handleEventQUICConnectionStopped=e=>{const t=e.target;t.removeEventListener(og.name,this.handleEventQUICConnectionError),t.removeEventListener(lg.name,this.handleEventQUICConnectionSend),t.removeEventListener(ou.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(t.connectionId)};constructor({socket:e,isSocketShared:t,connection:r,logger:s}){this.logger=s,this.socket=e,this.isSocketShared=t,this.connection=r;const{p:i,resolveP:n}=xf();this.closedP=i,this.resolveClosedP=n}get host(){return this.connection.remoteHost}get port(){return this.connection.remotePort}get localHost(){return this.socket.host}get localPort(){return this.socket.port}get closed(){return this._closed}async destroy({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){let i;this.connection[Vu]&&(i=Pf(this.connection.remoteHost,this.connection.remotePort)),this.logger.info(`Destroy ${this.constructor.name}${null!=i?` to ${i}`:""}`),this._closed||await this.connection.stop({isApp:e,errorCode:t,reason:r,force:s}),await this.closedP,this.removeEventListener(Yf.name,this.handleEventQUICClientError),this.removeEventListener(Zf.name,this.handleEventQUICClientClose),this.socket.removeEventListener(qf.name,this.handleEventQUICSocketStopped),this.isSocketShared||this.socket.removeEventListener(ou.name,this.handleEventQUICSocket),this.logger.info(`Destroyed ${this.constructor.name}${null!=i?` to ${i}`:""}`)}};Gg([gd(new jd)],qg.prototype,"host",null),Gg([gd(new jd)],qg.prototype,"port",null),Gg([gd(new jd)],qg.prototype,"localHost",null),Gg([gd(new jd)],qg.prototype,"localPort",null),Gg([Sg(!0,Cg,class extends $d{static description="QUIC Client create timeout"}),function(e,t){return function(r,s){t(r,s,e)}}(1,Ig)],qg,"createQUICClient",null),qg=Gg([fd({eventDestroy:class extends Jf{},eventDestroyed:class extends Jf{}})],qg),t(import.meta.url)("node:crypto");class zg{static isArrayBuffer(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){const r=zg.toUint8Array(e),s=zg.toUint8Array(t);if(r.length!==s.byteLength)return!1;for(let e=0;e<r.length;e++)if(r[e]!==s[e])return!1;return!0}static concat(...e){let t;t=!Array.isArray(e[0])||e[1]instanceof Function?Array.isArray(e[0])&&e[1]instanceof Function?e[0]:e[e.length-1]instanceof Function?e.slice(0,e.length-1):e:e[0];let r=0;for(const e of t)r+=e.byteLength;const s=new Uint8Array(r);let i=0;for(const e of t){const t=this.toUint8Array(e);s.set(t,i),i+=t.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}}const Wg="string",Jg=/^[0-9a-f\s]+$/i,Yg=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Xg=/^[a-zA-Z0-9-_]+$/;class Zg{static fromString(e){const t=unescape(encodeURIComponent(e)),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer}static toString(e){const t=zg.toUint8Array(e);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return decodeURIComponent(escape(r))}}class ep{static toString(e,t=!1){const r=zg.toArrayBuffer(e),s=new DataView(r);let i="";for(let e=0;e<r.byteLength;e+=2){const r=s.getUint16(e,t);i+=String.fromCharCode(r)}return i}static fromString(e,t=!1){const r=new ArrayBuffer(2*e.length),s=new DataView(r);for(let r=0;r<e.length;r++)s.setUint16(2*r,e.charCodeAt(r),t);return r}}class tp{static isHex(e){return typeof e===Wg&&Jg.test(e)}static isBase64(e){return typeof e===Wg&&Yg.test(e)}static isBase64Url(e){return typeof e===Wg&&Xg.test(e)}static ToString(e,t="utf8"){const r=zg.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(r);case"binary":return this.ToBinary(r);case"hex":return this.ToHex(r);case"base64":return this.ToBase64(r);case"base64url":return this.ToBase64Url(r);case"utf16le":return ep.toString(r,!0);case"utf16":case"utf16be":return ep.toString(r);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return ep.fromString(e,!0);case"utf16":case"utf16be":return ep.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){const t=zg.toUint8Array(e);if("undefined"!=typeof btoa){const e=this.ToString(t,"binary");return btoa(e)}return Buffer.from(t).toString("base64")}static FromBase64(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!tp.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return"undefined"!=typeof atob?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!tp.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=tp.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Zg.fromString(e);case"utf16":case"utf16be":return ep.fromString(e);case"utf16le":case"usc2":return ep.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=tp.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Zg.toString(e);case"utf16":case"utf16be":return ep.toString(e);case"utf16le":case"usc2":return ep.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){const t=e.length,r=new Uint8Array(t);for(let s=0;s<t;s++)r[s]=e.charCodeAt(s);return r.buffer}static ToBinary(e){const t=zg.toUint8Array(e);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return r}static ToHex(e){const t=zg.toUint8Array(e);let r="";const s=t.length;for(let e=0;e<s;e++){const s=t[e];s<16&&(r+="0"),r+=s.toString(16)}return r}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!tp.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);const r=new Uint8Array(t.length/2);for(let e=0;e<t.length;e+=2){const s=t.slice(e,e+2);r[e/2]=parseInt(s,16)}return r.buffer}static ToUtf16String(e,t=!1){return ep.toString(e,t)}static FromUtf16String(e,t=!1){return ep.fromString(e,t)}static Base64Padding(e){const t=4-e.length%4;if(t<4)for(let r=0;r<t;r++)e+="=";return e}static formatString(e){return(null==e?void 0:e.replace(/[\n\r\t ]/g,""))||""}}function rp(...e){const t=e.map(e=>e.byteLength).reduce((e,t)=>e+t),r=new Uint8Array(t);let s=0;return e.map(e=>new Uint8Array(e)).forEach(e=>{for(const t of e)r[s++]=t}),r.buffer}function sp(e,t){if(!e||!t)return!1;if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let t=0;t<e.byteLength;t++)if(r[t]!==s[t])return!1;return!0}function ip(e,t){let r=0;if(1===e.length)return e[0];for(let s=e.length-1;s>=0;s--)r+=e[e.length-1-s]*Math.pow(2,t*s);return r}function np(e,t,r=-1){const s=r;let i=e,n=0,o=Math.pow(2,t);for(let r=1;r<8;r++){if(e<o){let e;if(s<0)e=new ArrayBuffer(r),n=r;else{if(s<r)return new ArrayBuffer(0);e=new ArrayBuffer(s),n=s}const o=new Uint8Array(e);for(let e=r-1;e>=0;e--){const r=Math.pow(2,e*t);o[n-e-1]=Math.floor(i/r),i-=o[n-e-1]*r}return e}o*=Math.pow(2,t)}return new ArrayBuffer(0)}function op(...e){let t=0,r=0;for(const r of e)t+=r.length;const s=new ArrayBuffer(t),i=new Uint8Array(s);for(const t of e)i.set(t,r),r+=t.length;return i}function ap(){const e=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){const t=255===e[0]&&128&e[1],r=0===e[0]&&!(128&e[1]);(t||r)&&this.warnings.push("Needlessly long format")}const t=new ArrayBuffer(this.valueHex.byteLength),r=new Uint8Array(t);for(let e=0;e<this.valueHex.byteLength;e++)r[e]=0;r[0]=128&e[0];const s=ip(r,8),i=new ArrayBuffer(this.valueHex.byteLength),n=new Uint8Array(i);for(let t=0;t<this.valueHex.byteLength;t++)n[t]=e[t];return n[0]&=127,ip(n,8)-s}function cp(e,t){const r=e.toString(10);if(t<r.length)return"";const s=t-r.length,i=new Array(s);for(let e=0;e<s;e++)i[e]="0";return i.join("").concat(r)}function lp(){if("undefined"==typeof BigInt)throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function hp(e){let t=0,r=0;for(let r=0;r<e.length;r++)t+=e[r].byteLength;const s=new Uint8Array(t);for(let t=0;t<e.length;t++){const i=e[t];s.set(new Uint8Array(i),r),r+=i.byteLength}return s.buffer}function up(e,t,r,s){return t instanceof Uint8Array?t.byteLength?r<0?(e.error="Wrong parameter: inputOffset less than zero",!1):s<0?(e.error="Wrong parameter: inputLength less than zero",!1):!(t.byteLength-r-s<0&&(e.error="End of input reached before message was fully decoded (inconsistent offset and length values)",1)):(e.error="Wrong parameter: inputBuffer has zero length",!1):(e.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}tp.DEFAULT_UTF8_ENCODING="utf8",Math.log(2);class dp{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return hp(this.items)}}const fp=[new Uint8Array([1])],gp="0123456789",pp="name",yp="valueHexView",mp="isHexOnly",bp="idBlock",Ap="tagClass",Ip="tagNumber",vp="isConstructed",wp="fromBER",Sp="toBER",Ep="local",Cp="",kp=new ArrayBuffer(0),xp=new Uint8Array(0),_p="EndOfContent",Bp="OCTET STRING",Rp="BIT STRING";function Op(e){var t;return t=class extends e{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(e){this.valueHexView=new Uint8Array(e)}constructor(...e){var t;super(...e);const r=e[0]||{};this.isHexOnly=null!==(t=r.isHexOnly)&&void 0!==t&&t,this.valueHexView=r.valueHex?zg.toUint8Array(r.valueHex):xp}fromBER(e,t,r){const s=e instanceof ArrayBuffer?new Uint8Array(e):e;if(!up(this,s,t,r))return-1;const i=t+r;return this.valueHexView=s.subarray(t,i),this.valueHexView.length?(this.blockLength=r,i):(this.warnings.push("Zero buffer length"),t)}toBER(e=!1){return this.isHexOnly?e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",kp)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:tp.ToHex(this.valueHexView)}}},t.NAME="hexBlock",t}class Up{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=Cp,warnings:r=[],valueBeforeDecode:s=xp}={}){this.blockLength=e,this.error=t,this.warnings=r,this.valueBeforeDecodeView=zg.toUint8Array(s)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:tp.ToHex(this.valueBeforeDecodeView)}}}Up.NAME="baseBlock";class Tp extends Up{fromBER(e,t,r){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}}Tp.NAME="valueBlock";class Np extends(Op(Up)){constructor({idBlock:e={}}={}){var t,r,s,i;super(),e?(this.isHexOnly=null!==(t=e.isHexOnly)&&void 0!==t&&t,this.valueHexView=e.valueHex?zg.toUint8Array(e.valueHex):xp,this.tagClass=null!==(r=e.tagClass)&&void 0!==r?r:-1,this.tagNumber=null!==(s=e.tagNumber)&&void 0!==s?s:-1,this.isConstructed=null!==(i=e.isConstructed)&&void 0!==i&&i):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",kp}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){const r=new Uint8Array(1);if(!e){let e=this.tagNumber;e&=31,t|=e,r[0]=t}return r.buffer}if(!this.isHexOnly){const r=np(this.tagNumber,7),s=new Uint8Array(r),i=r.byteLength,n=new Uint8Array(i+1);if(n[0]=31|t,!e){for(let e=0;e<i-1;e++)n[e+1]=128|s[e];n[i]=s[i-1]}return n.buffer}const r=new Uint8Array(this.valueHexView.byteLength+1);if(r[0]=31|t,!e){const e=this.valueHexView;for(let t=0;t<e.length-1;t++)r[t+1]=128|e[t];r[this.valueHexView.byteLength]=e[e.length-1]}return r.buffer}fromBER(e,t,r){const s=zg.toUint8Array(e);if(!up(this,s,t,r))return-1;const i=s.subarray(t,t+r);if(0===i.length)return this.error="Zero buffer length",-1;switch(192&i[0]){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=!(32&~i[0]),this.isHexOnly=!1;const n=31&i[0];if(31!==n)this.tagNumber=n,this.blockLength=1;else{let e=1,t=this.valueHexView=new Uint8Array(255),r=255;for(;128&i[e];){if(t[e-1]=127&i[e],e++,e>=i.length)return this.error="End of input reached before message was fully decoded",-1;if(e===r){r+=255;const e=new Uint8Array(r);for(let r=0;r<t.length;r++)e[r]=t[r];t=this.valueHexView=new Uint8Array(r)}}this.blockLength=e+1,t[e-1]=127&i[e];const s=new Uint8Array(e);for(let r=0;r<e;r++)s[r]=t[r];t=this.valueHexView=new Uint8Array(e),t.set(s),this.blockLength<=9?this.tagNumber=ip(t,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(1===this.tagClass&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}}Np.NAME="identificationBlock";class Dp extends Up{constructor({lenBlock:e={}}={}){var t,r,s;super(),this.isIndefiniteForm=null!==(t=e.isIndefiniteForm)&&void 0!==t&&t,this.longFormUsed=null!==(r=e.longFormUsed)&&void 0!==r&&r,this.length=null!==(s=e.length)&&void 0!==s?s:0}fromBER(e,t,r){const s=zg.toUint8Array(e);if(!up(this,s,t,r))return-1;const i=s.subarray(t,t+r);if(0===i.length)return this.error="Zero buffer length",-1;if(255===i[0])return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=128===i[0],this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(128&i[0]),!1===this.longFormUsed)return this.length=i[0],this.blockLength=1,t+this.blockLength;const n=127&i[0];if(n>8)return this.error="Too big integer",-1;if(n+1>i.length)return this.error="End of input reached before message was fully decoded",-1;const o=t+1,a=s.subarray(o,o+n);return 0===a[n-1]&&this.warnings.push("Needlessly long encoded length"),this.length=ip(a,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=n+1,t+this.blockLength}toBER(e=!1){let t,r;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=128),t;if(this.longFormUsed){const s=np(this.length,8);if(s.byteLength>127)return this.error="Too big length",kp;if(t=new ArrayBuffer(s.byteLength+1),e)return t;const i=new Uint8Array(s);r=new Uint8Array(t),r[0]=128|s.byteLength;for(let e=0;e<s.byteLength;e++)r[e+1]=i[e];return t}return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}}Dp.NAME="lengthBlock";const Mp={};class Pp extends Up{constructor({name:e=Cp,optional:t=!1,primitiveSchema:r,...s}={},i){super(s),this.name=e,this.optional=t,r&&(this.primitiveSchema=r),this.idBlock=new Np(s),this.lenBlock=new Dp(s),this.valueBlock=i?new i(s):new Tp(s)}fromBER(e,t,r){const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){const r=t||new dp;t||Lp(this);const s=this.idBlock.toBER(e);if(r.write(s),this.lenBlock.isIndefiniteForm)r.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,r),r.write(new ArrayBuffer(2));else{const t=this.valueBlock.toBER(e);this.lenBlock.length=t.byteLength;const s=this.lenBlock.toBER(e);r.write(s),r.write(t)}return t?kp:r.final()}toJSON(){const e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return"ascii"===e?this.onAsciiEncoding():tp.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${tp.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){return this===e||e instanceof this.constructor&&function(e,t){if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let e=0;e<r.length;e++)if(r[e]!==s[e])return!1;return!0}(this.toBER(),e.toBER())}}function Lp(e){var t;if(e instanceof Mp.Constructed)for(const t of e.valueBlock.value)Lp(t)&&(e.lenBlock.isIndefiniteForm=!0);return!!(null===(t=e.lenBlock)||void 0===t?void 0:t.isIndefiniteForm)}Pp.NAME="BaseBlock";class Hp extends Pp{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=Cp,...t}={},r){super(t,r),e&&this.fromString(e)}fromBER(e,t,r){const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}}Hp.NAME="BaseStringBlock";class Kp extends(Op(Tp)){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}}var Qp,Vp,Fp,$p,jp,Gp,qp,zp,Wp,Jp,Yp,Xp,Zp,ey,ty,ry,sy,iy,ny,oy,ay,cy,ly,hy,uy,dy,fy,gy,py,yy,my,by,Ay,Iy,vy,wy;Kp.NAME="PrimitiveValueBlock";class Sy extends Pp{constructor(e={}){super(e,Kp),this.idBlock.isConstructed=!1}}function Ey(e,t=0,r=e.length){const s=t;let i=new Pp({},Tp);const n=new Up;if(!up(n,e,t,r))return i.error=n.error,{offset:-1,result:i};if(!e.subarray(t,t+r).length)return i.error="Zero buffer length",{offset:-1,result:i};let o=i.idBlock.fromBER(e,t,r);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),-1===o)return i.error=i.idBlock.error,{offset:-1,result:i};if(t=o,r-=i.idBlock.blockLength,o=i.lenBlock.fromBER(e,t,r),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),-1===o)return i.error=i.lenBlock.error,{offset:-1,result:i};if(t=o,r-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let a=Pp;if(1===i.idBlock.tagClass){if(i.idBlock.tagNumber>=37&&!1===i.idBlock.isHexOnly)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};a=Mp.EndOfContent;break;case 1:a=Mp.Boolean;break;case 2:a=Mp.Integer;break;case 3:a=Mp.BitString;break;case 4:a=Mp.OctetString;break;case 5:a=Mp.Null;break;case 6:a=Mp.ObjectIdentifier;break;case 10:a=Mp.Enumerated;break;case 12:a=Mp.Utf8String;break;case 13:a=Mp.RelativeObjectIdentifier;break;case 14:a=Mp.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:a=Mp.Sequence;break;case 17:a=Mp.Set;break;case 18:a=Mp.NumericString;break;case 19:a=Mp.PrintableString;break;case 20:a=Mp.TeletexString;break;case 21:a=Mp.VideotexString;break;case 22:a=Mp.IA5String;break;case 23:a=Mp.UTCTime;break;case 24:a=Mp.GeneralizedTime;break;case 25:a=Mp.GraphicString;break;case 26:a=Mp.VisibleString;break;case 27:a=Mp.GeneralString;break;case 28:a=Mp.UniversalString;break;case 29:a=Mp.CharacterString;break;case 30:a=Mp.BmpString;break;case 31:a=Mp.DATE;break;case 32:a=Mp.TimeOfDay;break;case 33:a=Mp.DateTime;break;case 34:a=Mp.Duration;break;default:{const e=i.idBlock.isConstructed?new Mp.Constructed:new Mp.Primitive;e.idBlock=i.idBlock,e.lenBlock=i.lenBlock,e.warnings=i.warnings,i=e}}}else a=i.idBlock.isConstructed?Mp.Constructed:Mp.Primitive;return i=function(e,t){if(e instanceof t)return e;const r=new t;return r.idBlock=e.idBlock,r.lenBlock=e.lenBlock,r.warnings=e.warnings,r.valueBeforeDecodeView=e.valueBeforeDecodeView,r}(i,a),o=i.fromBER(e,t,i.lenBlock.isIndefiniteForm?r:i.lenBlock.length),i.valueBeforeDecodeView=e.subarray(s,s+i.blockLength),{offset:o,result:i}}function Cy(e){if(!e.byteLength){const e=new Pp({},Tp);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Ey(zg.toUint8Array(e).slice(),0,e.byteLength)}function ky(e,t){return e?1:t}Qp=Sy,Mp.Primitive=Qp,Sy.NAME="PRIMITIVE";class xy extends Tp{constructor({value:e=[],isIndefiniteForm:t=!1,...r}={}){super(r),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,r){const s=zg.toUint8Array(e);if(!up(this,s,t,r))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+r),0===this.valueBeforeDecodeView.length)return this.warnings.push("Zero buffer length"),t;let i=t;for(;ky(this.isIndefiniteForm,r)>0;){const e=Ey(s,i,r);if(-1===e.offset)return this.error=e.result.error,this.warnings.concat(e.result.warnings),-1;if(i=e.offset,this.blockLength+=e.result.blockLength,r-=e.result.blockLength,this.value.push(e.result),this.isIndefiniteForm&&e.result.constructor.NAME===_p)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===_p?this.value.pop():this.warnings.push("No EndOfContent block encoded")),i}toBER(e,t){const r=t||new dp;for(let t=0;t<this.value.length;t++)this.value[t].toBER(e,r);return t?kp:r.final()}toJSON(){const e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(const t of this.value)e.value.push(t.toJSON());return e}}xy.NAME="ConstructedValueBlock";class _y extends Pp{constructor(e={}){super(e,xy),this.idBlock.isConstructed=!0}fromBER(e,t,r){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){const e=[];for(const t of this.valueBlock.value)e.push(t.toString("ascii").split("\n").map(e=>` ${e}`).join("\n"));const t=3===this.idBlock.tagClass?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :\n${e.join("\n")}`:`${t} :`}}Vp=_y,Mp.Constructed=Vp,_y.NAME="CONSTRUCTED";class By extends Tp{fromBER(e,t,r){return t}toBER(e){return kp}}By.override="EndOfContentValueBlock";class Ry extends Pp{constructor(e={}){super(e,By),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}}Fp=Ry,Mp.EndOfContent=Fp,Ry.NAME=_p;class Oy extends Pp{constructor(e={}){super(e,Tp),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,r){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=r,t+r>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+r}toBER(e,t){const r=new ArrayBuffer(2);if(!e){const e=new Uint8Array(r);e[0]=5,e[1]=0}return t&&t.write(r),r}onAsciiEncoding(){return`${this.constructor.NAME}`}}$p=Oy,Mp.Null=$p,Oy.NAME="NULL";class Uy extends(Op(Tp)){get value(){for(const e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=zg.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,r){const s=zg.toUint8Array(e);return up(this,s,t,r)?(this.valueHexView=s.subarray(t,t+r),r>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,ap.call(this),this.blockLength=r,t+r):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}}Uy.NAME="BooleanValueBlock";class Ty extends Pp{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,Uy),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}}jp=Ty,Mp.Boolean=jp,Ty.NAME="BOOLEAN";class Ny extends(Op(xy)){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,r){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=xy.prototype.fromBER.call(this,e,t,r),-1===s)return s;for(let e=0;e<this.value.length;e++){const t=this.value[e].constructor.NAME;if(t===_p){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(t!==Bp)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,r),this.blockLength=r;return s}toBER(e,t){return this.isConstructed?xy.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}}Ny.NAME="OctetStringValueBlock";class Dy extends Pp{constructor({idBlock:e={},lenBlock:t={},...r}={}){var s,i;null!==(s=r.isConstructed)&&void 0!==s||(r.isConstructed=!!(null===(i=r.value)||void 0===i?void 0:i.length)),super({idBlock:{isConstructed:r.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!r.isIndefiniteForm},...r},Ny),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,r){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,0===r)return 0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){const s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+r);try{if(s.byteLength){const e=Ey(s,0,s.byteLength);-1!==e.offset&&e.offset===r&&(this.valueBlock.value=[e.result])}}catch{}}return super.fromBER(e,t,r)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?_y.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${tp.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;const e=[];for(const t of this.valueBlock.value)t instanceof Gp&&e.push(t.valueBlock.valueHexView);return zg.concat(e)}}Gp=Dy,Mp.OctetString=Gp,Dy.NAME=Bp;class My extends(Op(xy)){constructor({unusedBits:e=0,isConstructed:t=!1,...r}={}){super(r),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,r){if(!r)return t;let s=-1;if(this.isConstructed){if(s=xy.prototype.fromBER.call(this,e,t,r),-1===s)return s;for(const e of this.value){const t=e.constructor.NAME;if(t===_p){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(t!==Rp)return this.error="BIT STRING may consists of BIT STRINGs only",-1;const r=e.valueBlock;if(this.unusedBits>0&&r.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=r.unusedBits}return s}const i=zg.toUint8Array(e);if(!up(this,i,t,r))return-1;const n=i.subarray(t,t+r);if(this.unusedBits=n[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){const e=n.subarray(1);try{if(e.byteLength){const t=Ey(e,0,e.byteLength);-1!==t.offset&&t.offset===r-1&&(this.value=[t.result])}}catch{}}return this.valueHexView=n.subarray(1),this.blockLength=n.length,t+r}toBER(e,t){if(this.isConstructed)return xy.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return kp;const r=new Uint8Array(this.valueHexView.length+1);return r[0]=this.unusedBits,r.set(this.valueHexView,1),r.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}}My.NAME="BitStringValueBlock";class Py extends Pp{constructor({idBlock:e={},lenBlock:t={},...r}={}){var s,i;null!==(s=r.isConstructed)&&void 0!==s||(r.isConstructed=!!(null===(i=r.value)||void 0===i?void 0:i.length)),super({idBlock:{isConstructed:r.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!r.isIndefiniteForm},...r},My),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,r){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,r)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return _y.prototype.onAsciiEncoding.call(this);{const e=[],t=this.valueBlock.valueHexView;for(const r of t)e.push(r.toString(2).padStart(8,"0"));const r=e.join("");return`${this.constructor.NAME} : ${r.substring(0,r.length-this.valueBlock.unusedBits)}`}}}function Ly(e,t){const r=new Uint8Array([0]),s=new Uint8Array(e),i=new Uint8Array(t);let n=s.slice(0);const o=n.length-1,a=i.slice(0),c=a.length-1;let l=0,h=0;for(let e=c<o?o:c;e>=0;e--,h++)l=1==h<a.length?n[o-h]+a[c-h]+r[0]:n[o-h]+r[0],r[0]=l/10,1==h>=n.length?n=op(new Uint8Array([l%10]),n):n[o-h]=l%10;return r[0]>0&&(n=op(r,n)),n}function Hy(e){if(e>=fp.length)for(let t=fp.length;t<=e;t++){const e=new Uint8Array([0]);let r=fp[t-1].slice(0);for(let t=r.length-1;t>=0;t--){const s=new Uint8Array([(r[t]<<1)+e[0]]);e[0]=s[0]/10,r[t]=s[0]%10}e[0]>0&&(r=op(e,r)),fp.push(r)}return fp[e]}function Ky(e,t){let r=0;const s=new Uint8Array(e),i=new Uint8Array(t),n=s.slice(0),o=n.length-1,a=i.slice(0),c=a.length-1;let l,h=0;for(let e=c;e>=0;e--,h++)l=n[o-h]-a[c-h]-r,1==l<0?(r=1,n[o-h]=l+10):(r=0,n[o-h]=l);if(r>0)for(let e=o-c+1;e>=0;e--,h++){if(l=n[o-h]-r,!(l<0)){r=0,n[o-h]=l;break}r=1,n[o-h]=l+10}return n.slice()}qp=Py,Mp.BitString=qp,Py.NAME=Rp;class Qy extends(Op(Tp)){setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=ap.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),void 0!==e&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(function(e){const t=e<0?-1*e:e;let r=128;for(let s=1;s<8;s++){if(t<=r){if(e<0){const e=np(r-t,8,s);return new Uint8Array(e)[0]|=128,e}let i=np(t,8,s),n=new Uint8Array(i);if(128&n[0]){const e=i.slice(0),t=new Uint8Array(e);i=new ArrayBuffer(i.byteLength+1),n=new Uint8Array(i);for(let r=0;r<e.byteLength;r++)n[r+1]=t[r];n[0]=0}return i}r*=Math.pow(2,8)}return new ArrayBuffer(0)}(e))}get valueDec(){return this._valueDec}fromDER(e,t,r,s=0){const i=this.fromBER(e,t,r);if(-1===i)return i;const n=this.valueHexView;return 0===n[0]&&128&n[1]?this.valueHexView=n.subarray(1):0!==s&&n.length<s&&(s-n.length>1&&(s=n.length+1),this.valueHexView=n.subarray(s-n.length)),i}toDER(e=!1){const t=this.valueHexView;switch(!0){case!!(128&t[0]):{const e=new Uint8Array(this.valueHexView.length+1);e[0]=0,e.set(t,1),this.valueHexView=e}break;case 0===t[0]&&!(128&t[1]):this.valueHexView=this.valueHexView.subarray(1)}return this.toBER(e)}fromBER(e,t,r){const s=super.fromBER(e,t,r);return-1===s||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){const e=8*this.valueHexView.length-1;let t,r=new Uint8Array(8*this.valueHexView.length/3),s=0;const i=this.valueHexView;let n="",o=!1;for(let o=i.byteLength-1;o>=0;o--){t=i[o];for(let i=0;i<8;i++)1&~t||(s===e?(r=Ky(Hy(s),r),n="-"):r=Ly(r,Hy(s))),s++,t>>=1}for(let e=0;e<r.length;e++)r[e]&&(o=!0),o&&(n+=gp.charAt(r[e]));return!1===o&&(n+=gp.charAt(0)),n}}zp=Qy,Qy.NAME="IntegerValueBlock",Object.defineProperty(zp.prototype,"valueHex",{set:function(e){this.valueHexView=new Uint8Array(e),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});class Vy extends Pp{constructor(e={}){super(e,Qy),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return lp(),BigInt(this.valueBlock.toString())}static fromBigInt(e){lp();const t=BigInt(e),r=new dp,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(tp.FromHex(s));if(t<0){const e=new Uint8Array(i.length+(128&i[0]?1:0));e[0]|=128;const s=BigInt(`0x${tp.ToHex(e)}`)+t,n=zg.toUint8Array(tp.FromHex(s.toString(16)));n[0]|=128,r.write(n)}else 128&i[0]&&r.write(new Uint8Array([0])),r.write(i);return new Wp({valueHex:r.final()})}convertToDER(){const e=new Wp({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new Wp({valueHex:0===this.valueBlock.valueHexView[0]?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}}Wp=Vy,Mp.Integer=Wp,Vy.NAME="INTEGER";class Fy extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}}Jp=Fy,Mp.Enumerated=Jp,Fy.NAME="ENUMERATED";class $y extends(Op(Tp)){constructor({valueDec:e=-1,isFirstSid:t=!1,...r}={}){super(r),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,r){if(!r)return t;const s=zg.toUint8Array(e);if(!up(this,s,t,r))return-1;const i=s.subarray(t,t+r);this.valueHexView=new Uint8Array(r);for(let e=0;e<r&&(this.valueHexView[e]=127&i[e],this.blockLength++,128&i[e]);e++);const n=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength;e++)n[e]=this.valueHexView[e];return this.valueHexView=n,128&i[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(0===this.valueHexView[0]&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ip(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){lp();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;const r=new Uint8Array(t.length/7);for(let e=0;e<r.length;e++)r[e]=parseInt(t.slice(7*e,7*e+7),2)+(e+1<r.length?128:0);this.fromBER(r.buffer,0,r.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);const t=this.valueHexView,r=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength-1;e++)r[e]=128|t[e];return r[this.blockLength-1]=t[this.blockLength-1],r.buffer}const t=np(this.valueDec,7);if(0===t.byteLength)return this.error="Error during encoding SID value",kp;const r=new Uint8Array(t.byteLength);if(!e){const e=new Uint8Array(t),s=t.byteLength-1;for(let t=0;t<s;t++)r[t]=128|e[t];r[s]=e[s]}return r}toString(){let e="";if(this.isHexOnly)e=tp.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}}$y.NAME="sidBlock";class jy extends Tp{constructor({value:e=Cp,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,r){let s=t;for(;r>0;){const t=new $y;if(s=t.fromBER(e,s,r),-1===s)return this.blockLength=0,this.error=t.error,s;0===this.value.length&&(t.isFirstSid=!0),this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return s}toBER(e){const t=[];for(let r=0;r<this.value.length;r++){const s=this.value[r].toBER(e);if(0===s.byteLength)return this.error=this.value[r].error,kp;t.push(s)}return hp(t)}fromString(e){this.value=[];let t=0,r=0,s="",i=!1;do{if(r=e.indexOf(".",t),s=-1===r?e.substring(t):e.substring(t,r),t=r+1,i){const e=this.value[0];let t=0;switch(e.valueDec){case 0:break;case 1:t=40;break;case 2:t=80;break;default:return void(this.value=[])}const r=parseInt(s,10);if(isNaN(r))return;e.valueDec=r+t,i=!1}else{const e=new $y;if(s>Number.MAX_SAFE_INTEGER){lp();const t=BigInt(s);e.valueBigInt=t}else if(e.valueDec=parseInt(s,10),isNaN(e.valueDec))return;this.value.length||(e.isFirstSid=!0,i=!0),this.value.push(e)}}while(-1!==r)}toString(){let e="",t=!1;for(let r=0;r<this.value.length;r++){t=this.value[r].isHexOnly;let s=this.value[r].toString();0!==r&&(e=`${e}.`),t?(s=`{${s}}`,this.value[r].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){const e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}}jy.NAME="ObjectIdentifierValueBlock";class Gy extends Pp{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,jy),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}}Yp=Gy,Mp.ObjectIdentifier=Yp,Gy.NAME="OBJECT IDENTIFIER";class qy extends(Op(Up)){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,r){if(0===r)return t;const s=zg.toUint8Array(e);if(!up(this,s,t,r))return-1;const i=s.subarray(t,t+r);this.valueHexView=new Uint8Array(r);for(let e=0;e<r&&(this.valueHexView[e]=127&i[e],this.blockLength++,128&i[e]);e++);const n=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength;e++)n[e]=this.valueHexView[e];return this.valueHexView=n,128&i[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(0===this.valueHexView[0]&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ip(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);const t=this.valueHexView,r=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength-1;e++)r[e]=128|t[e];return r[this.blockLength-1]=t[this.blockLength-1],r.buffer}const t=np(this.valueDec,7);if(0===t.byteLength)return this.error="Error during encoding SID value",kp;const r=new Uint8Array(t.byteLength);if(!e){const e=new Uint8Array(t),s=t.byteLength-1;for(let t=0;t<s;t++)r[t]=128|e[t];r[s]=e[s]}return r.buffer}toString(){let e="";return e=this.isHexOnly?tp.ToHex(this.valueHexView):this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}}qy.NAME="relativeSidBlock";class zy extends Tp{constructor({value:e=Cp,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,r){let s=t;for(;r>0;){const t=new qy;if(s=t.fromBER(e,s,r),-1===s)return this.blockLength=0,this.error=t.error,s;this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return s}toBER(e,t){const r=[];for(let t=0;t<this.value.length;t++){const s=this.value[t].toBER(e);if(0===s.byteLength)return this.error=this.value[t].error,kp;r.push(s)}return hp(r)}fromString(e){this.value=[];let t=0,r=0,s="";do{r=e.indexOf(".",t),s=-1===r?e.substring(t):e.substring(t,r),t=r+1;const i=new qy;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(-1!==r);return!0}toString(){let e="",t=!1;for(let r=0;r<this.value.length;r++){t=this.value[r].isHexOnly;let s=this.value[r].toString();0!==r&&(e=`${e}.`),t?(s=`{${s}}`,e+=s):e+=s}return e}toJSON(){const e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}}zy.NAME="RelativeObjectIdentifierValueBlock";class Wy extends Pp{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,zy),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}}Xp=Wy,Mp.RelativeObjectIdentifier=Xp,Wy.NAME="RelativeObjectIdentifier";class Jy extends _y{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}}Zp=Jy,Mp.Sequence=Zp,Jy.NAME="SEQUENCE";class Yy extends _y{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}}ey=Yy,Mp.Set=ey,Yy.NAME="SET";class Xy extends(Op(Tp)){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Cp}toJSON(){return{...super.toJSON(),value:this.value}}}Xy.NAME="StringValueBlock";class Zy extends Xy{}Zy.NAME="SimpleStringValueBlock";class em extends Hp{constructor({...e}={}){super(e,Zy)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,zg.toUint8Array(e))}fromString(e){const t=e.length,r=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)r[s]=e.charCodeAt(s);this.valueBlock.value=e}}em.NAME="SIMPLE STRING";class tm extends em{fromBuffer(e){this.valueBlock.valueHexView=zg.toUint8Array(e);try{this.valueBlock.value=tp.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=tp.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(tp.FromUtf8String(e)),this.valueBlock.value=e}}tm.NAME="Utf8StringValueBlock";class rm extends tm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}}ty=rm,Mp.Utf8String=ty,rm.NAME="UTF8String";class sm extends em{fromBuffer(e){this.valueBlock.value=tp.ToUtf16String(e),this.valueBlock.valueHexView=zg.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(tp.FromUtf16String(e))}}sm.NAME="BmpStringValueBlock";class im extends sm{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}}ry=im,Mp.BmpString=ry,im.NAME="BMPString";class nm extends em{fromBuffer(e){const t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),r=new Uint8Array(t);for(let e=0;e<r.length;e+=4)r[e]=r[e+3],r[e+1]=r[e+2],r[e+2]=0,r[e+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){const t=e.length,r=this.valueBlock.valueHexView=new Uint8Array(4*t);for(let s=0;s<t;s++){const t=np(e.charCodeAt(s),8),i=new Uint8Array(t);if(i.length>4)continue;const n=4-i.length;for(let e=i.length-1;e>=0;e--)r[4*s+e+n]=i[e]}this.valueBlock.value=e}}nm.NAME="UniversalStringValueBlock";class om extends nm{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}}sy=om,Mp.UniversalString=sy,om.NAME="UniversalString";class am extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}}iy=am,Mp.NumericString=iy,am.NAME="NumericString";class cm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}}ny=cm,Mp.PrintableString=ny,cm.NAME="PrintableString";class lm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}}oy=lm,Mp.TeletexString=oy,lm.NAME="TeletexString";class hm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}}ay=hm,Mp.VideotexString=ay,hm.NAME="VideotexString";class um extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}}cy=um,Mp.IA5String=cy,um.NAME="IA5String";class dm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}}ly=dm,Mp.GraphicString=ly,dm.NAME="GraphicString";class fm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}}hy=fm,Mp.VisibleString=hy,fm.NAME="VisibleString";class gm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}}uy=gm,Mp.GeneralString=uy,gm.NAME="GeneralString";class pm extends em{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}}dy=pm,Mp.CharacterString=dy,pm.NAME="CharacterString";class ym extends fm{constructor({value:e,valueDate:t,...r}={}){if(super(r),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let t=0;t<e.length;t++)this.valueBlock.valueHexView[t]=e.charCodeAt(t)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,zg.toUint8Array(e)))}toBuffer(){const e=this.toString(),t=new ArrayBuffer(e.length),r=new Uint8Array(t);for(let t=0;t<e.length;t++)r[t]=e.charCodeAt(t);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){const t=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/gi.exec(e);if(null===t)return void(this.error="Wrong input string for conversion");const r=parseInt(t[1],10);this.year=r>=50?1900+r:2e3+r,this.month=parseInt(t[2],10),this.day=parseInt(t[3],10),this.hour=parseInt(t[4],10),this.minute=parseInt(t[5],10),this.second=parseInt(t[6],10)}toString(e="iso"){if("iso"===e){const e=new Array(7);return e[0]=cp(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=cp(this.month,2),e[2]=cp(this.day,2),e[3]=cp(this.hour,2),e[4]=cp(this.minute,2),e[5]=cp(this.second,2),e[6]="Z",e.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}}fy=ym,Mp.UTCTime=fy,ym.NAME="UTCTime";class mm extends ym{constructor(e={}){var t;super(e),null!==(t=this.millisecond)&&void 0!==t||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){const e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t,r=!1,s="",i="",n=0,o=0,a=0;if("Z"===e[e.length-1])s=e.substring(0,e.length-1),r=!0;else{const t=new Number(e[e.length-1]);if(isNaN(t.valueOf()))throw new Error("Wrong input string for conversion");s=e}if(r){if(-1!==s.indexOf("+"))throw new Error("Wrong input string for conversion");if(-1!==s.indexOf("-"))throw new Error("Wrong input string for conversion")}else{let e=1,t=s.indexOf("+"),r="";if(-1===t&&(t=s.indexOf("-"),e=-1),-1!==t){if(r=s.substring(t+1),s=s.substring(0,t),2!==r.length&&4!==r.length)throw new Error("Wrong input string for conversion");let i=parseInt(r.substring(0,2),10);if(isNaN(i.valueOf()))throw new Error("Wrong input string for conversion");if(o=e*i,4===r.length){if(i=parseInt(r.substring(2,4),10),isNaN(i.valueOf()))throw new Error("Wrong input string for conversion");a=e*i}}}let c=s.indexOf(".");if(-1===c&&(c=s.indexOf(",")),-1!==c){const e=new Number(`0${s.substring(c)}`);if(isNaN(e.valueOf()))throw new Error("Wrong input string for conversion");n=e.valueOf(),i=s.substring(0,c)}else i=s;switch(!0){case 8===i.length:if(t=/(\d{4})(\d{2})(\d{2})/gi,-1!==c)throw new Error("Wrong input string for conversion");break;case 10===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})/gi,-1!==c){let e=60*n;this.minute=Math.floor(e),e=60*(e-this.minute),this.second=Math.floor(e),e=1e3*(e-this.second),this.millisecond=Math.floor(e)}break;case 12===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/gi,-1!==c){let e=60*n;this.second=Math.floor(e),e=1e3*(e-this.second),this.millisecond=Math.floor(e)}break;case 14===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/gi,-1!==c){const e=1e3*n;this.millisecond=Math.floor(e)}break;default:throw new Error("Wrong input string for conversion")}const l=t.exec(i);if(null===l)throw new Error("Wrong input string for conversion");for(let e=1;e<l.length;e++)switch(e){case 1:this.year=parseInt(l[e],10);break;case 2:this.month=parseInt(l[e],10);break;case 3:this.day=parseInt(l[e],10);break;case 4:this.hour=parseInt(l[e],10)+o;break;case 5:this.minute=parseInt(l[e],10)+a;break;case 6:this.second=parseInt(l[e],10);break;default:throw new Error("Wrong input string for conversion")}if(!1===r){const e=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth(),this.day=e.getUTCDay(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds(),this.millisecond=e.getUTCMilliseconds()}}toString(e="iso"){if("iso"===e){const e=[];return e.push(cp(this.year,4)),e.push(cp(this.month,2)),e.push(cp(this.day,2)),e.push(cp(this.hour,2)),e.push(cp(this.minute,2)),e.push(cp(this.second,2)),0!==this.millisecond&&(e.push("."),e.push(cp(this.millisecond,3))),e.push("Z"),e.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}}gy=mm,Mp.GeneralizedTime=gy,mm.NAME="GeneralizedTime";class bm extends rm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}}py=bm,Mp.DATE=py,bm.NAME="DATE";class Am extends rm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}}yy=Am,Mp.TimeOfDay=yy,Am.NAME="TimeOfDay";class Im extends rm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}}my=Im,Mp.DateTime=my,Im.NAME="DateTime";class vm extends rm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}}by=vm,Mp.Duration=by,vm.NAME="Duration";class wm extends rm{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}}Ay=wm,Mp.TIME=Ay,wm.NAME="TIME";class Sm{constructor({name:e=Cp,optional:t=!1}={}){this.name=e,this.optional=t}}class Em extends Sm{constructor({value:e=[],...t}={}){super(t),this.value=e}}class Cm extends Sm{constructor({value:e=new Sm,local:t=!1,...r}={}){super(r),this.value=e,this.local=t}}class km{get data(){return this.dataView.slice().buffer}set data(e){this.dataView=zg.toUint8Array(e)}constructor({data:e=xp}={}){this.dataView=zg.toUint8Array(e)}fromBER(e,t,r){const s=t+r;return this.dataView=zg.toUint8Array(e).subarray(t,s),s}toBER(e){return this.dataView.slice().buffer}}function xm(e,t,r){if(r instanceof Em){for(const s of r.value)if(xm(e,t,s).verified)return{verified:!0,result:e};{const e={verified:!1,result:{error:"Wrong values for Choice type"}};return r.hasOwnProperty(pp)&&(e.name=r.name),e}}if(r instanceof Sm)return r.hasOwnProperty(pp)&&(e[r.name]=t),{verified:!0,result:e};if(e instanceof Object==0)return{verified:!1,result:{error:"Wrong root object"}};if(t instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 data"}};if(r instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(bp in r==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(wp in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(Sp in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};const s=r.idBlock.toBER(!1);if(0===s.byteLength)return{verified:!1,result:{error:"Error encoding idBlock for ASN.1 schema"}};if(-1===r.idBlock.fromBER(s,0,s.byteLength))return{verified:!1,result:{error:"Error decoding idBlock for ASN.1 schema"}};if(!1===r.idBlock.hasOwnProperty(Ap))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.tagClass!==t.idBlock.tagClass)return{verified:!1,result:e};if(!1===r.idBlock.hasOwnProperty(Ip))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.tagNumber!==t.idBlock.tagNumber)return{verified:!1,result:e};if(!1===r.idBlock.hasOwnProperty(vp))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.isConstructed!==t.idBlock.isConstructed)return{verified:!1,result:e};if(!(mp in r.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.isHexOnly!==t.idBlock.isHexOnly)return{verified:!1,result:e};if(r.idBlock.isHexOnly){if(yp in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};const s=r.idBlock.valueHexView,i=t.idBlock.valueHexView;if(s.length!==i.length)return{verified:!1,result:e};for(let t=0;t<s.length;t++)if(s[t]!==i[1])return{verified:!1,result:e}}if(r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&(e[r.name]=t)),r instanceof Mp.Constructed){let s=0,i={verified:!1,result:{error:"Unknown error"}},n=r.valueBlock.value.length;if(n>0&&r.valueBlock.value[0]instanceof Cm&&(n=t.valueBlock.value.length),0===n)return{verified:!0,result:e};if(0===t.valueBlock.value.length&&0!==r.valueBlock.value.length){let t=!0;for(let e=0;e<r.valueBlock.value.length;e++)t=t&&(r.valueBlock.value[e].optional||!1);return t?{verified:!0,result:e}:(r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&delete e[r.name]),e.error="Inconsistent object length",{verified:!1,result:e})}for(let o=0;o<n;o++)if(o-s>=t.valueBlock.value.length){if(!1===r.valueBlock.value[o].optional){const t={verified:!1,result:e};return e.error="Inconsistent length between ASN.1 data and schema",r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&(delete e[r.name],t.name=r.name)),t}}else if(r.valueBlock.value[0]instanceof Cm){if(i=xm(e,t.valueBlock.value[o],r.valueBlock.value[0].value),!1===i.verified){if(!r.valueBlock.value[0].optional)return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&delete e[r.name]),i;s++}if(pp in r.valueBlock.value[0]&&r.valueBlock.value[0].name.length>0){let s={};s=Ep in r.valueBlock.value[0]&&r.valueBlock.value[0].local?t:e,void 0===s[r.valueBlock.value[0].name]&&(s[r.valueBlock.value[0].name]=[]),s[r.valueBlock.value[0].name].push(t.valueBlock.value[o])}}else if(i=xm(e,t.valueBlock.value[o-s],r.valueBlock.value[o]),!1===i.verified){if(!r.valueBlock.value[o].optional)return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&delete e[r.name]),i;s++}if(!1===i.verified){const t={verified:!1,result:e};return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&(delete e[r.name],t.name=r.name)),t}return{verified:!0,result:e}}if(r.primitiveSchema&&yp in t.valueBlock){const s=Ey(t.valueBlock.valueHexView);if(-1===s.offset){const t={verified:!1,result:s.result};return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,Cp),r.name&&(delete e[r.name],t.name=r.name)),t}return xm(e,s.result,r.primitiveSchema)}return{verified:!0,result:e}}function _m(e,t){if(t instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 schema type"}};const r=Ey(zg.toUint8Array(e));return-1===r.offset?{verified:!1,result:r.result}:xm(r.result,r.result,t)}(wy=Iy||(Iy={}))[wy.Sequence=0]="Sequence",wy[wy.Set=1]="Set",wy[wy.Choice=2]="Choice",function(e){e[e.Any=1]="Any",e[e.Boolean=2]="Boolean",e[e.OctetString=3]="OctetString",e[e.BitString=4]="BitString",e[e.Integer=5]="Integer",e[e.Enumerated=6]="Enumerated",e[e.ObjectIdentifier=7]="ObjectIdentifier",e[e.Utf8String=8]="Utf8String",e[e.BmpString=9]="BmpString",e[e.UniversalString=10]="UniversalString",e[e.NumericString=11]="NumericString",e[e.PrintableString=12]="PrintableString",e[e.TeletexString=13]="TeletexString",e[e.VideotexString=14]="VideotexString",e[e.IA5String=15]="IA5String",e[e.GraphicString=16]="GraphicString",e[e.VisibleString=17]="VisibleString",e[e.GeneralString=18]="GeneralString",e[e.CharacterString=19]="CharacterString",e[e.UTCTime=20]="UTCTime",e[e.GeneralizedTime=21]="GeneralizedTime",e[e.DATE=22]="DATE",e[e.TimeOfDay=23]="TimeOfDay",e[e.DateTime=24]="DateTime",e[e.Duration=25]="Duration",e[e.TIME=26]="TIME",e[e.Null=27]="Null"}(vy||(vy={}));class Bm{constructor(e,t=0){if(this.unusedBits=0,this.value=new ArrayBuffer(0),e)if("number"==typeof e)this.fromNumber(e);else{if(!zg.isBufferSource(e))throw TypeError("Unsupported type of 'params' argument for BitString");this.unusedBits=t,this.value=zg.toArrayBuffer(e)}}fromASN(e){if(!(e instanceof Py))throw new TypeError("Argument 'asn' is not instance of ASN.1 BitString");return this.unusedBits=e.valueBlock.unusedBits,this.value=e.valueBlock.valueHex,this}toASN(){return new Py({unusedBits:this.unusedBits,valueHex:this.value})}toSchema(e){return new Py({name:e})}toNumber(){let e="";const t=new Uint8Array(this.value);for(const r of t)e+=r.toString(2).padStart(8,"0");return e=e.split("").reverse().join(""),this.unusedBits&&(e=e.slice(this.unusedBits).padStart(this.unusedBits,"0")),parseInt(e,2)}fromNumber(e){let t=e.toString(2);const r=t.length+7>>3;this.unusedBits=(r<<3)-t.length;const s=new Uint8Array(r);t=t.padStart(r<<3,"0").split("").reverse().join("");let i=0;for(;i<r;)s[i]=parseInt(t.slice(i<<3,8+(i<<3)),2),i++;this.value=s.buffer}}class Rm{get byteLength(){return this.buffer.byteLength}get byteOffset(){return 0}constructor(e){"number"==typeof e?this.buffer=new ArrayBuffer(e):zg.isBufferSource(e)?this.buffer=zg.toArrayBuffer(e):Array.isArray(e)?this.buffer=new Uint8Array(e):this.buffer=new ArrayBuffer(0)}fromASN(e){if(!(e instanceof Dy))throw new TypeError("Argument 'asn' is not instance of ASN.1 OctetString");return this.buffer=e.valueBlock.valueHex,this}toASN(){return new Dy({valueHex:this.buffer})}toSchema(e){return new Dy({name:e})}}const Om={fromASN:e=>e instanceof Oy?null:e.valueBeforeDecodeView,toASN:e=>{if(null===e)return new Oy;const t=Cy(e);if(t.result.error)throw new Error(t.result.error);return t.result}},Um={fromASN:e=>e.valueBlock.valueHexView.byteLength>=4?e.valueBlock.toString():e.valueBlock.valueDec,toASN:e=>new Vy({value:+e})},Tm={fromASN:e=>e.valueBlock.valueDec,toASN:e=>new Fy({value:e})},Nm={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new Vy({valueHex:e})},Dm={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new Py({valueHex:e})},Mm={fromASN:e=>e.valueBlock.toString(),toASN:e=>new Gy({value:e})},Pm={fromASN:e=>e.valueBlock.value,toASN:e=>new Ty({value:e})},Lm={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new Dy({valueHex:e})},Hm={fromASN:e=>new Rm(e.getValue()),toASN:e=>e.toASN()};function Km(e){return{fromASN:e=>e.valueBlock.value,toASN:t=>new e({value:t})}}const Qm=Km(rm),Vm=Km(im),Fm=Km(om),$m=Km(am),jm=Km(cm),Gm=Km(lm),qm=Km(hm),zm=Km(um),Wm=Km(dm),Jm=Km(fm),Ym=Km(gm),Xm=Km(pm),Zm={fromASN:e=>e.toDate(),toASN:e=>new ym({valueDate:e})},eb={fromASN:e=>e.toDate(),toASN:e=>new mm({valueDate:e})},tb={fromASN:()=>null,toASN:()=>new Oy};function rb(e){switch(e){case vy.Any:return Om;case vy.BitString:return Dm;case vy.BmpString:return Vm;case vy.Boolean:return Pm;case vy.CharacterString:return Xm;case vy.Enumerated:return Tm;case vy.GeneralString:return Ym;case vy.GeneralizedTime:return eb;case vy.GraphicString:return Wm;case vy.IA5String:return zm;case vy.Integer:return Um;case vy.Null:return tb;case vy.NumericString:return $m;case vy.ObjectIdentifier:return Mm;case vy.OctetString:return Lm;case vy.PrintableString:return jm;case vy.TeletexString:return Gm;case vy.UTCTime:return Zm;case vy.UniversalString:return Fm;case vy.Utf8String:return Qm;case vy.VideotexString:return qm;case vy.VisibleString:return Jm;default:return null}}function sb(e){return"function"==typeof e&&e.prototype?!(!e.prototype.toASN||!e.prototype.fromASN)||sb(e.prototype):!!(e&&"object"==typeof e&&"toASN"in e&&"fromASN"in e)}function ib(e){var t;if(e){const r=Object.getPrototypeOf(e);return(null===(t=null==r?void 0:r.prototype)||void 0===t?void 0:t.constructor)===Array||ib(r)}return!1}function nb(e,t){if(!e||!t)return!1;if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let t=0;t<e.byteLength;t++)if(r[t]!==s[t])return!1;return!0}const ob=new class{constructor(){this.items=new WeakMap}has(e){return this.items.has(e)}get(e,t=!1){const r=this.items.get(e);if(!r)throw new Error(`Cannot get schema for '${e.prototype.constructor.name}' target`);if(t&&!r.schema)throw new Error(`Schema '${e.prototype.constructor.name}' doesn't contain ASN.1 schema. Call 'AsnSchemaStorage.cache'.`);return r}cache(e){const t=this.get(e);t.schema||(t.schema=this.create(e,!0))}createDefault(e){const t={type:Iy.Sequence,items:{}},r=this.findParentSchema(e);return r&&(Object.assign(t,r),t.items=Object.assign({},t.items,r.items)),t}create(e,t){const r=this.items.get(e)||this.createDefault(e),s=[];for(const e in r.items){const i=r.items[e],n=t?e:"";let o;if("number"==typeof i.type){const e=vy[i.type],t=a[e];if(!t)throw new Error(`Cannot get ASN1 class by name '${e}'`);o=new t({name:n})}else sb(i.type)?o=(new i.type).toSchema(n):i.optional?this.get(i.type).type===Iy.Choice?o=new Sm({name:n}):(o=this.create(i.type,!1),o.name=n):o=new Sm({name:n});const c=!!i.optional||void 0!==i.defaultValue;if(i.repeated&&(o.name="",o=new("set"===i.repeated?Yy:Jy)({name:"",value:[new Cm({name:n,value:o})]})),null!==i.context&&void 0!==i.context)if(i.implicit)if("number"==typeof i.type||sb(i.type)){const e=i.repeated?_y:Sy;s.push(new e({name:n,optional:c,idBlock:{tagClass:3,tagNumber:i.context}}))}else{this.cache(i.type);const e=!!i.repeated;let t=e?o:this.get(i.type,!0).schema;t="valueBlock"in t?t.valueBlock.value:t.value,s.push(new _y({name:e?"":n,optional:c,idBlock:{tagClass:3,tagNumber:i.context},value:t}))}else s.push(new _y({optional:c,idBlock:{tagClass:3,tagNumber:i.context},value:[o]}));else o.optional=c,s.push(o)}switch(r.type){case Iy.Sequence:return new Jy({value:s,name:""});case Iy.Set:return new Yy({value:s,name:""});case Iy.Choice:return new Em({value:s,name:""});default:throw new Error("Unsupported ASN1 type in use")}}set(e,t){return this.items.set(e,t),this}findParentSchema(e){const t=Object.getPrototypeOf(e);return t?this.items.get(t)||this.findParentSchema(t):null}},ab=e=>t=>{let r;ob.has(t)?r=ob.get(t):(r=ob.createDefault(t),ob.set(t,r)),Object.assign(r,e)},cb=e=>(t,r)=>{let s;ob.has(t.constructor)?s=ob.get(t.constructor):(s=ob.createDefault(t.constructor),ob.set(t.constructor,s));const i=Object.assign({},e);if("number"==typeof i.type&&!i.converter){const s=rb(e.type);if(!s)throw new Error(`Cannot get default converter for property '${r}' of ${t.constructor.name}`);i.converter=s}s.items[r]=i};class lb extends Error{constructor(){super(...arguments),this.schemas=[]}}class hb{static parse(e,t){const r=Cy(e);if(r.result.error)throw new Error(r.result.error);return this.fromASN(r.result,t)}static fromASN(e,t){var r;try{if(sb(t))return(new t).fromASN(e);const s=ob.get(t);ob.cache(t);let i=s.schema;if(e.constructor===_y&&s.type!==Iy.Choice){i=new _y({idBlock:{tagClass:3,tagNumber:e.idBlock.tagNumber},value:s.schema.valueBlock.value});for(const t in s.items)delete e[t]}const n=xm({},e,i);if(!n.verified)throw new lb(`Data does not match to ${t.name} ASN1 schema. ${n.result.error}`);const o=new t;if(ib(t)){if(!("value"in e.valueBlock)||!Array.isArray(e.valueBlock.value))throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.");const r=s.itemType;if("number"==typeof r){const s=rb(r);if(!s)throw new Error(`Cannot get default converter for array item of ${t.name} ASN1 schema`);return t.from(e.valueBlock.value,e=>s.fromASN(e))}return t.from(e.valueBlock.value,e=>this.fromASN(e,r))}for(const e in s.items){const t=n.result[e];if(!t)continue;const i=s.items[e],c=i.type;if("number"==typeof c||sb(c)){const s=null!==(r=i.converter)&&void 0!==r?r:sb(c)?new c:null;if(!s)throw new Error("Converter is empty");if(i.repeated)if(i.implicit){const r=new("sequence"===i.repeated?Jy:Yy);r.valueBlock=t.valueBlock;const n=Cy(r.toBER(!1));if(-1===n.offset)throw new Error(`Cannot parse the child item. ${n.result.error}`);if(!("value"in n.result.valueBlock)||!Array.isArray(n.result.valueBlock.value))throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.");const a=n.result.valueBlock.value;o[e]=Array.from(a,e=>s.fromASN(e))}else o[e]=Array.from(t,e=>s.fromASN(e));else{let r=t;if(i.implicit){let e;if(sb(c))e=(new c).toSchema("");else{const t=vy[c],r=a[t];if(!r)throw new Error(`Cannot get '${t}' class from asn1js module`);e=new r}e.valueBlock=r.valueBlock,r=Cy(e.toBER(!1)).result}o[e]=s.fromASN(r)}}else if(i.repeated){if(!Array.isArray(t))throw new Error("Cannot get list of items from the ASN.1 parsed value. ASN.1 value should be iterable.");o[e]=Array.from(t,e=>this.fromASN(e,c))}else o[e]=this.fromASN(t,c)}return o}catch(e){throw e instanceof lb&&e.schemas.push(t.name),e}}}class ub{static serialize(e){return e instanceof Pp?e.toBER(!1):this.toASN(e).toBER(!1)}static toASN(e){if(e&&"object"==typeof e&&sb(e))return e.toASN();if(!e||"object"!=typeof e)throw new TypeError("Parameter 1 should be type of Object.");const t=e.constructor,r=ob.get(t);ob.cache(t);let s,i=[];if(r.itemType){if(!Array.isArray(e))throw new TypeError("Parameter 1 should be type of Array.");if("number"==typeof r.itemType){const s=rb(r.itemType);if(!s)throw new Error(`Cannot get default converter for array item of ${t.name} ASN1 schema`);i=e.map(e=>s.toASN(e))}else i=e.map(e=>this.toAsnItem({type:r.itemType},"[]",t,e))}else for(const s in r.items){const n=r.items[s],o=e[s];if(void 0===o||n.defaultValue===o||"object"==typeof n.defaultValue&&"object"==typeof o&&nb(this.serialize(n.defaultValue),this.serialize(o)))continue;const a=ub.toAsnItem(n,s,t,o);if("number"==typeof n.context)if(n.implicit)if(n.repeated||"number"!=typeof n.type&&!sb(n.type))i.push(new _y({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},value:a.valueBlock.value}));else{const e={};e.valueHex=a instanceof Oy?a.valueBeforeDecodeView:a.valueBlock.toBER(),i.push(new Sy({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},...e}))}else i.push(new _y({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},value:[a]}));else n.repeated?i=i.concat(a):i.push(a)}switch(r.type){case Iy.Sequence:s=new Jy({value:i});break;case Iy.Set:s=new Yy({value:i});break;case Iy.Choice:if(!i[0])throw new Error(`Schema '${t.name}' has wrong data. Choice cannot be empty.`);s=i[0]}return s}static toAsnItem(e,t,r,s){let i;if("number"==typeof e.type){const n=e.converter;if(!n)throw new Error(`Property '${t}' doesn't have converter for type ${vy[e.type]} in schema '${r.name}'`);if(e.repeated){if(!Array.isArray(s))throw new TypeError("Parameter 'objProp' should be type of Array.");const t=Array.from(s,e=>n.toASN(e));i=new("sequence"===e.repeated?Jy:Yy)({value:t})}else i=n.toASN(s)}else if(e.repeated){if(!Array.isArray(s))throw new TypeError("Parameter 'objProp' should be type of Array.");const t=Array.from(s,e=>this.toASN(e));i=new("sequence"===e.repeated?Jy:Yy)({value:t})}else i=this.toASN(s);return i}}class db extends Array{constructor(e=[]){if("number"==typeof e)super(e);else{super();for(const t of e)this.push(t)}}}class fb{static serialize(e){return ub.serialize(e)}static parse(e,t){return hb.parse(e,t)}static toString(e){const t=Cy(zg.isBufferSource(e)?zg.toArrayBuffer(e):fb.serialize(e));if(-1===t.offset)throw new Error(`Cannot decode ASN.1 data. ${t.result.error}`);return t.result.toString()}}function gb(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;class pb extends Error{constructor(e,t){super(t?`${e}. See the inner exception for more details.`:e),this.message=e,this.innerError=t}}class yb extends pb{constructor(e,t,r){super(t,r),this.schema=e}}class mb extends yb{constructor(e,t,r){super(e,`JSON doesn't match to '${e.target.name}' schema. ${t}`,r)}}class bb extends pb{}class Ab extends pb{constructor(e,t,r){super(`Cannot serialize by '${e}' schema. ${t}`,r),this.schemaName=e}}class Ib extends mb{constructor(e,t,r={}){super(e,"Some keys doesn't match to schema"),this.keys=t,this.errors=r}}var vb;function wb(e,t){if(!function(e,t){switch(t){case vb.Boolean:return"boolean"==typeof e;case vb.Number:return"number"==typeof e;case vb.String:return"string"==typeof e}return!0}(e,t))throw new TypeError(`Value must be ${vb[t]}`)}function Sb(e){return e&&e.prototype?!(!e.prototype.toJSON||!e.prototype.fromJSON)||Sb(e.prototype):!!(e&&e.toJSON&&e.fromJSON)}!function(e){e[e.Any=0]="Any",e[e.Boolean=1]="Boolean",e[e.Number=2]="Number",e[e.String=3]="String"}(vb||(vb={}));const Eb="default",Cb=new class{constructor(){this.items=new Map}has(e){return this.items.has(e)||!!this.findParentSchema(e)}get(e){const t=this.items.get(e)||this.findParentSchema(e);if(!t)throw new Error("Cannot get schema for current target");return t}create(e){const t={names:{}},r=this.findParentSchema(e);if(r){Object.assign(t,r),t.names={};for(const e in r.names)t.names[e]=Object.assign({},r.names[e])}return t.target=e,t}set(e,t){return this.items.set(e,t),this}findParentSchema(e){const t=e.__proto__;return t?this.items.get(t)||this.findParentSchema(t):null}};class kb{constructor(e){this.pattern=new RegExp(e)}validate(e){const t=new RegExp(this.pattern.source,this.pattern.flags);if("string"!=typeof e)throw new bb("Incoming value must be string");if(!t.exec(e))throw new bb(`Value doesn't match to pattern '${t.toString()}'`)}}class xb{constructor(e=Number.MIN_VALUE,t=Number.MAX_VALUE){this.min=e,this.max=t}validate(e){if(wb(e,vb.Number),!(this.min<=e&&e<=this.max)){const e=this.min===Number.MIN_VALUE?"MIN":this.min,t=this.max===Number.MAX_VALUE?"MAX":this.max;throw new bb(`Value doesn't match to diapason [${e},${t}]`)}}}class _b{constructor(e=Number.MIN_VALUE,t=Number.MAX_VALUE){this.min=e,this.max=t}validate(e){if(wb(e,vb.Number),!(this.min<e&&e<this.max)){const e=this.min===Number.MIN_VALUE?"MIN":this.min,t=this.max===Number.MAX_VALUE?"MAX":this.max;throw new bb(`Value doesn't match to diapason (${e},${t})`)}}}class Bb{constructor(e,t,r){this.length=e,this.minLength=t,this.maxLength=r}validate(e){if(void 0===this.length){if(void 0!==this.minLength&&e.length<this.minLength)throw new bb(`Value length must be more than ${this.minLength}.`);if(void 0!==this.maxLength&&e.length>this.maxLength)throw new bb(`Value length must be less than ${this.maxLength}.`)}else if(e.length!==this.length)throw new bb(`Value length must be exactly ${this.length}.`)}}class Rb{constructor(e){this.enumeration=e}validate(e){if(wb(e,vb.String),!this.enumeration.includes(e))throw new bb(`Value must be one of ${this.enumeration.map(e=>`'${e}'`).join(", ")}`)}}class Ob{static checkValues(e,t){const r=Array.isArray(e)?e:[e];for(const s of r)for(const r of t.validations)r instanceof Bb&&t.repeated?r.validate(e):r.validate(s)}static checkTypes(e,t){if(t.repeated&&!Array.isArray(e))throw new TypeError("Value must be Array");if("number"==typeof t.type){const r=Array.isArray(e)?e:[e];for(const e of r)wb(e,t.type)}}static getSchemaByName(e,t=Eb){return{...e.names[Eb],...e.names[t]}}}class Ub extends Ob{static serialize(e,t,r,s){const i=this.toJSON(e,t);return JSON.stringify(i,r,s)}static toJSON(e,t={}){let r,s=t.targetSchema;const i=t.schemaName||Eb;if(Sb(e))return e.toJSON();if(Array.isArray(e)){r=[];for(const s of e)r.push(this.toJSON(s,t))}else if("object"==typeof e){if(s&&!Cb.has(s))throw new pb("Cannot get schema for `targetSchema` param");if(s=s||e.constructor,Cb.has(s)){const t=Cb.get(s);r={};const n=this.getSchemaByName(t,i);for(const o in n)try{const t=n[o],a=e[o];let c;if(t.optional&&void 0===a||void 0!==t.defaultValue&&a===t.defaultValue)continue;if(!t.optional&&void 0===a)throw new Ab(s.name,`Property '${o}' is required.`);c="number"==typeof t.type?t.converter?t.repeated?a.map(r=>t.converter.toJSON(r,e)):t.converter.toJSON(a,e):a:t.repeated?a.map(e=>this.toJSON(e,{schemaName:i})):this.toJSON(a,{schemaName:i}),this.checkTypes(c,t),this.checkValues(c,t),r[t.name||o]=c}catch(e){throw e instanceof Ab?e:new Ab(t.target.name,`Property '${o}' is wrong. ${e.message}`,e)}}else{r={};for(const t in e)r[t]=this.toJSON(e[t],{schemaName:i})}}else r=e;return r}}class Tb extends Ob{static parse(e,t){const r=JSON.parse(e);return this.fromJSON(r,t)}static fromJSON(e,t){const r=t.targetSchema,s=t.schemaName||Eb,i=new r;if(Sb(i))return i.fromJSON(e);const n=Cb.get(r),o=this.getSchemaByName(n,s),a={};t.strictProperty&&!Array.isArray(e)&&Tb.checkStrictProperty(e,o,n);for(const r in o)try{const a=o[r],c=a.name||r,l=e[c];if(void 0===l&&(a.optional||void 0!==a.defaultValue))continue;if(!a.optional&&void 0===l)throw new mb(n,`Property '${c}' is required.`);if(this.checkTypes(l,a),this.checkValues(l,a),"number"==typeof a.type)a.converter?a.repeated?i[r]=l.map(e=>a.converter.fromJSON(e,i)):i[r]=a.converter.fromJSON(l,i):i[r]=l;else{const e={...t,targetSchema:a.type,schemaName:s};a.repeated?i[r]=l.map(t=>this.fromJSON(t,e)):i[r]=this.fromJSON(l,e)}}catch(e){if(e instanceof mb||(e=new mb(n,`Property '${r}' is wrong. ${e.message}`,e)),!t.strictAllKeys)throw e;a[r]=e}const c=Object.keys(a);if(c.length)throw new Ib(n,c,a);return i}static checkStrictProperty(e,t,r){const s=Object.keys(e),i=Object.keys(t),n=[];for(const e of s)-1===i.indexOf(e)&&n.push(e);if(n.length)throw new Ib(r,n)}}const Nb=(e={})=>(t,r)=>{const s=`Cannot set type for ${r} property of ${t.constructor.name} schema`;let i;Cb.has(t.constructor)?(i=Cb.get(t.constructor),i.target!==t.constructor&&(i=Cb.create(t.constructor),Cb.set(t.constructor,i))):(i=Cb.create(t.constructor),Cb.set(t.constructor,i));const n={type:vb.Any,validations:[]},o=Object.assign(n,e);if(o.validations=function(e){const t=[];return e.pattern&&t.push(new kb(e.pattern)),e.type!==vb.Number&&e.type!==vb.Any||(void 0===e.minInclusive&&void 0===e.maxInclusive||t.push(new xb(e.minInclusive,e.maxInclusive)),void 0===e.minExclusive&&void 0===e.maxExclusive||t.push(new _b(e.minExclusive,e.maxExclusive)),void 0!==e.enumeration&&t.push(new Rb(e.enumeration))),(e.type===vb.String||e.repeated||e.type===vb.Any)&&(void 0===e.length&&void 0===e.minLength&&void 0===e.maxLength||t.push(new Bb(e.length,e.minLength,e.maxLength))),t}(o),"number"!=typeof o.type&&!Cb.has(o.type)&&!Sb(o.type))throw new Error(`${s}. Assigning type doesn't have schema.`);let a;a=Array.isArray(e.schema)?e.schema:[e.schema||Eb];for(const e of a)i.names[e]||(i.names[e]={}),i.names[e][r]=o};class Db extends Error{}class Mb extends Db{}class Pb extends Db{constructor(e){super("Unsupported operation: "+(e?`${e}`:""))}}class Lb extends Db{}class Hb extends Db{constructor(e){super(`${e}: Missing required property`)}}class Kb{static toArrayBuffer(e){const t=e.replace(/-{5}(BEGIN|END) .*-{5}/g,"").replace("\r","").replace("\n","");return tp.FromBase64(t)}static toUint8Array(e){const t=this.toArrayBuffer(e);return new Uint8Array(t)}static fromBufferSource(e,t){const r=tp.ToBase64(e);let s,i=0;const n=[];for(;i<r.length&&(s=r.slice(i,i+64),s.length);)n.push(s),i+=64;const o=t.toUpperCase();return`-----BEGIN ${o}-----\n${n.join("\n")}\n-----END ${o}-----`}static isPEM(e){return/-----BEGIN .+-----[A-Za-z0-9+/+=\s\n]+-----END .+-----/i.test(e)}static getTagName(e){if(!this.isPEM(e))throw new Error("Bad parameter. Incoming data is not right PEM");const t=/-----BEGIN (.+)-----/.exec(e);if(!t)throw new Error("Cannot get tag from PEM");return t[1]}static hasTagName(e,t){const r=this.getTagName(e);return t.toLowerCase()===r.toLowerCase()}static isCertificate(e){return this.hasTagName(e,"certificate")}static isCertificateRequest(e){return this.hasTagName(e,"certificate request")}static isCRL(e){return this.hasTagName(e,"x509 crl")}static isPublicKey(e){return this.hasTagName(e,"public key")}}class Qb{async digest(...e){return this.checkDigest.apply(this,e),this.onDigest.apply(this,e)}checkDigest(e,t){this.checkAlgorithmName(e)}async onDigest(e,t){throw new Pb("digest")}async generateKey(...e){return this.checkGenerateKey.apply(this,e),this.onGenerateKey.apply(this,e)}checkGenerateKey(e,t,r,...s){if(this.checkAlgorithmName(e),this.checkGenerateKeyParams(e),!r||!r.length)throw new TypeError("Usages cannot be empty when creating a key.");let i;i=Array.isArray(this.usages)?this.usages:this.usages.privateKey.concat(this.usages.publicKey),this.checkKeyUsages(r,i)}checkGenerateKeyParams(e){}async onGenerateKey(e,t,r,...s){throw new Pb("generateKey")}async sign(...e){return this.checkSign.apply(this,e),this.onSign.apply(this,e)}checkSign(e,t,r,...s){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,"sign")}async onSign(e,t,r,...s){throw new Pb("sign")}async verify(...e){return this.checkVerify.apply(this,e),this.onVerify.apply(this,e)}checkVerify(e,t,r,s,...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,"verify")}async onVerify(e,t,r,s,...i){throw new Pb("verify")}async encrypt(...e){return this.checkEncrypt.apply(this,e),this.onEncrypt.apply(this,e)}checkEncrypt(e,t,r,s={},...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"encrypt":void 0)}async onEncrypt(e,t,r,...s){throw new Pb("encrypt")}async decrypt(...e){return this.checkDecrypt.apply(this,e),this.onDecrypt.apply(this,e)}checkDecrypt(e,t,r,s={},...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"decrypt":void 0)}async onDecrypt(e,t,r,...s){throw new Pb("decrypt")}async deriveBits(...e){return this.checkDeriveBits.apply(this,e),this.onDeriveBits.apply(this,e)}checkDeriveBits(e,t,r,s={},...i){if(this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"deriveBits":void 0),r%8!=0)throw new Lb("length: Is not multiple of 8")}async onDeriveBits(e,t,r,...s){throw new Pb("deriveBits")}async exportKey(...e){return this.checkExportKey.apply(this,e),this.onExportKey.apply(this,e)}checkExportKey(e,t,...r){if(this.checkKeyFormat(e),this.checkCryptoKey(t),!t.extractable)throw new Db("key: Is not extractable")}async onExportKey(e,t,...r){throw new Pb("exportKey")}async importKey(...e){return this.checkImportKey.apply(this,e),this.onImportKey.apply(this,e)}checkImportKey(e,t,r,s,i,...n){this.checkKeyFormat(e),this.checkKeyData(e,t),this.checkAlgorithmName(r),this.checkImportParams(r),Array.isArray(this.usages)&&this.checkKeyUsages(i,this.usages)}async onImportKey(e,t,r,s,i,...n){throw new Pb("importKey")}checkAlgorithmName(e){if(e.name.toLowerCase()!==this.name.toLowerCase())throw new Mb("Unrecognized name")}checkAlgorithmParams(e){}checkDerivedKeyParams(e){}checkKeyUsages(e,t){for(const r of e)if(-1===t.indexOf(r))throw new TypeError("Cannot create a key using the specified key usages")}checkCryptoKey(e,t){if(this.checkAlgorithmName(e.algorithm),t&&-1===e.usages.indexOf(t))throw new Db("key does not match that of operation")}checkRequiredProperty(e,t){if(!(t in e))throw new Hb(t)}checkHashAlgorithm(e,t){for(const r of t)if(r.toLowerCase()===e.name.toLowerCase())return;throw new Lb(`hash: Must be one of ${t.join(", ")}`)}checkImportParams(e){}checkKeyFormat(e){switch(e){case"raw":case"pkcs8":case"spki":case"jwk":break;default:throw new TypeError("format: Is invalid value. Must be 'jwk', 'raw', 'spki', or 'pkcs8'")}}checkKeyData(e,t){if(!t)throw new TypeError("keyData: Cannot be empty on empty on key importing");if("jwk"===e){if("object"!=typeof(r=t)||!("kty"in r))throw new TypeError("keyData: Is not JsonWebToken")}else if(!zg.isBufferSource(t))throw new TypeError("keyData: Is not ArrayBufferView or ArrayBuffer");var r}prepareData(e){return zg.toArrayBuffer(e)}}class Vb extends Qb{checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not of type Number");switch(e.length){case 128:case 192:case 256:break;default:throw new TypeError("length: Must be 128, 192, or 256")}}checkDerivedKeyParams(e){this.checkGenerateKeyParams(e)}}class Fb extends Vb{constructor(){super(...arguments),this.name="AES-CBC",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(16!==e.iv.byteLength)throw new TypeError("iv: Must have length 16 bytes")}}class $b extends Vb{constructor(){super(...arguments),this.name="AES-CMAC",this.usages=["sign","verify"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new Lb("length: Must be more than 0")}}class jb extends Vb{constructor(){super(...arguments),this.name="AES-CTR",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"counter"),!(e.counter instanceof ArrayBuffer||ArrayBuffer.isView(e.counter)))throw new TypeError("counter: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(16!==e.counter.byteLength)throw new TypeError("iv: Must have length 16 bytes");if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new Lb("length: Must be more than 0")}}class Gb extends Vb{constructor(){super(...arguments),this.name="AES-ECB",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}}class qb extends Vb{constructor(){super(...arguments),this.name="AES-GCM",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){var t;if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(e.iv.byteLength<1)throw new Lb("iv: Must have length more than 0 and less than 2^64 - 1");switch(null!==(t=e.tagLength)&&void 0!==t||(e.tagLength=128),e.tagLength){case 32:case 64:case 96:case 104:case 112:case 120:case 128:break;default:throw new Lb("tagLength: Must be one of 32, 64, 96, 104, 112, 120 or 128")}}}class zb extends Vb{constructor(){super(...arguments),this.name="AES-KW",this.usages=["wrapKey","unwrapKey"]}}class Wb extends Qb{constructor(){super(...arguments),this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.ivSize){if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(e.iv.byteLength!==this.ivSize)throw new TypeError(`iv: Must have length ${this.ivSize} bytes`)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not of type Number");if(e.length!==this.keySizeBits)throw new Lb(`algorithm.length: Must be ${this.keySizeBits}`)}checkDerivedKeyParams(e){this.checkGenerateKeyParams(e)}}class Jb extends Qb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"]}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"publicExponent"),!(e.publicExponent&&e.publicExponent instanceof Uint8Array))throw new TypeError("publicExponent: Missing or not a Uint8Array");const t=tp.ToBase64(e.publicExponent);if("Aw=="!==t&&"AQAB"!==t)throw new TypeError("publicExponent: Must be [3] or [1,0,1]");if(this.checkRequiredProperty(e,"modulusLength"),e.modulusLength%8||e.modulusLength<256||e.modulusLength>16384)throw new TypeError("The modulus length must be a multiple of 8 bits and >= 256 and <= 16384")}checkImportParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}class Yb extends Jb{constructor(){super(...arguments),this.name="RSASSA-PKCS1-v1_5",this.usages={privateKey:["sign"],publicKey:["verify"]}}}class Xb extends Jb{constructor(){super(...arguments),this.name="RSA-PSS",this.usages={privateKey:["sign"],publicKey:["verify"]}}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"saltLength"),"number"!=typeof e.saltLength)throw new TypeError("saltLength: Is not a Number");if(e.saltLength<0)throw new RangeError("saltLength: Must be positive number")}}class Zb extends Jb{constructor(){super(...arguments),this.name="RSA-OAEP",this.usages={privateKey:["decrypt","unwrapKey"],publicKey:["encrypt","wrapKey"]}}checkAlgorithmParams(e){if(e.label&&!(e.label instanceof ArrayBuffer||ArrayBuffer.isView(e.label)))throw new TypeError("label: Is not of type '(ArrayBuffer or ArrayBufferView)'")}}class eA extends Qb{checkGenerateKeyParams(e){this.checkRequiredProperty(e,"namedCurve"),this.checkNamedCurve(e.namedCurve)}checkNamedCurve(e){for(const t of this.namedCurves)if(t.toLowerCase()===e.toLowerCase())return;throw new Lb(`namedCurve: Must be one of ${this.namedCurves.join(", ")}`)}}class tA extends eA{constructor(){super(...arguments),this.name="ECDSA",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages={privateKey:["sign"],publicKey:["verify"]},this.namedCurves=["P-256","P-384","P-521","K-256"]}checkAlgorithmParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}const rA=["secret","private","public"];class sA{static create(e,t,r,s){const i=new this;return i.algorithm=e,i.type=t,i.extractable=r,i.usages=s,i}static isKeyType(e){return-1!==rA.indexOf(e)}get[Symbol.toStringTag](){return"CryptoKey"}}class iA extends eA{constructor(){super(...arguments),this.name="ECDH",this.usages={privateKey:["deriveBits","deriveKey"],publicKey:[]},this.namedCurves=["P-256","P-384","P-521","K-256"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"public"),!(e.public instanceof sA))throw new TypeError("public: Is not a CryptoKey");if("public"!==e.public.type)throw new Lb("public: Is not a public key");if(e.public.algorithm.name!==this.name)throw new Lb(`public: Is not ${this.name} key`)}}class nA extends iA{constructor(){super(...arguments),this.name="ECDH-ES",this.namedCurves=["X25519","X448"]}}class oA extends eA{constructor(){super(...arguments),this.name="EdDSA",this.usages={privateKey:["sign"],publicKey:["verify"]},this.namedCurves=["Ed25519","Ed448"]}}let aA=class{constructor(e){e&&(this.value=e)}};gb([cb({type:vy.ObjectIdentifier})],aA.prototype,"value",void 0),aA=gb([ab({type:Iy.Choice})],aA);class cA{constructor(e){Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],cA.prototype,"algorithm",void 0),gb([cb({type:vy.Any,optional:!0})],cA.prototype,"parameters",void 0);class lA{constructor(){this.version=0,this.privateKeyAlgorithm=new cA,this.privateKey=new ArrayBuffer(0)}}gb([cb({type:vy.Integer})],lA.prototype,"version",void 0),gb([cb({type:cA})],lA.prototype,"privateKeyAlgorithm",void 0),gb([cb({type:vy.OctetString})],lA.prototype,"privateKey",void 0),gb([cb({type:vy.Any,optional:!0})],lA.prototype,"attributes",void 0);class hA{constructor(){this.publicKeyAlgorithm=new cA,this.publicKey=new ArrayBuffer(0)}}gb([cb({type:cA})],hA.prototype,"publicKeyAlgorithm",void 0),gb([cb({type:vy.BitString})],hA.prototype,"publicKey",void 0);const uA={fromJSON:e=>tp.FromBase64Url(e),toJSON:e=>tp.ToBase64Url(new Uint8Array(e))},dA={fromASN:e=>{const t=e.valueBlock.valueHex;return new Uint8Array(t)[0]?e.valueBlock.valueHex:e.valueBlock.valueHex.slice(1)},toASN:e=>{const t=new Uint8Array(e)[0]>127?rp(new Uint8Array([0]).buffer,e):e;return new Vy({valueHex:t})}};class fA{constructor(){this.version=0,this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),this.privateExponent=new ArrayBuffer(0),this.prime1=new ArrayBuffer(0),this.prime2=new ArrayBuffer(0),this.exponent1=new ArrayBuffer(0),this.exponent2=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0)}}gb([cb({type:vy.Integer,converter:Um})],fA.prototype,"version",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"n",converter:uA})],fA.prototype,"modulus",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"e",converter:uA})],fA.prototype,"publicExponent",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"d",converter:uA})],fA.prototype,"privateExponent",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"p",converter:uA})],fA.prototype,"prime1",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"q",converter:uA})],fA.prototype,"prime2",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"dp",converter:uA})],fA.prototype,"exponent1",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"dq",converter:uA})],fA.prototype,"exponent2",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"qi",converter:uA})],fA.prototype,"coefficient",void 0),gb([cb({type:vy.Any,optional:!0})],fA.prototype,"otherPrimeInfos",void 0);class gA{constructor(){this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0)}}gb([cb({type:vy.Integer,converter:dA}),Nb({name:"n",converter:uA})],gA.prototype,"modulus",void 0),gb([cb({type:vy.Integer,converter:dA}),Nb({name:"e",converter:uA})],gA.prototype,"publicExponent",void 0);let pA=class{constructor(e){this.value=new ArrayBuffer(0),e&&(this.value=e)}toJSON(){let e=new Uint8Array(this.value);if(4!==e[0])throw new Db("Wrong ECPoint. Current version supports only Uncompressed (0x04) point");e=new Uint8Array(this.value.slice(1));const t=e.length/2;return{x:tp.ToBase64Url(e.buffer.slice(0,0+t)),y:tp.ToBase64Url(e.buffer.slice(0+t,0+t+t))}}fromJSON(e){if(!("x"in e))throw new Error("x: Missing required property");if(!("y"in e))throw new Error("y: Missing required property");const t=tp.FromBase64Url(e.x),r=tp.FromBase64Url(e.y),s=rp(new Uint8Array([4]).buffer,t,r);return this.value=new Uint8Array(s).buffer,this}};gb([cb({type:vy.OctetString})],pA.prototype,"value",void 0),pA=gb([ab({type:Iy.Choice})],pA);class yA{constructor(){this.version=1,this.privateKey=new ArrayBuffer(0)}fromJSON(e){if(!("d"in e))throw new Error("d: Missing required property");if(this.privateKey=tp.FromBase64Url(e.d),"x"in e){const t=new pA;t.fromJSON(e);const r=ub.toASN(t);"valueHex"in r.valueBlock&&(this.publicKey=r.valueBlock.valueHex)}return this}toJSON(){const e={};return e.d=tp.ToBase64Url(this.privateKey),this.publicKey&&Object.assign(e,new pA(this.publicKey).toJSON()),e}}gb([cb({type:vy.Integer,converter:Um})],yA.prototype,"version",void 0),gb([cb({type:vy.OctetString})],yA.prototype,"privateKey",void 0),gb([cb({context:0,type:vy.Any,optional:!0})],yA.prototype,"parameters",void 0),gb([cb({context:1,type:vy.BitString,optional:!0})],yA.prototype,"publicKey",void 0);const mA={fromASN:e=>{const t=new Uint8Array(e.valueBlock.valueHex);return 0===t[0]?t.buffer.slice(1):t.buffer},toASN:e=>{const t=new Uint8Array(e);if(t[0]>127){const e=new Uint8Array(t.length+1);return e.set(t,1),new Vy({valueHex:e.buffer})}return new Vy({valueHex:e})}};var bA=Object.freeze({__proto__:null,AsnIntegerWithoutPaddingConverter:mA});class AA{static decodePoint(e,t){const r=zg.toUint8Array(e);if(0===r.length||4!==r[0])throw new Error("Only uncompressed point format supported");const s=(r.length-1)/2;if(s!==Math.ceil(t/8))throw new Error("Point does not match field size");return{x:r.slice(1,s+1),y:r.slice(s+1,s+1+s)}}static encodePoint(e,t){const r=Math.ceil(t/8);if(e.x.byteLength!==r||e.y.byteLength!==r)throw new Error("X,Y coordinates don't match point size criteria");const s=zg.toUint8Array(e.x),i=zg.toUint8Array(e.y),n=new Uint8Array(2*r+1);return n[0]=4,n.set(s,1),n.set(i,r+1),n}static getSize(e){return Math.ceil(e/8)}static encodeSignature(e,t){const r=this.getSize(t),s=zg.toUint8Array(e.r),i=zg.toUint8Array(e.s),n=new Uint8Array(2*r);return n.set(this.padStart(s,r)),n.set(this.padStart(i,r),r),n}static decodeSignature(e,t){const r=this.getSize(t),s=zg.toUint8Array(e);if(s.length!==2*r)throw new Error("Incorrect size of the signature");const i=s.slice(0,r),n=s.slice(r);return{r:this.trimStart(i),s:this.trimStart(n)}}static trimStart(e){let t=0;for(;t<e.length-1&&0===e[t];)t++;return 0===t?e:e.slice(t,e.length)}static padStart(e,t){if(t===e.length)return e;const r=new Uint8Array(t);return r.set(e,t-e.length),r}}class IA{constructor(){this.r=new ArrayBuffer(0),this.s=new ArrayBuffer(0)}static fromWebCryptoSignature(e){const t=e.byteLength/2,r=AA.decodeSignature(e,8*t),s=new IA;return s.r=zg.toArrayBuffer(r.r),s.s=zg.toArrayBuffer(r.s),s}toWebCryptoSignature(e){if(!e){const t=Math.max(this.r.byteLength,this.s.byteLength);e=t<=32?256:t<=48?384:521}return AA.encodeSignature(this,e).buffer}}gb([cb({type:vy.Integer,converter:mA})],IA.prototype,"r",void 0),gb([cb({type:vy.Integer,converter:mA})],IA.prototype,"s",void 0);class vA extends lA{}gb([cb({context:1,implicit:!0,type:vy.BitString,optional:!0})],vA.prototype,"publicKey",void 0);let wA=class{constructor(){this.value=new ArrayBuffer(0)}fromJSON(e){if(!e.d)throw new Error("d: Missing required property");return this.value=tp.FromBase64Url(e.d),this}toJSON(){return{d:tp.ToBase64Url(this.value)}}};gb([cb({type:vy.OctetString})],wA.prototype,"value",void 0),wA=gb([ab({type:Iy.Choice})],wA);let SA=class{constructor(e){this.value=new ArrayBuffer(0),e&&(this.value=e)}toJSON(){return{x:tp.ToBase64Url(this.value)}}fromJSON(e){if(!("x"in e))throw new Error("x: Missing required property");return this.value=tp.FromBase64Url(e.x),this}};gb([cb({type:vy.BitString})],SA.prototype,"value",void 0),SA=gb([ab({type:Iy.Choice})],SA);let EA=class{};gb([cb({type:vy.OctetString}),Nb({type:vb.String,converter:uA})],EA.prototype,"d",void 0),EA=gb([ab({type:Iy.Choice})],EA);const CA="1.2.840.10045.3.1.7",kA="1.3.132.0",xA=`${kA}.34`,_A=`${kA}.35`,BA=`${kA}.10`,RA="1.3.36.3.3.2.8.1.1",OA=`${RA}.1`,UA=`${RA}.2`,TA=`${RA}.3`,NA=`${RA}.4`,DA=`${RA}.5`,MA=`${RA}.6`,PA=`${RA}.7`,LA=`${RA}.8`,HA=`${RA}.9`,KA=`${RA}.10`,QA=`${RA}.11`,VA=`${RA}.12`,FA=`${RA}.13`,$A=`${RA}.14`;var jA=Object.freeze({__proto__:null,AlgorithmIdentifier:cA,get CurvePrivateKey(){return EA},EcDsaSignature:IA,EcPrivateKey:yA,get EcPublicKey(){return pA},get EdPrivateKey(){return wA},get EdPublicKey(){return SA},get ObjectIdentifier(){return aA},OneAsymmetricKey:vA,PrivateKeyInfo:lA,PublicKeyInfo:hA,RsaPrivateKey:fA,RsaPublicKey:gA,converters:bA,idBrainpoolP160r1:OA,idBrainpoolP160t1:UA,idBrainpoolP192r1:TA,idBrainpoolP192t1:NA,idBrainpoolP224r1:DA,idBrainpoolP224t1:MA,idBrainpoolP256r1:PA,idBrainpoolP256t1:LA,idBrainpoolP320r1:HA,idBrainpoolP320t1:KA,idBrainpoolP384r1:QA,idBrainpoolP384t1:VA,idBrainpoolP512r1:FA,idBrainpoolP512t1:$A,idEd25519:"1.3.101.112",idEd448:"1.3.101.113",idEllipticCurve:kA,idSecp256k1:BA,idSecp256r1:CA,idSecp384r1:xA,idSecp521r1:_A,idVersionOne:RA,idX25519:"1.3.101.110",idX448:"1.3.101.111"});class GA{constructor(){}static register(e){const t=new aA;t.value=e.id;const r=fb.serialize(t);this.items.push({...e,raw:r}),this.names.push(e.name)}static find(e){e=e.toUpperCase();for(const t of this.items)if(t.name.toUpperCase()===e||t.id.toUpperCase()===e)return t;return null}static get(e){const t=this.find(e);if(!t)throw new Error(`Unsupported EC named curve '${e}'`);return t}}GA.items=[],GA.names=[],GA.register({name:"P-256",id:CA,size:256}),GA.register({name:"P-384",id:xA,size:384}),GA.register({name:"P-521",id:_A,size:521}),GA.register({name:"K-256",id:BA,size:256}),GA.register({name:"brainpoolP160r1",id:OA,size:160}),GA.register({name:"brainpoolP160t1",id:UA,size:160}),GA.register({name:"brainpoolP192r1",id:TA,size:192}),GA.register({name:"brainpoolP192t1",id:NA,size:192}),GA.register({name:"brainpoolP224r1",id:DA,size:224}),GA.register({name:"brainpoolP224t1",id:MA,size:224}),GA.register({name:"brainpoolP256r1",id:PA,size:256}),GA.register({name:"brainpoolP256t1",id:LA,size:256}),GA.register({name:"brainpoolP320r1",id:HA,size:320}),GA.register({name:"brainpoolP320t1",id:KA,size:320}),GA.register({name:"brainpoolP384r1",id:QA,size:384}),GA.register({name:"brainpoolP384t1",id:VA,size:384}),GA.register({name:"brainpoolP512r1",id:FA,size:512}),GA.register({name:"brainpoolP512t1",id:$A,size:512});class qA extends Qb{constructor(){super(...arguments),this.name="X25519",this.usages={privateKey:["deriveKey","deriveBits"],publicKey:[]}}checkAlgorithmParams(e){this.checkRequiredProperty(e,"public")}}class zA extends Qb{constructor(){super(...arguments),this.name="Ed25519",this.usages={privateKey:["sign"],publicKey:["verify"]}}}class WA extends Qb{constructor(){super(...arguments),this.name="HMAC",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["sign","verify"]}getDefaultLength(e){switch(e.toUpperCase()){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":return 512;default:throw new Error(`Unknown algorithm name '${e}'`)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),"length"in e){if("number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new RangeError("length: Number is out of range")}}checkImportParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}class JA extends Qb{constructor(){super(...arguments),this.name="PBKDF2",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["deriveBits","deriveKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"salt"),!(e.salt instanceof ArrayBuffer||ArrayBuffer.isView(e.salt)))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(this.checkRequiredProperty(e,"iterations"),"number"!=typeof e.iterations)throw new TypeError("iterations: Is not a Number");if(e.iterations<1)throw new TypeError("iterations: Is less than 1")}checkImportKey(e,t,r,s,i,...n){if(super.checkImportKey(e,t,r,s,i,...n),s)throw new SyntaxError("extractable: Must be 'false'")}}class YA extends Qb{constructor(){super(...arguments),this.name="HKDF",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["deriveKey","deriveBits"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"salt"),!zg.isBufferSource(e.salt))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(this.checkRequiredProperty(e,"info"),!zg.isBufferSource(e.info))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'")}checkImportKey(e,t,r,s,i,...n){if(super.checkImportKey(e,t,r,s,i,...n),s)throw new SyntaxError("extractable: Must be 'false'")}}class XA extends Qb{constructor(){super(...arguments),this.usages=[],this.defaultLength=0}digest(...e){return e[0]={length:this.defaultLength,...e[0]},super.digest.apply(this,e)}checkDigest(e,t){super.checkDigest(e,t);const r=e.length||0;if("number"!=typeof r)throw new TypeError("length: Is not a Number");if(r<0)throw new TypeError("length: Is negative")}}class ZA extends XA{constructor(){super(...arguments),this.name="shake128",this.defaultLength=16}}class eI extends XA{constructor(){super(...arguments),this.name="shake256",this.defaultLength=32}}class tI{get[Symbol.toStringTag](){return"Crypto"}randomUUID(){const e=this.getRandomValues(new Uint8Array(16));e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=tp.ToHex(e).toLowerCase();return`${t.substring(0,8)}-${t.substring(8,12)}-${t.substring(12,16)}-${t.substring(16,20)}-${t.substring(20)}`}}class rI{constructor(){this.items={}}get(e){return this.items[e.toLowerCase()]||null}set(e){this.items[e.name.toLowerCase()]=e}removeAt(e){const t=this.get(e.toLowerCase());return t&&delete this.items[e],t}has(e){return!!this.get(e)}get length(){return Object.keys(this.items).length}get algorithms(){const e=[];for(const t in this.items){const r=this.items[t];e.push(r.name)}return e.sort()}}const sI={jwk:["private","public","secret"],pkcs8:["private"],spki:["public"],raw:["secret","public"]},iI=["pkcs8","spki","raw"];class nI{constructor(){this.providers=new rI}static isHashedAlgorithm(e){return!!(e&&"object"==typeof e&&"name"in e&&"hash"in e)}get[Symbol.toStringTag](){return"SubtleCrypto"}async digest(...e){this.checkRequiredArguments(e,2,"digest");const[t,r,...s]=e,i=this.prepareAlgorithm(t),n=zg.toArrayBuffer(r),o=this.getProvider(i.name);return await o.digest(i,n,...s)}async generateKey(...e){this.checkRequiredArguments(e,3,"generateKey");const[t,r,s,...i]=e,n=this.prepareAlgorithm(t),o=this.getProvider(n.name);return await o.generateKey({...n,name:o.name},r,s,...i)}async sign(...e){this.checkRequiredArguments(e,3,"sign");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=zg.toArrayBuffer(s),a=this.getProvider(n.name);return await a.sign({...n,name:a.name},r,o,...i)}async verify(...e){this.checkRequiredArguments(e,4,"verify");const[t,r,s,i,...n]=e;this.checkCryptoKey(r);const o=this.prepareAlgorithm(t),a=zg.toArrayBuffer(i),c=zg.toArrayBuffer(s),l=this.getProvider(o.name);return await l.verify({...o,name:l.name},r,c,a,...n)}async encrypt(...e){this.checkRequiredArguments(e,3,"encrypt");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=zg.toArrayBuffer(s),a=this.getProvider(n.name);return await a.encrypt({...n,name:a.name},r,o,{keyUsage:!0},...i)}async decrypt(...e){this.checkRequiredArguments(e,3,"decrypt");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=zg.toArrayBuffer(s),a=this.getProvider(n.name);return await a.decrypt({...n,name:a.name},r,o,{keyUsage:!0},...i)}async deriveBits(...e){this.checkRequiredArguments(e,3,"deriveBits");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=this.getProvider(n.name);return await o.deriveBits({...n,name:o.name},r,s,{keyUsage:!0},...i)}async deriveKey(...e){this.checkRequiredArguments(e,5,"deriveKey");const[t,r,s,i,n,...o]=e,a=this.prepareAlgorithm(s);this.getProvider(a.name).checkDerivedKeyParams(a);const c=this.prepareAlgorithm(t),l=this.getProvider(c.name);l.checkCryptoKey(r,"deriveKey");const h=await l.deriveBits({...c,name:l.name},r,s.length||512,{keyUsage:!1},...o);return this.importKey("raw",h,s,i,n,...o)}async exportKey(...e){this.checkRequiredArguments(e,2,"exportKey");const[t,r,...s]=e;if(this.checkCryptoKey(r),!sI[t])throw new TypeError("Invalid keyFormat argument");if(!sI[t].includes(r.type))throw new DOMException("The key is not of the expected type");const i=this.getProvider(r.algorithm.name);return await i.exportKey(t,r,...s)}async importKey(...e){this.checkRequiredArguments(e,5,"importKey");const[t,r,s,i,n,...o]=e,a=this.prepareAlgorithm(s),c=this.getProvider(a.name);if("jwk"===t){if("object"!=typeof r||!r.kty)throw new TypeError("Key data must be an object for JWK import")}else{if(!iI.includes(t))throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView or JsonWebKey)'");if(!zg.isBufferSource(r))throw new TypeError("Key data must be a BufferSource for non-JWK formats")}return c.importKey(t,r,{...a,name:c.name},i,n,...o)}async wrapKey(e,t,r,s,...i){let n=await this.exportKey(e,t,...i);if("jwk"===e){const e=JSON.stringify(n);n=tp.FromUtf8String(e)}const o=this.prepareAlgorithm(s),a=zg.toArrayBuffer(n),c=this.getProvider(o.name);return c.encrypt({...o,name:c.name},r,a,{keyUsage:!1},...i)}async unwrapKey(e,t,r,s,i,n,o,...a){const c=this.prepareAlgorithm(s),l=zg.toArrayBuffer(t),h=this.getProvider(c.name);let u=await h.decrypt({...c,name:h.name},r,l,{keyUsage:!1},...a);if("jwk"===e)try{u=JSON.parse(tp.ToUtf8String(u))}catch(e){const t=new TypeError("wrappedKey: Is not a JSON");throw t.internal=e,t}return this.importKey(e,u,i,n,o,...a)}checkRequiredArguments(e,t,r){if(e.length<t)throw new TypeError(`Failed to execute '${r}' on 'SubtleCrypto': ${t} arguments required, but only ${e.length} present`)}prepareAlgorithm(e){if("string"==typeof e)return{name:e};if(nI.isHashedAlgorithm(e)){const t={...e};return t.hash=this.prepareAlgorithm(e.hash),t}return{...e}}getProvider(e){const t=this.providers.get(e);if(!t)throw new Mb("Unrecognized name");return t}checkCryptoKey(e){if(!(e instanceof sA))throw new TypeError("Key is not of type 'CryptoKey'")}}const oI=t(import.meta.url)("buffer"),aI=t(import.meta.url)("crypto");var cI=o.n(aI);const lI={fromJSON:e=>oI.Buffer.from(tp.FromBase64Url(e)),toJSON:e=>tp.ToBase64Url(e)};class hI extends sA{constructor(){super(...arguments),this.data=oI.Buffer.alloc(0),this.algorithm={name:""},this.extractable=!1,this.type="secret",this.usages=[],this.kty="oct",this.alg=""}}gb([Nb({name:"ext",type:vb.Boolean,optional:!0})],hI.prototype,"extractable",void 0),gb([Nb({name:"key_ops",type:vb.String,repeated:!0,optional:!0})],hI.prototype,"usages",void 0),gb([Nb({type:vb.String})],hI.prototype,"kty",void 0),gb([Nb({type:vb.String,optional:!0})],hI.prototype,"alg",void 0);class uI extends hI{constructor(){super(...arguments),this.kty="oct",this.type="secret"}}class dI extends hI{}class fI extends uI{get alg(){switch(this.algorithm.name.toUpperCase()){case"AES-CBC":return`A${this.algorithm.length}CBC`;case"AES-CTR":return`A${this.algorithm.length}CTR`;case"AES-GCM":return`A${this.algorithm.length}GCM`;case"AES-KW":return`A${this.algorithm.length}KW`;case"AES-CMAC":return`A${this.algorithm.length}CMAC`;case"AES-ECB":return`A${this.algorithm.length}ECB`;default:throw new Mb("Unsupported algorithm name")}}set alg(e){}}gb([Nb({name:"k",converter:lI})],fI.prototype,"data",void 0);class gI{static async generateKey(e,t,r){const s=new fI;return s.algorithm=e,s.extractable=t,s.usages=r,s.data=cI().randomBytes(e.length>>3),s}static async exportKey(e,t){if(!(t instanceof fI))throw new Error("key: Is not AesCryptoKey");switch(e.toLowerCase()){case"jwk":return Ub.toJSON(t);case"raw":return new Uint8Array(t.data).buffer;default:throw new Lb("format: Must be 'jwk' or 'raw'")}}static async importKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=Tb.fromJSON(t,{targetSchema:fI});break;case"raw":n=new fI,n.data=oI.Buffer.from(t);break;default:throw new Lb("format: Must be 'jwk' or 'raw'")}switch(n.algorithm=r,n.algorithm.length=n.data.length<<3,n.extractable=s,n.usages=i,n.algorithm.length){case 128:case 192:case 256:break;default:throw new Lb("keyData: Is wrong key length")}return n}static async encrypt(e,t,r){switch(e.name.toUpperCase()){case"AES-CBC":return this.encryptAesCBC(e,t,oI.Buffer.from(r));case"AES-CTR":return this.encryptAesCTR(e,t,oI.Buffer.from(r));case"AES-GCM":return this.encryptAesGCM(e,t,oI.Buffer.from(r));case"AES-KW":return this.encryptAesKW(e,t,oI.Buffer.from(r));case"AES-ECB":return this.encryptAesECB(e,t,oI.Buffer.from(r));default:throw new Lb("algorithm: Is not recognized")}}static async decrypt(e,t,r){if(!(t instanceof fI))throw new Error("key: Is not AesCryptoKey");switch(e.name.toUpperCase()){case"AES-CBC":return this.decryptAesCBC(e,t,oI.Buffer.from(r));case"AES-CTR":return this.decryptAesCTR(e,t,oI.Buffer.from(r));case"AES-GCM":return this.decryptAesGCM(e,t,oI.Buffer.from(r));case"AES-KW":return this.decryptAesKW(e,t,oI.Buffer.from(r));case"AES-ECB":return this.decryptAesECB(e,t,oI.Buffer.from(r));default:throw new Lb("algorithm: Is not recognized")}}static async encryptAesCBC(e,t,r){const s=cI().createCipheriv(`aes-${t.algorithm.length}-cbc`,t.data,new Uint8Array(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesCBC(e,t,r){const s=cI().createDecipheriv(`aes-${t.algorithm.length}-cbc`,t.data,new Uint8Array(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesCTR(e,t,r){const s=cI().createCipheriv(`aes-${t.algorithm.length}-ctr`,t.data,oI.Buffer.from(e.counter));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesCTR(e,t,r){const s=cI().createDecipheriv(`aes-${t.algorithm.length}-ctr`,t.data,new Uint8Array(e.counter));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesGCM(e,t,r){const s=cI().createCipheriv(`aes-${t.algorithm.length}-gcm`,t.data,oI.Buffer.from(e.iv),{authTagLength:(e.tagLength||128)>>3});e.additionalData&&s.setAAD(oI.Buffer.from(e.additionalData));let i=s.update(r);return i=oI.Buffer.concat([i,s.final(),s.getAuthTag()]),new Uint8Array(i).buffer}static async decryptAesGCM(e,t,r){const s=(e.tagLength||128)>>3,i=cI().createDecipheriv(`aes-${t.algorithm.length}-gcm`,t.data,new Uint8Array(e.iv),{authTagLength:s}),n=r.slice(0,r.length-s),o=r.slice(r.length-s);e.additionalData&&i.setAAD(oI.Buffer.from(e.additionalData)),i.setAuthTag(o);let a=i.update(n);return a=oI.Buffer.concat([a,i.final()]),new Uint8Array(a).buffer}static async encryptAesKW(e,t,r){const s=cI().createCipheriv(`id-aes${t.algorithm.length}-wrap`,t.data,this.AES_KW_IV);let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesKW(e,t,r){const s=cI().createDecipheriv(`id-aes${t.algorithm.length}-wrap`,t.data,this.AES_KW_IV);let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesECB(e,t,r){const s=cI().createCipheriv(`aes-${t.algorithm.length}-ecb`,t.data,new Uint8Array(0));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesECB(e,t,r){const s=cI().createDecipheriv(`aes-${t.algorithm.length}-ecb`,t.data,new Uint8Array(0));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}}gI.AES_KW_IV=oI.Buffer.from("A6A6A6A6A6A6A6A6","hex");const pI=new WeakMap;function yI(e){const t=pI.get(e);if(!t)throw new Lb("Cannot get CryptoKey from secure storage");return t}function mI(e){const t=sA.create(e.algorithm,e.type,e.extractable,e.usages);return Object.freeze(t),pI.set(t,e),t}class bI extends Fb{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return gI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return gI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}const AI=oI.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),II=oI.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135]),vI=16;function wI(e){const t=oI.Buffer.alloc(e.length),r=e.length-1;for(let s=0;s<r;s++)t[s]=e[s]<<1,128&e[s+1]&&(t[s]+=1);return t[r]=e[r]<<1,t}function SI(e,t){const r=Math.min(e.length,t.length),s=oI.Buffer.alloc(r);for(let i=0;i<r;i++)s[i]=e[i]^t[i];return s}function EI(e,t){const r=cI().createCipheriv("aes"+(e.length<<3),e,AI),s=r.update(t);return r.final(),s}function CI(e,t){const r=oI.Buffer.alloc(vI),s=t*vI,i=s+vI;return e.copy(r,0,s,i),r}class kI extends $b{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onSign(e,t,r){const s=function(e,t){const r=function(e){const t=EI(e,AI);let r=wI(t);128&t[0]&&(r=SI(r,II));let s=wI(r);return 128&r[0]&&(s=SI(s,II)),{subkey1:r,subkey2:s}}(e);let s,i,n=Math.ceil(t.length/vI);0===n?(n=1,s=!1):s=t.length%vI===0;const o=n-1;i=s?SI(CI(t,o),r.subkey1):SI(function(e,t){const r=oI.Buffer.alloc(vI),s=t*vI,i=e.length;return r.fill(0),e.copy(r,0,s,i),r[i-s]=128,r}(t,o),r.subkey2);let a,c=AI;for(let r=0;r<o;r++)a=SI(c,CI(t,r)),c=EI(e,a);return a=SI(i,c),EI(e,a)}(yI(t).data,oI.Buffer.from(r));return new Uint8Array(s).buffer}async onVerify(e,t,r,s){const i=await this.sign(e,t,s);return 0===oI.Buffer.from(r).compare(oI.Buffer.from(i))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}class xI extends jb{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return gI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return gI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}class _I extends qb{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return gI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return gI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}class BI extends zb{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}async onEncrypt(e,t,r){return gI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return gI.decrypt(e,yI(t),new Uint8Array(r))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}class RI extends Gb{async onGenerateKey(e,t,r){return mI(await gI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return gI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return gI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return gI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await gI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof fI))throw new TypeError("key: Is not a AesCryptoKey")}}class OI extends uI{get alg(){switch(this.algorithm.name.toUpperCase()){case"DES-CBC":return"DES-CBC";case"DES-EDE3-CBC":return"3DES-CBC";default:throw new Mb("Unsupported algorithm name")}}set alg(e){}}gb([Nb({name:"k",converter:lI})],OI.prototype,"data",void 0);class UI{static async generateKey(e,t,r){const s=new OI;return s.algorithm=e,s.extractable=t,s.usages=r,s.data=cI().randomBytes(e.length>>3),s}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return Ub.toJSON(t);case"raw":return new Uint8Array(t.data).buffer;default:throw new Lb("format: Must be 'jwk' or 'raw'")}}static async importKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=Tb.fromJSON(t,{targetSchema:OI});break;case"raw":n=new OI,n.data=oI.Buffer.from(t);break;default:throw new Lb("format: Must be 'jwk' or 'raw'")}return n.algorithm=r,n.extractable=s,n.usages=i,n}static async encrypt(e,t,r){switch(e.name.toUpperCase()){case"DES-CBC":return this.encryptDesCBC(e,t,oI.Buffer.from(r));case"DES-EDE3-CBC":return this.encryptDesEDE3CBC(e,t,oI.Buffer.from(r));default:throw new Lb("algorithm: Is not recognized")}}static async decrypt(e,t,r){if(!(t instanceof OI))throw new Error("key: Is not DesCryptoKey");switch(e.name.toUpperCase()){case"DES-CBC":return this.decryptDesCBC(e,t,oI.Buffer.from(r));case"DES-EDE3-CBC":return this.decryptDesEDE3CBC(e,t,oI.Buffer.from(r));default:throw new Lb("algorithm: Is not recognized")}}static async encryptDesCBC(e,t,r){const s=cI().createCipheriv("des-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptDesCBC(e,t,r){const s=cI().createDecipheriv("des-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptDesEDE3CBC(e,t,r){const s=cI().createCipheriv("des-ede3-cbc",t.data,oI.Buffer.from(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptDesEDE3CBC(e,t,r){const s=cI().createDecipheriv("des-ede3-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=oI.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}}class TI extends Wb{constructor(){super(...arguments),this.keySizeBits=64,this.ivSize=8,this.name="DES-CBC"}async onGenerateKey(e,t,r){return mI(await UI.generateKey({name:this.name,length:this.keySizeBits},t,r))}async onEncrypt(e,t,r){return UI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return UI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return UI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){const n=await UI.importKey(e,t,{name:this.name,length:this.keySizeBits},s,i);if(n.data.length!==this.keySizeBits>>3)throw new Lb("keyData: Wrong key size");return mI(n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof OI))throw new TypeError("key: Is not a DesCryptoKey")}}class NI extends Wb{constructor(){super(...arguments),this.keySizeBits=192,this.ivSize=8,this.name="DES-EDE3-CBC"}async onGenerateKey(e,t,r){return mI(await UI.generateKey({name:this.name,length:this.keySizeBits},t,r))}async onEncrypt(e,t,r){return UI.encrypt(e,yI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return UI.decrypt(e,yI(t),new Uint8Array(r))}async onExportKey(e,t){return UI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){const n=await UI.importKey(e,t,{name:this.name,length:this.keySizeBits},s,i);if(n.data.length!==this.keySizeBits>>3)throw new Lb("keyData: Wrong key size");return mI(n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof OI))throw new TypeError("key: Is not a DesCryptoKey")}}function DI(e){switch(e.name.toUpperCase()){case"RSA-OAEP":{const t=/(\d+)$/.exec(e.hash.name)[1];return"RSA-OAEP"+("1"!==t?`-${t}`:"")}case"RSASSA-PKCS1-V1_5":return`RS${/(\d+)$/.exec(e.hash.name)[1]}`;case"RSA-PSS":return`PS${/(\d+)$/.exec(e.hash.name)[1]}`;case"RSA-PKCS1":return"RS1";default:throw new Lb("algorithm: Is not recognized")}}class MI extends dI{constructor(){super(...arguments),this.type="private"}getKey(){const e=hb.parse(this.data,jA.PrivateKeyInfo);return hb.parse(e.privateKey,jA.RsaPrivateKey)}toJSON(){const e=this.getKey(),t={kty:"RSA",alg:DI(this.algorithm),key_ops:this.usages,ext:this.extractable};return Object.assign(t,Ub.toJSON(e))}fromJSON(e){const t=Tb.fromJSON(e,{targetSchema:jA.RsaPrivateKey}),r=new jA.PrivateKeyInfo;r.privateKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",r.privateKeyAlgorithm.parameters=null,r.privateKey=ub.serialize(t),this.data=oI.Buffer.from(ub.serialize(r))}}class PI extends dI{constructor(){super(...arguments),this.type="public"}getKey(){const e=hb.parse(this.data,jA.PublicKeyInfo);return hb.parse(e.publicKey,jA.RsaPublicKey)}toJSON(){const e=this.getKey(),t={kty:"RSA",alg:DI(this.algorithm),key_ops:this.usages,ext:this.extractable};return Object.assign(t,Ub.toJSON(e))}fromJSON(e){const t=Tb.fromJSON(e,{targetSchema:jA.RsaPublicKey}),r=new jA.PublicKeyInfo;r.publicKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",r.publicKeyAlgorithm.parameters=null,r.publicKey=ub.serialize(t),this.data=oI.Buffer.from(ub.serialize(r))}}class LI{static async generateKey(e,t,r){const s=new MI;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new PI;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=oI.Buffer.concat([oI.Buffer.alloc(4-e.publicExponent.byteLength,0),oI.Buffer.from(e.publicExponent)]).readInt32BE(0),o=cI().generateKeyPairSync("rsa",{modulusLength:e.modulusLength,publicExponent:n,publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=o.privateKey,i.data=o.publicKey,{privateKey:s,publicKey:i}}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return Ub.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;default:throw new Lb("format: Must be 'jwk', 'pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":if(t.d){const e=Tb.fromJSON(t,{targetSchema:jA.RsaPrivateKey});return this.importPrivateKey(e,r,s,i)}{const e=Tb.fromJSON(t,{targetSchema:jA.RsaPublicKey});return this.importPublicKey(e,r,s,i)}case"spki":{const e=hb.parse(new Uint8Array(t),jA.PublicKeyInfo),n=hb.parse(e.publicKey,jA.RsaPublicKey);return this.importPublicKey(n,r,s,i)}case"pkcs8":{const e=hb.parse(new Uint8Array(t),jA.PrivateKeyInfo),n=hb.parse(e.privateKey,jA.RsaPrivateKey);return this.importPrivateKey(n,r,s,i)}default:throw new Lb("format: Must be 'jwk', 'pkcs8' or 'spki'")}}static async sign(e,t,r){switch(e.name.toUpperCase()){case"RSA-PSS":case"RSASSA-PKCS1-V1_5":return this.signRsa(e,t,r);default:throw new Lb("algorithm: Is not recognized")}}static async verify(e,t,r,s){switch(e.name.toUpperCase()){case"RSA-PSS":case"RSASSA-PKCS1-V1_5":return this.verifySSA(e,t,s,r);default:throw new Lb("algorithm: Is not recognized")}}static async encrypt(e,t,r){if("RSA-OAEP"===e.name.toUpperCase())return this.encryptOAEP(e,t,r);throw new Lb("algorithm: Is not recognized")}static async decrypt(e,t,r){if("RSA-OAEP"===e.name.toUpperCase())return this.decryptOAEP(e,t,r);throw new Lb("algorithm: Is not recognized")}static importPrivateKey(e,t,r,s){const i=new jA.PrivateKeyInfo;i.privateKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",i.privateKeyAlgorithm.parameters=null,i.privateKey=ub.serialize(e);const n=new MI;return n.data=oI.Buffer.from(ub.serialize(i)),n.algorithm=Object.assign({},t),n.algorithm.publicExponent=new Uint8Array(e.publicExponent),n.algorithm.modulusLength=e.modulus.byteLength<<3,n.extractable=r,n.usages=s,n}static importPublicKey(e,t,r,s){const i=new jA.PublicKeyInfo;i.publicKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",i.publicKeyAlgorithm.parameters=null,i.publicKey=ub.serialize(e);const n=new PI;return n.data=oI.Buffer.from(ub.serialize(i)),n.algorithm=Object.assign({},t),n.algorithm.publicExponent=new Uint8Array(e.publicExponent),n.algorithm.modulusLength=e.modulus.byteLength<<3,n.extractable=r,n.usages=s,n}static getCryptoAlgorithm(e){switch(e.hash.name.toUpperCase()){case"SHA-1":return"RSA-SHA1";case"SHA-256":return"RSA-SHA256";case"SHA-384":return"RSA-SHA384";case"SHA-512":return"RSA-SHA512";case"SHA3-256":return"RSA-SHA3-256";case"SHA3-384":return"RSA-SHA3-384";case"SHA3-512":return"RSA-SHA3-512";default:throw new Lb("algorithm.hash: Is not recognized")}}static signRsa(e,t,r){const s=this.getCryptoAlgorithm(t.algorithm),i=cI().createSign(s);i.update(oI.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const n={key:t.pem};"RSA-PSS"===e.name.toUpperCase()&&(n.padding=cI().constants.RSA_PKCS1_PSS_PADDING,n.saltLength=e.saltLength);const o=i.sign(n);return new Uint8Array(o).buffer}static verifySSA(e,t,r,s){const i=this.getCryptoAlgorithm(t.algorithm),n=cI().createVerify(i);n.update(oI.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const o={key:t.pem};return"RSA-PSS"===e.name.toUpperCase()&&(o.padding=cI().constants.RSA_PKCS1_PSS_PADDING,o.saltLength=e.saltLength),n.verify(o,s)}static encryptOAEP(e,t,r){const s={key:`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`,padding:cI().constants.RSA_PKCS1_OAEP_PADDING};return e.label,new Uint8Array(cI().publicEncrypt(s,r)).buffer}static decryptOAEP(e,t,r){const s={key:`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`,padding:cI().constants.RSA_PKCS1_OAEP_PADDING};return e.label,new Uint8Array(cI().privateDecrypt(s,r)).buffer}}LI.publicKeyUsages=["verify","encrypt","wrapKey"],LI.privateKeyUsages=["sign","decrypt","unwrapKey"];class HI extends Yb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await LI.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onSign(e,t,r){return LI.sign(e,yI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return LI.verify(e,yI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return LI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await LI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof MI||r instanceof PI))throw new TypeError("key: Is not RSA CryptoKey")}}class KI extends Xb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await LI.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onSign(e,t,r){return LI.sign(e,yI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return LI.verify(e,yI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return LI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await LI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof MI||r instanceof PI))throw new TypeError("key: Is not RSA CryptoKey")}}class QI{static size(e){switch(e.name.toUpperCase()){case"SHA-1":return 160;case"SHA-256":case"SHA3-256":return 256;case"SHA-384":case"SHA3-384":return 384;case"SHA-512":case"SHA3-512":return 512;default:throw new Error("Unrecognized name")}}static getAlgorithmName(e){switch(e.name.toUpperCase()){case"SHA-1":return"sha1";case"SHA-256":return"sha256";case"SHA-384":return"sha384";case"SHA-512":return"sha512";case"SHA3-256":return"sha3-256";case"SHA3-384":return"sha3-384";case"SHA3-512":return"sha3-512";default:throw new Error("Unrecognized name")}}static digest(e,t){const r=this.getAlgorithmName(e),s=cI().createHash(r).update(oI.Buffer.from(t)).digest();return new Uint8Array(s).buffer}}class VI extends Zb{async onGenerateKey(e,t,r){const s=await LI.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onEncrypt(e,t,r){const s=yI(t),i=new Uint8Array(r),n=Math.ceil(s.algorithm.modulusLength>>3),o=QI.size(s.algorithm.hash)>>3,a=i.byteLength,c=n-a-2*o-2;if(a>n-2*o-2)throw new Error("Data too large");const l=new Uint8Array(n),h=l.subarray(1,o+1),u=l.subarray(o+1);u.set(i,o+c+1);const d=cI().createHash(s.algorithm.hash.name.replace("-","")).update(zg.toUint8Array(e.label||new Uint8Array(0))).digest();u.set(d,0),u[o+c]=1,cI().randomFillSync(h);const f=this.mgf1(s.algorithm.hash,h,u.length);for(let e=0;e<u.length;e++)u[e]^=f[e];const g=this.mgf1(s.algorithm.hash,u,h.length);for(let e=0;e<h.length;e++)h[e]^=g[e];s.pem||(s.pem=`-----BEGIN PUBLIC KEY-----\n${s.data.toString("base64")}\n-----END PUBLIC KEY-----`);const p=cI().publicEncrypt({key:s.pem,padding:cI().constants.RSA_NO_PADDING},oI.Buffer.from(l));return new Uint8Array(p).buffer}async onDecrypt(e,t,r){const s=yI(t),i=Math.ceil(s.algorithm.modulusLength>>3),n=QI.size(s.algorithm.hash)>>3;if(r.byteLength!==i)throw new Error("Bad data");s.pem||(s.pem=`-----BEGIN PRIVATE KEY-----\n${s.data.toString("base64")}\n-----END PRIVATE KEY-----`);let o=cI().privateDecrypt({key:s.pem,padding:cI().constants.RSA_NO_PADDING},oI.Buffer.from(r));const a=o[0],c=o.subarray(1,n+1),l=o.subarray(n+1);if(0!==a)throw new Error("Decryption failed");const h=this.mgf1(s.algorithm.hash,l,c.length);for(let e=0;e<c.length;e++)c[e]^=h[e];const u=this.mgf1(s.algorithm.hash,c,l.length);for(let e=0;e<l.length;e++)l[e]^=u[e];const d=cI().createHash(s.algorithm.hash.name.replace("-","")).update(zg.toUint8Array(e.label||new Uint8Array(0))).digest();for(let e=0;e<n;e++)if(d[e]!==l[e])throw new Error("Decryption failed");let f=n;for(;f<l.length;f++){const e=l[f];if(1===e)break;if(0!==e)throw new Error("Decryption failed")}if(f===l.length)throw new Error("Decryption failed");return o=l.subarray(f+1),new Uint8Array(o).buffer}async onExportKey(e,t){return LI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await LI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof MI||r instanceof PI))throw new TypeError("key: Is not RSA CryptoKey")}mgf1(e,t,r=0){const s=QI.size(e)>>3,i=new Uint8Array(r),n=new Uint8Array(4),o=Math.ceil(r/s);for(let r=0;r<o;r++){n[0]=r>>>24,n[1]=r>>>16&255,n[2]=r>>>8&255,n[3]=255&r;const o=i.subarray(r*s);let a=cI().createHash(e.name.replace("-","")).update(t).update(n).digest();a.length>o.length&&(a=a.subarray(0,o.length)),o.set(a)}return i}}class FI extends Qb{constructor(){super(...arguments),this.name="RSAES-PKCS1-v1_5",this.usages={publicKey:["encrypt","wrapKey"],privateKey:["decrypt","unwrapKey"]}}async onGenerateKey(e,t,r){const s=await LI.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"publicExponent"),!(e.publicExponent&&e.publicExponent instanceof Uint8Array))throw new TypeError("publicExponent: Missing or not a Uint8Array");const t=tp.ToBase64(e.publicExponent);if("Aw=="!==t&&"AQAB"!==t)throw new TypeError("publicExponent: Must be [3] or [1,0,1]");switch(this.checkRequiredProperty(e,"modulusLength"),e.modulusLength){case 1024:case 2048:case 4096:break;default:throw new TypeError("modulusLength: Must be 1024, 2048, or 4096")}}async onEncrypt(e,t,r){const s=this.toCryptoOptions(t),i=cI().publicEncrypt(s,new Uint8Array(r));return new Uint8Array(i).buffer}async onDecrypt(e,t,r){const s=this.toCryptoOptions(t),i=cI().privateDecrypt(s,new Uint8Array(r));return new Uint8Array(i).buffer}async onExportKey(e,t){return LI.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await LI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof MI||r instanceof PI))throw new TypeError("key: Is not RSA CryptoKey")}toCryptoOptions(e){const t=e.type.toUpperCase();return{key:`-----BEGIN ${t} KEY-----\n${yI(e).data.toString("base64")}\n-----END ${t} KEY-----`,padding:cI().constants.RSA_PKCS1_PADDING}}}const $I={"1.2.840.10045.3.1.7":"P-256","P-256":"1.2.840.10045.3.1.7","1.3.132.0.34":"P-384","P-384":"1.3.132.0.34","1.3.132.0.35":"P-521","P-521":"1.3.132.0.35","1.3.132.0.10":"K-256","K-256":"1.3.132.0.10",brainpoolP160r1:"1.3.36.3.3.2.8.1.1.1","1.3.36.3.3.2.8.1.1.1":"brainpoolP160r1",brainpoolP160t1:"1.3.36.3.3.2.8.1.1.2","1.3.36.3.3.2.8.1.1.2":"brainpoolP160t1",brainpoolP192r1:"1.3.36.3.3.2.8.1.1.3","1.3.36.3.3.2.8.1.1.3":"brainpoolP192r1",brainpoolP192t1:"1.3.36.3.3.2.8.1.1.4","1.3.36.3.3.2.8.1.1.4":"brainpoolP192t1",brainpoolP224r1:"1.3.36.3.3.2.8.1.1.5","1.3.36.3.3.2.8.1.1.5":"brainpoolP224r1",brainpoolP224t1:"1.3.36.3.3.2.8.1.1.6","1.3.36.3.3.2.8.1.1.6":"brainpoolP224t1",brainpoolP256r1:"1.3.36.3.3.2.8.1.1.7","1.3.36.3.3.2.8.1.1.7":"brainpoolP256r1",brainpoolP256t1:"1.3.36.3.3.2.8.1.1.8","1.3.36.3.3.2.8.1.1.8":"brainpoolP256t1",brainpoolP320r1:"1.3.36.3.3.2.8.1.1.9","1.3.36.3.3.2.8.1.1.9":"brainpoolP320r1",brainpoolP320t1:"1.3.36.3.3.2.8.1.1.10","1.3.36.3.3.2.8.1.1.10":"brainpoolP320t1",brainpoolP384r1:"1.3.36.3.3.2.8.1.1.11","1.3.36.3.3.2.8.1.1.11":"brainpoolP384r1",brainpoolP384t1:"1.3.36.3.3.2.8.1.1.12","1.3.36.3.3.2.8.1.1.12":"brainpoolP384t1",brainpoolP512r1:"1.3.36.3.3.2.8.1.1.13","1.3.36.3.3.2.8.1.1.13":"brainpoolP512r1",brainpoolP512t1:"1.3.36.3.3.2.8.1.1.14","1.3.36.3.3.2.8.1.1.14":"brainpoolP512t1"};function jI(e){const t=$I[e];if(!t)throw new Lb(`Cannot convert WebCrypto named curve '${e}' to OID`);return t}class GI extends dI{constructor(){super(...arguments),this.type="private"}getKey(){const e=hb.parse(this.data,jA.PrivateKeyInfo);return hb.parse(e.privateKey,jA.EcPrivateKey)}toJSON(){const e=this.getKey(),t={kty:"EC",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,Ub.toJSON(e))}fromJSON(e){if(!e.crv)throw new Lb("Cannot get named curve from JWK. Property 'crv' is required");const t=new jA.PrivateKeyInfo;t.privateKeyAlgorithm.algorithm="1.2.840.10045.2.1",t.privateKeyAlgorithm.parameters=ub.serialize(new jA.ObjectIdentifier(jI(e.crv)));const r=Tb.fromJSON(e,{targetSchema:jA.EcPrivateKey});return t.privateKey=ub.serialize(r),this.data=oI.Buffer.from(ub.serialize(t)),this}}class qI extends dI{constructor(){super(...arguments),this.type="public"}getKey(){const e=hb.parse(this.data,jA.PublicKeyInfo);return new jA.EcPublicKey(e.publicKey)}toJSON(){const e=this.getKey(),t={kty:"EC",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,Ub.toJSON(e))}fromJSON(e){if(!e.crv)throw new Lb("Cannot get named curve from JWK. Property 'crv' is required");const t=Tb.fromJSON(e,{targetSchema:jA.EcPublicKey}),r=new jA.PublicKeyInfo;return r.publicKeyAlgorithm.algorithm="1.2.840.10045.2.1",r.publicKeyAlgorithm.parameters=ub.serialize(new jA.ObjectIdentifier(jI(e.crv))),r.publicKey=ub.toASN(t).valueHex,this.data=oI.Buffer.from(ub.serialize(r)),this}}class zI extends Qb{constructor(){super(...arguments),this.name="SHA-1",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class WI extends Qb{constructor(){super(...arguments),this.name="SHA-256",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class JI extends Qb{constructor(){super(...arguments),this.name="SHA-384",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class YI extends Qb{constructor(){super(...arguments),this.name="SHA-512",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class XI extends Qb{constructor(){super(...arguments),this.name="SHA3-256",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class ZI extends Qb{constructor(){super(...arguments),this.name="SHA3-384",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class ev extends Qb{constructor(){super(...arguments),this.name="SHA3-512",this.usages=[]}async onDigest(e,t){return QI.digest(e,t)}}class tv{static async generateKey(e,t,r){const s=new GI;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new qI;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=cI().generateKeyPairSync("ec",{namedCurve:this.getOpenSSLNamedCurve(e.namedCurve),publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=n.privateKey,i.data=n.publicKey,{privateKey:s,publicKey:i}}static async sign(e,t,r){const s=QI.getAlgorithmName(e.hash),i=cI().createSign(s);i.update(oI.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const n={key:t.pem},o=i.sign(n),a=hb.parse(o,jA.EcDsaSignature);return AA.encodeSignature(a,GA.get(t.algorithm.namedCurve).size).buffer}static async verify(e,t,r,s){const i=QI.getAlgorithmName(e.hash),n=cI().createVerify(i);n.update(oI.Buffer.from(s)),t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const o={key:t.pem},a=new jA.EcDsaSignature,c=GA.get(t.algorithm.namedCurve),l=AA.decodeSignature(r,c.size);a.r=zg.toArrayBuffer(l.r),a.s=zg.toArrayBuffer(l.s);const h=oI.Buffer.from(ub.serialize(a));return n.verify(o,h)}static async deriveBits(e,t,r){const s=this.getOpenSSLNamedCurve(t.algorithm.namedCurve),i=cI().createECDH(s),n=hb.parse(t.data,jA.PrivateKeyInfo),o=hb.parse(n.privateKey,jA.EcPrivateKey);i.setPrivateKey(oI.Buffer.from(o.privateKey));const a=hb.parse(e.public.data,jA.PublicKeyInfo),c=i.computeSecret(oI.Buffer.from(a.publicKey));return null===r?c:new Uint8Array(c).buffer.slice(0,r>>3)}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return Ub.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;case"raw":return hb.parse(t.data,jA.PublicKeyInfo).publicKey;default:throw new Lb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":if(t.d){const e=Tb.fromJSON(t,{targetSchema:jA.EcPrivateKey});return this.importPrivateKey(e,r,s,i)}{const e=Tb.fromJSON(t,{targetSchema:jA.EcPublicKey});return this.importPublicKey(e,r,s,i)}case"raw":{const e=new jA.EcPublicKey(t);return this.importPublicKey(e,r,s,i)}case"spki":{const e=hb.parse(new Uint8Array(t),jA.PublicKeyInfo),n=new jA.EcPublicKey(e.publicKey);return this.assertKeyParameters(e.publicKeyAlgorithm.parameters,r.namedCurve),this.importPublicKey(n,r,s,i)}case"pkcs8":{const e=hb.parse(new Uint8Array(t),jA.PrivateKeyInfo),n=hb.parse(e.privateKey,jA.EcPrivateKey);return this.assertKeyParameters(e.privateKeyAlgorithm.parameters,r.namedCurve),this.importPrivateKey(n,r,s,i)}default:throw new Lb("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'")}}static assertKeyParameters(e,t){if(!e)throw new Db("Key info doesn't have required parameters");let r="";try{r=hb.parse(e,jA.ObjectIdentifier).value}catch(e){throw new Db("Cannot read key info parameters")}if(jI(t)!==r)throw new Db("Key info parameter doesn't match to named curve")}static async importPrivateKey(e,t,r,s){const i=new jA.PrivateKeyInfo;i.privateKeyAlgorithm.algorithm="1.2.840.10045.2.1",i.privateKeyAlgorithm.parameters=ub.serialize(new jA.ObjectIdentifier(jI(t.namedCurve))),i.privateKey=ub.serialize(e);const n=new GI;return n.data=oI.Buffer.from(ub.serialize(i)),n.algorithm=Object.assign({},t),n.extractable=r,n.usages=s,n}static async importPublicKey(e,t,r,s){const i=new jA.PublicKeyInfo;i.publicKeyAlgorithm.algorithm="1.2.840.10045.2.1";const n=jI(t.namedCurve);i.publicKeyAlgorithm.parameters=ub.serialize(new jA.ObjectIdentifier(n)),i.publicKey=e.value;const o=new qI;return o.data=oI.Buffer.from(ub.serialize(i)),o.algorithm=Object.assign({},t),o.extractable=r,o.usages=s,o}static getOpenSSLNamedCurve(e){switch(e.toUpperCase()){case"P-256":return"prime256v1";case"K-256":return"secp256k1";case"P-384":return"secp384r1";case"P-521":return"secp521r1";default:return e}}}tv.publicKeyUsages=["verify"],tv.privateKeyUsages=["sign","deriveKey","deriveBits"];class rv extends tA{constructor(){super(...arguments),this.namedCurves=GA.names,this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await tv.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onSign(e,t,r){return tv.sign(e,yI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return tv.verify(e,yI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return tv.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await tv.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof GI||r instanceof qI))throw new TypeError("key: Is not EC CryptoKey")}}class sv extends iA{constructor(){super(...arguments),this.namedCurves=GA.names}async onGenerateKey(e,t,r){const s=await tv.generateKey({...e,name:this.name},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onExportKey(e,t){return tv.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await tv.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=yI(e);if(!(r instanceof GI||r instanceof qI))throw new TypeError("key: Is not EC CryptoKey")}async onDeriveBits(e,t,r){return await tv.deriveBits({...e,public:yI(e.public)},yI(t),r)}}const iv={[jA.idEd448]:"Ed448",ed448:jA.idEd448,[jA.idX448]:"X448",x448:jA.idX448,[jA.idEd25519]:"Ed25519",ed25519:jA.idEd25519,[jA.idX25519]:"X25519",x25519:jA.idX25519};function nv(e){const t=iv[e.toLowerCase()];if(!t)throw new Lb(`Cannot convert WebCrypto named curve '${e}' to OID`);return t}class ov extends dI{constructor(){super(...arguments),this.type="private"}getKey(){const e=hb.parse(this.data,jA.PrivateKeyInfo);return hb.parse(e.privateKey,jA.CurvePrivateKey)}toJSON(){const e=this.getKey(),t={kty:"OKP",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,Ub.toJSON(e))}fromJSON(e){if(!e.crv)throw new Lb("Cannot get named curve from JWK. Property 'crv' is required");const t=new jA.PrivateKeyInfo;t.privateKeyAlgorithm.algorithm=nv(e.crv);const r=Tb.fromJSON(e,{targetSchema:jA.CurvePrivateKey});return t.privateKey=ub.serialize(r),this.data=oI.Buffer.from(ub.serialize(t)),this}}class av extends dI{constructor(){super(...arguments),this.type="public"}getKey(){return hb.parse(this.data,jA.PublicKeyInfo).publicKey}toJSON(){const e=this.getKey(),t={kty:"OKP",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,{x:tp.ToBase64Url(e)})}fromJSON(e){if(!e.crv)throw new Lb("Cannot get named curve from JWK. Property 'crv' is required");if(!e.x)throw new Lb("Cannot get property from JWK. Property 'x' is required");const t=new jA.PublicKeyInfo;return t.publicKeyAlgorithm.algorithm=nv(e.crv),t.publicKey=tp.FromBase64Url(e.x),this.data=oI.Buffer.from(ub.serialize(t)),this}}class cv{static async generateKey(e,t,r){const s=new ov;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new av;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=e.namedCurve.toLowerCase(),o=cI().generateKeyPairSync(n,{publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=o.privateKey,i.data=o.publicKey,{privateKey:s,publicKey:i}}static async sign(e,t,r){t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const s={key:t.pem},i=cI().sign(null,oI.Buffer.from(r),s);return zg.toArrayBuffer(i)}static async verify(e,t,r,s){t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const i={key:t.pem};return cI().verify(null,oI.Buffer.from(s),i,oI.Buffer.from(r))}static async deriveBits(e,t,r){const s=cI().createPublicKey({key:e.public.data,format:"der",type:"spki"}),i=cI().createPrivateKey({key:t.data,format:"der",type:"pkcs8"}),n=cI().diffieHellman({publicKey:s,privateKey:i});return new Uint8Array(n).buffer.slice(0,r>>3)}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return Ub.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;case"raw":return hb.parse(t.data,jA.PublicKeyInfo).publicKey;default:throw new Lb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":{const e=t;if(e.d){const e=Tb.fromJSON(t,{targetSchema:jA.CurvePrivateKey});return this.importPrivateKey(e,r,s,i)}if(!e.x)throw new TypeError("keyData: Cannot get required 'x' filed");return this.importPublicKey(tp.FromBase64Url(e.x),r,s,i)}case"raw":return this.importPublicKey(t,r,s,i);case"spki":{const e=hb.parse(new Uint8Array(t),jA.PublicKeyInfo);return this.importPublicKey(e.publicKey,r,s,i)}case"pkcs8":{const e=hb.parse(new Uint8Array(t),jA.PrivateKeyInfo),n=hb.parse(e.privateKey,jA.CurvePrivateKey);return this.importPrivateKey(n,r,s,i)}default:throw new Lb("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'")}}static importPrivateKey(e,t,r,s){const i=new ov;return i.fromJSON({crv:t.namedCurve,d:tp.ToBase64Url(e.d)}),i.algorithm=Object.assign({},t),i.extractable=r,i.usages=s,i}static async importPublicKey(e,t,r,s){const i=new av;return i.fromJSON({crv:t.namedCurve,x:tp.ToBase64Url(e)}),i.algorithm=Object.assign({},t),i.extractable=r,i.usages=s,i}}cv.publicKeyUsages=["verify"],cv.privateKeyUsages=["sign","deriveKey","deriveBits"];class lv extends oA{async onGenerateKey(e,t,r){const s=await cv.generateKey({name:this.name,namedCurve:e.namedCurve.replace(/^ed/i,"Ed")},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onSign(e,t,r){return cv.sign(e,yI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return cv.verify(e,yI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return cv.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await cv.importKey(e,t,{...r,name:this.name},s,i))}}class hv extends nA{async onGenerateKey(e,t,r){const s=await cv.generateKey({name:this.name,namedCurve:e.namedCurve.toUpperCase()},t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onDeriveBits(e,t,r){return await cv.deriveBits({...e,public:yI(e.public)},yI(t),r)}async onExportKey(e,t){return cv.exportKey(e,yI(t))}async onImportKey(e,t,r,s,i){return mI(await cv.importKey(e,t,{...r,name:this.name},s,i))}}class uv extends hI{constructor(e,t,r,s){super(),this.algorithm=e,this.extractable=t,this.usages=r,this.data=Buffer.from(s)}toJWK(){return{kty:"OKP",crv:this.algorithm.name,key_ops:this.usages,ext:this.extractable}}}class dv extends uv{constructor(){super(...arguments),this.type="private"}toJWK(){const e=cI().createPublicKey({key:this.data,format:"pem"}).export({format:"jwk"}),t=Kb.toUint8Array(this.data.toString()),r=fb.parse(t,jA.PrivateKeyInfo),s=fb.parse(r.privateKey,jA.EdPrivateKey).value;return{...super.toJWK(),...e,d:Buffer.from(new Uint8Array(s)).toString("base64url")}}}class fv extends uv{constructor(){super(...arguments),this.type="public"}toJWK(){const e=cI().createPublicKey({key:this.data,format:"pem"}).export({format:"jwk"});return{...super.toJWK(),...e}}}class gv{static async generateKey(e,t,r){const s=e.name.toLowerCase(),i=cI().generateKeyPairSync(s,{publicKeyEncoding:{format:"pem",type:"spki"},privateKeyEncoding:{format:"pem",type:"pkcs8"}}),n={name:"ed25519"===s?"Ed25519":"X25519"},o=r.filter(e=>this.privateKeyUsages.includes(e)),a=r.filter(e=>this.publicKeyUsages.includes(e));return{privateKey:new dv(n,t,o,i.privateKey),publicKey:new fv(n,!0,a,i.publicKey)}}static async sign(e,t,r){const s=cI().sign(null,Buffer.from(r),t.data);return zg.toArrayBuffer(s)}static async verify(e,t,r,s){return cI().verify(null,Buffer.from(s),t.data,r)}static async exportKey(e,t){switch(e){case"jwk":return t.toJWK();case"pkcs8":case"spki":return Kb.toArrayBuffer(t.data.toString());case"raw":{const e=t.toJWK();return tp.FromBase64Url(e.x)}default:return Promise.reject(new Lb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"))}}static async importKey(e,t,r,s,i){switch(e){case"jwk":{const e=t;if(e.d){const t=new jA.EdPrivateKey;t.value=zg.toArrayBuffer(Buffer.from(e.d,"base64url"));const n=new jA.PrivateKeyInfo;n.privateKeyAlgorithm.algorithm="ed25519"===r.name.toLowerCase()?jA.idEd25519:jA.idX25519,n.privateKey=fb.serialize(t);const o=fb.serialize(n),a=Kb.fromBufferSource(o,"PRIVATE KEY");return new dv(r,s,i,a)}if(e.x){const t=cI().createPublicKey({format:"jwk",key:e}).export({format:"pem",type:"spki"});return new fv(r,s,i,t)}throw new Lb("keyData: Cannot import JWK. 'd' or 'x' must be presented")}case"pkcs8":{const e=Kb.fromBufferSource(t,"PRIVATE KEY");return new dv(r,s,i,e)}case"spki":{const e=Kb.fromBufferSource(t,"PUBLIC KEY");return new fv(r,s,i,e)}case"raw":{const e=t,n=cI().createPublicKey({format:"jwk",key:{kty:"OKP",crv:"ed25519"===r.name.toLowerCase()?"Ed25519":"X25519",x:tp.ToBase64Url(e)}}).export({format:"pem",type:"spki"});return new fv(r,s,i,n)}default:return Promise.reject(new Lb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"))}}}gv.privateKeyUsages=["sign","deriveBits","deriveKey"],gv.publicKeyUsages=["verify"];class pv extends zA{async onGenerateKey(e,t,r){const s=await gv.generateKey(e,t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onSign(e,t,r){const s=yI(t);return gv.sign(e,s,new Uint8Array(r))}onVerify(e,t,r,s){const i=yI(t);return gv.verify(e,i,new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){const r=yI(t);return gv.exportKey(e,r)}async onImportKey(e,t,r,s,i){return mI(await gv.importKey(e,t,r,s,i))}}class yv extends qA{async onGenerateKey(e,t,r){const s=await gv.generateKey(e,t,r);return{privateKey:mI(s.privateKey),publicKey:mI(s.publicKey)}}async onDeriveBits(e,t,r){const s=yI(t),i=yI(e.public),n=cI().createPublicKey({key:i.data.toString(),format:"pem",type:"spki"}),o=cI().createPrivateKey({key:s.data.toString(),format:"pem",type:"pkcs8"}),a=cI().diffieHellman({publicKey:n,privateKey:o});return new Uint8Array(a).buffer.slice(0,r>>3)}async onExportKey(e,t){const r=yI(t);return gv.exportKey(e,r)}async onImportKey(e,t,r,s,i){return mI(await gv.importKey(e,t,r,s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof uv))throw new TypeError("key: Is not a Ed25519CryptoKey")}}class mv extends hI{}class bv extends JA{async onDeriveBits(e,t,r){return new Promise((s,i)=>{const n=zg.toArrayBuffer(e.salt),o=e.hash.name.replace("-","");cI().pbkdf2(yI(t).data,oI.Buffer.from(n),e.iterations,r>>3,o,(e,t)=>{e?i(e):s(new Uint8Array(t).buffer)})})}async onImportKey(e,t,r,s,i){if("raw"===e){const e=new mv;return e.data=oI.Buffer.from(t),e.algorithm={name:this.name},e.extractable=!1,e.usages=i,mI(e)}throw new Lb("format: Must be 'raw'")}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof mv))throw new TypeError("key: Is not PBKDF CryptoKey")}}class Av extends hI{get alg(){return`HS${this.algorithm.hash.name.toUpperCase().replace("SHA-","")}`}set alg(e){}}gb([Nb({name:"k",converter:lI})],Av.prototype,"data",void 0);class Iv extends WA{async onGenerateKey(e,t,r){const s=(e.length||this.getDefaultLength(e.hash.name))>>3<<3,i=new Av;return i.algorithm={...e,length:s,name:this.name},i.extractable=t,i.usages=r,i.data=cI().randomBytes(s>>3),mI(i)}async onSign(e,t,r){const s=QI.getAlgorithmName(t.algorithm.hash),i=cI().createHmac(s,yI(t).data).update(oI.Buffer.from(r)).digest();return new Uint8Array(i).buffer}async onVerify(e,t,r,s){const i=QI.getAlgorithmName(t.algorithm.hash);return 0===cI().createHmac(i,yI(t).data).update(oI.Buffer.from(s)).digest().compare(oI.Buffer.from(r))}async onImportKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=Tb.fromJSON(t,{targetSchema:Av});break;case"raw":n=new Av,n.data=oI.Buffer.from(t);break;default:throw new Lb("format: Must be 'jwk' or 'raw'")}return n.algorithm={hash:{name:r.hash.name},name:this.name,length:n.data.length<<3},n.extractable=s,n.usages=i,mI(n)}async onExportKey(e,t){switch(e.toLowerCase()){case"jwk":return Ub.toJSON(yI(t));case"raw":return new Uint8Array(yI(t).data).buffer;default:throw new Lb("format: Must be 'jwk' or 'raw'")}}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof Av))throw new TypeError("key: Is not HMAC CryptoKey")}}class vv extends hI{}class wv extends YA{async onImportKey(e,t,r,s,i){if("raw"!==e.toLowerCase())throw new Lb("Operation not supported");const n=new vv;return n.data=oI.Buffer.from(t),n.algorithm={name:this.name},n.extractable=s,n.usages=i,mI(n)}async onDeriveBits(e,t,r){const s=e.hash.name.replace("-",""),i=cI().createHash(s).digest().length,n=r/8,o=zg.toUint8Array(e.info),a=cI().createHmac(s,zg.toUint8Array(e.salt)).update(zg.toUint8Array(yI(t).data)).digest(),c=[oI.Buffer.alloc(0)],l=Math.ceil(n/i)+1;for(let e=1;e<l;++e)c.push(cI().createHmac(s,a).update(oI.Buffer.concat([c[e-1],o,oI.Buffer.from([e])])).digest());return oI.Buffer.concat(c).slice(0,n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(yI(e)instanceof vv))throw new TypeError("key: Is not HKDF CryptoKey")}}class Sv{static digest(e,t){const r=cI().createHash(e.name.toLowerCase(),{outputLength:e.length}).update(oI.Buffer.from(t)).digest();return new Uint8Array(r).buffer}}class Ev extends ZA{async onDigest(e,t){return Sv.digest(e,t)}}class Cv extends eI{async onDigest(e,t){return Sv.digest(e,t)}}class kv extends nI{constructor(){var e;super(),this.providers.set(new bI),this.providers.set(new xI),this.providers.set(new _I),this.providers.set(new kI),this.providers.set(new BI),this.providers.set(new RI),cI().getCiphers().includes("des-cbc")&&this.providers.set(new TI),this.providers.set(new NI),this.providers.set(new HI),this.providers.set(new KI),this.providers.set(new VI),this.providers.set(new FI),this.providers.set(new rv),this.providers.set(new sv),this.providers.set(new zI),this.providers.set(new WI),this.providers.set(new JI),this.providers.set(new YI),this.providers.set(new bv),this.providers.set(new Iv),this.providers.set(new wv);const t=null===(e=/^v(\d+)/.exec(vd.version))||void 0===e?void 0:e[1];t&&parseInt(t,10)>=12&&(this.providers.set(new Ev),this.providers.set(new Cv));const r=cI().getHashes();r.includes("sha3-256")&&this.providers.set(new XI),r.includes("sha3-384")&&this.providers.set(new ZI),r.includes("sha3-512")&&this.providers.set(new ev),t&&parseInt(t,10)>=14&&(this.providers.set(new lv),this.providers.set(new hv),this.providers.set(new pv),this.providers.set(new yv))}}var xv,_v,Bv;o(909);class Rv{static isIPv4(e){return/^(\d{1,3}\.){3}\d{1,3}$/.test(e)}static parseIPv4(e){const t=e.split(".");if(4!==t.length)throw new Error("Invalid IPv4 address");return t.map(e=>{const t=parseInt(e,10);if(isNaN(t)||t<0||t>255)throw new Error("Invalid IPv4 address part");return t})}static parseIPv6(e){const t=this.expandIPv6(e).split(":");if(8!==t.length)throw new Error("Invalid IPv6 address");return t.reduce((e,t)=>{const r=parseInt(t,16);if(isNaN(r)||r<0||r>65535)throw new Error("Invalid IPv6 address part");return e.push(r>>8&255),e.push(255&r),e},[])}static expandIPv6(e){if(!e.includes("::"))return e;const t=e.split("::");if(t.length>2)throw new Error("Invalid IPv6 address");const r=t[0]?t[0].split(":"):[],s=t[1]?t[1].split(":"):[],i=8-(r.length+s.length);if(i<0)throw new Error("Invalid IPv6 address");return[...r,...Array(i).fill("0"),...s].join(":")}static formatIPv6(e){const t=[];for(let r=0;r<16;r+=2)t.push((e[r]<<8|e[r+1]).toString(16));return this.compressIPv6(t.join(":"))}static compressIPv6(e){const t=e.split(":");let r=-1,s=0,i=-1,n=0;for(let e=0;e<t.length;e++)"0"===t[e]?(-1===i&&(i=e),n++):(n>s&&(r=i,s=n),i=-1,n=0);return n>s&&(r=i,s=n),s>1?`${t.slice(0,r).join(":")}::${t.slice(r+s).join(":")}`:e}static parseCIDR(e){const[t,r]=e.split("/"),s=parseInt(r,10);if(this.isIPv4(t)){if(s<0||s>32)throw new Error("Invalid IPv4 prefix length");return[this.parseIPv4(t),s]}if(s<0||s>128)throw new Error("Invalid IPv6 prefix length");return[this.parseIPv6(t),s]}static decodeIP(e){if(64===e.length&&0===parseInt(e,16))return"::/0";if(16!==e.length)return e;const t=parseInt(e.slice(8),16).toString(2).split("").reduce((e,t)=>e+ +t,0);let r=e.slice(0,8).replace(/(.{2})/g,e=>`${parseInt(e,16)}.`);return r=r.slice(0,-1),`${r}/${t}`}static toString(e){const t=new Uint8Array(e);if(4===t.length)return Array.from(t).join(".");if(16===t.length)return this.formatIPv6(t);if(8===t.length||32===t.length){const e=t.length/2,r=t.slice(0,e),s=t.slice(e);if(t.every(e=>0===e))return 8===t.length?"0.0.0.0/0":"::/0";const i=s.reduce((e,t)=>e+(t.toString(2).match(/1/g)||[]).length,0);return 8===t.length?`${Array.from(r).join(".")}/${i}`:`${this.formatIPv6(r)}/${i}`}return this.decodeIP(tp.ToHex(e))}static fromString(e){if(e.includes("/")){const[t,r]=this.parseCIDR(e),s=new Uint8Array(t.length);let i=r;for(let e=0;e<s.length;e++)i>=8?(s[e]=255,i-=8):i>0&&(s[e]=255<<8-i,i=0);const n=new Uint8Array(2*t.length);return n.set(t,0),n.set(s,t.length),n.buffer}const t=this.isIPv4(e)?this.parseIPv4(e):this.parseIPv6(e);return new Uint8Array(t).buffer}}let Ov=class{constructor(e={}){Object.assign(this,e)}toString(){return this.bmpString||this.printableString||this.teletexString||this.universalString||this.utf8String||""}};gb([cb({type:vy.TeletexString})],Ov.prototype,"teletexString",void 0),gb([cb({type:vy.PrintableString})],Ov.prototype,"printableString",void 0),gb([cb({type:vy.UniversalString})],Ov.prototype,"universalString",void 0),gb([cb({type:vy.Utf8String})],Ov.prototype,"utf8String",void 0),gb([cb({type:vy.BmpString})],Ov.prototype,"bmpString",void 0),Ov=gb([ab({type:Iy.Choice})],Ov);let Uv=class extends Ov{constructor(e={}){super(e),Object.assign(this,e)}toString(){return this.ia5String||(this.anyValue?tp.ToHex(this.anyValue):super.toString())}};gb([cb({type:vy.IA5String})],Uv.prototype,"ia5String",void 0),gb([cb({type:vy.Any})],Uv.prototype,"anyValue",void 0),Uv=gb([ab({type:Iy.Choice})],Uv);class Tv{constructor(e={}){this.type="",this.value=new Uv,Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Tv.prototype,"type",void 0),gb([cb({type:Uv})],Tv.prototype,"value",void 0);let Nv=xv=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,xv.prototype)}};Nv=xv=gb([ab({type:Iy.Set,itemType:Tv})],Nv);let Dv=_v=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,_v.prototype)}};Dv=_v=gb([ab({type:Iy.Sequence,itemType:Nv})],Dv);let Mv=Bv=class extends Dv{constructor(e){super(e),Object.setPrototypeOf(this,Bv.prototype)}};Mv=Bv=gb([ab({type:Iy.Sequence})],Mv);const Pv={fromASN:e=>Rv.toString(Lm.fromASN(e)),toASN:e=>Lm.toASN(Rv.fromString(e))};class Lv{constructor(e={}){this.typeId="",this.value=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Lv.prototype,"typeId",void 0),gb([cb({type:vy.Any,context:0})],Lv.prototype,"value",void 0);class Hv{constructor(e={}){this.partyName=new Ov,Object.assign(this,e)}}gb([cb({type:Ov,optional:!0,context:0,implicit:!0})],Hv.prototype,"nameAssigner",void 0),gb([cb({type:Ov,context:1,implicit:!0})],Hv.prototype,"partyName",void 0);let Kv=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Lv,context:0,implicit:!0})],Kv.prototype,"otherName",void 0),gb([cb({type:vy.IA5String,context:1,implicit:!0})],Kv.prototype,"rfc822Name",void 0),gb([cb({type:vy.IA5String,context:2,implicit:!0})],Kv.prototype,"dNSName",void 0),gb([cb({type:vy.Any,context:3,implicit:!0})],Kv.prototype,"x400Address",void 0),gb([cb({type:Mv,context:4,implicit:!1})],Kv.prototype,"directoryName",void 0),gb([cb({type:Hv,context:5})],Kv.prototype,"ediPartyName",void 0),gb([cb({type:vy.IA5String,context:6,implicit:!0})],Kv.prototype,"uniformResourceIdentifier",void 0),gb([cb({type:vy.OctetString,context:7,implicit:!0,converter:Pv})],Kv.prototype,"iPAddress",void 0),gb([cb({type:vy.ObjectIdentifier,context:8,implicit:!0})],Kv.prototype,"registeredID",void 0),Kv=gb([ab({type:Iy.Choice})],Kv);const Qv="1.3.6.1.5.5.7",Vv=`${Qv}.3`,Fv=`${Qv}.48`,$v=`${Fv}.1`,jv=`${Fv}.2`,Gv=`${Fv}.3`,qv=`${Fv}.5`,zv="2.5.29";var Wv;const Jv=`${Qv}.1.1`;class Yv{constructor(e={}){this.accessMethod="",this.accessLocation=new Kv,Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Yv.prototype,"accessMethod",void 0),gb([cb({type:Kv})],Yv.prototype,"accessLocation",void 0);let Xv=Wv=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Wv.prototype)}};Xv=Wv=gb([ab({type:Iy.Sequence,itemType:Yv})],Xv);const Zv=`${zv}.35`;class ew extends Rm{}class tw{constructor(e={}){e&&Object.assign(this,e)}}gb([cb({type:ew,context:0,optional:!0,implicit:!0})],tw.prototype,"keyIdentifier",void 0),gb([cb({type:Kv,context:1,optional:!0,implicit:!0,repeated:"sequence"})],tw.prototype,"authorityCertIssuer",void 0),gb([cb({type:vy.Integer,context:2,optional:!0,implicit:!0,converter:Nm})],tw.prototype,"authorityCertSerialNumber",void 0);const rw=`${zv}.19`;class sw{constructor(e={}){this.cA=!1,Object.assign(this,e)}}var iw;gb([cb({type:vy.Boolean,defaultValue:!1})],sw.prototype,"cA",void 0),gb([cb({type:vy.Integer,optional:!0})],sw.prototype,"pathLenConstraint",void 0);let nw=iw=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,iw.prototype)}};var ow;nw=iw=gb([ab({type:Iy.Sequence,itemType:Kv})],nw);let aw=ow=class extends nw{constructor(e){super(e),Object.setPrototypeOf(this,ow.prototype)}};var cw;aw=ow=gb([ab({type:Iy.Sequence})],aw);const lw=`${zv}.32`;let hw=class{constructor(e={}){Object.assign(this,e)}toString(){return this.ia5String||this.visibleString||this.bmpString||this.utf8String||""}};gb([cb({type:vy.IA5String})],hw.prototype,"ia5String",void 0),gb([cb({type:vy.VisibleString})],hw.prototype,"visibleString",void 0),gb([cb({type:vy.BmpString})],hw.prototype,"bmpString",void 0),gb([cb({type:vy.Utf8String})],hw.prototype,"utf8String",void 0),hw=gb([ab({type:Iy.Choice})],hw);class uw{constructor(e={}){this.organization=new hw,this.noticeNumbers=[],Object.assign(this,e)}}gb([cb({type:hw})],uw.prototype,"organization",void 0),gb([cb({type:vy.Integer,repeated:"sequence"})],uw.prototype,"noticeNumbers",void 0);class dw{constructor(e={}){Object.assign(this,e)}}gb([cb({type:uw,optional:!0})],dw.prototype,"noticeRef",void 0),gb([cb({type:hw,optional:!0})],dw.prototype,"explicitText",void 0);let fw=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:vy.IA5String})],fw.prototype,"cPSuri",void 0),gb([cb({type:dw})],fw.prototype,"userNotice",void 0),fw=gb([ab({type:Iy.Choice})],fw);class gw{constructor(e={}){this.policyQualifierId="",this.qualifier=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],gw.prototype,"policyQualifierId",void 0),gb([cb({type:vy.Any})],gw.prototype,"qualifier",void 0);class pw{constructor(e={}){this.policyIdentifier="",Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],pw.prototype,"policyIdentifier",void 0),gb([cb({type:gw,repeated:"sequence",optional:!0})],pw.prototype,"policyQualifiers",void 0);let yw=cw=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,cw.prototype)}};yw=cw=gb([ab({type:Iy.Sequence,itemType:pw})],yw);let mw=class{constructor(e=0){this.value=e}};gb([cb({type:vy.Integer})],mw.prototype,"value",void 0),mw=gb([ab({type:Iy.Choice})],mw);let bw=class extends mw{};var Aw;bw=gb([ab({type:Iy.Choice})],bw);const Iw=`${zv}.31`;var vw;!function(e){e[e.unused=1]="unused",e[e.keyCompromise=2]="keyCompromise",e[e.cACompromise=4]="cACompromise",e[e.affiliationChanged=8]="affiliationChanged",e[e.superseded=16]="superseded",e[e.cessationOfOperation=32]="cessationOfOperation",e[e.certificateHold=64]="certificateHold",e[e.privilegeWithdrawn=128]="privilegeWithdrawn",e[e.aACompromise=256]="aACompromise"}(vw||(vw={}));class ww extends Bm{toJSON(){const e=[],t=this.toNumber();return t&vw.aACompromise&&e.push("aACompromise"),t&vw.affiliationChanged&&e.push("affiliationChanged"),t&vw.cACompromise&&e.push("cACompromise"),t&vw.certificateHold&&e.push("certificateHold"),t&vw.cessationOfOperation&&e.push("cessationOfOperation"),t&vw.keyCompromise&&e.push("keyCompromise"),t&vw.privilegeWithdrawn&&e.push("privilegeWithdrawn"),t&vw.superseded&&e.push("superseded"),t&vw.unused&&e.push("unused"),e}toString(){return`[${this.toJSON().join(", ")}]`}}let Sw=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Kv,context:0,repeated:"sequence",implicit:!0})],Sw.prototype,"fullName",void 0),gb([cb({type:Nv,context:1,implicit:!0})],Sw.prototype,"nameRelativeToCRLIssuer",void 0),Sw=gb([ab({type:Iy.Choice})],Sw);class Ew{constructor(e={}){Object.assign(this,e)}}gb([cb({type:Sw,context:0,optional:!0})],Ew.prototype,"distributionPoint",void 0),gb([cb({type:ww,context:1,optional:!0,implicit:!0})],Ew.prototype,"reasons",void 0),gb([cb({type:Kv,context:2,optional:!0,repeated:"sequence",implicit:!0})],Ew.prototype,"cRLIssuer",void 0);let Cw=Aw=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Aw.prototype)}};var kw;Cw=Aw=gb([ab({type:Iy.Sequence,itemType:Ew})],Cw);let xw=kw=class extends Cw{constructor(e){super(e),Object.setPrototypeOf(this,kw.prototype)}};xw=kw=gb([ab({type:Iy.Sequence,itemType:Ew})],xw);class _w{constructor(e={}){this.onlyContainsUserCerts=_w.ONLY,this.onlyContainsCACerts=_w.ONLY,this.indirectCRL=_w.ONLY,this.onlyContainsAttributeCerts=_w.ONLY,Object.assign(this,e)}}var Bw;_w.ONLY=!1,gb([cb({type:Sw,context:0,optional:!0})],_w.prototype,"distributionPoint",void 0),gb([cb({type:vy.Boolean,context:1,defaultValue:_w.ONLY,implicit:!0})],_w.prototype,"onlyContainsUserCerts",void 0),gb([cb({type:vy.Boolean,context:2,defaultValue:_w.ONLY,implicit:!0})],_w.prototype,"onlyContainsCACerts",void 0),gb([cb({type:ww,context:3,optional:!0,implicit:!0})],_w.prototype,"onlySomeReasons",void 0),gb([cb({type:vy.Boolean,context:4,defaultValue:_w.ONLY,implicit:!0})],_w.prototype,"indirectCRL",void 0),gb([cb({type:vy.Boolean,context:5,defaultValue:_w.ONLY,implicit:!0})],_w.prototype,"onlyContainsAttributeCerts",void 0),function(e){e[e.unspecified=0]="unspecified",e[e.keyCompromise=1]="keyCompromise",e[e.cACompromise=2]="cACompromise",e[e.affiliationChanged=3]="affiliationChanged",e[e.superseded=4]="superseded",e[e.cessationOfOperation=5]="cessationOfOperation",e[e.certificateHold=6]="certificateHold",e[e.removeFromCRL=8]="removeFromCRL",e[e.privilegeWithdrawn=9]="privilegeWithdrawn",e[e.aACompromise=10]="aACompromise"}(Bw||(Bw={}));let Rw=class{constructor(e=Bw.unspecified){this.reason=Bw.unspecified,this.reason=e}toJSON(){return Bw[this.reason]}toString(){return this.toJSON()}};var Ow;gb([cb({type:vy.Enumerated})],Rw.prototype,"reason",void 0),Rw=gb([ab({type:Iy.Choice})],Rw);const Uw=`${zv}.37`;let Tw=Ow=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Ow.prototype)}};Tw=Ow=gb([ab({type:Iy.Sequence,itemType:vy.ObjectIdentifier})],Tw);const Nw=`${Vv}.1`,Dw=`${Vv}.2`,Mw=`${Vv}.3`,Pw=`${Vv}.4`,Lw=`${Vv}.8`,Hw=`${Vv}.9`;let Kw=class{constructor(e=new ArrayBuffer(0)){this.value=e}};gb([cb({type:vy.Integer,converter:Nm})],Kw.prototype,"value",void 0),Kw=gb([ab({type:Iy.Choice})],Kw);let Qw=class{constructor(e){this.value=new Date,e&&(this.value=e)}};var Vw;gb([cb({type:vy.GeneralizedTime})],Qw.prototype,"value",void 0),Qw=gb([ab({type:Iy.Choice})],Qw);let Fw=Vw=class extends nw{constructor(e){super(e),Object.setPrototypeOf(this,Vw.prototype)}};Fw=Vw=gb([ab({type:Iy.Sequence})],Fw);const $w=`${zv}.15`;var jw,Gw;!function(e){e[e.digitalSignature=1]="digitalSignature",e[e.nonRepudiation=2]="nonRepudiation",e[e.keyEncipherment=4]="keyEncipherment",e[e.dataEncipherment=8]="dataEncipherment",e[e.keyAgreement=16]="keyAgreement",e[e.keyCertSign=32]="keyCertSign",e[e.cRLSign=64]="cRLSign",e[e.encipherOnly=128]="encipherOnly",e[e.decipherOnly=256]="decipherOnly"}(jw||(jw={}));class qw extends Bm{toJSON(){const e=this.toNumber(),t=[];return e&jw.cRLSign&&t.push("crlSign"),e&jw.dataEncipherment&&t.push("dataEncipherment"),e&jw.decipherOnly&&t.push("decipherOnly"),e&jw.digitalSignature&&t.push("digitalSignature"),e&jw.encipherOnly&&t.push("encipherOnly"),e&jw.keyAgreement&&t.push("keyAgreement"),e&jw.keyCertSign&&t.push("keyCertSign"),e&jw.keyEncipherment&&t.push("keyEncipherment"),e&jw.nonRepudiation&&t.push("nonRepudiation"),t}toString(){return`[${this.toJSON().join(", ")}]`}}class zw{constructor(e={}){this.base=new Kv,this.minimum=0,Object.assign(this,e)}}gb([cb({type:Kv})],zw.prototype,"base",void 0),gb([cb({type:vy.Integer,context:0,defaultValue:0,implicit:!0})],zw.prototype,"minimum",void 0),gb([cb({type:vy.Integer,context:1,optional:!0,implicit:!0})],zw.prototype,"maximum",void 0);let Ww=Gw=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Gw.prototype)}};Ww=Gw=gb([ab({type:Iy.Sequence,itemType:zw})],Ww);class Jw{constructor(e={}){Object.assign(this,e)}}gb([cb({type:Ww,context:0,optional:!0,implicit:!0})],Jw.prototype,"permittedSubtrees",void 0),gb([cb({type:Ww,context:1,optional:!0,implicit:!0})],Jw.prototype,"excludedSubtrees",void 0);class Yw{constructor(e={}){Object.assign(this,e)}}var Xw;gb([cb({type:vy.Integer,context:0,implicit:!0,optional:!0,converter:Nm})],Yw.prototype,"requireExplicitPolicy",void 0),gb([cb({type:vy.Integer,context:1,implicit:!0,optional:!0,converter:Nm})],Yw.prototype,"inhibitPolicyMapping",void 0);class Zw{constructor(e={}){this.issuerDomainPolicy="",this.subjectDomainPolicy="",Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Zw.prototype,"issuerDomainPolicy",void 0),gb([cb({type:vy.ObjectIdentifier})],Zw.prototype,"subjectDomainPolicy",void 0);let eS=Xw=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Xw.prototype)}};var tS;eS=Xw=gb([ab({type:Iy.Sequence,itemType:Zw})],eS);const rS=`${zv}.17`;let sS=tS=class extends nw{constructor(e){super(e),Object.setPrototypeOf(this,tS.prototype)}};sS=tS=gb([ab({type:Iy.Sequence})],sS);class iS{constructor(e={}){this.type="",this.values=[],Object.assign(this,e)}}var nS;gb([cb({type:vy.ObjectIdentifier})],iS.prototype,"type",void 0),gb([cb({type:vy.Any,repeated:"set"})],iS.prototype,"values",void 0);let oS=nS=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,nS.prototype)}};oS=nS=gb([ab({type:Iy.Sequence,itemType:iS})],oS);const aS=`${zv}.14`;class cS extends ew{}class lS{constructor(e={}){Object.assign(this,e)}}var hS,uS;gb([cb({type:vy.GeneralizedTime,context:0,implicit:!0,optional:!0})],lS.prototype,"notBefore",void 0),gb([cb({type:vy.GeneralizedTime,context:1,implicit:!0,optional:!0})],lS.prototype,"notAfter",void 0),function(e){e[e.keyUpdateAllowed=1]="keyUpdateAllowed",e[e.newExtensions=2]="newExtensions",e[e.pKIXCertificate=4]="pKIXCertificate"}(hS||(hS={}));class dS extends Bm{toJSON(){const e=[],t=this.toNumber();return t&hS.pKIXCertificate&&e.push("pKIXCertificate"),t&hS.newExtensions&&e.push("newExtensions"),t&hS.keyUpdateAllowed&&e.push("keyUpdateAllowed"),e}toString(){return`[${this.toJSON().join(", ")}]`}}class fS{constructor(e={}){this.entrustVers="",this.entrustInfoFlags=new dS,Object.assign(this,e)}}gb([cb({type:vy.GeneralString})],fS.prototype,"entrustVers",void 0),gb([cb({type:dS})],fS.prototype,"entrustInfoFlags",void 0);let gS=uS=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,uS.prototype)}};gS=uS=gb([ab({type:Iy.Sequence,itemType:Yv})],gS);class pS{constructor(e={}){this.algorithm="",Object.assign(this,e)}isEqual(e){return e instanceof pS&&e.algorithm==this.algorithm&&(e.parameters&&this.parameters&&sp(e.parameters,this.parameters)||e.parameters===this.parameters)}}gb([cb({type:vy.ObjectIdentifier})],pS.prototype,"algorithm",void 0),gb([cb({type:vy.Any,optional:!0})],pS.prototype,"parameters",void 0);class yS{constructor(e={}){this.algorithm=new pS,this.subjectPublicKey=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:pS})],yS.prototype,"algorithm",void 0),gb([cb({type:vy.BitString})],yS.prototype,"subjectPublicKey",void 0);let mS=class{constructor(e){if(e)if("string"==typeof e||"number"==typeof e||e instanceof Date){const t=new Date(e);t.getUTCFullYear()>2049?this.generalTime=t:this.utcTime=t}else Object.assign(this,e)}getTime(){const e=this.utcTime||this.generalTime;if(!e)throw new Error("Cannot get time from CHOICE object");return e}};gb([cb({type:vy.UTCTime})],mS.prototype,"utcTime",void 0),gb([cb({type:vy.GeneralizedTime})],mS.prototype,"generalTime",void 0),mS=gb([ab({type:Iy.Choice})],mS);class bS{constructor(e){this.notBefore=new mS(new Date),this.notAfter=new mS(new Date),e&&(this.notBefore=new mS(e.notBefore),this.notAfter=new mS(e.notAfter))}}var AS;gb([cb({type:mS})],bS.prototype,"notBefore",void 0),gb([cb({type:mS})],bS.prototype,"notAfter",void 0);class IS{constructor(e={}){this.extnID="",this.critical=IS.CRITICAL,this.extnValue=new Rm,Object.assign(this,e)}}IS.CRITICAL=!1,gb([cb({type:vy.ObjectIdentifier})],IS.prototype,"extnID",void 0),gb([cb({type:vy.Boolean,defaultValue:IS.CRITICAL})],IS.prototype,"critical",void 0),gb([cb({type:Rm})],IS.prototype,"extnValue",void 0);let vS=AS=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,AS.prototype)}};var wS;vS=AS=gb([ab({type:Iy.Sequence,itemType:IS})],vS),function(e){e[e.v1=0]="v1",e[e.v2=1]="v2",e[e.v3=2]="v3"}(wS||(wS={}));class SS{constructor(e={}){this.version=wS.v1,this.serialNumber=new ArrayBuffer(0),this.signature=new pS,this.issuer=new Mv,this.validity=new bS,this.subject=new Mv,this.subjectPublicKeyInfo=new yS,Object.assign(this,e)}}gb([cb({type:vy.Integer,context:0,defaultValue:wS.v1})],SS.prototype,"version",void 0),gb([cb({type:vy.Integer,converter:Nm})],SS.prototype,"serialNumber",void 0),gb([cb({type:pS})],SS.prototype,"signature",void 0),gb([cb({type:Mv})],SS.prototype,"issuer",void 0),gb([cb({type:bS})],SS.prototype,"validity",void 0),gb([cb({type:Mv})],SS.prototype,"subject",void 0),gb([cb({type:yS})],SS.prototype,"subjectPublicKeyInfo",void 0),gb([cb({type:vy.BitString,context:1,implicit:!0,optional:!0})],SS.prototype,"issuerUniqueID",void 0),gb([cb({type:vy.BitString,context:2,implicit:!0,optional:!0})],SS.prototype,"subjectUniqueID",void 0),gb([cb({type:vS,context:3,optional:!0})],SS.prototype,"extensions",void 0);class ES{constructor(e={}){this.tbsCertificate=new SS,this.signatureAlgorithm=new pS,this.signatureValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:SS})],ES.prototype,"tbsCertificate",void 0),gb([cb({type:pS})],ES.prototype,"signatureAlgorithm",void 0),gb([cb({type:vy.BitString})],ES.prototype,"signatureValue",void 0);class CS{constructor(e={}){this.userCertificate=new ArrayBuffer(0),this.revocationDate=new mS,Object.assign(this,e)}}gb([cb({type:vy.Integer,converter:Nm})],CS.prototype,"userCertificate",void 0),gb([cb({type:mS})],CS.prototype,"revocationDate",void 0),gb([cb({type:IS,optional:!0,repeated:"sequence"})],CS.prototype,"crlEntryExtensions",void 0);class kS{constructor(e={}){this.signature=new pS,this.issuer=new Mv,this.thisUpdate=new mS,Object.assign(this,e)}}gb([cb({type:vy.Integer,optional:!0})],kS.prototype,"version",void 0),gb([cb({type:pS})],kS.prototype,"signature",void 0),gb([cb({type:Mv})],kS.prototype,"issuer",void 0),gb([cb({type:mS})],kS.prototype,"thisUpdate",void 0),gb([cb({type:mS,optional:!0})],kS.prototype,"nextUpdate",void 0),gb([cb({type:CS,repeated:"sequence",optional:!0})],kS.prototype,"revokedCertificates",void 0),gb([cb({type:IS,optional:!0,context:0,repeated:"sequence"})],kS.prototype,"crlExtensions",void 0);class xS{constructor(e={}){this.tbsCertList=new kS,this.signatureAlgorithm=new pS,this.signature=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:kS})],xS.prototype,"tbsCertList",void 0),gb([cb({type:pS})],xS.prototype,"signatureAlgorithm",void 0),gb([cb({type:vy.BitString})],xS.prototype,"signature",void 0);class _S{constructor(e={}){this.issuer=new Mv,this.serialNumber=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:Mv})],_S.prototype,"issuer",void 0),gb([cb({type:vy.Integer,converter:Nm})],_S.prototype,"serialNumber",void 0);let BS=class{constructor(e={}){Object.assign(this,e)}};var RS;gb([cb({type:cS,context:0,implicit:!0})],BS.prototype,"subjectKeyIdentifier",void 0),gb([cb({type:_S})],BS.prototype,"issuerAndSerialNumber",void 0),BS=gb([ab({type:Iy.Choice})],BS),function(e){e[e.v0=0]="v0",e[e.v1=1]="v1",e[e.v2=2]="v2",e[e.v3=3]="v3",e[e.v4=4]="v4",e[e.v5=5]="v5"}(RS||(RS={}));let OS=class extends pS{};OS=gb([ab({type:Iy.Sequence})],OS);let US=class extends pS{};US=gb([ab({type:Iy.Sequence})],US);let TS=class extends pS{};TS=gb([ab({type:Iy.Sequence})],TS);let NS=class extends pS{};NS=gb([ab({type:Iy.Sequence})],NS);let DS=class extends pS{};DS=gb([ab({type:Iy.Sequence})],DS);let MS=class extends pS{};MS=gb([ab({type:Iy.Sequence})],MS);class PS{constructor(e={}){this.attrType="",this.attrValues=[],Object.assign(this,e)}}var LS;gb([cb({type:vy.ObjectIdentifier})],PS.prototype,"attrType",void 0),gb([cb({type:vy.Any,repeated:"set"})],PS.prototype,"attrValues",void 0);class HS{constructor(e={}){this.version=RS.v0,this.sid=new BS,this.digestAlgorithm=new OS,this.signatureAlgorithm=new US,this.signature=new Rm,Object.assign(this,e)}}gb([cb({type:vy.Integer})],HS.prototype,"version",void 0),gb([cb({type:BS})],HS.prototype,"sid",void 0),gb([cb({type:OS})],HS.prototype,"digestAlgorithm",void 0),gb([cb({type:PS,repeated:"set",context:0,implicit:!0,optional:!0})],HS.prototype,"signedAttrs",void 0),gb([cb({type:US})],HS.prototype,"signatureAlgorithm",void 0),gb([cb({type:Rm})],HS.prototype,"signature",void 0),gb([cb({type:PS,repeated:"set",context:1,implicit:!0,optional:!0})],HS.prototype,"unsignedAttrs",void 0);let KS=LS=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,LS.prototype)}};KS=LS=gb([ab({type:Iy.Set,itemType:HS})],KS);let QS=class extends mS{};QS=gb([ab({type:Iy.Choice})],QS);let VS=class extends HS{};VS=gb([ab({type:Iy.Sequence})],VS);class FS{constructor(e={}){this.acIssuer=new Kv,this.acSerial=0,this.attrs=[],Object.assign(this,e)}}var $S;gb([cb({type:Kv})],FS.prototype,"acIssuer",void 0),gb([cb({type:vy.Integer})],FS.prototype,"acSerial",void 0),gb([cb({type:iS,repeated:"sequence"})],FS.prototype,"attrs",void 0);let jS=$S=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,$S.prototype)}};jS=$S=gb([ab({type:Iy.Sequence,itemType:vy.ObjectIdentifier})],jS);class GS{constructor(e={}){this.permitUnSpecified=!0,Object.assign(this,e)}}gb([cb({type:vy.Integer,optional:!0})],GS.prototype,"pathLenConstraint",void 0),gb([cb({type:jS,implicit:!0,context:0,optional:!0})],GS.prototype,"permittedAttrs",void 0),gb([cb({type:jS,implicit:!0,context:1,optional:!0})],GS.prototype,"excludedAttrs",void 0),gb([cb({type:vy.Boolean,defaultValue:!0})],GS.prototype,"permitUnSpecified",void 0);class qS{constructor(e={}){this.issuer=new nw,this.serial=new ArrayBuffer(0),this.issuerUID=new ArrayBuffer(0),Object.assign(this,e)}}var zS;gb([cb({type:nw})],qS.prototype,"issuer",void 0),gb([cb({type:vy.Integer,converter:Nm})],qS.prototype,"serial",void 0),gb([cb({type:vy.BitString,optional:!0})],qS.prototype,"issuerUID",void 0),function(e){e[e.publicKey=0]="publicKey",e[e.publicKeyCert=1]="publicKeyCert",e[e.otherObjectTypes=2]="otherObjectTypes"}(zS||(zS={}));class WS{constructor(e={}){this.digestedObjectType=zS.publicKey,this.digestAlgorithm=new pS,this.objectDigest=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.Enumerated})],WS.prototype,"digestedObjectType",void 0),gb([cb({type:vy.ObjectIdentifier,optional:!0})],WS.prototype,"otherObjectTypeID",void 0),gb([cb({type:pS})],WS.prototype,"digestAlgorithm",void 0),gb([cb({type:vy.BitString})],WS.prototype,"objectDigest",void 0);class JS{constructor(e={}){Object.assign(this,e)}}gb([cb({type:nw,optional:!0})],JS.prototype,"issuerName",void 0),gb([cb({type:qS,context:0,implicit:!0,optional:!0})],JS.prototype,"baseCertificateID",void 0),gb([cb({type:WS,context:1,implicit:!0,optional:!0})],JS.prototype,"objectDigestInfo",void 0);let YS=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Kv,repeated:"sequence"})],YS.prototype,"v1Form",void 0),gb([cb({type:JS,context:0,implicit:!0})],YS.prototype,"v2Form",void 0),YS=gb([ab({type:Iy.Choice})],YS);class XS{constructor(e={}){this.notBeforeTime=new Date,this.notAfterTime=new Date,Object.assign(this,e)}}gb([cb({type:vy.GeneralizedTime})],XS.prototype,"notBeforeTime",void 0),gb([cb({type:vy.GeneralizedTime})],XS.prototype,"notAfterTime",void 0);class ZS{constructor(e={}){Object.assign(this,e)}}var eE,tE,rE;gb([cb({type:qS,implicit:!0,context:0,optional:!0})],ZS.prototype,"baseCertificateID",void 0),gb([cb({type:nw,implicit:!0,context:1,optional:!0})],ZS.prototype,"entityName",void 0),gb([cb({type:WS,implicit:!0,context:2,optional:!0})],ZS.prototype,"objectDigestInfo",void 0),function(e){e[e.v2=1]="v2"}(eE||(eE={}));class sE{constructor(e={}){this.version=eE.v2,this.holder=new ZS,this.issuer=new YS,this.signature=new pS,this.serialNumber=new ArrayBuffer(0),this.attrCertValidityPeriod=new XS,this.attributes=[],Object.assign(this,e)}}gb([cb({type:vy.Integer})],sE.prototype,"version",void 0),gb([cb({type:ZS})],sE.prototype,"holder",void 0),gb([cb({type:YS})],sE.prototype,"issuer",void 0),gb([cb({type:pS})],sE.prototype,"signature",void 0),gb([cb({type:vy.Integer,converter:Nm})],sE.prototype,"serialNumber",void 0),gb([cb({type:XS})],sE.prototype,"attrCertValidityPeriod",void 0),gb([cb({type:iS,repeated:"sequence"})],sE.prototype,"attributes",void 0),gb([cb({type:vy.BitString,optional:!0})],sE.prototype,"issuerUniqueID",void 0),gb([cb({type:vS,optional:!0})],sE.prototype,"extensions",void 0);class iE{constructor(e={}){this.acinfo=new sE,this.signatureAlgorithm=new pS,this.signatureValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:sE})],iE.prototype,"acinfo",void 0),gb([cb({type:pS})],iE.prototype,"signatureAlgorithm",void 0),gb([cb({type:vy.BitString})],iE.prototype,"signatureValue",void 0),function(e){e[e.unmarked=1]="unmarked",e[e.unclassified=2]="unclassified",e[e.restricted=4]="restricted",e[e.confidential=8]="confidential",e[e.secret=16]="secret",e[e.topSecret=32]="topSecret"}(tE||(tE={}));class nE extends Bm{}class oE{constructor(e={}){this.type="",this.value=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier,implicit:!0,context:0})],oE.prototype,"type",void 0),gb([cb({type:vy.Any,implicit:!0,context:1})],oE.prototype,"value",void 0);class aE{constructor(e={}){this.policyId="",this.classList=new nE(tE.unclassified),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],aE.prototype,"policyId",void 0),gb([cb({type:nE,defaultValue:new nE(tE.unclassified)})],aE.prototype,"classList",void 0),gb([cb({type:oE,repeated:"set"})],aE.prototype,"securityCategories",void 0);class cE{constructor(e={}){Object.assign(this,e)}}gb([cb({type:Rm})],cE.prototype,"cotets",void 0),gb([cb({type:vy.ObjectIdentifier})],cE.prototype,"oid",void 0),gb([cb({type:vy.Utf8String})],cE.prototype,"string",void 0);class lE{constructor(e={}){this.values=[],Object.assign(this,e)}}gb([cb({type:nw,implicit:!0,context:0,optional:!0})],lE.prototype,"policyAuthority",void 0),gb([cb({type:cE,repeated:"sequence"})],lE.prototype,"values",void 0);class hE{constructor(e={}){this.targetCertificate=new qS,Object.assign(this,e)}}gb([cb({type:qS})],hE.prototype,"targetCertificate",void 0),gb([cb({type:Kv,optional:!0})],hE.prototype,"targetName",void 0),gb([cb({type:WS,optional:!0})],hE.prototype,"certDigestInfo",void 0);let uE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Kv,context:0,implicit:!0})],uE.prototype,"targetName",void 0),gb([cb({type:Kv,context:1,implicit:!0})],uE.prototype,"targetGroup",void 0),gb([cb({type:hE,context:2,implicit:!0})],uE.prototype,"targetCert",void 0),uE=gb([ab({type:Iy.Choice})],uE);let dE=rE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,rE.prototype)}};var fE;dE=rE=gb([ab({type:Iy.Sequence,itemType:uE})],dE);let gE=fE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,fE.prototype)}};gE=fE=gb([ab({type:Iy.Sequence,itemType:dE})],gE);class pE{constructor(e={}){Object.assign(this,e)}}gb([cb({type:nw,implicit:!0,context:0,optional:!0})],pE.prototype,"roleAuthority",void 0),gb([cb({type:Kv,implicit:!0,context:1})],pE.prototype,"roleName",void 0);class yE{constructor(e={}){this.service=new Kv,this.ident=new Kv,Object.assign(this,e)}}var mE;gb([cb({type:Kv})],yE.prototype,"service",void 0),gb([cb({type:Kv})],yE.prototype,"ident",void 0),gb([cb({type:Rm,optional:!0})],yE.prototype,"authInfo",void 0);class bE{constructor(e={}){this.otherCertFormat="",this.otherCert=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],bE.prototype,"otherCertFormat",void 0),gb([cb({type:vy.Any})],bE.prototype,"otherCert",void 0);let AE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:ES})],AE.prototype,"certificate",void 0),gb([cb({type:iE,context:2,implicit:!0})],AE.prototype,"v2AttrCert",void 0),gb([cb({type:bE,context:3,implicit:!0})],AE.prototype,"other",void 0),AE=gb([ab({type:Iy.Choice})],AE);let IE=mE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,mE.prototype)}};IE=mE=gb([ab({type:Iy.Set,itemType:AE})],IE);class vE{constructor(e={}){this.contentType="",this.content=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],vE.prototype,"contentType",void 0),gb([cb({type:vy.Any,context:0})],vE.prototype,"content",void 0);let wE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Rm})],wE.prototype,"single",void 0),gb([cb({type:vy.Any})],wE.prototype,"any",void 0),wE=gb([ab({type:Iy.Choice})],wE);class SE{constructor(e={}){this.eContentType="",Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],SE.prototype,"eContentType",void 0),gb([cb({type:wE,context:0,optional:!0})],SE.prototype,"eContent",void 0);let EE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:Rm,context:0,implicit:!0,optional:!0})],EE.prototype,"value",void 0),gb([cb({type:Rm,converter:Hm,context:0,implicit:!0,optional:!0,repeated:"sequence"})],EE.prototype,"constructedValue",void 0),EE=gb([ab({type:Iy.Choice})],EE);class CE{constructor(e={}){this.contentType="",this.contentEncryptionAlgorithm=new NS,Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],CE.prototype,"contentType",void 0),gb([cb({type:NS})],CE.prototype,"contentEncryptionAlgorithm",void 0),gb([cb({type:EE,optional:!0})],CE.prototype,"encryptedContent",void 0);class kE{constructor(e={}){this.keyAttrId="",Object.assign(this,e)}}var xE;gb([cb({type:vy.ObjectIdentifier})],kE.prototype,"keyAttrId",void 0),gb([cb({type:vy.Any,optional:!0})],kE.prototype,"keyAttr",void 0);class _E{constructor(e={}){this.subjectKeyIdentifier=new cS,Object.assign(this,e)}}gb([cb({type:cS})],_E.prototype,"subjectKeyIdentifier",void 0),gb([cb({type:vy.GeneralizedTime,optional:!0})],_E.prototype,"date",void 0),gb([cb({type:kE,optional:!0})],_E.prototype,"other",void 0);let BE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:_E,context:0,implicit:!0,optional:!0})],BE.prototype,"rKeyId",void 0),gb([cb({type:_S,optional:!0})],BE.prototype,"issuerAndSerialNumber",void 0),BE=gb([ab({type:Iy.Choice})],BE);class RE{constructor(e={}){this.rid=new BE,this.encryptedKey=new Rm,Object.assign(this,e)}}gb([cb({type:BE})],RE.prototype,"rid",void 0),gb([cb({type:Rm})],RE.prototype,"encryptedKey",void 0);let OE=xE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,xE.prototype)}};OE=xE=gb([ab({type:Iy.Sequence,itemType:RE})],OE);class UE{constructor(e={}){this.algorithm=new pS,this.publicKey=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:pS})],UE.prototype,"algorithm",void 0),gb([cb({type:vy.BitString})],UE.prototype,"publicKey",void 0);let TE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:cS,context:0,implicit:!0,optional:!0})],TE.prototype,"subjectKeyIdentifier",void 0),gb([cb({type:UE,context:1,implicit:!0,optional:!0})],TE.prototype,"originatorKey",void 0),gb([cb({type:_S,optional:!0})],TE.prototype,"issuerAndSerialNumber",void 0),TE=gb([ab({type:Iy.Choice})],TE);class NE{constructor(e={}){this.version=RS.v3,this.originator=new TE,this.keyEncryptionAlgorithm=new TS,this.recipientEncryptedKeys=new OE,Object.assign(this,e)}}gb([cb({type:vy.Integer})],NE.prototype,"version",void 0),gb([cb({type:TE,context:0})],NE.prototype,"originator",void 0),gb([cb({type:Rm,context:1,optional:!0})],NE.prototype,"ukm",void 0),gb([cb({type:TS})],NE.prototype,"keyEncryptionAlgorithm",void 0),gb([cb({type:OE})],NE.prototype,"recipientEncryptedKeys",void 0);let DE=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:cS,context:0,implicit:!0})],DE.prototype,"subjectKeyIdentifier",void 0),gb([cb({type:_S})],DE.prototype,"issuerAndSerialNumber",void 0),DE=gb([ab({type:Iy.Choice})],DE);class ME{constructor(e={}){this.version=RS.v0,this.rid=new DE,this.keyEncryptionAlgorithm=new TS,this.encryptedKey=new Rm,Object.assign(this,e)}}gb([cb({type:vy.Integer})],ME.prototype,"version",void 0),gb([cb({type:DE})],ME.prototype,"rid",void 0),gb([cb({type:TS})],ME.prototype,"keyEncryptionAlgorithm",void 0),gb([cb({type:Rm})],ME.prototype,"encryptedKey",void 0);class PE{constructor(e={}){this.keyIdentifier=new Rm,Object.assign(this,e)}}gb([cb({type:Rm})],PE.prototype,"keyIdentifier",void 0),gb([cb({type:vy.GeneralizedTime,optional:!0})],PE.prototype,"date",void 0),gb([cb({type:kE,optional:!0})],PE.prototype,"other",void 0);class LE{constructor(e={}){this.version=RS.v4,this.kekid=new PE,this.keyEncryptionAlgorithm=new TS,this.encryptedKey=new Rm,Object.assign(this,e)}}gb([cb({type:vy.Integer})],LE.prototype,"version",void 0),gb([cb({type:PE})],LE.prototype,"kekid",void 0),gb([cb({type:TS})],LE.prototype,"keyEncryptionAlgorithm",void 0),gb([cb({type:Rm})],LE.prototype,"encryptedKey",void 0);class HE{constructor(e={}){this.version=RS.v0,this.keyEncryptionAlgorithm=new TS,this.encryptedKey=new Rm,Object.assign(this,e)}}gb([cb({type:vy.Integer})],HE.prototype,"version",void 0),gb([cb({type:MS,context:0,optional:!0})],HE.prototype,"keyDerivationAlgorithm",void 0),gb([cb({type:TS})],HE.prototype,"keyEncryptionAlgorithm",void 0),gb([cb({type:Rm})],HE.prototype,"encryptedKey",void 0);class KE{constructor(e={}){this.oriType="",this.oriValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],KE.prototype,"oriType",void 0),gb([cb({type:vy.Any})],KE.prototype,"oriValue",void 0);let QE=class{constructor(e={}){Object.assign(this,e)}};var VE;gb([cb({type:ME,optional:!0})],QE.prototype,"ktri",void 0),gb([cb({type:NE,context:1,implicit:!0,optional:!0})],QE.prototype,"kari",void 0),gb([cb({type:LE,context:2,implicit:!0,optional:!0})],QE.prototype,"kekri",void 0),gb([cb({type:HE,context:3,implicit:!0,optional:!0})],QE.prototype,"pwri",void 0),gb([cb({type:KE,context:4,implicit:!0,optional:!0})],QE.prototype,"ori",void 0),QE=gb([ab({type:Iy.Choice})],QE);let FE=VE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,VE.prototype)}};var $E;FE=VE=gb([ab({type:Iy.Set,itemType:QE})],FE);class jE{constructor(e={}){this.otherRevInfoFormat="",this.otherRevInfo=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],jE.prototype,"otherRevInfoFormat",void 0),gb([cb({type:vy.Any})],jE.prototype,"otherRevInfo",void 0);let GE=class{constructor(e={}){this.other=new jE,Object.assign(this,e)}};gb([cb({type:jE,context:1,implicit:!0})],GE.prototype,"other",void 0),GE=gb([ab({type:Iy.Choice})],GE);let qE=$E=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,$E.prototype)}};qE=$E=gb([ab({type:Iy.Set,itemType:GE})],qE);class zE{constructor(e={}){Object.assign(this,e)}}var WE;gb([cb({type:IE,context:0,implicit:!0,optional:!0})],zE.prototype,"certs",void 0),gb([cb({type:qE,context:1,implicit:!0,optional:!0})],zE.prototype,"crls",void 0);let JE=WE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,WE.prototype)}};JE=WE=gb([ab({type:Iy.Set,itemType:PS})],JE);class YE{constructor(e={}){this.version=RS.v0,this.recipientInfos=new FE,this.encryptedContentInfo=new CE,Object.assign(this,e)}}gb([cb({type:vy.Integer})],YE.prototype,"version",void 0),gb([cb({type:zE,context:0,implicit:!0,optional:!0})],YE.prototype,"originatorInfo",void 0),gb([cb({type:FE})],YE.prototype,"recipientInfos",void 0),gb([cb({type:CE})],YE.prototype,"encryptedContentInfo",void 0),gb([cb({type:JE,context:1,implicit:!0,optional:!0})],YE.prototype,"unprotectedAttrs",void 0);const XE="1.2.840.113549.1.7.2";var ZE;let eC=ZE=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,ZE.prototype)}};eC=ZE=gb([ab({type:Iy.Set,itemType:OS})],eC);class tC{constructor(e={}){this.version=RS.v0,this.digestAlgorithms=new eC,this.encapContentInfo=new SE,this.signerInfos=new KS,Object.assign(this,e)}}gb([cb({type:vy.Integer})],tC.prototype,"version",void 0),gb([cb({type:eC})],tC.prototype,"digestAlgorithms",void 0),gb([cb({type:SE})],tC.prototype,"encapContentInfo",void 0),gb([cb({type:IE,context:0,implicit:!0,optional:!0})],tC.prototype,"certificates",void 0),gb([cb({type:qE,context:1,implicit:!0,optional:!0})],tC.prototype,"crls",void 0),gb([cb({type:KS})],tC.prototype,"signerInfos",void 0);const rC="1.2.840.10045.2.1",sC="1.2.840.10045.4.1",iC="1.2.840.10045.4.3.1",nC="1.2.840.10045.4.3.2",oC="1.2.840.10045.4.3.3",aC="1.2.840.10045.4.3.4",cC="1.2.840.10045.3.1.7",lC="1.3.132.0.34",hC="1.3.132.0.35";function uC(e){return new pS({algorithm:e})}const dC=uC(sC),fC=(uC(iC),uC(nC)),gC=uC(oC),pC=uC(aC);let yC=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:vy.ObjectIdentifier})],yC.prototype,"fieldType",void 0),gb([cb({type:vy.Any})],yC.prototype,"parameters",void 0),yC=gb([ab({type:Iy.Sequence})],yC);let mC=class{constructor(e={}){Object.assign(this,e)}};var bC;gb([cb({type:vy.OctetString})],mC.prototype,"a",void 0),gb([cb({type:vy.OctetString})],mC.prototype,"b",void 0),gb([cb({type:vy.BitString,optional:!0})],mC.prototype,"seed",void 0),mC=gb([ab({type:Iy.Sequence})],mC),function(e){e[e.ecpVer1=1]="ecpVer1"}(bC||(bC={}));let AC=class{constructor(e={}){this.version=bC.ecpVer1,Object.assign(this,e)}};gb([cb({type:vy.Integer})],AC.prototype,"version",void 0),gb([cb({type:yC})],AC.prototype,"fieldID",void 0),gb([cb({type:mC})],AC.prototype,"curve",void 0),gb([cb({type:class extends Rm{}})],AC.prototype,"base",void 0),gb([cb({type:vy.Integer,converter:Nm})],AC.prototype,"order",void 0),gb([cb({type:vy.Integer,optional:!0})],AC.prototype,"cofactor",void 0),AC=gb([ab({type:Iy.Sequence})],AC);let IC=class{constructor(e={}){Object.assign(this,e)}};gb([cb({type:vy.ObjectIdentifier})],IC.prototype,"namedCurve",void 0),gb([cb({type:vy.Null})],IC.prototype,"implicitCurve",void 0),gb([cb({type:AC})],IC.prototype,"specifiedCurve",void 0),IC=gb([ab({type:Iy.Choice})],IC);class vC{constructor(e={}){this.version=1,this.privateKey=new Rm,Object.assign(this,e)}}gb([cb({type:vy.Integer})],vC.prototype,"version",void 0),gb([cb({type:Rm})],vC.prototype,"privateKey",void 0),gb([cb({type:IC,context:0,optional:!0})],vC.prototype,"parameters",void 0),gb([cb({type:vy.BitString,context:1,optional:!0})],vC.prototype,"publicKey",void 0);class wC{constructor(e={}){this.r=new ArrayBuffer(0),this.s=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.Integer,converter:Nm})],wC.prototype,"r",void 0),gb([cb({type:vy.Integer,converter:Nm})],wC.prototype,"s",void 0);const SC="1.2.840.113549.1.1",EC=`${SC}.1`,CC=`${SC}.7`,kC=`${SC}.9`,xC=`${SC}.10`,_C=`${SC}.2`,BC=`${SC}.4`,RC=`${SC}.5`,OC=`${SC}.14`,UC=`${SC}.11`,TC=`${SC}.12`,NC=`${SC}.13`,DC=`${SC}.15`,MC=`${SC}.16`,PC="1.3.14.3.2.26",LC="2.16.840.1.101.3.4.2.4",HC="2.16.840.1.101.3.4.2.1",KC="2.16.840.1.101.3.4.2.2",QC="2.16.840.1.101.3.4.2.3",VC=`${SC}.8`;function FC(e){return new pS({algorithm:e,parameters:null})}FC("1.2.840.113549.2.2"),FC("1.2.840.113549.2.5");const $C=FC(PC),jC=(FC(LC),FC(HC),FC(KC),FC(QC),FC("2.16.840.1.101.3.4.2.5"),FC("2.16.840.1.101.3.4.2.6"),new pS({algorithm:VC,parameters:fb.serialize($C)})),GC=new pS({algorithm:kC,parameters:fb.serialize(Lm.toASN(new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]).buffer))});FC(EC),FC(_C),FC(BC),FC(RC),FC(DC),FC(MC),FC(TC),FC(NC),FC(DC),FC(MC);class qC{constructor(e={}){this.hashAlgorithm=new pS($C),this.maskGenAlgorithm=new pS({algorithm:VC,parameters:fb.serialize($C)}),this.pSourceAlgorithm=new pS(GC),Object.assign(this,e)}}gb([cb({type:pS,context:0,defaultValue:$C})],qC.prototype,"hashAlgorithm",void 0),gb([cb({type:pS,context:1,defaultValue:jC})],qC.prototype,"maskGenAlgorithm",void 0),gb([cb({type:pS,context:2,defaultValue:GC})],qC.prototype,"pSourceAlgorithm",void 0),new pS({algorithm:CC,parameters:fb.serialize(new qC)});class zC{constructor(e={}){this.hashAlgorithm=new pS($C),this.maskGenAlgorithm=new pS({algorithm:VC,parameters:fb.serialize($C)}),this.saltLength=20,this.trailerField=1,Object.assign(this,e)}}gb([cb({type:pS,context:0,defaultValue:$C})],zC.prototype,"hashAlgorithm",void 0),gb([cb({type:pS,context:1,defaultValue:jC})],zC.prototype,"maskGenAlgorithm",void 0),gb([cb({type:vy.Integer,context:2,defaultValue:20})],zC.prototype,"saltLength",void 0),gb([cb({type:vy.Integer,context:3,defaultValue:1})],zC.prototype,"trailerField",void 0),new pS({algorithm:xC,parameters:fb.serialize(new zC)});class WC{constructor(e={}){this.digestAlgorithm=new pS,this.digest=new Rm,Object.assign(this,e)}}var JC;gb([cb({type:pS})],WC.prototype,"digestAlgorithm",void 0),gb([cb({type:Rm})],WC.prototype,"digest",void 0);class YC{constructor(e={}){this.prime=new ArrayBuffer(0),this.exponent=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.Integer,converter:Nm})],YC.prototype,"prime",void 0),gb([cb({type:vy.Integer,converter:Nm})],YC.prototype,"exponent",void 0),gb([cb({type:vy.Integer,converter:Nm})],YC.prototype,"coefficient",void 0);let XC=JC=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,JC.prototype)}};XC=JC=gb([ab({type:Iy.Sequence,itemType:YC})],XC);class ZC{constructor(e={}){this.version=0,this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),this.privateExponent=new ArrayBuffer(0),this.prime1=new ArrayBuffer(0),this.prime2=new ArrayBuffer(0),this.exponent1=new ArrayBuffer(0),this.exponent2=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.Integer})],ZC.prototype,"version",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"modulus",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"publicExponent",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"privateExponent",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"prime1",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"prime2",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"exponent1",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"exponent2",void 0),gb([cb({type:vy.Integer,converter:Nm})],ZC.prototype,"coefficient",void 0),gb([cb({type:XC,optional:!0})],ZC.prototype,"otherPrimeInfos",void 0);class ek{constructor(e={}){this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),Object.assign(this,e)}}var tk;gb([cb({type:vy.Integer,converter:Nm})],ek.prototype,"modulus",void 0),gb([cb({type:vy.Integer,converter:Nm})],ek.prototype,"publicExponent",void 0),function(e){e[e.Transient=0]="Transient",e[e.Singleton=1]="Singleton",e[e.ResolutionScoped=2]="ResolutionScoped",e[e.ContainerScoped=3]="ContainerScoped"}(tk||(tk={}));const rk=tk;var sk=function(e,t){return sk=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},sk(e,t)};function ik(e,t){function r(){this.constructor=e}sk(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function nk(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],s=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&s>=e.length&&(e=void 0),{value:e&&e[s++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function ok(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var s,i,n=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(s=n.next()).done;)o.push(s.value)}catch(e){i={error:e}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o}function ak(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(ok(arguments[t]));return e}function ck(e){return!!e.useClass}function lk(e){return!!e.useFactory}var hk=function(){function e(e){this.wrap=e,this.reflectMethods=["get","getPrototypeOf","setPrototypeOf","getOwnPropertyDescriptor","defineProperty","has","set","deleteProperty","apply","construct","ownKeys"]}return e.prototype.createProxy=function(e){var t,r=this,s=!1;return new Proxy({},this.createHandler(function(){return s||(t=e(r.wrap()),s=!0),t}))},e.prototype.createHandler=function(e){var t={};return this.reflectMethods.forEach(function(r){t[r]=function(){for(var t=[],s=0;s<arguments.length;s++)t[s]=arguments[s];return t[0]=e(),Reflect[r].apply(void 0,ak(t))}}),t},e}();function uk(e){return"string"==typeof e||"symbol"==typeof e}function dk(e){return"object"==typeof e&&"token"in e&&"transform"in e}function fk(e){return!!e.useToken}function gk(e){return null!=e.useValue}var pk=function(){function e(){this._registryMap=new Map}return e.prototype.entries=function(){return this._registryMap.entries()},e.prototype.getAll=function(e){return this.ensure(e),this._registryMap.get(e)},e.prototype.get=function(e){this.ensure(e);var t=this._registryMap.get(e);return t[t.length-1]||null},e.prototype.set=function(e,t){this.ensure(e),this._registryMap.get(e).push(t)},e.prototype.setAll=function(e,t){this._registryMap.set(e,t)},e.prototype.has=function(e){return this.ensure(e),this._registryMap.get(e).length>0},e.prototype.clear=function(){this._registryMap.clear()},e.prototype.ensure=function(e){this._registryMap.has(e)||this._registryMap.set(e,[])},e}();const yk=pk,mk=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ik(t,e),t}(yk),bk=function(){this.scopedResolutions=new Map};var Ak=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ik(t,e),t}(yk),Ik=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ik(t,e),t}(yk);const vk=function(){this.preResolution=new Ak,this.postResolution=new Ik};var wk=new Map,Sk=function(){function e(e){this.parent=e,this._registry=new mk,this.interceptors=new vk,this.disposed=!1,this.disposables=new Set}return e.prototype.register=function(e,t,r){var s;if(void 0===r&&(r={lifecycle:rk.Transient}),this.ensureNotDisposed(),s=function(e){return ck(e)||gk(e)||fk(e)||lk(e)}(t)?t:{useClass:t},fk(s))for(var i=[e],n=s;null!=n;){var o=n.useToken;if(i.includes(o))throw new Error("Token registration cycle detected! "+ak(i,[o]).join(" -> "));i.push(o);var a=this._registry.get(o);n=a&&fk(a.provider)?a.provider:null}if((r.lifecycle===rk.Singleton||r.lifecycle==rk.ContainerScoped||r.lifecycle==rk.ResolutionScoped)&&(gk(s)||lk(s)))throw new Error('Cannot use lifecycle "'+rk[r.lifecycle]+'" with ValueProviders or FactoryProviders');return this._registry.set(e,{provider:s,options:r}),this},e.prototype.registerType=function(e,t){return this.ensureNotDisposed(),uk(t)?this.register(e,{useToken:t}):this.register(e,{useClass:t})},e.prototype.registerInstance=function(e,t){return this.ensureNotDisposed(),this.register(e,{useValue:t})},e.prototype.registerSingleton=function(e,t){if(this.ensureNotDisposed(),uk(e)){if(uk(t))return this.register(e,{useToken:t},{lifecycle:rk.Singleton});if(t)return this.register(e,{useClass:t},{lifecycle:rk.Singleton});throw new Error('Cannot register a type name as a singleton without a "to" token')}var r=e;return t&&!uk(t)&&(r=t),this.register(e,{useClass:r},{lifecycle:rk.Singleton})},e.prototype.resolve=function(e,t,r){void 0===t&&(t=new bk),void 0===r&&(r=!1),this.ensureNotDisposed();var s=this.getRegistration(e);if(!s&&uk(e)){if(r)return;throw new Error('Attempted to resolve unregistered dependency token: "'+e.toString()+'"')}if(this.executePreResolutionInterceptor(e,"Single"),s){var i=this.resolveRegistration(s,t);return this.executePostResolutionInterceptor(e,i,"Single"),i}if(function(e){return"function"==typeof e||e instanceof hk}(e))return i=this.construct(e,t),this.executePostResolutionInterceptor(e,i,"Single"),i;throw new Error("Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function.")},e.prototype.executePreResolutionInterceptor=function(e,t){var r,s;if(this.interceptors.preResolution.has(e)){var i=[];try{for(var n=nk(this.interceptors.preResolution.getAll(e)),o=n.next();!o.done;o=n.next()){var a=o.value;"Once"!=a.options.frequency&&i.push(a),a.callback(e,t)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(s=n.return)&&s.call(n)}finally{if(r)throw r.error}}this.interceptors.preResolution.setAll(e,i)}},e.prototype.executePostResolutionInterceptor=function(e,t,r){var s,i;if(this.interceptors.postResolution.has(e)){var n=[];try{for(var o=nk(this.interceptors.postResolution.getAll(e)),a=o.next();!a.done;a=o.next()){var c=a.value;"Once"!=c.options.frequency&&n.push(c),c.callback(e,t,r)}}catch(e){s={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(s)throw s.error}}this.interceptors.postResolution.setAll(e,n)}},e.prototype.resolveRegistration=function(e,t){if(this.ensureNotDisposed(),e.options.lifecycle===rk.ResolutionScoped&&t.scopedResolutions.has(e))return t.scopedResolutions.get(e);var r,s=e.options.lifecycle===rk.Singleton,i=e.options.lifecycle===rk.ContainerScoped,n=s||i;return r=gk(e.provider)?e.provider.useValue:fk(e.provider)?n?e.instance||(e.instance=this.resolve(e.provider.useToken,t)):this.resolve(e.provider.useToken,t):ck(e.provider)?n?e.instance||(e.instance=this.construct(e.provider.useClass,t)):this.construct(e.provider.useClass,t):lk(e.provider)?e.provider.useFactory(this):this.construct(e.provider,t),e.options.lifecycle===rk.ResolutionScoped&&t.scopedResolutions.set(e,r),r},e.prototype.resolveAll=function(e,t,r){var s=this;void 0===t&&(t=new bk),void 0===r&&(r=!1),this.ensureNotDisposed();var i=this.getAllRegistrations(e);if(!i&&uk(e)){if(r)return[];throw new Error('Attempted to resolve unregistered dependency token: "'+e.toString()+'"')}if(this.executePreResolutionInterceptor(e,"All"),i){var n=i.map(function(e){return s.resolveRegistration(e,t)});return this.executePostResolutionInterceptor(e,n,"All"),n}var o=[this.construct(e,t)];return this.executePostResolutionInterceptor(e,o,"All"),o},e.prototype.isRegistered=function(e,t){return void 0===t&&(t=!1),this.ensureNotDisposed(),this._registry.has(e)||t&&(this.parent||!1)&&this.parent.isRegistered(e,!0)},e.prototype.reset=function(){this.ensureNotDisposed(),this._registry.clear(),this.interceptors.preResolution.clear(),this.interceptors.postResolution.clear()},e.prototype.clearInstances=function(){var e,t;this.ensureNotDisposed();try{for(var r=nk(this._registry.entries()),s=r.next();!s.done;s=r.next()){var i=ok(s.value,2),n=i[0],o=i[1];this._registry.setAll(n,o.filter(function(e){return!gk(e.provider)}).map(function(e){return e.instance=void 0,e}))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},e.prototype.createChildContainer=function(){var t,r;this.ensureNotDisposed();var s=new e(this);try{for(var i=nk(this._registry.entries()),n=i.next();!n.done;n=i.next()){var o=ok(n.value,2),a=o[0],c=o[1];c.some(function(e){return e.options.lifecycle===rk.ContainerScoped})&&s._registry.setAll(a,c.map(function(e){return e.options.lifecycle===rk.ContainerScoped?{provider:e.provider,options:e.options}:e}))}}catch(e){t={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return s},e.prototype.beforeResolution=function(e,t,r){void 0===r&&(r={frequency:"Always"}),this.interceptors.preResolution.set(e,{callback:t,options:r})},e.prototype.afterResolution=function(e,t,r){void 0===r&&(r={frequency:"Always"}),this.interceptors.postResolution.set(e,{callback:t,options:r})},e.prototype.dispose=function(){return function(e,t,r,s){return new(r||(r=Promise))(function(i,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function a(e){try{c(s.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((s=s.apply(e,t||[])).next())})}(this,void 0,void 0,function(){var e;return function(e,t){var r,s,i,n,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return n={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function a(n){return function(a){return function(n){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,s&&(i=2&n[0]?s.return:n[0]?s.throw||((i=s.return)&&i.call(s),0):s.next)&&!(i=i.call(s,n[1])).done)return i;switch(s=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return o.label++,{value:n[1],done:!1};case 5:o.label++,s=n[1],n=[0];continue;case 7:n=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==n[0]&&2!==n[0])){o=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){o.label=n[1];break}if(6===n[0]&&o.label<i[1]){o.label=i[1],i=n;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(n);break}i[2]&&o.ops.pop(),o.trys.pop();continue}n=t.call(e,o)}catch(e){n=[6,e],s=0}finally{r=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,a])}}}(this,function(t){switch(t.label){case 0:return this.disposed=!0,e=[],this.disposables.forEach(function(t){var r=t.dispose();r&&e.push(r)}),[4,Promise.all(e)];case 1:return t.sent(),[2]}})})},e.prototype.getRegistration=function(e){return this.isRegistered(e)?this._registry.get(e):this.parent?this.parent.getRegistration(e):null},e.prototype.getAllRegistrations=function(e){return this.isRegistered(e)?this._registry.getAll(e):this.parent?this.parent.getAllRegistrations(e):null},e.prototype.construct=function(e,t){var r=this;if(e instanceof hk)return e.createProxy(function(e){return r.resolve(e,t)});var s,i=function(){var s=wk.get(e);if(!s||0===s.length){if(0===e.length)return new e;throw new Error('TypeInfo not known for "'+e.name+'"')}var i=s.map(r.resolveParams(t,e));return new(e.bind.apply(e,ak([void 0],i)))}();return"function"!=typeof(s=i).dispose||s.dispose.length>0||this.disposables.add(i),i},e.prototype.resolveParams=function(e,t){var r=this;return function(s,i){var n,o,a,c;try{return"object"==typeof(c=s)&&"token"in c&&"multiple"in c?dk(s)?s.multiple?(n=r.resolve(s.transform)).transform.apply(n,ak([r.resolveAll(s.token,new bk,s.isOptional)],s.transformArgs)):(o=r.resolve(s.transform)).transform.apply(o,ak([r.resolve(s.token,e,s.isOptional)],s.transformArgs)):s.multiple?r.resolveAll(s.token,new bk,s.isOptional):r.resolve(s.token,e,s.isOptional):dk(s)?(a=r.resolve(s.transform,e)).transform.apply(a,ak([r.resolve(s.token,e)],s.transformArgs)):r.resolve(s,e)}catch(e){throw new Error(function(e,t,r){var s,i,n=ok(e.toString().match(/constructor\(([\w, ]+)\)/)||[],2)[1];return function(e,t,r){return void 0===r&&(r=" "),ak([e],t.message.split("\n").map(function(e){return r+e})).join("\n")}("Cannot inject the dependency "+(i=t,(null===(s=void 0===n?null:n)?"at position #"+i:'"'+s.split(",")[i].trim()+'" at position #'+i)+' of "')+e.name+'" constructor. Reason:',r)}(t,i,e))}}},e.prototype.ensureNotDisposed=function(){if(this.disposed)throw new Error("This container has been disposed, you cannot interact with a disposed container")},e}(),Ek=new Sk;const Ck=function(e){return function(t){wk.set(t,function(e){var t=Reflect.getMetadata("design:paramtypes",e)||[],r=Reflect.getOwnMetadata("injectionTokens",e)||{};return Object.keys(r).forEach(function(e){t[+e]=r[e]}),t}(t)),e&&e.token&&(Array.isArray(e.token)?e.token.forEach(function(e){Ek.register(e,t)}):Ek.register(e.token,t))}};if("undefined"==typeof Reflect||!Reflect.getMetadata)throw new Error("tsyringe requires a reflect polyfill. Please add 'import \"reflect-metadata\"' to the top of your entry point.");var kk;class xk{constructor(e={}){this.attrId="",this.attrValues=[],Object.assign(e)}}gb([cb({type:vy.ObjectIdentifier})],xk.prototype,"attrId",void 0),gb([cb({type:vy.Any,repeated:"set"})],xk.prototype,"attrValues",void 0);let _k=kk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,kk.prototype)}};var Bk;_k=kk=gb([ab({type:Iy.Sequence,itemType:xk})],_k);let Rk=Bk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Bk.prototype)}};Rk=Bk=gb([ab({type:Iy.Sequence,itemType:vE})],Rk);class Ok{constructor(e={}){this.certId="",this.certValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Ok.prototype,"certId",void 0),gb([cb({type:vy.Any,context:0})],Ok.prototype,"certValue",void 0);class Uk{constructor(e={}){this.crlId="",this.crltValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Uk.prototype,"crlId",void 0),gb([cb({type:vy.Any,context:0})],Uk.prototype,"crltValue",void 0);class Tk extends Rm{}class Nk{constructor(e={}){this.encryptionAlgorithm=new pS,this.encryptedData=new Tk,Object.assign(this,e)}}var Dk,Mk;gb([cb({type:pS})],Nk.prototype,"encryptionAlgorithm",void 0),gb([cb({type:Tk})],Nk.prototype,"encryptedData",void 0),function(e){e[e.v1=0]="v1"}(Mk||(Mk={}));class Pk extends Rm{}let Lk=Dk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Dk.prototype)}};Lk=Dk=gb([ab({type:Iy.Sequence,itemType:iS})],Lk);class Hk{constructor(e={}){this.version=Mk.v1,this.privateKeyAlgorithm=new pS,this.privateKey=new Pk,Object.assign(this,e)}}gb([cb({type:vy.Integer})],Hk.prototype,"version",void 0),gb([cb({type:pS})],Hk.prototype,"privateKeyAlgorithm",void 0),gb([cb({type:Pk})],Hk.prototype,"privateKey",void 0),gb([cb({type:Lk,implicit:!0,context:0,optional:!0})],Hk.prototype,"attributes",void 0);let Kk=class extends Hk{};Kk=gb([ab({type:Iy.Sequence})],Kk);let Qk=class extends Nk{};Qk=gb([ab({type:Iy.Sequence})],Qk);class Vk{constructor(e={}){this.secretTypeId="",this.secretValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Vk.prototype,"secretTypeId",void 0),gb([cb({type:vy.Any,context:0})],Vk.prototype,"secretValue",void 0);class Fk{constructor(e={}){this.mac=new WC,this.macSalt=new Rm,this.iterations=1,Object.assign(this,e)}}gb([cb({type:WC})],Fk.prototype,"mac",void 0),gb([cb({type:Rm})],Fk.prototype,"macSalt",void 0),gb([cb({type:vy.Integer,defaultValue:1})],Fk.prototype,"iterations",void 0);class $k{constructor(e={}){this.version=3,this.authSafe=new vE,this.macData=new Fk,Object.assign(this,e)}}var jk;gb([cb({type:vy.Integer})],$k.prototype,"version",void 0),gb([cb({type:vE})],$k.prototype,"authSafe",void 0),gb([cb({type:Fk,optional:!0})],$k.prototype,"macData",void 0);class Gk{constructor(e={}){this.bagId="",this.bagValue=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:vy.ObjectIdentifier})],Gk.prototype,"bagId",void 0),gb([cb({type:vy.Any,context:0})],Gk.prototype,"bagValue",void 0),gb([cb({type:xk,repeated:"set",optional:!0})],Gk.prototype,"bagAttributes",void 0);let qk=jk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,jk.prototype)}};var zk,Wk,Jk;qk=jk=gb([ab({type:Iy.Sequence,itemType:Gk})],qk);const Yk="1.2.840.113549.1.9",Xk=`${Yk}.7`,Zk=`${Yk}.14`;let ex=class extends Ov{constructor(e={}){super(e)}toString(){return{}.toString(),this.ia5String||super.toString()}};gb([cb({type:vy.IA5String})],ex.prototype,"ia5String",void 0),ex=gb([ab({type:Iy.Choice})],ex);let tx=class extends vE{};tx=gb([ab({type:Iy.Sequence})],tx);let rx=class extends $k{};rx=gb([ab({type:Iy.Sequence})],rx);let sx=class extends Nk{};sx=gb([ab({type:Iy.Sequence})],sx);let ix=class{constructor(e=""){this.value=e}toString(){return this.value}};gb([cb({type:vy.IA5String})],ix.prototype,"value",void 0),ix=gb([ab({type:Iy.Choice})],ix);let nx=class extends ex{};nx=gb([ab({type:Iy.Choice})],nx);let ox=class extends Ov{};ox=gb([ab({type:Iy.Choice})],ox);let ax=class{constructor(e=new Date){this.value=e}};gb([cb({type:vy.GeneralizedTime})],ax.prototype,"value",void 0),ax=gb([ab({type:Iy.Choice})],ax);let cx=class extends Ov{};cx=gb([ab({type:Iy.Choice})],cx);let lx=class{constructor(e="M"){this.value=e}toString(){return this.value}};gb([cb({type:vy.PrintableString})],lx.prototype,"value",void 0),lx=gb([ab({type:Iy.Choice})],lx);let hx=class{constructor(e=""){this.value=e}toString(){return this.value}};gb([cb({type:vy.PrintableString})],hx.prototype,"value",void 0),hx=gb([ab({type:Iy.Choice})],hx);let ux=class extends hx{};ux=gb([ab({type:Iy.Choice})],ux);let dx=class extends Ov{};dx=gb([ab({type:Iy.Choice})],dx);let fx=class{constructor(e=""){this.value=e}toString(){return this.value}};gb([cb({type:vy.ObjectIdentifier})],fx.prototype,"value",void 0),fx=gb([ab({type:Iy.Choice})],fx);let gx=class extends mS{};gx=gb([ab({type:Iy.Choice})],gx);let px=class{constructor(e=0){this.value=e}toString(){return this.value.toString()}};gb([cb({type:vy.Integer})],px.prototype,"value",void 0),px=gb([ab({type:Iy.Choice})],px);let yx=class extends HS{};yx=gb([ab({type:Iy.Sequence})],yx);let mx=class extends Ov{};mx=gb([ab({type:Iy.Choice})],mx);let bx=zk=class extends vS{constructor(e){super(e),Object.setPrototypeOf(this,zk.prototype)}};bx=zk=gb([ab({type:Iy.Sequence})],bx);let Ax=Wk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Wk.prototype)}};Ax=Wk=gb([ab({type:Iy.Set,itemType:PS})],Ax);let Ix=class{constructor(e=""){this.value=e}toString(){return this.value}};gb([cb({type:vy.BmpString})],Ix.prototype,"value",void 0),Ix=gb([ab({type:Iy.Choice})],Ix);let vx=class extends pS{};vx=gb([ab({type:Iy.Sequence})],vx);let wx=Jk=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Jk.prototype)}};var Sx;wx=Jk=gb([ab({type:Iy.Sequence,itemType:vx})],wx);let Ex=Sx=class extends db{constructor(e){super(e),Object.setPrototypeOf(this,Sx.prototype)}};Ex=Sx=gb([ab({type:Iy.Sequence,itemType:iS})],Ex);class Cx{constructor(e={}){this.version=0,this.subject=new Mv,this.subjectPKInfo=new yS,this.attributes=new Ex,Object.assign(this,e)}}gb([cb({type:vy.Integer})],Cx.prototype,"version",void 0),gb([cb({type:Mv})],Cx.prototype,"subject",void 0),gb([cb({type:yS})],Cx.prototype,"subjectPKInfo",void 0),gb([cb({type:Ex,implicit:!0,context:0})],Cx.prototype,"attributes",void 0);class kx{constructor(e={}){this.certificationRequestInfo=new Cx,this.signatureAlgorithm=new pS,this.signature=new ArrayBuffer(0),Object.assign(this,e)}}gb([cb({type:Cx})],kx.prototype,"certificationRequestInfo",void 0),gb([cb({type:pS})],kx.prototype,"signatureAlgorithm",void 0),gb([cb({type:vy.BitString})],kx.prototype,"signature",void 0);const xx="crypto.algorithm",_x="crypto.algorithmProvider";var Bx;Ek.registerSingleton(_x,class{getAlgorithms(){return Ek.resolveAll(xx)}toAsnAlgorithm(e){for(const t of this.getAlgorithms()){const r=t.toAsnAlgorithm(e);if(r)return r}if(/^[0-9.]+$/.test(e.name)){const t=new pS({algorithm:e.name});if("parameters"in e){const r=e;t.parameters=r.parameters}return t}throw new Error("Cannot convert WebCrypto algorithm to ASN.1 algorithm")}toWebAlgorithm(e){for(const t of this.getAlgorithms()){const r=t.toWebAlgorithm(e);if(r)return r}return{name:e.algorithm,parameters:e.parameters}}});const Rx="1.3.36.3.3.2.8.1.1",Ox=`${Rx}.1`,Ux=`${Rx}.2`,Tx=`${Rx}.3`,Nx=`${Rx}.4`,Dx=`${Rx}.5`,Mx=`${Rx}.6`,Px=`${Rx}.7`,Lx=`${Rx}.8`,Hx=`${Rx}.9`,Kx=`${Rx}.10`,Qx=`${Rx}.11`,Vx=`${Rx}.12`,Fx=`${Rx}.13`,$x=`${Rx}.14`,jx="brainpoolP160r1",Gx="brainpoolP160t1",qx="brainpoolP192r1",zx="brainpoolP192t1",Wx="brainpoolP224r1",Jx="brainpoolP224t1",Yx="brainpoolP256r1",Xx="brainpoolP256t1",Zx="brainpoolP320r1",e_="brainpoolP320t1",t_="brainpoolP384r1",r_="brainpoolP384t1",s_="brainpoolP512r1",i_="brainpoolP512t1",n_="ECDSA";let o_=Bx=class{toAsnAlgorithm(e){if(e.name.toLowerCase()===n_.toLowerCase())if("hash"in e)switch(("string"==typeof e.hash?e.hash:e.hash.name).toLowerCase()){case"sha-1":return dC;case"sha-256":return fC;case"sha-384":return gC;case"sha-512":return pC}else if("namedCurve"in e){let t="";switch(e.namedCurve){case"P-256":t=cC;break;case"K-256":t=Bx.SECP256K1;break;case"P-384":t=lC;break;case"P-521":t=hC;break;case jx:t=Ox;break;case Gx:t=Ux;break;case qx:t=Tx;break;case zx:t=Nx;break;case Wx:t=Dx;break;case Jx:t=Mx;break;case Yx:t=Px;break;case Xx:t=Lx;break;case Zx:t=Hx;break;case e_:t=Kx;break;case t_:t=Qx;break;case r_:t=Vx;break;case s_:t=Fx;break;case i_:t=$x}if(t)return new pS({algorithm:rC,parameters:fb.serialize(new IC({namedCurve:t}))})}return null}toWebAlgorithm(e){switch(e.algorithm){case sC:return{name:n_,hash:{name:"SHA-1"}};case nC:return{name:n_,hash:{name:"SHA-256"}};case oC:return{name:n_,hash:{name:"SHA-384"}};case aC:return{name:n_,hash:{name:"SHA-512"}};case rC:if(!e.parameters)throw new TypeError("Cannot get required parameters from EC algorithm");switch(fb.parse(e.parameters,IC).namedCurve){case cC:return{name:n_,namedCurve:"P-256"};case Bx.SECP256K1:return{name:n_,namedCurve:"K-256"};case lC:return{name:n_,namedCurve:"P-384"};case hC:return{name:n_,namedCurve:"P-521"};case Ox:return{name:n_,namedCurve:jx};case Ux:return{name:n_,namedCurve:Gx};case Tx:return{name:n_,namedCurve:qx};case Nx:return{name:n_,namedCurve:zx};case Dx:return{name:n_,namedCurve:Wx};case Mx:return{name:n_,namedCurve:Jx};case Px:return{name:n_,namedCurve:Yx};case Lx:return{name:n_,namedCurve:Xx};case Hx:return{name:n_,namedCurve:Zx};case Kx:return{name:n_,namedCurve:e_};case Qx:return{name:n_,namedCurve:t_};case Vx:return{name:n_,namedCurve:r_};case Fx:return{name:n_,namedCurve:s_};case $x:return{name:n_,namedCurve:i_}}}return null}};o_.SECP256K1="1.3.132.0.10",o_=Bx=gb([Ck()],o_),Ek.registerSingleton(xx,o_);const a_=Symbol("name"),c_=Symbol("value");class l_{constructor(e,t={},r=""){this[a_]=e,this[c_]=r;for(const e in t)this[e]=t[e]}}l_.NAME=a_,l_.VALUE=c_;class h_{static toString(e){return this.items[e]||e}}h_.items={[PC]:"sha1",[LC]:"sha224",[HC]:"sha256",[KC]:"sha384",[QC]:"sha512",[EC]:"rsaEncryption",[RC]:"sha1WithRSAEncryption",[OC]:"sha224WithRSAEncryption",[UC]:"sha256WithRSAEncryption",[TC]:"sha384WithRSAEncryption",[NC]:"sha512WithRSAEncryption",[rC]:"ecPublicKey",[sC]:"ecdsaWithSHA1",[iC]:"ecdsaWithSHA224",[nC]:"ecdsaWithSHA256",[oC]:"ecdsaWithSHA384",[aC]:"ecdsaWithSHA512",[Nw]:"TLS WWW server authentication",[Dw]:"TLS WWW client authentication",[Mw]:"Code Signing",[Pw]:"E-mail Protection",[Lw]:"Time Stamping",[Hw]:"OCSP Signing",[XE]:"Signed Data"};class u_{static serialize(e){return this.serializeObj(e).join("\n")}static pad(e=0){return"".padStart(2*e," ")}static serializeObj(e,t=0){const r=[];let s=this.pad(t++),i="";const n=e[l_.VALUE];n&&(i=` ${n}`),r.push(`${s}${e[l_.NAME]}:${i}`),s=this.pad(t);for(const i in e){if("symbol"==typeof i)continue;const n=e[i],o=i?`${i}: `:"";if("string"==typeof n||"number"==typeof n||"boolean"==typeof n)r.push(`${s}${o}${n}`);else if(n instanceof Date)r.push(`${s}${o}${n.toUTCString()}`);else if(Array.isArray(n))for(const e of n)e[l_.NAME]=i,r.push(...this.serializeObj(e,t));else if(n instanceof l_)n[l_.NAME]=i,r.push(...this.serializeObj(n,t));else if(zg.isBufferSource(n))i?(r.push(`${s}${o}`),r.push(...this.serializeBufferSource(n,t+1))):r.push(...this.serializeBufferSource(n,t));else{if(!("toTextObject"in n))throw new TypeError("Cannot serialize data in text format. Unsupported type.");{const e=n.toTextObject();e[l_.NAME]=i,r.push(...this.serializeObj(e,t))}}}return r}static serializeBufferSource(e,t=0){const r=this.pad(t),s=zg.toUint8Array(e),i=[];for(let e=0;e<s.length;){const t=[];for(let r=0;r<16&&e<s.length;r++){8===r&&t.push("");const i=s[e++].toString(16).padStart(2,"0");t.push(i)}i.push(`${r}${t.join(" ")}`)}return i}static serializeAlgorithm(e){return this.algorithmSerializer.toTextObject(e)}}u_.oidSerializer=h_,u_.algorithmSerializer=class{static toTextObject(e){const t=new l_("Algorithm Identifier",{},h_.toString(e.algorithm));if(e.parameters)switch(e.algorithm){case rC:{const r=(new o_).toWebAlgorithm(e);r&&"namedCurve"in r?t["Named Curve"]=r.namedCurve:t.Parameters=e.parameters;break}default:t.Parameters=e.parameters}return t}};class d_{constructor(...e){if(1===e.length){const t=e[0];this.rawData=fb.serialize(t),this.onInit(t)}else{const t=fb.parse(e[0],e[1]);this.rawData=zg.toArrayBuffer(e[0]),this.onInit(t)}}equal(e){return e instanceof d_&&sp(e.rawData,this.rawData)}toString(e="text"){switch(e){case"asn":return fb.toString(this.rawData);case"text":return u_.serialize(this.toTextObject());case"hex":return tp.ToHex(this.rawData);case"base64":return tp.ToBase64(this.rawData);case"base64url":return tp.ToBase64Url(this.rawData);default:throw TypeError("Argument 'format' is unsupported value")}}getTextName(){return this.constructor.NAME}toTextObject(){const e=this.toTextObjectEmpty();return e[""]=this.rawData,e}toTextObjectEmpty(e){return new l_(this.getTextName(),{},e)}}d_.NAME="ASN";class f_ extends d_{constructor(...e){let t;t=zg.isBufferSource(e[0])?zg.toArrayBuffer(e[0]):fb.serialize(new IS({extnID:e[0],critical:e[1],extnValue:new Rm(zg.toArrayBuffer(e[2]))})),super(t,IS)}onInit(e){this.type=e.extnID,this.critical=e.critical,this.value=e.extnValue.buffer}toTextObject(){const e=this.toTextObjectWithoutValue();return e[""]=this.value,e}toTextObjectWithoutValue(){const e=this.toTextObjectEmpty(this.critical?"critical":void 0);return e[l_.NAME]===f_.NAME&&(e[l_.NAME]=h_.toString(this.type)),e}}var g_;class p_{static isCryptoKeyPair(e){return e&&e.privateKey&&e.publicKey}static isCryptoKey(e){return e&&e.usages&&e.type&&e.algorithm&&void 0!==e.extractable}constructor(){this.items=new Map,this[g_]="CryptoProvider","undefined"!=typeof self&&"undefined"!=typeof crypto?this.set(p_.DEFAULT,crypto):"undefined"!=typeof global&&global.crypto&&global.crypto.subtle&&this.set(p_.DEFAULT,global.crypto)}clear(){this.items.clear()}delete(e){return this.items.delete(e)}forEach(e,t){return this.items.forEach(e,t)}has(e){return this.items.has(e)}get size(){return this.items.size}entries(){return this.items.entries()}keys(){return this.items.keys()}values(){return this.items.values()}[Symbol.iterator](){return this.items[Symbol.iterator]()}get(e=p_.DEFAULT){const t=this.items.get(e.toLowerCase());if(!t)throw new Error(`Cannot get Crypto by name '${e}'`);return t}set(e,t){if("string"==typeof e){if(!t)throw new TypeError("Argument 'value' is required");this.items.set(e.toLowerCase(),t)}else this.items.set(p_.DEFAULT,e);return this}}g_=Symbol.toStringTag,p_.DEFAULT="default";const y_=new p_,m_=/^[0-2](?:\.[1-9][0-9]*)+$/;class b_{constructor(e={}){this.items={};for(const t in e)this.register(t,e[t])}get(e){return this.items[e]||null}findId(e){return t=e,new RegExp(m_).test(t)?e:this.get(e);var t}register(e,t){this.items[e]=t,this.items[t]=e}}const A_=new b_;function I_(e,t){return`\\${tp.ToHex(tp.FromUtf8String(t)).toUpperCase()}`}A_.register("CN","2.5.4.3"),A_.register("L","2.5.4.7"),A_.register("ST","2.5.4.8"),A_.register("O","2.5.4.10"),A_.register("OU","2.5.4.11"),A_.register("C","2.5.4.6"),A_.register("DC","0.9.2342.19200300.100.1.25"),A_.register("E","1.2.840.113549.1.9.1"),A_.register("G","2.5.4.42"),A_.register("I","2.5.4.43"),A_.register("SN","2.5.4.4"),A_.register("T","2.5.4.12");class v_{static isASCII(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!1;return!0}static isPrintableString(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/g.test(e)}constructor(e,t={}){this.extraNames=new b_,this.asn=new Mv;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const r=t[e];this.extraNames.register(e,r)}"string"==typeof e?this.asn=this.fromString(e):e instanceof Mv?this.asn=e:zg.isBufferSource(e)?this.asn=fb.parse(e,Mv):this.asn=this.fromJSON(e)}getField(e){const t=this.extraNames.findId(e)||A_.findId(e),r=[];for(const e of this.asn)for(const s of e)s.type===t&&r.push(s.value.toString());return r}getName(e){return this.extraNames.get(e)||A_.get(e)}toString(){return this.asn.map(e=>e.map(e=>`${this.getName(e.type)||e.type}=${e.value.anyValue?`#${tp.ToHex(e.value.anyValue)}`:e.value.toString().replace(/([,+"\\<>;])/g,"\\$1").replace(/^([ #])/,"\\$1").replace(/([ ]$)/,"\\$1").replace(/([\r\n\t])/,I_)}`).join("+")).join(", ")}toJSON(){var e;const t=[];for(const r of this.asn){const s={};for(const t of r){const r=this.getName(t.type)||t.type;null!==(e=s[r])&&void 0!==e||(s[r]=[]),s[r].push(t.value.anyValue?`#${tp.ToHex(t.value.anyValue)}`:t.value.toString())}t.push(s)}return t}fromString(e){const t=new Mv,r=/(\d\.[\d.]*\d|[A-Za-z]+)=((?:"")|(?:".*?[^\\]")|(?:[^,+].*?(?:[^\\][,+]))|(?:))([,+])?/g;let s=null,i=",";for(;s=r.exec(`${e},`);){let[,e,r]=s;const n=r[r.length-1];","!==n&&"+"!==n||(r=r.slice(0,r.length-1),s[3]=n);const o=s[3];e=this.getTypeOid(e);const a=this.createAttribute(e,r);"+"===i?t[t.length-1].push(a):t.push(new Nv([a])),i=o}return t}fromJSON(e){const t=new Mv;for(const r of e){const e=new Nv;for(const t in r){const s=this.getTypeOid(t),i=r[t];for(const t of i){const r=this.createAttribute(s,t);e.push(r)}}t.push(e)}return t}getTypeOid(e){if(/[\d.]+/.test(e)||(e=this.getName(e)||""),!e)throw new Error(`Cannot get OID for name type '${e}'`);return e}createAttribute(e,t){const r=new Tv({type:e});if("object"==typeof t)for(const e in t)switch(e){case"ia5String":r.value.ia5String=t[e];break;case"utf8String":r.value.utf8String=t[e];break;case"universalString":r.value.universalString=t[e];break;case"bmpString":r.value.bmpString=t[e];break;case"printableString":r.value.printableString=t[e]}else if("#"===t[0])r.value.anyValue=tp.FromHex(t.slice(1));else{const s=this.processStringValue(t);e===this.getName("E")||e===this.getName("DC")?r.value.ia5String=s:v_.isPrintableString(s)?r.value.printableString=s:r.value.utf8String=s}return r}processStringValue(e){const t=/"(.*?[^\\])?"/.exec(e);return t&&(e=t[1]),e.replace(/\\0a/gi,"\n").replace(/\\0d/gi,"\r").replace(/\\0g/gi,"\t").replace(/\\(.)/g,"$1")}toArrayBuffer(){return fb.serialize(this.asn)}async getThumbprint(...e){var t;let r,s="SHA-1";return e.length>=1&&!(null===(t=e[0])||void 0===t?void 0:t.subtle)?(s=e[0]||s,r=e[1]||y_.get()):r=e[0]||y_.get(),await r.subtle.digest(s,this.toArrayBuffer())}}const w_="Cannot initialize GeneralName from ASN.1 data.",S_=`${w_} Unsupported string format in use.`,E_=`${w_} Value doesn't match to GUID regular expression.`,C_=/^([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})$/i,k_="1.3.6.1.4.1.311.25.1",x_="1.3.6.1.4.1.311.20.2.3",__="dns",B_="dn",R_="email",O_="ip",U_="url",T_="guid",N_="upn",D_="id";class M_ extends d_{constructor(...e){let t;if(2===e.length)switch(e[0]){case B_:{const r=new v_(e[1]).toArrayBuffer(),s=fb.parse(r,Mv);t=new Kv({directoryName:s});break}case __:t=new Kv({dNSName:e[1]});break;case R_:t=new Kv({rfc822Name:e[1]});break;case T_:{const r=new RegExp(C_,"i").exec(e[1]);if(!r)throw new Error("Cannot parse GUID value. Value doesn't match to regular expression");const s=r.slice(1).map((e,t)=>t<3?tp.ToHex(new Uint8Array(tp.FromHex(e)).reverse()):e).join("");t=new Kv({otherName:new Lv({typeId:k_,value:fb.serialize(new Rm(tp.FromHex(s)))})});break}case O_:t=new Kv({iPAddress:e[1]});break;case D_:t=new Kv({registeredID:e[1]});break;case N_:t=new Kv({otherName:new Lv({typeId:x_,value:fb.serialize(Qm.toASN(e[1]))})});break;case U_:t=new Kv({uniformResourceIdentifier:e[1]});break;default:throw new Error("Cannot create GeneralName. Unsupported type of the name")}else t=zg.isBufferSource(e[0])?fb.parse(e[0],Kv):e[0];super(t)}onInit(e){if(null!=e.dNSName)this.type=__,this.value=e.dNSName;else if(null!=e.rfc822Name)this.type=R_,this.value=e.rfc822Name;else if(null!=e.iPAddress)this.type=O_,this.value=e.iPAddress;else if(null!=e.uniformResourceIdentifier)this.type=U_,this.value=e.uniformResourceIdentifier;else if(null!=e.registeredID)this.type=D_,this.value=e.registeredID;else if(null!=e.directoryName)this.type=B_,this.value=new v_(e.directoryName).toString();else{if(null==e.otherName)throw new Error(S_);if(e.otherName.typeId===k_){this.type=T_;const t=fb.parse(e.otherName.value,Rm),r=new RegExp(C_,"i").exec(tp.ToHex(t));if(!r)throw new Error(E_);this.value=r.slice(1).map((e,t)=>t<3?tp.ToHex(new Uint8Array(tp.FromHex(e)).reverse()):e).join("-")}else{if(e.otherName.typeId!==x_)throw new Error(S_);this.type=N_,this.value=fb.parse(e.otherName.value,Ov).toString()}}}toJSON(){return{type:this.type,value:this.value}}toTextObject(){let e;switch(this.type){case B_:case __:case T_:case O_:case D_:case N_:case U_:e=this.type.toUpperCase();break;case R_:e="Email";break;default:throw new Error("Unsupported GeneralName type")}let t=this.value;return this.type===D_&&(t=h_.toString(t)),new l_(e,void 0,t)}}class P_ extends d_{constructor(e){let t;if(e instanceof nw)t=e;else if(Array.isArray(e)){const r=[];for(const t of e)if(t instanceof Kv)r.push(t);else{const e=fb.parse(new M_(t.type,t.value).rawData,Kv);r.push(e)}t=new nw(r)}else{if(!zg.isBufferSource(e))throw new Error("Cannot initialize GeneralNames. Incorrect incoming arguments");t=fb.parse(e,nw)}super(t)}onInit(e){const t=[];for(const r of e){let e=null;try{e=new M_(r)}catch{continue}t.push(e)}this.items=t}toJSON(){return this.items.map(e=>e.toJSON())}toTextObject(){const e=super.toTextObjectEmpty();for(const t of this.items){const r=t.toTextObject();let s=e[r[l_.NAME]];Array.isArray(s)||(s=[],e[r[l_.NAME]]=s),s.push(r)}return e}}P_.NAME="GeneralNames";const L_="-{5}",H_="\\n",K_="\\n",Q_=`${L_}BEGIN ([^${H_}]+(?=${L_}))${L_}${K_}(?:((?:[^:${H_}]+: (?:[^${H_}]+${K_}(?: +[^${H_}]+${K_})*))+))?${K_}?((?:[a-zA-Z0-9=+/]+${K_})+)${L_}END \\1${L_}`;class V_{static isPem(e){return"string"==typeof e&&new RegExp(Q_,"g").test(e)}static decodeWithHeaders(e){e=e.replace(/\r/g,"");const t=new RegExp(Q_,"g"),r=[];let s=null;for(;s=t.exec(e);){const e=s[3].replace(new RegExp(`[${H_}]+`,"g"),""),t={type:s[1],headers:[],rawData:tp.FromBase64(e)},i=s[2];if(i){const e=i.split(new RegExp(K_,"g"));let r=null;for(const s of e){const[e,i]=s.split(/:(.*)/);if(void 0===i){if(!r)throw new Error("Cannot parse PEM string. Incorrect header value");r.value+=e.trim()}else r&&t.headers.push(r),r={key:e,value:i.trim()}}r&&t.headers.push(r)}r.push(t)}return r}static decode(e){return this.decodeWithHeaders(e).map(e=>e.rawData)}static decodeFirst(e){const t=this.decode(e);if(!t.length)throw new RangeError("PEM string doesn't contain any objects");return t[0]}static encode(e,t){if(Array.isArray(e)){const r=new Array;return t?e.forEach(e=>{if(!zg.isBufferSource(e))throw new TypeError("Cannot encode array of BufferSource in PEM format. Not all items of the array are BufferSource");r.push(this.encodeStruct({type:t,rawData:zg.toArrayBuffer(e)}))}):e.forEach(e=>{if(!("type"in e))throw new TypeError("Cannot encode array of PemStruct in PEM format. Not all items of the array are PemStrut");r.push(this.encodeStruct(e))}),r.join("\n")}if(!t)throw new Error("Required argument 'tag' is missed");return this.encodeStruct({type:t,rawData:zg.toArrayBuffer(e)})}static encodeStruct(e){var t;const r=e.type.toLocaleUpperCase(),s=[];if(s.push(`-----BEGIN ${r}-----`),null===(t=e.headers)||void 0===t?void 0:t.length){for(const t of e.headers)s.push(`${t.key}: ${t.value}`);s.push("")}const i=tp.ToBase64(e.rawData);let n,o=0;const a=Array();for(;o<i.length&&(i.length-o<64?n=i.substring(o):(n=i.substring(o,o+64),o+=64),0!==n.length)&&(a.push(n),!(n.length<64)););return s.push(...a),s.push(`-----END ${r}-----`),s.join("\n")}}V_.CertificateTag="CERTIFICATE",V_.CrlTag="CRL",V_.CertificateRequestTag="CERTIFICATE REQUEST",V_.PublicKeyTag="PUBLIC KEY",V_.PrivateKeyTag="PRIVATE KEY";class F_ extends d_{static isAsnEncoded(e){return zg.isBufferSource(e)||"string"==typeof e}static toArrayBuffer(e){if("string"==typeof e){if(V_.isPem(e))return V_.decode(e)[0];if(tp.isHex(e))return tp.FromHex(e);if(tp.isBase64(e))return tp.FromBase64(e);if(tp.isBase64Url(e))return tp.FromBase64Url(e);throw new TypeError("Unsupported format of 'raw' argument. Must be one of DER, PEM, HEX, Base64, or Base4Url")}{const t=tp.ToBinary(e);return V_.isPem(t)?V_.decode(t)[0]:tp.isHex(t)?tp.FromHex(t):tp.isBase64(t)?tp.FromBase64(t):tp.isBase64Url(t)?tp.FromBase64Url(t):zg.toArrayBuffer(e)}}constructor(...e){F_.isAsnEncoded(e[0])?super(F_.toArrayBuffer(e[0]),e[1]):super(e[0])}toString(e="pem"){return"pem"===e?V_.encode(this.rawData,this.tag):super.toString(e)}}class $_ extends F_{static async create(e,t=y_.get()){if(e instanceof $_)return e;if(p_.isCryptoKey(e)){if("public"!==e.type)throw new TypeError("Public key is required");const r=await t.subtle.exportKey("spki",e);return new $_(r)}if(e.publicKey)return e.publicKey;if(zg.isBufferSource(e))return new $_(e);throw new TypeError("Unsupported PublicKeyType")}constructor(e){F_.isAsnEncoded(e)?super(e,yS):super(e),this.tag=V_.PublicKeyTag}async export(...e){let t,r=["verify"],s={hash:"SHA-256",...this.algorithm};e.length>1?(s=e[0]||s,r=e[1]||r,t=e[2]||y_.get()):t=e[0]||y_.get();let i=this.rawData;const n=fb.parse(this.rawData,yS);return n.algorithm.algorithm===xC&&(i=function(e){return e.algorithm=new pS({algorithm:EC,parameters:null}),fb.serialize(e)}(n)),t.subtle.importKey("spki",i,s,!0,r)}onInit(e){const t=Ek.resolve(_x),r=this.algorithm=t.toWebAlgorithm(e.algorithm);switch(e.algorithm.algorithm){case EC:{const t=fb.parse(e.subjectPublicKey,ek),s=zg.toUint8Array(t.modulus);r.publicExponent=zg.toUint8Array(t.publicExponent),r.modulusLength=(s[0]?s:s.slice(1)).byteLength<<3;break}}}async getThumbprint(...e){var t;let r,s="SHA-1";return e.length>=1&&!(null===(t=e[0])||void 0===t?void 0:t.subtle)?(s=e[0]||s,r=e[1]||y_.get()):r=e[0]||y_.get(),await r.subtle.digest(s,this.rawData)}async getKeyIdentifier(...e){let t,r="SHA-1";1===e.length?"string"==typeof e[0]?(r=e[0],t=y_.get()):t=e[0]:2===e.length?(r=e[0],t=e[1]):t=y_.get();const s=fb.parse(this.rawData,yS);return await t.subtle.digest(r,s.subjectPublicKey)}toTextObject(){const e=this.toTextObjectEmpty(),t=fb.parse(this.rawData,yS);return e.Algorithm=u_.serializeAlgorithm(t.algorithm),t.algorithm.algorithm===rC?e["EC Point"]=t.subjectPublicKey:e["Raw Data"]=t.subjectPublicKey,e}}class j_ extends f_{static async create(e,t=!1,r=y_.get()){if("name"in e&&"serialNumber"in e)return new j_(e,t);const s=await $_.create(e,r),i=await s.getKeyIdentifier(r);return new j_(tp.ToHex(i),t)}constructor(...e){if(zg.isBufferSource(e[0]))super(e[0]);else if("string"==typeof e[0]){const t=new tw({keyIdentifier:new ew(tp.FromHex(e[0]))});super(Zv,e[1],fb.serialize(t))}else{const t=e[0],r=t.name instanceof P_?fb.parse(t.name.rawData,nw):t.name,s=new tw({authorityCertIssuer:r,authorityCertSerialNumber:tp.FromHex(t.serialNumber)});super(Zv,e[1],fb.serialize(s))}}onInit(e){super.onInit(e);const t=fb.parse(e.extnValue,tw);t.keyIdentifier&&(this.keyId=tp.ToHex(t.keyIdentifier)),(t.authorityCertIssuer||t.authorityCertSerialNumber)&&(this.certId={name:t.authorityCertIssuer||[],serialNumber:t.authorityCertSerialNumber?tp.ToHex(t.authorityCertSerialNumber):""})}toTextObject(){const e=this.toTextObjectWithoutValue(),t=fb.parse(this.value,tw);return t.authorityCertIssuer&&(e["Authority Issuer"]=new P_(t.authorityCertIssuer).toTextObject()),t.authorityCertSerialNumber&&(e["Authority Serial Number"]=t.authorityCertSerialNumber),t.keyIdentifier&&(e[""]=t.keyIdentifier),e}}j_.NAME="Authority Key Identifier";class G_ extends f_{constructor(...e){if(zg.isBufferSource(e[0])){super(e[0]);const t=fb.parse(this.value,sw);this.ca=t.cA,this.pathLength=t.pathLenConstraint}else{const t=new sw({cA:e[0],pathLenConstraint:e[1]});super(rw,e[2],fb.serialize(t)),this.ca=e[0],this.pathLength=e[1]}}toTextObject(){const e=this.toTextObjectWithoutValue();return this.ca&&(e.CA=this.ca),void 0!==this.pathLength&&(e["Path Length"]=this.pathLength),e}}var q_,z_;G_.NAME="Basic Constraints",function(e){e.serverAuth="1.3.6.1.5.5.7.3.1",e.clientAuth="1.3.6.1.5.5.7.3.2",e.codeSigning="1.3.6.1.5.5.7.3.3",e.emailProtection="1.3.6.1.5.5.7.3.4",e.timeStamping="1.3.6.1.5.5.7.3.8",e.ocspSigning="1.3.6.1.5.5.7.3.9"}(q_||(q_={}));class W_ extends f_{constructor(...e){if(zg.isBufferSource(e[0])){super(e[0]);const t=fb.parse(this.value,Tw);this.usages=t.map(e=>e)}else{const t=new Tw(e[0]);super(Uw,e[1],fb.serialize(t)),this.usages=e[0]}}toTextObject(){const e=this.toTextObjectWithoutValue();return e[""]=this.usages.map(e=>h_.toString(e)).join(", "),e}}W_.NAME="Extended Key Usages",function(e){e[e.digitalSignature=1]="digitalSignature",e[e.nonRepudiation=2]="nonRepudiation",e[e.keyEncipherment=4]="keyEncipherment",e[e.dataEncipherment=8]="dataEncipherment",e[e.keyAgreement=16]="keyAgreement",e[e.keyCertSign=32]="keyCertSign",e[e.cRLSign=64]="cRLSign",e[e.encipherOnly=128]="encipherOnly",e[e.decipherOnly=256]="decipherOnly"}(z_||(z_={}));class J_ extends f_{constructor(...e){if(zg.isBufferSource(e[0])){super(e[0]);const t=fb.parse(this.value,qw);this.usages=t.toNumber()}else{const t=new qw(e[0]);super($w,e[1],fb.serialize(t)),this.usages=e[0]}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=fb.parse(this.value,qw);return e[""]=t.toJSON().join(", "),e}}J_.NAME="Key Usages";class Y_ extends f_{static async create(e,t=!1,r=y_.get()){const s=await $_.create(e,r),i=await s.getKeyIdentifier(r);return new Y_(tp.ToHex(i),t)}constructor(...e){if(zg.isBufferSource(e[0])){super(e[0]);const t=fb.parse(this.value,cS);this.keyId=tp.ToHex(t)}else{const t="string"==typeof e[0]?tp.FromHex(e[0]):e[0],r=new cS(t);super(aS,e[1],fb.serialize(r)),this.keyId=tp.ToHex(t)}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=fb.parse(this.value,cS);return e[""]=t,e}}Y_.NAME="Subject Key Identifier";class X_ extends f_{constructor(...e){zg.isBufferSource(e[0])?super(e[0]):super(rS,e[1],new P_(e[0]||[]).rawData)}onInit(e){super.onInit(e);const t=fb.parse(e.extnValue,sS);this.names=new P_(t)}toTextObject(){const e=this.toTextObjectWithoutValue(),t=this.names.toTextObject();for(const r in t)e[r]=t[r];return e}}X_.NAME="Subject Alternative Name";class Z_{static register(e,t){this.items.set(e,t)}static create(e){const t=new f_(e),r=this.items.get(t.type);return r?new r(e):t}}Z_.items=new Map;class eB extends f_{constructor(...e){var t;if(zg.isBufferSource(e[0])){super(e[0]);const t=fb.parse(this.value,yw);this.policies=t.map(e=>e.policyIdentifier)}else{const r=e[0],s=null!==(t=e[1])&&void 0!==t&&t,i=new yw(r.map(e=>new pw({policyIdentifier:e})));super(lw,s,fb.serialize(i)),this.policies=r}}toTextObject(){const e=this.toTextObjectWithoutValue();return e.Policy=this.policies.map(e=>new l_("",{},h_.toString(e))),e}}eB.NAME="Certificate Policies",Z_.register(lw,eB);class tB extends f_{constructor(...e){var t;if(zg.isBufferSource(e[0]))super(e[0]);else if(Array.isArray(e[0])&&"string"==typeof e[0][0]){const t=e[0].map(e=>new Ew({distributionPoint:new Sw({fullName:[new Kv({uniformResourceIdentifier:e})]})})),r=new Cw(t);super(Iw,e[1],fb.serialize(r))}else{const t=new Cw(e[0]);super(Iw,e[1],fb.serialize(t))}null!==(t=this.distributionPoints)&&void 0!==t||(this.distributionPoints=[])}onInit(e){super.onInit(e);const t=fb.parse(e.extnValue,Cw);this.distributionPoints=t}toTextObject(){const e=this.toTextObjectWithoutValue();return e["Distribution Point"]=this.distributionPoints.map(e=>{var t;const r={};return e.distributionPoint&&(r[""]=null===(t=e.distributionPoint.fullName)||void 0===t?void 0:t.map(e=>new M_(e).toString()).join(", ")),e.reasons&&(r.Reasons=e.reasons.toString()),e.cRLIssuer&&(r["CRL Issuer"]=e.cRLIssuer.map(e=>e.toString()).join(", ")),r}),e}}tB.NAME="CRL Distribution Points";class rB extends f_{constructor(...e){var t,r,s,i;if(zg.isBufferSource(e[0]))super(e[0]);else if(e[0]instanceof Xv){const t=new Xv(e[0]);super(Jv,e[1],fb.serialize(t))}else{const t=e[0],r=new Xv;iB(r,t,$v,"ocsp"),iB(r,t,jv,"caIssuers"),iB(r,t,Gv,"timeStamping"),iB(r,t,qv,"caRepository"),super(Jv,e[1],fb.serialize(r))}null!==(t=this.ocsp)&&void 0!==t||(this.ocsp=[]),null!==(r=this.caIssuers)&&void 0!==r||(this.caIssuers=[]),null!==(s=this.timeStamping)&&void 0!==s||(this.timeStamping=[]),null!==(i=this.caRepository)&&void 0!==i||(this.caRepository=[])}onInit(e){super.onInit(e),this.ocsp=[],this.caIssuers=[],this.timeStamping=[],this.caRepository=[],fb.parse(e.extnValue,Xv).forEach(e=>{switch(e.accessMethod){case $v:this.ocsp.push(new M_(e.accessLocation));break;case jv:this.caIssuers.push(new M_(e.accessLocation));break;case Gv:this.timeStamping.push(new M_(e.accessLocation));break;case qv:this.caRepository.push(new M_(e.accessLocation))}})}toTextObject(){const e=this.toTextObjectWithoutValue();return this.ocsp.length&&sB(e,"OCSP",this.ocsp),this.caIssuers.length&&sB(e,"CA Issuers",this.caIssuers),this.timeStamping.length&&sB(e,"Time Stamping",this.timeStamping),this.caRepository.length&&sB(e,"CA Repository",this.caRepository),e}}function sB(e,t,r){if(1===r.length)e[t]=r[0].toTextObject();else{const s=new l_("");r.forEach((e,t)=>{const r=e.toTextObject(),i=`${r[l_.NAME]} ${t+1}`;let n=s[i];Array.isArray(n)||(n=[],s[i]=n),n.push(r)}),e[t]=s}}function iB(e,t,r,s){const i=t[s];i&&(Array.isArray(i)?i:[i]).forEach(t=>{"string"==typeof t&&(t=new M_("url",t)),e.push(new Yv({accessMethod:r,accessLocation:fb.parse(t.rawData,Kv)}))})}rB.NAME="Authority Info Access";class nB extends d_{constructor(...e){let t;if(zg.isBufferSource(e[0]))t=zg.toArrayBuffer(e[0]);else{const r=e[0],s=Array.isArray(e[1])?e[1].map(e=>zg.toArrayBuffer(e)):[];t=fb.serialize(new iS({type:r,values:s}))}super(t,iS)}onInit(e){this.type=e.type,this.values=e.values}toTextObject(){const e=this.toTextObjectWithoutValue();return e.Value=this.values.map(e=>new l_("",{"":e})),e}toTextObjectWithoutValue(){const e=this.toTextObjectEmpty();return e[l_.NAME]===nB.NAME&&(e[l_.NAME]=h_.toString(this.type)),e}}nB.NAME="Attribute";class oB extends nB{constructor(...e){var t;if(zg.isBufferSource(e[0]))super(e[0]);else{const t=new mx({printableString:e[0]});super(Xk,[fb.serialize(t)])}null!==(t=this.password)&&void 0!==t||(this.password="")}onInit(e){if(super.onInit(e),this.values[0]){const e=fb.parse(this.values[0],mx);this.password=e.toString()}}toTextObject(){const e=this.toTextObjectWithoutValue();return e[l_.VALUE]=this.password,e}}oB.NAME="Challenge Password";class aB extends nB{constructor(...e){var t;if(zg.isBufferSource(e[0]))super(e[0]);else{const t=e[0],r=new vS;for(const e of t)r.push(fb.parse(e.rawData,IS));super(Zk,[fb.serialize(r)])}null!==(t=this.items)&&void 0!==t||(this.items=[])}onInit(e){if(super.onInit(e),this.values[0]){const e=fb.parse(this.values[0],vS);this.items=e.map(e=>Z_.create(fb.serialize(e)))}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=this.items.map(e=>e.toTextObject());for(const r of t)e[r[l_.NAME]]=r;return e}}aB.NAME="Extensions";class cB{static register(e,t){this.items.set(e,t)}static create(e){const t=new nB(e),r=this.items.get(t.type);return r?new r(e):t}}cB.items=new Map;const lB="crypto.signatureFormatter";var hB;let uB=hB=class{static createPssParams(e,t){const r=hB.getHashAlgorithm(e);return r?new zC({hashAlgorithm:r,maskGenAlgorithm:new pS({algorithm:VC,parameters:fb.serialize(r)}),saltLength:t}):null}static getHashAlgorithm(e){const t=Ek.resolve(_x);return"string"==typeof e?t.toAsnAlgorithm({name:e}):"object"==typeof e&&e&&"name"in e?t.toAsnAlgorithm(e):null}toAsnAlgorithm(e){switch(e.name.toLowerCase()){case"rsassa-pkcs1-v1_5":if(!("hash"in e))return new pS({algorithm:EC,parameters:null});{let t;if("string"==typeof e.hash)t=e.hash;else{if(!e.hash||"object"!=typeof e.hash||!("name"in e.hash)||"string"!=typeof e.hash.name)throw new Error("Cannot get hash algorithm name");t=e.hash.name.toUpperCase()}switch(t.toLowerCase()){case"sha-1":return new pS({algorithm:RC,parameters:null});case"sha-256":return new pS({algorithm:UC,parameters:null});case"sha-384":return new pS({algorithm:TC,parameters:null});case"sha-512":return new pS({algorithm:NC,parameters:null})}}break;case"rsa-pss":if("hash"in e){if(!("saltLength"in e)||"number"!=typeof e.saltLength)throw new Error("Cannot get 'saltLength' from 'alg' argument");const t=hB.createPssParams(e.hash,e.saltLength);if(!t)throw new Error("Cannot create PSS parameters");return new pS({algorithm:xC,parameters:fb.serialize(t)})}return new pS({algorithm:xC,parameters:null})}return null}toWebAlgorithm(e){switch(e.algorithm){case EC:return{name:"RSASSA-PKCS1-v1_5"};case RC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-1"}};case UC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case TC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case NC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case xC:if(e.parameters){const t=fb.parse(e.parameters,zC);return{name:"RSA-PSS",hash:Ek.resolve(_x).toWebAlgorithm(t.hashAlgorithm),saltLength:t.saltLength}}return{name:"RSA-PSS"}}return null}};uB=hB=gb([Ck()],uB),Ek.registerSingleton(xx,uB);let dB=class{toAsnAlgorithm(e){switch(e.name.toLowerCase()){case"sha-1":return new pS({algorithm:PC});case"sha-256":return new pS({algorithm:HC});case"sha-384":return new pS({algorithm:KC});case"sha-512":return new pS({algorithm:QC})}return null}toWebAlgorithm(e){switch(e.algorithm){case PC:return{name:"SHA-1"};case HC:return{name:"SHA-256"};case KC:return{name:"SHA-384"};case QC:return{name:"SHA-512"}}return null}};dB=gb([Ck()],dB),Ek.registerSingleton(xx,dB);class fB{addPadding(e,t){const r=zg.toUint8Array(t),s=new Uint8Array(e);return s.set(r,e-r.length),s}removePadding(e,t=!1){let r=zg.toUint8Array(e);for(let e=0;e<r.length;e++)if(r[e]){r=r.slice(e);break}if(t&&r[0]>127){const e=new Uint8Array(r.length+1);return e.set(r,1),e.buffer}return r.buffer}toAsnSignature(e,t){if("ECDSA"===e.name){const r=e.namedCurve,s=fB.namedCurveSize.get(r)||fB.defaultNamedCurveSize,i=new wC,n=zg.toUint8Array(t);return i.r=this.removePadding(n.slice(0,s),!0),i.s=this.removePadding(n.slice(s,s+s),!0),fb.serialize(i)}return null}toWebSignature(e,t){if("ECDSA"===e.name){const r=fb.parse(t,wC),s=e.namedCurve,i=fB.namedCurveSize.get(s)||fB.defaultNamedCurveSize;return rp(this.addPadding(i,this.removePadding(r.r)),this.addPadding(i,this.removePadding(r.s)))}return null}}fB.namedCurveSize=new Map,fB.defaultNamedCurveSize=32;const gB="1.3.101.110",pB="1.3.101.111",yB="1.3.101.112",mB="1.3.101.113";let bB=class{toAsnAlgorithm(e){let t=null;switch(e.name.toLowerCase()){case"ed25519":t=yB;break;case"x25519":t=gB;break;case"eddsa":switch(e.namedCurve.toLowerCase()){case"ed25519":t=yB;break;case"ed448":t=mB}break;case"ecdh-es":switch(e.namedCurve.toLowerCase()){case"x25519":t=gB;break;case"x448":t=pB}}return t?new pS({algorithm:t}):null}toWebAlgorithm(e){switch(e.algorithm){case yB:return{name:"Ed25519"};case mB:return{name:"EdDSA",namedCurve:"Ed448"};case gB:return{name:"X25519"};case pB:return{name:"ECDH-ES",namedCurve:"X448"}}return null}};bB=gb([Ck()],bB),Ek.registerSingleton(xx,bB);(class extends F_{constructor(e){F_.isAsnEncoded(e)?super(e,kx):super(e),this.tag=V_.CertificateRequestTag}onInit(e){this.tbs=fb.serialize(e.certificationRequestInfo),this.publicKey=new $_(e.certificationRequestInfo.subjectPKInfo);const t=Ek.resolve(_x);this.signatureAlgorithm=t.toWebAlgorithm(e.signatureAlgorithm),this.signature=e.signature,this.attributes=e.certificationRequestInfo.attributes.map(e=>cB.create(fb.serialize(e)));const r=this.getAttribute(Zk);this.extensions=[],r instanceof aB&&(this.extensions=r.items),this.subjectName=new v_(e.certificationRequestInfo.subject),this.subject=this.subjectName.toString()}getAttribute(e){for(const t of this.attributes)if(t.type===e)return t;return null}getAttributes(e){return this.attributes.filter(t=>t.type===e)}getExtension(e){for(const t of this.extensions)if(t.type===e)return t;return null}getExtensions(e){return this.extensions.filter(t=>t.type===e)}async verify(e=y_.get()){const t={...this.publicKey.algorithm,...this.signatureAlgorithm},r=await this.publicKey.export(t,["verify"],e),s=Ek.resolveAll(lB).reverse();let i=null;for(const e of s)if(i=e.toWebSignature(t,this.signature),i)break;if(!i)throw Error("Cannot convert WebCrypto signature value to ASN.1 format");return await e.subtle.verify(this.signatureAlgorithm,r,i,this.tbs)}toTextObject(){const e=this.toTextObjectEmpty(),t=fb.parse(this.rawData,kx),r=t.certificationRequestInfo,s=new l_("",{Version:`${wS[r.version]} (${r.version})`,Subject:this.subject,"Subject Public Key Info":this.publicKey});if(this.attributes.length){const e=new l_("");for(const t of this.attributes){const r=t.toTextObject();e[r[l_.NAME]]=r}s.Attributes=e}return e.Data=s,e.Signature=new l_("",{Algorithm:u_.serializeAlgorithm(t.signatureAlgorithm),"":t.signature}),e}}).NAME="PKCS#10 Certificate Request";var AB;(class extends F_{constructor(e){F_.isAsnEncoded(e)?super(e,ES):super(e),this.tag=V_.CertificateTag}onInit(e){const t=e.tbsCertificate;this.tbs=fb.serialize(t),this.serialNumber=tp.ToHex(t.serialNumber),this.subjectName=new v_(t.subject),this.subject=new v_(t.subject).toString(),this.issuerName=new v_(t.issuer),this.issuer=this.issuerName.toString();const r=Ek.resolve(_x);this.signatureAlgorithm=r.toWebAlgorithm(e.signatureAlgorithm),this.signature=e.signatureValue;const s=t.validity.notBefore.utcTime||t.validity.notBefore.generalTime;if(!s)throw new Error("Cannot get 'notBefore' value");this.notBefore=s;const i=t.validity.notAfter.utcTime||t.validity.notAfter.generalTime;if(!i)throw new Error("Cannot get 'notAfter' value");this.notAfter=i,this.extensions=[],t.extensions&&(this.extensions=t.extensions.map(e=>Z_.create(fb.serialize(e)))),this.publicKey=new $_(t.subjectPublicKeyInfo)}getExtension(e){for(const t of this.extensions)if("string"==typeof e){if(t.type===e)return t}else if(t instanceof e)return t;return null}getExtensions(e){return this.extensions.filter(t=>"string"==typeof e?t.type===e:t instanceof e)}async verify(e={},t=y_.get()){let r,s;const i=e.publicKey;try{if(i)if("publicKey"in i)r={...i.publicKey.algorithm,...this.signatureAlgorithm},s=await i.publicKey.export(r,["verify"],t);else if(i instanceof $_)r={...i.algorithm,...this.signatureAlgorithm},s=await i.export(r,["verify"],t);else if(zg.isBufferSource(i)){const e=new $_(i);r={...e.algorithm,...this.signatureAlgorithm},s=await e.export(r,["verify"],t)}else r={...i.algorithm,...this.signatureAlgorithm},s=i;else r={...this.publicKey.algorithm,...this.signatureAlgorithm},s=await this.publicKey.export(r,["verify"],t)}catch(e){return!1}const n=Ek.resolveAll(lB).reverse();let o=null;for(const e of n)if(o=e.toWebSignature(r,this.signature),o)break;if(!o)throw Error("Cannot convert ASN.1 signature value to WebCrypto format");const a=await t.subtle.verify(this.signatureAlgorithm,s,o,this.tbs);if(e.signatureOnly)return a;{const t=(e.date||new Date).getTime();return a&&this.notBefore.getTime()<t&&t<this.notAfter.getTime()}}async getThumbprint(...e){let t,r="SHA-1";return e[0]&&(e[0].subtle?t=e[0]:(r=e[0]||r,t=e[1])),null!=t||(t=y_.get()),await t.subtle.digest(r,this.rawData)}async isSelfSigned(e=y_.get()){return this.subject===this.issuer&&await this.verify({signatureOnly:!0},e)}toTextObject(){const e=this.toTextObjectEmpty(),t=fb.parse(this.rawData,ES),r=t.tbsCertificate,s=new l_("",{Version:`${wS[r.version]} (${r.version})`,"Serial Number":r.serialNumber,"Signature Algorithm":u_.serializeAlgorithm(r.signature),Issuer:this.issuer,Validity:new l_("",{"Not Before":r.validity.notBefore.getTime(),"Not After":r.validity.notAfter.getTime()}),Subject:this.subject,"Subject Public Key Info":this.publicKey});if(r.issuerUniqueID&&(s["Issuer Unique ID"]=r.issuerUniqueID),r.subjectUniqueID&&(s["Subject Unique ID"]=r.subjectUniqueID),this.extensions.length){const e=new l_("");for(const t of this.extensions){const r=t.toTextObject();e[r[l_.NAME]]=r}s.Extensions=e}return e.Data=s,e.Signature=new l_("",{Algorithm:u_.serializeAlgorithm(t.signatureAlgorithm),"":t.signatureValue}),e}}).NAME="Certificate",function(e){e[e.unspecified=0]="unspecified",e[e.keyCompromise=1]="keyCompromise",e[e.cACompromise=2]="cACompromise",e[e.affiliationChanged=3]="affiliationChanged",e[e.superseded=4]="superseded",e[e.cessationOfOperation=5]="cessationOfOperation",e[e.certificateHold=6]="certificateHold",e[e.removeFromCRL=8]="removeFromCRL",e[e.privilegeWithdrawn=9]="privilegeWithdrawn",e[e.aACompromise=10]="aACompromise"}(AB||(AB={})),Z_.register(rw,G_),Z_.register(Uw,W_),Z_.register($w,J_),Z_.register(aS,Y_),Z_.register(Zv,j_),Z_.register(rS,X_),Z_.register(Iw,tB),Z_.register(Jv,rB),cB.register(Xk,oB),cB.register(Zk,aB),Ek.registerSingleton(lB,class{toAsnSignature(e,t){return zg.toArrayBuffer(t)}toWebSignature(e,t){return zg.toArrayBuffer(t)}}),Ek.registerSingleton(lB,fB),fB.namedCurveSize.set("P-256",32),fB.namedCurveSize.set("K-256",32),fB.namedCurveSize.set("P-384",48),fB.namedCurveSize.set("P-521",66),m.new(void 0,"networking");const IB=new class extends tI{constructor(){super(...arguments),this.subtle=new kv}getRandomValues(e){if(!ArrayBuffer.isView(e))throw new TypeError("Failed to execute 'getRandomValues' on 'Crypto': parameter 1 is not of type 'ArrayBufferView'");const t=oI.Buffer.from(e.buffer,e.byteOffset,e.byteLength);return cI().randomFillSync(t),e}};var vB,wB,SB;function EB(e){return ye(e)}y_.set(IB),(SB=vB||(vB={}))[SB.NoCertificate=0]="NoCertificate",SB[SB.NotEd25519=1]="NotEd25519",SB[SB.PublicKeyTypeMismatch=2]="PublicKeyTypeMismatch",SB[SB.AltNameMismatch=3]="AltNameMismatch",SB[SB.IncorrectSignature=4]="IncorrectSignature",function(e){e[e.Public=0]="Public",e[e.Private=1]="Private"}(wB||(wB={})),m.new(void 0,"net:peers"),m.new(void 0,"net"),m.new(void 0,"net"),m.new(void 0,"net"),m.new(void 0,"jamnps");const CB=EB(0);class kB extends q{hash;slot;static Codec=Fe.Class(kB,{hash:Fe.bytes(Ot).asOpaque(),slot:Fe.u32.asOpaque()});static create({hash:e,slot:t}){return new kB(e,t)}constructor(e,t){super(),this.hash=e,this.slot=t}}class xB{final;leafs;static Codec=Fe.Class(xB,{final:kB.Codec,leafs:Fe.sequenceVarLen(kB.Codec)});static create({final:e,leafs:t}){return new xB(e,t)}constructor(e,t){this.final=e,this.leafs=t}}class _B extends q{header;final;static Codec=Fe.Class(_B,{header:us.Codec,final:kB.Codec});static create({header:e,final:t}){return new _B(e,t)}constructor(e,t){super(),this.header=e,this.final=t}}const BB=m.new(void 0,"protocol/up-0");class RB{getHandshake;onAnnouncement;kind=CB;handshakes=new Map;pendingHandshakes=new Map;constructor(e,t){this.getHandshake=e,this.onAnnouncement=t}onStreamMessage(e,t){const r=e.streamId;if(!this.handshakes.has(r)){const s=_e.decodeObject(xB.Codec,t);return this.handshakes.set(r,s),void(this.pendingHandshakes.delete(r)||(BB.log(`[${r}] <-- responding with a handshake.`),e.bufferAndSend(Ne.encodeObject(xB.Codec,this.getHandshake()))))}const s=_e.decodeObject(_B.Codec,t);BB.info(`[${r}] got blocks announcement: ${s}`),this.onAnnouncement(s)}onClose(e){this.handshakes.delete(e)}sendHandshake(e,t){this.pendingHandshakes.set(e.streamId,!0),e.bufferAndSend(Ne.encodeObject(xB.Codec,t))}sendAnnouncement(e,t){this.handshakes.has(e.streamId)?e.bufferAndSend(Ne.encodeObject(_B.Codec,t)):BB.warn(`[${e.streamId}] no handshake yet, skipping announcement.`)}}var OB;EB(128),function(e){e[e.AscExcl=0]="AscExcl",e[e.DescIncl=1]="DescIncl"}(OB||(OB={}));class UB extends q{headerHash;direction;maxBlocks;static Codec=Fe.Class(UB,{headerHash:Fe.bytes(Ot).asOpaque(),direction:Fe.u8.convert(e=>ye(e),e=>{switch(e){case OB.AscExcl:return OB.AscExcl;case OB.DescIncl:return OB.DescIncl;default:throw new Error(`Invalid 'Direction' value: ${e}`)}}),maxBlocks:Fe.u32});static create({headerHash:e,direction:t,maxBlocks:r}){return new UB(e,t,r)}constructor(e,t,r){super(),this.headerHash=e,this.direction=t,this.maxBlocks=r}}m.new(void 0,"protocol/ce-128");const TB=EB(129),NB=Fe.bytes(64).convert(e=>se.fromBlob(e.raw,64),e=>new Yi(e.raw));class DB extends q{key;value;static Codec=Fe.Class(DB,{key:Fe.bytes(Wi),value:Fe.blob});static create({key:e,value:t}){return new DB(e,t)}constructor(e,t){super(),this.key=e,this.value=t}}class MB extends q{keyValuePairs;static Codec=Fe.Class(MB,{keyValuePairs:Fe.sequenceVarLen(DB.Codec)});static create({keyValuePairs:e}){return new MB(e)}constructor(e){super(),this.keyValuePairs=e}}class PB extends q{headerHash;startKey;endKey;maximumSize;static Codec=Fe.Class(PB,{headerHash:Fe.bytes(Ot).asOpaque(),startKey:Fe.bytes(Wi),endKey:Fe.bytes(Wi),maximumSize:Fe.u32});static create({headerHash:e,startKey:t,endKey:r,maximumSize:s}){return new PB(e,t,r,s)}constructor(e,t,r,s){super(),this.headerHash=e,this.startKey=t,this.endKey=r,this.maximumSize=s}}const LB=m.new(void 0,"protocol/ce-129");class HB{isServer;getBoundaryNodes;getKeyValuePairs;kind=TB;boundaryNodes=new Map;onResponse=new Map;constructor(e=!1,t,r){if(this.isServer=e,this.getBoundaryNodes=t,this.getKeyValuePairs=r,e&&(void 0===t||void 0===r))throw new Error("getBoundaryNodes and getKeyValuePairs are required in server mode.")}onStreamMessage(e,t){if(this.isServer){if(LB.info(`[${e.streamId}][server]: Received request.`),void 0===this.getBoundaryNodes||void 0===this.getKeyValuePairs)return;const r=_e.decodeObject(PB.Codec,t),s=this.getBoundaryNodes(r.headerHash,r.startKey,r.endKey),i=this.getKeyValuePairs(r.headerHash,r.startKey,r.endKey);return LB.info(`[${e.streamId}][server]: <-- responding with boundary nodes and key value pairs.`),e.bufferAndSend(Ne.encodeObject(Fe.sequenceVarLen(NB),s)),e.bufferAndSend(Ne.encodeObject(MB.Codec,MB.create({keyValuePairs:i}))),void e.close()}if(!this.boundaryNodes.has(e.streamId))return this.boundaryNodes.set(e.streamId,_e.decodeObject(Fe.sequenceVarLen(NB),t)),void LB.info(`[${e.streamId}][client]: Received boundary nodes.`);this.onResponse.get(e.streamId)?.(_e.decodeObject(MB.Codec,t)),LB.info(`[${e.streamId}][client]: Received state values.`)}onClose(e){this.boundaryNodes.delete(e),this.onResponse.delete(e)}getStateByKey(e,t,r,s){if(this.onResponse.has(e.streamId))throw new Error("It is disallowed to use the same stream for multiple requests.");this.onResponse.set(e.streamId,s),e.bufferAndSend(Ne.encodeObject(PB.Codec,PB.create({headerHash:t,startKey:r,endKey:r,maximumSize:Ie(4096)}))),e.close()}}EB(131),EB(132);class KB extends q{epochIndex;ticket;static Codec=Fe.Class(KB,{epochIndex:Fe.u32.asOpaque(),ticket:ns.Codec});static create({epochIndex:e,ticket:t}){return new KB(e,t)}constructor(e,t){super(),this.epochIndex=e,this.ticket=t}}m.new(void 0,"protocol/ce-131-ce-132"),EB(133);class QB extends q{coreIndex;workPackage;static Codec=Fe.Class(QB,{coreIndex:Fe.u16.asOpaque(),workPackage:Gr.Codec});static create({coreIndex:e,workPackage:t}){return new QB(e,t)}constructor(e,t){super(),this.coreIndex=e,this.workPackage=t}}m.new(void 0,"protocol/ce-133"),Fe.blob,EB(134);class VB extends q{coreIndex;segmentsRootMappings;static Codec=Fe.Class(VB,{coreIndex:Fe.u16.asOpaque(),segmentsRootMappings:Fe.sequenceVarLen(Zr.Codec)});static create({coreIndex:e,segmentsRootMappings:t}){return new VB(e,t)}constructor(e,t){super(),this.coreIndex=e,this.segmentsRootMappings=t}}class FB extends q{workReportHash;signature;static Codec=Fe.Class(FB,{workReportHash:Fe.bytes(Ot).asOpaque(),signature:Fe.bytes(Ct).asOpaque()});static create({workReportHash:e,signature:t}){return new FB(e,t)}constructor(e,t){super(),this.workReportHash=e,this.signature=t}}m.new(void 0,"protocol/ce-134"),EB(135);class $B extends q{report;slot;signatures;static Codec=Fe.Class($B,{report:es.Codec,slot:Fe.u32.asOpaque(),signatures:br(e=>Ar(rs.Codec,{minLength:0,maxLength:e.validatorsCount,typicalLength:e.validatorsCount/2}))});static create({report:e,slot:t,signatures:r}){return new $B(e,t,r)}constructor(e,t,r){super(),this.report=e,this.slot=t,this.signatures=r}}m.new(void 0,"protocol/ce-135");const jB=t(import.meta.url)("node:net"),GB=t(import.meta.url)("node:path"),qB=t(import.meta.url)("node:buffer");var zB;!function(e){e[e.Msg=0]="Msg",e[e.Open=1]="Open",e[e.Close=2]="Close"}(zB||(zB={}));class WB{streamId;type;data;static Codec=Fe.Class(WB,{streamId:Fe.u32,type:Fe.u8.convert(e=>ye(e),e=>{switch(e){case zB.Msg:return zB.Msg;case zB.Open:return zB.Open;case zB.Close:return zB.Close;default:throw new Error(`Invalid 'StreamEnvelopeType' value: ${e}`)}}),data:Fe.blob});static create({streamId:e,type:t,data:r}){return new WB(e,t,r)}constructor(e,t,r){this.streamId=e,this.type=t,this.data=r}}class JB{streamByte;static Codec=Fe.Class(JB,{streamByte:Fe.u8});static create({streamByte:e}){return new JB(e)}constructor(e){this.streamByte=e}}const YB=m.new(void 0,"ext-ipc");class XB{streams=new Map;pendingStreams=new Map;streamHandlers=new Map;onEnd;sender;constructor(e){const t={finished:!1};t.listen=new Promise((e,r)=>{t.resolve=e,t.reject=r}),this.onEnd=t,this.sender=new eR(e)}registerHandlers(...e){for(const t of e)this.streamHandlers.set(t.kind,t)}withStreamOfKind(e,t){for(const[r,s]of this.streams.entries())if(s.kind===e)return void t(s,new ZB(r,this.sender));throw new Error(`Missing handler for ${e}!`)}withNewStream(e,t){const r=this.streamHandlers.get(e);if(void 0===r)throw new Error(`Stream with unregistered handler of kind: ${e} was requested to be opened.`);const s=this.streams,i=function e(){const t=Math.floor(65536*Math.random());return s.has(t)?e():t}();this.streams.set(i,r),this.pendingStreams.set(i,!0);const n=new ZB(i,this.sender);n.open(JB.create({streamByte:e})),t(r,n)}onSocketMessage(e){const t=_e.decodeObject(WB.Codec,e),r=t.streamId;YB.log(`[${r}] incoming message: ${t.type} ${t.data}`);const s=this.streams.get(r),i=new ZB(r,this.sender);if(void 0===s){if(t.type!==zB.Open)return void YB.warn(`[${r}] (unknown) got invalid type ${t.type}.`);const e=_e.decodeObject(JB.Codec,t.data),s=this.streamHandlers.get(e.streamByte);return void 0!==s?(YB.log(`[${r}] new stream for ${s.kind}`),this.streams.set(r,s),void i.open(e)):void i.close()}if(t.type===zB.Close){const e=this.streams.get(r);return e?.onClose(r,!1),void this.streams.delete(r)}t.type===zB.Msg?s.onStreamMessage(i,t.data):this.pendingStreams.delete(r)||YB.warn(`[${r}] got invalid type ${t.type}.`)}onClose({error:e}){YB.log(`Closing the handler. Reason: ${void 0!==e?e.message:"close"}.`);for(const[t,r]of this.streams.entries())r.onClose(t,void 0===e);this.streams.clear(),this.onEnd.finished=!0,void 0!==e?this.onEnd.reject(e):this.onEnd.resolve()}waitForEnd(){return YB.log("Waiting for the handler to be closed."),this.onEnd.listen}}class ZB{streamId;sender;constructor(e,t){this.streamId=e,this.sender=t}open(e){const t=Ne.encodeObject(JB.Codec,e);this.sender.send(Ne.encodeObject(WB.Codec,WB.create({streamId:this.streamId,type:zB.Open,data:t})))}bufferAndSend(e){return this.sender.send(Ne.encodeObject(WB.Codec,WB.create({streamId:this.streamId,type:zB.Msg,data:e}))),!0}close(){this.sender.send(Ne.encodeObject(WB.Codec,WB.create({streamId:this.streamId,type:zB.Close,data:re.blobFromNumbers([])})))}}class eR{socket;constructor(e){this.socket=e}send(e){!function(e,t){const r=new Uint8Array(tR);Ne.create({destination:r}).i32(t.length),e.write(r),e.write(t)}(this.socket,e.raw)}close(){this.socket.end()}}const tR=4;function rR(e){const t=function(e){const t=new Cn.EventEmitter;let r=null;return e.bestHeader.on(e=>{const s=e.data.materialize(),i=e.hash,n=kB.create({hash:i,slot:s.timeSlotIndex});r=n,t.emit("announcement",_B.create({header:s,final:n}))}),function(e,t,r,s){const i="win32"===b.platform()?"\\\\.\\pipe\\typeberry":GB.join(b.tmpdir(),"typeberry.ipc"),n=m.new(void 0,"ext-ipc"),o=(0,jB.createServer)(i=>{n.log("Client connected");const o=new XB(i);o.registerHandlers(new RB(t,()=>{})),o.registerHandlers(new HB(!0,r,s));const a=e=>{if(!(e instanceof _B))throw new Error(`Invalid annoncement received: ${e}`);o.withStreamOfKind(CB,(t,r)=>{t.sendAnnouncement(r,e)})};e.on("announcement",a),i.on("data",function(e){let t=qB.Buffer.alloc(0),r=-1;return s=>{t=qB.Buffer.concat([t,s]);do{if(-1===r){if(t.length<tR)break;r=t.readUint32LE(),t=t.subarray(tR)}if(t.length<r)break;const s=t.subarray(0,r);t=t.subarray(r),r=-1,e(s)}while(t.length>0)}}(e=>{try{o.onSocketMessage(new Uint8Array(e))}catch(e){n.error(`Received invalid data on socket: ${e}. Closing connection.`),i.end()}})),i.on("end",()=>{n.log("Client disconnected"),o.onClose({}),e.off("annoucement",a)}),i.on("error",e=>{n.error(`Socket error: ${e}`),o.onClose({error:e}),i.end()})});try{O.unlinkSync(i)}catch{}const a=new AbortController;return o.listen({path:i,signal:a.signal},()=>{n.log(`IPC server is listening at ${i}`)}),o.on("error",e=>{throw e}),()=>{n.info("Closing IPC server."),o.close(),a.abort(),o.unref()}}(t,()=>{const e=r??kB.create({hash:se.zero(Ot).asOpaque(),slot:Br(0)});return xB.create({final:e,leafs:[]})},()=>[],(e,t)=>{let r=re.blobFromNumbers([255,255,0,0]);return se.fromBlob(Qt("0x83bd3bde264a79a2e67c487696c1d7f0b549da89").raw.subarray(0,Wi),Wi).isEqualTo(t)&&(r=re.blobFromNumbers([255,255,255,0])),[new DB(t,r)]})}(e);return()=>{t()}}const sR=e=>e.endsWith(".json");function iR(e,t){const r=U().readFileSync(e),s=re.blobFrom(new Uint8Array(r));return _e.decodeObject(ms.Codec.View,s,t)}function nR(e,t){const r=U().readFileSync(e,"utf-8"),s=As(JSON.parse(r),(i=t,vs.object({header:qs,extrinsic:(n=i,vs.object({tickets:Vs,preimages:Ks,guarantees:Ls,assurances:Ss(n),disputes:_s},({tickets:e,preimages:t,guarantees:r,assurances:s,disputes:i})=>ys.create({tickets:e,preimages:t,guarantees:r,assurances:s,disputes:i})))},({header:e,extrinsic:t})=>ms.create({header:e,extrinsic:t}))));var i,n;const o=Ne.encodeObject(ms.Codec,s,t);return _e.decodeObject(ms.Codec.View,o,t)}const oR=JSON.parse('{"$schema":"./config-v1.schema.json","version":1,"flavor":"tiny","authorship":{"omit_seal_verification":false},"chain_spec":{"id":"typeberry-dev","bootnodes":["e3r2oc62zwfj3crnuifuvsxvbtlzetk4o5qyhetkhagsc2fgl2oka@127.0.0.1:40000","eecgwpgwq3noky4ijm4jmvjtmuzv44qvigciusxakq5epnrfj2utb@127.0.0.1:12345","en5ejs5b2tybkfh4ym5vpfh7nynby73xhtfzmazumtvcijpcsz6ma@127.0.0.1:12346","ekwmt37xecoq6a7otkm4ux5gfmm4uwbat4bg5m223shckhaaxdpqa@127.0.0.1:12347"],"genesis_header":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da293d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e948e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260fafff16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea020000ffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","genesis_state":{"01000000000000000000000000000000000000000000000000000000000000":"08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","02000000000000000000000000000000000000000000000000000000000000":"0b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb0","03000000000000000000000000000000000000000000000000000000000000":"00","04000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf426000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085f9095f4abd040839d793d89ab5ff25c61e50c844ab6765e2c0b22373b5a8f6fbe5fc0cd61fdde580b3d44fe1be127197e33b91960b10d2c6fc75aec03f36e16c2a8204961097dbc2c5ba7655543385399cc9ef08bf2e520ccf3b0a7569d88492e630ae2b14e758ab0960e372172203f4c9a41777dadd529971d7ab9d23ab29fe0e9c85ec450505dde7f5ac038274cf01aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bc5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d48e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e33d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d03d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d05e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161df16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d3d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d0aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bcaa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bc3d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e300","05000000000000000000000000000000000000000000000000000000000000":"00000000","06000000000000000000000000000000000000000000000000000000000000":"6f6ad2224d7d58aec6573c623ab110700eaca20a48dc2965d535e466d524af2a835ac82bfa2ce8390bb50680d4b7a73dfa2a4cff6d8c30694b24a605f9574eafd2d34655ebcad804c56d2fd5f932c575b6a5dbb3f5652c5202bcc75ab9c2cc958a715731759b7fceaae288bcb70a605c31cbdfae83d0f4a45dfc2b2458dc9fae","07000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","08000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","09000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","0a000000000000000000000000000000000000000000000000000000000000":"0000","0b000000000000000000000000000000000000000000000000000000000000":"00000000","0c000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000","0d000000000000000000000000000000000000000000000000000000000000":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","0e000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000","0f000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000","ff000000000000000000000000000000000000000000000000000000000000":"15f8485e3a88e86182e63280720d5ec9892578f0e577fb1bcdda5cf49795081500e40b540200000064000000000000006400000000000000100500000000000004000000","00fe00ff00ff00ff6326432b5b3213dfd1609495e13c6b276cb474d6796453":"09626f6f74737472617000000000000000000020000a00000000000628023307320015","00fe00ff00ff00fff8485e3a88e86182e63280720d5ec9892578f0e577fb1b":"09626f6f747374726170000000000000020000200032040000050283ae7900300194012f027802280d00000028ae00000028ab029511e07b10187b15107b1608648664783309043307000001ac967c9566fc5106769587047d7833050159083a8489ff003305025329c0002d3305035329e000253305045329f0001d3305055329f800153305065329fc000d8898fe009a850801ac564564587b175010029c026478e45607c95707d88709e48707c98707887720d479098217c8750594983307000001da95072805330801821018821510821608951120320000951150ff7b10a8007b15a0007b169800330908ac98e7003309fcaa97e5015107e101958af8957508510a457d583306015908408489ff003306025329c0002d3306035329e000253306045329f0001d3306055329f800153306065329fc000d8898fe009a860801ae6a092890003306017b166457646864a6501004e501821a51077be4a607c9a70753176072c85a089576a09587607b1751064c7d783305015908378489ff003305025329c0002d3305035329e000253305045329f0001d3305055329f800153305065329fc000d8898fe009a850801ac562a016458501006810128073305330701e45608c95808e47808c97808330921ae981d33083307000001018210a8008215a000821698009511b00032008219c89505c857077c792051090933083307286e958adf957521510a547d573306015907378477ff003306025327c0002d3306035327e000253306045327f0001d3306055327f800153306065327fc000d8877fe009a7608017b1aac6a920064576468501008e6006478821a28073306330801c86507e46a09c96909e6890801c878088088fc330964330a640a0964757b1708481114951714330804951908330a040a0395171833098000330850100a4a330820a107330964951a1864570a0b81180833070000023b080000029889183b090300029889103b090200029888083b080100023308202806ff0000003307000001330832008d7a84aa07c8a70b510a0e647c0178c895cc01acbcfbc9a903843cf8c8cb0a580c1d8482ff0014090101010101010101ca920c017bbc95bb08acabfb843907520905280ec8a9090178a895aa01ac9afb320051089b0064797c77510791005127ff0090006c7a570a09330a330828735527c0000d330a01330b80284a5527e0000e330a02330b40ff283c5527f0000e330a03330b20ff282e5527f8000e330a04330b10ff28205527fc000e330a05330b08ff2812887afe00330b04ff93ab02ff85aa0701ae8a2b3308c8b70764ab01c8b90c7ccc97880895bbffd4c808520bf28aa903cf9707c88707320032000000002124492a21494a22212121212132154a9224a5909a248d88482422494924242424244426ad0a258924a524121212121222a3504d92a43022a292a44a52120909090909914585aa26c924a924494a1421a984909090903c54495a92241140962465495111942a24854421514814124544a6342549923a","0023000000000000478648cd19b4f812f897a26976ecf312eac28508b4368d":"0100000000","004b000400000000f324d112c31c3778a072940b55dd35f3a4b77e72d2d2db":"0100000000"}},"database_base_path":"./database"}'),aR=m.new(void 0,"jam");var cR;async function lR(e,t){if(!T.isMainThread)return void aR.error("The main binary cannot be running as a Worker!");const r={isAuthoring:!1,blocksToImport:e.command===k.Import?e.args.files:null,nodeName:e.args.nodeName,config:gR(e.args.configPath)},s=dR(r.config.flavor),{rootDb:i,dbPath:n,genesisHeaderHash:o}=fR(r.nodeName,r.config.chainSpec.genesisHeader,t(r.config.databaseBasePath));await async function(e,t,r,s){const i=new vn(e,r),n=new En(e,r),o=i.getBestHeaderHash(),a=i.getPostStateRoot(o);if(aR.log(`🛢️ Best header hash: ${o}`),aR.log(`🛢️ Best state root: ${a}`),null!==a&&!a.isEqualTo(se.zero(Ot))&&!o.isEqualTo(se.zero(Ot)))return void await r.db.close();aR.log("🛢️ Database looks fresh. Initializing.");const c=_e.decodeObject(us.Codec,s.genesisHeader,e),l=ms.create({header:us.empty(),extrinsic:ys.create({tickets:[],preimages:[],assurances:[],guarantees:[],disputes:{verdicts:[],culprits:[],faults:[]}})}).extrinsic,h=ms.create({header:c,extrinsic:l}),u=_e.decodeObject(ms.Codec.View,Ne.encodeObject(ms.Codec,h,e),e);aR.log(`🧬 Writing genesis block #${c.timeSlotIndex}: ${t}`);const{genesisStateSerialized:d,genesisStateRootHash:f}=function(e,t){const r=bn.fromEntries(Array.from(t.entries())),s=ln.fromTruncatedDictionaryUnsafe(r),i=qi.fromStateEntries(e,s),n=s.getRootHash();return aR.info(`🧬 Genesis state root: ${n}`),{genesisState:i,genesisStateSerialized:s,genesisStateRootHash:n}}(e,s.genesisState);await i.insertBlock(new Ut(t,u)),await n.insertState(t,d),await i.setPostStateRoot(t,f),await i.setBestHeaderHash(t),await r.db.close()}(s,o,i,r.config.chainSpec);const a=await async function(){const e=xh,t=new Ch;return Vn(new URL("./bootstrap.mjs","file:///home/runner/work/typeberry/typeberry/workers/importer/index.ts"),e,"ready(main)",t)}(),c=rR({bestHeader:a.getState("ready(main)").onBestBlock}),l=new mr(s,n,r.config.authorship.omitSealVerification),h=a.transition((e,t)=>e.sendConfig(t,l)),u=uR(h,s,r.blocksToImport),d=await hR(r.isAuthoring,l,h);aR.info("[main]⌛ waiting for importer to finish");const f=await u;aR.log("[main] ☠️ Closing the extensions"),c(),aR.log("[main]⌛ waiting for tasks to finish"),await f.currentState().waitForWorkerToFinish(),aR.log("[main] ☠️ Closing the authorship module"),d(),aR.info("[main] ✅ Done.")}!function(e){e[e.InMemory=0]="InMemory",e[e.Lmdb=1]="Lmdb"}(cR||(cR={}));const hR=async(e,t,r)=>{if(!e)return()=>Promise.resolve();aR.info("✍️ Starting block generator.");const{generator:s,finish:i}=await async function(e){const t=(await async function(){const e=Nh,t=new Uh;return Vn(new URL("./bootstrap.mjs","file:///home/runner/work/typeberry/typeberry/workers/block-generator/index.ts"),e,"ready(main)",t)}()).transition((t,r)=>t.sendConfig(r,e));return{generator:t,finish:()=>(t.transition((e,t)=>e.finish(t)),t.waitForState("finished"))}}(t);return r.doUntil("finished",async(e,t)=>{s.currentState().onBlock.on(r=>{aR.log(`✍️ Produced block. Size: [${r.length}]`),e.sendBlock(t,r)})}),i},uR=async(e,t,r)=>null===r?e.waitForState("finished"):(aR.info(`📖 Reading ${r.length} blocks`),e.transition((e,s)=>{const i=function*(e){const{chainSpec:t}=e;for(const r of e.files){const e=sR(r)?nR(r,t):iR(r,t);yield e}}({files:r,chainSpec:t});for(const t of i)aR.log(`📖 Importing block: #${t.header.view().timeSlotIndex.materialize()}`),e.sendBlock(s,t.encoded().raw);return aR.info("All blocks scheduled to be imported."),e.finish(s)})),dR=e=>{if(e===Ys.Full)return yr;if(e===Ys.Tiny)return pr;throw new Error(`Unknown chain spec: ${e}. Possible options: ${[Ys.Full,Ys.Tiny]}`)};function fR(e,t,r,{readOnly:s=!1}={}){const i=Qt(e).toString().substring(2,10),n=Kt(t).asOpaque(),o=`${r}/${i}/${n.toString().substring(2,10)}`;aR.info(`🛢️ Opening database at ${o}`);try{return{dbPath:o,rootDb:new Sn(o,s),genesisHeaderHash:n}}catch(e){throw new Error(`Unable to open database at ${o}: ${e}`)}}function gR(e){if(e===v)return As(oR,Zs.fromJson);try{const t=U().readFileSync(e,"utf8");return As(JSON.parse(t),Zs.fromJson)}catch(t){throw new Error(`Unable to load config file from ${e}: ${t}`)}}if("file:///home/runner/work/typeberry/typeberry/bin/jam/index.ts"===(0,c.pathToFileURL)(process.argv[1]).href){m.configureAll(process.env.JAM_LOG??"",l.LOG);const e="undefined/../..",t=t=>t.startsWith("/")?t:`${e}/${t}`;let r;try{r=_(process.argv.slice(2),t)}catch(e){console.error(`\n${e}\n`),console.info(S),process.exit(1)}lR(r,t).catch(e=>{console.error(`${e}`),process.exit(-1)})}let pR;m.configureAll(process.env.JAM_LOG??"",l.LOG);try{pR=_(process.argv.slice(2),yR)}catch(e){console.error(`\n${e}\n`),console.info(S),process.exit(1)}function yR(e){return e}lR(pR,yR).catch(e=>{console.error(`${e}`),process.exit(-1)});export{k as Command,w as DEFAULTS,v as DEV_CONFIG,cR as DatabaseKind,S as HELP,dR as getChainSpec,gR as loadConfig,lR as main,fR as openDatabase,_ as parseArgs};
|
|
2
|
+
import{fileURLToPath as e}from"node:url";import{createRequire as t}from"node:module";import*as r from"lmdb";import*as s from"minimist";var i={8:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.matchingBitCount=t.intLog2=t.cidrPrefixToMaskBinaryString=t.leftPadWithZeroBit=t.dottedDecimalNotationToBinaryString=t.parseBinaryStringToBigInt=t.decimalNumberToOctetString=t.numberToBinaryString=void 0,t.numberToBinaryString=e=>e.toString(2),t.decimalNumberToOctetString=e=>{let r=t.numberToBinaryString(e);if(r.length>8)throw new Error("Given decimal in binary contains digits greater than an octet");return t.leftPadWithZeroBit(r,8)},t.parseBinaryStringToBigInt=e=>BigInt(`0b${e}`),t.dottedDecimalNotationToBinaryString=e=>e.split(".").reduce((e,r)=>e.concat(t.decimalNumberToOctetString(parseInt(r))),""),t.leftPadWithZeroBit=(e,t)=>{if(e.length>t)throw new Error(`Given string is already longer than given final length after padding: ${t}`);return"0".repeat(t-e.length).concat(e)},t.cidrPrefixToMaskBinaryString=(e,t)=>{let r;if(r="IPv4"==t?32:128,e>r)throw Error(`Value is greater than ${r}`);return`${"1".repeat(e)}${"0".repeat(r-e)}`},t.intLog2=e=>{let t=0;for(;e%2n==0n;){if(2n===e){t++;break}if((e>>=1n)%2n!=0n){t=0;break}t++}if(0==t)throw new Error(`The value of log2 for ${e.toString()} is not an integer`);return t},t.matchingBitCount=(e,t)=>{let r,s;e.length>=t.length?(r=e,s=t):(r=t,s=e);let i=0;for(;i<r.length&&r.charAt(i)===s.charAt(i);i++);return i}},54:e=>{e.exports=function e(r,s){if(!r){var i=new t(s);throw Error.captureStackTrace&&Error.captureStackTrace(i,e),i}};class t extends Error{}t.prototype.name="AssertionError"},154:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Hexadecatet=void 0;const s=r(660);class i{constructor(e){let t;t="string"==typeof e?parseInt(e,16):parseInt(String(e),16);let[r,i]=s.Validator.isValidIPv6Hexadecatet(BigInt(t));if(!r)throw Error(i.filter(e=>""!==e).toString());this.value=t}static fromString(e){return new i(e)}static fromNumber(e){return new i(e)}getValue(){return this.value}toString(){return this.value.toString(16)}}t.Hexadecatet=i},212:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4=t.IPv6Mask=t.IPv4Mask=t.IPv6=t.Asn=t.IPv4=t.AbstractIPNum=void 0;const s=r(301),i=r(660),n=r(8),o=r(8),a=r(8),c=r(8),l=r(154),h=r(984),u=r(872),d=r(984);class g{getValue(){return this.value}toBinaryString(){return a.leftPadWithZeroBit(this.value.toString(2),this.bitSize)}hasNext(){return this.value<this.maximumBitSize}hasPrevious(){return this.value>0n}isEquals(e){return this.value===e.value}isLessThan(e){return this.value<e.value}isGreaterThan(e){return this.value>e.value}isLessThanOrEquals(e){return this.value<=e.value}isGreaterThanOrEquals(e){return this.value>=e.value}}t.AbstractIPNum=g;class f extends g{constructor(e){if(super(),this.bitSize=32,this.maximumBitSize=i.Validator.THIRTY_TWO_BIT_SIZE,this.type="IPv4",this.octets=[],this.separator=".","string"==typeof e){let[t,r]=this.constructFromDecimalDottedString(e);this.value=t,this.octets=r}else{let[t,r]=this.constructFromBigIntValue(e);this.value=t,this.octets=r}}static fromNumber(e){return new f(e)}static fromDecimalDottedString(e){return new f(e)}static fromString(e){return f.fromDecimalDottedString(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0])return new f(o.parseBinaryStringToBigInt(e));throw Error(t[1].join(","))}toString(){return this.octets.map(e=>e.toString()).join(this.separator)}getOctets(){return this.octets}nextIPNumber(){return f.fromNumber(this.getValue()+1n)}previousIPNumber(){return f.fromNumber(this.getValue()-1n)}toIPv4MappedIPv6(){let e="1".repeat(16)+this.toBinaryString();return y.fromBinaryString(e)}constructFromDecimalDottedString(e){let t,r,[o,a]=i.Validator.isValidIPv4String(e);if(!o)throw new Error(a.filter(e=>""!==e).toString());return t=e.split(".").map(e=>s.Octet.fromString(e)),r=BigInt(`0b${n.dottedDecimalNotationToBinaryString(e)}`),[r,t]}constructFromBigIntValue(e){let[t,r]=i.Validator.isValidIPv4Number(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=c.numberToBinaryString(e);return[e="bigint"==typeof e?e:BigInt(e),this.binaryStringToDecimalOctets(s)]}binaryStringToDecimalOctets(e){return e.length<32&&(e=a.leftPadWithZeroBit(e,32)),e.match(/.{1,8}/g).map(e=>s.Octet.fromString(o.parseBinaryStringToBigInt(e).toString()))}}t.IPv4=f;class p extends g{constructor(e){if(super(),this.bitSize=32,this.maximumBitSize=i.Validator.THIRTY_TWO_BIT_SIZE,this.type="ASN","string"==typeof e)p.startWithASPrefix(e)?this.value=BigInt(parseInt(e.substring(2))):-1!=e.indexOf(".")?this.value=BigInt(this.parseFromDotNotation(e)):this.value=BigInt(parseInt(e));else{let t=BigInt(e),[r,s]=i.Validator.isValidAsnNumber(t);if(!r)throw Error(s.filter(e=>""!==e).toString());this.value=t}}static fromString(e){return new p(e)}static fromNumber(e){return new p(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0])return new p(parseInt(e,2));throw Error(t[1].join(","))}toString(){let e=this.value.toString();return`${p.AS_PREFIX}${e}`}toASPlain(){return this.value.toString()}toASDot(){return this.value.valueOf()>=65536n?this.toASDotPlus():this.toASPlain()}toASDotPlus(){let e=this.value.valueOf()/65535n;return`${e}.${this.value.valueOf()%65535n-e}`}toBinaryString(){return c.numberToBinaryString(this.value)}is16Bit(){let[e]=i.Validator.isValid16BitAsnNumber(this.value);return e}is32Bit(){return!this.is16Bit()}nextIPNumber(){return new p(this.value.valueOf()+1n)}previousIPNumber(){return new p(this.value.valueOf()-1n)}static startWithASPrefix(e){return 0===e.indexOf(p.AS_PREFIX)}parseFromDotNotation(e){let t=e.split("."),r=parseInt(t[0]);return 65535*r+(parseInt(t[1])+r)}}t.Asn=p,p.AS_PREFIX="AS";class y extends g{constructor(e){if(super(),this.bitSize=128,this.maximumBitSize=i.Validator.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE,this.type="IPv6",this.hexadecatet=[],this.separator=":","string"==typeof e){let t=u.expandIPv6Number(e),[r,s]=this.constructFromHexadecimalDottedString(t);this.value=r,this.hexadecatet=s}else{let[t,r]=this.constructFromBigIntValue(e);this.value=t,this.hexadecatet=r}}static fromBigInt(e){return new y(e)}static fromHexadecatet(e){return new y(e)}static fromString(e){return y.fromHexadecatet(e)}static fromBinaryString(e){let t=i.Validator.isValidBinaryString(e);if(t[0]){let t=a.leftPadWithZeroBit(e,128);return new y(o.parseBinaryStringToBigInt(t))}throw Error(t[1].join(","))}static fromIPv4(e){return e.toIPv4MappedIPv6()}static fromIPv4DotDecimalString(e){return new f(e).toIPv4MappedIPv6()}toString(){let e=this.hexadecatet.map(e=>e.toString()).join(":");return this.hexadecatet.length<8?"::"+e:e}getHexadecatet(){return this.hexadecatet}nextIPNumber(){return y.fromBigInt(this.getValue()+1n)}previousIPNumber(){return y.fromBigInt(this.getValue()-1n)}constructFromBigIntValue(e){let[t,r]=i.Validator.isValidIPv6Number(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=c.numberToBinaryString(e);return[e,this.binaryStringToHexadecatets(s)]}constructFromHexadecimalDottedString(e){let[t,r]=i.Validator.isValidIPv6String(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let s=e.split(":").map(e=>l.Hexadecatet.fromString(e));return[BigInt(`0b${d.hexadectetNotationToBinaryString(e)}`),s]}binaryStringToHexadecatets(e){let t=h.binaryStringToHexadecimalString(e);for(;t.length%4!=0;)t="0"+t;return t.match(/.{1,4}/g).map(e=>l.Hexadecatet.fromString(e))}}t.IPv6=y;class m extends f{constructor(e){let t,r;if(super(e),this.octets=[],[t,r]=i.Validator.isValidIPv4Mask(e),!t)throw new Error(r.filter(e=>""!==e).toString());let o=e.split(".");this.octets=o.map(e=>s.Octet.fromString(e));let a=n.dottedDecimalNotationToBinaryString(e);this.prefix=(a.match(/1/g)||[]).length,this.value=BigInt(`0b${a}`)}static fromDecimalDottedString(e){return new m(e)}}t.IPv4Mask=m;class b extends y{constructor(e){let t,r;super(e),this.hexadecatet=[];let s=u.expandIPv6Number(e);if([t,r]=i.Validator.isValidIPv6Mask(s),!t)throw new Error(r.filter(e=>""!==e).toString());let n=s.split(":");this.hexadecatet=n.map(e=>l.Hexadecatet.fromString(e));let o=d.hexadectetNotationToBinaryString(s);this.prefix=(o.match(/1/g)||[]).length,this.value=BigInt(`0b${o}`),this.value=BigInt(`0b${d.hexadectetNotationToBinaryString(s)}`)}static fromHexadecatet(e){return new b(e)}}t.IPv6Mask=b,t.isIPv4=function(e){return 32===e.bitSize}},259:e=>{var t,r,s=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:4*t-205]=t;return t=>{for(var r=t.length,s=new Uint8Array(3*(r-("="==t[r-1])-("="==t[r-2]))/4|0),i=0,n=0;i<r;){var o=e[t.charCodeAt(i++)],a=e[t.charCodeAt(i++)],c=e[t.charCodeAt(i++)],l=e[t.charCodeAt(i++)];s[n++]=o<<2|a>>4,s[n++]=a<<4|c>>2,s[n++]=c<<6|l}return s}})(),i=(t={"wasm-binary:./blake2b.wat"(e,t){t.exports=s("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=")}},function(){return r||(0,t[Object.keys(t)[0]])((r={exports:{}}).exports,r),r.exports})(),n=WebAssembly.compile(i);e.exports=async e=>(await WebAssembly.instantiate(await n,e)).exports},287:e=>{function t(e){return Buffer.isBuffer(e)?e:Buffer.from(e.buffer,e.byteOffset,e.byteLength)}e.exports={isBuffer:function(e){return Buffer.isBuffer(e)||e instanceof Uint8Array},isEncoding:function(e){return Buffer.isEncoding(e)},alloc:function(e,t,r){return Buffer.alloc(e,t,r)},allocUnsafe:function(e){return Buffer.allocUnsafe(e)},allocUnsafeSlow:function(e){return Buffer.allocUnsafeSlow(e)},byteLength:function(e,t){return Buffer.byteLength(e,t)},compare:function(e,t){return Buffer.compare(e,t)},concat:function(e,t){return Buffer.concat(e,t)},copy:function(e,r,s,i,n){return t(e).copy(r,s,i,n)},equals:function(e,r){return t(e).equals(r)},fill:function(e,r,s,i,n){return t(e).fill(r,s,i,n)},from:function(e,t,r){return Buffer.from(e,t,r)},includes:function(e,r,s,i){return t(e).includes(r,s,i)},indexOf:function(e,r,s,i){return t(e).indexOf(r,s,i)},lastIndexOf:function(e,r,s,i){return t(e).lastIndexOf(r,s,i)},swap16:function(e){return t(e).swap16()},swap32:function(e){return t(e).swap32()},swap64:function(e){return t(e).swap64()},toBuffer:t,toString:function(e,r,s,i){return t(e).toString(r,s,i)},write:function(e,r,s,i,n){return t(e).write(r,s,i,n)},writeDoubleLE:function(e,r,s){return t(e).writeDoubleLE(r,s)},writeFloatLE:function(e,r,s){return t(e).writeFloatLE(r,s)},writeUInt32LE:function(e,r,s){return t(e).writeUInt32LE(r,s)},writeInt32LE:function(e,r,s){return t(e).writeInt32LE(r,s)},readDoubleLE:function(e,r){return t(e).readDoubleLE(r)},readFloatLE:function(e,r){return t(e).readFloatLE(r)},readUInt32LE:function(e,r){return t(e).readUInt32LE(r)},readInt32LE:function(e,r){return t(e).readInt32LE(r)}}},301:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Octet=void 0;const s=r(660);class i{constructor(e){let t;t="string"==typeof e?parseInt(e):e;let[r,i]=s.Validator.isValidIPv4Octet(BigInt(t));if(!r)throw Error(i.filter(e=>""!==e).toString());this.value=t}static fromString(e){return new i(e)}static fromNumber(e){return new i(e)}getValue(){return this.value}toString(){return this.value.toString(10)}}t.Octet=i},405:(t,r,s)=>{var i=e(import.meta.url+"/..").slice(0,-1);let n,o=null;function a(){return null!==o&&0!==o.byteLength||(o=new Uint8Array(n.memory.buffer)),o}let c=0;function l(e,t){const r=t(1*e.length,1)>>>0;return a().set(e,r/1),c=e.length,r}let h=null;function u(){return null!==h&&0!==h.byteLength||(h=new Int32Array(n.memory.buffer)),h}function d(e,t){return e>>>=0,a().subarray(e/1,e/1+t)}t.exports.hc=function(e){try{const i=n.__wbindgen_add_to_stack_pointer(-16),o=l(e,n.__wbindgen_malloc),a=c;n.ring_commitment(i,o,a);var t=u()[i/4+0],r=u()[i/4+1],s=d(t,r).slice();return n.__wbindgen_free(t,1*r,1),s}finally{n.__wbindgen_add_to_stack_pointer(16)}},t.exports.KG=function(e,t,r,s,i){try{const g=n.__wbindgen_add_to_stack_pointer(-16),f=l(e,n.__wbindgen_malloc),p=c,y=l(r,n.__wbindgen_malloc),m=c,b=l(s,n.__wbindgen_malloc),A=c,I=l(i,n.__wbindgen_malloc),v=c;n.verify_seal(g,f,p,t,y,m,b,A,I,v);var o=u()[g/4+0],a=u()[g/4+1],h=d(o,a).slice();return n.__wbindgen_free(o,1*a,1),h}finally{n.__wbindgen_add_to_stack_pointer(16)}},t.exports.ZJ=function(e,t,r){try{const a=n.__wbindgen_add_to_stack_pointer(-16),h=l(e,n.__wbindgen_malloc),g=c,f=l(t,n.__wbindgen_malloc),p=c;n.batch_verify_tickets(a,h,g,f,p,r);var s=u()[a/4+0],i=u()[a/4+1],o=d(s,i).slice();return n.__wbindgen_free(s,1*i,1),o}finally{n.__wbindgen_add_to_stack_pointer(16)}};const g=s(928).join(i,"bandersnatch_bg.wasm"),f=s(896).readFileSync(g),p=new WebAssembly.Module(f),y=new WebAssembly.Instance(p,{});n=y.exports},412:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4CidrRange=t.IPv6CidrRange=t.IPv4CidrRange=t.AbstractIPRange=t.RangedSet=void 0;const s=r(212),i=r(516),n=r(8),o=r(660);class a{constructor(e,t){if(this.first=e,this.last=t,e.isGreaterThan(t))throw new Error(`${e.toString()} should be lower than ${t.toString()}`);this.currentValue=e,this.bitValue=BigInt(e.bitSize)}static fromSingleIP(e){return new a(e,e)}static fromCidrRange(e){return new a(e.getFirst(),e.getLast())}static fromRangeString(e){let t=e.split("-").map(e=>e.trim());if(2!==t.length)throw new Error("Argument should be in the format firstip-lastip");let[r,i]=t,[n]=o.Validator.isValidIPv4String(r),[c]=o.Validator.isValidIPv4String(i),[l]=o.Validator.isValidIPv6String(r),[h]=o.Validator.isValidIPv6String(i);if(n&&c)return new a(s.IPv4.fromDecimalDottedString(r),s.IPv4.fromDecimalDottedString(i));if(l&&h)return new a(s.IPv6.fromHexadecatet(r),s.IPv6.fromHexadecatet(i));throw new Error("First IP and Last IP should be valid and same type")}getFirst(){return this.first}getLast(){return this.last}getSize(){return this.last.getValue()-this.first.getValue()+1n}toRangeString(){return`${this.getFirst()}-${this.getLast()}`}inside(e){return e.contains(this)}contains(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return t.isLessThanOrEquals(s)&&r.isGreaterThanOrEquals(i)}isEquals(e){return this.getFirst().isEquals(e.getFirst())&&this.getLast().isEquals(e.getLast())}isLessThan(e){return!this.isEquals(e)&&(this.getFirst().isEquals(e.getFirst())?this.getSize()<e.getSize():this.getFirst().isLessThan(e.getFirst()))}isGreaterThan(e){return!this.isEquals(e)&&(this.getFirst().isEquals(e.getFirst())?this.getSize()>e.getSize():this.getFirst().isGreaterThan(e.getFirst()))}isOverlapping(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return r.isGreaterThan(s)&&r.isLessThanOrEquals(i)&&t.isLessThan(s)||i.isGreaterThan(t)&&i.isLessThanOrEquals(r)&&s.isLessThan(t)}isCidrAble(){if(1n===this.getSize())return!0;try{let e=n.intLog2(this.getSize()),t=n.parseBinaryStringToBigInt(n.cidrPrefixToMaskBinaryString(e,s.isIPv4(this.currentValue)?"IPv4":"IPv6"));return this.first.getValue()===(t&this.first.getValue())}catch(e){return!1}}toCidrRange(){return s.isIPv4(this.currentValue)?this.toIPv4CidrRange():this.toIPv6CidrRange()}isConsecutive(e){let t=this.getFirst(),r=this.getLast(),s=e.getFirst(),i=e.getLast();return r.hasNext()&&r.nextIPNumber().isEquals(s)||i.hasNext()&&i.nextIPNumber().isEquals(t)}union(e){if(this.isEquals(e))return new a(e.getFirst(),e.getLast());if(this.isOverlapping(e))return this.getFirst().isLessThan(e.getFirst())?new a(this.getFirst(),e.getLast()):new a(e.getFirst(),this.getLast());if(this.contains(e))return new a(this.getFirst(),this.getLast());if(e.contains(this))return new a(e.getFirst(),e.getLast());throw new Error("Ranges do not overlap nor are equal")}prepend(e){if(e.getLast().nextIPNumber().isEquals(this.getFirst()))return new a(e.getFirst(),this.getLast());throw new Error("Range to prepend must be adjacent")}append(e){if(this.getLast().nextIPNumber().isEquals(e.getFirst()))return new a(this.getFirst(),e.getLast());throw new Error("Range to append must be adjacent")}subtract(e){if(!this.isOverlapping(e))throw new Error("Cannot subtract ranges that are not overlapping");if(!this.isLessThan(e))throw new Error("Cannot subtract a larger range from this range");return new a(this.getFirst(),e.getLast())}takeSubRange(e,t){if(e+t>this.getSize())throw new RangeError("Requested range is greater than what can be taken");if(0n===t)throw new Error("Sub range cannot be zero");let r=this.getFirst().value+e,i=s.isIPv4(this.getFirst())?s.IPv4.fromNumber(r):s.IPv6.fromBigInt(r),n=i.value+(t-1n),o=s.isIPv4(i)?s.IPv4.fromNumber(n):s.IPv6.fromBigInt(n);return new a(i,o)}difference(e){if(e.getSize()>this.getSize())throw new Error("Range is greater than range to be subtracted from");if(!this.contains(e))throw new Error("Range to subtract is not contained in this range");let t=[];try{t.push(new a(this.getFirst(),e.getFirst().previousIPNumber()))}catch(e){}try{t.push(new a(e.getLast().nextIPNumber(),this.getLast()))}catch(e){}return t}*take(e){let t=this.getFirst(),r=void 0===e?this.getSize().valueOf():e;for(;r>0;)r--,yield t,t=t.nextIPNumber()}*[Symbol.iterator](){yield*this.take()}toIPv4CidrRange(){let e=new l(s.IPv4.fromNumber(this.getFirst().getValue()),i.IPv4Prefix.fromRangeSize(this.getSize()));if(e.getFirst().isEquals(this.getFirst()))return e;throw new Error("Range cannot be converted to CIDR")}toIPv6CidrRange(){let e=new h(s.IPv6.fromBigInt(this.getFirst().getValue()),i.IPv6Prefix.fromRangeSize(this.getSize()));if(e.getFirst().isEquals(this.getFirst()))return e;throw new Error("Range cannot be converted to CIDR")}}t.RangedSet=a;class c{hasNextRange(){let e=this.getSize();return 2n**this.bitValue-e>=this.getFirst().getValue()+e}hasPreviousRange(){return this.getSize()<=this.getFirst().getValue()}toRangeSet(){return new a(this.getFirst(),this.getLast())}inside(e){return this.toRangeSet().inside(e.toRangeSet())}contains(e){return this.toRangeSet().contains(e.toRangeSet())}toRangeString(){return this.toRangeSet().toRangeString()}isOverlapping(e){return this.toRangeSet().isOverlapping(e.toRangeSet())}isConsecutive(e){return this.toRangeSet().isConsecutive(e.toRangeSet())}isCidrMergeable(e){const t=BigInt(n.matchingBitCount(this.getFirst().toBinaryString(),e.getFirst().toBinaryString()));return this.getPrefix().value-t===1n&&this.isConsecutive(e)&&this.getSize()===e.getSize()}isMergeable(e){return this.isCidrMergeable(e)||this.contains(e)||this.inside(e)}isEquals(e){return this.toRangeSet().isEquals(e.toRangeSet())}merge(e){if(!this.isCidrMergeable(e))throw new Error(`Cannot merge. Ranges (${this.toRangeString()},${e.toRangeString()}) are not consecutive and/or of same size`);return this.newInstance(this.getFirst(),this.getPrefix().merge())}*takeStream(e){return this.toRangeSet().take(e)}*[Symbol.iterator](){yield*this.toRangeSet()}}t.AbstractIPRange=c;class l extends c{constructor(e,t){super(),this.ipv4=e,this.cidrPrefix=t,this.bitValue=32n}static fromCidr(e){let[t,r]=o.Validator.isValidIPv4CidrNotation(e);if(!t){let e=r.filter(e=>""!==e);throw new Error(e.join(" and "))}let n=e.split("/"),a=n[0],c=BigInt(parseInt(n[1]));return new l(s.IPv4.fromDecimalDottedString(a),i.IPv4Prefix.fromNumber(c))}getSize(){return this.cidrPrefix.toRangeSize()}toCidrString(){return`${this.ipv4.toString().toString()}/${this.cidrPrefix.toString()}`}toRangeString(){return super.toRangeString()}getFirst(){return s.IPv4.fromNumber(this.ipv4.getValue()&this.cidrPrefix.toMask().getValue())}getLast(){return u(this,this.ipv4)}newInstance(e,t){return new l(e,t)}getPrefix(){return this.cidrPrefix}isConsecutive(e){return super.isConsecutive(e)}contains(e){return super.contains(e)}inside(e){return super.inside(e)}isOverlapping(e){return super.isOverlapping(e)}take(e){let t=[this.getFirst()],r=this.getFirst();if(e>this.getSize()){let t=o.Validator.takeOutOfRangeSizeMessage.replace("$count",e.toString()).replace("$size",this.getSize().toString());throw new Error(t)}for(let s=0;s<e-1n;s++)t.push(r.nextIPNumber()),r=r.nextIPNumber();return t}split(){let e=this.cidrPrefix.getValue();if(32n===e)throw new Error("Cannot split an IP range with a single IP number");let t=i.IPv4Prefix.fromNumber(e+1n),r=this.getFirst(),s=new l(r,t),n=s.getLast().nextIPNumber();return[s,new l(n,t)]}splitInto(e){let t=e.getValue()-this.cidrPrefix.getValue();if(t<0)throw new Error("Prefix to split into is larger than source prefix");if(0n===t)return[new l(this.getFirst(),e)];if(1n===t)return this.split();{let e=this.split();for(;t>1;)e=e.flatMap(e=>e.split()),t-=1n;return e}}hasNextRange(){return super.hasNextRange()}hasPreviousRange(){return super.hasPreviousRange()}nextRange(){if(this.hasNextRange()){let e=this.getSize(),t=this.getFirst().getValue()+e;return new l(new s.IPv4(t),this.cidrPrefix)}}previousRange(){if(this.hasPreviousRange()){let e=this.getSize(),t=this.getFirst().getValue()-e;return new l(new s.IPv4(t),this.cidrPrefix)}}}t.IPv4CidrRange=l;class h extends c{constructor(e,t){super(),this.ipv6=e,this.cidrPrefix=t,this.bitValue=128n}static fromCidr(e){let[t,r]=o.Validator.isValidIPv6CidrNotation(e);if(!t)throw new Error(r.filter(e=>""!==e).toString());let n=e.split("/"),a=n[0],c=BigInt(parseInt(n[1]));return new h(s.IPv6.fromHexadecatet(a),i.IPv6Prefix.fromNumber(c))}getSize(){return this.cidrPrefix.toRangeSize()}toCidrString(){return`${this.ipv6.toString().toString()}/${this.cidrPrefix.toString()}`}toRangeString(){return super.toRangeString()}getFirst(){return s.IPv6.fromBigInt(this.ipv6.getValue()&this.cidrPrefix.toMask().getValue())}getLast(){return u(this,this.ipv6)}newInstance(e,t){return new h(e,t)}getPrefix(){return this.cidrPrefix}isConsecutive(e){return super.isConsecutive(e)}contains(e){return super.contains(e)}inside(e){return super.inside(e)}isOverlapping(e){return super.isOverlapping(e)}take(e){let t=[this.getFirst()],r=this.getFirst();if(e>this.getSize())throw new Error(`${e.toString()} is greater than ${this.getSize().toString()}, the size of the range`);for(var s=0;s<e-1n;s++)t.push(r.nextIPNumber()),r=r.nextIPNumber();return t}split(){let e=this.cidrPrefix.getValue();if(128n===e)throw new Error("Cannot split an IP range with a single IP number");let t=i.IPv6Prefix.fromNumber(e+1n),r=this.getFirst(),s=new h(r,t),n=s.getLast().nextIPNumber();return[s,new h(n,t)]}splitInto(e){let t=e.getValue()-this.cidrPrefix.getValue();if(t<0)throw new Error("Prefix to split into is larger than source prefix");if(0n===t)return[new h(this.getFirst(),e)];if(1n===t)return this.split();{let e=this.split();for(;t>1;)e=e.flatMap(e=>e.split()),t-=1n;return e}}hasNextRange(){return super.hasNextRange()}hasPreviousRange(){return super.hasPreviousRange()}nextRange(){if(this.hasNextRange()){let e=this.getSize(),t=this.getFirst().getValue()+e;return new h(new s.IPv6(t),this.cidrPrefix)}}previousRange(){if(this.hasPreviousRange()){let e=this.getSize(),t=this.getFirst().getValue()-e;return new h(new s.IPv6(t),this.cidrPrefix)}}}t.IPv6CidrRange=h;let u=(e,t)=>{let r=Number(e.bitValue.valueOf()),i=BigInt(`0b${"1".repeat(r)}`),o=e.cidrPrefix.toMask().getValue(),a=n.leftPadWithZeroBit((o^i).toString(2),r);return d(e)?s.IPv4.fromNumber(t.getValue()|n.parseBinaryStringToBigInt(a)):s.IPv6.fromBigInt(t.getValue()|n.parseBinaryStringToBigInt(a))};function d(e){return 32n===e.bitValue.valueOf()}t.isIPv4CidrRange=d},429:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},516:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIPv4Prefix=t.IPv6Prefix=t.IPv4Prefix=void 0;const s=r(660),i=r(212),n=r(8),o=r(984),a=r(154);class c{constructor(e){let t,r;if(this.type="IPv4",this.bitValue=32n,[t,r]=s.Validator.isValidPrefixValue(e,"IPv4"),!t)throw new Error(r.filter(e=>""!==e).toString());this.value=e}static fromNumber(e){return new c(e)}static fromRangeSize(e){let t=1n===e?32:32-h(e,s.Validator.IPV4_SIZE);return c.fromNumber(BigInt(t))}getValue(){return this.value}toString(){return this.value.toString()}toMask(){let e="1".repeat(Number(this.value)),t="0".repeat(Number(32n-this.value));return i.IPv4Mask.fromDecimalDottedString(this.toDecimalNotation(`${e}${t}`))}toRangeSize(){return 1n<<this.bitValue-this.getValue()}merge(){return new c(this.value-1n)}split(){return new c(this.value+1n)}toDecimalNotation(e){return`${n.parseBinaryStringToBigInt(e.substr(0,8))}.${n.parseBinaryStringToBigInt(e.substr(8,8))}.${n.parseBinaryStringToBigInt(e.substr(16,8))}.${n.parseBinaryStringToBigInt(e.substr(24,8))}`}}t.IPv4Prefix=c;class l{constructor(e){let t,r;if(this.type="IPv6",this.bitValue=128n,[t,r]=s.Validator.isValidPrefixValue(e,"IPv6"),!t)throw new Error(r.filter(e=>""!==e).toString());this.value=e}static fromNumber(e){return new l(e)}static fromRangeSize(e){let t=1n===e?128:128-h(e,s.Validator.IPV6_SIZE);return l.fromNumber(BigInt(t))}getValue(){return this.value}toString(){return this.value.toString()}toMask(){let e="1".repeat(Number(this.value)),t="0".repeat(128-Number(this.value));return i.IPv6Mask.fromHexadecatet(this.toHexadecatetNotation(`${e}${t}`))}toRangeSize(){return 1n<<this.bitValue-this.getValue()}merge(){return new l(this.value-1n)}split(){return new l(this.value+1n)}toHexadecatetNotation(e){return e.match(/.{1,16}/g).map(e=>a.Hexadecatet.fromString(o.binaryStringToHexadecimalString(e))).map(e=>e.toString()).join(":")}}function h(e,t){let r=t>s.Validator.IPV4_SIZE?"IPv6":"IPv4";if(e>t||0n===e)throw new Error(s.Validator.invalidIPRangeSizeMessage.replace("$iptype",r));try{return n.intLog2(e)}catch(e){throw new Error(s.Validator.invalidIPRangeSizeForCidrMessage)}}t.IPv6Prefix=l,t.isIPv4Prefix=function(e){return"IPv4"===e.type}},578:(e,t,r)=>{var s=r(54),i=r(287),n=null,o="undefined"!=typeof WebAssembly&&r(259)().then(e=>{n=e}),a=64,c=[];e.exports=p;var l=e.exports.BYTES_MIN=16,h=e.exports.BYTES_MAX=64,u=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),d=e.exports.KEYBYTES_MAX=64,g=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),f=e.exports.PERSONALBYTES=16;function p(e,t,r,i,o){if(!(this instanceof p))return new p(e,t,r,i,o);if(!n)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),!0!==o&&(s(e>=l,"digestLength must be at least "+l+", was given "+e),s(e<=h,"digestLength must be at most "+h+", was given "+e),null!=t&&(s(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),s(t.length>=u,"key must be at least "+u+", was given "+t.length),s(t.length<=d,"key must be at least "+d+", was given "+t.length)),null!=r&&(s(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),s(r.length===g,"salt must be exactly "+g+", was given "+r.length)),null!=i&&(s(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),s(i.length===f,"personal must be exactly "+f+", was given "+i.length))),c.length||(c.push(a),a+=216),this.digestLength=e,this.finalized=!1,this.pointer=c.pop(),this._memory=new Uint8Array(n.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=t?t.length:0,this._memory[2]=1,this._memory[3]=1,r&&this._memory.set(r,32),i&&this._memory.set(i,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),n.blake2b_init(this.pointer,this.digestLength),t&&(this.update(t),this._memory.fill(0,a,a+t.length),this._memory[this.pointer+200]=128)}function y(){}p.prototype._realloc=function(e){n.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(n.memory.buffer)},p.prototype.update=function(e){return s(!1===this.finalized,"Hash instance finalized"),s(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),a+e.length>this._memory.length&&this._realloc(a+e.length),this._memory.set(e,a),n.blake2b_update(this.pointer,a,a+e.length),this},p.prototype.digest=function(e){if(s(!1===this.finalized,"Hash instance finalized"),this.finalized=!0,c.push(this.pointer),n.blake2b_final(this.pointer),!e||"binary"===e)return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if("string"==typeof e)return i.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);s(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var t=0;t<this.digestLength;t++)e[t]=this._memory[this.pointer+128+t];return e},p.prototype.final=p.prototype.digest,p.WASM=n,p.SUPPORTED="undefined"!=typeof WebAssembly,p.ready=function(e){return e||(e=y),o?o.then(()=>e(),e):e(new Error("WebAssembly not supported"))},p.prototype.ready=p.ready,p.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)},p.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)}},618:function(e,t,r){var s=this&&this.__createBinding||(Object.create?function(e,t,r,s){void 0===s&&(s=r),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,s){void 0===s&&(s=r),e[s]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||s(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(8),t),i(r(154),t),i(r(984),t),i(r(212),t),i(r(429),t),i(r(951),t),i(r(412),t),i(r(872),t),i(r(301),t),i(r(516),t),i(r(660),t)},625:(t,r,s)=>{var i=e(import.meta.url+"/..").slice(0,-1);let n,o={};o.__wbindgen_placeholder__=t.exports;let a=null;function c(){return null!==a&&0!==a.byteLength||(a=new Uint8Array(n.memory.buffer)),a}let l=0;function h(e,t){const r=t(1*e.length,1)>>>0;return c().set(e,r/1),l=e.length,r}t.exports.verify_ed25519=function(e){const t=h(e,n.__wbindgen_malloc),r=l,s=n.verify_ed25519(t,r);var i,o,a=(i=s[0],o=s[1],i>>>=0,c().subarray(i/1,i/1+o)).slice();return n.__wbindgen_free(s[0],1*s[1],1),a},t.exports.verify_ed25519_batch=function(e){const t=h(e,n.__wbindgen_malloc),r=l;return 0!==n.verify_ed25519_batch(t,r)},t.exports.__wbindgen_init_externref_table=function(){const e=n.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)};const u=s(928).join(i,"ed25519_wasm_bg.wasm"),d=s(896).readFileSync(u),g=new WebAssembly.Module(d),f=new WebAssembly.Instance(g,o);n=f.exports,t.exports.__wasm=n,n.__wbindgen_start()},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Validator=void 0;const s=r(8),i=r(8),n=r(872),o=r(984),a=r(984);class c{static isWithinRange(e,t,r){return e>=t&&e<=r}static isValidAsnNumber(e){let t=this.isWithinRange(e,0n,this.THIRTY_TWO_BIT_SIZE);return[t,t?[]:[c.invalidAsnRangeMessage]]}static isValid16BitAsnNumber(e){let t=c.isWithinRange(e,0n,c.SIXTEEN_BIT_SIZE);return[t,t?[]:[c.invalid16BitAsnRangeMessage]]}static isValidIPv4Number(e){e="bigint"==typeof e?e:BigInt(e);let t=this.isWithinRange(e,0n,this.THIRTY_TWO_BIT_SIZE);return t?[t,[]]:[t,[c.invalidIPv4NumberMessage]]}static isValidIPv6Number(e){let t=this.isWithinRange(e,0n,this.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE);return t?[t,[]]:[t,[c.invalidIPv6NumberMessage]]}static isValidIPv4Octet(e){let t=this.isWithinRange(e,0n,this.EIGHT_BIT_SIZE);return[t,t?[]:[c.invalidOctetRangeMessage]]}static isValidIPv6Hexadecatet(e){let t=this.isWithinRange(e,0n,this.SIXTEEN_BIT_SIZE);return t?[t,[]]:[t,[c.invalidHexadecatetMessage]]}static isValidIPv4String(e){let t=e.split(".");if(4!=t.length||t.includes(""))return[!1,[c.invalidOctetCountMessage]];let r=t.every(e=>!!c.isNumeric(e)&&c.isValidIPv4Octet(BigInt(e))[0]);return r?(r=c.IPV4_PATTERN.test(e),[r,r?[]:[c.invalidIPv4PatternMessage]]):[!1,[c.invalidOctetRangeMessage]]}static isValidIPv6String(e){try{let t=n.expandIPv6Number(e).split(":");if(8!=t.length)return[!1,[c.invalidHexadecatetCountMessage]];let r=t.every(e=>!!c.isHexadecatet(e)&&c.isValidIPv6Hexadecatet(BigInt(`0x${e}`))[0]);return r?(r=c.IPV6_PATTERN.test(e),[r,r?[]:[c.invalidIPv6PatternMessage]]):[!1,[c.invalidHexadecatetMessage]]}catch(e){return[!1,[e]]}}static isValidPrefixValue(e,t){if("IPv4"===t){let t=c.isWithinRange(BigInt(e),0n,32n);return[t,t?[]:[c.invalidPrefixValueMessage]]}if("IPv6"===t){let t=c.isWithinRange(BigInt(e),0n,128n);return[t,t?[]:[c.invalidPrefixValueMessage]]}return[!1,[c.invalidInetNumType]]}static isValidIPv4Mask(e){let t=s.dottedDecimalNotationToBinaryString(e),r=c.IPV4_CONTIGUOUS_MASK_BIT_PATTERN.test(t);return r?[r,[]]:[r,[c.invalidMaskMessage]]}static isValidIPv6Mask(e){let t=a.hexadectetNotationToBinaryString(e),r=c.IPV6_CONTIGUOUS_MASK_BIT_PATTERN.test(t);return r?[r,[]]:[r,[c.invalidMaskMessage]]}static isValidIPv4CidrNotation(e){let t=e.split("/");if(2!==t.length||0===t[0].length||0===t[1].length)return[!1,[c.invalidIPv4CidrNotationMessage]];let r=t[0],s=t[1];if(isNaN(Number(s)))return[!1,[c.invalidIPv4CidrNotationMessage]];let[i,n]=c.isValidIPv4String(r),[o,a]=c.isValidPrefixValue(BigInt(s),"IPv4"),l=i&&o,h=n.concat(a);return l?[l,[]]:[l,h]}static isValidIPv4CidrRange(e){return c.isValidCidrRange(e,c.isValidIPv4CidrNotation,s.dottedDecimalNotationToBinaryString,e=>i.cidrPrefixToMaskBinaryString(e,"IPv4"))}static isValidIPv6CidrRange(e){return c.isValidCidrRange(e,c.isValidIPv6CidrNotation,o.colonHexadecimalNotationToBinaryString,e=>i.cidrPrefixToMaskBinaryString(e,"IPv6"))}static isValidCidrRange(e,t,r,s){let i=t(e);if(!i[0])return i;let n=e.split("/"),o=n[0],a=n[1],l=BigInt(`0b${r(o)}`),h=(l&BigInt(`0b${s(parseInt(a))}`))===l;return h?[h,[]]:[h,[c.InvalidIPCidrRangeMessage]]}static isValidIPv4RangeString(e){return this.isValidRange(e,c.isValidIPv4String,(e,t)=>BigInt(`0b${s.dottedDecimalNotationToBinaryString(e)}`)>=BigInt(`0b${s.dottedDecimalNotationToBinaryString(t)}`))}static isValidIPv6RangeString(e){return this.isValidRange(e,c.isValidIPv6String,(e,t)=>BigInt(`0b${a.hexadectetNotationToBinaryString(e)}`)>=BigInt(`0b${a.hexadectetNotationToBinaryString(t)}`))}static isValidRange(e,t,r){let s=e.split("-").map(e=>e.trim());if(2!==s.length||0===s[0].length||0===s[1].length)return[!1,[c.invalidRangeNotationMessage]];let i=s[0],n=s[1],[o,a]=t(i),[l,h]=t(n),u=o&&l;if(u&&r(i,n))return[!1,[c.invalidRangeFirstNotGreaterThanLastMessage]];let d=a.concat(h);return u?[u,[]]:[u,d]}static isValidIPv6CidrNotation(e){let t=c.IPV6_RANGE_PATTERN.test(e);return t?[t,[]]:[t,[c.invalidIPv6CidrNotationString]]}static isValidBinaryString(e){return/^([10])+$/.test(e)?[!0,[]]:[!1,[c.invalidBinaryStringErrorMessage]]}static isNumeric(e){return/^(\d+)$/.test(e)}static isHexadecatet(e){return/^[0-9A-Fa-f]{4}$/.test(e)}}t.Validator=c,c.IPV4_PATTERN=new RegExp(/^(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$/),c.IPV6_PATTERN=new RegExp(/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-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-Fa-f]{1,4}:){5}(((:[0-9A-Fa-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-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-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-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-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-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-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-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-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-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-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}))|:)))(%.+)?\s*$/),c.IPV4_RANGE_PATTERN=new RegExp(/^(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/)([1-9]|[1-2][0-9]|3[0-2])$/),c.IPV6_RANGE_PATTERN=new RegExp(/^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$/),c.IPV4_CONTIGUOUS_MASK_BIT_PATTERN=new RegExp(/^(1){0,32}(0){0,32}$/),c.IPV6_CONTIGUOUS_MASK_BIT_PATTERN=new RegExp(/^(1){0,128}(0){0,128}$/),c.EIGHT_BIT_SIZE=BigInt(`0b${"1".repeat(8)}`),c.SIXTEEN_BIT_SIZE=BigInt(`0b${"1".repeat(16)}`),c.THIRTY_TWO_BIT_SIZE=BigInt(`0b${"1".repeat(32)}`),c.ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_SIZE=BigInt(`0b${"1".repeat(128)}`),c.IPV4_SIZE=BigInt("4294967296"),c.IPV6_SIZE=BigInt("340282366920938463463374607431768211456"),c.invalidAsnRangeMessage="ASN number given less than zero or is greater than 32bit",c.invalid16BitAsnRangeMessage="ASN number given less than zero or is greater than 16bit",c.invalidIPv4NumberMessage="IPv4 number given less than zero or is greater than 32bit",c.invalidIPv6NumberMessage="IPv6 number given less than zero or is greater than 128bit",c.invalidOctetRangeMessage="Value given contains an invalid Octet; Value is less than zero or is greater than 8bit",c.invalidHexadecatetMessage="The value given is less than zero or is greater than 16bit",c.invalidOctetCountMessage="An IP4 number cannot have less or greater than 4 octets",c.invalidHexadecatetCountMessage="An IP6 number must have exactly 8 hexadecatet",c.invalidMaskMessage="The Mask is invalid",c.invalidPrefixValueMessage="A Prefix value cannot be less than 0 or greater than 32",c.invalidIPv4CidrNotationMessage="Cidr notation should be in the form [ip number]/[range]",c.InvalidIPCidrRangeMessage="Given IP number portion must is not the start of the range",c.invalidRangeNotationMessage="Range notation should be in the form [first ip]-[last ip]",c.invalidRangeFirstNotGreaterThanLastMessage="First IP in [first ip]-[last ip] must be less than Last IP",c.invalidIPv6CidrNotationString="A Cidr notation string should contain an IPv6 number and prefix",c.takeOutOfRangeSizeMessage="$count is greater than $size, the size of the range",c.cannotSplitSingleRangeErrorMessage="Cannot split an IP range with a single IP number",c.invalidInetNumType="Given ipNumType must be either InetNumType.IPv4 or InetNumType.IPv6",c.invalidBinaryStringErrorMessage="Binary string should contain only contiguous 1s and 0s",c.invalidIPRangeSizeMessage="Given size is zero or greater than maximum size of $iptype",c.invalidIPRangeSizeForCidrMessage="Given size can't be created via cidr prefix",c.invalidIPv4PatternMessage="Given IPv4 is not confirm to a valid IPv6 address",c.invalidIPv6PatternMessage="Given IPv6 is not confirm to a valid IPv6 address"},675:(e,t,r)=>{var s=r(54),i=r(578);function n(e,t,r){var s=e[t]+e[r],i=e[t+1]+e[r+1];s>=4294967296&&i++,e[t]=s,e[t+1]=i}function o(e,t,r,s){var i=e[t]+r;r<0&&(i+=4294967296);var n=e[t+1]+s;i>=4294967296&&n++,e[t]=i,e[t+1]=n}function a(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function c(e,t,r,s,i,a){var c=d[i],l=d[i+1],h=d[a],g=d[a+1];n(u,e,t),o(u,e,c,l);var f=u[s]^u[e],p=u[s+1]^u[e+1];u[s]=p,u[s+1]=f,n(u,r,s),f=u[t]^u[r],p=u[t+1]^u[r+1],u[t]=f>>>24^p<<8,u[t+1]=p>>>24^f<<8,n(u,e,t),o(u,e,h,g),f=u[s]^u[e],p=u[s+1]^u[e+1],u[s]=f>>>16^p<<16,u[s+1]=p>>>16^f<<16,n(u,r,s),f=u[t]^u[r],p=u[t+1]^u[r+1],u[t]=p>>>31^f<<1,u[t+1]=f>>>31^p<<1}var l=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),h=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(function(e){return 2*e})),u=new Uint32Array(32),d=new Uint32Array(32);function g(e,t){var r=0;for(r=0;r<16;r++)u[r]=e.h[r],u[r+16]=l[r];for(u[24]=u[24]^e.t,u[25]=u[25]^e.t/4294967296,t&&(u[28]=~u[28],u[29]=~u[29]),r=0;r<32;r++)d[r]=a(e.b,4*r);for(r=0;r<12;r++)c(0,8,16,24,h[16*r+0],h[16*r+1]),c(2,10,18,26,h[16*r+2],h[16*r+3]),c(4,12,20,28,h[16*r+4],h[16*r+5]),c(6,14,22,30,h[16*r+6],h[16*r+7]),c(0,10,20,30,h[16*r+8],h[16*r+9]),c(2,12,22,24,h[16*r+10],h[16*r+11]),c(4,14,16,26,h[16*r+12],h[16*r+13]),c(6,8,18,28,h[16*r+14],h[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^u[r]^u[r+16]}var f=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function p(e,t,r,s){f.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,f[0]=e,t&&(f[1]=t.length),f[2]=1,f[3]=1,r&&f.set(r,32),s&&f.set(s,48);for(var i=0;i<16;i++)this.h[i]=l[i]^a(f,4*i);t&&(y(this,t),this.c=128)}function y(e,t){for(var r=0;r<t.length;r++)128===e.c&&(e.t+=e.c,g(e,!1),e.c=0),e.b[e.c++]=t[r]}function m(e){return e<16?"0"+e.toString(16):e.toString(16)}p.prototype.update=function(e){return s(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),y(this,e),this},p.prototype.digest=function(e){var t=e&&"binary"!==e&&"hex"!==e?e:new Uint8Array(this.outlen);return s(t instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),s(t.length>=this.outlen,"out must have at least outlen bytes of space"),function(e,t){for(e.t+=e.c;e.c<128;)e.b[e.c++]=0;g(e,!0);for(var r=0;r<e.outlen;r++)t[r]=e.h[r>>2]>>8*(3&r)}(this,t),"hex"===e?function(e){for(var t="",r=0;r<e.length;r++)t+=m(e[r]);return t}(t):t},p.prototype.final=p.prototype.digest,p.ready=function(e){i.ready(function(){e()})};var b=p;e.exports=function(e,t,r,i,n){return!0!==n&&(s(e>=A,"outlen must be at least "+A+", was given "+e),s(e<=I,"outlen must be at most "+I+", was given "+e),null!=t&&(s(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),s(t.length>=v,"key must be at least "+v+", was given "+t.length),s(t.length<=w,"key must be at most "+w+", was given "+t.length)),null!=r&&(s(r instanceof Uint8Array,"salt must be Uint8Array or Buffer"),s(r.length===S,"salt must be exactly "+S+", was given "+r.length)),null!=i&&(s(i instanceof Uint8Array,"personal must be Uint8Array or Buffer"),s(i.length===E,"personal must be exactly "+E+", was given "+i.length))),new b(e,t,r,i)},e.exports.ready=function(e){i.ready(function(){e()})},e.exports.WASM_SUPPORTED=i.SUPPORTED,e.exports.WASM_LOADED=!1;var A=e.exports.BYTES_MIN=16,I=e.exports.BYTES_MAX=64,v=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),w=e.exports.KEYBYTES_MAX=64,S=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),E=e.exports.PERSONALBYTES=16;i.ready(function(t){t||(e.exports.WASM_LOADED=!0,e.exports=i)})},872:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.collapseIPv6Number=t.expandIPv6Number=void 0;const s=r(8),i=r(660);let n=e=>e.includes("/")?`/${e.split("/")[1]}`:"";t.expandIPv6Number=e=>{let t=e=>e.map(e=>s.leftPadWithZeroBit(e,4)).join(":");if(/(:){3,}/.test(e))throw"given IPv6 contains consecutive : more than two";const r=n(e);if(e.includes("/")&&(e=e.split("/")[0]),!i.Validator.IPV6_PATTERN.test(e))throw Error(i.Validator.invalidIPv6PatternMessage);if(e.includes("::")){let s=e.split("::"),i=s[0],n=s[1],o=i.split(":").filter(e=>""!==e),a=n.split(":").filter(e=>""!==e),c=(e=>{let t=[];for(let r=0;r<e;r++)t.push("0000");return t.join(":")})(8-(o.length+a.length)),l=t(o);""!==l&&(l+=":");let h=t(a);return""!==h&&(h=":"+h),`${l}${c}${h}${r}`}return`${t(e.split(":"))}${r}`},t.collapseIPv6Number=e=>{const t=n(e);if(e.includes("/")&&(e=e.split("/")[0]),!i.Validator.IPV6_PATTERN.test(e))throw Error(i.Validator.invalidIPv6PatternMessage);let r=e.split(":").map(e=>{let t=e.replace(/^0+/,"");return""!==t?t:"0"}).join(":").replace(/((^0)?(:0){2,}|(^0)(:0){1,})/,":");return":"===r.slice(-1)?`${r}:${t}`:(r=r.replace(":0:","::"),`${r}${t}`)}},884:e=>{e.exports="data:application/javascript;base64,aW1wb3J0IHsgdHNJbXBvcnQgfSBmcm9tICJ0c3gvZXNtL2FwaSI7CmNvbnN0IHsgd29ya2VyIH0gPSBhd2FpdCB0c0ltcG9ydCgiLi93b3JrZXIudHMiLCBpbXBvcnQubWV0YS51cmwpOwp3b3JrZXIubGlzdGVuVG9QYXJlbnRQb3J0KCk7Cg=="},896:e=>{e.exports=t(import.meta.url)("fs")},909:()=>{var e;!function(e){!function(){var t="object"==typeof globalThis?globalThis:"object"==typeof global?global:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(e){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(e){}}(),r=s(e);function s(e,t){return function(r,s){Object.defineProperty(e,r,{configurable:!0,writable:!0,value:s}),t&&t(r,s)}}void 0!==t.Reflect&&(r=s(t.Reflect,r)),function(e,t){var r=Object.prototype.hasOwnProperty,s="function"==typeof Symbol,i=s&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",n=s&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",o="function"==typeof Object.create,a={__proto__:[]}instanceof Array,c=!o&&!a,l={create:o?function(){return Q(Object.create(null))}:a?function(){return Q({__proto__:null})}:function(){return Q({})},has:c?function(e,t){return r.call(e,t)}:function(e,t){return t in e},get:c?function(e,t){return r.call(e,t)?e[t]:void 0}:function(e,t){return e[t]}},h=Object.getPrototypeOf(Function),u="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var e={},t=[],r=function(){function e(e,t,r){this._index=0,this._keys=e,this._values=t,this._selector=r}return e.prototype["@@iterator"]=function(){return this},e.prototype[n]=function(){return this},e.prototype.next=function(){var e=this._index;if(e>=0&&e<this._keys.length){var r=this._selector(this._keys[e],this._values[e]);return e+1>=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}(),s=function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var r=this._find(e,!0);return this._values[r]=t,this},t.prototype.delete=function(t){var r=this._find(t,!1);if(r>=0){for(var s=this._keys.length,i=r+1;i<s;i++)this._keys[i-1]=this._keys[i],this._values[i-1]=this._values[i];return this._keys.length--,this._values.length--,N(t,this._cacheKey)&&(this._cacheKey=e,this._cacheIndex=-2),!0}return!1},t.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=e,this._cacheIndex=-2},t.prototype.keys=function(){return new r(this._keys,this._values,i)},t.prototype.values=function(){return new r(this._keys,this._values,o)},t.prototype.entries=function(){return new r(this._keys,this._values,a)},t.prototype["@@iterator"]=function(){return this.entries()},t.prototype[n]=function(){return this.entries()},t.prototype._find=function(e,t){if(!N(this._cacheKey,e)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(N(this._keys[r],e)){this._cacheIndex=r;break}}return this._cacheIndex<0&&t&&(this._cacheIndex=this._keys.length,this._keys.push(e),this._values.push(void 0)),this._cacheIndex},t}();return s;function i(e,t){return e}function o(e,t){return t}function a(e,t){return[e,t]}}(),d="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function e(){this._map=new u}return Object.defineProperty(e.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),e.prototype.has=function(e){return this._map.has(e)},e.prototype.add=function(e){return this._map.set(e,e),this},e.prototype.delete=function(e){return this._map.delete(e)},e.prototype.clear=function(){this._map.clear()},e.prototype.keys=function(){return this._map.keys()},e.prototype.values=function(){return this._map.keys()},e.prototype.entries=function(){return this._map.entries()},e.prototype["@@iterator"]=function(){return this.keys()},e.prototype[n]=function(){return this.keys()},e}(),g="function"==typeof WeakMap?WeakMap:function(){var e=l.create(),t=s();return function(){function e(){this._key=s()}return e.prototype.has=function(e){var t=i(e,!1);return void 0!==t&&l.has(t,this._key)},e.prototype.get=function(e){var t=i(e,!1);return void 0!==t?l.get(t,this._key):void 0},e.prototype.set=function(e,t){return i(e,!0)[this._key]=t,this},e.prototype.delete=function(e){var t=i(e,!1);return void 0!==t&&delete t[this._key]},e.prototype.clear=function(){this._key=s()},e}();function s(){var t;do{t="@@WeakMap@@"+o()}while(l.has(e,t));return e[t]=!0,t}function i(e,s){if(!r.call(e,t)){if(!s)return;Object.defineProperty(e,t,{value:l.create()})}return e[t]}function n(e,t){for(var r=0;r<t;++r)e[r]=255*Math.random()|0;return e}function o(){var e=function(e){if("function"==typeof Uint8Array){var t=new Uint8Array(e);return"undefined"!=typeof crypto?crypto.getRandomValues(t):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(t):n(t,e),t}return n(new Array(e),e)}(16);e[6]=79&e[6]|64,e[8]=191&e[8]|128;for(var t="",r=0;r<16;++r){var s=e[r];4!==r&&6!==r&&8!==r||(t+="-"),s<16&&(t+="0"),t+=s.toString(16).toLowerCase()}return t}}(),f=s?Symbol.for("@reflect-metadata:registry"):void 0,p=function(){var e;return!C(f)&&x(t.Reflect)&&Object.isExtensible(t.Reflect)&&(e=t.Reflect[f]),C(e)&&(e=function(){var e,r,s,i;C(f)||void 0===t.Reflect||f in t.Reflect||"function"!=typeof t.Reflect.defineMetadata||(e=function(e){var t=e.defineMetadata,r=e.hasOwnMetadata,s=e.getOwnMetadata,i=e.getOwnMetadataKeys,n=e.deleteMetadata,o=new g,a={isProviderFor:function(e,t){var r=o.get(e);return!(C(r)||!r.has(t))||!!i(e,t).length&&(C(r)&&(r=new d,o.set(e,r)),r.add(t),!0)},OrdinaryDefineOwnMetadata:t,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:s,OrdinaryOwnMetadataKeys:i,OrdinaryDeleteMetadata:n};return a}(t.Reflect));var n=new g,o={registerProvider:a,getProvider:l,setProvider:p};return o;function a(t){if(!Object.isExtensible(o))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case e===t:break;case C(r):r=t;break;case r===t:break;case C(s):s=t;break;case s===t:break;default:void 0===i&&(i=new d),i.add(t)}}function c(t,n){if(!C(r)){if(r.isProviderFor(t,n))return r;if(!C(s)){if(s.isProviderFor(t,n))return r;if(!C(i))for(var o=M(i);;){var a=L(o);if(!a)return;var c=P(a);if(c.isProviderFor(t,n))return H(o),c}}}if(!C(e)&&e.isProviderFor(t,n))return e}function l(e,t){var r,s=n.get(e);return C(s)||(r=s.get(t)),C(r)?(C(r=c(e,t))||(C(s)&&(s=new u,n.set(e,s)),s.set(t,r)),r):r}function h(e){if(C(e))throw new TypeError;return r===e||s===e||!C(i)&&i.has(e)}function p(e,t,r){if(!h(r))throw new Error("Metadata provider not registered.");var s=l(e,t);if(s!==r){if(!C(s))return!1;var i=n.get(e);C(i)&&(i=new u,n.set(e,i)),i.set(t,r)}return!0}}()),!C(f)&&x(t.Reflect)&&Object.isExtensible(t.Reflect)&&Object.defineProperty(t.Reflect,f,{enumerable:!1,configurable:!1,writable:!1,value:e}),e}(),y=function(e){var t=new g,r={isProviderFor:function(e,r){var s=t.get(e);return!C(s)&&s.has(r)},OrdinaryDefineOwnMetadata:function(e,t,r,i){s(r,i,!0).set(e,t)},OrdinaryHasOwnMetadata:function(e,t,r){var i=s(t,r,!1);return!C(i)&&_(i.has(e))},OrdinaryGetOwnMetadata:function(e,t,r){var i=s(t,r,!1);if(!C(i))return i.get(e)},OrdinaryOwnMetadataKeys:function(e,t){var r=[],i=s(e,t,!1);if(C(i))return r;for(var n=M(i.keys()),o=0;;){var a=L(n);if(!a)return r.length=o,r;var c=P(a);try{r[o]=c}catch(e){try{H(n)}finally{throw e}}o++}},OrdinaryDeleteMetadata:function(e,r,i){var n=s(r,i,!1);if(C(n))return!1;if(!n.delete(e))return!1;if(0===n.size){var o=t.get(r);C(o)||(o.delete(i),0===o.size&&t.delete(o))}return!0}};return p.registerProvider(r),r;function s(s,i,n){var o=t.get(s),a=!1;if(C(o)){if(!n)return;o=new u,t.set(s,o),a=!0}var c=o.get(i);if(C(c)){if(!n)return;if(c=new u,o.set(i,c),!e.setProvider(s,i,r))throw o.delete(i),a&&t.delete(s),new Error("Wrong provider for target.")}return c}}(p);function m(e,t,r){if(b(e,t,r))return!0;var s=K(t);return!k(s)&&m(e,s,r)}function b(e,t,r){var s=V(t,r,!1);return!C(s)&&_(s.OrdinaryHasOwnMetadata(e,t,r))}function A(e,t,r){if(b(e,t,r))return I(e,t,r);var s=K(t);return k(s)?void 0:A(e,s,r)}function I(e,t,r){var s=V(t,r,!1);if(!C(s))return s.OrdinaryGetOwnMetadata(e,t,r)}function v(e,t,r,s){V(r,s,!0).OrdinaryDefineOwnMetadata(e,t,r,s)}function w(e,t){var r=S(e,t),s=K(e);if(null===s)return r;var i=w(s,t);if(i.length<=0)return r;if(r.length<=0)return i;for(var n=new d,o=[],a=0,c=r;a<c.length;a++){var l=c[a];n.has(l)||(n.add(l),o.push(l))}for(var h=0,u=i;h<u.length;h++)l=u[h],n.has(l)||(n.add(l),o.push(l));return o}function S(e,t){var r=V(e,t,!1);return r?r.OrdinaryOwnMetadataKeys(e,t):[]}function E(e){if(null===e)return 1;switch(typeof e){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===e?1:6;default:return 6}}function C(e){return void 0===e}function k(e){return null===e}function x(e){return"object"==typeof e?null!==e:"function"==typeof e}function B(e,t){switch(E(e)){case 0:case 1:case 2:case 3:case 4:case 5:return e}var r=3===t?"string":5===t?"number":"default",s=D(e,i);if(void 0!==s){var n=s.call(e,r);if(x(n))throw new TypeError;return n}return function(e,t){if("string"===t){var r=e.toString;if(U(r)&&!x(i=r.call(e)))return i;if(U(s=e.valueOf)&&!x(i=s.call(e)))return i}else{var s;if(U(s=e.valueOf)&&!x(i=s.call(e)))return i;var i,n=e.toString;if(U(n)&&!x(i=n.call(e)))return i}throw new TypeError}(e,"default"===r?"number":r)}function _(e){return!!e}function R(e){var t=B(e,3);return"symbol"==typeof t?t:function(e){return""+e}(t)}function O(e){return Array.isArray?Array.isArray(e):e instanceof Object?e instanceof Array:"[object Array]"===Object.prototype.toString.call(e)}function U(e){return"function"==typeof e}function T(e){return"function"==typeof e}function N(e,t){return e===t||e!=e&&t!=t}function D(e,t){var r=e[t];if(null!=r){if(!U(r))throw new TypeError;return r}}function M(e){var t=D(e,n);if(!U(t))throw new TypeError;var r=t.call(e);if(!x(r))throw new TypeError;return r}function P(e){return e.value}function L(e){var t=e.next();return!t.done&&t}function H(e){var t=e.return;t&&t.call(e)}function K(e){var t=Object.getPrototypeOf(e);if("function"!=typeof e||e===h)return t;if(t!==h)return t;var r=e.prototype,s=r&&Object.getPrototypeOf(r);if(null==s||s===Object.prototype)return t;var i=s.constructor;return"function"!=typeof i||i===e?t:i}function V(e,t,r){var s=p.getProvider(e,t);if(!C(s))return s;if(r){if(p.setProvider(e,t,y))return y;throw new Error("Illegal state.")}}function Q(e){return e.__=void 0,delete e.__,e}e("decorate",function(e,t,r,s){if(C(r)){if(!O(e))throw new TypeError;if(!T(t))throw new TypeError;return function(e,t){for(var r=e.length-1;r>=0;--r){var s=(0,e[r])(t);if(!C(s)&&!k(s)){if(!T(s))throw new TypeError;t=s}}return t}(e,t)}if(!O(e))throw new TypeError;if(!x(t))throw new TypeError;if(!x(s)&&!C(s)&&!k(s))throw new TypeError;return k(s)&&(s=void 0),function(e,t,r,s){for(var i=e.length-1;i>=0;--i){var n=(0,e[i])(t,r,s);if(!C(n)&&!k(n)){if(!x(n))throw new TypeError;s=n}}return s}(e,t,r=R(r),s)}),e("metadata",function(e,t){return function(r,s){if(!x(r))throw new TypeError;if(!C(s)&&!function(e){switch(E(e)){case 3:case 4:return!0;default:return!1}}(s))throw new TypeError;v(e,t,r,s)}}),e("defineMetadata",function(e,t,r,s){if(!x(r))throw new TypeError;return C(s)||(s=R(s)),v(e,t,r,s)}),e("hasMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),m(e,t,r)}),e("hasOwnMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),b(e,t,r)}),e("getMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),A(e,t,r)}),e("getOwnMetadata",function(e,t,r){if(!x(t))throw new TypeError;return C(r)||(r=R(r)),I(e,t,r)}),e("getMetadataKeys",function(e,t){if(!x(e))throw new TypeError;return C(t)||(t=R(t)),w(e,t)}),e("getOwnMetadataKeys",function(e,t){if(!x(e))throw new TypeError;return C(t)||(t=R(t)),S(e,t)}),e("deleteMetadata",function(e,t,r){if(!x(t))throw new TypeError;if(C(r)||(r=R(r)),!x(t))throw new TypeError;C(r)||(r=R(r));var s=V(t,r,!1);return!C(s)&&s.OrdinaryDeleteMetadata(e,t,r)})}(r,t),void 0===t.Reflect&&(t.Reflect=e)}()}(e||(e={}))},928:e=>{e.exports=t(import.meta.url)("path")},951:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Pool=void 0;const s=r(412),i=r(516);class n{constructor(e){this.backingSet=new o,e.forEach(e=>{this.backingSet.add(e)})}static fromIP(e){let t=e.map(e=>s.RangedSet.fromSingleIP(e));return new n(t)}static fromRangeSet(e){return new n(e)}static fromCidrRanges(e){let t=e.map(e=>e.toRangeSet());return new n(t)}getRanges(){return this.backingSet.asArray()}aggregate(){let e=this.backingSet.asArray().reduce((e,t,r,s)=>{if(0==e.length)return e.push(t),e;{let r=e.pop(),s=r.toCidrRange(),i=t.toCidrRange();if(s.isCidrMergeable(i)){let t=s.merge(i);return e.push(t.toRangeSet()),e}return r.contains(t)?e.push(r):(e.push(r),e.push(t)),e}},[]),t=n.fromRangeSet(e);return t.getRanges().length!==this.getRanges().length?t.aggregate():t}getCidrRange(e){if(e.toRangeSize()>this.getSize())throw new Error(`Not enough IP number in the pool for requested prefix: ${e}`);let t,r;e:for(let s of this.getRanges())for(let i=0n;i+e.toRangeSize()<=s.getSize();i+=1n)try{let r=s.takeSubRange(i,e.toRangeSize());t=r.toCidrRange();let n=s.difference(r);this.removeExact(s),this.add(n);break e}catch(e){if(e instanceof RangeError)continue e;r=e}if(t)return t;throw void 0===r?new Error(`No range big enough in the pool for requested prefix: ${e}`):r}getCidrRanges(e){if(e.toRangeSize()>this.getSize())throw new Error("Prefix greater than pool");let t=(e,r,s)=>{try{let i=this.getCidrRange(r);s.push(i);let n=s.reduce((e,t)=>e+t.getSize(),0n);return e.toRangeSize()===n?s:t(e,r,s)}catch(n){let o=i.isIPv4Prefix(r)?i.IPv4Prefix.fromNumber(r.getValue()+1n):i.IPv6Prefix.fromNumber(r.getValue()+1n);return t(e,o,s)}};return t(e,e,[])}getSize(){return this.aggregate().getRanges().reduce((e,t)=>e+t.getSize(),0n)}resetWith(e){this.backingSet.clear(),this.backingSet=this.backingSet.add(e)}removeExact(e){let t=this.backingSet.removeExact(e),r=!this.backingSet.isEquals(t);return this.backingSet=t,r}removeOverlapping(e){let t=this.backingSet.removeOverlapping(e),r=!this.backingSet.isEquals(t);return this.backingSet=t,r}add(e){this.backingSet=this.backingSet.add(e)}clear(){this.backingSet.clear()}}t.Pool=n;class o{constructor(e){this.backingArray=e?this.sortArray(e):new Array}sortArray(e){return e.sort((e,t)=>e.isLessThan(t)?-1:e.isGreaterThan(t)?1:0),e}asArray(){return this.backingArray}isEquals(e){return this.backingArray.length===e.asArray().length&&this.backingArray.every((t,r)=>t.getSize()===e.asArray()[r].getSize())}add(e){let t=this.backingArray;return"push"in e?t=t.concat(e):t.push(e),new o(this.sortArray(t))}removeExact(e){let t=this.backingArray.filter(t=>"push"in e?void 0!==e.find(e=>e.isEquals(t)):!e.isEquals(t));return new o(this.sortArray(t))}removeOverlapping(e){let t=this.backingArray.flatMap(t=>{if("push"in e)return e.flatMap(e=>t.contains(e)?t.difference(e):t.inside(e)?new Array:t.isOverlapping(e)?[t.subtract(e)]:[e]);try{return t.difference(e)}catch(e){return t}});return new o(this.sortArray(t))}clear(){this.backingArray=[]}}},984:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.hexadectetNotationToBinaryString=t.binaryStringToHexadecimalString=t.colonHexadecimalNotationToBinaryString=t.hexadecimalStringToHexadecatetString=t.hexadecimalStringToBinaryString=t.bigIntToHexadecimalString=void 0;const s=r(872),i=r(8);t.bigIntToHexadecimalString=e=>e.toString(16),t.hexadecimalStringToBinaryString=e=>BigInt(`0x${e}`).toString(2),t.hexadecimalStringToHexadecatetString=e=>{let r=t.hexadecimalStringToBinaryString(e);if(r.length>16)throw new Error("Given decimal in binary contains digits greater than an Hexadecatet");return i.leftPadWithZeroBit(r,16)},t.colonHexadecimalNotationToBinaryString=e=>s.expandIPv6Number(e).split(":").reduce((e,r)=>e.concat(t.hexadecimalStringToHexadecatetString(r)),""),t.binaryStringToHexadecimalString=e=>BigInt(`0b${e}`).toString(16),t.hexadectetNotationToBinaryString=e=>s.expandIPv6Number(e).split(":").reduce((e,r)=>e.concat(i.leftPadWithZeroBit(t.hexadecimalStringToBinaryString(r),16)),"")}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return i[e].call(r.exports,r,r.exports,o),r.exports}o.m=i,o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.b=new URL("./",import.meta.url);var a={};o.r(a),o.d(a,{Any:()=>cm,BaseBlock:()=>wp,BaseStringBlock:()=>Ep,BitString:()=>wy,BmpString:()=>Fy,Boolean:()=>by,CharacterString:()=>em,Choice:()=>lm,Constructed:()=>gy,DATE:()=>sm,DateTime:()=>nm,Duration:()=>om,EndOfContent:()=>py,Enumerated:()=>By,GeneralString:()=>Xy,GeneralizedTime:()=>rm,GraphicString:()=>Yy,HexBlock:()=>yp,IA5String:()=>Jy,Integer:()=>xy,Null:()=>yy,NumericString:()=>jy,ObjectIdentifier:()=>Oy,OctetString:()=>Iy,Primitive:()=>cy,PrintableString:()=>qy,RawData:()=>um,RelativeObjectIdentifier:()=>Ny,Repeated:()=>hm,Sequence:()=>Dy,Set:()=>My,TIME:()=>am,TeletexString:()=>zy,TimeOfDay:()=>im,UTCTime:()=>tm,UniversalString:()=>$y,Utf8String:()=>Vy,ValueBlock:()=>bp,VideotexString:()=>Wy,ViewWriter:()=>Yf,VisibleString:()=>Zy,compareSchema:()=>dm,fromBER:()=>hy,verifySchema:()=>gm});const c=t(import.meta.url)("node:url");var l,h;!function(e){e[e.Less=-1]="Less",e[e.Equal=0]="Equal",e[e.Greater=1]="Greater"}(l||(l={}));class u{value;constructor(e){this.value=e}static Less=new u(l.Less);static Greater=new u(l.Greater);static Equal=new u(l.Equal);isLess(){return this.value===l.Less}isGreater(){return this.value===l.Greater}isEqual(){return this.value===l.Equal}isNotEqual(){return!this.isEqual()}isGreaterOrEqual(){return this.isEqual()||this.isGreater()}isLessOrEqual(){return this.isEqual()||this.isLess()}}!function(e){e.V0_6_4="0.6.4",e.V0_6_5="0.6.5",e.V0_6_6="0.6.6",e.V0_6_7="0.6.7",e.V0_7_0="0.7.0"}(h||(h={}));const d=[h.V0_6_4,h.V0_6_5,h.V0_6_6,h.V0_6_7,h.V0_7_0],g=h.V0_6_5;let f=function(e){if(void 0===e)return;const t=e;if(!Object.values(h).includes(t))throw new Error(`Configured environment variable GP_VERSION is unknown: '${e}'. Use one of: ${d}`);return t}(process.env.GP_VERSION);class p{static override(e){f=e}static is(...e){return void 0===f?e.includes(g):e.includes(f)}static isGreaterOrEqual(e){const t=d.indexOf(e);if(-1===t)throw new Error(`Invalid version: ${e}. Not found amongst supported versions: ${d}`);return p.is(...d.slice(t))}}function y(e,t){if(!e)throw new Error(`Assertion failure: ${t??""}`)}function m(e,t,r){if(function(e,t){return t}(0,t))return e;throw new Error(`Assertion failure: ${r??""}`)}function b(e){throw new Error(`Unexpected value: ${e}`)}function A(e){const t=Object.keys(e);if(t.length>0)throw new Error(`Unexpected keys: ${t.join(", ")}`)}function I(e){const t=e=>e.split("\n").map(e=>` ${e}`).join("\n").trim();if(null===e)return"<null>";if(void 0===e)return"<undefined>";if(Array.isArray(e))return`[${e.map(e=>I(e))}]`;if(e instanceof Map)return I(Array.from(e.entries()));if("number"==typeof e)return`${e} (0x${e.toString(16)})`;if("object"!=typeof e)return`${e}`;if("toString"in e&&Object.prototype.toString!==e.toString&&w.prototype.toString!==e.toString)return`${e}`;const r=e.constructor.name;let s="Object"!==r?`${r} {`:"{";const i=Object.keys(e),n=i.length<3;for(const r of i)"string"==typeof r&&(s+=n?"":"\n ",s+=`${r}: ${t(I(e[r]))}`,s+=n?",":"");return s+=n?"}":"\n}",s}const v="undefined"==typeof process?e=>{const t=performance.now();return()=>`${e} took ${performance.now()-t}ms`}:e=>{const t=process.hrtime.bigint();return()=>{const r=process.hrtime.bigint()-t,s=Number(r/1000000n).toFixed(2);return`${e} took ${s}ms`}};class w{toString(){return I(this)}}function S(e){return e}function E(e){return e}const C=Symbol("ok");class k{kind;error;enumMapping;constructor(e,t,r){this.kind=e,this.error=t,this.enumMapping=r}toString(){const e=Object.keys(this.enumMapping).find(e=>this.enumMapping[e]===this.kind)??"?";return`${e} (${this.kind}) - ${x(this.error)}`}}const x=e=>{return null!==(t=e)&&"object"==typeof t&&"kind"in t&&"error"in t?e instanceof k?e.toString():`${e.kind} - ${x(e.error)}`:`${e}`;var t};function B(e){return e.isOk?`OK: ${"symbol"==typeof e.ok?e.ok.toString():e.ok}`:`${e.details}\nError: ${x(e.error)}`}const _={ok:e=>(y(void 0!==e,"`Ok` type cannot be undefined."),{isOk:!0,isError:!1,ok:e}),error:(e,t="")=>(y(void 0!==e,"`Error` type cannot be undefined."),{isOk:!1,isError:!0,error:e,details:t}),taggedError:(e,t,r)=>_.error(new k(t,r.error,e),r.details)},R=(t(import.meta.url)("node:assert"),Symbol("compare via string"));class O{[R]=!0;raw;length=0;constructor(e){this.raw=e,this.length=e.byteLength}toString(){return function(e){const t=e=>e>=K?String.fromCharCode(e+M-K):String.fromCharCode(e+N);let r="0x";for(const s of e)r+=t(s>>>4),r+=t(15&s);return r}(this.raw)}toJSON(){return this.toString()}asText(){return(new TextDecoder).decode(this.raw)}isEqualTo(e){return this.length===e.length&&Q(this.raw,e.raw)}compare(e){const t=Math.min(this.length,e.length),r=this.raw,s=e.raw;for(let e=0;e<t;e++){if(r[e]<s[e])return u.Less;if(r[e]>s[e])return u.Greater}return this.length<e.length?u.Less:this.length>e.length?u.Greater:u.Equal}static empty(){return new O(new Uint8Array)}static blobFromString(e){const t=new TextEncoder;return O.blobFrom(t.encode(e))}static blobFrom(e){return new O(e)}static blobFromParts(e,...t){const r=e instanceof Uint8Array?[e]:e,s=r.reduce((e,t)=>e+t.length,0)+t.reduce((e,t)=>e+t.length,0),i=new Uint8Array(s);let n=0;for(const e of r)i.set(e,n),n+=e.length;for(const e of t)i.set(e,n),n+=e.length;return new O(i)}static blobFromNumbers(e){y(void 0===e.find(e=>(255&e)!==e),"BytesBlob.blobFromNumbers used with non-byte number array.");const t=new Uint8Array(e);return new O(t)}static parseBlobNoPrefix(e){const t=e.length;if(t%2==1)throw new Error(`Odd number of nibbles. Invalid hex string: ${e}.`);const r=new ArrayBuffer(t/2),s=new Uint8Array(r);for(let r=0;r<t-1;r+=2){const t=e.substring(r,r+2);s[r/2]=T(t)}return new O(s)}static parseBlob(e){if(!e.startsWith("0x"))throw new Error(`Missing 0x prefix: ${e}.`);return O.parseBlobNoPrefix(e.substring(2))}*chunks(e){for(let t=0;t<this.length;t+=e)yield O.blobFrom(this.raw.subarray(t,t+e))}}class U extends O{length;constructor(e,t){super(e),y(e.byteLength===t,`Given buffer has incorrect size ${e.byteLength} vs expected ${t}`),this.length=t}static fromBlob(e,t){return new U(e,t)}static fromNumbers(e,t){y(void 0===e.find(e=>(255&e)!==e),"Bytes.fromNumbers used with non-byte number array.");const r=new Uint8Array(e);return new U(r,t)}static zero(e){return new U(new Uint8Array(e),e)}static fill(e,t){y((255&t)===t,"Input has to be a byte.");const r=U.zero(e);return r.raw.fill(t,0,e),r}static parseBytesNoPrefix(e,t){if(e.length>2*t)throw new Error(`Input string too long. Expected ${t}, got ${e.length/2}`);const r=O.parseBlobNoPrefix(e);return new U(r.raw,t)}static parseBytes(e,t){if(e.length>2*t+2)throw new Error(`Input string too long. Expected ${t}, got ${e.length/2-1}`);const r=O.parseBlob(e);return new U(r.raw,t)}isEqualTo(e){return y(this.length===e.length,"Comparing incorrectly typed bytes!"),Q(this.raw,e.raw)}asOpaque(){return this}}function T(e){return y(2===e.length,"Two-character string expected"),V(e.charCodeAt(0))<<4|V(e.charCodeAt(1))}const N="0".charCodeAt(0),D="9".charCodeAt(0),M="a".charCodeAt(0),P="f".charCodeAt(0),L="A".charCodeAt(0),H="F".charCodeAt(0),K=10;function V(e){if(e>=N&&e<=D)return e-N;if(e>=M&&e<=P)return e-M+K;if(e>=L&&e<=H)return e-L+K;throw new Error(`Invalid characters in hex byte string: ${String.fromCharCode(e)}`)}function Q(e,t){for(let r=0;r<e.length;r+=1)if(e[r]!==t[r])return!1;return!0}const F=(e,t)=>e.compare(t);class G{data;bitLength;static fromBlob(e,t){return new G(e,t)}static fromBytes(e,t){return new G(e.raw,t)}static empty(e){const t=new Uint8Array(Math.ceil(e/8));return new G(t,e)}byteLength;constructor(e,t){this.data=e,this.bitLength=t,y(8*e.length>=t,`Not enough bytes in the data array. Need ${8*e.length} has ${t}.`),this.byteLength=Math.ceil(t/8)}get raw(){return this.data.subarray(0,this.byteLength)}sumWith(e){y(e.bitLength===this.bitLength,`Invalid bit length for sumWith: ${e.bitLength} vs ${this.bitLength}`);const t=e.raw;for(let e=0;e<this.byteLength;e++)this.data[e]|=t[e]}setBit(e,t){y(e<this.bitLength,`Index out of bounds. Need ${e} has ${this.bitLength}.`);const r=Math.floor(e/8),s=1<<e%8;t?this.data[r]|=s:this.data[r]&=~s}isSet(e){y(e<this.bitLength,`Index out of bounds. Need ${e} has ${this.bitLength}.`);const t=Math.floor(e/8),r=1<<e%8;return(this.data[t]&r)>0}*indicesOfSetBits(){for(let e=0;e<this.bitLength;e++){const t=e>>3,r=e-(t<<3);1&~(this.data[t]>>r)||(yield e)}}}const $=Symbol("no key");function j(e,t,r="<root>"){const s=typeof e;if("string"===t){if("string"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if("number"===t){if("number"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if("boolean"===t){if("boolean"===s)return e;throw new Error(`[${r}] Expected ${t} but got ${s}`)}if(Array.isArray(t)){const s=t[0];if("array"===s){const s=t[1];if("function"==typeof s)return s(e,r);if(!Array.isArray(e))throw new Error(`[${r}] Expected array, got ${e}`);const i=e,n=[];for(const[e,t]of i.entries())n[e]=j(t,s,`${r}.${e}`);return n}if("optional"===s)return null==e?e:j(e,t[1],r);if("object"===s)return q(t[1],e,r);if("string"===s)return q(t[1],j(e,s,r),r);if("number"===s){const s=t[0];return q(t[1],j(e,s,r),r)}throw new Error(`[${r}] Invalid parser type: ${s}`)}if("object"!==s)throw new Error(`[${r}] Expected complex type but got ${s}`);if("object"!=typeof t)throw new Error(`[${r}] Unhandled type ${t}`);if(null===e)throw new Error(`[${r}] Unexpected 'null'`);const i={},n=e,o=t;for(const e of Object.keys(n))i[e]=void 0;for(const e of Object.keys(t))if(e in n){const t=n[e];i[e]=j(t,o[e],`${r}.${e}`)}else Array.isArray(o[e])&&"optional"===o[e][0]&&(i[e]=$);const a=function(e,t){const r=Object.keys(e),s=Object.keys(t);r.sort(),s.sort();const i={},n=Math.max(s.length,s.length);for(let e=0;e<n;e++)i[r[e]]=(i[r[e]]||0)+1,i[s[e]]=(i[s[e]]||0)+2;const o=[],a=e=>void 0!==e?`"${e}"`:"<missing>";for(const[e,t]of Object.entries(i))3!==t&&"undefined"!==e&&o.push(1===t?[a(e),a(void 0)]:[a(void 0),a(e)]);return o}(i,t);if(a.length>0)throw new Error(`[${r}] Unexpected or missing keys: ${a.join(" | ")}\n Data: ${Object.keys(i)}\n Schema: ${Object.keys(t)}`);for(const e of Object.keys(i))i[e]===$&&delete i[e];return i}function q(e,t,r){try{return e(t,r)}catch(e){throw new Error(`[${r}] Error while parsing the value: ${e}`)}}var z;!function(e){function t(e){return["number",e]}function r(e){return["object",e]}e.fromString=function(e){return["string",e]},e.fromNumber=t,e.castNumber=function(){return t(e=>e)},e.fromAny=r,e.optional=function(e){return["optional",e]},e.nullable=function(e){return["optional",e]},e.array=function(e){return["array",e]},e.record=function(e){return r((t,r)=>{if("object"!=typeof t||null===t)throw new Error("Expected object record for parsing");const s={};for(const[i,n]of Object.entries(t))s[i]=j(n,e,`${r}.${i}`);return s})},e.map=function(e,t){return r((r,s)=>{if("object"!=typeof r||null===r)throw new Error("Expected map for parsing");const i=new Map;for(const[n,o]of Object.entries(r))i.set(j(n,e,`${s}.key`),j(o,t,`${s}.value`));return i})},e.object=function(e,t){return r((r,s)=>{const i=j(r,e,s);return t(i)})}}(z||(z={}));const W=e=>m(e,J(e),`input must have one-byte representation, got ${e}`),J=e=>(255&e)===e,Y=e=>m(e,Z(e),`input must have two-byte representation, got ${e}`),Z=e=>(65535&e)===e,X=e=>m(e,ee(e),`input must have four-byte representation, got ${e}`),ee=e=>(4294967295&e)>>>0===e,te=e=>{const t=BigInt(e);return m(t,re(t),`input must have eight-byte representation, got ${e}`)},re=e=>(18446744073709551615n&e)===e;function se(...e){let t=0n;for(const r of e)t+=r;const r=!re(t);return t&=0xffffffffffffffffn,{overflow:r,value:te(t)}}function ie(e){return new Uint8Array([255&e,e>>8&255,e>>16&255,e>>24&255])}function ne(e){return y(4===e.length,"Input must be a Uint8Array of length 4"),e[0]|e[1]<<8|e[2]<<16|e[3]<<24}const oe=(e,...t)=>t.reduce((e,t)=>t>e?e:t,e);class ae{source;offset;context;static fromBytesBlob(e,t){return new ae(e.raw,t)}static fromBlob(e){return new ae(e)}static decodeObject(e,t,r){const s=t instanceof O?ae.fromBytesBlob(t):ae.fromBlob(t);s.attachContext(r);const i=s.object(e);return s.finish(),i}static decodeSequence(e,t,r){const s=t instanceof O?ae.fromBytesBlob(t):ae.fromBlob(t);s.attachContext(r);const i=[];for(;s.bytesRead()<s.source.length;)i.push(s.object(e));return s.finish(),i}dataView;constructor(e,t=0,r){this.source=e,this.offset=t,this.context=r,this.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength)}attachContext(e){this.context=e}getContext(){return this.context}clone(){return new ae(this.source,this.offset,this.context)}bytesRead(){return this.offset}remainingBytes(){const e=this.source.subarray(this.offset),t=e.length;return this.offset+=t,U.fromBlob(e,t)}i8(){return this.getNum(1,()=>this.dataView.getInt8(this.offset))}u8(){return this.getNum(1,()=>this.dataView.getUint8(this.offset))}i16(){return this.getNum(2,()=>this.dataView.getInt16(this.offset,!0))}u16(){return this.getNum(2,()=>this.dataView.getUint16(this.offset,!0))}i24(){const e=this.u24();return e>=2**23?e-2**24:e}u24(){return this.getNum(3,()=>{let e=this.dataView.getUint8(this.offset);return e|=this.dataView.getUint16(this.offset+1,!0)<<8,e})}i32(){return this.getNum(4,()=>this.dataView.getInt32(this.offset,!0))}u32(){return this.getNum(4,()=>this.dataView.getUint32(this.offset,!0))}i64(){return this.getNum(8,()=>this.dataView.getBigInt64(this.offset,!0))}u64(){return this.getNum(8,()=>this.dataView.getBigUint64(this.offset,!0))}bool(){const e=this.u8();if(0===e)return!1;if(1===e)return!0;throw new Error(`Unexpected number when decoding a boolean: ${e}`)}varU32(){this.ensureHasBytes(1);const e=this.source[this.offset],t=le(e);if(this.offset+=1,0===t)return e;if(t>4)throw new Error(`Unexpectedly large value for u32. l=${t}`);this.ensureHasBytes(t);const r=e+2**(8-t)-256<<8*t;if(1===t)return r+this.u8();if(2===t)return r+this.u16();if(3===t)return r+this.u24();if(0===r)return this.u32();throw new Error(`Unexpectedly large value for u32. l=${t}, mostSignificantByte=${r}`)}varU64(){this.ensureHasBytes(1);const e=this.source[this.offset],t=le(e);if(this.offset+=1,0===t)return te(e);if(this.ensureHasBytes(t),this.offset+=t,8===t)return te(this.dataView.getBigUint64(this.offset-t,!0));let r=BigInt(e+2**(8-t)-256)<<BigInt(8*t);for(let e=0;e<t;e+=1)r|=BigInt(this.source[this.offset-t+e])<<BigInt(8*e);return te(r)}bytes(e){if(0===e)return U.zero(e);this.ensureHasBytes(e);const t=this.source.subarray(this.offset,this.offset+e);return this.offset+=e,U.fromBlob(t,e)}bytesBlob(){const e=this.varU32();this.ensureHasBytes(e);const t=this.source.subarray(this.offset,this.offset+e);return this.offset+=e,O.blobFrom(t)}bitVecFixLen(e){if(0===e)return G.empty(0);const t=Math.ceil(e/8),r=this.bytes(t),s=e%8;if(s>0&&r.raw[t-1]>>s>0)throw new Error("Non-zero bits found in the last byte of bitvec encoding.");return G.fromBytes(r,e)}bitVecVarLen(){const e=this.varU32();return this.bitVecFixLen(e)}object(e){return e.decode(this)}optional(e){return this.bool()?e.decode(this):null}sequenceFixLen(e,t){const r=Array(t);for(let s=0;s<t;s+=1)r[s]=e.decode(this);return r}sequenceVarLen(e){const t=this.varU32();return this.sequenceFixLen(e,t)}resetTo(e){this.offset<e?this.skip(e-this.offset):(y(e>=0,"The offset has to be positive"),this.offset=e)}skip(e){this.ensureHasBytes(e),this.offset+=e}finish(){if(this.offset<this.source.length)throw new Error(`Expecting end of input, yet there are still ${this.source.length-this.offset} bytes left.`)}getNum(e,t){this.ensureHasBytes(e);const r=t();return this.offset+=e,r}ensureHasBytes(e){if(y(e>=0,"Negative number of bytes given."),this.offset+e>this.source.length)throw new Error(`Attempting to decode more data than there is left. Need ${e}, left: ${this.source.length-this.offset}.`)}}const ce=[255,254,252,248,240,224,192,128];function le(e){y(e>=0&&e<256,`Incorrect byte value: ${e}`);for(let t=0;t<ce.length;t++)if(e>=ce[t])return 8-t;return 0}function he(e){return y(e.isExact,"The value is not exact size estimation!"),e.bytes}function ue(e,t){return{bytes:e.bytes+t.bytes,isExact:e.isExact&&t.isExact}}const de=10485760;class ge{destination;buffer;static create(e){if(void 0!==e&&"destination"in e)return new ge(e.destination);const t=e?.expectedLength??512,r=new ArrayBuffer(Math.min(de,t),{maxByteLength:de}),s=new Uint8Array(r);return new ge(s,r)}static encodeObject(e,t,r){const s=ge.create({expectedLength:e.sizeHint.bytes||512});return s.attachContext(r),s.object(e,t),s.viewResult()}offset=0;context;dataView;constructor(e,t){this.destination=e,this.buffer=t,this.dataView=void 0!==t?new DataView(t):new DataView(e.buffer,e.byteOffset,e.byteLength)}attachContext(e){this.context=e}getContext(){return this.context}viewResult(){return O.blobFrom(this.destination.subarray(0,this.offset))}i32(e){this.prepareIntegerN(e,4),this.dataView.setInt32(this.offset,e,!0),this.offset+=4}i64(e){const t=2n**64n;y(e<t,"Only for numbers up to 2**64 - 1"),y(-e<=t/2n,"Only for numbers down to -2**63"),this.ensureBigEnough(8),this.dataView.setBigInt64(this.offset,e,!0),this.offset+=8}i24(e){this.prepareIntegerN(e,3),this.dataView.setInt8(this.offset,255&e),this.dataView.setInt16(this.offset+1,e>>8,!0),this.offset+=3}i16(e){this.prepareIntegerN(e,2),this.dataView.setInt16(this.offset,e,!0),this.offset+=2}i8(e){this.prepareIntegerN(e,1),this.dataView.setInt8(this.offset,e),this.offset+=1}bool(e){this.varU32(X(e?1:0))}prepareIntegerN(e,t){const r=2**(8*t);y(e<r,`Only for numbers up to 2**${8*t} - 1`),y(-e<=r/2,"Only for numbers down to -2**"+(8*t-1)),this.ensureBigEnough(t)}varU32(e){y(e>=0,"Only for natural numbers."),y(e<2**32,"Only for numbers up to 2**32"),this.varU64(BigInt(e))}varU64(e){const t=BigInt(e);if(0n===t)return this.ensureBigEnough(1),this.destination[this.offset]=0,void(this.offset+=1);let r=2n**56n;if(t>=r)return this.ensureBigEnough(9),this.destination[this.offset]=255,this.dataView.setBigUint64(this.offset+1,t,!0),void(this.offset+=9);let s=r>>7n;for(let e=7;e>=0;e-=1){if(t>=s){this.ensureBigEnough(e+1);const r=2n**BigInt(8*e),s=BigInt(256-2**(8-e))+t/r;this.destination[this.offset]=255&Number(s),this.offset+=1;let i=t%r;for(let t=this.offset;t<this.offset+e;t+=1)this.destination[t]=Number(0xffn&i),i>>=8n;return void(this.offset+=e)}r=s,s>>=7n}throw new Error(`Unhandled number encoding: ${t}`)}bytesBlob(e){this.blob(e.raw)}blob(e){this.varU32(X(e.length)),this.ensureBigEnough(e.length),this.destination.set(e,this.offset),this.offset+=e.length}bytes(e){this.ensureBigEnough(e.length),this.destination.set(e.raw,this.offset),this.offset+=e.length}bitVecFixLen(e){const t=e.raw;this.bytes(U.fromBlob(t,t.length))}bitVecVarLen(e){const t=e.bitLength;this.varU32(X(t)),this.bitVecFixLen(e)}object(e,t){this.applySizeHint(e),e.encode(this,t)}optional(e,t){const r=null!=t;this.bool(r),r&&(this.applySizeHint(e),e.encode(this,t))}sequenceFixLen(e,t){this.applySizeHint(e,t.length);for(const r of t)e.encode(this,r)}sequenceVarLen(e,t){y(t.length<=2**32,"Wow, that's a nice long sequence you've got here."),this.varU32(X(t.length)),this.sequenceFixLen(e,t)}applySizeHint(e,t=1){const r=e.sizeHint.bytes;r>0&&t>0&&this.ensureBigEnough(r*t,{silent:!0})}ensureBigEnough(e,t={silent:!1}){y(e>=0,"Negative length given");const r=this.offset+e;if(r>de){if(t.silent)return;throw new Error("The encoded size would reach the maximum of 10485760.")}if(r>this.destination.length){if(void 0!==this.buffer){const e=Math.max(r,this.buffer.byteLength<<1);this.buffer.resize(Math.min(de,e))}if(r>this.destination.length){if(t.silent)return;throw new Error(`Not enough space in the destination array. Needs ${r}, has ${this.destination.length}.`)}}}}class fe{decoder;constructor(e){this.decoder=e}u64=()=>this.decoder.skip(8);u32=()=>this.decoder.skip(4);u24=()=>this.decoder.skip(3);u16=()=>this.decoder.skip(2);u8=()=>this.decoder.skip(1);bool=()=>this.decoder.skip(1);varU32=()=>this.varU64();varU64(){const e=le(this.decoder.u8());this.decoder.skip(e)}bytes(e){this.decoder.skip(e)}bytesBlob(){const e=this.decoder.varU32();this.decoder.skip(e)}bitVecFixLen(e){this.decoder.skip(Math.ceil(e/8))}bitVecVarLen(){const e=this.decoder.varU32();this.bitVecFixLen(e)}object(e){e.skip(this)}optional(e){this.decoder.bool()&&e.skip(this)}sequenceFixLen(e,t){for(let r=0;r<t;r+=1)e.skip(this)}sequenceVarLen(e){const t=this.decoder.varU32();return this.sequenceFixLen(e,t)}}function pe(e,t,r){if(t<e.minLength)throw new Error(`${r}: length is below minimal. ${t} < ${e.minLength}`);if(t>e.maxLength)throw new Error(`${r}: length is above maximal. ${t} > ${e.maxLength}`)}class ye{getView;getValue;getEncoded;cachedValue;cachedView;cachedBlob;constructor(e,t,r){this.getView=e,this.getValue=t,this.getEncoded=r}materialize(){return void 0===this.cachedValue&&(this.cachedValue=this.getValue()),this.cachedValue}view(){return void 0===this.cachedView&&(this.cachedView=this.getView()),this.cachedView}encoded(){return void 0===this.cachedBlob&&(this.cachedBlob=this.getEncoded()),this.cachedBlob}}class me{decoder;materializedConstructor;descriptors;descriptorsKeys;cache=new Map;initialDecoderOffset;lastDecodedFieldIdx=-1;constructor(e,t,r){this.decoder=e,this.materializedConstructor=t,this.descriptors=r,this.descriptorsKeys=Object.keys(r),this.initialDecoderOffset=e.bytesRead()}materialize(){const e=this.descriptorsKeys,t=Object.fromEntries(e.map(e=>[e,this.get(e).materialize()]));return this.materializedConstructor.create(t)}encoded(){const e=this.descriptorsKeys;if(0===e.length)return O.blobFromNumbers([]);if(this.lastDecodedFieldIdx<e.length-1){const t=e[e.length-1];this.decodeUpTo(t)}return O.blobFrom(this.decoder.source.subarray(this.initialDecoderOffset,this.decoder.bytesRead()))}get(e){const t=this.cache.get(e);return void 0!==t?t:this.decodeUpTo(e)}decodeUpTo(e){const t=this.descriptorsKeys.indexOf(e),r=this.descriptorsKeys[this.lastDecodedFieldIdx];y(this.lastDecodedFieldIdx<t,`Unjustified call to 'decodeUpTo' -\n the index ($Blobindex}, ${String(e)})\n is already decoded (${this.lastDecodedFieldIdx}, ${String(r)}).\n `);let s=this.cache.get(r);const i=new fe(this.decoder);for(let e=this.lastDecodedFieldIdx+1;e<=t;e++){const t=i.decoder.clone(),r=this.descriptorsKeys[e],n=this.descriptors[r];s=new ye(()=>n.View.decode(t.clone()),()=>n.decode(t.clone()),()=>n.skipEncoded(t.clone())),n.skip(i),this.cache.set(r,s),this.lastDecodedFieldIdx=e}return m(s,void 0!==s,"Last item must be set, since the loop turns at least once.")}}class be{decoder;descriptor;length;cache=new Map;initialDecoderOffset;lastDecodedIdx=-1;constructor(e,t,r){this.decoder=e,this.descriptor=t,this.initialDecoderOffset=this.decoder.bytesRead(),this.length=r??e.varU32()}*[Symbol.iterator](){for(let e=0;e<this.length;e++){const t=this.get(e),r=m(t,void 0!==t,"We are within 0..this.length so all items are defined.");yield r}}map(e){const t=new Array(this.length);let r=0;for(const s of this)t[r]=e(s),r++;return t}get(e){if(e>=this.length)return;const t=this.cache.get(e);return void 0!==t?t:this.decodeUpTo(e)}encoded(){return 0===this.length?O.blobFromNumbers([]):(this.lastDecodedIdx<this.length-1&&this.decodeUpTo(this.length-1),O.blobFrom(this.decoder.source.subarray(this.initialDecoderOffset,this.decoder.bytesRead())))}decodeUpTo(e){y(this.lastDecodedIdx<e,`Unjustified call to 'decodeUpTo' - the index (${e}) is already decoded (${this.lastDecodedIdx}).`);let t=this.cache.get(this.lastDecodedIdx);const r=new fe(this.decoder);for(let s=this.lastDecodedIdx+1;s<=e;s++){const e=r.decoder.clone(),i=this.descriptor;t=new ye(()=>i.View.decode(e.clone()),()=>i.decode(e.clone()),()=>i.skipEncoded(e.clone())),i.skip(r),this.cache.set(s,t),this.lastDecodedIdx=s}return m(t,void 0!==t,"Last item must be set, since the loop turns at least once.")}}class Ae{name;sizeHint;encode;decode;skip;View;static withView(e,t,r,s,i,n){return new Ae(e,t,r,s,i,n)}static new(e,t,r,s,i){return new Ae(e,t,r,s,i,null)}constructor(e,t,r,s,i,n){this.name=e,this.sizeHint=t,this.encode=r,this.decode=s,this.skip=i,this.View=n??this}skipEncoded(e){const t=e.bytesRead();this.skip(new fe(e));const r=e.bytesRead();return O.blobFrom(e.source.subarray(t,r))}convert(e,t){return new Ae(this.name,this.sizeHint,(t,r)=>this.encode(t,e(r)),e=>t(this.decode(e)),this.skip,this.View)}asOpaque(){return this.convert(e=>e,e=>e)}}function Ie(e){return e.convert(e=>(y(Array.isArray(e),`Non-arrays are not supported as 'readonly': got ${typeof e}, ${e}`),e),e=>e)}function ve(e){return{bytes:e,isExact:!0}}var we,Se;function Ee(e,t){for(const r in e)"string"==typeof r&&r in e&&t(r,e[r])}function Ce(e){return e.View!==e}(Se=we||(we={})).bytes=(()=>{const e=new Map;return t=>{let r=e.get(t);return void 0===r&&(r=Ae.new(`Bytes<${t}>`,ve(t),(e,t)=>e.bytes(t),e=>e.bytes(t),e=>e.bytes(t)),e.set(t,r)),r}})(),Se.varU32=Ae.new("var_u32",{bytes:4,isExact:!1},(e,t)=>e.varU32(t),e=>e.varU32(),e=>e.varU32()),Se.varU64=Ae.new("var_u64",{bytes:8,isExact:!1},(e,t)=>e.varU64(t),e=>e.varU64(),e=>e.varU64()),Se.u64=Ae.withView("u64",ve(8),(e,t)=>e.i64(t),e=>e.u64(),e=>e.u64(),Se.bytes(8)),Se.u32=Ae.withView("u32",ve(4),(e,t)=>e.i32(t),e=>e.u32(),e=>e.u32(),Se.bytes(4)),Se.u24=Ae.withView("u24",ve(3),(e,t)=>e.i24(t),e=>e.u24(),e=>e.u24(),Se.bytes(3)),Se.u16=Ae.withView("u16",ve(2),(e,t)=>e.i16(t),e=>e.u16(),e=>e.u16(),Se.bytes(2)),Se.u8=Ae.new("u8",ve(1),(e,t)=>e.i8(t),e=>e.u8(),e=>e.u8()),Se.i64=Ae.withView("u64",ve(8),(e,t)=>e.i64(t),e=>e.i64(),e=>e.u64(),Se.bytes(8)),Se.i32=Ae.withView("i32",ve(4),(e,t)=>e.i32(t),e=>e.i32(),e=>e.u32(),Se.bytes(4)),Se.i24=Ae.withView("i24",ve(3),(e,t)=>e.i24(t),e=>e.i24(),e=>e.u24(),Se.bytes(3)),Se.i16=Ae.withView("i16",ve(2),(e,t)=>e.i16(t),e=>e.i16(),e=>e.u16(),Se.bytes(2)),Se.i8=Ae.new("i8",ve(1),(e,t)=>e.i8(t),e=>e.i8(),e=>e.u8()),Se.bool=Ae.new("bool",ve(1),(e,t)=>e.bool(t),e=>e.bool(),e=>e.bool()),Se.blob=Ae.new("BytesBlob",{bytes:64,isExact:!1},(e,t)=>e.bytesBlob(t),e=>e.bytesBlob(),e=>e.bytesBlob()),Se.string=Ae.withView("string",{bytes:64,isExact:!1},(e,t)=>e.bytesBlob(O.blobFrom((new TextEncoder).encode(t))),e=>new TextDecoder("utf8",{fatal:!0}).decode(e.bytesBlob().raw),e=>e.bytesBlob(),Se.blob),Se.bitVecVarLen=Ae.new("BitVec[?]",{bytes:8,isExact:!1},(e,t)=>e.bitVecVarLen(t),e=>e.bitVecVarLen(),e=>e.bitVecVarLen()),Se.bitVecFixLen=e=>Ae.new(`BitVec[${e}]`,ve(e>>>3),(e,t)=>e.bitVecFixLen(t),t=>t.bitVecFixLen(e),t=>t.bitVecFixLen(e)),Se.optional=e=>{const t=Ae.new(`Optional<${e.name}>`,ue({bytes:1,isExact:!1},e.sizeHint),(t,r)=>t.optional(e,r),t=>t.optional(e),t=>t.optional(e));return Ce(e)?Ae.withView(t.name,t.sizeHint,t.encode,t.decode,t.skip,Se.optional(e.View)):t},Se.sequenceVarLen=(e,t={minLength:0,maxLength:2**32-1})=>{const r=`Sequence<${e.name}>[?]`,s=t.typicalLength??64;return Ae.withView(r,{bytes:s*e.sizeHint.bytes,isExact:!1},(s,i)=>{pe(t,i.length,r),s.sequenceVarLen(e,i)},s=>{const i=s.varU32();return pe(t,i,r),s.sequenceFixLen(e,i)},s=>{const i=s.decoder.varU32();return pe(t,i,r),s.sequenceFixLen(e,i)},function(e,t){const r={bytes:64*e.sizeHint.bytes,isExact:!1},s=e.name!==e.View.name?`, ${e.View.name}`:"",i=`SeqView<${e.name}${s}>[?]`,n=r=>{const s=r.decoder.varU32();return pe(t,s,i),r.sequenceFixLen(e,s)};return Ae.new(i,r,(e,r)=>{pe(t,r.length,i);const s=r.encoded();e.bytes(U.fromBlob(s.raw,s.length))},t=>{const r=new be(t.clone(),e);return n(new fe(t)),r},n)}(e,t))},Se.sequenceFixLen=(e,t)=>Ae.withView(`Sequence<${e.name}>[${t}]`,{bytes:t*e.sizeHint.bytes,isExact:e.sizeHint.isExact},(t,r)=>t.sequenceFixLen(e,r),r=>r.sequenceFixLen(e,t),r=>r.sequenceFixLen(e,t),function(e,{fixedLength:t}){const r={bytes:e.sizeHint.bytes*t,isExact:e.sizeHint.isExact},s=r=>r.sequenceFixLen(e,t),i=e.name!==e.View.name?`, ${e.View.name}`:"",n=`SeqView<${e.name}${i}>[${t}]`;return Ae.new(n,r,(e,t)=>{const r=t.encoded();e.bytes(U.fromBlob(r.raw,r.length))},r=>{const i=new be(r.clone(),e,t);return s(new fe(r)),i},s)}(e,{fixedLength:t})),Se.dictionary=(e,t,{sortKeys:r,fixedLength:s})=>{const i=Ae.new(`Dictionary<${e.name}, ${t.name}>[${s??"?"}]`,{bytes:void 0!==s?s*ue(e.sizeHint,t.sizeHint).bytes:32*(ue(e.sizeHint,t.sizeHint).bytes??0),isExact:void 0!==s&&e.sizeHint.isExact&&t.sizeHint.isExact},(i,n)=>{const o=Array.from(n.entries());o.sort((e,t)=>r(e[0],t[0])),void 0!==s&&0!==s||i.varU32(X(o.length));for(const[r,s]of o)e.encode(i,r),t.encode(i,s)},i=>{const n=new Map,o=s??i.varU32();let a=null;for(let s=0;s<o;s+=1){const s=e.decode(i),o=t.decode(i);if(n.has(s))throw new Error(`Duplicate item in the dictionary encoding: "${s}"!`);if(null!==a&&r(a,s)>=0)throw new Error(`The keys in dictionary encoding are not sorted "${a}" >= "${s}"!`);n.set(s,o),a=s}return n},r=>{const i=s??r.decoder.varU32();r.sequenceFixLen(e,i),r.sequenceFixLen(t,i)});return Ce(t)?Ae.withView(i.name,i.sizeHint,i.encode,i.decode,i.skip,Se.dictionary(e,t.View,{sortKeys:r,fixedLength:s})):i},Se.custom=({name:e,sizeHint:t={bytes:0,isExact:!1}},r,s,i)=>Ae.new(e,t,r,s,i),Se.select=({name:e,sizeHint:t},r)=>Ae.withView(e,t,(e,t)=>r(e.getContext()).encode(e,t),e=>r(e.getContext()).decode(e),e=>r(e.decoder.getContext()).skip(e),r(null).View),Se.object=(e,t="object",r=e=>e)=>Se.Class({name:t,create:r},e),Se.Class=(e,t)=>{let r=ve(0);Ee(t,(e,t)=>{r=ue(r,t.sizeHint)});const s=e=>{if(r.isExact)return e.decoder.skip(r.bytes);Ee(t,(t,r)=>{r.skip(e)})},i=function(e,t,r,s){class i extends me{constructor(r){super(r,e,t)}}return Ee(t,e=>{"string"==typeof e&&Object.defineProperty(i.prototype,e,{get:function(){return this.get(e)}})}),Ae.new(`View<${e.name}>`,r,(e,t)=>{const r=t.encoded();e.bytes(U.fromBlob(r.raw,r.length))},e=>{const t=new i(e.clone());return s(new fe(e)),t},s)}(e,t,r,s);return Ae.withView(e.name,r,(e,r)=>{Ee(t,(t,s)=>{const i=r[t];s.encode(e,i)})},r=>{const s={};return Ee(t,(e,t)=>{const i=t.decode(r);s[e]=i}),e.create(s)},s,i)};var ke=o(405);const xe=32,Be=144,_e=144,Re=32;class Oe extends w{hash;data;constructor(e,t){super(),this.hash=e,this.data=t}}class Ue extends Oe{encoded;constructor(e,t,r){super(e,t),this.encoded=r}}class Te{emptyHash(){return U.zero(Re)}}const Ne=new Te;var De,Me=o(675),Pe=o.n(Me);function Le(e,t=Ne){const r=t.emptyHash();if(0===e.length)return r.asOpaque();const s=Pe()(Re);for(const t of e)s?.update(t instanceof O?t.raw:t);return s?.digest(r.raw),r.asOpaque()}function He(e,t=Ne){const r=Pe()(Re),s=e instanceof O?e.raw:e;r?.update(s);const i=t.emptyHash();return r?.digest(i.raw),i}function Ke(e,t=Ne){return He(O.blobFromString(e),t)}function Ve(e,t,r,s){return new(r||(r=Promise))(function(i,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function a(e){try{c(s.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((s=s.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;class Qe{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return Ve(this,void 0,void 0,function*(){const t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}const Fe="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Ge=null!==(De=Fe.Buffer)&&void 0!==De?De:null,$e=Fe.TextEncoder?new Fe.TextEncoder:null;function je(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}const qe="a".charCodeAt(0)-10,ze="0".charCodeAt(0);function We(e,t,r){let s=0;for(let i=0;i<r;i++){let r=t[i]>>>4;e[s++]=r>9?r+qe:r+ze,r=15&t[i],e[s++]=r>9?r+qe:r+ze}return String.fromCharCode.apply(null,e)}const Je=null!==Ge?e=>{if("string"==typeof e){const t=Ge.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(Ge.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")}:e=>{if("string"==typeof e)return $e.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw new Error("Invalid data type!")},Ye=new Uint8Array(256);for(let e=0;e<64;e++)Ye["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;function Ze(e){const t=function(e){let t=Math.floor(.75*e.length);const r=e.length;return"="===e[r-1]&&(t-=1,"="===e[r-2]&&(t-=1)),t}(e),r=e.length,s=new Uint8Array(t);let i=0;for(let t=0;t<r;t+=4){const r=Ye[e.charCodeAt(t)],n=Ye[e.charCodeAt(t+1)],o=Ye[e.charCodeAt(t+2)],a=Ye[e.charCodeAt(t+3)];s[i]=r<<2|n>>4,i+=1,s[i]=(15&n)<<4|o>>2,i+=1,s[i]=(3&o)<<6|63&a,i+=1}return s}const Xe=16384,et=new Qe,tt=new Map;function rt(e,t){return Ve(this,void 0,void 0,function*(){let r=null,s=null,i=!1;if("undefined"==typeof WebAssembly)throw new Error("WebAssembly is not supported in this environment!");const n=()=>new DataView(r.exports.memory.buffer).getUint32(r.exports.STATE_SIZE,!0),o=et.dispatch(()=>Ve(this,void 0,void 0,function*(){if(!tt.has(e.name)){const t=Ze(e.data),r=WebAssembly.compile(t);tt.set(e.name,r)}const t=yield tt.get(e.name);r=yield WebAssembly.instantiate(t,{})})),a=(e=null)=>{i=!0,r.exports.Hash_Init(e)},c=e=>{if(!i)throw new Error("update() called before init()");(e=>{let t=0;for(;t<e.length;){const i=e.subarray(t,t+Xe);t+=i.length,s.set(i),r.exports.Hash_Update(i.length)}})(Je(e))},l=new Uint8Array(2*t),h=(e,n=null)=>{if(!i)throw new Error("digest() called before init()");return i=!1,r.exports.Hash_Final(n),"binary"===e?s.slice(0,t):We(l,s,t)},u=e=>"string"==typeof e?e.length<4096:e.byteLength<Xe;let d=u;switch(e.name){case"argon2":case"scrypt":d=()=>!0;break;case"blake2b":case"blake2s":d=(e,t)=>t<=512&&u(e);break;case"blake3":d=(e,t)=>0===t&&u(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":d=()=>!1}return yield(()=>Ve(this,void 0,void 0,function*(){r||(yield o);const e=r.exports.Hash_GetBuffer(),t=r.exports.memory.buffer;s=new Uint8Array(t,e,Xe)}))(),{getMemory:()=>s,writeMemory:(e,t=0)=>{s.set(e,t)},getExports:()=>r.exports,setMemorySize:e=>{r.exports.Hash_SetMemorySize(e);const t=r.exports.Hash_GetBuffer(),i=r.exports.memory.buffer;s=new Uint8Array(i,t,e)},init:a,update:c,digest:h,save:()=>{if(!i)throw new Error("save() can only be called after init() and before digest()");const t=r.exports.Hash_GetState(),s=n(),o=r.exports.memory.buffer,a=new Uint8Array(o,t,s),c=new Uint8Array(4+s);return function(e,t){const r=t.length>>1;for(let s=0;s<r;s++){const r=s<<1;e[s]=je(t.charCodeAt(r),t.charCodeAt(r+1))}}(c,e.hash),c.set(a,4),c},load:t=>{if(!(t instanceof Uint8Array))throw new Error("load() expects an Uint8Array generated by save()");const s=r.exports.Hash_GetState(),o=n(),a=4+o,c=r.exports.memory.buffer;if(t.length!==a)throw new Error(`Bad state length (expected ${a} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let r=0;r<t.length;r++){const s=r<<1;if(t[r]!==je(e.charCodeAt(s),e.charCodeAt(s+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw new Error("This state was written by an incompatible hash implementation");const l=t.subarray(4);new Uint8Array(c,s,o).set(l),i=!0},calculate:(e,i=null,n=null)=>{if(!d(e,i))return a(i),c(e),h("hex",n);const o=Je(e);return s.set(o),r.exports.Hash_Calculate(o.length,i,n),We(l,s,t)},hashLength:t}})}new Qe,new Qe,new DataView(new ArrayBuffer(4)),new Qe,new Qe,new Qe,new Qe,new Uint8Array(8),new Qe,new Qe,new Qe;var st={name:"sha3",data:"AGFzbQEAAAABFARgAAF/YAF/AGACf38AYAN/f38AAwgHAAEBAgEAAwUEAQECAgYOAn8BQZCNBQt/AEGACAsHcAgGbWVtb3J5AgAOSGFzaF9HZXRCdWZmZXIAAAlIYXNoX0luaXQAAQtIYXNoX1VwZGF0ZQACCkhhc2hfRmluYWwABA1IYXNoX0dldFN0YXRlAAUOSGFzaF9DYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKpBwHBQBBgAoL1wMAQQBCADcDgI0BQQBCADcD+IwBQQBCADcD8IwBQQBCADcD6IwBQQBCADcD4IwBQQBCADcD2IwBQQBCADcD0IwBQQBCADcDyIwBQQBCADcDwIwBQQBCADcDuIwBQQBCADcDsIwBQQBCADcDqIwBQQBCADcDoIwBQQBCADcDmIwBQQBCADcDkIwBQQBCADcDiIwBQQBCADcDgIwBQQBCADcD+IsBQQBCADcD8IsBQQBCADcD6IsBQQBCADcD4IsBQQBCADcD2IsBQQBCADcD0IsBQQBCADcDyIsBQQBCADcDwIsBQQBCADcDuIsBQQBCADcDsIsBQQBCADcDqIsBQQBCADcDoIsBQQBCADcDmIsBQQBCADcDkIsBQQBCADcDiIsBQQBCADcDgIsBQQBCADcD+IoBQQBCADcD8IoBQQBCADcD6IoBQQBCADcD4IoBQQBCADcD2IoBQQBCADcD0IoBQQBCADcDyIoBQQBCADcDwIoBQQBCADcDuIoBQQBCADcDsIoBQQBCADcDqIoBQQBCADcDoIoBQQBCADcDmIoBQQBCADcDkIoBQQBCADcDiIoBQQBCADcDgIoBQQBBwAwgAEEBdGtBA3Y2AoyNAUEAQQA2AoiNAQuMAwEIfwJAQQAoAoiNASIBQQBIDQBBACABIABqQQAoAoyNASICcDYCiI0BAkACQCABDQBBgAohAwwBCwJAIAIgAWsiBCAAIAQgAEkbIgNFDQAgA0EDcSEFQQAhBgJAIANBBEkNACABQYCKAWohByADQXxxIQhBACEGA0AgByAGaiIDQcgBaiAGQYAKai0AADoAACADQckBaiAGQYEKai0AADoAACADQcoBaiAGQYIKai0AADoAACADQcsBaiAGQYMKai0AADoAACAIIAZBBGoiBkcNAAsLIAVFDQAgAUHIiwFqIQMDQCADIAZqIAZBgApqLQAAOgAAIAZBAWohBiAFQX9qIgUNAAsLIAAgBEkNAUHIiwEgAhADIAAgBGshACAEQYAKaiEDCwJAIAAgAkkNAANAIAMgAhADIAMgAmohAyAAIAJrIgAgAk8NAAsLIABFDQBBACECQcgBIQYDQCAGQYCKAWogAyAGakG4fmotAAA6AAAgBkEBaiEGIAAgAkEBaiICQf8BcUsNAAsLC+ALAS1+IAApA0AhAkEAKQPAigEhAyAAKQM4IQRBACkDuIoBIQUgACkDMCEGQQApA7CKASEHIAApAyghCEEAKQOoigEhCSAAKQMgIQpBACkDoIoBIQsgACkDGCEMQQApA5iKASENIAApAxAhDkEAKQOQigEhDyAAKQMIIRBBACkDiIoBIREgACkDACESQQApA4CKASETQQApA8iKASEUAkACQCABQcgASw0AQQApA+iKASEVQQApA/iKASEWQQApA/CKASEXQQApA4CLASEYQQApA9CKASEZQQApA+CKASEaQQApA9iKASEbDAELQQApA+CKASAAKQNghSEaQQApA9iKASAAKQNYhSEbQQApA9CKASAAKQNQhSEZIBQgACkDSIUhFEEAKQPoigEhFUEAKQP4igEhFkEAKQPwigEhF0EAKQOAiwEhGCABQekASQ0AIBggACkDgAGFIRggFiAAKQN4hSEWIBcgACkDcIUhFyAVIAApA2iFIRUgAUGJAUkNAEEAQQApA4iLASAAKQOIAYU3A4iLAQsgAyAChSEcIAUgBIUhHSAHIAaFIQcgCSAIhSEIIAsgCoUhHiANIAyFIQkgDyAOhSEKIBEgEIUhCyATIBKFIQxBACkDuIsBIRBBACkDkIsBIRFBACkDoIsBIRJBACkDsIsBIRNBACkDiIsBIQ1BACkDwIsBIQ5BACkDmIsBIR9BACkDqIsBIQ9BwH4hAANAIB4gByALhSAbhSAYhSAPhUIBiYUgFIUgF4UgH4UgDoUhAiAMIB0gCoUgGoUgDYUgE4VCAYmFIAiFIBmFIBaFIBKFIgMgB4UhICAJIAggDIUgGYUgFoUgEoVCAYmFIByFIBWFIBGFIBCFIgQgDoUhISAcIAogFCAehSAXhSAfhSAOhUIBiYUgHYUgGoUgDYUgE4UiBYVCN4kiIiALIBwgCYUgFYUgEYUgEIVCAYmFIAeFIBuFIBiFIA+FIgYgCoVCPokiI0J/hYMgAyAPhUICiSIkhSEOIBYgAoVCKYkiJSAEIBeFQieJIiZCf4WDICKFIQ8gECAFhUI4iSIQIAYgDYVCD4kiJ0J/hYMgAyAbhUIKiSIohSENIAQgHoVCG4kiKSAoIAggAoVCJIkiKkJ/hYOFIRYgBiAdhUIGiSIrIAMgC4VCAYkiLEJ/hYMgEiAChUISiSIthSEXICsgBCAfhUIIiSIuIBUgBYVCGYkiFUJ/hYOFIRsgBiAThUI9iSIdIAQgFIVCFIkiBCAJIAWFQhyJIghCf4WDhSEUIAggHUJ/hYMgAyAYhUItiSIDhSEcIB0gA0J/hYMgGSAChUIDiSIJhSEdIAQgAyAJQn+Fg4UhByAJIARCf4WDIAiFIQggDCAChSICICFCDokiA0J/hYMgESAFhUIViSIEhSEJIAYgGoVCK4kiBSADIARCf4WDhSEKIAQgBUJ/hYMgIEIsiSIEhSELIABB0AlqKQMAIAUgBEJ/hYOFIAKFIQwgJyAoQn+FgyAqhSIFIRggAyAEIAJCf4WDhSICIR4gKiApQn+FgyAQhSIDIR8gLSAuQn+FgyAVhSIEIRogJiAkICVCf4WDhSIGIRMgFSArQn+FgyAshSIoIRkgIyAmICJCf4WDhSIiIRIgLiAsIC1Cf4WDhSImIRUgJyApIBBCf4WDhSInIREgIyAkQn+FgyAlhSIjIRAgAEEIaiIADQALQQAgDzcDqIsBQQAgBTcDgIsBQQAgGzcD2IoBQQAgBzcDsIoBQQAgCzcDiIoBQQAgDjcDwIsBQQAgAzcDmIsBQQAgFzcD8IoBQQAgFDcDyIoBQQAgAjcDoIoBQQAgBjcDsIsBQQAgDTcDiIsBQQAgBDcD4IoBQQAgHTcDuIoBQQAgCjcDkIoBQQAgIjcDoIsBQQAgFjcD+IoBQQAgKDcD0IoBQQAgCDcDqIoBQQAgDDcDgIoBQQAgIzcDuIsBQQAgJzcDkIsBQQAgJjcD6IoBQQAgHDcDwIoBQQAgCTcDmIoBC/gCAQV/QeQAQQAoAoyNASIBQQF2ayECAkBBACgCiI0BIgNBAEgNACABIQQCQCABIANGDQAgA0HIiwFqIQVBACEDA0AgBSADakEAOgAAIANBAWoiAyABQQAoAoiNASIEa0kNAAsLIARByIsBaiIDIAMtAAAgAHI6AAAgAUHHiwFqIgMgAy0AAEGAAXI6AABByIsBIAEQA0EAQYCAgIB4NgKIjQELAkAgAkEESQ0AIAJBAnYiA0EDcSEFQQAhBAJAIANBf2pBA0kNACADQfz///8DcSEBQQAhA0EAIQQDQCADQYAKaiADQYCKAWooAgA2AgAgA0GECmogA0GEigFqKAIANgIAIANBiApqIANBiIoBaigCADYCACADQYwKaiADQYyKAWooAgA2AgAgA0EQaiEDIAEgBEEEaiIERw0ACwsgBUUNACAFQQJ0IQEgBEECdCEDA0AgA0GACmogA0GAigFqKAIANgIAIANBBGohAyABQXxqIgENAAsLCwYAQYCKAQvRBgEDf0EAQgA3A4CNAUEAQgA3A/iMAUEAQgA3A/CMAUEAQgA3A+iMAUEAQgA3A+CMAUEAQgA3A9iMAUEAQgA3A9CMAUEAQgA3A8iMAUEAQgA3A8CMAUEAQgA3A7iMAUEAQgA3A7CMAUEAQgA3A6iMAUEAQgA3A6CMAUEAQgA3A5iMAUEAQgA3A5CMAUEAQgA3A4iMAUEAQgA3A4CMAUEAQgA3A/iLAUEAQgA3A/CLAUEAQgA3A+iLAUEAQgA3A+CLAUEAQgA3A9iLAUEAQgA3A9CLAUEAQgA3A8iLAUEAQgA3A8CLAUEAQgA3A7iLAUEAQgA3A7CLAUEAQgA3A6iLAUEAQgA3A6CLAUEAQgA3A5iLAUEAQgA3A5CLAUEAQgA3A4iLAUEAQgA3A4CLAUEAQgA3A/iKAUEAQgA3A/CKAUEAQgA3A+iKAUEAQgA3A+CKAUEAQgA3A9iKAUEAQgA3A9CKAUEAQgA3A8iKAUEAQgA3A8CKAUEAQgA3A7iKAUEAQgA3A7CKAUEAQgA3A6iKAUEAQgA3A6CKAUEAQgA3A5iKAUEAQgA3A5CKAUEAQgA3A4iKAUEAQgA3A4CKAUEAQcAMIAFBAXRrQQN2NgKMjQFBAEEANgKIjQEgABACQeQAQQAoAoyNASIAQQF2ayEDAkBBACgCiI0BIgFBAEgNACAAIQQCQCAAIAFGDQAgAUHIiwFqIQVBACEBA0AgBSABakEAOgAAIAFBAWoiASAAQQAoAoiNASIEa0kNAAsLIARByIsBaiIBIAEtAAAgAnI6AAAgAEHHiwFqIgEgAS0AAEGAAXI6AABByIsBIAAQA0EAQYCAgIB4NgKIjQELAkAgA0EESQ0AIANBAnYiAUEDcSEFQQAhBAJAIAFBf2pBA0kNACABQfz///8DcSEAQQAhAUEAIQQDQCABQYAKaiABQYCKAWooAgA2AgAgAUGECmogAUGEigFqKAIANgIAIAFBiApqIAFBiIoBaigCADYCACABQYwKaiABQYyKAWooAgA2AgAgAUEQaiEBIAAgBEEEaiIERw0ACwsgBUUNACAFQQJ0IQAgBEECdCEBA0AgAUGACmogAUGAigFqKAIANgIAIAFBBGohASAAQXxqIgANAAsLCwvYAQEAQYAIC9ABkAEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgA==",hash:"fb24e536"};function it(e){return[224,256,384,512].includes(e)?null:new Error("Invalid variant! Valid values: 224, 256, 384, 512")}new Qe,new Qe,new Qe,new Qe,new Qe,new Qe,new Qe,new Qe,new Uint8Array(8),new Qe,new Uint8Array(8),new Qe,new Uint8Array(8),new Qe,new Qe,new Qe;class nt{hasher;static async create(){return new nt(await function(e=512){if(it(e))return Promise.reject(it(e));const t=e/8;return rt(st,t).then(r=>{r.init(e);const s={init:()=>(r.init(e),s),update:e=>(r.update(e),s),digest:e=>r.digest(e,1),save:()=>r.save(),load:e=>(r.load(e),s),blockSize:200-2*t,digestSize:t};return s})}(256))}constructor(e){this.hasher=e}}function ot(e,t){e.hasher.init();for(const r of t)e.hasher.update(r.raw);return U.fromBlob(e.hasher.digest("binary"),Re)}class at{map=new Map;constructor(){}static new(){return new at}static fromEntries(e){const t=new at;for(const[r,s]of e)t.set(r,s);return t}get size(){return this.map.size}has(e){return this.map.has(e.toString())}get(e){return this.map.get(e.toString())?.[1]}[Symbol.iterator](){return this.map.values()}entries(){return this.map.values()}*keys(){for(const e of this.map.values())yield e[0]}*values(){for(const e of this.map.values())yield e[1]}toSortedArray(e){const t=Array.from(this.map.values());return t.sort((t,r)=>e(t[0],r[0]).value),t.map(e=>e[1])}toJSON(){return Object.fromEntries(this)}set(e,t){this.map.set(e.toString(),[e,t])}delete(e){return this.map.delete(e.toString())}}class ct{map;static viewDictionaryKeys(e){return new ct(e)}static from(e){const t=ct.new();return t.insertAll(e),t}static new(){return new ct}constructor(e=at.new()){this.map=e}get size(){return this.map.size}has(e){return this.map.has(e)}*intersection(e){const t=this.size<e.size?this:e,r=t===this?e:this;for(const e of t)r.has(e)&&(yield e)}*[Symbol.iterator](){for(const e of this.map)yield e[0]}insert(e){return this.map.set(e,!0)}insertAll(e){for(const t of e)this.map.set(t,!0)}delete(e){return this.map.delete(e)}}function lt(e){return e}class ht extends Array{fixedLength;constructor(...e){super(...e),this.fixedLength=this.length}static new(e,t){y(e.length===t,`Expected an array of size: ${t}, got: ${e.length}`);const r=new ht(t);for(let s=0;s<t;s++)r[s]=e[s];return Object.seal(r),r}static fill(e,t){const r=[];for(let s=0;s<t;s++)r.push(e(s));return ht.new(r,t)}toString(){return I(Array.from(this))}}class ut{array;comparator;static fromArray(e,t=[]){const r=t.slice();return r.sort((t,r)=>e(t,r).value),new ut(r,e)}static fromSortedArray(e,t=[]){const r=t.length;if(0===r)return new ut([],e);const s=t.slice();for(let t=1;t<r;t++)if(e(s[t-1],s[t]).isGreater())throw new Error(`Expected sorted array, got: ${s}`);return new ut(s,e)}constructor(e,t){this.array=e,this.comparator=t}insert(e){const t=this.binarySearch(e);this.array.splice(t.idx,0,e)}pop(){return this.array.pop()}findIndex(e){const t=this.binarySearch(e);return t.isEqual?t.idx:-1}findExact(e){const t=this.binarySearch(e);if(t.isEqual)return this.array[t.idx]}removeOne(e){const t=this.binarySearch(e);t.isEqual&&this.array.splice(t.idx,1)}has(e){return this.binarySearch(e).isEqual}get length(){return this.array.length}slice(e,t){return this.array.slice(e,t)}binarySearch(e){const t=this.array,r=this.comparator;let s=0,i=t.length;for(;s<i;){const n=i+s>>1,o=r(t[n],e);if(o.isEqual())return{idx:n,isEqual:!0};o.isLess()?s=n+1:i=n}return{idx:s,isEqual:!1}}static fromTwoSortedCollections(e,t){y(e.comparator===t.comparator,"Cannot merge arrays if they do not use the same comparator");const r=e.comparator,s=e.array,i=s.length,n=t.array,o=n.length,a=new Array(i+o);let c=0,l=0,h=0;for(;c<i&&l<o;)r(s[c],n[l]).isLess()?a[h++]=s[c++]:(r(s[c],n[l]).isGreater()||(a[h++]=s[c++]),a[h++]=n[l++]);for(;c<i;)a[h++]=s[c++];for(;l<o;)a[h++]=n[l++];return ut.fromSortedArray(r,a)}*[Symbol.iterator](){for(const e of this.array)yield e}}class dt extends ut{static fromArray(e,t=[]){const r=t.slice();r.sort((t,r)=>e(t,r).value);const s=r.length;for(let i=1;i<s;i++)if(e(r[i-1],r[i]).isEqual())throw new Error(`Expected array without duplicates, got: ${t}`);return new dt(r,e)}static fromSortedArray(e,t=[]){if(0===t.length)return new dt([],e);const r=t.slice(),s=r.length;for(let t=1;t<s;t++)if(e(r[t-1],r[t]).isGreaterOrEqual())throw new Error(`Expected sorted array without duplicates, got: ${r}`);return new dt(r,e)}insert(e){const t=this.binarySearch(e);t.isEqual||this.array.splice(t.idx,0,e)}static fromTwoSortedCollections(e,t){y(e.comparator===t.comparator,"Cannot merge arrays if they do not use the same comparator");const r=e.comparator;if(0===e.length)return dt.fromSortedArray(r,t.array);if(0===t.length)return dt.fromSortedArray(r,e.array);const s=ut.fromTwoSortedCollections(e,t).array,i=s.length;let n=1;for(let e=1;e<i;e++)r(s[e-1],s[e]).isNotEqual()&&(s[n++]=s[e]);return s.length=n,dt.fromSortedArray(r,s)}}class gt extends w{validatorsCount;thirdOfValidators;validatorsSuperMajority;coresCount;slotDuration;epochLength;rotationPeriod;contestLength;ticketsPerValidator;maxTicketsPerExtrinsic;numberECPiecesPerSegment;preimageExpungePeriod;constructor(e){super(),this.validatorsCount=e.validatorsCount,this.thirdOfValidators=Math.floor(e.validatorsCount/3),this.validatorsSuperMajority=2*Math.floor(e.validatorsCount/3)+1,this.coresCount=e.coresCount,this.slotDuration=e.slotDuration,this.epochLength=e.epochLength,this.rotationPeriod=e.rotationPeriod,this.contestLength=e.contestLength,this.ticketsPerValidator=e.ticketsPerValidator,this.maxTicketsPerExtrinsic=e.maxTicketsPerExtrinsic,this.numberECPiecesPerSegment=e.numberECPiecesPerSegment,this.preimageExpungePeriod=e.preimageExpungePeriod}}const ft=new gt({contestLength:10,coresCount:2,epochLength:12,maxTicketsPerExtrinsic:3,rotationPeriod:4,slotDuration:6,ticketsPerValidator:3,validatorsCount:6,numberECPiecesPerSegment:1026,preimageExpungePeriod:6}),pt=new gt({contestLength:500,coresCount:341,epochLength:600,maxTicketsPerExtrinsic:16,rotationPeriod:10,slotDuration:6,ticketsPerValidator:2,validatorsCount:1023,numberECPiecesPerSegment:6,preimageExpungePeriod:19200});class yt{chainSpec;dbPath;omitSealVerification;static reInit(e){const{chainSpec:t,dbPath:r,omitSealVerification:s}=e;return new yt(new gt(t),r,s)}constructor(e,t,r=!1){this.chainSpec=e,this.dbPath=t,this.omitSealVerification=r}}function mt(e){const t=pt,{name:r,sizeHint:s}=e(t),i=new Map;return we.select({name:r,sizeHint:{bytes:s.bytes,isExact:!1}},s=>{if(s instanceof gt){const t=i.get(s);if(void 0!==t)return t;const r=e(s);return i.set(s,r),r}if(null===s)return e(t);if(null!==s)throw new Error(`[${r}] Unexpected context type ${typeof s} while encoding/decoding.`);throw new Error(`[${r}] Missing context while encoding/decoding!`)})}const bt=(e,t,r)=>"fixedLength"in t?Ie(we.sequenceFixLen(e,t.fixedLength)).convert(E,lt):Ie(we.sequenceVarLen(e,t)).convert(E,lt),At=(e,t)=>{const r=r=>{if(t!==r)throw new Error(`[${e.name}] Invalid size of fixed-size array. Got ${r}, expected: ${t}`)};return we.sequenceFixLen(e,t).convert(e=>(r(e.length),e),e=>(r(e.length),ht.new(e,t)))},It=(e,t,{typicalLength:r=32,compare:s=(e,r)=>t(e).compare(t(r))}={})=>Ae.new(`HashDictionary<${e.name}>[?]`,{bytes:r*e.sizeHint.bytes,isExact:!1},(t,r)=>{const i=Array.from(r.values());i.sort((e,t)=>s(e,t).value),t.varU32(X(i.length));for(const r of i)e.encode(t,r)},r=>{const i=at.new(),n=r.varU32();let o=null;for(let a=0;a<n;a+=1){const n=e.decode(r),a=t(n);if(i.has(a))throw new Error(`Duplicate item in the dictionary encoding: "${a}"!`);if(null!==o&&s(o,n).isGreaterOrEqual())throw new Error(`The keys in dictionary encoding are not sorted "${o}" >= "${n}"!`);i.set(a,n),o=n}return i},t=>{const r=t.decoder.varU32();t.sequenceFixLen(e,r)});class vt extends w{attempt;signature;static Codec=we.Class(vt,{attempt:we.u8.asOpaque(),signature:we.bytes(784).asOpaque()});static create({attempt:e,signature:t}){return new vt(e,t)}constructor(e,t){super(),this.attempt=e,this.signature=t}}class wt extends w{id;attempt;static Codec=we.Class(wt,{id:we.bytes(Re),attempt:we.u8.asOpaque()});static create({id:e,attempt:t}){return new wt(e,t)}constructor(e,t){super(),this.id=e,this.attempt=t}}const St=bt(vt.Codec,{minLength:0,maxLength:16,typicalLength:16});var Et;!function(e){e.bytesN=e=>z.fromString(t=>U.parseBytes(t,e).asOpaque()),e.bytesNNoPrefix=e=>z.fromString(t=>U.parseBytesNoPrefix(t,e).asOpaque()),e.bytes32=()=>z.fromString(e=>U.parseBytes(e,32).asOpaque()),e.bytes32NoPrefix=()=>z.fromString(e=>U.parseBytesNoPrefix(e,32).asOpaque()),e.bytesBlob=z.fromString(O.parseBlob),e.bytesBlobNoPrefix=z.fromString(O.parseBlobNoPrefix),e.ed25519Signature=z.fromString(e=>U.parseBytes(e,64).asOpaque()),e.ticketAttempt=z.fromNumber(e=>{if(0!==e&&1!==e&&2!==e)throw new Error("Invalid TicketAttempt value.");return W(e)}),e.uint8Array=z.fromAny(e=>{if(Array.isArray(e))return new Uint8Array(e);if(null===e)return new Uint8Array;throw new Error(`Expected an array, got ${typeof e} instead. [uint8Array]`)}),e.bigUint64Array=z.fromAny(e=>{if(Array.isArray(e))return new BigUint64Array(e.map(e=>BigInt(e)));if(null===e)return new BigUint64Array;throw new Error(`Expected an array, got ${typeof e} instead. [bigUint64Array]`)}),e.bigUint64=z.fromAny(e=>BigInt(e))}(Et||(Et={}));const Ct=2n**255n-19n,kt=2n**252n+27742317777372353535851937790883648493n,xt=0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Bt=0x6666666666666666666666666666666666666666666666666666666666666658n,_t={a:-1n,d:37095705934669439343138083508754565189542113879843219016388785533085940283555n,p:Ct,n:kt,h:8,Gx:xt,Gy:Bt},Rt=(e="")=>{throw new Error(e)},Ot=e=>"string"==typeof e,Ut=(e,t)=>!(e=>e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name)(e)||"number"==typeof t&&t>0&&e.length!==t?Rt("Uint8Array of valid length expected"):e,Tt=e=>new Uint8Array(e),Nt=(e,t=Ct)=>{let r=e%t;return r>=0n?r:t+r},Dt=e=>e instanceof Mt?e:Rt("Point expected");class Mt{constructor(e,t,r,s){this.ex=e,this.ey=t,this.ez=r,this.et=s}static fromAffine(e){return new Mt(e.x,e.y,1n,Nt(e.x*e.y))}static fromHex(e,t=!1){const{d:r}=_t,s=(n=e,o=32,e=Ut(Ot(n)?Qt(n):Tt(Ut(n)),o)).slice(),i=e[31];var n,o;s[31]=-129&i;const a=Gt(s);!t||0n<=a&&a<2n**256n||Rt("bad y coord 1"),t||0n<=a&&a<Ct||Rt("bad y coord 2");const c=Nt(a*a),l=Nt(c-1n),h=Nt(r*c+1n);let{isValid:u,value:d}=Wt(l,h);u||Rt("bad y coordinate 3");const g=1n==(1n&d),f=!!(128&i);return!t&&0n===d&&f&&Rt("bad y coord 3"),f!==g&&(d=Nt(-d)),new Mt(d,a,1n,Nt(d*a))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}equals(e){const{ex:t,ey:r,ez:s}=this,{ex:i,ey:n,ez:o}=Dt(e),a=Nt(t*o),c=Nt(i*s),l=Nt(r*o),h=Nt(n*s);return a===c&&l===h}is0(){return this.equals(Lt)}negate(){return new Mt(Nt(-this.ex),this.ey,this.ez,Nt(-this.et))}double(){const{ex:e,ey:t,ez:r}=this,{a:s}=_t,i=Nt(e*e),n=Nt(t*t),o=Nt(2n*Nt(r*r)),a=Nt(s*i),c=e+t,l=Nt(Nt(c*c)-i-n),h=a+n,u=h-o,d=a-n,g=Nt(l*u),f=Nt(h*d),p=Nt(l*d),y=Nt(u*h);return new Mt(g,f,y,p)}add(e){const{ex:t,ey:r,ez:s,et:i}=this,{ex:n,ey:o,ez:a,et:c}=Dt(e),{a:l,d:h}=_t,u=Nt(t*n),d=Nt(r*o),g=Nt(i*h*c),f=Nt(s*a),p=Nt((t+r)*(n+o)-u-d),y=Nt(f-g),m=Nt(f+g),b=Nt(d-l*u),A=Nt(p*y),I=Nt(m*b),v=Nt(p*b),w=Nt(y*m);return new Mt(A,I,w,v)}mul(e,t=!0){if(0n===e)return!0===t?Rt("cannot multiply by 0"):Lt;if("bigint"==typeof e&&0n<e&&e<kt||Rt("invalid scalar, must be < L"),!t&&this.is0()||1n===e)return this;if(this.equals(Pt))return er(e).p;let r=Lt,s=Pt;for(let i=this;e>0n;i=i.double(),e>>=1n)1n&e?r=r.add(i):t&&(s=s.add(i));return r}multiply(e){return this.mul(e)}clearCofactor(){return this.mul(BigInt(_t.h),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let e=this.mul(kt/2n,!1).double();return e=e.add(this),e.is0()}toAffine(){const{ex:e,ey:t,ez:r}=this;if(this.equals(Lt))return{x:0n,y:1n};const s=jt(r,Ct);return 1n!==Nt(r*s)&&Rt("invalid inverse"),{x:Nt(e*s),y:Nt(t*s)}}toRawBytes(){const{x:e,y:t}=this.toAffine(),r=Ft(t);return r[31]|=1n&e?128:0,r}toHex(){return Kt(this.toRawBytes())}}Mt.BASE=new Mt(xt,Bt,1n,Nt(xt*Bt)),Mt.ZERO=new Mt(0n,1n,1n,0n);const{BASE:Pt,ZERO:Lt}=Mt,Ht=(e,t)=>e.toString(16).padStart(t,"0"),Kt=e=>Array.from(Ut(e)).map(e=>Ht(e,2)).join(""),Vt=e=>e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:void 0,Qt=e=>{const t="hex invalid";if(!Ot(e))return Rt(t);const r=e.length,s=r/2;if(r%2)return Rt(t);const i=Tt(s);for(let r=0,n=0;r<s;r++,n+=2){const s=Vt(e.charCodeAt(n)),o=Vt(e.charCodeAt(n+1));if(void 0===s||void 0===o)return Rt(t);i[r]=16*s+o}return i},Ft=e=>Qt(Ht(e,64)).reverse(),Gt=e=>BigInt("0x"+Kt(Tt(Ut(e)).reverse())),$t=(...e)=>{const t=Tt(e.reduce((e,t)=>e+Ut(t).length,0));let r=0;return e.forEach(e=>{t.set(e,r),r+=e.length}),t},jt=(e,t)=>{(0n===e||t<=0n)&&Rt("no inverse n="+e+" mod="+t);let r=Nt(e,t),s=t,i=0n,n=1n,o=1n,a=0n;for(;0n!==r;){const e=s/r,t=s%r,c=i-o*e,l=n-a*e;s=r,r=t,i=o,n=a,o=c,a=l}return 1n===s?Nt(i,t):Rt("no inverse")},qt=(e,t)=>{let r=e;for(;t-- >0n;)r*=r,r%=Ct;return r},zt=19681161376707505956807079304988542015446066515923890162744021073123829784752n,Wt=(e,t)=>{const r=Nt(t*t*t),s=(e=>{const t=e*e%Ct*e%Ct,r=qt(t,2n)*t%Ct,s=qt(r,1n)*e%Ct,i=qt(s,5n)*s%Ct,n=qt(i,10n)*i%Ct,o=qt(n,20n)*n%Ct,a=qt(o,40n)*o%Ct,c=qt(a,80n)*a%Ct,l=qt(c,80n)*a%Ct,h=qt(l,10n)*i%Ct;return{pow_p_5_8:qt(h,2n)*e%Ct,b2:t}})(e*Nt(r*r*t)).pow_p_5_8;let i=Nt(e*r*s);const n=Nt(t*i*i),o=i,a=Nt(i*zt),c=n===e,l=n===Nt(-e),h=n===Nt(-e*zt);return c&&(i=o),(l||h)&&(i=a),1n==(1n&Nt(i))&&(i=Nt(-i)),{isValid:c||l,value:i}};let Jt;const Yt=()=>"object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,Zt={bytesToHex:Kt,hexToBytes:Qt,concatBytes:$t,mod:Nt,invert:jt,randomBytes:(e=32)=>{const t=Yt();return t&&t.getRandomValues||Rt("crypto.getRandomValues must be defined"),t.getRandomValues(Tt(e))},sha512Async:async(...e)=>{const t=Yt(),r=t&&t.subtle;r||Rt("etc.sha512Async or crypto.subtle must be defined");const s=$t(...e);return Tt(await r.digest("SHA-512",s.buffer))},sha512Sync:void 0};let Xt;Object.defineProperties(Zt,{sha512Sync:{configurable:!1,get:()=>Jt,set(e){Jt||(Jt=e)}}});const er=e=>{const t=Xt||(Xt=(()=>{const e=[];let t=Pt,r=t;for(let s=0;s<33;s++){r=t,e.push(r);for(let s=1;s<128;s++)r=r.add(t),e.push(r);t=r.double()}return e})()),r=(e,t)=>{let r=t.negate();return e?r:t};let s=Lt,i=Pt;const n=BigInt(255),o=BigInt(8);for(let a=0;a<33;a++){const c=128*a;let l=Number(e&n);e>>=o,l>128&&(l-=256,e+=1n);const h=c,u=c+Math.abs(l)-1,d=a%2!=0,g=l<0;0===l?i=i.add(r(d,t[h])):s=s.add(r(g,t[u]))}return{p:s,f:i}};var tr=o(625);const rr=32,sr=64;async function ir(e){if(0===e.length)return Promise.resolve([]);const t=e.reduce((e,{message:t,key:r,signature:s})=>e+r.length+s.length+t.length+1,0),r=new Uint8Array(t);let s=0;for(const{key:t,message:i,signature:n}of e){r.set(t.raw,s),s+=rr,r.set(n.raw,s),s+=sr;const e=i.length;y(e<256,`Message needs to be shorter than 256 bytes. Got: ${e}`),r[s]=e,s+=1,r.set(i.raw,s),s+=e}const i=Array.from((0,tr.verify_ed25519)(r)).map(e=>1===e);return Promise.resolve(i)}U.blobFromString("jam_val_key_ed25519"),U.blobFromString("jam_val_key_bandersnatch");class nr extends w{anchor;bitfield;validatorIndex;signature;static Codec=we.Class(nr,{anchor:we.bytes(Re).asOpaque(),bitfield:mt(e=>we.bitVecFixLen(e.coresCount)),validatorIndex:we.u16.asOpaque(),signature:we.bytes(sr).asOpaque()});static create({anchor:e,bitfield:t,validatorIndex:r,signature:s}){return new nr(e,t,r,s)}constructor(e,t,r,s){super(),this.anchor=e,this.bitfield=t,this.validatorIndex=r,this.signature=s}}const or=mt(e=>bt(nr.Codec,{minLength:0,maxLength:e.validatorsCount,typicalLength:e.validatorsCount/2})),ar=e=>z.array((e=>z.object({anchor:Et.bytes32(),bitfield:z.fromString(t=>{const r=Math.ceil(e.coresCount/8);return G.fromBytes(U.parseBytes(t,r),e.coresCount)}),validator_index:"number",signature:Et.ed25519Signature},({anchor:e,bitfield:t,validator_index:r,signature:s})=>nr.create({anchor:e,bitfield:t,validatorIndex:r,signature:s})))(e));class cr extends w{workReportHash;wasConsideredValid;key;signature;static Codec=we.Class(cr,{workReportHash:we.bytes(Re).asOpaque(),wasConsideredValid:we.bool,key:we.bytes(rr).asOpaque(),signature:we.bytes(sr).asOpaque()});static create({workReportHash:e,wasConsideredValid:t,key:r,signature:s}){return new cr(e,t,r,s)}constructor(e,t,r,s){super(),this.workReportHash=e,this.wasConsideredValid=t,this.key=r,this.signature=s}}class lr extends w{workReportHash;key;signature;static Codec=we.Class(lr,{workReportHash:we.bytes(Re).asOpaque(),key:we.bytes(rr).asOpaque(),signature:we.bytes(sr).asOpaque()});static create({workReportHash:e,key:t,signature:r}){return new lr(e,t,r)}constructor(e,t,r){super(),this.workReportHash=e,this.key=t,this.signature=r}}class hr extends w{isWorkReportValid;index;signature;static Codec=we.Class(hr,{isWorkReportValid:we.bool,index:we.u16.asOpaque(),signature:we.bytes(sr).asOpaque()});static create({isWorkReportValid:e,index:t,signature:r}){return new hr(e,t,r)}constructor(e,t,r){super(),this.isWorkReportValid=e,this.index=t,this.signature=r}}class ur extends w{workReportHash;votesEpoch;votes;static Codec=we.Class(ur,{workReportHash:we.bytes(Re).asOpaque(),votesEpoch:we.u32.asOpaque(),votes:mt(e=>Ie(we.sequenceFixLen(hr.Codec,e.validatorsSuperMajority)).convert(E,lt))});static create({workReportHash:e,votesEpoch:t,votes:r}){return new ur(e,t,r)}constructor(e,t,r){super(),this.workReportHash=e,this.votesEpoch=t,this.votes=r}}class dr extends w{verdicts;culprits;faults;static Codec=we.Class(dr,{verdicts:we.sequenceVarLen(ur.Codec),culprits:we.sequenceVarLen(lr.Codec),faults:we.sequenceVarLen(cr.Codec)});static create({verdicts:e,culprits:t,faults:r}){return new dr(e,t,r)}constructor(e,t,r){super(),this.verdicts=e,this.culprits=t,this.faults=r}}const gr=e=>X(e),fr=e=>Y(e),pr=e=>X(e),yr=e=>te(e),mr=e=>Y(e),br=e=>X(e);function Ar(e,t){return y(e.length===t.validatorsCount,`Invalid per-validator array length. Expected ${t.validatorsCount}, got: ${e.length}`),e}const Ir=e=>mt(t=>bt(e,{fixedLength:t.validatorsCount}));function vr(e,t){return y(e.length===t.epochLength,`Invalid per-epoch-block array length. Expected ${t.epochLength}, got: ${e.length}`),e}const wr=e=>mt(t=>bt(e,{fixedLength:t.epochLength}));class Sr extends w{anchor;stateRoot;beefyRoot;lookupAnchor;lookupAnchorSlot;prerequisites;static Codec=we.Class(Sr,{anchor:we.bytes(Re).asOpaque(),stateRoot:we.bytes(Re).asOpaque(),beefyRoot:we.bytes(Re).asOpaque(),lookupAnchor:we.bytes(Re).asOpaque(),lookupAnchorSlot:we.u32.asOpaque(),prerequisites:we.sequenceVarLen(we.bytes(Re).asOpaque())});static create({anchor:e,stateRoot:t,beefyRoot:r,lookupAnchor:s,lookupAnchorSlot:i,prerequisites:n}){return new Sr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n=[]){super(),this.anchor=e,this.stateRoot=t,this.beefyRoot=r,this.lookupAnchor=s,this.lookupAnchorSlot=i,this.prerequisites=n}}class Er extends w{treeRoot;index;static Codec=we.Class(Er,{treeRoot:we.bytes(Re),index:we.u16.asOpaque()});static create({treeRoot:e,index:t}){return new Er(e,t)}constructor(e,t){super(),this.treeRoot=e,this.index=t}}class Cr extends w{hash;len;static Codec=we.Class(Cr,{hash:we.bytes(Re).asOpaque(),len:we.u32});static create({hash:e,len:t}){return new Cr(e,t)}constructor(e,t){super(),this.hash=e,this.len=t}}class kr extends w{service;codeHash;payload;refineGasLimit;accumulateGasLimit;importSegments;extrinsic;exportCount;static Codec=we.Class(kr,{service:we.u32.asOpaque(),codeHash:we.bytes(Re).asOpaque(),payload:we.blob,refineGasLimit:we.u64.asOpaque(),accumulateGasLimit:we.u64.asOpaque(),importSegments:bt(Er.Codec,{minLength:0,maxLength:2048,typicalLength:2048}),extrinsic:we.sequenceVarLen(Cr.Codec),exportCount:we.u16});static create({service:e,codeHash:t,payload:r,refineGasLimit:s,accumulateGasLimit:i,importSegments:n,extrinsic:o,exportCount:a}){return new kr(e,t,r,s,i,n,o,a)}constructor(e,t,r,s,i,n,o,a){super(),this.service=e,this.codeHash=t,this.payload=r,this.refineGasLimit=s,this.accumulateGasLimit=i,this.importSegments=n,this.extrinsic=o,this.exportCount=a}}function xr(e){return m(e,e>=Br&&e<=_r,`WorkItemsCount: Expected '${Br} <= count <= ${_r}' got ${e}`)}const Br=1,_r=16;class Rr extends w{authorization;authCodeHost;authCodeHash;parametrization;context;items;static Codec=we.Class(Rr,{authorization:we.blob,authCodeHost:we.u32.asOpaque(),authCodeHash:we.bytes(Re).asOpaque(),parametrization:we.blob,context:Sr.Codec,items:we.sequenceVarLen(kr.Codec).convert(e=>e,e=>ht.new(e,xr(e.length)))});static create({authorization:e,authCodeHost:t,authCodeHash:r,parametrization:s,context:i,items:n}){return new Rr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){super(),this.authorization=e,this.authCodeHost=t,this.authCodeHash=r,this.parametrization=s,this.context=i,this.items=n}}var Or,Ur;(Ur=Or||(Or={}))[Ur.ok=0]="ok",Ur[Ur.outOfGas=1]="outOfGas",Ur[Ur.panic=2]="panic",Ur[Ur.badCode=3]="badCode",Ur[Ur.codeOversize=4]="codeOversize";class Tr extends w{kind;okBlob;static Codec=we.custom({name:"WorkExecResult",sizeHint:{bytes:1,isExact:!1}},(e,t)=>{e.varU32(X(t.kind)),t.kind===Or.ok&&null!==t.okBlob&&e.bytesBlob(t.okBlob)},e=>{const t=e.varU32();if(t===Or.ok){const r=e.bytesBlob();return new Tr(t,r)}if(t>Or.codeOversize)throw new Error(`Invalid WorkExecResultKind: ${t}`);return new Tr(t)},e=>{e.decoder.varU32()===Or.ok&&e.bytesBlob()});constructor(e,t=null){super(),this.kind=e,this.okBlob=t}}class Nr extends w{gasUsed;importedSegments;extrinsicCount;extrinsicSize;exportedSegments;static Codec=we.Class(Nr,{gasUsed:we.varU64.asOpaque(),importedSegments:we.varU32,extrinsicCount:we.varU32,extrinsicSize:we.varU32,exportedSegments:we.varU32});static create({gasUsed:e,importedSegments:t,extrinsicCount:r,extrinsicSize:s,exportedSegments:i}){return new Nr(e,t,r,s,i)}constructor(e,t,r,s,i){super(),this.gasUsed=e,this.importedSegments=t,this.extrinsicCount=r,this.extrinsicSize=s,this.exportedSegments=i}}class Dr{serviceId;codeHash;payloadHash;gas;result;load;static Codec=we.Class(Dr,{serviceId:we.u32.asOpaque(),codeHash:we.bytes(Re).asOpaque(),payloadHash:we.bytes(Re),gas:we.u64.asOpaque(),result:Tr.Codec,load:Nr.Codec});static create({serviceId:e,codeHash:t,payloadHash:r,gas:s,result:i,load:n}){return new Dr(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.serviceId=e,this.codeHash=t,this.payloadHash=r,this.gas=s,this.result=i,this.load=n}}class Mr extends w{hash;length;erasureRoot;exportsRoot;exportsCount;static Codec=we.Class(Mr,{hash:we.bytes(Re).asOpaque(),length:we.u32,erasureRoot:we.bytes(Re),exportsRoot:we.bytes(Re).asOpaque(),exportsCount:we.u16});static create({hash:e,length:t,erasureRoot:r,exportsRoot:s,exportsCount:i}){return new Mr(e,t,r,s,i)}constructor(e,t,r,s,i){super(),this.hash=e,this.length=t,this.erasureRoot=r,this.exportsRoot=s,this.exportsCount=i}}class Pr extends w{workPackageHash;segmentTreeRoot;static Codec=we.Class(Pr,{workPackageHash:we.bytes(Re).asOpaque(),segmentTreeRoot:we.bytes(Re).asOpaque()});constructor(e,t){super(),this.workPackageHash=e,this.segmentTreeRoot=t}static create({workPackageHash:e,segmentTreeRoot:t}){return new Pr(e,t)}}class Lr extends w{workPackageSpec;context;coreIndex;authorizerHash;authorizationOutput;segmentRootLookup;results;authorizationGasUsed;static Codec=we.Class(Lr,{workPackageSpec:Mr.Codec,context:Sr.Codec,coreIndex:p.isGreaterOrEqual(h.V0_6_5)?we.varU32.convert(e=>X(e),e=>{if(!Z(e))throw new Error(`Core index exceeds U16: ${e}`);return mr(e)}):we.u16.asOpaque(),authorizerHash:we.bytes(Re).asOpaque(),authorizationOutput:we.blob,segmentRootLookup:Ie(we.sequenceVarLen(Pr.Codec)),results:we.sequenceVarLen(Dr.Codec).convert(e=>e,e=>ht.new(e,xr(e.length))),authorizationGasUsed:we.varU64.asOpaque()});static create({workPackageSpec:e,context:t,coreIndex:r,authorizerHash:s,authorizationOutput:i,segmentRootLookup:n,results:o,authorizationGasUsed:a}){return new Lr(e,t,r,s,i,n,o,a)}constructor(e,t,r,s,i,n,o,a){super(),this.workPackageSpec=e,this.context=t,this.coreIndex=r,this.authorizerHash=s,this.authorizationOutput=i,this.segmentRootLookup=n,this.results=o,this.authorizationGasUsed=a}}const Hr=[2,3];class Kr extends w{validatorIndex;signature;static Codec=we.Class(Kr,{validatorIndex:we.u16.asOpaque(),signature:we.bytes(sr).asOpaque()});static create({validatorIndex:e,signature:t}){return new Kr(e,t)}constructor(e,t){super(),this.validatorIndex=e,this.signature=t}}class Vr extends w{report;slot;credentials;static Codec=we.Class(Vr,{report:Lr.Codec,slot:we.u32.asOpaque(),credentials:bt(Kr.Codec,{minLength:Hr[0],maxLength:Hr[1],typicalLength:Hr[1]})});static create({report:e,slot:t,credentials:r}){return new Vr(e,t,r)}constructor(e,t,r){super(),this.report=e,this.slot=t,this.credentials=r}}const Qr=mt(e=>bt(Vr.Codec,{minLength:0,maxLength:e.coresCount,typicalLength:e.coresCount}));class Fr extends w{bandersnatch;ed25519;static Codec=we.Class(Fr,{bandersnatch:we.bytes(xe).asOpaque(),ed25519:we.bytes(rr).asOpaque()});static create({bandersnatch:e,ed25519:t}){return new Fr(e,t)}constructor(e,t){super(),this.bandersnatch=e,this.ed25519=t}}class Gr extends w{entropy;ticketsEntropy;validators;static Codec=we.Class(Gr,{entropy:we.bytes(Re).asOpaque(),ticketsEntropy:we.bytes(Re).asOpaque(),validators:Ir(Fr.Codec)});static create({entropy:e,ticketsEntropy:t,validators:r}){return new Gr(e,t,r)}constructor(e,t,r){super(),this.entropy=e,this.ticketsEntropy=t,this.validators=r}}const $r=e=>{const t=e.encoded().raw,r=t.length-96;return O.blobFrom(t.subarray(0,r))};class jr extends w{static Codec=we.Class(jr,{parentHeaderHash:we.bytes(Re).asOpaque(),priorStateRoot:we.bytes(Re).asOpaque(),extrinsicHash:we.bytes(Re).asOpaque(),timeSlotIndex:we.u32.asOpaque(),epochMarker:we.optional(Gr.Codec),ticketsMarker:we.optional(wr(wt.Codec)),offendersMarker:we.sequenceVarLen(we.bytes(rr).asOpaque()),bandersnatchBlockAuthorIndex:we.u16.asOpaque(),entropySource:we.bytes(96).asOpaque(),seal:we.bytes(96).asOpaque()});static create(e){return Object.assign(jr.empty(),e)}parentHeaderHash=U.zero(Re).asOpaque();priorStateRoot=U.zero(Re).asOpaque();extrinsicHash=U.zero(Re).asOpaque();timeSlotIndex=gr(0);epochMarker=null;ticketsMarker=null;offendersMarker=[];bandersnatchBlockAuthorIndex=fr(0);entropySource=U.zero(96).asOpaque();seal=U.zero(96).asOpaque();constructor(){super()}static empty(){return new jr}}class qr extends Oe{static Codec=we.Class(qr,{hash:we.bytes(Re).asOpaque(),data:jr.Codec.View});static create({hash:e,data:t}){return new Oe(e,t)}}const zr=qr.Codec;class Wr extends w{requester;blob;static Codec=we.Class(Wr,{requester:we.u32.asOpaque(),blob:we.blob});static create({requester:e,blob:t}){return new Wr(e,t)}constructor(e,t){super(),this.requester=e,this.blob=t}}const Jr=we.sequenceVarLen(Wr.Codec);class Yr extends w{tickets;preimages;guarantees;assurances;disputes;static Codec=we.Class(Yr,{tickets:St,preimages:Jr,guarantees:Qr,assurances:or,disputes:dr.Codec});static create({tickets:e,preimages:t,assurances:r,disputes:s,guarantees:i}){return new Yr(e,t,i,r,s)}constructor(e,t,r,s,i){super(),this.tickets=e,this.preimages=t,this.guarantees=r,this.assurances=s,this.disputes=i}}class Zr extends w{header;extrinsic;static Codec=we.Class(Zr,{header:jr.Codec,extrinsic:Yr.Codec});static create({header:e,extrinsic:t}){return new Zr(e,t)}constructor(e,t){super(),this.header=e,this.extrinsic=t}}const Xr=z.object({target:Et.bytes32(),vote:"boolean",key:Et.bytes32(),signature:Et.ed25519Signature},({target:e,vote:t,key:r,signature:s})=>cr.create({workReportHash:e,wasConsideredValid:t,key:r,signature:s})),es=z.object({target:Et.bytes32(),key:Et.bytes32(),signature:Et.ed25519Signature},({target:e,key:t,signature:r})=>lr.create({workReportHash:e,key:t,signature:r})),ts=z.object({vote:"boolean",index:"number",signature:Et.ed25519Signature},({vote:e,index:t,signature:r})=>hr.create({isWorkReportValid:e,index:t,signature:r})),rs=z.object({target:Et.bytes32(),age:"number",votes:z.array(ts)},({target:e,age:t,votes:r})=>ur.create({workReportHash:e,votesEpoch:t,votes:r})),ss=z.object({verdicts:z.array(rs),culprits:z.array(es),faults:z.array(Xr)},({verdicts:e,culprits:t,faults:r})=>dr.create({verdicts:e,culprits:t,faults:r})),is=z.object({anchor:Et.bytes32(),state_root:Et.bytes32(),beefy_root:Et.bytes32(),lookup_anchor:Et.bytes32(),lookup_anchor_slot:"number",prerequisites:z.array(Et.bytes32())},({anchor:e,state_root:t,beefy_root:r,lookup_anchor:s,lookup_anchor_slot:i,prerequisites:n})=>Sr.create({anchor:e,stateRoot:t,beefyRoot:r,lookupAnchor:s,lookupAnchorSlot:i,prerequisites:n})),ns=z.object({ok:z.optional(z.fromString(O.parseBlob)),out_of_gas:z.optional(z.fromAny(()=>null)),panic:z.optional(z.fromAny(()=>null)),bad_code:z.optional(z.fromAny(()=>null)),code_oversize:z.optional(z.fromAny(()=>null))},e=>{const{ok:t,out_of_gas:r,panic:s,bad_code:i,code_oversize:n}=e;if(void 0!==t)return new Tr(X(Or.ok),t);if(null===r)return new Tr(X(Or.outOfGas));if(null===s)return new Tr(X(Or.panic));if(null===i)return new Tr(X(Or.badCode));if(null===n)return new Tr(X(Or.codeOversize));throw new Error("Invalid WorkExecResult")}),os=z.object({gas_used:z.fromNumber(e=>yr(e)),imports:"number",extrinsic_count:"number",extrinsic_size:"number",exports:"number"},({gas_used:e,imports:t,extrinsic_count:r,extrinsic_size:s,exports:i})=>Nr.create({gasUsed:yr(e),importedSegments:X(t),extrinsicCount:X(r),extrinsicSize:X(s),exportedSegments:X(i)})),as=z.object({service_id:"number",code_hash:Et.bytes32(),payload_hash:Et.bytes32(),accumulate_gas:z.fromNumber(e=>yr(e)),result:ns,refine_load:os},({service_id:e,code_hash:t,payload_hash:r,accumulate_gas:s,result:i,refine_load:n})=>Dr.create({serviceId:e,codeHash:t,payloadHash:r,gas:s,result:i,load:n})),cs=z.object({hash:Et.bytes32(),length:"number",erasure_root:Et.bytes32(),exports_root:Et.bytes32(),exports_count:"number"},({hash:e,length:t,erasure_root:r,exports_root:s,exports_count:i})=>Mr.create({hash:e,length:t,erasureRoot:r,exportsRoot:s,exportsCount:i})),ls=z.object({work_package_hash:Et.bytes32(),segment_tree_root:Et.bytes32()},({work_package_hash:e,segment_tree_root:t})=>Pr.create({workPackageHash:e,segmentTreeRoot:t})),hs=z.object({package_spec:cs,context:is,core_index:"number",authorizer_hash:Et.bytes32(),auth_output:z.fromString(O.parseBlob),segment_root_lookup:z.array(ls),results:z.array(as),auth_gas_used:z.fromNumber(e=>yr(e))},({package_spec:e,context:t,core_index:r,authorizer_hash:s,auth_output:i,results:n,segment_root_lookup:o,auth_gas_used:a})=>{const c=ht.new(n,xr(n.length));return Lr.create({workPackageSpec:e,context:t,coreIndex:r,authorizerHash:s,authorizationOutput:i,segmentRootLookup:o,results:c,authorizationGasUsed:a})}),us=z.object({validator_index:"number",signature:Et.ed25519Signature},({validator_index:e,signature:t})=>Kr.create({validatorIndex:e,signature:t})),ds=z.object({report:hs,slot:"number",signatures:z.array(us)},({report:e,slot:t,signatures:r})=>Vr.create({report:e,slot:t,credentials:r})),gs=z.array(ds),fs=z.object({requester:"number",blob:z.fromString(O.parseBlob)},({requester:e,blob:t})=>Wr.create({requester:e,blob:t})),ps=z.array(fs),ys=z.object({attempt:Et.ticketAttempt,signature:z.fromString(e=>U.parseBytes(e,784).asOpaque())},e=>vt.create({attempt:e.attempt,signature:e.signature})),ms=z.array(ys),bs=z.fromString(e=>U.parseBytes(e,96).asOpaque()),As=z.object({bandersnatch:Et.bytes32(),ed25519:Et.bytes32()},Fr.create),Is=z.object({entropy:Et.bytes32(),tickets_entropy:Et.bytes32(),validators:z.array(As)},e=>Gr.create({entropy:e.entropy,ticketsEntropy:e.tickets_entropy,validators:e.validators})),vs=z.object({id:Et.bytes32(),attempt:Et.ticketAttempt},e=>wt.create({id:e.id,attempt:e.attempt})),ws=z.object({parent:Et.bytes32(),parent_state_root:Et.bytes32(),extrinsic_hash:Et.bytes32(),slot:"number",epoch_mark:z.optional(Is),tickets_mark:z.optional(z.array(vs)),offenders_mark:z.array(Et.bytes32()),author_index:"number",entropy_source:bs,seal:bs},({parent:e,parent_state_root:t,extrinsic_hash:r,slot:s,epoch_mark:i,tickets_mark:n,offenders_mark:o,author_index:a,entropy_source:c,seal:l})=>{const h=jr.empty();return h.parentHeaderHash=e,h.priorStateRoot=t,h.extrinsicHash=r,h.timeSlotIndex=s,h.epochMarker=i??null,h.ticketsMarker=n??null,h.offendersMarker=o,h.bandersnatchBlockAuthorIndex=a,h.entropySource=c,h.seal=l,h});class Ss extends w{name;ip;port;static fromString(e){const[t,r]=e.split("@"),s=r.substring(0,r.lastIndexOf(":")),i=r.substring(r.lastIndexOf(":")+1);if(""===t||""===s||""===i)throw new Error(`Invalid bootnode format, expected: <name>@<ip>:<port>, got: "${e}"`);const n=Number.parseInt(i);if(!Z(n))throw new Error(`Invalid port number: "${i}"`);return new Ss(t,s,n)}constructor(e,t,r){super(),this.name=e,this.ip=t,this.port=r}}class Es extends w{bootnodes;id;genesisHeader;genesisState;static fromJson=z.object({bootnodes:z.optional(z.array(z.fromString(Ss.fromString))),id:"string",genesis_header:Et.bytesBlobNoPrefix,genesis_state:z.map(Et.bytesNNoPrefix(31),Et.bytesBlobNoPrefix)},e=>Es.create({bootnodes:e.bootnodes,id:e.id,genesisHeader:e.genesis_header,genesisState:e.genesis_state??new Map}));static create({bootnodes:e=[],id:t="",genesisHeader:r=O.empty(),genesisState:s=new Map}){return new Es({bootnodes:e,id:t,genesisHeader:r,genesisState:s})}constructor(e){super(),this.bootnodes=e.bootnodes,this.id=e.id,this.genesisHeader=e.genesisHeader,this.genesisState=e.genesisState}}const Cs=t(import.meta.url)("node:fs");var ks=o.n(Cs);const xs=t(import.meta.url)("node:os");var Bs=o.n(xs);const _s=JSON.parse('{"$schema":"./config-v1.schema.json","version":1,"flavor":"tiny","authorship":{"omit_seal_verification":false},"chain_spec":{"id":"typeberry-dev","bootnodes":["e3r2oc62zwfj3crnuifuvsxvbtlzetk4o5qyhetkhagsc2fgl2oka@127.0.0.1:40000","eecgwpgwq3noky4ijm4jmvjtmuzv44qvigciusxakq5epnrfj2utb@127.0.0.1:12345","en5ejs5b2tybkfh4ym5vpfh7nynby73xhtfzmazumtvcijpcsz6ma@127.0.0.1:12346","ekwmt37xecoq6a7otkm4ux5gfmm4uwbat4bg5m223shckhaaxdpqa@127.0.0.1:12347"],"genesis_header":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da293d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e948e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260fafff16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea020000ffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","genesis_state":{"01000000000000000000000000000000000000000000000000000000000000":"08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","02000000000000000000000000000000000000000000000000000000000000":"0b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb00b27478648cd19b4f812f897a26976ecf312eac28508b4368d0c63ea949c7cb0","03000000000000000000000000000000000000000000000000000000000000":"00","04000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf426000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085f9095f4abd040839d793d89ab5ff25c61e50c844ab6765e2c0b22373b5a8f6fbe5fc0cd61fdde580b3d44fe1be127197e33b91960b10d2c6fc75aec03f36e16c2a8204961097dbc2c5ba7655543385399cc9ef08bf2e520ccf3b0a7569d88492e630ae2b14e758ab0960e372172203f4c9a41777dadd529971d7ab9d23ab29fe0e9c85ec450505dde7f5ac038274cf01aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bc5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d48e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e33d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d03d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d05e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161df16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d3d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d0aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bcaa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bc3d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e300","05000000000000000000000000000000000000000000000000000000000000":"00000000","06000000000000000000000000000000000000000000000000000000000000":"6f6ad2224d7d58aec6573c623ab110700eaca20a48dc2965d535e466d524af2a835ac82bfa2ce8390bb50680d4b7a73dfa2a4cff6d8c30694b24a605f9574eafd2d34655ebcad804c56d2fd5f932c575b6a5dbb3f5652c5202bcc75ab9c2cc958a715731759b7fceaae288bcb70a605c31cbdfae83d0f4a45dfc2b2458dc9fae","07000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","08000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","09000000000000000000000000000000000000000000000000000000000000":"5e465beb01dbafe160ce8216047f2155dd0569f058afd52dcea601025a8d161d3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29b27150a1f1cd24bccc792ba7ba4220a1e8c36636e35a969d1d14b4c89bce7d1d463474fb186114a89dd70e88506fefc9830756c27a7845bec1cb6ee31e07211afd0dde34f0dc5d89231993cd323973faa23d84d521fd574e840b8617c75d1a1d0102aa3c71999137001a77464ced6bb2885c460be760c709009e26395716a52c8c52e6e23906a455b4264e7d0c75466e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003d5e5a51aab2b048f8686ecd79712a80e3265a114cc73f14bdb2a59233fb66d022351e22105a19aabb42589162ad7f1ea0df1c25cebf0e4a9fcd261301274862a2534be5b2f761dc898160a9b4762eb46bd171222f6cdf87f5127a9e8970a54c44fe7b2e12dda098854a9aaab03c3a47953085668673a84b0cedb4b0391ed6ae2deb1c3e04f0bc618a2bc1287d8599e8a1c47ff715cd4cbd3fe80e2607744d4514b491ed2ef76ae114ecb1af99ba6af32189bf0471c06aa3e6acdaf82e7a959cb24a5c1444cac3a6678f5182459fd8ce0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa2b95f7572875b0d0f186552ae745ba8222fc0b5bd456554bfe51c68938f8bce68e0cf7f26c59f963b5846202d2327cc8bc0c4eff8cb9abd4012f9a71decf008faee314528448651e50bea6d2e7e5d3176698fea0b932405a4ec0a19775e72325e44a6d28f99fba887e04eb818f13d1b73f75f0161644283df61e7fbaad7713fae0ef79fe92499202834c97f512d744515a57971badf2df62e23697e9fe347f168fed0adb9ace131f49bbd500a324e2469569423f37c5d3b430990204ae17b383fcd582cb864168c8b46be8d779e7ca00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007f6190116d118d643a98878e294ccf62b509e214299931aad8ff9764181a4e33b3e0e096b02e2ec98a3441410aeddd78c95e27a0da6f411a09c631c0f2bea6e98dfdac3e2f604ecda637e4969a139ceb70c534bd5edc4210eb5ac71178c1d62f0c977197a2c6a9e8ada6a14395bc9aa3a384d35f40c3493e20cb7efaa799f66d1cedd5b2928f8e34438b07072bbae404d7dfcee3f457f9103173805ee163ba550854e4660ccec49e25fafdb00e6adfbc8e875de1a9541e1721e956b972ef2b135cc7f71682615e12bb7d6acd353d7681000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048e5fcdce10e0b64ec4eebd0d9211c7bac2f27ce54bca6f7776ff6fee86ab3e35c7f34a4bd4f2d04076a8c6f9060a0c8d2c6bdd082ceb3eda7df381cb260faffb78a95d81f6c7cdc517a36d81191b6f7718dcf44e76c0ce9fb724d3aea39fdb3c5f4ee31eb1f45e55b783b687b1e9087b092a18341c7cda102b4100685b0a014d55f1ccdb7600ec0db14bb90f7fc3126dc2625945bb44f302fc80df0c225546c06fa1952ef05bdc83ceb7a23373de0637cd9914272e3e3d1a455db6c48cc6b2b2c17e1dcf7cd1586a235821308aee0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f16e5352840afb47e206b5c89f560f2611835855cf2e6ebad1acc9520a72591d837ce344bc9defceb0d7de7e9e9925096768b7adb4dad932e532eb6551e0ea02b0b9121622bf8a9a9e811ee926740a876dd0d9036f2f3060ebfab0c7c489a338a7728ee2da4a265696edcc389fe02b2caf20b5b83aeb64aaf4184bedf127f4eea1d737875854411d58ca4a2b69b066b0a0c09d2a0b7121ade517687c51954df913fe930c227723dd8f58aa2415946044dc3fb15c367a2185d0fc1f7d2bb102ff14a230d5f81cfc8ad445e51efddbf4260000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","0a000000000000000000000000000000000000000000000000000000000000":"0000","0b000000000000000000000000000000000000000000000000000000000000":"00000000","0c000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000","0d000000000000000000000000000000000000000000000000000000000000":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","0e000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000","0f000000000000000000000000000000000000000000000000000000000000":"000000000000000000000000","ff000000000000000000000000000000000000000000000000000000000000":"15f8485e3a88e86182e63280720d5ec9892578f0e577fb1bcdda5cf49795081500e40b540200000064000000000000006400000000000000100500000000000004000000","00fe00ff00ff00ff6326432b5b3213dfd1609495e13c6b276cb474d6796453":"09626f6f74737472617000000000000000000020000a00000000000628023307320015","00fe00ff00ff00fff8485e3a88e86182e63280720d5ec9892578f0e577fb1b":"09626f6f747374726170000000000000020000200032040000050283ae7900300194012f027802280d00000028ae00000028ab029511e07b10187b15107b1608648664783309043307000001ac967c9566fc5106769587047d7833050159083a8489ff003305025329c0002d3305035329e000253305045329f0001d3305055329f800153305065329fc000d8898fe009a850801ac564564587b175010029c026478e45607c95707d88709e48707c98707887720d479098217c8750594983307000001da95072805330801821018821510821608951120320000951150ff7b10a8007b15a0007b169800330908ac98e7003309fcaa97e5015107e101958af8957508510a457d583306015908408489ff003306025329c0002d3306035329e000253306045329f0001d3306055329f800153306065329fc000d8898fe009a860801ae6a092890003306017b166457646864a6501004e501821a51077be4a607c9a70753176072c85a089576a09587607b1751064c7d783305015908378489ff003305025329c0002d3305035329e000253305045329f0001d3305055329f800153305065329fc000d8898fe009a850801ac562a016458501006810128073305330701e45608c95808e47808c97808330921ae981d33083307000001018210a8008215a000821698009511b00032008219c89505c857077c792051090933083307286e958adf957521510a547d573306015907378477ff003306025327c0002d3306035327e000253306045327f0001d3306055327f800153306065327fc000d8877fe009a7608017b1aac6a920064576468501008e6006478821a28073306330801c86507e46a09c96909e6890801c878088088fc330964330a640a0964757b1708481114951714330804951908330a040a0395171833098000330850100a4a330820a107330964951a1864570a0b81180833070000023b080000029889183b090300029889103b090200029888083b080100023308202806ff0000003307000001330832008d7a84aa07c8a70b510a0e647c0178c895cc01acbcfbc9a903843cf8c8cb0a580c1d8482ff0014090101010101010101ca920c017bbc95bb08acabfb843907520905280ec8a9090178a895aa01ac9afb320051089b0064797c77510791005127ff0090006c7a570a09330a330828735527c0000d330a01330b80284a5527e0000e330a02330b40ff283c5527f0000e330a03330b20ff282e5527f8000e330a04330b10ff28205527fc000e330a05330b08ff2812887afe00330b04ff93ab02ff85aa0701ae8a2b3308c8b70764ab01c8b90c7ccc97880895bbffd4c808520bf28aa903cf9707c88707320032000000002124492a21494a22212121212132154a9224a5909a248d88482422494924242424244426ad0a258924a524121212121222a3504d92a43022a292a44a52120909090909914585aa26c924a924494a1421a984909090903c54495a92241140962465495111942a24854421514814124544a6342549923a","0023000000000000478648cd19b4f812f897a26976ecf312eac28508b4368d":"0100000000","004b000400000000f324d112c31c3778a072940b55dd35f3a4b77e72d2d2db":"0100000000"}},"database_base_path":"./database"}');class Rs{omitSealVerification;static fromJson=z.object({omit_seal_verification:"boolean"},Rs.new);static new({omit_seal_verification:e}){return new Rs(e)}constructor(e){this.omitSealVerification=e}}const Os="dev",Us={name:Bs().hostname(),config:Os};var Ts;!function(e){e.Tiny="tiny",e.Full="full"}(Ts||(Ts={}));const Ns=z.fromString((e,t)=>{switch(e){case Ts.Tiny:return Ts.Tiny;case Ts.Full:return Ts.Full;default:throw Error(`unknown network flavor: ${e} at ${t}`)}});class Ds{$schema;version;flavor;chainSpec;databaseBasePath;authorship;static fromJson=z.object({$schema:"string",version:"number",flavor:Ns,chain_spec:Es.fromJson,database_base_path:"string",authorship:Rs.fromJson},Ds.new);static new({$schema:e,version:t,flavor:r,chain_spec:s,database_base_path:i,authorship:n}){if(1!==t)throw new Error("Only version=1 config is supported.");return new Ds(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.$schema=e,this.version=t,this.flavor=r,this.chainSpec=s,this.databaseBasePath=i,this.authorship=n}}var Ms;function Ps(e){const t="debug"===e?"LOG":e.toUpperCase();if(void 0===Ms[t])throw new Error(`Unknown logging level: "${e}". Use one of "trace", "debug", "log","info", "warn", "error"`);return Ms[t]}!function(e){e[e.TRACE=1]="TRACE",e[e.LOG=2]="LOG",e[e.INFO=3]="INFO",e[e.WARN=4]="WARN",e[e.ERROR=5]="ERROR"}(Ms||(Ms={}));class Ls{options;static create(e,t){return e===Ms.TRACE?new Hs(t):e===Ms.LOG?new Ks(t):e===Ms.INFO?new Vs(t):new Ls(t)}constructor(e){this.options=e}trace(e,t,r){}log(e,t,r){}info(e,t,r){}warn(e,t,r){this.push(Ms.WARN,e,t,r)}error(e,t,r){this.push(Ms.ERROR,e,t,r)}push(e,t,r,s){const i=r.replace(this.options.workingDir,""),n=t.replace(this.options.workingDir,""),o=function(e,t){let r=t;for(;;){const s=e.modules.get(r);if(void 0!==s)return s;const i=r.lastIndexOf("/");if(-1===i)return e.defaultLevel;r=t.substring(0,i)}}(this.options,t),a=Ms[e].padEnd(5);if(e<o)return;const c=`${a} [${n}] ${s}\n\t@ ${i}`;e===Ms.WARN?console.warn(c):e===Ms.ERROR?console.error(c):console.info(c)}}class Hs extends Ls{trace(e,t,r){this.push(Ms.TRACE,e,t,r)}log(e,t,r){this.push(Ms.LOG,e,t,r)}info(e,t,r){this.push(Ms.INFO,e,t,r)}}class Ks extends Ls{trace(e,t,r){}log(e,t,r){this.push(Ms.LOG,e,t,r)}info(e,t,r){this.push(Ms.INFO,e,t,r)}}class Vs extends Ls{trace(e,t,r){}log(e,t,r){}info(e,t,r){this.push(Ms.INFO,e,t,r)}}const Qs={workingDir:"",defaultLevel:Ms.LOG,modules:new Map},Fs={options:Qs,transport:Ls.create(Qs.defaultLevel,Qs)};class Gs{moduleName;fileName;config;static new(e,t){const r=e??"unknown";return new Gs(t??r,r,Fs)}static configureAllFromOptions(e){const t=Array.from(e.modules.values()).reduce((e,t)=>e<t?e:t,e.defaultLevel),r=Ls.create(t,e);Fs.options=e,Fs.transport=r}static configureAll(e,t,r){const s=function(e,t,r){const s=new Map,i=e.toLowerCase().split(",");let n=t;for(const e of i){const t=e.trim();if(0!==t.length)if(t.includes("=")){const[e,r]=t.split("=");s.set(e.trim(),Ps(r.trim()))}else n=Ps(t)}const o="".split("/");return o.pop(),o.pop(),{defaultLevel:n,modules:s,workingDir:r??o.join("/")}}(e,t,r);Gs.configureAllFromOptions(s)}constructor(e,t,r){this.moduleName=e,this.fileName=t,this.config=r}trace(e){this.config.transport.trace(this.moduleName,this.fileName,e)}log(e){this.config.transport.log(this.moduleName,this.fileName,e)}info(e){this.config.transport.info(this.moduleName,this.fileName,e)}warn(e){this.config.transport.warn(this.moduleName,this.fileName,e)}error(e){this.config.transport.error(this.moduleName,this.fileName,e)}}const $s=t(import.meta.url)("node:worker_threads"),js=e=>Ae.withView(e.name,e.sizeHint,(t,r)=>e.encode(t,r.data),t=>{const r=t.clone(),s=He(e.skipEncoded(r));return new Oe(s.asOpaque(),e.decode(t))},e.skip,e.View);class qs extends w{workReport;timeout;static Codec=we.Class(qs,{workReport:js(Lr.Codec),timeout:we.u32.asOpaque()});static create({workReport:e,timeout:t}){return new qs(e,t)}constructor(e,t){super(),this.workReport=e,this.timeout=t}}class zs extends w{headerHash;mmr;postStateRoot;reported;static Codec=we.Class(zs,{headerHash:we.bytes(Re).asOpaque(),mmr:we.object({peaks:Ie(we.sequenceVarLen(we.optional(we.bytes(Re))))}),postStateRoot:we.bytes(Re).asOpaque(),reported:It(Pr.Codec,e=>e.workPackageHash)});static create({headerHash:e,mmr:t,postStateRoot:r,reported:s}){return new zs(e,t,r,s)}constructor(e,t,r,s){super(),this.headerHash=e,this.mmr=t,this.postStateRoot=r,this.reported=s}}function Ws(e,t){return y(e.length===t.coresCount,`Invalid per-core array length. Expected ${t.coresCount}, got: ${e.length}`),e}const Js=e=>mt(t=>bt(e,{fixedLength:t.coresCount})),Ys=()=>Ie(we.sequenceVarLen(we.bytes(Re))).convert(e=>e.array,e=>{const t=e.map(e=>e.asOpaque());return dt.fromSortedArray(ei,t)}),Zs=Ys();class Xs{goodSet;badSet;wonkySet;punishSet;static Codec=we.Class(Xs,{goodSet:Zs,badSet:Zs,wonkySet:Zs,punishSet:Ys()});static create({goodSet:e,badSet:t,wonkySet:r,punishSet:s}){return new Xs(e,t,r,s)}constructor(e,t,r,s){this.goodSet=e,this.badSet=t,this.wonkySet=r,this.punishSet=s}static fromSortedArrays({goodSet:e,badSet:t,wonkySet:r,punishSet:s}){return new Xs(dt.fromSortedArray(ei,e),dt.fromSortedArray(ei,t),dt.fromSortedArray(ei,r),dt.fromSortedArray(ei,s))}}function ei(e,t){return e.compare(t)}class ti{service;gasLimit;static Codec=we.Class(ti,{service:we.u32.asOpaque(),gasLimit:we.u64.asOpaque()});static create({service:e,gasLimit:t}){return new ti(e,t)}constructor(e,t){this.service=e,this.gasLimit=t}}class ri{manager;authManager;validatorsManager;autoAccumulateServices;static Codec=we.Class(ri,{manager:we.u32.asOpaque(),authManager:we.u32.asOpaque(),validatorsManager:we.u32.asOpaque(),autoAccumulateServices:Ie(we.sequenceVarLen(ti.Codec))});static create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s}){return new ri(e,t,r,s)}constructor(e,t,r,s){this.manager=e,this.authManager=t,this.validatorsManager=r,this.autoAccumulateServices=s}}const si=128;class ii extends w{bandersnatch;ed25519;bls;metadata;static Codec=we.Class(ii,{bandersnatch:we.bytes(xe).asOpaque(),ed25519:we.bytes(rr).asOpaque(),bls:we.bytes(_e).asOpaque(),metadata:we.bytes(si)});static create({ed25519:e,bandersnatch:t,bls:r,metadata:s}){return new ii(t,e,r,s)}constructor(e,t,r,s){super(),this.bandersnatch=e,this.ed25519=t,this.bls=r,this.metadata=s}}var ni;!function(e){e[e.Tickets=0]="Tickets",e[e.Keys=1]="Keys"}(ni||(ni={}));const oi=we.bytes(xe).asOpaque();class ai extends w{kind;keys;tickets;static Codec=mt(e=>we.custom({name:"SafroleSealingKeys",sizeHint:{bytes:1+Re*e.epochLength,isExact:!1}},(e,t)=>{e.varU32(X(t.kind)),t.kind===ni.Keys?e.sequenceFixLen(oi,t.keys):e.sequenceFixLen(wt.Codec,t.tickets)},t=>{const r=e.epochLength,s=t.varU32();if(s===ni.Keys){const s=t.sequenceFixLen(oi,r);return ai.keys(vr(s,e))}if(s===ni.Tickets){const s=t.sequenceFixLen(wt.Codec,r);return ai.tickets(vr(s,e))}throw new Error(`Unexpected safrole sealing keys kind: ${s}`)},t=>{const r=t.decoder.varU32();if(r!==ni.Keys){if(r!==ni.Tickets)throw new Error(`Unexpected safrole sealing keys kind: ${r}`);t.sequenceFixLen(wt.Codec,e.epochLength)}else t.sequenceFixLen(oi,e.epochLength)}));static keys(e){return new ai(ni.Keys,e,void 0)}static tickets(e){return new ai(ni.Tickets,void 0,e)}constructor(e,t,r){super(),this.kind=e,this.keys=t,this.tickets=r}}class ci{nextValidatorData;epochRoot;sealingKeySeries;ticketsAccumulator;static Codec=we.Class(ci,{nextValidatorData:Ir(ii.Codec),epochRoot:we.bytes(Be).asOpaque(),sealingKeySeries:ai.Codec,ticketsAccumulator:Ie(we.sequenceVarLen(wt.Codec)).convert(E,lt)});static create({nextValidatorData:e,epochRoot:t,sealingKeySeries:r,ticketsAccumulator:s}){return new ci(e,t,r,s)}constructor(e,t,r,s){this.nextValidatorData=e,this.epochRoot=t,this.sealingKeySeries=r,this.ticketsAccumulator=s}}class li extends w{codeHash;balance;accumulateMinGas;onTransferMinGas;storageUtilisationBytes;storageUtilisationCount;static Codec=we.Class(li,{codeHash:we.bytes(Re).asOpaque(),balance:we.u64,accumulateMinGas:we.u64.convert(e=>e,yr),onTransferMinGas:we.u64.convert(e=>e,yr),storageUtilisationBytes:we.u64,storageUtilisationCount:we.u32});static create(e){return new li(e.codeHash,e.balance,e.accumulateMinGas,e.onTransferMinGas,e.storageUtilisationBytes,e.storageUtilisationCount)}static calculateThresholdBalance(e,t){const r=se(te(100n),te(10n*BigInt(e)),te(1n*t));return r.overflow?te(2n**64n-1n):r.value}constructor(e,t,r,s,i,n){super(),this.codeHash=e,this.balance=t,this.accumulateMinGas=r,this.onTransferMinGas=s,this.storageUtilisationBytes=i,this.storageUtilisationCount=n}}class hi extends w{hash;blob;static Codec=we.Class(hi,{hash:we.bytes(Re).asOpaque(),blob:we.blob});static create({hash:e,blob:t}){return new hi(e,t)}constructor(e,t){super(),this.hash=e,this.blob=t}}class ui extends w{key;value;static Codec=we.Class(ui,{key:we.bytes(Re).asOpaque(),value:we.blob});static create({key:e,value:t}){return new ui(e,t)}constructor(e,t){super(),this.key=e,this.value=t}}function di(e){const t=e;if(t.length>3)throw new Error("Lookup history items must contain 0-3 timeslots.");return t}class gi{hash;length;slots;constructor(e,t,r){this.hash=e,this.length=t,this.slots=r}static isRequested(e){return"slots"in e?0===e.slots.length:0===e.length}}var fi,pi,yi;!function(e){e[e.Provide=0]="Provide",e[e.Remove=1]="Remove",e[e.UpdateOrAdd=2]="UpdateOrAdd"}(fi||(fi={}));class mi{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static provide({serviceId:e,preimage:t,slot:r}){return new mi(e,{kind:fi.Provide,preimage:t,slot:r})}static remove({serviceId:e,hash:t,length:r}){return new mi(e,{kind:fi.Remove,hash:t,length:r})}static updateOrAdd({serviceId:e,lookupHistory:t}){return new mi(e,{kind:fi.UpdateOrAdd,item:t})}get hash(){switch(this.action.kind){case fi.Provide:return this.action.preimage.hash;case fi.Remove:return this.action.hash;case fi.UpdateOrAdd:return this.action.item.hash}throw b(this.action)}get length(){switch(this.action.kind){case fi.Provide:return X(this.action.preimage.blob.length);case fi.Remove:return this.action.length;case fi.UpdateOrAdd:return this.action.item.length}throw b(this.action)}}!function(e){e[e.Update=0]="Update",e[e.Create=1]="Create"}(pi||(pi={}));class bi{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static update({serviceId:e,serviceInfo:t}){return new bi(e,{kind:pi.Update,account:t})}static create({serviceId:e,serviceInfo:t,lookupHistory:r}){return new bi(e,{kind:pi.Create,account:t,lookupHistory:r})}}!function(e){e[e.Set=0]="Set",e[e.Remove=1]="Remove"}(yi||(yi={}));class Ai{serviceId;action;constructor(e,t){this.serviceId=e,this.action=t}static set({serviceId:e,storage:t}){return new Ai(e,{kind:yi.Set,storage:t})}static remove({serviceId:e,key:t}){return new Ai(e,{kind:yi.Remove,key:t})}get key(){return this.action.kind===yi.Remove?this.action.key:this.action.storage.key}get value(){return this.action.kind===yi.Remove?null:this.action.storage.value}}const Ii=we.varU32.convert(e=>X(e),e=>pr(e));class vi{blocks;tickets;preImages;preImagesSize;guarantees;assurances;static Codec=we.Class(vi,{blocks:we.u32,tickets:we.u32,preImages:we.u32,preImagesSize:we.u32,guarantees:we.u32,assurances:we.u32});static create({blocks:e,tickets:t,preImages:r,preImagesSize:s,guarantees:i,assurances:n}){return new vi(e,t,r,s,i,n)}constructor(e,t,r,s,i,n){this.blocks=e,this.tickets=t,this.preImages=r,this.preImagesSize=s,this.guarantees=i,this.assurances=n}static empty(){const e=X(0);return new vi(e,e,e,e,e,e)}}const wi=we.varU32.convert(e=>X(e),e=>Y(e)),Si=we.varU64.convert(e=>te(e),e=>yr(e));class Ei{dataAvailabilityLoad;popularity;imports;exports;extrinsicSize;extrinsicCount;bundleSize;gasUsed;static Codec=we.Class(Ei,{dataAvailabilityLoad:we.varU32,popularity:wi,imports:wi,exports:wi,extrinsicSize:we.varU32,extrinsicCount:wi,bundleSize:we.varU32,gasUsed:Si});static create(e){return new Ei(e.dataAvailabilityLoad,e.popularity,e.imports,e.exports,e.extrinsicSize,e.extrinsicCount,e.bundleSize,e.gasUsed)}constructor(e,t,r,s,i,n,o,a){this.dataAvailabilityLoad=e,this.popularity=t,this.imports=r,this.exports=s,this.extrinsicSize=i,this.extrinsicCount=n,this.bundleSize=o,this.gasUsed=a}static empty(){const e=X(0),t=Y(0),r=yr(0);return new Ei(e,t,t,t,e,t,e,r)}}class Ci{providedCount;providedSize;refinementCount;refinementGasUsed;imports;exports;extrinsicSize;extrinsicCount;accumulateCount;accumulateGasUsed;onTransfersCount;onTransfersGasUsed;static Codec=we.Class(Ci,{providedCount:wi,providedSize:we.varU32,refinementCount:we.varU32,refinementGasUsed:Si,imports:wi,exports:wi,extrinsicSize:we.varU32,extrinsicCount:wi,accumulateCount:we.varU32,accumulateGasUsed:Si,onTransfersCount:we.varU32,onTransfersGasUsed:Si});static create(e){return new Ci(e.providedCount,e.providedSize,e.refinementCount,e.refinementGasUsed,e.imports,e.exports,e.extrinsicSize,e.extrinsicCount,e.accumulateCount,e.accumulateGasUsed,e.onTransfersCount,e.onTransfersGasUsed)}constructor(e,t,r,s,i,n,o,a,c,l,h,u){this.providedCount=e,this.providedSize=t,this.refinementCount=r,this.refinementGasUsed=s,this.imports=i,this.exports=n,this.extrinsicSize=o,this.extrinsicCount=a,this.accumulateCount=c,this.accumulateGasUsed=l,this.onTransfersCount=h,this.onTransfersGasUsed=u}static empty(){const e=X(0),t=Y(0),r=yr(0);return new Ci(t,e,e,r,t,t,e,t,e,r,e,r)}}class ki{current;previous;cores;services;static Codec=we.Class(ki,{current:Ir(vi.Codec),previous:Ir(vi.Codec),cores:Js(Ei.Codec),services:we.dictionary(Ii,Ci.Codec,{sortKeys:(e,t)=>e-t})});static create(e){return new ki(e.current,e.previous,e.cores,e.services)}constructor(e,t,r,s){this.current=e,this.previous=t,this.cores=r,this.services=s}}var xi,Bi;(Bi=xi||(xi={}))[Bi.DuplicateService=0]="DuplicateService",Bi[Bi.NoService=1]="NoService",Bi[Bi.PreimageExists=2]="PreimageExists";class _i extends w{serviceId;data;constructor(e,t){super(),this.serviceId=e,this.data=t}getInfo(){return this.data.info}getStorage(e){return this.data.storage.get(e)?.value??null}hasPreimage(e){return this.data.preimages.has(e)}getPreimage(e){return this.data.preimages.get(e)?.blob??null}getLookupHistory(e,t){const r=this.data.lookupHistory.get(e);return void 0===r?null:r.find(e=>e.length===t)?.slots??null}getEntries(){return{storageKeys:Array.from(this.data.storage.keys()),preimages:Array.from(this.data.preimages.keys()),lookupHistory:Array.from(this.data.lookupHistory.entries()).map(([e,t])=>({hash:e,length:t[0].length}))}}static copyFrom(e,t){const r=e.getInfo(),s=at.new(),i=at.new(),n=at.new();for(const r of t.preimages){const t=e.getPreimage(r);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected preimage: ${r}`);s.set(r,hi.create({hash:r,blob:t}))}for(const{hash:r,length:s}of t.lookupHistory){const t=e.getLookupHistory(r,s);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected lookupHistory: ${r}, ${s}`);const i=n.get(r)??[];i.push(new gi(r,s,t)),n.set(r,i)}for(const r of t.storageKeys){const t=e.getStorage(r);if(null===t)throw new Error(`Service ${e.serviceId} is missing expected storage: ${r}`);i.set(r,ui.create({key:r,value:t}))}return new _i(e.serviceId,{info:r,preimages:s,storage:i,lookupHistory:n})}}class Ri extends w{static create(e){return new Ri(e)}static partial(e,t){const r=Ri.empty(e);return Object.assign(r,t),r}static copyFrom(e,t){const r=new Map;for(const[s,i]of t.entries()){const t=e.getService(s);if(null===t)throw new Error(`Expected service ${s} to be part of the state!`);const n=_i.copyFrom(t,i);r.set(s,n)}return Ri.create({availabilityAssignment:e.availabilityAssignment,accumulationQueue:e.accumulationQueue,designatedValidatorData:e.designatedValidatorData,nextValidatorData:e.nextValidatorData,currentValidatorData:e.currentValidatorData,previousValidatorData:e.previousValidatorData,disputesRecords:e.disputesRecords,timeslot:e.timeslot,entropy:e.entropy,authPools:e.authPools,authQueues:e.authQueues,recentBlocks:e.recentBlocks,statistics:e.statistics,recentlyAccumulated:e.recentlyAccumulated,ticketsAccumulator:e.ticketsAccumulator,sealingKeySeries:e.sealingKeySeries,epochRoot:e.epochRoot,privilegedServices:e.privilegedServices,services:r})}intoServicesData(){const e=new Map;for(const[t,{data:r}]of this.services)e.set(t,{storageKeys:Array.from(r.storage.keys()),preimages:Array.from(r.preimages.keys()),lookupHistory:Array.from(r.lookupHistory).flatMap(([e,t])=>t.map(t=>({hash:e,length:t.length})))});return e}applyUpdate(e){const{servicesRemoved:t,servicesUpdates:r,preimages:s,storage:i,...n}=e;let o;return Object.assign(this,n),o=this.updateServices(r),o.isError?o:(o=this.updatePreimages(s),o.isError?o:(o=this.updateStorage(i),o.isError?o:(this.removeServices(t),_.ok(C))))}removeServices(e){for(const t of e??[])y(this.services.has(t),`Attempting to remove non-existing service: ${t}`),this.services.delete(t)}updateStorage(e){for(const{serviceId:t,action:r}of e??[]){const{kind:e}=r,s=this.services.get(t);if(void 0===s)return _.error(xi.NoService,`Attempting to update storage of non-existing service: ${t}`);e===yi.Set?s.data.storage.set(r.storage.key,r.storage):e===yi.Remove?(y(s.data.storage.has(r.key),`Attempting to remove non-existing storage item at ${t}: ${r.key}`),s.data.storage.delete(r.key)):b(e)}return _.ok(C)}updatePreimages(e){for(const{serviceId:t,action:r}of e??[]){const e=this.services.get(t);if(void 0===e)return _.error(xi.NoService,`Attempting to update preimage of non-existing service: ${t}`);const{kind:s}=r;if(s===fi.Provide){const{preimage:s,slot:i}=r;if(e.data.preimages.has(s.hash))return _.error(xi.PreimageExists,`Overwriting existing preimage at ${t}: ${s}`);if(e.data.preimages.set(s.hash,s),null!==i){const t=e.data.lookupHistory.get(s.hash),r=X(s.blob.length),n=new gi(s.hash,r,di([i]));if(void 0===t)e.data.lookupHistory.set(s.hash,[n]);else{const e=t.map(e=>e.length).indexOf(r);t.splice(e,-1===e?0:1,n)}}}else if(s===fi.Remove){const{hash:t,length:s}=r;e.data.preimages.delete(t);const i=e.data.lookupHistory.get(t)??[],n=i.map(e=>e.length).indexOf(s);-1!==n&&i.splice(n,1)}else if(s===fi.UpdateOrAdd){const{item:t}=r,s=e.data.lookupHistory.get(t.hash)??[],i=s.map(e=>e.length).indexOf(t.length),n=-1===i?0:1;s.splice(i,n,t),e.data.lookupHistory.set(t.hash,s)}else b(s)}return _.ok(C)}updateServices(e){for(const{serviceId:t,action:r}of e??[]){const{kind:e,account:s}=r;if(e===pi.Create){const{lookupHistory:e}=r;if(this.services.has(t))return _.error(xi.DuplicateService,`${t} already exists!`);this.services.set(t,new _i(t,{info:s,preimages:at.new(),storage:at.new(),lookupHistory:at.fromEntries(null===e?[]:[[e.hash,[e]]])}))}else if(e===pi.Update){const e=this.services.get(t);if(void 0===e)return _.error(xi.NoService,`Cannot update ${t} because it does not exist.`);e.data.info=s}else b(e)}return _.ok(C)}availabilityAssignment;designatedValidatorData;nextValidatorData;currentValidatorData;previousValidatorData;disputesRecords;timeslot;entropy;authPools;authQueues;recentBlocks;statistics;accumulationQueue;recentlyAccumulated;ticketsAccumulator;sealingKeySeries;epochRoot;privilegedServices;services;recentServiceIds(){return Array.from(this.services.keys())}getService(e){return this.services.get(e)??null}constructor(e){super(),this.availabilityAssignment=e.availabilityAssignment,this.designatedValidatorData=e.designatedValidatorData,this.nextValidatorData=e.nextValidatorData,this.currentValidatorData=e.currentValidatorData,this.previousValidatorData=e.previousValidatorData,this.disputesRecords=e.disputesRecords,this.timeslot=e.timeslot,this.entropy=e.entropy,this.authPools=e.authPools,this.authQueues=e.authQueues,this.recentBlocks=e.recentBlocks,this.statistics=e.statistics,this.accumulationQueue=e.accumulationQueue,this.recentlyAccumulated=e.recentlyAccumulated,this.ticketsAccumulator=e.ticketsAccumulator,this.sealingKeySeries=e.sealingKeySeries,this.epochRoot=e.epochRoot,this.privilegedServices=e.privilegedServices,this.services=e.services}static empty(e){return new Ri({availabilityAssignment:Ws(Array.from({length:e.coresCount},()=>null),e),designatedValidatorData:Ar(Array.from({length:e.validatorsCount},()=>ii.create({bandersnatch:U.zero(xe).asOpaque(),bls:U.zero(_e).asOpaque(),ed25519:U.zero(rr).asOpaque(),metadata:U.zero(si).asOpaque()})),e),nextValidatorData:Ar(Array.from({length:e.validatorsCount},()=>ii.create({bandersnatch:U.zero(xe).asOpaque(),bls:U.zero(_e).asOpaque(),ed25519:U.zero(rr).asOpaque(),metadata:U.zero(si).asOpaque()})),e),currentValidatorData:Ar(Array.from({length:e.validatorsCount},()=>ii.create({bandersnatch:U.zero(xe).asOpaque(),bls:U.zero(_e).asOpaque(),ed25519:U.zero(rr).asOpaque(),metadata:U.zero(si).asOpaque()})),e),previousValidatorData:Ar(Array.from({length:e.validatorsCount},()=>ii.create({bandersnatch:U.zero(xe).asOpaque(),bls:U.zero(_e).asOpaque(),ed25519:U.zero(rr).asOpaque(),metadata:U.zero(si).asOpaque()})),e),disputesRecords:Xs.create({goodSet:dt.fromSortedArray(ei,[]),badSet:dt.fromSortedArray(ei,[]),wonkySet:dt.fromSortedArray(ei,[]),punishSet:dt.fromSortedArray(ei,[])}),timeslot:gr(0),entropy:ht.fill(()=>U.zero(Re).asOpaque(),4),authPools:Ws(Array.from({length:e.coresCount},()=>[]),e),authQueues:Ws(Array.from({length:e.coresCount},()=>ht.fill(()=>U.zero(Re).asOpaque(),80)),e),recentBlocks:[],statistics:ki.create({current:Ar(Array.from({length:e.validatorsCount},()=>vi.empty()),e),previous:Ar(Array.from({length:e.validatorsCount},()=>vi.empty()),e),cores:Ws(Array.from({length:e.coresCount},()=>Ei.empty()),e),services:new Map}),accumulationQueue:vr(Array.from({length:e.epochLength},()=>[]),e),recentlyAccumulated:vr(Array.from({length:e.epochLength},()=>ct.new()),e),ticketsAccumulator:[],sealingKeySeries:ai.keys(vr(Array.from({length:e.epochLength},()=>U.zero(xe).asOpaque()),e)),epochRoot:U.zero(Be).asOpaque(),privilegedServices:ri.create({manager:pr(0),authManager:pr(0),validatorsManager:pr(0),autoAccumulateServices:[]}),services:new Map})}}const Oi=we.object({storageKeys:we.sequenceVarLen(we.bytes(Re).asOpaque()),preimages:we.sequenceVarLen(we.bytes(Re).asOpaque()),lookupHistory:we.sequenceVarLen(we.object({hash:we.bytes(Re).asOpaque(),length:we.u32}))});we.dictionary(we.u32.asOpaque(),Oi,{sortKeys:(e,t)=>e-t});class Ui extends w{report;dependencies;static Codec=we.Class(Ui,{report:Lr.Codec,dependencies:bt(we.bytes(Re).asOpaque(),{typicalLength:4,maxLength:8,minLength:0})});static create({report:e,dependencies:t}){return new Ui(e,t)}constructor(e,t){super(),this.report=e,this.dependencies=t}}var Ti,Ni,Di;!function(e){e[e.Unused=0]="Unused",e[e.Alpha=1]="Alpha",e[e.Phi=2]="Phi",e[e.Beta=3]="Beta",e[e.Gamma=4]="Gamma",e[e.Psi=5]="Psi",e[e.Eta=6]="Eta",e[e.Iota=7]="Iota",e[e.Kappa=8]="Kappa",e[e.Lambda=9]="Lambda",e[e.Rho=10]="Rho",e[e.Tau=11]="Tau",e[e.Chi=12]="Chi",e[e.Pi=13]="Pi",e[e.Theta=14]="Theta",e[e.Xi=15]="Xi",e[e.Delta=255]="Delta"}(Ti||(Ti={})),function(e){function t(e,t){const r=U.zero(Re);let s=0;for(const i of ie(e))r.raw[s]=i,r.raw[s+1]=t.raw[s/2],s+=2;const i=s/2;return r.raw.set(t.raw.subarray(i,Re-i),s),r.asOpaque()}e.index=function(e){const t=U.zero(Re);return t.raw[0]=e,t.asOpaque()},e.serviceInfo=function(e){const t=U.zero(Re);t.raw[0]=Ti.Delta;let r=1;for(const s of ie(e))t.raw[r]=s,r+=2;return t.asOpaque()},e.serviceStorage=function(e,r){const s=U.zero(Re);return s.raw.set(ie(X(2**32-1)),0),s.raw.set(r.raw.subarray(0,28),4),t(e,s)},e.servicePreimage=function(e,r){const s=U.zero(Re);return s.raw.set(ie(X(2**32-2)),0),s.raw.set(r.raw.subarray(1,29),4),t(e,s)},e.serviceLookupHistory=function(e,r,s){const i=He(r),n=U.zero(Re);return n.raw.set(ie(s),0),n.raw.set(i.raw.subarray(2,30),4),t(e,n)},e.serviceNested=t}(Ni||(Ni={})),function(e){e.authPools={key:Ni.index(Ti.Alpha),Codec:Js(bt(we.bytes(Re).asOpaque(),{minLength:0,maxLength:8,typicalLength:8})),extract:e=>e.authPools},e.authQueues={key:Ni.index(Ti.Phi),Codec:Js(At(we.bytes(Re).asOpaque(),80)),extract:e=>e.authQueues},e.recentBlocks={key:Ni.index(Ti.Beta),Codec:bt(zs.Codec,{minLength:0,maxLength:8,typicalLength:8}),extract:e=>e.recentBlocks},e.safrole={key:Ni.index(Ti.Gamma),Codec:ci.Codec,extract:e=>ci.create({nextValidatorData:e.nextValidatorData,epochRoot:e.epochRoot,sealingKeySeries:e.sealingKeySeries,ticketsAccumulator:e.ticketsAccumulator})},e.disputesRecords={key:Ni.index(Ti.Psi),Codec:Xs.Codec,extract:e=>e.disputesRecords},e.entropy={key:Ni.index(Ti.Eta),Codec:At(we.bytes(Re).asOpaque(),4),extract:e=>e.entropy},e.designatedValidators={key:Ni.index(Ti.Iota),Codec:Ir(ii.Codec),extract:e=>e.designatedValidatorData},e.currentValidators={key:Ni.index(Ti.Kappa),Codec:Ir(ii.Codec),extract:e=>e.currentValidatorData},e.previousValidators={key:Ni.index(Ti.Lambda),Codec:Ir(ii.Codec),extract:e=>e.previousValidatorData},e.availabilityAssignment={key:Ni.index(Ti.Rho),Codec:Js(we.optional(qs.Codec)),extract:e=>e.availabilityAssignment},e.timeslot={key:Ni.index(Ti.Tau),Codec:we.u32.asOpaque(),extract:e=>e.timeslot},e.privilegedServices={key:Ni.index(Ti.Chi),Codec:ri.Codec,extract:e=>e.privilegedServices},e.statistics={key:Ni.index(Ti.Pi),Codec:ki.Codec,extract:e=>e.statistics},e.accumulationQueue={key:Ni.index(Ti.Theta),Codec:wr(Ie(we.sequenceVarLen(Ui.Codec))),extract:e=>e.accumulationQueue},e.recentlyAccumulated={key:Ni.index(Ti.Xi),Codec:wr(we.sequenceVarLen(we.bytes(Re).asOpaque()).convert(e=>Array.from(e),e=>ct.from(e))),extract:e=>e.recentlyAccumulated},e.serviceData=e=>({key:Ni.serviceInfo(e),Codec:li.Codec}),e.serviceStorage=(e,t)=>({key:Ni.serviceStorage(e,t),Codec:Mi}),e.servicePreimages=(e,t)=>({key:Ni.servicePreimage(e,t),Codec:Mi}),e.serviceLookupHistory=(e,t,r)=>({key:Ni.serviceLookupHistory(e,t,r),Codec:Ie(we.sequenceVarLen(we.u32))})}(Di||(Di={}));const Mi=Ae.new("Dump",{bytes:64,isExact:!1},(e,t)=>e.bytes(U.fromBlob(t.raw,t.raw.length)),e=>O.blobFrom(e.bytes(e.source.length-e.bytesRead()).raw),e=>e.bytes(e.decoder.source.length-e.decoder.bytesRead()));var Pi;!function(e){e[e.Insert=0]="Insert",e[e.Remove=1]="Remove"}(Pi||(Pi={}));const Li=O.empty();class Hi{spec;backend;_recentServiceIds;static fromStateEntries(e,t,r=[]){return new Hi(e,t,r)}static new(e,t,r=[]){return new Hi(e,t,r)}constructor(e,t,r){this.spec=e,this.backend=t,this._recentServiceIds=r}updateBackend(e){this.backend=e}recentServiceIds(){return this._recentServiceIds}getService(e){const t=this.retrieveOptional(Di.serviceData(e));return void 0===t?null:(this._recentServiceIds.includes(e)||this._recentServiceIds.push(e),new Ki(e,t,e=>this.retrieveOptional(e)))}retrieve({key:e,Codec:t},r){const s=this.backend.get(e);if(null===s)throw new Error(`Required state entry for ${r} is missing!. Accessing key: ${e}`);return ae.decodeObject(t,s,this.spec)}retrieveOptional({key:e,Codec:t}){const r=this.backend.get(e);if(null!==r)return ae.decodeObject(t,r,this.spec)}get availabilityAssignment(){return this.retrieve(Di.availabilityAssignment,"availabilityAssignment")}get designatedValidatorData(){return this.retrieve(Di.designatedValidators,"designatedValidatorData")}get nextValidatorData(){return this.retrieve(Di.safrole,"safroleData.nextValidatorData").nextValidatorData}get currentValidatorData(){return this.retrieve(Di.currentValidators,"currentValidators")}get previousValidatorData(){return this.retrieve(Di.previousValidators,"previousValidators")}get disputesRecords(){return this.retrieve(Di.disputesRecords,"disputesRecords")}get timeslot(){return this.retrieve(Di.timeslot,"timeslot")}get entropy(){return this.retrieve(Di.entropy,"entropy")}get authPools(){return this.retrieve(Di.authPools,"authPools")}get authQueues(){return this.retrieve(Di.authQueues,"authQueues")}get recentBlocks(){return this.retrieve(Di.recentBlocks,"recentBlocks")}get statistics(){return this.retrieve(Di.statistics,"statistics")}get accumulationQueue(){return this.retrieve(Di.accumulationQueue,"accumulationQueue")}get recentlyAccumulated(){return this.retrieve(Di.recentlyAccumulated,"recentlyAccumulated")}get ticketsAccumulator(){return this.retrieve(Di.safrole,"safroleData.ticketsAccumulator").ticketsAccumulator}get sealingKeySeries(){return this.retrieve(Di.safrole,"safrole.sealingKeySeries").sealingKeySeries}get epochRoot(){return this.retrieve(Di.safrole,"safrole.epochRoot").epochRoot}get privilegedServices(){return this.retrieve(Di.privilegedServices,"privilegedServices")}}class Ki{serviceId;accountInfo;retrieveOptional;constructor(e,t,r){this.serviceId=e,this.accountInfo=t,this.retrieveOptional=r}getInfo(){return this.accountInfo}getStorage(e){return this.retrieveOptional(Di.serviceStorage(this.serviceId,e))??null}hasPreimage(e){return void 0!==this.retrieveOptional(Di.servicePreimages(this.serviceId,e))}getPreimage(e){return this.retrieveOptional(Di.servicePreimages(this.serviceId,e))??null}getLookupHistory(e,t){const r=this.retrieveOptional(Di.serviceLookupHistory(this.serviceId,e,t));return void 0===r?null:di(r.map(gr))}}const Vi=31;var Qi;!function(e){e[e.Branch=0]="Branch",e[e.Leaf=1]="Leaf",e[e.EmbedLeaf=2]="EmbedLeaf"}(Qi||(Qi={}));class Fi{raw;constructor(e=new Uint8Array(64)){this.raw=e}getNodeType(){return 128&this.raw[0]?192&~this.raw[0]?Qi.EmbedLeaf:Qi.Leaf:Qi.Branch}asBranchNode(){return y(this.getNodeType()===Qi.Branch),new Gi(this)}asLeafNode(){return y(this.getNodeType()!==Qi.Branch),new $i(this)}toString(){return O.blobFrom(this.raw).toString()}}class Gi{node;constructor(e){this.node=e}static fromSubNodes(e,t){const r=new Fi;return r.raw.set(e.raw,0),r.raw.set(t.raw,Re),r.raw[0]&=127,new Gi(r)}getLeft(){return U.fromBlob(this.node.raw.subarray(0,Re),Re).asOpaque()}getRight(){return U.fromBlob(this.node.raw.subarray(Re),Re).asOpaque()}}class $i{node;constructor(e){this.node=e}static fromValue(e,t,r){const s=new Fi;return t.length<=Re?(s.raw[0]=128|t.length,s.raw.set(e.raw.subarray(0,Vi),1),s.raw.set(t.raw,32)):(s.raw[0]=192,s.raw.set(e.raw.subarray(0,Vi),1),s.raw.set(r().raw,32)),new $i(s)}getKey(){return U.fromBlob(this.node.raw.subarray(1,32),Vi).asOpaque()}hasEmbeddedValue(){return this.node.getNodeType()===Qi.EmbedLeaf}getValueLength(){return 63&this.node.raw[0]}getValue(){const e=this.getValueLength();return O.blobFrom(this.node.raw.subarray(Re,Re+e))}getValueHash(){return U.fromBlob(this.node.raw.subarray(Re),Re).asOpaque()}toString(){return`LeafNode {\n key: ${this.getKey()},\n valueHash: ${this.getValueHash()}\n}`}}class ji{hasher;nodes=at.new();constructor(e){this.hasher=e}get(e){return ji.withHashCompat(e,e=>this.nodes.get(e)??null)}hashNode(e){return this.hasher.hashConcat(e.raw)}*leaves(){for(const e of this.nodes.values())e.getNodeType()!==Qi.Branch&&(yield e.asLeafNode())}static withHashCompat(e,t){const r=e.raw[0];e.raw[0]&=127;const s=t(e);return e.raw[0]=r,s}}class qi extends ji{remove(e){return ji.withHashCompat(e,e=>{this.nodes.delete(e)})}insert(e,t){const r=t??this.hashNode(e);return ji.withHashCompat(r,t=>{this.nodes.set(t,e)}),r}}class zi{nodes;root;static empty(e){return new zi(new qi(e))}static computeStateRoot(e,t){return zi.fromLeaves(e,t).getRootHash()}static fromLeaves(e,t){let r=null;const s=new qi(e);for(const e of t)r=Wi(r,s,e);return new zi(s,r)}constructor(e,t=null){this.nodes=e,this.root=t}set(e,t,r){const s=$i.fromValue(e,t,()=>r??this.nodes.hasher.hashConcat(t.raw).asOpaque());return this.root=Wi(this.root,this.nodes,s),s}remove(e){throw new Error("Removing from the trie not implemented yet.")}getRootNode(){return this.root}getRootHash(){return null===this.root?U.zero(Re).asOpaque():this.nodes.hashNode(this.root)}toString(){return Zi(this.root,this.nodes)}}function Wi(e,t,r){if(null===e)return t.insert(r.node),r.node;const s=function(e,t,r){const s=new Ji;let i=e,n=t.hashNode(e);for(;;){if(i.getNodeType()!==Qi.Branch){const e=i.asLeafNode();return s.leafToReplace=[e,n],s}const e=i.asBranchNode(),o=Yi(r,s.bitIndex),a=o?e.getRight():e.getLeft();s.branchingHistory.push([e,n,o]);const c=t.get(a);if(null===c){if(a.isEqualTo(U.zero(Re)))return s;throw new Error(`Missing trie node '${a}' with key prefix: ${r}[0..${s.bitIndex}]`)}i=c,n=a,s.bitIndex+=1}}(e,t,r.getKey()),i=void 0!==s.leafToReplace?function(e,t,r,s){const i=s.getKey();let[n,o]=r;const a=n.getKey(),c=t.insert(s.node);if(a.isEqualTo(i))return n.getValueHash().isEqualTo(s.getValueHash())||t.remove(o),[s.node,c];const l=[];let h=Yi(i,e.bitIndex);for(;e.bitIndex<248;){h=Yi(i,e.bitIndex);const t=Yi(a,e.bitIndex);if(h!==t)break;l.push(t),e.bitIndex+=1}const u=U.zero(Re).asOpaque();(()=>{const t=e.branchingHistory.length;return t>0&&!1===e.branchingHistory[t-1][2]})()&&!h&&(o=t.hashNode(n.node));let d=h?Gi.fromSubNodes(o,c):Gi.fromSubNodes(c,o),g=t.insert(d.node),f=l.pop();for(;void 0!==f;)d=f?Gi.fromSubNodes(u,g):Gi.fromSubNodes(g,u),g=t.insert(d.node),f=l.pop();return[d.node,g]}(s,t,s.leafToReplace,r):[r.node,t.insert(r.node)];let n=s.branchingHistory.pop(),[o,a]=i;for(;void 0!==n;){const[e,r,i]=n;t.remove(r);const c=i?Gi.fromSubNodes(e.getLeft(),a):Gi.fromSubNodes(a,e.getRight());a=t.insert(c.node),o=c.node,n=s.branchingHistory.pop()}return o}class Ji{branchingHistory=[];bitIndex=0;leafToReplace}function Yi(e,t){y(t<248);const r=t>>>3,s=128>>>t-(r<<3);return 0!==(e.raw[r]&s)}function Zi(e,t){if(null===e)return"<empty tree>";if(e.getNodeType()===Qi.Branch){const r=e.asBranchNode(),s=r.getLeft(),i=r.getRight(),n=e=>e.split("\n").map(e=>`\t\t${e}`).join("\n"),o=Zi(t.get(s),t),a=Zi(t.get(i),t);return`<branch>\n\t-- ${s}: ${n(o)}\n\t-- ${i}: ${n(a)}\n`}const r=e.asLeafNode(),s=r.getValueLength(),i=s>0?`'${r.getValue()}'(len:${s})`:`'<hash>${r.getValueHash()}'`;return`\nLeaf('${r.getKey().toString()}',${i})`}const Xi={hashConcat:(e,t=[])=>Le([e,...t])};class en{entries;static serializeInMemory(e,t){return new en({full:!0,data:tn(e,t)})}static fromDictionaryUnsafe(e){return new en({full:!0,data:e})}static fromTruncatedDictionaryUnsafe(e){return new en({full:!1,data:e})}trieCache=null;constructor(e){this.entries=e}getTrie(){if(null===this.trieCache){const e=zi.empty(Xi);for(const[t,r]of this.entries.data)e.set(t.asOpaque(),r);this.trieCache=e}return this.trieCache}get(e){return this.entries.data.get(e)??null}applyUpdate(e){this.trieCache=null;for(const[t,r,s]of e)t===Pi.Insert?this.entries.data.set(r,s):t===Pi.Remove?this.entries.data.delete(r):b(t)}getRootHash(){return this.getTrie().getRootHash().asOpaque()}}function tn(e,t){const r=at.new();function s(s){r.set(s.key,ge.encodeObject(s.Codec,s.extract(t),e))}s(Di.authPools),s(Di.authQueues),s(Di.recentBlocks),s(Di.safrole),s(Di.disputesRecords),s(Di.entropy),s(Di.designatedValidators),s(Di.currentValidators),s(Di.previousValidators),s(Di.availabilityAssignment),s(Di.timeslot),s(Di.privilegedServices),s(Di.statistics),s(Di.accumulationQueue),s(Di.recentlyAccumulated);for(const[e,s]of t.services.entries()){const{key:t,Codec:i}=Di.serviceData(e);r.set(t,ge.encodeObject(i,s.getInfo()));for(const t of s.data.preimages.values()){const{key:s,Codec:i}=Di.servicePreimages(e,t.hash);r.set(s,ge.encodeObject(i,t.blob))}for(const t of s.data.storage.values()){const{key:s,Codec:i}=Di.serviceStorage(e,t.key);r.set(s,ge.encodeObject(i,t.value))}for(const t of s.data.lookupHistory.values())for(const s of t){const{key:t,Codec:i}=Di.serviceLookupHistory(e,s.hash,s.length);r.set(t,ge.encodeObject(i,s.slots.slice()))}}return r}const rn=we.object({hash:we.bytes(Re).asOpaque(),length:we.u32,slots:Ie(we.sequenceVarLen(we.u32.asOpaque())).convert(E,di)},"LookupHistoryItem",({hash:e,length:t,slots:r})=>new gi(e,t,r)),sn=we.object({key:we.bytes(Re).asOpaque(),data:we.sequenceVarLen(rn)}),nn=we.sequenceVarLen(sn).convert(e=>{const t=[];for(const[r,s]of e)t.push({key:r,data:s});return t},e=>{const t=at.new();for(const{key:r,data:s}of e){const e=t.get(r)??[];e.push(...s),t.set(r,e)}return t});class on extends _i{static Codec=we.Class(on,{serviceId:we.u32.asOpaque(),data:we.object({info:li.Codec,preimages:It(hi.Codec,e=>e.hash),lookupHistory:nn,storage:It(ui.Codec,e=>e.key)})});constructor(e,t){super(e,t)}static create({serviceId:e,data:t}){return new on(e,t)}}var an,cn,ln;we.Class(Ri,{authPools:Di.authPools.Codec,authQueues:Di.authQueues.Codec,recentBlocks:Di.recentBlocks.Codec,nextValidatorData:Ir(ii.Codec),epochRoot:we.bytes(Be).asOpaque(),sealingKeySeries:ai.Codec,ticketsAccumulator:Ie(we.sequenceVarLen(wt.Codec)).convert(e=>e,lt),disputesRecords:Di.disputesRecords.Codec,entropy:Di.entropy.Codec,designatedValidatorData:Di.designatedValidators.Codec,currentValidatorData:Di.currentValidators.Codec,previousValidatorData:Di.previousValidators.Codec,availabilityAssignment:Di.availabilityAssignment.Codec,timeslot:Di.timeslot.Codec,privilegedServices:Di.privilegedServices.Codec,statistics:Di.statistics.Codec,accumulationQueue:Di.accumulationQueue.Codec,recentlyAccumulated:Di.recentlyAccumulated.Codec,services:we.dictionary(we.u32.asOpaque(),on.Codec,{sortKeys:(e,t)=>e-t})}),function(e){e[e.Conflict=0]="Conflict",e[e.Commit=1]="Commit"}(an||(an={}));class hn{dict;static fromEntries(e){const t=Array.from(e).map(([e,t])=>{const r=U.zero(Re).asOpaque();return r.raw.set(e.raw.subarray(0,Vi)),[r,t]});return new hn(at.fromEntries(t))}truncatedKey=U.zero(Re).asOpaque();constructor(e){this.dict=e}get size(){return this.dict.size}get(e){return this.truncatedKey.raw.set(e.raw.subarray(0,Vi)),this.dict.get(this.truncatedKey)}has(e){return this.truncatedKey.raw.set(e.raw.subarray(0,Vi)),this.dict.has(this.truncatedKey)}set(e,t){const r=U.zero(Re);r.raw.set(e.raw.subarray(0,Vi)),this.dict.set(r.asOpaque(),t)}delete(e){this.truncatedKey.raw.set(e.raw.subarray(0,Vi)),this.dict.delete(this.truncatedKey)}values(){return this.dict.values()}[Symbol.iterator](){return this.dict[Symbol.iterator]()}}!function(e){e[e.InvalidLeafData=0]="InvalidLeafData"}(cn||(cn={}));class un{leaves;db;static fromLeavesBlob(e,t){if(e.length%64!=0)return _.error(cn.InvalidLeafData,`${e.length} is not a multiply of 64: ${e}`);const r=[];for(const t of e.chunks(64)){const e=new Fi(t.raw);if(e.getNodeType()===Qi.Branch)return _.error(cn.InvalidLeafData,`Branch node detected: ${t}`);r.push(e.asLeafNode())}return _.ok(new un(r,t))}lookup;constructor(e,t){this.leaves=e,this.db=t,this.lookup=hn.fromEntries(e.map(e=>[e.getKey().asOpaque(),e.hasEmbeddedValue()?{kind:ln.EmbeddedValue,value:e.getValue()}:{kind:ln.DbKey,key:e.getValueHash().raw}]))}get(e){const t=this.lookup.get(e);return void 0===t?null:t.kind===ln.EmbeddedValue?t.value:t.kind===ln.DbKey?O.blobFrom(this.db.get(t.key)):void b(t)}getStateRoot(){return zi.computeStateRoot(Xi,this.leaves).asOpaque()}}!function(e){e[e.EmbeddedValue=0]="EmbeddedValue",e[e.DbKey=1]="DbKey"}(ln||(ln={}));const dn="best hash and posterior state root";class gn{chainSpec;root;extrinsics;headers;postStateRoots;constructor(e,t){this.chainSpec=e,this.root=t,this.extrinsics=this.root.subDb("extrinsics"),this.headers=this.root.subDb("headers"),this.postStateRoots=this.root.subDb("postStateRoots")}async setPostStateRoot(e,t){await this.postStateRoots.put(e.raw,t.raw)}getPostStateRoot(e){const t=this.postStateRoots.get(e.raw);return void 0===t?null:U.fromBlob(t,Re).asOpaque()}async insertBlock(e){const t=e.data.header.view().encoded(),r=e.data.extrinsic.view().encoded();await this.root.db.transaction(()=>{this.headers.put(e.hash.raw,t.raw),this.extrinsics.put(e.hash.raw,r.raw)})}async setBestHeaderHash(e){await this.root.db.put(dn,e.raw)}getBestHeaderHash(){const e=this.root.db.get(dn);return void 0===e?U.zero(Re).asOpaque():U.fromBlob(e,Re).asOpaque()}getHeader(e){const t=this.headers.get(e.raw);return void 0===t?null:ae.decodeObject(jr.Codec.View,t,this.chainSpec)}getExtrinsic(e){const t=this.extrinsics.get(e.raw);return void 0===t?null:ae.decodeObject(Yr.Codec.View,t,this.chainSpec)}}const fn=(pn={open:()=>r.open},yn={},o.d(yn,pn),yn);var pn,yn;class mn{db;constructor(e,t=!1){this.db=fn.open(e,{compression:!0,keyEncoding:"binary",encoding:"binary",readOnly:t})}subDb(e){return this.db.openDB({name:e})}}class bn{spec;root;states;values;constructor(e,t){this.spec=e,this.root=t,this.states=this.root.subDb("states"),this.values=this.root.subDb("values")}async insertState(e,t){const r=zi.empty(Xi);return await this.updateAndCommit(e,r,Array.from(t.entries.data).map(e=>[Pi.Insert,e[0],e[1]]))}async updateAndCommit(e,t,r){const s=[];for(const[e,i,n]of r)if(e===Pi.Insert){const e=t.set(i.asOpaque(),n);e.hasEmbeddedValue()||s.push([e.getValueHash(),n])}else e===Pi.Remove?t.remove(i.asOpaque()):b(e);const i=O.blobFromParts(Array.from(t.nodes.leaves()).map(e=>e.node.raw)),n=this.states.put(e.raw,i.raw),o=this.values.transaction(()=>{for(const[e,t]of s)this.values.put(e.raw,t.raw)});try{await Promise.all([o,n])}catch(e){return console.error(e),_.error(an.Commit)}return _.ok(C)}async updateAndSetState(e,t,r){const s=zi.fromLeaves(Xi,t.backend.leaves),i=function*(e,t){yield*function*(e,t){function r(t,r){return[Pi.Insert,r.key,ge.encodeObject(r.Codec,t,e)]}void 0!==t.authPools&&(yield r(t.authPools,Di.authPools)),void 0!==t.authQueues&&(yield r(t.authQueues,Di.authQueues)),void 0!==t.recentBlocks&&(yield r(t.recentBlocks,Di.recentBlocks));const s=function(e,t,r,s){if(void 0!==e&&void 0!==t&&void 0!==r&&void 0!==s)return ci.create({nextValidatorData:e,epochRoot:t,sealingKeySeries:r,ticketsAccumulator:s});if([e,t,r,s].some(e=>void 0!==e))throw new Error("SafroleData needs to be updated all at once!")}(t.nextValidatorData,t.epochRoot,t.sealingKeySeries,t.ticketsAccumulator);void 0!==s&&(yield r(s,Di.safrole)),void 0!==t.disputesRecords&&(yield r(t.disputesRecords,Di.disputesRecords)),void 0!==t.entropy&&(yield r(t.entropy,Di.entropy)),void 0!==t.designatedValidatorData&&(yield r(t.designatedValidatorData,Di.designatedValidators)),void 0!==t.currentValidatorData&&(yield r(t.currentValidatorData,Di.currentValidators)),void 0!==t.previousValidatorData&&(yield r(t.previousValidatorData,Di.previousValidators)),void 0!==t.availabilityAssignment&&(yield r(t.availabilityAssignment,Di.availabilityAssignment)),void 0!==t.timeslot&&(yield r(t.timeslot,Di.timeslot)),void 0!==t.privilegedServices&&(yield r(t.privilegedServices,Di.privilegedServices)),void 0!==t.statistics&&(yield r(t.statistics,Di.statistics)),void 0!==t.accumulationQueue&&(yield r(t.accumulationQueue,Di.accumulationQueue)),void 0!==t.recentlyAccumulated&&(yield r(t.recentlyAccumulated,Di.recentlyAccumulated))}(e,t);const r=(t,r)=>ge.encodeObject(t,r,e);yield*function*(e,t){for(const{action:r,serviceId:s}of e??[]){const e=Di.serviceData(s);if(yield[Pi.Insert,e.key,t(e.Codec,r.account)],r.kind===pi.Create&&null!==r.lookupHistory){const{lookupHistory:e}=r,i=Di.serviceLookupHistory(s,e.hash,e.length);yield[Pi.Insert,i.key,t(i.Codec,e.slots)]}}}(t.servicesUpdates,r),yield*function*(e,t){for(const{action:r,serviceId:s}of e??[])switch(r.kind){case fi.Provide:{const{hash:e,blob:i}=r.preimage,n=Di.servicePreimages(s,e);if(yield[Pi.Insert,n.key,i],null!==r.slot){const n=Di.serviceLookupHistory(s,e,X(i.length));yield[Pi.Insert,n.key,t(n.Codec,di([r.slot]))]}break}case fi.UpdateOrAdd:{const{hash:e,length:i,slots:n}=r.item,o=Di.serviceLookupHistory(s,e,i);yield[Pi.Insert,o.key,t(o.Codec,n)];break}case fi.Remove:{const{hash:e,length:t}=r,i=Di.servicePreimages(s,e);yield[Pi.Remove,i.key,Li];const n=Di.serviceLookupHistory(s,e,t);yield[Pi.Remove,n.key,Li];break}default:b(r)}}(t.preimages,r),yield*function*(e){for(const{action:t,serviceId:r}of e??[])switch(t.kind){case yi.Set:{const e=Di.serviceStorage(r,t.storage.key);yield[Pi.Insert,e.key,t.storage.value];break}case yi.Remove:{const e=Di.serviceStorage(r,t.key);yield[Pi.Remove,e.key,Li];break}default:b(t)}}(t.storage),yield*function*(e){for(const t of e??[]){const e=Di.serviceData(t);yield[Pi.Remove,e.key,Li]}}(t.servicesRemoved)}(this.spec,r);return await this.updateAndCommit(e,s,i)}async getStateRoot(e){return e.backend.getStateRoot()}getState(e){const t=this.states.get(e.raw);if(void 0===t)return null;const r=this.values,s=un.fromLeavesBlob(O.blobFrom(t),{get(e){const t=r.get(e);if(void 0===t)throw new Error(`Missing required value: ${O.blobFrom(e)} in the DB`);return t}});if(s.isError)throw new Error(`Inconsistent DB. Invalid leaf nodes for ${e}: ${B(s)}`);return Hi.new(this.spec,s.ok)}}const An=t(import.meta.url)("node:events"),In=2**32,vn=Gs.new(void 0,"state-machine/port");class wn{port;listeners=new An.EventEmitter;responseListeners=new An.EventEmitter;messageId=0;constructor(e){this.port=e,e.on("message",e=>{try{this.dispatchPortMessage(e)}catch(t){throw vn.error(`[${this.constructor.name}] Failed to dispatch a message: ${t}: ${JSON.stringify(e)}`),t}})}async sendRequest(e,t,r,s){const[i,n]=this.prepareRequest(e,t,r);return this.postMessage(i,s),n}sendSignal(e,t,r,s){this.messageId=(this.messageId+1)%In,this.messageId>>>=0,this.postMessage({kind:"signal",name:t,id:this.messageId,localState:e,data:r},s)}prepareRequest(e,t,r){this.messageId+=1;const s=new Promise((e,t)=>{this.responseListeners.once(Sn(this.messageId),(r,s)=>null!==r?t(r):e(s))});return[{kind:"request",id:this.messageId,name:t,localState:e,data:r},s]}respond(e,t,r){y("request"===t.kind),this.postMessage({kind:"response",id:t.id,name:t.name,data:r,localState:e})}close(){this.cleanup("closing"),this.listeners.removeAllListeners(),this.port.close()}postMessage(e,t){try{this.port.postMessage(e,t)}catch(t){throw vn.error(`[${this.constructor.name}] Failed to post a message: ${t}: ${JSON.stringify(e)}`),t}}dispatchPortMessage(e){if(!function(e){return null!==e&&"object"==typeof e&&"kind"in e&&"string"==typeof e.kind&&"id"in e&&"number"==typeof e.id&&"name"in e&&"string"==typeof e.name&&"data"in e&&"localState"in e&&"string"==typeof e.localState}(e))throw new Error(`Invalid message: ${JSON.stringify(e)}.`);switch(e.kind){case"response":y(-1!==this.responseListeners.eventNames().indexOf(Sn(e.id))),this.responseListeners.emit(Sn(e.id),null,e.data,e.name,e.localState,e);break;case"signal":this.listeners.emit("signal",e.name,e.data,e.localState,e);break;case"request":this.listeners.emit("request",e.name,e.data,e.localState,e);break;case"subscription":case"subscribe":throw new Error("unimplemented");default:throw new Error(`Unexpected message: "${e.kind}"`)}}cleanup(e){const t=this.responseListeners.eventNames();for(const r in t)this.responseListeners.emit(r,new Error(`port is ${e}`))}}function Sn(e){return`req:${e}`}const En=Gs.new(void 0,"state-machine"),Cn="channel";class kn{machine;port;constructor(e,t){this.machine=e,this.port=t,t.listeners.on("signal",(e,t,r)=>{try{this.dispatchSignal(e,t)}catch(t){throw En.error(`[${this.constructor.name}] Unable to dispatch signal (${e}): ${t}. ${this.stateInfo(r)}`),t}}),t.listeners.on("request",async(e,t,r,s)=>{try{await this.dispatchRequest(e,t,s)}catch(t){throw En.error(`[${this.constructor.name}] Unable to dispatch request (${e}): ${t}. ${this.stateInfo(r)}`),t}})}sendSignal(e,t){this.port.sendSignal(this.currentState().stateName,e,t)}async sendRequest(e,t){return this.port.sendRequest(this.currentState().stateName,e,t)}close(){this.port.close()}getState(e){return this.machine.getState(e)}currentState(){return this.machine.currentState()}async waitForState(e){return await this.machine.waitForState(e),this.transitionTo()}async doUntil(e,t){const r={isDone:!1},s=this.waitForState(e).then(()=>{r.isDone=!0});return await t(this.currentState(),this,()=>r.isDone),await s,this.transitionTo()}transition(e){const t=e(this.currentState(),this);return this.machine.transition(t.state,t.data),this.transitionTo()}stateInfo(e){return` (local state: "${this.currentState()}", remote state: "${e}")`}async dispatchRequest(e,t,r){const s=this.currentState(),i=s.requestHandlers.get(e);if(void 0===i)throw new Error(`Missing request handler for "${e}"`);const n=await i(t),o=this.currentState()!==s;if(void 0!==n.transitionTo&&this.machine.transition(n.transitionTo.state,n.transitionTo.data),!o)return this.port.respond(s.stateName,r,n.response);En.warn(`Ignoring obsolete response for an old request: "${e}"`)}dispatchSignal(e,t){const r=this.currentState().signalListeners.get(e);if(void 0===r)throw new Error(`Unexpected signal "${e}"`);const s=r(t);void 0!==s&&this.machine.transition(s.state,s.data)}transitionTo(){return En.trace(`[${this.machine.name}] transitioned to ${this.currentState()}`),this}static async createAndTransferChannel(e,t){const r=new $s.MessageChannel,s=new wn(r.port2),i=e.currentState().stateName,[n,o]=s.prepareRequest(i,Cn,r.port1);t.postMessage(n,[r.port1]);try{await o}catch(e){En.error(JSON.stringify(e))}return new kn(e,s)}static async receiveChannel(e,t){if(null===t)throw new Error("This code is expected to be run in a worker.");const r=new Promise((r,s)=>{t.once("message",t=>{try{y("request"===t.kind,"The initial message should be a request with channel."),y(t.name===Cn),y(t.data instanceof $s.MessagePort);const s=new wn(t.data);s.respond(e.currentState().stateName,t,"OK"),r(s)}catch(e){s(e)}})}),s=await r;return new kn(e,s)}}const xn=Symbol(),Bn=Symbol();class _n{emitter=new An.EventEmitter;emit(e){this.emitter.emit(xn,e)}on(e){return this.emitter.on(xn,e),this}once(e){return this.emitter.once(xn,e),this}onceDone(e){return this.emitter.once(Bn,e),this}markDone(){this.emitter.emit(Bn),this.emitter.removeAllListeners(xn),this.emitter.removeAllListeners(Bn)}}class Rn{name;state;allStates;stateListeners=new An.EventEmitter;constructor(e,t,r){this.name=e,this.state=t,this.allStates=new Map;for(const e of r)this.allStates.set(e.stateName,e)}getState(e){const t=this.allStates.get(e);return y(void 0!==t,`Unable to retrieve state object for ${e}.`),t}currentState(){return this.state}waitForState(e){if(this.state.stateName===e)throw new Error(`Attempting to await a state that is already active: ${e}`);return new Promise(t=>{this.stateListeners.once(e,t)})}transition(e,t){if(this.state.stateName===e)throw new Error("Attempting transition to already active state!");if(!this.state.canTransitionTo(e))throw new Error(`Unallowed transition from ${this.state} to ${e}`);const r=this.allStates.get(e);if(void 0===r)throw new Error(`Unavailable state: ${e}`);r.onActivation(t);const s=this.transitionTo(r);return s.stateListeners.emit(e,s),s}transitionTo(e){return this.state=e,this}}const On=Gs.new(void 0,"state-machine/state");class Un{stateName;signalListeners;requestHandlers;allowedTransitions;data=null;constructor({name:e,signalListeners:t={},requestHandlers:r={},allowedTransitions:s=[]}){this.stateName=e,this.allowedTransitions=s,this.signalListeners=new Map(Object.entries(t)),this.requestHandlers=new Map(Object.entries(r))}onActivation(e){On.trace(`[${this.constructor.name}] Changing state to: ${this}`),this.data=e}canTransitionTo(e){return-1!==this.allowedTransitions.indexOf(e)}toString(){return`<State ${this.stateName}>`}}class Tn extends Un{constructor(){super({name:"finished"})}close(e){e.close()}async waitForWorkerToFinish(){return this.data}}class Nn extends Un{readyName;constructor(e){super({name:"init(main)",allowedTransitions:[e]}),this.readyName=e}sendConfig(e,t){return e.sendSignal("config",t),{state:this.readyName,data:t}}}class Dn extends Un{workerReadyName;handleConfig;constructor(e,t){super({name:"init(worker)",allowedTransitions:[e],signalListeners:{config:e=>this.onConfig(e)}}),this.workerReadyName=e,this.handleConfig=t}onConfig(e){return{state:this.workerReadyName,data:this.handleConfig(e)}}}async function Mn(e,t,r,s){const i=new $s.Worker(e),n=function(e,t,r){const s=new Nn(t),i=new Tn;return new Rn(e,s,[s,r,i])}(`main->${r}`,r,s),o=await kn.createAndTransferChannel(n,i);return t.trace(`[${n.name}] Worker spawned ${o.currentState()}`),o}const Pn=4294967295,Ln=4294967296,Hn=4096,Kn=(y(!0,"incorrect minimal allocation shift"),7),Vn=Hn>>Kn,Qn=1048575,Fn=1048576,Gn=e=>m(e,e>=0&&e<=Pn,`Incorrect memory index: ${e}!`),$n=e=>m(e,e>=0&&e<=4294967296,`Incorrect sbrk index: ${e}!`);var jn,qn;(qn=jn||(jn={}))[qn.OK=255]="OK",qn[qn.HALT=0]="HALT",qn[qn.PANIC=1]="PANIC",qn[qn.FAULT=2]="FAULT",qn[qn.HOST=3]="HOST",qn[qn.OOG=4]="OOG";const zn=e=>X(e);var Wn,Jn;!function(e){e[e.Halt=0]="Halt",e[e.Panic=1]="Panic"}(Wn||(Wn={}));class Yn{lookupTableForward;constructor(e){this.lookupTableForward=this.buildLookupTableForward(e)}isInstruction(e){return 0===this.lookupTableForward[e]}getNoOfBytesToNextInstruction(e){return y(e>=0,`index (${e}) cannot be a negative number`),Math.min(this.lookupTableForward[e]??0,25)}buildLookupTableForward(e){const t=new Uint8Array(e.bitLength);let r=0;for(let s=e.bitLength-1;s>=0;s--)e.isSet(s)?r=0:r++,t[s]=r;return t}static empty(){return new Yn(G.empty(0))}}!function(e){e[e.NO_ARGUMENTS=0]="NO_ARGUMENTS",e[e.ONE_IMMEDIATE=1]="ONE_IMMEDIATE",e[e.TWO_IMMEDIATES=2]="TWO_IMMEDIATES",e[e.ONE_OFFSET=3]="ONE_OFFSET",e[e.ONE_REGISTER_ONE_IMMEDIATE=4]="ONE_REGISTER_ONE_IMMEDIATE",e[e.ONE_REGISTER_TWO_IMMEDIATES=5]="ONE_REGISTER_TWO_IMMEDIATES",e[e.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET=6]="ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET",e[e.TWO_REGISTERS=7]="TWO_REGISTERS",e[e.TWO_REGISTERS_ONE_IMMEDIATE=8]="TWO_REGISTERS_ONE_IMMEDIATE",e[e.TWO_REGISTERS_ONE_OFFSET=9]="TWO_REGISTERS_ONE_OFFSET",e[e.TWO_REGISTERS_TWO_IMMEDIATES=10]="TWO_REGISTERS_TWO_IMMEDIATES",e[e.THREE_REGISTERS=11]="THREE_REGISTERS",e[e.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE=12]="ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE"}(Jn||(Jn={}));class Zn{u32;i32;u64;i64;view;bytes;constructor(){const e=new ArrayBuffer(8);this.u32=new Uint32Array(e),this.i32=new Int32Array(e),this.u64=new BigUint64Array(e),this.i64=new BigInt64Array(e),this.view=new DataView(e),this.bytes=new Uint8Array(e)}setBytes(e){const t=e.length,r=t>0?128&e[t-1]:0,s=Math.min(t,8),i=0!==r?255:0;for(let t=0;t<s;t++)this.view.setUint8(t,e[t]);for(let e=t;e<8;e++)this.view.setUint8(e,i)}getUnsigned(){return this.u32[0]}getSigned(){return this.i32[0]}getU32(){return this.u32[0]}getI32(){return this.i32[0]}getU64(){return this.u64[0]}getI64(){return this.i64[0]}getBytesAsLittleEndian(){return this.bytes.subarray(0,4)}getExtendedBytesAsLittleEndian(){return this.bytes}}class Xn{bytes;asSigned;asUnsigned;constructor(e=new Uint8Array(104)){this.bytes=e,y(104===e.length,"Invalid size of registers array."),this.asSigned=new BigInt64Array(e.buffer,e.byteOffset),this.asUnsigned=new BigUint64Array(e.buffer,e.byteOffset)}static fromBytes(e){return y(104===e.length,"Invalid size of registers array."),new Xn(e)}getBytesAsLittleEndian(e,t){const r=e<<3;return this.bytes.subarray(r,r+t)}getAllBytesAsLittleEndian(){return this.bytes}copyFrom(e){const t=e instanceof BigUint64Array?e:e.asUnsigned;this.asUnsigned.set(t)}reset(){for(let e=0;e<13;e++)this.asUnsigned[e]=0n}getLowerU32(e){return Number(0xffffffffn&this.asUnsigned[e])}getLowerI32(e){return 0|Number(this.getLowerU32(e))}setU32(e,t){this.asUnsigned[e]=eo(t)}setI32(e,t){this.asSigned[e]=eo(t)}getU64(e){return this.asUnsigned[e]}getI64(e){return this.asSigned[e]}setU64(e,t){this.asUnsigned[e]=t}setI64(e,t){this.asSigned[e]=t}getAllU64(){return this.asUnsigned}}function eo(e){const t="number"==typeof e?BigInt(e):e,r=BigInt(4294967295),s=t&r;return(s&BigInt(2147483648))!==BigInt(0)?s|~r:s}class to{byte=new Int8Array(1);setByte(e){this.byte[0]=e}getHighNibble(){return(240&this.byte[0])>>>4}getLowNibble(){return 15&this.byte[0]}getHighNibbleAsRegisterIndex(){return Math.min(this.getHighNibble(),12)}getLowNibbleAsRegisterIndex(){return Math.min(this.getLowNibble(),12)}getHighNibbleAsLength(){return Math.min(this.getHighNibble(),4)}getLowNibbleAsLength(){return Math.min(this.getLowNibble(),4)}}class ro{nibblesDecoder=new to;offsetDecoder=new Zn;code=new Uint8Array;mask=Yn.empty();reset(e,t){this.code=e,this.mask=t}fillArgs(e,t){const r=1+this.mask.getNoOfBytesToNextInstruction(e+1);switch(t.noOfBytesToSkip=r,t.type){case Jn.NO_ARGUMENTS:break;case Jn.ONE_IMMEDIATE:{const s=Math.min(4,r-1),i=e+1;t.immediateDecoder.setBytes(this.code.subarray(i,i+s));break}case Jn.THREE_REGISTERS:{const r=this.code[e+1],s=this.code[e+2];this.nibblesDecoder.setByte(r),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex(),this.nibblesDecoder.setByte(s),t.thirdRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();break}case Jn.TWO_REGISTERS_ONE_IMMEDIATE:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2));t.immediateDecoder.setBytes(this.code.subarray(i,n));break}case Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=this.nibblesDecoder.getHighNibbleAsLength(),n=e+2,o=n+i;t.immediateDecoder.setBytes(this.code.subarray(n,o));const a=e+2+i,c=a+Math.min(4,Math.max(0,r-2-i));this.offsetDecoder.setBytes(this.code.subarray(a,c)),t.nextPc=e+this.offsetDecoder.getSigned();break}case Jn.TWO_REGISTERS_ONE_OFFSET:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2));this.offsetDecoder.setBytes(this.code.subarray(i,n)),t.nextPc=e+this.offsetDecoder.getSigned();break}case Jn.TWO_REGISTERS:{const r=this.code[e+1];this.nibblesDecoder.setByte(r),t.firstRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();break}case Jn.ONE_OFFSET:{const s=e+1,i=s+Math.min(4,r-1),n=this.code.subarray(s,i);this.offsetDecoder.setBytes(n);const o=this.offsetDecoder.getSigned();t.nextPc=e+o;break}case Jn.ONE_REGISTER_ONE_IMMEDIATE:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=e+2,n=i+Math.min(4,Math.max(0,r-2)),o=this.code.subarray(i,n);t.immediateDecoder.setBytes(o);break}case Jn.TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s);const i=this.nibblesDecoder.getLowNibbleAsLength(),n=e+2,o=n+i,a=this.code.subarray(n,o);t.firstImmediateDecoder.setBytes(a);const c=o,l=c+Math.min(4,Math.max(0,r-2-i)),h=this.code.subarray(c,l);t.secondImmediateDecoder.setBytes(h);break}case Jn.ONE_REGISTER_TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const i=this.nibblesDecoder.getHighNibbleAsLength(),n=e+2,o=n+i,a=this.code.subarray(n,o);t.firstImmediateDecoder.setBytes(a);const c=o,l=c+Math.min(4,Math.max(0,r-2-i)),h=this.code.subarray(c,l);t.secondImmediateDecoder.setBytes(h);break}case Jn.TWO_REGISTERS_TWO_IMMEDIATES:{const s=this.code[e+1];this.nibblesDecoder.setByte(s),t.firstRegisterIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex(),t.secondRegisterIndex=this.nibblesDecoder.getHighNibbleAsRegisterIndex();const i=this.code[e+2];this.nibblesDecoder.setByte(i);const n=this.nibblesDecoder.getLowNibbleAsLength(),o=e+3,a=o+n,c=this.code.subarray(o,a);t.firstImmediateDecoder.setBytes(c);const l=a,h=l+Math.min(4,Math.max(0,r-3-n)),u=this.code.subarray(l,h);t.secondImmediateDecoder.setBytes(u);break}case Jn.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE:{const r=this.code[e+1];this.nibblesDecoder.setByte(r),t.registerIndex=this.nibblesDecoder.getLowNibbleAsRegisterIndex();const s=e+2,i=s+8,n=this.code.subarray(s,i);t.immediateDecoder.setBytes(n);break}}}}class so{unsignedImmediate;bytes;constructor(){const e=new ArrayBuffer(8);this.unsignedImmediate=new BigUint64Array(e),this.bytes=new Uint8Array(e)}setBytes(e){let t=0;for(;t<e.length;t++)this.bytes[t]=e[t];for(;t<8;t++)this.bytes[t]=0}getValue(){return this.unsignedImmediate[0]}getBytesAsLittleEndian(){return this.bytes.subarray(0,8)}}const io=Object.keys(Jn).length/2;var no;!function(e){e[e.TRAP=0]="TRAP",e[e.FALLTHROUGH=1]="FALLTHROUGH",e[e.ECALLI=10]="ECALLI",e[e.LOAD_IMM_64=20]="LOAD_IMM_64",e[e.STORE_IMM_U8=30]="STORE_IMM_U8",e[e.STORE_IMM_U16=31]="STORE_IMM_U16",e[e.STORE_IMM_U32=32]="STORE_IMM_U32",e[e.STORE_IMM_U64=33]="STORE_IMM_U64",e[e.JUMP=40]="JUMP",e[e.JUMP_IND=50]="JUMP_IND",e[e.LOAD_IMM=51]="LOAD_IMM",e[e.LOAD_U8=52]="LOAD_U8",e[e.LOAD_I8=53]="LOAD_I8",e[e.LOAD_U16=54]="LOAD_U16",e[e.LOAD_I16=55]="LOAD_I16",e[e.LOAD_U32=56]="LOAD_U32",e[e.LOAD_I32=57]="LOAD_I32",e[e.LOAD_U64=58]="LOAD_U64",e[e.STORE_U8=59]="STORE_U8",e[e.STORE_U16=60]="STORE_U16",e[e.STORE_U32=61]="STORE_U32",e[e.STORE_U64=62]="STORE_U64",e[e.STORE_IMM_IND_U8=70]="STORE_IMM_IND_U8",e[e.STORE_IMM_IND_U16=71]="STORE_IMM_IND_U16",e[e.STORE_IMM_IND_U32=72]="STORE_IMM_IND_U32",e[e.STORE_IMM_IND_U64=73]="STORE_IMM_IND_U64",e[e.LOAD_IMM_JUMP=80]="LOAD_IMM_JUMP",e[e.BRANCH_EQ_IMM=81]="BRANCH_EQ_IMM",e[e.BRANCH_NE_IMM=82]="BRANCH_NE_IMM",e[e.BRANCH_LT_U_IMM=83]="BRANCH_LT_U_IMM",e[e.BRANCH_LE_U_IMM=84]="BRANCH_LE_U_IMM",e[e.BRANCH_GE_U_IMM=85]="BRANCH_GE_U_IMM",e[e.BRANCH_GT_U_IMM=86]="BRANCH_GT_U_IMM",e[e.BRANCH_LT_S_IMM=87]="BRANCH_LT_S_IMM",e[e.BRANCH_LE_S_IMM=88]="BRANCH_LE_S_IMM",e[e.BRANCH_GE_S_IMM=89]="BRANCH_GE_S_IMM",e[e.BRANCH_GT_S_IMM=90]="BRANCH_GT_S_IMM",e[e.MOVE_REG=100]="MOVE_REG",e[e.SBRK=101]="SBRK",e[e.COUNT_SET_BITS_64=102]="COUNT_SET_BITS_64",e[e.COUNT_SET_BITS_32=103]="COUNT_SET_BITS_32",e[e.LEADING_ZERO_BITS_64=104]="LEADING_ZERO_BITS_64",e[e.LEADING_ZERO_BITS_32=105]="LEADING_ZERO_BITS_32",e[e.TRAILING_ZERO_BITS_64=106]="TRAILING_ZERO_BITS_64",e[e.TRAILING_ZERO_BITS_32=107]="TRAILING_ZERO_BITS_32",e[e.SIGN_EXTEND_8=108]="SIGN_EXTEND_8",e[e.SIGN_EXTEND_16=109]="SIGN_EXTEND_16",e[e.ZERO_EXTEND_16=110]="ZERO_EXTEND_16",e[e.REVERSE_BYTES=111]="REVERSE_BYTES",e[e.STORE_IND_U8=120]="STORE_IND_U8",e[e.STORE_IND_U16=121]="STORE_IND_U16",e[e.STORE_IND_U32=122]="STORE_IND_U32",e[e.STORE_IND_U64=123]="STORE_IND_U64",e[e.LOAD_IND_U8=124]="LOAD_IND_U8",e[e.LOAD_IND_I8=125]="LOAD_IND_I8",e[e.LOAD_IND_U16=126]="LOAD_IND_U16",e[e.LOAD_IND_I16=127]="LOAD_IND_I16",e[e.LOAD_IND_U32=128]="LOAD_IND_U32",e[e.LOAD_IND_I32=129]="LOAD_IND_I32",e[e.LOAD_IND_U64=130]="LOAD_IND_U64",e[e.ADD_IMM_32=131]="ADD_IMM_32",e[e.AND_IMM=132]="AND_IMM",e[e.XOR_IMM=133]="XOR_IMM",e[e.OR_IMM=134]="OR_IMM",e[e.MUL_IMM_32=135]="MUL_IMM_32",e[e.SET_LT_U_IMM=136]="SET_LT_U_IMM",e[e.SET_LT_S_IMM=137]="SET_LT_S_IMM",e[e.SHLO_L_IMM_32=138]="SHLO_L_IMM_32",e[e.SHLO_R_IMM_32=139]="SHLO_R_IMM_32",e[e.SHAR_R_IMM_32=140]="SHAR_R_IMM_32",e[e.NEG_ADD_IMM_32=141]="NEG_ADD_IMM_32",e[e.SET_GT_U_IMM=142]="SET_GT_U_IMM",e[e.SET_GT_S_IMM=143]="SET_GT_S_IMM",e[e.SHLO_L_IMM_ALT_32=144]="SHLO_L_IMM_ALT_32",e[e.SHLO_R_IMM_ALT_32=145]="SHLO_R_IMM_ALT_32",e[e.SHAR_R_IMM_ALT_32=146]="SHAR_R_IMM_ALT_32",e[e.CMOV_IZ_IMM=147]="CMOV_IZ_IMM",e[e.CMOV_NZ_IMM=148]="CMOV_NZ_IMM",e[e.ADD_IMM_64=149]="ADD_IMM_64",e[e.MUL_IMM_64=150]="MUL_IMM_64",e[e.SHLO_L_IMM_64=151]="SHLO_L_IMM_64",e[e.SHLO_R_IMM_64=152]="SHLO_R_IMM_64",e[e.SHAR_R_IMM_64=153]="SHAR_R_IMM_64",e[e.NEG_ADD_IMM_64=154]="NEG_ADD_IMM_64",e[e.SHLO_L_IMM_ALT_64=155]="SHLO_L_IMM_ALT_64",e[e.SHLO_R_IMM_ALT_64=156]="SHLO_R_IMM_ALT_64",e[e.SHAR_R_IMM_ALT_64=157]="SHAR_R_IMM_ALT_64",e[e.ROT_R_64_IMM=158]="ROT_R_64_IMM",e[e.ROT_R_64_IMM_ALT=159]="ROT_R_64_IMM_ALT",e[e.ROT_R_32_IMM=160]="ROT_R_32_IMM",e[e.ROT_R_32_IMM_ALT=161]="ROT_R_32_IMM_ALT",e[e.BRANCH_EQ=170]="BRANCH_EQ",e[e.BRANCH_NE=171]="BRANCH_NE",e[e.BRANCH_LT_U=172]="BRANCH_LT_U",e[e.BRANCH_LT_S=173]="BRANCH_LT_S",e[e.BRANCH_GE_U=174]="BRANCH_GE_U",e[e.BRANCH_GE_S=175]="BRANCH_GE_S",e[e.LOAD_IMM_JUMP_IND=180]="LOAD_IMM_JUMP_IND",e[e.ADD_32=190]="ADD_32",e[e.SUB_32=191]="SUB_32",e[e.MUL_32=192]="MUL_32",e[e.DIV_U_32=193]="DIV_U_32",e[e.DIV_S_32=194]="DIV_S_32",e[e.REM_U_32=195]="REM_U_32",e[e.REM_S_32=196]="REM_S_32",e[e.SHLO_L_32=197]="SHLO_L_32",e[e.SHLO_R_32=198]="SHLO_R_32",e[e.SHAR_R_32=199]="SHAR_R_32",e[e.ADD_64=200]="ADD_64",e[e.SUB_64=201]="SUB_64",e[e.MUL_64=202]="MUL_64",e[e.DIV_U_64=203]="DIV_U_64",e[e.DIV_S_64=204]="DIV_S_64",e[e.REM_U_64=205]="REM_U_64",e[e.REM_S_64=206]="REM_S_64",e[e.SHLO_L_64=207]="SHLO_L_64",e[e.SHLO_R_64=208]="SHLO_R_64",e[e.SHAR_R_64=209]="SHAR_R_64",e[e.AND=210]="AND",e[e.XOR=211]="XOR",e[e.OR=212]="OR",e[e.MUL_UPPER_S_S=213]="MUL_UPPER_S_S",e[e.MUL_UPPER_U_U=214]="MUL_UPPER_U_U",e[e.MUL_UPPER_S_U=215]="MUL_UPPER_S_U",e[e.SET_LT_U=216]="SET_LT_U",e[e.SET_LT_S=217]="SET_LT_S",e[e.CMOV_IZ=218]="CMOV_IZ",e[e.CMOV_NZ=219]="CMOV_NZ",e[e.ROT_L_64=220]="ROT_L_64",e[e.ROT_L_32=221]="ROT_L_32",e[e.ROT_R_64=222]="ROT_R_64",e[e.ROT_R_32=223]="ROT_R_32",e[e.AND_INV=224]="AND_INV",e[e.OR_INV=225]="OR_INV",e[e.XNOR=226]="XNOR",e[e.MAX=227]="MAX",e[e.MAX_U=228]="MAX_U",e[e.MIN=229]="MIN",e[e.MIN_U=230]="MIN_U"}(no||(no={}));const oo=no.MIN_U,ao=(()=>{const e=new Array(oo+1);return e[no.TRAP]=Jn.NO_ARGUMENTS,e[no.FALLTHROUGH]=Jn.NO_ARGUMENTS,e[no.ECALLI]=Jn.ONE_IMMEDIATE,e[no.LOAD_IMM_64]=Jn.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE,e[no.STORE_IMM_U8]=Jn.TWO_IMMEDIATES,e[no.STORE_IMM_U16]=Jn.TWO_IMMEDIATES,e[no.STORE_IMM_U32]=Jn.TWO_IMMEDIATES,e[no.STORE_IMM_U64]=Jn.TWO_IMMEDIATES,e[no.JUMP]=Jn.ONE_OFFSET,e[no.JUMP_IND]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_U8]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_I8]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_U16]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_I16]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_U32]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_I32]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.LOAD_U64]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.STORE_U8]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.STORE_U16]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.STORE_U32]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.STORE_U64]=Jn.ONE_REGISTER_ONE_IMMEDIATE,e[no.STORE_IMM_IND_U8]=Jn.ONE_REGISTER_TWO_IMMEDIATES,e[no.STORE_IMM_IND_U16]=Jn.ONE_REGISTER_TWO_IMMEDIATES,e[no.STORE_IMM_IND_U32]=Jn.ONE_REGISTER_TWO_IMMEDIATES,e[no.STORE_IMM_IND_U64]=Jn.ONE_REGISTER_TWO_IMMEDIATES,e[no.LOAD_IMM_JUMP]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_EQ_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_NE_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_LT_U_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_LE_U_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_GE_U_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_GT_U_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_LT_S_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_LE_S_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_GE_S_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.BRANCH_GT_S_IMM]=Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,e[no.MOVE_REG]=Jn.TWO_REGISTERS,e[no.SBRK]=Jn.TWO_REGISTERS,e[no.COUNT_SET_BITS_64]=Jn.TWO_REGISTERS,e[no.COUNT_SET_BITS_32]=Jn.TWO_REGISTERS,e[no.LEADING_ZERO_BITS_64]=Jn.TWO_REGISTERS,e[no.LEADING_ZERO_BITS_32]=Jn.TWO_REGISTERS,e[no.TRAILING_ZERO_BITS_64]=Jn.TWO_REGISTERS,e[no.TRAILING_ZERO_BITS_32]=Jn.TWO_REGISTERS,e[no.SIGN_EXTEND_8]=Jn.TWO_REGISTERS,e[no.SIGN_EXTEND_16]=Jn.TWO_REGISTERS,e[no.ZERO_EXTEND_16]=Jn.TWO_REGISTERS,e[no.REVERSE_BYTES]=Jn.TWO_REGISTERS,e[no.STORE_IND_U8]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.STORE_IND_U16]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.STORE_IND_U32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.STORE_IND_U64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_U8]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_I8]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_U16]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_I16]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_U32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_I32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.LOAD_IND_U64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ADD_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ADD_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.AND_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.XOR_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.OR_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.MUL_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.MUL_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SET_LT_U_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SET_LT_S_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_L_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_R_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHAR_R_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.NEG_ADD_IMM_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_L_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_R_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHAR_R_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.NEG_ADD_IMM_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SET_GT_U_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SET_GT_S_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_L_IMM_ALT_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_R_IMM_ALT_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHAR_R_IMM_ALT_32]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_L_IMM_ALT_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHLO_R_IMM_ALT_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.SHAR_R_IMM_ALT_64]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.CMOV_IZ_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.CMOV_NZ_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ROT_R_64_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ROT_R_64_IMM_ALT]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ROT_R_32_IMM]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.ROT_R_32_IMM_ALT]=Jn.TWO_REGISTERS_ONE_IMMEDIATE,e[no.BRANCH_EQ]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.BRANCH_NE]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.BRANCH_LT_U]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.BRANCH_LT_S]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.BRANCH_GE_U]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.BRANCH_GE_S]=Jn.TWO_REGISTERS_ONE_OFFSET,e[no.LOAD_IMM_JUMP_IND]=Jn.TWO_REGISTERS_TWO_IMMEDIATES,e[no.ADD_32]=Jn.THREE_REGISTERS,e[no.ADD_64]=Jn.THREE_REGISTERS,e[no.SUB_32]=Jn.THREE_REGISTERS,e[no.SUB_64]=Jn.THREE_REGISTERS,e[no.AND]=Jn.THREE_REGISTERS,e[no.XOR]=Jn.THREE_REGISTERS,e[no.OR]=Jn.THREE_REGISTERS,e[no.MUL_32]=Jn.THREE_REGISTERS,e[no.MUL_64]=Jn.THREE_REGISTERS,e[no.MUL_UPPER_S_S]=Jn.THREE_REGISTERS,e[no.MUL_UPPER_U_U]=Jn.THREE_REGISTERS,e[no.MUL_UPPER_S_U]=Jn.THREE_REGISTERS,e[no.DIV_U_32]=Jn.THREE_REGISTERS,e[no.DIV_S_32]=Jn.THREE_REGISTERS,e[no.REM_U_32]=Jn.THREE_REGISTERS,e[no.REM_S_32]=Jn.THREE_REGISTERS,e[no.DIV_U_64]=Jn.THREE_REGISTERS,e[no.DIV_S_64]=Jn.THREE_REGISTERS,e[no.REM_U_64]=Jn.THREE_REGISTERS,e[no.REM_S_64]=Jn.THREE_REGISTERS,e[no.SET_LT_U]=Jn.THREE_REGISTERS,e[no.SET_LT_S]=Jn.THREE_REGISTERS,e[no.SHLO_L_32]=Jn.THREE_REGISTERS,e[no.SHLO_R_32]=Jn.THREE_REGISTERS,e[no.SHAR_R_32]=Jn.THREE_REGISTERS,e[no.SHLO_L_64]=Jn.THREE_REGISTERS,e[no.SHLO_R_64]=Jn.THREE_REGISTERS,e[no.SHAR_R_64]=Jn.THREE_REGISTERS,e[no.CMOV_IZ]=Jn.THREE_REGISTERS,e[no.CMOV_NZ]=Jn.THREE_REGISTERS,e[no.ROT_L_64]=Jn.THREE_REGISTERS,e[no.ROT_L_32]=Jn.THREE_REGISTERS,e[no.ROT_R_64]=Jn.THREE_REGISTERS,e[no.ROT_R_32]=Jn.THREE_REGISTERS,e[no.AND_INV]=Jn.THREE_REGISTERS,e[no.OR_INV]=Jn.THREE_REGISTERS,e[no.XNOR]=Jn.THREE_REGISTERS,e[no.MAX]=Jn.THREE_REGISTERS,e[no.MAX_U]=Jn.THREE_REGISTERS,e[no.MIN]=Jn.THREE_REGISTERS,e[no.MIN_U]=Jn.THREE_REGISTERS,e})(),co=e=>X(e),lo=e=>te(e),ho=e=>"number"==typeof e&&e<2**32?co(e):lo(e);function uo(e){return new go(te(e))}class go{gas;constructor(e){this.gas=e}set(e){this.gas=te(e)}get(){return ho(this.gas)}sub(e){return this.gas=te(this.gas-te(e)),this.gas<0n}}const fo=[[no.TRAP,1],[no.FALLTHROUGH,1],[no.ECALLI,1],[no.LOAD_IMM_64,1],[no.STORE_IMM_U8,1],[no.STORE_IMM_U16,1],[no.STORE_IMM_U32,1],[no.STORE_IMM_U64,1],[no.JUMP,1],[no.JUMP_IND,1],[no.LOAD_IMM,1],[no.LOAD_U8,1],[no.LOAD_I8,1],[no.LOAD_U16,1],[no.LOAD_I16,1],[no.LOAD_U32,1],[no.LOAD_I32,1],[no.LOAD_U64,1],[no.STORE_U8,1],[no.STORE_U16,1],[no.STORE_U32,1],[no.STORE_U64,1],[no.STORE_IMM_IND_U8,1],[no.STORE_IMM_IND_U16,1],[no.STORE_IMM_IND_U32,1],[no.STORE_IMM_IND_U64,1],[no.LOAD_IMM_JUMP,1],[no.BRANCH_EQ_IMM,1],[no.BRANCH_NE_IMM,1],[no.BRANCH_LT_U_IMM,1],[no.BRANCH_LE_U_IMM,1],[no.BRANCH_GE_U_IMM,1],[no.BRANCH_GT_U_IMM,1],[no.BRANCH_LT_S_IMM,1],[no.BRANCH_LE_S_IMM,1],[no.BRANCH_GE_S_IMM,1],[no.BRANCH_GT_S_IMM,1],[no.MOVE_REG,1],[no.SBRK,1],[no.COUNT_SET_BITS_64,1],[no.COUNT_SET_BITS_32,1],[no.LEADING_ZERO_BITS_64,1],[no.LEADING_ZERO_BITS_32,1],[no.TRAILING_ZERO_BITS_64,1],[no.TRAILING_ZERO_BITS_32,1],[no.SIGN_EXTEND_8,1],[no.SIGN_EXTEND_16,1],[no.ZERO_EXTEND_16,1],[no.REVERSE_BYTES,1],[no.STORE_IND_U8,1],[no.STORE_IND_U16,1],[no.STORE_IND_U32,1],[no.STORE_IND_U64,1],[no.LOAD_IND_U8,1],[no.LOAD_IND_I8,1],[no.LOAD_IND_U16,1],[no.LOAD_IND_I16,1],[no.LOAD_IND_U32,1],[no.LOAD_IND_I32,1],[no.LOAD_IND_U64,1],[no.ADD_IMM_32,1],[no.AND_IMM,1],[no.XOR_IMM,1],[no.OR_IMM,1],[no.MUL_IMM_32,1],[no.SET_LT_U_IMM,1],[no.SET_LT_S_IMM,1],[no.SHLO_L_IMM_32,1],[no.SHLO_R_IMM_32,1],[no.SHAR_R_IMM_32,1],[no.NEG_ADD_IMM_32,1],[no.SET_GT_U_IMM,1],[no.SET_GT_S_IMM,1],[no.SHLO_L_IMM_ALT_32,1],[no.SHLO_R_IMM_ALT_32,1],[no.SHAR_R_IMM_ALT_32,1],[no.CMOV_IZ_IMM,1],[no.CMOV_NZ_IMM,1],[no.ADD_IMM_64,1],[no.MUL_IMM_64,1],[no.SHLO_L_IMM_64,1],[no.SHLO_R_IMM_64,1],[no.SHAR_R_IMM_64,1],[no.NEG_ADD_IMM_64,1],[no.SHLO_L_IMM_ALT_64,1],[no.SHLO_R_IMM_ALT_64,1],[no.SHAR_R_IMM_ALT_64,1],[no.ROT_R_64_IMM,1],[no.ROT_R_64_IMM_ALT,1],[no.ROT_R_32_IMM,1],[no.ROT_R_32_IMM_ALT,1],[no.BRANCH_EQ,1],[no.BRANCH_NE,1],[no.BRANCH_LT_U,1],[no.BRANCH_LT_S,1],[no.BRANCH_GE_U,1],[no.BRANCH_GE_S,1],[no.LOAD_IMM_JUMP_IND,1],[no.ADD_32,1],[no.SUB_32,1],[no.MUL_32,1],[no.DIV_U_32,1],[no.DIV_S_32,1],[no.REM_U_32,1],[no.REM_S_32,1],[no.SHLO_L_32,1],[no.SHLO_R_32,1],[no.SHAR_R_32,1],[no.ADD_64,1],[no.SUB_64,1],[no.MUL_64,1],[no.DIV_U_64,1],[no.DIV_S_64,1],[no.REM_U_64,1],[no.REM_S_64,1],[no.SHLO_L_64,1],[no.SHLO_R_64,1],[no.SHAR_R_64,1],[no.AND,1],[no.XOR,1],[no.OR,1],[no.MUL_UPPER_S_S,1],[no.MUL_UPPER_U_U,1],[no.MUL_UPPER_S_U,1],[no.SET_LT_U,1],[no.SET_LT_S,1],[no.CMOV_IZ,1],[no.CMOV_NZ,1],[no.ROT_L_64,1],[no.ROT_L_32,1],[no.ROT_R_64,1],[no.ROT_R_32,1],[no.AND_INV,1],[no.OR_INV,1],[no.XNOR,1],[no.MAX,1],[no.MAX_U,1],[no.MIN,1],[no.MIN_U,1]].reduce((e,t)=>{const[r,s]=(([e,t])=>[e,{gas:co(t)}])(t);return e[r]=s,e},{}),po=(()=>{const e=new Array(oo+1);return e.fill(!1),e[no.TRAP]=!0,e[no.FALLTHROUGH]=!0,e[no.JUMP]=!0,e[no.JUMP_IND]=!0,e[no.LOAD_IMM_JUMP]=!0,e[no.LOAD_IMM_JUMP_IND]=!0,e[no.BRANCH_EQ]=!0,e[no.BRANCH_NE]=!0,e[no.BRANCH_GE_U]=!0,e[no.BRANCH_GE_S]=!0,e[no.BRANCH_LT_U]=!0,e[no.BRANCH_LT_S]=!0,e[no.BRANCH_EQ_IMM]=!0,e[no.BRANCH_NE_IMM]=!0,e[no.BRANCH_LT_U_IMM]=!0,e[no.BRANCH_LT_S_IMM]=!0,e[no.BRANCH_LE_U_IMM]=!0,e[no.BRANCH_LE_S_IMM]=!0,e[no.BRANCH_GE_U_IMM]=!0,e[no.BRANCH_GE_S_IMM]=!0,e[no.BRANCH_GT_U_IMM]=!0,e[no.BRANCH_GT_S_IMM]=!0,e})();class yo{basicBlocks=new Set;reset(e,t){this.basicBlocks.clear(),this.basicBlocks.add(0);const r=e.length,s=r=>t.isInstruction(r)&&po[e[r]];for(let e=0;e<r;e++)t.isInstruction(e)&&s(e)&&this.basicBlocks.add(e+1+t.getNoOfBytesToNextInstruction(e+1))}isBeginningOfBasicBlock(e){return this.basicBlocks.has(e)}}const mo=(()=>{const e=new Array(oo+1);for(let t=0;t<oo+1;t++){const r=fo[t]?.gas;e[t]=r}return e})();class bo{nextPc=0;status=null;exitParam=null;reset(){this.nextPc=0,this.status=null,this.exitParam=null}}const Ao=e=>m(e,e>=0&&e<Hn,`Incorect page index: ${e}!`),Io=e=>m(e,e>=0&&e<=Qn,`Incorrect page number: ${e}!`);function vo(e){return Io(e===Qn?0:e+1)}function wo(e){return Hn*Math.ceil(e/Hn)}function So(e){return Io(e>>>12)}function Eo(e){return Gn(e>>>12<<12)}function Co(e){return Gn(e<<12>>>0)}class ko{address;isAccessFault;constructor(e,t=!0){this.address=e,this.isAccessFault=t}static fromPageNumber(e,t=!1){const r=Co(Io(e));return new ko(r,t)}static fromMemoryIndex(e,t=!1){const r=Eo(Gn(e%Ln));return new ko(r,t)}}class xo extends Error{constructor(){super("Out of bounds")}}Error,Error;class Bo extends Error{constructor(){super("Space between sbrk index and max heap index should be empty!")}}class _o extends Error{constructor(){super("MemoryBuilder was finalized and cannot be changed!")}}class Ro extends Error{constructor(){super("You are trying to access reserved memory!")}}class Oo extends Error{constructor(){super("You try to fill data on memory page that does not exist!")}}Error;class Uo extends Error{constructor(){super("Out of memory")}}class To{start;length;end;lastIndex=null;constructor(e,t){this.start=e,this.length=t,this.end=Gn((this.start+this.length)%Ln),t>0&&(this.lastIndex=Gn((this.end-1+Ln)%Ln))}static fromStartAndLength(e,t){if(!Number.isInteger(t)||t<0||t>Ln)throw new TypeError(`length must be a non-negative integer and less than 4294967296, got ${t}`);return new To(e,t)}isEmpty(){return 0===this.length}isWrapped(){return this.start>=this.end&&!this.isEmpty()}isInRange(e){return this.isWrapped()?e>=this.start||e<this.end:e>=this.start&&e<this.end}overlapsWith(e){return null!==this.lastIndex&&null!==e.lastIndex&&(this.isInRange(e.start)||this.isInRange(e.lastIndex)||e.isInRange(this.start)||e.isInRange(this.lastIndex))}}const No=To.fromStartAndLength(Gn(0),65536);class Do{start;length;end;constructor(e,t){this.start=e,this.length=t,this.end=Io((this.start+this.length)%Fn)}static fromMemoryRange(e){const t=So(e.start);if(e.isEmpty())return new Do(t,0);const r=So(e.lastIndex??e.end),s=vo(r);if((t===s||t===r)&&e.length>Hn)return new Do(t,Fn);const i=t<s?s-t:Fn-t+s;return Do.fromStartAndLength(t,i)}static fromStartAndLength(e,t){if(!Number.isInteger(t)||t<0||t>Fn)throw new TypeError(`length must be a non-negative integer and less than 1048576, got ${t}`);return new Do(e,t)}isEmpty(){return 0===this.length}*[Symbol.iterator](){if(this.isEmpty())return;const e=this.end;let t=this.start;do{yield t,t=vo(t)}while(t!==e)}}class Mo{start;constructor(e){this.start=Co(e)}}class Po extends Mo{data;constructor(e,t){super(e),this.data=t}loadInto(e,t,r){const s=t+r;if(s>Hn)return _.error(ko.fromMemoryIndex(this.start+Hn));const i=this.data.subarray(t,s);return e.fill(0,i.length,r),e.set(i),_.ok(C)}storeFrom(e,t){return _.error(ko.fromMemoryIndex(this.start,!0))}setData(e,t){this.data.set(t,e)}isWriteable(){return!1}getPageDump(){return this.data}}class Lo extends Mo{buffer;view;constructor(e,t){super(e);const r=t?.length??0,s=Math.min(Hn,Math.max(r,Vn));this.buffer=new ArrayBuffer(s,{maxByteLength:Hn}),this.view=new Uint8Array(this.buffer),void 0!==t&&this.view.set(t)}loadInto(e,t,r){const s=t+r;if(s>Hn)return _.error(ko.fromMemoryIndex(this.start+Hn));const i=this.view.subarray(t,s);return e.fill(0,i.length,r),e.set(i),_.ok(C)}storeFrom(e,t){if(this.buffer.byteLength<e+t.length&&this.buffer.byteLength<Hn){const r=Math.min(Hn,Math.max(Vn,e+t.length));this.buffer.resize(r)}return this.view.set(t,e),_.ok(C)}setData(e,t){if(this.buffer.byteLength<e+t.length&&this.buffer.byteLength<Hn){const r=Math.min(Hn,Math.max(Vn,e+t.length));this.buffer.resize(r)}this.view.set(t,e)}isWriteable(){return!0}getPageDump(){return this.view}}var Ho;!function(e){e[e.READ=0]="READ",e[e.WRITE=1]="WRITE"}(Ho||(Ho={}));class Ko{sbrkIndex;virtualSbrkIndex;endHeapIndex;memory;static fromInitialMemory(e){return new Ko(e?.sbrkIndex,e?.sbrkIndex,e?.endHeapIndex,e?.memory)}constructor(e=$n(No.end),t=$n(No.end),r=$n(Pn),s=new Map){this.sbrkIndex=e,this.virtualSbrkIndex=t,this.endHeapIndex=r,this.memory=s}reset(){this.sbrkIndex=$n(No.end),this.virtualSbrkIndex=$n(No.end),this.endHeapIndex=$n(Pn),this.memory=new Map}copyFrom(e){this.sbrkIndex=e.sbrkIndex,this.virtualSbrkIndex=e.virtualSbrkIndex,this.endHeapIndex=e.endHeapIndex,this.memory=e.memory}storeFrom(e,t){if(0===t.length)return _.ok(C);const r=this.getPages(e,t.length,Ho.WRITE);if(r.isError)return _.error(r.error);const s=r.ok;let i=e,n=t.length;for(const r of s){const s=Ao(i%Hn),o=Math.min(Hn-s,n),a=i-e,c=t.subarray(a,a+o);r.storeFrom(s,c),i+=o,n-=o}return _.ok(C)}getPages(e,t,r){if(0===t)return _.ok([]);const s=To.fromStartAndLength(e,t),i=Do.fromMemoryRange(s),n=[];for(const e of i){if(e<16)return _.error(ko.fromPageNumber(e,!0));const t=this.memory.get(e);if(void 0===t)return _.error(ko.fromPageNumber(e));if(r===Ho.WRITE&&!t.isWriteable())return _.error(ko.fromPageNumber(e,!0));n.push(t)}return _.ok(n)}loadInto(e,t){if(0===e.length)return _.ok(C);const r=this.getPages(t,e.length,Ho.READ);if(r.isError)return _.error(r.error);const s=r.ok;let i=t,n=e.length;for(const r of s){const s=Ao(i%Hn),o=Math.min(Hn-s,n),a=i-t,c=e.subarray(a);r.loadInto(c,s,o),i+=o,n-=o}return _.ok(C)}sbrk(e){const t=this.sbrkIndex,r=this.virtualSbrkIndex;if(Pn<r+e||r+e>this.endHeapIndex)throw new Uo;const s=$n(this.virtualSbrkIndex+e);if(s<=t)return this.virtualSbrkIndex=s,r;const i=$n(wo(s)),n=So(t),o=(i-t)/Hn,a=Do.fromStartAndLength(n,o);for(const e of a){const t=new Lo(e);this.memory.set(e,t)}return this.virtualSbrkIndex=s,this.sbrkIndex=i,r}getPageDump(e){const t=this.memory.get(e);return t?.getPageDump()??null}getDirtyPages(){return this.memory.keys()}}class Vo{initialMemory=new Map;isFinalized=!1;ensureNotFinalized(){if(this.isFinalized)throw new _o}ensureNoReservedMemoryUsage(e){if(e.overlapsWith(No))throw new Ro}setReadablePages(e,t,r=new Uint8Array){this.ensureNotFinalized(),y(e<t,"end has to be bigger than start"),y(e%Hn===0,"start needs to be a multiple of page size (4096)"),y(t%Hn===0,"end needs to be a multiple of page size (4096)"),y(r.length<=t-e,"the initial data is longer than address range");const s=t-e,i=To.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=Array.from(Do.fromMemoryRange(i)),o=n.length;for(let e=0;e<o;e++){const t=n[e],s=r.subarray(e*Hn,(e+1)*Hn),i=new Po(t,s);this.initialMemory.set(t,i)}return this}setWriteablePages(e,t,r=new Uint8Array){this.ensureNotFinalized(),y(e<t,"end has to be bigger than start"),y(e%Hn===0,"start needs to be a multiple of page size (4096)"),y(t%Hn===0,"end needs to be a multiple of page size (4096)"),y(r.length<=t-e,"the initial data is longer than address range");const s=t-e,i=To.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=Array.from(Do.fromMemoryRange(i)),o=n.length;for(let e=0;e<o;e++){const t=n[e],s=r.subarray(e*Hn,(e+1)*Hn),i=new Lo(t,s);this.initialMemory.set(t,i)}return this}setData(e,t){this.ensureNotFinalized();const r=Hn-e%Hn;y(t.length<=r,"The data has to fit into a single page.");const s=t.length,i=To.fromStartAndLength(e,s);this.ensureNoReservedMemoryUsage(i);const n=So(e),o=this.initialMemory.get(n);if(void 0===o)throw new Oo;const a=Ao(e-o.start);return o.setData(a,t),this}finalize(e,t){y(e<=t,`startHeapIndex (${e}) has to be less than or equal to endHeapIndex (${t})`),this.ensureNotFinalized();const r=To.fromStartAndLength(e,t-e),s=Do.fromMemoryRange(r);for(const e of s)if(this.initialMemory.has(e))throw new Bo;const i=Ko.fromInitialMemory({memory:this.initialMemory,sbrkIndex:$n(e),endHeapIndex:t});return this.isFinalized=!0,i}}class Qo{mathOps;shiftOps;bitOps;booleanOps;moveOps;bitRotationOps;constructor(e,t,r,s,i,n){this.mathOps=e,this.shiftOps=t,this.bitOps=r,this.booleanOps=s,this.moveOps=i,this.bitRotationOps=n}dispatch(e,t){switch(e){case no.ADD_32:this.mathOps.addU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.ADD_64:this.mathOps.addU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MUL_32:this.mathOps.mulU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MUL_64:this.mathOps.mulU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MUL_UPPER_U_U:this.mathOps.mulUpperUU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MUL_UPPER_S_S:this.mathOps.mulUpperSS(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MUL_UPPER_S_U:this.mathOps.mulUpperSU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SUB_32:this.mathOps.subU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SUB_64:this.mathOps.subU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.DIV_S_32:this.mathOps.divSignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.DIV_S_64:this.mathOps.divSignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.DIV_U_32:this.mathOps.divUnsignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.DIV_U_64:this.mathOps.divUnsignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.REM_S_32:this.mathOps.remSignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.REM_S_64:this.mathOps.remSignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.REM_U_32:this.mathOps.remUnsignedU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.REM_U_64:this.mathOps.remUnsignedU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHLO_L_32:this.shiftOps.shiftLogicalLeftU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHLO_L_64:this.shiftOps.shiftLogicalLeftU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHLO_R_32:this.shiftOps.shiftLogicalRightU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHLO_R_64:this.shiftOps.shiftLogicalRightU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHAR_R_32:this.shiftOps.shiftArithmeticRightU32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SHAR_R_64:this.shiftOps.shiftArithmeticRightU64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.OR:this.bitOps.or(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.AND:this.bitOps.and(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.XOR:this.bitOps.xor(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SET_LT_S:this.booleanOps.setLessThanSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.SET_LT_U:this.booleanOps.setLessThanUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.CMOV_IZ:this.moveOps.cmovIfZero(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.CMOV_NZ:this.moveOps.cmovIfNotZero(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.ROT_L_64:this.bitRotationOps.rotL64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.ROT_L_32:this.bitRotationOps.rotL32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.ROT_R_64:this.bitRotationOps.rotR64(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.ROT_R_32:this.bitRotationOps.rotR32(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.AND_INV:this.bitOps.andInv(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.OR_INV:this.bitOps.orInv(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.XNOR:this.bitOps.xnor(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MAX:this.mathOps.max(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MAX_U:this.mathOps.maxU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MIN:this.mathOps.min(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex);break;case no.MIN_U:this.mathOps.minU(t.firstRegisterIndex,t.secondRegisterIndex,t.thirdRegisterIndex)}}}class Fo{mathOps;shiftOps;bitOps;booleanOps;moveOps;storeOps;loadOps;bitRotationOps;constructor(e,t,r,s,i,n,o,a){this.mathOps=e,this.shiftOps=t,this.bitOps=r,this.booleanOps=s,this.moveOps=i,this.storeOps=n,this.loadOps=o,this.bitRotationOps=a}dispatch(e,t){switch(e){case no.ADD_IMM_32:this.mathOps.addImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.ADD_IMM_64:this.mathOps.addImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.MUL_IMM_32:this.mathOps.mulImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.MUL_IMM_64:this.mathOps.mulImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.NEG_ADD_IMM_32:this.mathOps.negAddImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.NEG_ADD_IMM_64:this.mathOps.negAddImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_L_IMM_32:this.shiftOps.shiftLogicalLeftImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_L_IMM_64:this.shiftOps.shiftLogicalLeftImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_L_IMM_ALT_32:this.shiftOps.shiftLogicalLeftImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_L_IMM_ALT_64:this.shiftOps.shiftLogicalLeftImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_R_IMM_32:this.shiftOps.shiftLogicalRightImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_R_IMM_64:this.shiftOps.shiftLogicalRightImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_R_IMM_ALT_32:this.shiftOps.shiftLogicalRightImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHLO_R_IMM_ALT_64:this.shiftOps.shiftLogicalRightImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHAR_R_IMM_32:this.shiftOps.shiftArithmeticRightImmediateU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHAR_R_IMM_64:this.shiftOps.shiftArithmeticRightImmediateU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHAR_R_IMM_ALT_32:this.shiftOps.shiftArithmeticRightImmediateAlternativeU32(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SHAR_R_IMM_ALT_64:this.shiftOps.shiftArithmeticRightImmediateAlternativeU64(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.OR_IMM:this.bitOps.orImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.AND_IMM:this.bitOps.andImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.XOR_IMM:this.bitOps.xorImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SET_LT_S_IMM:this.booleanOps.setLessThanSignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SET_LT_U_IMM:this.booleanOps.setLessThanUnsignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SET_GT_S_IMM:this.booleanOps.setGreaterThanSignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.SET_GT_U_IMM:this.booleanOps.setGreaterThanUnsignedImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.CMOV_IZ_IMM:this.moveOps.cmovIfZeroImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.CMOV_NZ_IMM:this.moveOps.cmovIfNotZeroImmediate(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.STORE_IND_U8:this.storeOps.storeIndU8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.STORE_IND_U16:this.storeOps.storeIndU16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.STORE_IND_U32:this.storeOps.storeIndU32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.STORE_IND_U64:this.storeOps.storeIndU64(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_U8:this.loadOps.loadIndU8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_U16:this.loadOps.loadIndU16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_U32:this.loadOps.loadIndU32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_U64:this.loadOps.loadIndU64(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_I8:this.loadOps.loadIndI8(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_I16:this.loadOps.loadIndI16(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.LOAD_IND_I32:this.loadOps.loadIndI32(t.firstRegisterIndex,t.secondRegisterIndex,t.immediateDecoder);break;case no.ROT_R_64_IMM:this.bitRotationOps.rotR64Imm(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.ROT_R_64_IMM_ALT:this.bitRotationOps.rotR64ImmAlt(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.ROT_R_32_IMM:this.bitRotationOps.rotR32Imm(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex);break;case no.ROT_R_32_IMM_ALT:this.bitRotationOps.rotR32ImmAlt(t.secondRegisterIndex,t.immediateDecoder,t.firstRegisterIndex)}}}class Go{moveOps;memoryOps;bitOps;bitRotationOps;constructor(e,t,r,s){this.moveOps=e,this.memoryOps=t,this.bitOps=r,this.bitRotationOps=s}dispatch(e,t){switch(e){case no.MOVE_REG:this.moveOps.moveRegister(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.SBRK:this.memoryOps.sbrk(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.COUNT_SET_BITS_64:this.bitOps.countSetBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.COUNT_SET_BITS_32:this.bitOps.countSetBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.LEADING_ZERO_BITS_64:this.bitOps.leadingZeroBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.LEADING_ZERO_BITS_32:this.bitOps.leadingZeroBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.TRAILING_ZERO_BITS_64:this.bitOps.trailingZeroBits64(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.TRAILING_ZERO_BITS_32:this.bitOps.trailingZeroBits32(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.SIGN_EXTEND_8:this.bitOps.signExtend8(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.SIGN_EXTEND_16:this.bitOps.signExtend16(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.ZERO_EXTEND_16:this.bitOps.zeroExtend16(t.firstRegisterIndex,t.secondRegisterIndex);break;case no.REVERSE_BYTES:this.bitRotationOps.reverseBytes(t.firstRegisterIndex,t.secondRegisterIndex)}}}class $o{branchOps;loadOps;constructor(e,t){this.branchOps=e,this.loadOps=t}dispatch(e,t){switch(e){case no.LOAD_IMM_JUMP:this.loadOps.loadImmediate(t.registerIndex,t.immediateDecoder),this.branchOps.jump(t.nextPc);break;case no.BRANCH_EQ_IMM:this.branchOps.branchEqImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_NE_IMM:this.branchOps.branchNeImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_LT_U_IMM:this.branchOps.branchLtUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_LE_U_IMM:this.branchOps.branchLeUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_GE_U_IMM:this.branchOps.branchGeUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_GT_U_IMM:this.branchOps.branchGtUnsignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_LT_S_IMM:this.branchOps.branchLtSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_LE_S_IMM:this.branchOps.branchLeSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_GE_S_IMM:this.branchOps.branchGeSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc);break;case no.BRANCH_GT_S_IMM:this.branchOps.branchGtSignedImmediate(t.registerIndex,t.immediateDecoder,t.nextPc)}}}class jo{branchOps;constructor(e){this.branchOps=e}dispatch(e,t){switch(e){case no.BRANCH_EQ:this.branchOps.branchEq(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case no.BRANCH_NE:this.branchOps.branchNe(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case no.BRANCH_LT_U:this.branchOps.branchLtUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case no.BRANCH_LT_S:this.branchOps.branchLtSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case no.BRANCH_GE_U:this.branchOps.branchGeUnsigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc);break;case no.BRANCH_GE_S:this.branchOps.branchGeSigned(t.firstRegisterIndex,t.secondRegisterIndex,t.nextPc)}}}class qo{branchOps;constructor(e){this.branchOps=e}dispatch(e,t){e===no.JUMP&&this.branchOps.jump(t.nextPc)}}class zo{loadOps;storeOps;dynamicJumpOps;constructor(e,t,r){this.loadOps=e,this.storeOps=t,this.dynamicJumpOps=r}dispatch(e,t){switch(e){case no.LOAD_IMM:this.loadOps.loadImmediate(t.registerIndex,t.immediateDecoder);break;case no.STORE_U8:this.storeOps.storeU8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.STORE_U16:this.storeOps.storeU16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.STORE_U32:this.storeOps.storeU32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.STORE_U64:this.storeOps.storeU64(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_U8:this.loadOps.loadU8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_U16:this.loadOps.loadU16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_U32:this.loadOps.loadU32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_U64:this.loadOps.loadU64(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_I8:this.loadOps.loadI8(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_I16:this.loadOps.loadI16(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.LOAD_I32:this.loadOps.loadI32(t.immediateDecoder.getUnsigned(),t.registerIndex);break;case no.JUMP_IND:{const e=this.dynamicJumpOps.caluclateJumpAddress(t.immediateDecoder,t.registerIndex);this.dynamicJumpOps.jumpInd(e);break}}}}class Wo{storeOps;constructor(e){this.storeOps=e}dispatch(e,t){switch(e){case no.STORE_IMM_IND_U8:this.storeOps.storeImmediateIndU8(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case no.STORE_IMM_IND_U16:this.storeOps.storeImmediateIndU16(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case no.STORE_IMM_IND_U32:this.storeOps.storeImmediateIndU32(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder);break;case no.STORE_IMM_IND_U64:this.storeOps.storeImmediateIndU64(t.registerIndex,t.firstImmediateDecoder,t.secondImmediateDecoder)}}}class Jo{storeOps;constructor(e){this.storeOps=e}dispatch(e,t){switch(e){case no.STORE_IMM_U8:this.storeOps.storeImmediateU8(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case no.STORE_IMM_U16:this.storeOps.storeImmediateU16(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case no.STORE_IMM_U32:this.storeOps.storeImmediateU32(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder);break;case no.STORE_IMM_U64:this.storeOps.storeImmediateU64(t.firstImmediateDecoder.getUnsigned(),t.secondImmediateDecoder)}}}class Yo{noArgsOps;constructor(e){this.noArgsOps=e}dispatch(e){switch(e){case no.TRAP:this.noArgsOps.trap();break;case no.FALLTHROUGH:this.noArgsOps.fallthrough()}}}class Zo{loadOps;dynamicJumpOps;constructor(e,t){this.loadOps=e,this.dynamicJumpOps=t}dispatch(e,t){switch(e){case no.LOAD_IMM_JUMP_IND:{const e=this.dynamicJumpOps.caluclateJumpAddress(t.secondImmediateDecoder,t.secondRegisterIndex);this.loadOps.loadImmediate(t.firstRegisterIndex,t.firstImmediateDecoder),this.dynamicJumpOps.jumpInd(e);break}}}}class Xo{hostCallOps;constructor(e){this.hostCallOps=e}dispatch(e,t){e===no.ECALLI&&this.hostCallOps.hostCall(t.immediateDecoder)}}class ea{loadOps;constructor(e){this.loadOps=e}dispatch(e,t){e===no.LOAD_IMM_64&&this.loadOps.loadImmediateU64(t.registerIndex,t.immediateDecoder)}}class ta{regs;constructor(e){this.regs=e}or(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|this.regs.getU64(t))}orImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|t.getU64())}and(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&this.regs.getU64(t))}andImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&t.getU64())}xor(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^this.regs.getU64(t))}xorImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^t.getU64())}andInv(e,t,r){this.regs.setU64(r,this.regs.getU64(e)&~this.regs.getU64(t))}orInv(e,t,r){this.regs.setU64(r,this.regs.getU64(e)|~this.regs.getU64(t))}xnor(e,t,r){this.regs.setU64(r,this.regs.getU64(e)^~this.regs.getU64(t))}countSetBits64(e,t){this.regs.setU32(t,function(e){let t=e;return t-=t>>1n&0x5555555555555555n,t=(0x3333333333333333n&t)+(t>>2n&0x3333333333333333n),t=t+(t>>4n)&0x0f0f0f0f0f0f0f0fn,t+=t>>8n,t+=t>>16n,t+=t>>32n,Number(0x7fn&t)}(this.regs.getU64(e)))}countSetBits32(e,t){this.regs.setU32(t,function(e){let t=e;return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,63&t}(this.regs.getLowerU32(e)))}leadingZeroBits64(e,t){this.regs.setU32(t,function(e){const t=Number(e>>32n),r=Number(0xffffffffn&e),s=Math.clz32(t);return s<32?s:s+Math.clz32(r)}(this.regs.getU64(e)))}leadingZeroBits32(e,t){this.regs.setU32(t,Math.clz32(this.regs.getLowerU32(e)))}trailingZeroBits64(e,t){this.regs.setU32(t,function(e){if(0n===e)return 64;let t=e,r=0;for(;0n==(1n&t);)r++,t>>=1n;return r}(this.regs.getU64(e)))}trailingZeroBits32(e,t){this.regs.setU32(t,function(e){if(0===e)return 32;let t=e,r=0;for(;!(1&t);)r++,t>>>=1;return r}(this.regs.getLowerU32(e)))}signExtend(e,t){const r=2**t-1,s=e&r;return(s&1<<t-1)>0?~BigInt(r)|BigInt(s):BigInt(s)}signExtend8(e,t){const r=this.signExtend(this.regs.getLowerU32(e),8);this.regs.setU64(t,r)}signExtend16(e,t){const r=this.signExtend(this.regs.getLowerU32(e),16);this.regs.setU64(t,r)}zeroExtend16(e,t){const r=0x000000000000ffffn&this.regs.getU64(e);this.regs.setU64(t,r)}}const ra=4294967295,sa=-(2**31),ia=32,na=64n;function oa(e,t){return e>ra-t?ra-(ra-e+(ra-t))-1:e+t}function aa(e,t){return(e+t)%2n**64n}function ca(e,t){return t>e?ra-t+e+1:e-t}function la(e,t){return(2n**64n+e-t)%2n**64n}function ha(e,t){if(e>65536||t>65536){const r=65535&e,s=65535&t,i=r*s;return 65535&i|(i>>16)+(65535&r*(t>>16))+(65535&(e>>16)*s)<<16}return e*t}function ua(e,t){return e*t%2n**64n}function da(e){return e>=1n<<63n?e-(1n<<64n):e}function ga(e,t){return(0xffffffffffffffffn&e)*(0xffffffffffffffffn&t)>>64n&0xffffffffffffffffn}function fa(e,t){return da(0xffffffffffffffffn&e*t>>64n)}function pa(e,t){y(t>=0,"Shift count must be non-negative");const r=e<0?"1":"0",s=e.toString(2).padStart(64,r);return(e<0n?(1n<<BigInt(s.length))+e:e)>>t}function ya(...e){if(0===e.length)throw new Error("No arguments provided");return e.reduce((e,t)=>t>e?t:e)}function ma(...e){if(0===e.length)throw new Error("No arguments provided");return e.reduce((e,t)=>t<e?t:e)}class ba{regs;constructor(e){this.regs=e}shiftLogicalLeftU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)<<this.regs.getLowerU32(t)%ia)}shiftLogicalLeftU64(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<<this.regs.getU64(t)%na)}shiftLogicalRightU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)>>>this.regs.getLowerU32(t)%ia)}shiftLogicalRightU64(e,t,r){this.regs.setU64(r,pa(this.regs.getU64(e),this.regs.getU64(t)%na))}shiftArithmeticRightU32(e,t,r){this.regs.setI32(r,this.regs.getLowerI32(e)>>this.regs.getLowerU32(t)%ia)}shiftArithmeticRightU64(e,t,r){this.regs.setI64(r,this.regs.getI64(e)>>this.regs.getU64(t)%na)}shiftLogicalLeftImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)<<t.getU32()%ia)}shiftLogicalLeftImmediateU64(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<<t.getU64()%na)}shiftLogicalRightImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerU32(e)>>>t.getU32()%ia)}shiftLogicalRightImmediateU64(e,t,r){this.regs.setU64(r,pa(this.regs.getU64(e),t.getU64()%na))}shiftArithmeticRightImmediateU32(e,t,r){this.regs.setU32(r,this.regs.getLowerI32(e)>>t.getU32()%ia)}shiftArithmeticRightImmediateU64(e,t,r){this.regs.setU64(r,this.regs.getI64(e)>>t.getU64()%na)}shiftLogicalLeftImmediateAlternativeU32(e,t,r){this.regs.setU32(r,t.getU32()<<this.regs.getLowerU32(e)%ia)}shiftLogicalLeftImmediateAlternativeU64(e,t,r){this.regs.setU64(r,t.getU64()<<this.regs.getU64(e)%na)}shiftLogicalRightImmediateAlternativeU32(e,t,r){this.regs.setU32(r,t.getU32()>>>this.regs.getLowerU32(e)%ia)}shiftLogicalRightImmediateAlternativeU64(e,t,r){this.regs.setU64(r,pa(t.getU64(),this.regs.getU64(e)%na))}shiftArithmeticRightImmediateAlternativeU32(e,t,r){this.regs.setI32(r,t.getU32()>>this.regs.getLowerU32(e)%ia)}shiftArithmeticRightImmediateAlternativeU64(e,t,r){this.regs.setI64(r,t.getI64()>>this.regs.getU64(e)%na)}}class Aa{regs;constructor(e){this.regs=e}addU32(e,t,r){this.regs.setU64(r,eo(oa(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}addU64(e,t,r){this.regs.setU64(r,aa(this.regs.getU64(e),this.regs.getU64(t)))}addImmediateU32(e,t,r){this.regs.setU64(r,eo(oa(this.regs.getLowerU32(e),t.getU32())))}addImmediateU64(e,t,r){this.regs.setU64(r,aa(this.regs.getU64(e),t.getU64()))}mulU32(e,t,r){this.regs.setU64(r,eo(ha(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}mulU64(e,t,r){this.regs.setU64(r,ua(this.regs.getU64(e),this.regs.getU64(t)))}mulUpperUU(e,t,r){this.regs.setU64(r,ga(this.regs.getU64(e),this.regs.getU64(t)))}mulUpperSS(e,t,r){this.regs.setI64(r,fa(this.regs.getI64(e),this.regs.getI64(t)))}mulUpperSU(e,t,r){this.regs.setI64(r,da(0xffffffffffffffffn&this.regs.getI64(e)*(0xffffffffffffffffn&this.regs.getU64(t))>>64n))}mulImmediateU32(e,t,r){this.regs.setU64(r,eo(ha(this.regs.getLowerU32(e),t.getU32())))}mulImmediateU64(e,t,r){this.regs.setU64(r,ua(this.regs.getU64(e),t.getU64()))}mulUpperSSImmediate(e,t,r){this.regs.setI64(r,fa(this.regs.getI64(e),t.getI64()))}mulUpperUUImmediate(e,t,r){this.regs.setU64(r,ga(this.regs.getU64(e),t.getU64()))}subU32(e,t,r){this.regs.setU64(r,eo(ca(this.regs.getLowerU32(e),this.regs.getLowerU32(t))))}subU64(e,t,r){this.regs.setU64(r,la(this.regs.getU64(e),this.regs.getU64(t)))}negAddImmediateU32(e,t,r){this.regs.setU64(r,eo(ca(t.getU32(),this.regs.getLowerU32(e))))}negAddImmediateU64(e,t,r){this.regs.setU64(r,la(t.getU64(),this.regs.getU64(e)))}divSignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,2n**64n-1n):-1===this.regs.getLowerI32(t)&&this.regs.getLowerI32(e)===sa?this.regs.setU64(r,eo(this.regs.getLowerU32(e))):this.regs.setI64(r,eo(~~(this.regs.getLowerI32(e)/this.regs.getLowerI32(t))))}divSignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,2n**64n-1n):-1n===this.regs.getI64(t)&&this.regs.getI64(e)===-(2n**63n)?this.regs.setU64(r,this.regs.getU64(e)):this.regs.setI64(r,~~(this.regs.getI64(e)/this.regs.getI64(t)))}divUnsignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,2n**64n-1n):this.regs.setU64(r,eo(~~(this.regs.getLowerU32(e)/this.regs.getLowerU32(t))))}divUnsignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,2n**64n-1n):this.regs.setU64(r,~~(this.regs.getU64(e)/this.regs.getU64(t)))}remSignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,BigInt(this.regs.getLowerI32(e))):-1===this.regs.getLowerI32(t)&&this.regs.getLowerI32(e)===sa?this.regs.setU64(r,0n):this.regs.setI64(r,eo(this.regs.getLowerI32(e)%this.regs.getLowerI32(t)))}remSignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,this.regs.getU64(e)):-1n===this.regs.getI64(t)&&this.regs.getI64(e)===-(2n**63n)?this.regs.setU64(r,0n):this.regs.setI64(r,this.regs.getI64(e)%this.regs.getI64(t))}remUnsignedU32(e,t,r){0===this.regs.getLowerU32(t)?this.regs.setU64(r,eo(this.regs.getLowerU32(e))):this.regs.setU64(r,eo(this.regs.getLowerU32(e)%this.regs.getLowerU32(t)))}remUnsignedU64(e,t,r){0n===this.regs.getU64(t)?this.regs.setU64(r,this.regs.getU64(e)):this.regs.setU64(r,this.regs.getU64(e)%this.regs.getU64(t))}max(e,t,r){this.regs.setI64(r,ya(this.regs.getI64(e),this.regs.getI64(t)))}maxU(e,t,r){this.regs.setU64(r,ya(this.regs.getU64(e),this.regs.getU64(t)))}min(e,t,r){this.regs.setI64(r,ma(this.regs.getI64(e),this.regs.getI64(t)))}minU(e,t,r){this.regs.setU64(r,ma(this.regs.getU64(e),this.regs.getU64(t)))}}class Ia{regs;constructor(e){this.regs=e}setLessThanSignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getI64(e)<t.getI64()?1n:0n)}setLessThanUnsignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<t.getU64()?1n:0n)}setLessThanSigned(e,t,r){this.regs.setU64(r,this.regs.getI64(e)<this.regs.getI64(t)?1n:0n)}setLessThanUnsigned(e,t,r){this.regs.setU64(r,this.regs.getU64(e)<this.regs.getU64(t)?1n:0n)}setGreaterThanSignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getI64(e)>t.getI64()?1n:0n)}setGreaterThanUnsignedImmediate(e,t,r){this.regs.setU64(r,this.regs.getU64(e)>t.getU64()?1n:0n)}}class va{regs;constructor(e){this.regs=e}cmovIfZeroImmediate(e,t,r){0n===this.regs.getU64(e)&&this.regs.setU64(r,t.getU64())}cmovIfNotZeroImmediate(e,t,r){0n!==this.regs.getU64(e)&&this.regs.setU64(r,t.getU64())}cmovIfZero(e,t,r){0n===this.regs.getU64(t)&&this.regs.setU64(r,this.regs.getU64(e))}cmovIfNotZero(e,t,r){0n!==this.regs.getU64(t)&&this.regs.setU64(r,this.regs.getU64(e))}moveRegister(e,t){this.regs.setU64(t,this.regs.getU64(e))}}var wa,Sa;(Sa=wa||(wa={}))[Sa.HALT=0]="HALT",Sa[Sa.PANIC=1]="PANIC",Sa[Sa.FAULT_ACCESS=2]="FAULT_ACCESS",Sa[Sa.FAULT=3]="FAULT",Sa[Sa.HOST=4]="HOST";class Ea{regs;instructionResult;basicBlocks;constructor(e,t,r){this.regs=e,this.instructionResult=t,this.basicBlocks=r}setBasicBlocks(e){this.basicBlocks=e}branch(e,t){t&&(this.basicBlocks.isBeginningOfBasicBlock(e)?this.instructionResult.nextPc=e:this.instructionResult.status=wa.PANIC)}jump(e){this.branch(e,!0)}branchEqImmediate(e,t,r){this.branch(r,this.regs.getU64(e)===t.getU64())}branchEq(e,t,r){this.branch(r,this.regs.getU64(e)===this.regs.getU64(t))}branchNeImmediate(e,t,r){this.branch(r,this.regs.getU64(e)!==t.getU64())}branchNe(e,t,r){this.branch(r,this.regs.getU64(e)!==this.regs.getU64(t))}branchLtUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)<t.getU64())}branchLtUnsigned(e,t,r){this.branch(r,this.regs.getU64(e)<this.regs.getU64(t))}branchLeUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)<=t.getU64())}branchGtUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)>t.getU64())}branchGeUnsignedImmediate(e,t,r){this.branch(r,this.regs.getU64(e)>=t.getU64())}branchGeUnsigned(e,t,r){this.branch(r,this.regs.getU64(e)>=this.regs.getU64(t))}branchLtSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)<t.getI64())}branchLtSigned(e,t,r){this.branch(r,this.regs.getI64(e)<this.regs.getI64(t))}branchLeSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)<=t.getI64())}branchGtSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)>t.getI64())}branchGeSignedImmediate(e,t,r){this.branch(r,this.regs.getI64(e)>=t.getI64())}branchGeSigned(e,t,r){this.branch(r,this.regs.getI64(e)>=this.regs.getI64(t))}}class Ca{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}loadImmediate(e,t){this.regs.setU64(e,t.getU64())}loadImmediateU64(e,t){this.regs.setU64(e,t.getValue())}loadNumber(e,t,r){const s=this.regs.getBytesAsLittleEndian(t,8),i=this.memory.loadInto(s.subarray(0,r),Gn(e));i.isError?i.error.isAccessFault?this.instructionResult.status=wa.FAULT_ACCESS:(this.instructionResult.status=wa.FAULT,this.instructionResult.exitParam=e):s.fill(0,r)}loadSignedNumber(e,t,r){const s=this.regs.getBytesAsLittleEndian(t,8),i=this.memory.loadInto(s.subarray(0,r),Gn(e));i.isError?i.error.isAccessFault?this.instructionResult.status=wa.FAULT_ACCESS:(this.instructionResult.status=wa.FAULT,this.instructionResult.exitParam=e):(128&s[r-1])>0?s.fill(255,r):s.fill(0,r)}loadU8(e,t){this.loadNumber(e,t,1)}loadU16(e,t){this.loadNumber(e,t,2)}loadU32(e,t){this.loadNumber(e,t,4)}loadU64(e,t){this.loadNumber(e,t,8)}loadI8(e,t){this.loadSignedNumber(e,t,1)}loadI16(e,t){this.loadSignedNumber(e,t,2)}loadI32(e,t){this.loadSignedNumber(e,t,4)}loadIndU8(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,1)}loadIndU16(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,2)}loadIndU32(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,4)}loadIndU64(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadNumber(s,e,8)}loadIndI8(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,1)}loadIndI16(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,2)}loadIndI32(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getU32());this.loadSignedNumber(s,e,4)}}class ka{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}storeU8(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,1))}storeU16(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,2))}storeU32(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,4))}storeU64(e,t){this.store(e,this.regs.getBytesAsLittleEndian(t,8))}storeIndU8(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,1))}storeIndU16(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,2))}storeIndU32(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,4))}storeIndU64(e,t,r){const s=oa(this.regs.getLowerU32(t),r.getUnsigned());this.store(s,this.regs.getBytesAsLittleEndian(e,8))}storeImmediateU8(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,1))}storeImmediateU16(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,2))}storeImmediateU32(e,t){this.store(e,t.getBytesAsLittleEndian().subarray(0,4))}storeImmediateU64(e,t){this.store(e,t.getExtendedBytesAsLittleEndian())}storeImmediateIndU8(e,t,r){const s=oa(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,1))}storeImmediateIndU16(e,t,r){const s=oa(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,2))}storeImmediateIndU32(e,t,r){const s=oa(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getBytesAsLittleEndian().subarray(0,4))}storeImmediateIndU64(e,t,r){const s=oa(this.regs.getLowerU32(e),t.getUnsigned());this.store(s,r.getExtendedBytesAsLittleEndian())}store(e,t){const r=this.memory.storeFrom(Gn(e),t);r.isOk||(r.error.isAccessFault?this.instructionResult.status=wa.FAULT_ACCESS:(this.instructionResult.status=wa.FAULT,this.instructionResult.exitParam=Eo(r.error.address)))}}class xa{instructionResult;constructor(e){this.instructionResult=e}trap(){this.instructionResult.status=wa.PANIC}fallthrough(){}}class Ba{regs;jumpTable;instructionResult;basicBlocks;constructor(e,t,r,s){this.regs=e,this.jumpTable=t,this.instructionResult=r,this.basicBlocks=s}djump(e){if(4294901760===e)return void(this.instructionResult.status=wa.HALT);if(0===e||e%2!=0)return void(this.instructionResult.status=wa.PANIC);const t=e/2-1;if(!this.jumpTable.hasIndex(t))return void(this.instructionResult.status=wa.PANIC);const r=this.jumpTable.getDestination(t);this.basicBlocks.isBeginningOfBasicBlock(r)?this.instructionResult.nextPc=r:this.instructionResult.status=wa.PANIC}caluclateJumpAddress(e,t){return oa(this.regs.getLowerU32(t),e.getU32())}jumpInd(e){this.djump(e)}}class _a{instructionResult;constructor(e){this.instructionResult=e}hostCall(e){this.instructionResult.status=wa.HOST,this.instructionResult.exitParam=e.getUnsigned()}}class Ra{regs;memory;instructionResult;constructor(e,t,r){this.regs=e,this.memory=t,this.instructionResult=r}sbrk(e,t){try{this.regs.setU32(t,this.memory.sbrk(this.regs.getLowerU32(e)))}catch{this.instructionResult.status=wa.FAULT}}}class Oa{regs;constructor(e){this.regs=e}reverseBytes(e,t){const r=this.regs.getU64(e);let s=0n;for(let e=0;e<8;e++)s=s<<8n|r>>BigInt(8*e)&0xffn;this.regs.setU64(t,s)}rotate32Left(e,t){const r=t%32,s=2**32-1;return(e<<r&s|e>>>32-r)>>>0&s}rotate64Left(e,t){const r=t%64,s=(1n<<64n)-1n;return(e<<BigInt(r)&s|pa(e,BigInt(64-r)))&s}rotate32Right(e,t){const r=t%32,s=2**32-1;return(e>>>r|e<<32-r&s)&s}rotate64Right(e,t){const r=t%64,s=(1n<<64n)-1n;return(pa(e,BigInt(r))|e<<BigInt(64-r)&s)&s}rotR64Imm(e,t,r){const s=t.getU32(),i=this.regs.getU64(e);this.regs.setU64(r,this.rotate64Right(i,s))}rotR64ImmAlt(e,t,r){const s=this.regs.getLowerU32(e),i=t.getU64();this.regs.setU64(r,this.rotate64Right(i,s))}rotR32Imm(e,t,r){const s=t.getU32(),i=this.regs.getLowerU32(e);this.regs.setU32(r,this.rotate32Right(i,s))}rotR32ImmAlt(e,t,r){const s=this.regs.getLowerU32(e),i=t.getU32();this.regs.setU32(r,this.rotate32Right(i,s))}rotL64(e,t,r){const s=this.regs.getU64(e),i=this.regs.getLowerU32(t);this.regs.setU64(r,this.rotate64Left(s,i))}rotL32(e,t,r){const s=this.regs.getLowerU32(e),i=this.regs.getLowerU32(t);this.regs.setU32(r,this.rotate32Left(s,i))}rotR64(e,t,r){const s=this.regs.getU64(e),i=this.regs.getLowerU32(t);this.regs.setU64(r,this.rotate64Right(s,i))}rotR32(e,t,r){const s=this.regs.getLowerU32(e),i=this.regs.getLowerU32(t);this.regs.setU32(r,this.rotate32Right(s,i))}}class Ua{indices;constructor(e,t){y(0===e||t.length%e===0,`Length of jump table (${t.length}) should be a multiple of item lenght (${e})!`);const r=0===e?0:t.length/e;this.indices=new Uint32Array(r);for(let s=0;s<r;s++)this.indices[s]=this.decodeNext(t.subarray(s*e,(s+1)*e))}decodeNext(e){const t=e.length;let r=0;for(let s=0;s<t;s++){if((4278190080&r)>0)return 2**32-1;r<<=8,r|=e[t-s-1]}return r}hasIndex(e){return e<this.indices.length&&e>=0}getDestination(e){return this.indices[e]}static empty(){return new Ua(0,new Uint8Array)}copyFrom(e){this.indices=e.indices}}const Ta=Gs.new(void 0,"pvm-interpreter");var Na;!function(e){e[e.InvalidProgramError=0]="InvalidProgramError"}(Na||(Na={}));class Da{code;mask;jumpTable;constructor(e){const{code:t,mask:r,jumpTable:s,jumpTableItemLength:i}=this.decodeProgram(e);this.code=new Uint8Array(t),this.mask=new Yn(r),this.jumpTable=new Ua(i,s)}decodeProgram(e){const t=ae.fromBlob(e),r=t.varU32(),s=t.u8(),i=t.varU32(),n=r*s,o=t.bytes(n).raw,a=t.bytes(i).raw,c=t.bitVecFixLen(i);return t.finish(),{mask:c,code:a,jumpTableItemLength:s,jumpTable:o}}getMask(){return this.mask}getCode(){return this.code}getJumpTable(){return this.jumpTable}static deblob(e){try{return _.ok(new Da(e))}catch(e){return Ta.error(`Invalid program: ${e}`),_.error(Na.InvalidProgramError)}}}class Ma{useSbrkGas;ignoreInstructionGas;registers=new Xn;code=new Uint8Array;mask=Yn.empty();pc=0;gas=uo(ho(0));initialGas=uo(ho(0));argsDecoder;threeRegsDispatcher;twoRegsOneImmDispatcher;twoRegsDispatcher;oneRegOneImmOneOffsetDispatcher;twoRegsOneOffsetDispatcher;oneOffsetDispatcher;oneRegOneImmDispatcher;instructionResult=new bo;memory=new Ko;twoImmsDispatcher;oneRegTwoImmsDispatcher;noArgsDispatcher;twoRegsTwoImmsDispatcher;oneImmDispatcher;oneRegOneExtImmDispatcher;status=jn.OK;argsDecodingResults=(()=>{const e=new Array(io);return e[Jn.NO_ARGUMENTS]={type:Jn.NO_ARGUMENTS,noOfBytesToSkip:1},e[Jn.ONE_IMMEDIATE]={type:Jn.ONE_IMMEDIATE,noOfBytesToSkip:1,immediateDecoder:new Zn},e[Jn.TWO_REGISTERS]={type:Jn.TWO_REGISTERS,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0},e[Jn.THREE_REGISTERS]={type:Jn.THREE_REGISTERS,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,thirdRegisterIndex:0},e[Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET]={type:Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET,noOfBytesToSkip:1,registerIndex:0,immediateDecoder:new Zn,nextPc:0},e[Jn.TWO_REGISTERS_ONE_OFFSET]={type:Jn.TWO_REGISTERS_ONE_OFFSET,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,nextPc:0},e[Jn.TWO_REGISTERS_ONE_IMMEDIATE]={type:Jn.TWO_REGISTERS_ONE_IMMEDIATE,noOfBytesToSkip:1,firstRegisterIndex:0,secondRegisterIndex:0,immediateDecoder:new Zn},e[Jn.ONE_REGISTER_ONE_IMMEDIATE]={type:Jn.ONE_REGISTER_ONE_IMMEDIATE,noOfBytesToSkip:1,registerIndex:0,immediateDecoder:new Zn},e[Jn.ONE_REGISTER_TWO_IMMEDIATES]={type:Jn.ONE_REGISTER_TWO_IMMEDIATES,noOfBytesToSkip:1,registerIndex:0,firstImmediateDecoder:new Zn,secondImmediateDecoder:new Zn},e[Jn.ONE_OFFSET]={type:Jn.ONE_OFFSET,noOfBytesToSkip:1,nextPc:0},e[Jn.TWO_IMMEDIATES]={type:Jn.TWO_IMMEDIATES,noOfBytesToSkip:1,firstImmediateDecoder:new Zn,secondImmediateDecoder:new Zn},e[Jn.TWO_REGISTERS_TWO_IMMEDIATES]={type:Jn.TWO_REGISTERS_TWO_IMMEDIATES,noOfBytesToSkip:1,firstImmediateDecoder:new Zn,secondImmediateDecoder:new Zn,firstRegisterIndex:0,secondRegisterIndex:0},e[Jn.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE]={type:Jn.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE,noOfBytesToSkip:9,registerIndex:0,immediateDecoder:new so},e})();basicBlocks;jumpTable=Ua.empty();constructor({useSbrkGas:e=!1,ignoreInstructionGas:t=!1}={}){this.useSbrkGas=e,this.ignoreInstructionGas=t,this.argsDecoder=new ro,this.basicBlocks=new yo;const r=new Aa(this.registers),s=new ba(this.registers),i=new ta(this.registers),n=new Ia(this.registers),o=new va(this.registers),a=new Ea(this.registers,this.instructionResult,this.basicBlocks),c=new Ca(this.registers,this.memory,this.instructionResult),l=new ka(this.registers,this.memory,this.instructionResult),h=new xa(this.instructionResult),u=new Ba(this.registers,this.jumpTable,this.instructionResult,this.basicBlocks),d=new _a(this.instructionResult),g=new Ra(this.registers,this.memory,this.instructionResult),f=new Oa(this.registers);this.threeRegsDispatcher=new Qo(r,s,i,n,o,f),this.twoRegsOneImmDispatcher=new Fo(r,s,i,n,o,l,c,f),this.twoRegsDispatcher=new Go(o,g,i,f),this.oneRegOneImmOneOffsetDispatcher=new $o(a,c),this.twoRegsOneOffsetDispatcher=new jo(a),this.oneOffsetDispatcher=new qo(a),this.oneRegOneImmDispatcher=new zo(c,l,u),this.twoImmsDispatcher=new Jo(l),this.oneRegTwoImmsDispatcher=new Wo(l),this.noArgsDispatcher=new Yo(h),this.twoRegsTwoImmsDispatcher=new Zo(c,u),this.oneImmDispatcher=new Xo(d),this.oneRegOneExtImmDispatcher=new ea(c)}reset(e,t,r,s,i){const n=new Da(e);this.code=n.getCode(),this.mask=n.getMask(),this.jumpTable.copyFrom(n.getJumpTable()),this.pc=t,this.gas=uo(r),this.initialGas=uo(r),this.status=jn.OK,this.argsDecoder.reset(this.code,this.mask),this.basicBlocks.reset(this.code,this.mask),this.instructionResult.reset(),void 0!==s?this.registers.copyFrom(s):this.registers.reset(),void 0!==i?this.memory.copyFrom(i):this.memory.reset()}printProgram(){const e=(t=this.code,r=this.mask,t.reduce((e,t,s)=>(r.isInstruction(s)?e.push([no[t]]):e[e.length-1].push(t),e),[]));var t,r;return console.table(e),e}runProgram(){for(;this.nextStep()===jn.OK;);}nextStep(){this.status===jn.HOST&&(this.status=jn.OK,this.pc=this.instructionResult.nextPc,this.instructionResult.reset());const e=this.code[this.pc]??no.TRAP,t=void 0!==no[e],r=mo[e]??mo[no.TRAP];if(!this.ignoreInstructionGas&&this.gas.sub(r))return this.status=jn.OOG,this.status;const s=ao[e]??Jn.NO_ARGUMENTS,i=this.argsDecodingResults[s];if(this.argsDecoder.fillArgs(this.pc,i),t)switch(this.instructionResult.nextPc=this.pc+i.noOfBytesToSkip,i.type){case Jn.NO_ARGUMENTS:this.noArgsDispatcher.dispatch(e);break;case Jn.ONE_IMMEDIATE:this.oneImmDispatcher.dispatch(e,i);break;case Jn.ONE_REGISTER_ONE_IMMEDIATE_ONE_OFFSET:this.oneRegOneImmOneOffsetDispatcher.dispatch(e,i);break;case Jn.TWO_REGISTERS:if(this.useSbrkGas&&e===no.SBRK){const e=e=>wo(e)/Hn*16;if(this.gas.sub(ho(e(this.registers.getLowerU32(i.firstRegisterIndex)))))return this.status=jn.OOG,this.status}this.twoRegsDispatcher.dispatch(e,i);break;case Jn.THREE_REGISTERS:this.threeRegsDispatcher.dispatch(e,i);break;case Jn.TWO_REGISTERS_ONE_IMMEDIATE:this.twoRegsOneImmDispatcher.dispatch(e,i);break;case Jn.TWO_REGISTERS_ONE_OFFSET:this.twoRegsOneOffsetDispatcher.dispatch(e,i);break;case Jn.ONE_OFFSET:this.oneOffsetDispatcher.dispatch(e,i);break;case Jn.ONE_REGISTER_ONE_IMMEDIATE:this.oneRegOneImmDispatcher.dispatch(e,i);break;case Jn.TWO_IMMEDIATES:this.twoImmsDispatcher.dispatch(e,i);break;case Jn.ONE_REGISTER_TWO_IMMEDIATES:this.oneRegTwoImmsDispatcher.dispatch(e,i);break;case Jn.TWO_REGISTERS_TWO_IMMEDIATES:this.twoRegsTwoImmsDispatcher.dispatch(e,i);break;case Jn.ONE_REGISTER_ONE_EXTENDED_WIDTH_IMMEDIATE:this.oneRegOneExtImmDispatcher.dispatch(e,i)}else this.instructionResult.status=wa.PANIC;if(null!==this.instructionResult.status){switch(this.instructionResult.status!==wa.FAULT&&this.instructionResult.status!==wa.FAULT_ACCESS||this.gas.sub(mo[no.TRAP]),this.instructionResult.status){case wa.FAULT:this.status=jn.FAULT;break;case wa.HALT:this.status=jn.HALT;break;case wa.PANIC:case wa.FAULT_ACCESS:this.status=jn.PANIC;break;case wa.HOST:this.status=jn.HOST}return this.status}return this.pc=this.instructionResult.nextPc,this.status}getRegisters(){return this.registers}getPC(){return this.pc}setNextPC(e){this.pc=e}getGas(){return this.gas.get()}getGasConsumed(){const e=lo(this.initialGas.get())-lo(this.gas.get());return e<0?this.initialGas.get():lo(e)}getGasCounter(){return this.gas}getStatus(){return this.status}getExitParam(){const e=this.instructionResult.exitParam;return null!==e?X(e):e}getMemory(){return this.memory}getMemoryPage(e){return this.memory.getPageDump(Io(e))}}class Pa{memory;constructor(e){this.memory=e}storeFrom(e,t){return 0===t.length?_.ok(C):e+te(t.length)>Ln?_.error(new xo):this.memory.storeFrom(Gn(Number(e)),t)}loadInto(e,t){return 0===e.length?_.ok(C):t+te(e.length)>Ln?_.error(new xo):this.memory.loadInto(e,Gn(Number(t)))}getMemory(){return this.memory}}class La{registers;constructor(e){this.registers=e}get(e){return te(this.registers.getU64(e))}set(e,t){this.registers.setU64(e,t)}}class Ha{consumedGas;status;memorySlice;constructor(e,t,r){this.consumedGas=e,this.status=t,this.memorySlice=r,y(null===t&&null!==r||null!==t&&null===r,"`status` and `memorySlice` must not both be null or both be non-null — exactly one must be provided")}static fromStatus(e,t){return new Ha(e,t,null)}static fromMemorySlice(e,t){return new Ha(e,null,t)}hasMemorySlice(){return this.memorySlice instanceof Uint8Array&&null===this.status}hasStatus(){return!this.hasMemorySlice()}}class Ka{pvmInstanceManager;hostCalls;constructor(e,t){this.pvmInstanceManager=e,this.hostCalls=t}getReturnValue(e,t){const r=t.getGasConsumed();if(e===jn.OOG)return Ha.fromStatus(r,e);if(e===jn.HALT){const e=t.getMemory(),s=t.getRegisters(),i=s.getLowerU32(7),n=s.getLowerU32(8),o=new Uint8Array(n),a=Gn(i);return e.loadInto(o,a).isError?Ha.fromMemorySlice(r,new Uint8Array):Ha.fromMemorySlice(r,o)}return Ha.fromStatus(r,jn.PANIC)}async execute(e){for(e.runProgram();;){let t=e.getStatus();if(t!==jn.HOST)return this.getReturnValue(t,e);y(null!==e.getExitParam(),"We know that the exit param is not null, because the status is `Status.HOST`");const r=e.getExitParam()??-1,s=e.getGasCounter(),i=new La(e.getRegisters()),n=new Pa(e.getMemory()),o=this.hostCalls.get(zn(r)),a="number"==typeof o.gasCost?o.gasCost:o.gasCost(i);if(s.sub(a))return Ha.fromStatus(e.getGasConsumed(),jn.OOG);if(await o.execute(s,i,n)===Wn.Halt)return t=jn.HALT,this.getReturnValue(t,e);e.runProgram(),t=e.getStatus()}}async runProgram(e,t,r,s,i){const n=await this.pvmInstanceManager.getInstance();n.reset(e,t,r,s,i);try{return await this.execute(n)}finally{this.pvmInstanceManager.releaseInstance(n)}}}class Va{instances=[];waitingQueue=[];constructor(e){for(let t=0;t<e;t++)this.instances.push(new Ma({useSbrkGas:!1,ignoreInstructionGas:!0}))}async getInstance(){const e=this.instances.pop();return void 0!==e?Promise.resolve(e):new Promise(e=>{this.waitingQueue.push(e)})}releaseInstance(e){const t=this.waitingQueue.shift();if(void 0!==t)return t(e);this.instances.push(e)}}const Qa={NONE:te(0xffffffffffffffffn),WHAT:te(0xfffffffffffffffen),OOB:te(0xfffffffffffffffdn),WHO:te(0xfffffffffffffffcn),FULL:te(0xfffffffffffffffbn),CORE:te(0xfffffffffffffffan),CASH:te(0xfffffffffffffff9n),LOW:te(0xfffffffffffffff8n),HUH:te(0xfffffffffffffff7n),OK:te(0n)},Fa=X(2**32-1),Ga=te(Fa),$a=pr(2**32-1);function ja(e,t,r){const s=t.get(e);return s===2n**64n-1n?r:qa(s)}function qa(e){const{lower:t,upper:r}=(e=>{const t=e>>32n;return{lower:Number(e&2n**32n-1n),upper:Number(t)}})(e);return 0===r?pr(t):null}function za(e,t){y(t.length>=4,"Not enough space in the destination."),t.set(ie(e))}function Wa(e){return e>Ga?Fa:X(Number(e))}const Ja=Gs.new(void 0,"host-calls");class Ya{hostCalls=new Map;missing=new Za;constructor(...e){for(const t of e)y(void 0===this.hostCalls.get(t.index),`Overwriting host call handler at index ${t.index}`),this.hostCalls.set(t.index,t)}get(e){const t=this.hostCalls.get(e)??this.missing;return Ja.trace(`[${t.currentServiceId}] PVM invoking ${e} (${t.constructor.name}:${t.index})`),t}}class Za{index=zn(2**32-1);gasCost=co(10);currentServiceId=$a;execute(e,t,r){return t.set(7,Qa.WHAT),Promise.resolve(void 0)}}const Xa=4096,ec=65536,tc=2**24,rc=4278059008,sc=4278124544;function ic(e){return Xa*Math.ceil(e/Xa)}class nc extends w{start;end;data;static from({start:e,end:t,data:r}){return new nc(e,t,r)}constructor(e,t,r){super(),this.start=e,this.end=t,this.data=r}}class oc extends w{readable;writeable;sbrkIndex;heapEnd;constructor(e,t,r,s){super(),this.readable=e,this.writeable=t,this.sbrkIndex=r,this.heapEnd=s}}class ac extends w{code;memory;registers;constructor(e,t,r){super(),this.code=e,this.memory=t,this.registers=r}}function cc(e,t,r=null){return new nc(e,t,r)}class lc{code;registers;memory;metadata;static fromSpi(e,t,r){const{code:s,metadata:i}=r?hc(e):{code:e},{code:n,memory:o,registers:a}=function(e,t){const r=ae.fromBlob(e),s=r.u24(),i=r.u24(),n=m(t.length,t.length<=tc,"Incorrect arguments length"),o=m(s,s<=tc,"Incorrect readonly segment length"),a=m(i,i<=tc,"Incorrect heap segment length"),c=r.u16(),l=r.u24(),h=r.bytes(o).raw,u=r.bytes(a).raw,d=r.u32(),g=r.bytes(d).raw;r.finish();const f=ec+ic(o),p=131072+(y=o,ec*Math.ceil(y/ec));var y;const b=p+ic(a),A=p+ic(a)+c*Xa,I=rc-ic(l),v=rc,w=sc,S=w+ic(n),E=S+ic(n);function C(e){return!1!==e}const k=[o>0&&cc(65536,f,h),n>0&&cc(w,S,t),S<E&&cc(S,E)].filter(C),x=[a>0&&cc(p,b,u),b<A&&cc(b,A),I<v&&cc(I,v)].filter(C);return new ac(g,new oc(k,x,A,I),function(e){const t=new BigUint64Array(13);return t[0]=BigInt(4294901760),t[1]=BigInt(rc),t[7]=BigInt(sc),t[8]=BigInt(e),t}(t.length))}(s,t),c=new Xn;c.copyFrom(a);const l=new Vo;for(const{start:e,end:t,data:r}of o.readable){const s=Gn(e),i=Gn(t);l.setReadablePages(s,i,r??new Uint8Array)}for(const{start:e,end:t,data:r}of o.writeable){const s=Gn(e),i=Gn(t);l.setWriteablePages(s,i,r??new Uint8Array)}const h=Gn(o.sbrkIndex),u=$n(o.heapEnd),d=l.finalize(h,u);return new lc(n,c,d,i)}static fromGeneric(e,t){const{code:r,metadata:s}=t?hc(e):{code:e},i=new Xn,n=new Ko;return new lc(r,i,n,s)}constructor(e,t,r,s=new Uint8Array){this.code=e,this.registers=t,this.memory=r,this.metadata=s}}function hc(e){const t=ae.fromBlob(e);return{metadata:t.bytesBlob().raw,code:t.remainingBytes().raw}}var uc,dc,gc;!function(e){e[e.NoLookup=0]="NoLookup",e[e.NoState=1]="NoState",e[e.NoServiceCode=2]="NoServiceCode",e[e.ServiceCodeMismatch=3]="ServiceCodeMismatch"}(uc||(uc={}));class fc{context;keccakHasher;allocator;constructor(e,t,r){this.context=e,this.keccakHasher=t,this.allocator=r}hashConcat(e,t){return ot(this.keccakHasher,[e,t])}hashConcatPrepend(e,t,r){return ot(this.keccakHasher,[e,t,r])}header(e){return new Oe(He(e.encoded(),this.allocator).asOpaque(),e)}extrinsic(e){const t=e.guarantees.view().map(e=>e.view()).map(e=>{const t=He(e.report.encoded(),this.allocator).asOpaque();return O.blobFromParts([t.raw,e.slot.encoded().raw,e.credentials.encoded().raw])}),r=ge.encodeObject(we.sequenceVarLen(Mi),t,this.context),s=He(e.tickets.encoded(),this.allocator).asOpaque(),i=He(e.preimages.encoded(),this.allocator).asOpaque(),n=He(r,this.allocator).asOpaque(),o=He(e.assurances.encoded(),this.allocator).asOpaque(),a=He(e.disputes.encoded(),this.allocator).asOpaque(),c=O.blobFromParts([s.raw,i.raw,n.raw,o.raw,a.raw]);return new Ue(He(c,this.allocator).asOpaque(),e,c)}workPackage(e){return this.encode(Rr.Codec,e)}encode(e,t){const r=ge.encodeObject(e,t,this.context);return new Ue(He(r,this.allocator).asOpaque(),t,r)}}!function(e){e.PreimageUnneeded="preimage_unneeded",e.PreimagesNotSortedUnique="preimages_not_sorted_unique",e.AccountNotFound="account_not_found"}(dc||(dc={}));class pc{state;constructor(e){this.state=e}integrate(e){for(let t=1;t<e.preimages.length;t++){const r=e.preimages[t-1],s=e.preimages[t];if(!(r.requester<s.requester)&&(r.requester>s.requester||s.blob.compare(r.blob).isLessOrEqual()))return _.error(dc.PreimagesNotSortedUnique)}const{preimages:t,slot:r}=e,s=[];for(const e of t){const{requester:t,blob:i}=e,n=He(i).asOpaque(),o=this.state.getService(t);if(null===o)return _.error(dc.AccountNotFound);const a=o.hasPreimage(n),c=o.getLookupHistory(n,X(i.length));if(a||null===c||!gi.isRequested(c))return _.error(dc.PreimageUnneeded);s.push(mi.provide({serviceId:t,preimage:hi.create({hash:n,blob:i}),slot:r}))}return _.ok({preimages:s})}}class yc{spec;importer;toImport=ut.fromSortedArray((e,t)=>{const r=e.timeSlot-t.timeSlot;return r<0?u.Greater:r>0?u.Less:u.Equal});lastEpoch=br(2**32-1);constructor(e,t){this.spec=e,this.importer=t}tryToReadTimeSlot(e){try{return e.header.view().timeSlotIndex.materialize()}catch{return null}}isCurrentEpoch(e){const t=Math.floor(e/this.spec.epochLength);return this.lastEpoch===t}startPreverification(){for(const e of this.toImport)this.isCurrentEpoch(e.timeSlot)&&(e.seal=this.importer.preverifySeal(e.timeSlot,e.block))}push(e){const t=this.tryToReadTimeSlot(e);if(null===t)return null;const r={timeSlot:t,block:e,seal:this.isCurrentEpoch(t)?this.importer.preverifySeal(t,e):Promise.resolve(null)};return this.toImport.insert(r),t}shift(){const e=this.toImport.pop();if(void 0!==e){const t=Math.floor(e.timeSlot/this.spec.epochLength),r=this.lastEpoch!==t;this.lastEpoch=br(t),r&&this.startPreverification()}return e}}!function(e){e[e.ParentNotFound=0]="ParentNotFound",e[e.InvalidTimeSlot=1]="InvalidTimeSlot",e[e.InvalidExtrinsic=2]="InvalidExtrinsic",e[e.StateRootNotFound=3]="StateRootNotFound",e[e.InvalidStateRoot=4]="InvalidStateRoot",e[e.AlreadyImported=5]="AlreadyImported"}(gc||(gc={}));const mc=U.zero(Re).asOpaque();class bc{hasher;blocks;constructor(e,t){this.hasher=e,this.blocks=t}async verifyBlock(e){const t=e.header.view(),r=this.hasher.header(t);if(null!==this.blocks.getHeader(r.hash))return _.error(gc.AlreadyImported,`Block ${r.hash} is already imported.`);const s=t.parentHeaderHash.materialize();if(!s.isEqualTo(mc)){const e=this.blocks.getHeader(s);if(null===e)return _.error(gc.ParentNotFound,`Parent ${s.toString()} not found`);const r=t.timeSlotIndex.materialize(),i=e.timeSlotIndex.materialize();if(r<=i)return _.error(gc.InvalidTimeSlot,`Invalid time slot index: ${r}, expected > ${i}`)}const i=t.extrinsicHash.materialize(),n=this.hasher.extrinsic(e.extrinsic.view());if(!i.isEqualTo(n.hash))return _.error(gc.InvalidExtrinsic,`Invalid extrinsic hash: ${i.toString()}, expected ${n.hash.toString()}`);const o=t.priorStateRoot.materialize(),a=this.blocks.getPostStateRoot(s);return null===a?_.error(gc.StateRootNotFound,`Posterior state root ${s.toString()} not found`):o.isEqualTo(a)?_.ok(r.hash):_.error(gc.InvalidStateRoot,`Invalid prior state root: ${o.toString()}, expected ${a.toString()} (ours)`)}hashHeader(e){return this.hasher.header(e.header.view())}}var Ac;function Ic(e,t){for(let r=1;r<e.length;r++)if(e[r-1][t].compare(e[r][t]).isGreaterOrEqual())return!1;return!0}!function(e){e.AlreadyJudged="already_judged",e.BadVoteSplit="bad_vote_split",e.VerdictsNotSortedUnique="verdicts_not_sorted_unique",e.JudgementsNotSortedUnique="judgements_not_sorted_unique",e.CulpritsNotSortedUnique="culprits_not_sorted_unique",e.FaultsNotSortedUnique="faults_not_sorted_unique",e.NotEnoughCulprits="not_enough_culprits",e.NotEnoughFaults="not_enough_faults",e.CulpritsVerdictNotBad="culprits_verdict_not_bad",e.FaultVerdictWrong="fault_verdict_wrong",e.OffenderAlreadyReported="offender_already_reported",e.BadJudgementAge="bad_judgement_age",e.BadValidatorIndex="bad_validator_index",e.BadSignature="bad_signature",e.BadGuarantorKey="bad_guarantor_key",e.BadAuditorKey="bad_auditor_key"}(Ac||(Ac={}));const vc=O.blobFromString("jam_valid").raw,wc=O.blobFromString("jam_invalid").raw,Sc=O.blobFromString("jam_guarantee").raw;function Ec({key:e,signature:t,workReportHash:r}){return{key:e,signature:t,message:O.blobFromParts(Sc,r.raw)}}function Cc({workReportHash:e,wasConsideredValid:t,signature:r,key:s}){const i=t?vc:wc;return{key:s,signature:r,message:O.blobFromParts(i,e.raw)}}function kc(e,t,r){const{isWorkReportValid:s,signature:i}=e,n=s?vc:wc;return{key:r,signature:i,message:O.blobFromParts(n,t.raw)}}class xc{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}verifyCulprits(e,t,r,s){if(!Ic(e.culprits,"key"))return _.error(Ac.CulpritsNotSortedUnique);const i=e.culprits.length;for(let n=0;n<i;n++){const{key:i,workReportHash:o}=e.culprits[n];if(void 0!==this.state.disputesRecords.punishSet.findExact(i))return _.error(Ac.OffenderAlreadyReported);if(!s.has(i))return _.error(Ac.BadGuarantorKey);if(void 0===t.toAddToBadSet.findExact(o))return _.error(Ac.CulpritsVerdictNotBad);const a=r.culprits[n];if(!a?.isValid)return _.error(Ac.BadSignature)}return _.ok(null)}verifyFaults(e,t,r,s){if(!Ic(e.faults,"key"))return _.error(Ac.FaultsNotSortedUnique);const i=e.faults.length;for(let n=0;n<i;n++){const{key:i,workReportHash:o,wasConsideredValid:a}=e.faults[n];if(void 0!==this.state.disputesRecords.punishSet.findExact(i))return _.error(Ac.OffenderAlreadyReported);if(!s.has(i))return _.error(Ac.BadAuditorKey);if(a){const e=t.toAddToGoodSet.findExact(o),r=t.toAddToBadSet.findExact(o);if(void 0!==e||void 0===r)return _.error(Ac.FaultVerdictWrong)}if(!r.faults[n].isValid)return _.error(Ac.BadSignature)}return _.ok(null)}verifyVerdicts(e,t){if(!Ic(e.verdicts,"workReportHash"))return _.error(Ac.VerdictsNotSortedUnique);if(e.verdicts.some(e=>!function(e){for(let t=1;t<e.length;t++)if(e[t-1].index>=e[t].index)return!1;return!0}(e.votes)))return _.error(Ac.JudgementsNotSortedUnique);const r=Math.floor(this.state.timeslot/this.chainSpec.epochLength);let s=0;for(const{votesEpoch:i,votes:n}of e.verdicts){if(i!==r&&i+1!==r)return _.error(Ac.BadJudgementAge);const e=i===r?this.state.currentValidatorData:this.state.previousValidatorData;for(const{index:r}of n){const i=e[r]?.ed25519;if(void 0===i)return _.error(Ac.BadValidatorIndex);if(!t.judgements[s].isValid)return _.error(Ac.BadSignature);s+=1}}return _.ok(null)}verifyIfAlreadyJudged(e){for(const t of e.verdicts){const e=this.state.disputesRecords.goodSet.findExact(t.workReportHash),r=this.state.disputesRecords.badSet.findExact(t.workReportHash),s=this.state.disputesRecords.wonkySet.findExact(t.workReportHash);if(void 0!==e||void 0!==r||void 0!==s)return _.error(Ac.AlreadyJudged)}return _.ok(null)}calculateVotesForWorkReports(e){const t=at.new();for(const r of e.verdicts){const e=r.votes,s=r.workReportHash;let i=0;for(const{isWorkReportValid:t}of e)t&&(i+=1);t.set(s,i)}return t}verifyVotesForWorkReports(e,t){for(const[r,s]of e)if(s===this.chainSpec.validatorsSuperMajority){const e=t.faults.find(e=>e.workReportHash.isEqualTo(r));if(void 0===e)return _.error(Ac.NotEnoughFaults)}else if(0===s){const e=t.culprits.find(e=>e.workReportHash.isEqualTo(r)),s=t.culprits.findLast(e=>e.workReportHash.isEqualTo(r));if(e===s)return _.error(Ac.NotEnoughCulprits)}else if(s!==this.chainSpec.thirdOfValidators)return _.error(Ac.BadVoteSplit);return _.ok(null)}getDisputesRecordsNewItems(e){const t=[],r=[],s=[];for(const[i,n]of e)n>=this.chainSpec.validatorsSuperMajority?t.push(i):0===n?r.push(i):n>=this.chainSpec.thirdOfValidators&&s.push(i);return{toAddToGoodSet:dt.fromArray(ei,t),toAddToBadSet:dt.fromArray(ei,r),toAddToWonkySet:dt.fromArray(ei,s)}}getClearedCoreAssignment(e){const t=this.state.availabilityAssignment.slice();for(let r=0;r<t.length;r++){const s=t[r];if(null!==s){const i=e.get(s.workReport.hash);void 0!==i&&i<this.chainSpec.validatorsSuperMajority&&(t[r]=null)}}return Ws(t,this.chainSpec)}getOffenders(e){const t=[];for(const{key:r}of e.culprits)t.push(r);for(const{key:r}of e.faults)t.push(r);return t}getUpdatedDisputesRecords(e,t){const r=ut.fromArray(ei,t);return Xs.create({goodSet:dt.fromTwoSortedCollections(this.state.disputesRecords.goodSet,e.toAddToGoodSet),badSet:dt.fromTwoSortedCollections(this.state.disputesRecords.badSet,e.toAddToBadSet),wonkySet:dt.fromTwoSortedCollections(this.state.disputesRecords.wonkySet,e.toAddToWonkySet),punishSet:dt.fromTwoSortedCollections(this.state.disputesRecords.punishSet,r)})}prepareSignaturesToVerification(e){const t={culprits:[],judgements:[],faults:[]},r=Math.floor(this.state.timeslot/this.chainSpec.epochLength);for(const{votesEpoch:s,votes:i,workReportHash:n}of e.verdicts){const e=s===r?this.state.currentValidatorData:this.state.previousValidatorData;for(const r of i){const s=e[r.index];if(void 0===s)return _.error(Ac.BadValidatorIndex);const i=s.ed25519;t.judgements.push(kc(r,n,i))}}return t.culprits=e.culprits.map(Ec),t.faults=e.faults.map(Cc),_.ok(t)}getValidatorKeys(){const e=this.state.disputesRecords.punishSet,t=this.state.currentValidatorData.map(e=>e.ed25519),r=this.state.previousValidatorData.map(e=>e.ed25519),s=t.concat(r).filter(t=>!e.has(t));return ct.from(s)}async transition(e){const t=this.prepareSignaturesToVerification(e);if(t.isError)return _.error(t.error);const r=async function(e){const t={culprits:[],faults:[],judgements:[]},r=Object.entries(e);for(const[e,s]of r)t[e]=(await ir(s)).map((e,t)=>({isValid:e,signature:s[t].signature}));return Promise.resolve(t)}(t.ok),s=this.calculateVotesForWorkReports(e),i=this.getDisputesRecordsNewItems(s),n=await r,o=this.getValidatorKeys(),a=[this.verifyVerdicts(e,n),this.verifyVotesForWorkReports(s,e),this.verifyCulprits(e,i,n,o),this.verifyFaults(e,i,n,o),this.verifyIfAlreadyJudged(e)].find(e=>e.isError);if(a?.isError)return _.error(a.error);const c=this.getOffenders(e),l=this.getUpdatedDisputesRecords(i,c),h=this.getClearedCoreAssignment(s);return _.ok({offendersMark:c,stateUpdate:{disputesRecords:l,availabilityAssignment:h}})}}const Bc=O.blobFromString("jam_entropy").raw,_c=O.blobFromString("jam_fallback_seal").raw,Rc=O.blobFromString("jam_ticket_seal").raw;var Oc;!function(e){e[e.Ok=0]="Ok",e[e.Error=1]="Error"}(Oc||(Oc={}));const Uc=async function(e,t,r,s,i,n){const o=O.blobFromParts(t.map(e=>e.raw)).raw,a=await e.verifySeal(o,r,s.raw,i.raw,n.raw);return a[0]===Oc.Error?_.error(null):_.ok(U.fromBlob(a.subarray(1),Re).asOpaque())},Tc=async function(e,t,r,s){const i=s.length+Rc.length+1,n=O.blobFromParts(r.map(e=>O.blobFromParts([e.signature.raw,Rc,s.raw,Uint8Array.of(e.attempt)]).raw)).raw,o=O.blobFromParts(t.map(e=>e.raw)).raw;try{const t=await e.batchVerifyTicket(o,n,i);return Array.from(O.blobFrom(t).chunks(33)).map(e=>({isValid:e.raw[0]===Oc.Ok,entropyHash:U.fromBlob(e.raw.subarray(1,33),Re).asOpaque()}))}catch(e){if("RuntimeError: unreachable"==`${e}`)return Array.from({length:r.length},()=>({isValid:!1,entropyHash:U.zero(Re).asOpaque()}));throw e}},Nc=async function(e,t){const r=O.blobFromParts(t.map(e=>e.raw)).raw,s=await e.getRingCommitment(r);return s[0]===Oc.Error?_.error(null):_.ok(U.fromBlob(s.subarray(1),Be).asOpaque())};class Dc{runInternal;state;static new(e,t){return new Dc(e,t)}constructor(e,t){this.runInternal=e,this.state=t}listenToParentPort(){if(null===$s.parentPort)throw new Error("This method is meant to be run inside a worker thread!");$s.parentPort.once("close",()=>{process.exit(0)}),$s.parentPort.once("message",e=>{this.listenTo(e),$s.parentPort?.postMessage("ready")})}listenTo(e){e.once("close",()=>{e.removeAllListeners(),process.exit(0)}),e.on("message",t=>{const{params:r}=t;this.run(r).then(t=>{const r=_.ok(t);e.postMessage(r,t.getTransferList())}).catch(t=>{const r=_.error(`${t}`);e.postMessage(r,[])})})}async run(e){return await this.runInternal(e,this.state)}async destroy(){}}class Mc{workers;maxWorkers;workerPath;static async initialize(e,t){y(t.maxWorkers>0,"Max workers has to be positive."),y(t.minWorkers<=t.maxWorkers,"Min workers has to be lower or equal to max workers.");const r=[];for(let s=0;s<t.minWorkers;s++)r.push(await Pc(e));return new Mc(r,t.maxWorkers,e)}freeWorkerIndices=[];taskQueue=[];isDestroyed=!1;isWorkerInitializing=!1;constructor(e,t,r){this.workers=e,this.maxWorkers=t,this.workerPath=r;for(let t=0;t<e.length;t++)this.freeWorkerIndices.push(t)}async initNewWorker(e=()=>{}){this.workers.length>=this.maxWorkers?console.warn(`Task queue has ${this.taskQueue.length} pending items and we can't init any more workers.`):this.isWorkerInitializing||(this.isWorkerInitializing=!0,this.workers.push(await Pc(this.workerPath)),this.freeWorkerIndices.push(this.workers.length-1),this.isWorkerInitializing=!1,e())}async destroy(){for(const e of this.workers)e.port.close(),await e.worker.terminate();this.workers.length=0,this.isDestroyed=!0}async run(e){return new Promise((t,r)=>{this.isDestroyed?r("pool destroyed"):(this.taskQueue.push({params:e,resolve:t,reject:r}),this.processEntryFromTaskQueue())})}processEntryFromTaskQueue(){const e=this.freeWorkerIndices.pop();if(void 0===e)return void(this.taskQueue.length>5&&this.initNewWorker(()=>{this.processEntryFromTaskQueue()}));const t=this.taskQueue.pop();void 0!==t?this.workers[e].runTask(t,()=>{this.freeWorkerIndices.push(e),this.processEntryFromTaskQueue()}):this.freeWorkerIndices.push(e)}}async function Pc(e){const{port1:t,port2:r}=new MessageChannel,s=new $s.Worker(e,{});return s.postMessage(t,[t]),await new Promise((e,t)=>{s.once("message",e),s.once("error",t)}),s.unref(),new Lc(s,r)}class Lc{worker;port;constructor(e,t){this.worker=e,this.port=t}runTask(e,t){const r={params:e.params};this.port.once("message",r=>{r.isOk?e.resolve(r.ok):e.reject(new Error(r.error)),t()}),this.port.postMessage(r,r.params.getTransferList())}}var Hc;!function(e){e[e.RingCommitment=0]="RingCommitment",e[e.BatchVerifyTickets=1]="BatchVerifyTickets",e[e.VerifySeal=2]="VerifySeal"}(Hc||(Hc={}));class Kc{data;constructor(e){this.data=e}getTransferList(){return[]}}class Vc{params;constructor(e){this.params=e}getTransferList(){return[]}}const Qc=Dc.new(e=>{const t=e.params,r=t.method;return r===Hc.RingCommitment?Promise.resolve(new Kc((0,ke.hc)(t.keys))):r===Hc.BatchVerifyTickets?Promise.resolve(new Kc((0,ke.ZJ)(t.keys,t.ticketsData,t.contextLength))):r===Hc.VerifySeal?Promise.resolve(new Kc((0,ke.KG)(t.keys,t.authorIndex,t.signature,t.payload,t.auxData))):void b(r)},null);class Fc{executor;constructor(e){this.executor=e}destroy(){return this.executor.destroy()}static async new({synchronous:e}){const t=Bs().cpus().length;return new Fc(e?Qc:await Mc.initialize(new URL(o(884),o.b),{minWorkers:Math.max(1,Math.floor(t/2)),maxWorkers:t}))}async verifySeal(e,t,r,s,i){return(await this.executor.run(new Vc({method:Hc.VerifySeal,keys:e,authorIndex:t,signature:r,payload:s,auxData:i}))).data}async getRingCommitment(e){return(await this.executor.run(new Vc({method:Hc.RingCommitment,keys:e}))).data}async batchVerifyTicket(e,t,r){return(await this.executor.run(new Vc({method:Hc.BatchVerifyTickets,keys:e,ticketsData:t,contextLength:r}))).data}}const Gc=(e,t)=>F(e.id,t.id);var $c,jc,qc,zc,Wc,Jc,Yc;!function(e){e[e.IncorrectData=1]="IncorrectData",e[e.BadSlot=2]="BadSlot",e[e.UnexpectedTicket=3]="UnexpectedTicket",e[e.BadTicketOrder=4]="BadTicketOrder",e[e.BadTicketProof=5]="BadTicketProof",e[e.BadTicketAttempt=6]="BadTicketAttempt",e[e.DuplicateTicket=7]="DuplicateTicket"}($c||($c={}));class Zc{chainSpec;state;bandersnatch;constructor(e,t,r=Fc.new({synchronous:!0})){this.chainSpec=e,this.state=t,this.bandersnatch=r}isEpochChanged(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)>t}isSameEpoch(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)===t}isNextEpoch(e){const t=Math.floor(this.state.timeslot/this.chainSpec.epochLength);return Math.floor(e/this.chainSpec.epochLength)===t+1}getSlotPhaseIndex(e){return e%this.chainSpec.epochLength}getEntropy(e,t){const[r,...s]=this.state.entropy,i=Le([r.raw,t]).asOpaque();return this.isEpochChanged(e)?ht.new([i,r,s[0],s[1]],4):ht.new([i,...s],4)}async getValidatorKeys(e){if(!this.isEpochChanged(e)){const{nextValidatorData:e,currentValidatorData:t,previousValidatorData:r,epochRoot:s}=this.state;return _.ok({nextValidatorData:e,currentValidatorData:t,previousValidatorData:r,epochRoot:s})}const t=this.state.disputesRecords.punishSet,r=this.state.designatedValidatorData.map(e=>!1!==t.has(e.ed25519)?ii.create({bandersnatch:U.zero(xe).asOpaque(),ed25519:U.zero(rr).asOpaque(),bls:e.bls,metadata:e.metadata}):e),{nextValidatorData:s,currentValidatorData:i}=this.state,n=await Nc(await this.bandersnatch,r.map(e=>e.bandersnatch));return n.isOk?_.ok({nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n.ok}):_.error($c.IncorrectData)}outsideInSequencer(e){const t=e.length,r=new Array(t),s=Math.floor(t/2);t%2==1&&(r[s]=e[s]);for(let i=0;i<s;i+=1)r[2*i]=e[i],r[2*i+1]=e[t-i-1];return vr(r,this.chainSpec)}fallbackKeySequencer(e,t){const r=this.chainSpec.epochLength,s=[],i=t.length;for(let n=X(0);n<r;n++){const r=ie(n),o=Le([e.raw,r]).raw,a=ae.fromBlob(o).u32()%i;s.push(t[a].bandersnatch)}return vr(s,this.chainSpec)}getSlotKeySequence(e,t,r){const s=this.getSlotPhaseIndex(this.state.timeslot);return this.isNextEpoch(e)&&s>=this.chainSpec.contestLength&&this.state.ticketsAccumulator.length===this.chainSpec.epochLength?ai.tickets(this.outsideInSequencer(this.state.ticketsAccumulator)):this.isSameEpoch(e)?this.state.sealingKeySeries:ai.keys(this.fallbackKeySequencer(r,t))}getEpochMark(e,t){if(!this.isEpochChanged(e))return null;const r=this.state.entropy;return Gr.create({entropy:r[0],ticketsEntropy:r[1],validators:t.map(e=>Fr.create(e))})}verifyTickets(e){const t=e.length;for(let r=1;r<t;r++){const t=e[r-1].id.compare(e[r].id);if(t.isEqual())return _.error($c.DuplicateTicket);if(t.isGreater())return _.error($c.BadTicketOrder)}return _.ok(null)}async getNewTicketAccumulator(e,t,r,s){const i=0===t.length?[]:await Tc(await this.bandersnatch,r.map(e=>e.bandersnatch),t,s),n=t.map((e,t)=>({id:i[t].entropyHash,attempt:e.attempt}));if(!i.every(e=>e.isValid))return _.error($c.BadTicketProof);const o=this.verifyTickets(n);if(o.isError)return _.error(o.error);if(this.isEpochChanged(e))return _.ok(n);const a=dt.fromSortedArray(Gc,this.state.ticketsAccumulator),c=dt.fromSortedArray(Gc,n),l=dt.fromTwoSortedCollections(a,c);return a.length+c.length!==l.length?_.error($c.DuplicateTicket):_.ok(l.array.slice(0,this.chainSpec.epochLength))}getTicketsMark(e){const t=this.getSlotPhaseIndex(this.state.timeslot),r=this.getSlotPhaseIndex(e);return this.isSameEpoch(e)&&t<this.chainSpec.contestLength&&this.chainSpec.contestLength<=r&&this.state.ticketsAccumulator.length===this.chainSpec.epochLength?this.outsideInSequencer(this.state.ticketsAccumulator):null}isExtrinsicLengthValid(e,t){return this.getSlotPhaseIndex(e)<this.chainSpec.contestLength?t.length<=this.chainSpec.maxTicketsPerExtrinsic:0===t.length}areTicketAttemptsValid(e){const t=e.length;for(let r=0;r<t;r++)if(e[r].attempt>=this.chainSpec.ticketsPerValidator)return!1;return!0}getSafroleSealState(e){const t=this.isEpochChanged(e),r=t?this.state.nextValidatorData:this.state.currentValidatorData,s=this.state.entropy[t?1:2];return{currentValidatorData:r,currentEntropy:this.state.entropy[t?2:3],sealingKeySeries:this.getSlotKeySequence(e,r,s)}}async transition(e){if(this.state.timeslot>=e.slot)return _.error($c.BadSlot);if(!this.isExtrinsicLengthValid(e.slot,e.extrinsic))return _.error($c.UnexpectedTicket);if(!this.areTicketAttemptsValid(e.extrinsic))return _.error($c.BadTicketAttempt);const t=await this.getValidatorKeys(e.slot);if(t.isError)return _.error(t.error);const{nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n}=t.ok,o=this.getEntropy(e.slot,e.entropy),a=this.getSlotKeySequence(e.slot,s,o[2]),c=await this.getNewTicketAccumulator(e.slot,e.extrinsic,this.state.nextValidatorData,o[2]);if(c.isError)return _.error(c.error);const l={nextValidatorData:r,currentValidatorData:s,previousValidatorData:i,epochRoot:n,timeslot:e.slot,entropy:o,sealingKeySeries:a,ticketsAccumulator:c.ok},h={epochMark:this.getEpochMark(e.slot,r),ticketsMark:this.getTicketsMark(e.slot),stateUpdate:l};return _.ok(h)}}!function(e){e[e.InvalidValidatorIndex=0]="InvalidValidatorIndex",e[e.InvalidValidator=1]="InvalidValidator",e[e.InvalidTicket=2]="InvalidTicket",e[e.IncorrectSeal=3]="IncorrectSeal",e[e.IncorrectEntropySource=4]="IncorrectEntropySource"}(jc||(jc={}));class Xc{bandersnatch;constructor(e=Fc.new({synchronous:!0})){this.bandersnatch=e}async verifyHeaderSeal(e,t){const r=await this.verifySeal(e,t);if(r.isError)return r;const s=O.blobFromParts(Bc,r.ok.raw),i=await Uc(await this.bandersnatch,t.currentValidatorData.map(e=>e.bandersnatch),e.bandersnatchBlockAuthorIndex.materialize(),e.entropySource.materialize(),s,O.blobFromNumbers([]));return i.isError?_.error(jc.IncorrectEntropySource):_.ok(i.ok)}async verifySeal(e,t){const r=t.currentValidatorData,s=e.bandersnatchBlockAuthorIndex.materialize(),i=r[s];if(void 0===i)return _.error(jc.InvalidValidatorIndex);const n=e.timeSlotIndex.materialize(),o=t.sealingKeySeries,a=t.currentEntropy;return o.kind===ni.Tickets?await this.verifySealWithTicket(o.tickets,n,a,r,s,e):await this.verifySealWithKeys(o.keys,i,n,a,r,s,e)}async verifySealWithTicket(e,t,r,s,i,n){const o=t%e.length,{id:a,attempt:c}=e[o],l=O.blobFromParts(Rc,r.raw,new Uint8Array([c])),h=await Uc(await this.bandersnatch,s.map(e=>e.bandersnatch),i,n.seal.materialize(),l,$r(n));return h.isError?_.error(jc.IncorrectSeal):a.isEqualTo(h.ok)?_.ok(h.ok):_.error(jc.InvalidTicket)}async verifySealWithKeys(e,t,r,s,i,n,o){if(!e[r%e.length].isEqualTo(t.bandersnatch))return _.error(jc.InvalidValidator);const a=O.blobFromParts(_c,s.raw),c=await Uc(await this.bandersnatch,i.map(e=>e.bandersnatch),n,o.seal.materialize(),a,$r(o));return c.isError?_.error(jc.IncorrectSeal):_.ok(c.ok)}}function el(e){if(e.length===qc.Requested)return{status:qc.Requested};if(e.length===qc.Available)return{status:qc.Available,data:[e[0]]};if(e.length===qc.Unavailable)return{status:qc.Unavailable,data:[e[0],e[1]]};if(e.length===qc.Reavailable)return{status:qc.Reavailable,data:[e[0],e[1],e[2]]};throw new Error(`Invalid slots length: ${e.length}`)}!function(e){e[e.Requested=0]="Requested",e[e.Available=1]="Available",e[e.Unavailable=2]="Unavailable",e[e.Reavailable=3]="Reavailable"}(qc||(qc={})),function(e){e[e.AlreadyRequested=0]="AlreadyRequested",e[e.AlreadyAvailable=1]="AlreadyAvailable",e[e.InsufficientFunds=2]="InsufficientFunds"}(zc||(zc={})),function(e){e[e.DestinationNotFound=0]="DestinationNotFound",e[e.GasTooLow=1]="GasTooLow",e[e.BalanceBelowThreshold=2]="BalanceBelowThreshold"}(Wc||(Wc={})),function(e){e[e.InvalidService=0]="InvalidService",e[e.InvalidPreimage=1]="InvalidPreimage"}(Jc||(Jc={})),function(e){e[e.ServiceNotFound=0]="ServiceNotFound",e[e.WasNotRequested=1]="WasNotRequested",e[e.AlreadyProvided=2]="AlreadyProvided"}(Yc||(Yc={}));class tl{source;destination;amount;memo;gas;static Codec=we.Class(tl,{source:we.u32.asOpaque(),destination:we.u32.asOpaque(),amount:we.u64,memo:we.bytes(128),gas:we.u64.asOpaque()});constructor(e,t,r,s,i){this.source=e,this.destination=t,this.amount=r,this.memo=s,this.gas=i}static create({source:e,destination:t,amount:r,memo:s,gas:i}){return new tl(e,t,r,s,i)}}class rl{services;transfers;authorizationQueues=new Map;yieldedRoot=null;validatorsData=null;privilegedServices=null;constructor(e,t){this.services=e,this.transfers=t}static empty(){return new rl({servicesUpdates:[],servicesRemoved:[],preimages:[],storage:[]},[])}static new(e){return new rl(e,[])}static copyFrom(e){const t={servicesUpdates:[...e.services.servicesUpdates],servicesRemoved:[...e.services.servicesRemoved],preimages:[...e.services.preimages],storage:[...e.services.storage]},r=[...e.transfers],s=new rl(t,r);for(const[t,r]of e.authorizationQueues)s.authorizationQueues.set(t,r);return s.yieldedRoot=e.yieldedRoot,s.validatorsData=null===e.validatorsData?null:[...e.validatorsData],s.privilegedServices=null===e.privilegedServices?null:ri.create({...e.privilegedServices}),s}}class sl{chainSpec;state;currentServiceId;currentTimeslot;updatedState;checkpointedState=null;nextNewServiceId;constructor(e,t,r,s,i,n=rl.empty()){if(this.chainSpec=e,this.state=t,this.currentServiceId=r,this.currentTimeslot=i,this.updatedState=n,this.nextNewServiceId=this.getNextAvailableServiceId(s),null===this.state.getService(this.currentServiceId))throw new Error(`Invalid state initialization. Service info missing for ${this.currentServiceId}.`)}getStateUpdates(){return[this.updatedState,this.checkpointedState]}getNextNewServiceId(){return this.nextNewServiceId}getCurrentServiceInfo(){const e=this.updatedState.services.servicesUpdates.find(e=>e.serviceId===this.currentServiceId);if(void 0!==e)return e.action.account;const t=this.state.getService(this.currentServiceId);return m(t,null!==t,"Service existence in state validated in constructor.").getInfo()}getServiceInfo(e){if(null===e)return null;if(e===this.currentServiceId)return this.getCurrentServiceInfo();const t=this.updatedState.services.servicesRemoved.some(t=>t===e);if(t)return null;const r=this.updatedState.services.servicesUpdates.find(t=>t.serviceId===e&&t.action.kind===pi.Create);if(void 0!==r)return r.action.account;const s=this.state.getService(e);return null===s?null:s.getInfo()}getUpdatedPreimageStatus(e,t){const r=this.updatedState.services.preimages.findLast(r=>r.serviceId===this.currentServiceId&&r.hash.isEqualTo(e)&&BigInt(r.length)===t),s=()=>{const r=this.state.getService(this.currentServiceId),s=il(t);if(null===s||null===r)return null;const i=r.getLookupHistory(e,s);return null===i?null:new gi(e,s,i)};if(void 0===r)return s();const{action:i}=r;switch(i.kind){case fi.Provide:return new gi(e,r.length,di([this.currentTimeslot]));case fi.Remove:{const t=s();return null===t?null:new gi(e,t.length,di([...t.slots,this.currentTimeslot]))}case fi.UpdateOrAdd:return i.item}b(i)}isPreviousCodeExpired(e,t,r){const s=this.state.getService(e),i=il(r),n=null===s||null===i?null:s.getLookupHistory(t,i),o=null===n?null:el(n);if(o?.status!==qc.Unavailable)return[!1,"wrong status"];const a=this.currentTimeslot,c=o.data[1]<a-this.chainSpec.preimageExpungePeriod;return[c,c?"":"not expired"]}hasExistingPreimage(e,t){if(null===e)return!1;if(void 0!==this.updatedState.services.preimages.find(r=>r.serviceId===e&&r.hash.isEqualTo(t)))return!0;const r=this.state.getService(e);return void 0!==r&&(r?.hasPreimage(t)??!1)}addPreimageUpdate(e){this.updatedState.services.preimages.push(e)}getNextAvailableServiceId(e){let t=e;const r=2**32-512;for(;;){if(null===this.getServiceInfo(t))return t;t=pr((t-256+1+r)%r+256)}}checkPreimageStatus(e,t){const r=this.getUpdatedPreimageStatus(e,t);return null===r?null:el(r.slots)}requestPreimage(e,t){const r=this.getUpdatedPreimageStatus(e,t);if(null!==r){const e=r.slots.length;if(e===qc.Requested)return _.error(zc.AlreadyRequested);if(e===qc.Available||e===qc.Reavailable)return _.error(zc.AlreadyAvailable);y(e===qc.Unavailable)}const s=this.getCurrentServiceInfo(),i=null!==r,n=i?0:2,o=t-BigInt(r?.length??0),a=s.storageUtilisationCount+n,c=s.storageUtilisationBytes+BigInt(o)+(i?0n:81n);y(a>=0,`storageUtilisationCount has to be a positive number, got: ${a}`),y(c>=0,`storageUtilisationBytes has to be a positive number, got: ${c}`);const l=!ee(a),h=!re(c),u=this.updateServiceStorageUtilisation({overflow:l,value:l?X(0):a},{overflow:h,value:h?te(0):c},s);if(u.isError)return _.error(zc.InsufficientFunds,u.details);const d=Wa(t);return null===r?this.addPreimageUpdate(mi.updateOrAdd({serviceId:this.currentServiceId,lookupHistory:new gi(e,d,di([]))})):this.addPreimageUpdate(mi.updateOrAdd({serviceId:this.currentServiceId,lookupHistory:new gi(e,d,di([...r.slots,this.currentTimeslot]))})),_.ok(C)}updateServiceStorageUtilisation(e,t,r){if(e.overflow||t.overflow)return _.error("insufficient funds");const s=li.calculateThresholdBalance(e.value,t.value);return r.balance<s?_.error("insufficient funds"):(this.updateCurrentServiceInfo(li.create({...r,storageUtilisationBytes:t.value,storageUtilisationCount:e.value})),_.ok(C))}updateCurrentServiceInfo(e){const t=this.updatedState.services.servicesUpdates.findIndex(e=>e.serviceId===this.currentServiceId),r=-1===t?0:1;this.updatedState.services.servicesUpdates.splice(t,r,bi.update({serviceId:this.currentServiceId,serviceInfo:e}))}forgetPreimage(e,t){const r=this.currentServiceId,s=this.getUpdatedPreimageStatus(e,t);if(null===s)return _.error(null);const i=el(s.slots);if(i.status===qc.Requested)return this.addPreimageUpdate(mi.remove({serviceId:r,hash:s.hash,length:s.length})),_.ok(C);const n=this.currentTimeslot;return i.status===qc.Unavailable?i.data[1]<n-this.chainSpec.preimageExpungePeriod?(this.addPreimageUpdate(mi.remove({serviceId:r,hash:s.hash,length:s.length})),_.ok(C)):_.error(null):i.status===qc.Available?(this.addPreimageUpdate(mi.updateOrAdd({serviceId:r,lookupHistory:new gi(s.hash,s.length,di([i.data[0],n]))})),_.ok(C)):i.status===qc.Reavailable?i.data[1]<n-this.chainSpec.preimageExpungePeriod?(this.addPreimageUpdate(mi.updateOrAdd({serviceId:r,lookupHistory:new gi(s.hash,s.length,di([i.data[2],n]))})),_.ok(C)):_.error(null):void b(i)}transfer(e,t,r,s){const i=this.getCurrentServiceInfo(),n=this.getServiceInfo(e);if(null===n||null===e)return _.error(Wc.DestinationNotFound);if(r<n.onTransferMinGas)return _.error(Wc.GasTooLow);const o=i.balance-t;return o<li.calculateThresholdBalance(i.storageUtilisationCount,i.storageUtilisationBytes)?_.error(Wc.BalanceBelowThreshold):(this.updatedState.transfers.push(tl.create({source:this.currentServiceId,destination:e,amount:t,memo:s,gas:r})),this.updateCurrentServiceInfo(li.create({...i,balance:te(o)})),_.ok(C))}newService(e,t,r,s){const i=this.nextNewServiceId,n=X(2),o=se(te(81),t),a=Wa(t),c=li.calculateThresholdBalance(n,o.value),l=this.getCurrentServiceInfo(),h=li.calculateThresholdBalance(l.storageUtilisationCount,l.storageUtilisationBytes),u=l.balance-c;return u<h||o.overflow?_.error("insufficient funds"):(this.updatedState.services.servicesUpdates.push(bi.create({serviceId:i,serviceInfo:li.create({codeHash:e,balance:c,accumulateMinGas:r,onTransferMinGas:s,storageUtilisationBytes:o.value,storageUtilisationCount:n}),lookupHistory:new gi(e.asOpaque(),a,di([]))})),this.updateCurrentServiceInfo(li.create({...l,balance:te(u)})),this.nextNewServiceId=this.getNextAvailableServiceId(function(e){const t=2**32-512;return pr(256+(e-256+42+t)%t)}(i)),_.ok(i))}upgradeService(e,t,r){const s=this.getCurrentServiceInfo();this.updateCurrentServiceInfo(li.create({...s,codeHash:e,accumulateMinGas:yr(t),onTransferMinGas:yr(r)}))}updateValidatorsData(e){this.updatedState.validatorsData=e}checkpoint(){this.checkpointedState=rl.copyFrom(this.updatedState)}updateAuthorizationQueue(e,t){this.updatedState.authorizationQueues.set(e,t)}updatePrivilegedServices(e,t,r,s){this.updatedState.privilegedServices=ri.create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s.map(([e,t])=>ti.create({service:e,gasLimit:t}))})}yield(e){this.updatedState.yieldedRoot=e}providePreimage(e,t){const r=null===e?null:this.state.getService(e);if(null===r||null===e)return _.error(Yc.ServiceNotFound);const s=He(t).asOpaque();if(e===this.currentServiceId){const e=this.getUpdatedPreimageStatus(s,te(t.length));if(null===e||!gi.isRequested(e))return _.error(Yc.WasNotRequested)}else{const e=r.getLookupHistory(s,X(t.length));if(null===e||!gi.isRequested(e))return _.error(Yc.WasNotRequested)}return this.hasExistingPreimage(e,s)?_.error(Yc.AlreadyProvided):(this.addPreimageUpdate(mi.provide({serviceId:e,preimage:hi.create({hash:s,blob:t}),slot:this.currentTimeslot})),_.ok(C))}eject(e,t){const r=this.getServiceInfo(e);if(null===r||null===e)return _.error(Jc.InvalidService,"Service missing");const s=this.getCurrentServiceInfo(),i=U.zero(Re).asOpaque();if(za(this.currentServiceId,i.raw),!r.codeHash.isEqualTo(i))return _.error(Jc.InvalidService,"Invalid code hash");if(2!==r.storageUtilisationCount)return _.error(Jc.InvalidPreimage,"Too many storage items");const n=te(81),o=te(((e,...t)=>t.reduce((e,t)=>t<e?e:t,e))(r.storageUtilisationBytes,n)-n),[a,c]=this.isPreviousCodeExpired(e,t,o);if(!a)return _.error(Jc.InvalidPreimage,`Previous code available: ${c}`);const l=se(s.balance,r.balance);return l.overflow?_.error(Jc.InvalidService,"Balance overflow"):(this.updateCurrentServiceInfo(li.create({...s,balance:l.value})),this.updatedState.services.servicesRemoved.push(e),_.ok(C))}replaceOrAddStorageUpdate(e,t){const r=null===t?Ai.remove({serviceId:this.currentServiceId,key:e}):Ai.set({serviceId:this.currentServiceId,storage:ui.create({key:e,value:t})}),s=this.updatedState.services.storage.findIndex(t=>t.serviceId===r.serviceId&&t.key.isEqualTo(e)),i=-1===s?0:1;this.updatedState.services.storage.splice(s,i,r)}read(e,t){if(null===e)return null;if(this.currentServiceId===e){const r=this.updatedState.services.storage.find(r=>r.serviceId===e&&r.key.isEqualTo(t));if(void 0!==r)return r.value}const r=this.state.getService(e);return r?.getStorage(t)??null}write(e,t){const r=this.read(this.currentServiceId,e),s=null===r&&null!==t,i=null!==r&&null===t,n=s?1:i?-1:0,o=(t?.length??0)-(r?.length??0),a=s?BigInt(Re):i?BigInt(-32):0n,c=this.getCurrentServiceInfo(),l=c.storageUtilisationCount+n,h=c.storageUtilisationBytes+BigInt(o)+a;y(l>=0,`storageUtilisationCount has to be a positive number, got: ${l}`),y(h>=0,`storageUtilisationBytes has to be a positive number, got: ${h}`);const u=!ee(l),d=!re(h),g=this.updateServiceStorageUtilisation({overflow:u,value:u?X(0):l},{overflow:d,value:d?te(0):h},c);return g.isError?_.error("full",g.details):(this.replaceOrAddStorageUpdate(e,t),_.ok(C))}readSnapshotLength(e){const t=this.state.getService(this.currentServiceId);return t?.getStorage(e)?.length??null}lookup(e,t){if(null===e)return null;const r=this.updatedState.services.preimages.find(r=>r.serviceId===e&&r.hash.isEqualTo(t));if(void 0!==r&&r.action.kind===fi.Provide)return r.action.preimage.blob;const s=this.state.getService(e);return s?.getPreimage(t)??null}}function il(e){return e>=2n**32n?null:X(Number(e))}function nl(e){const t=e.map(e=>e.workPackageSpec.hash);return ct.from(t)}const ol=we.object({serviceId:we.u32.asOpaque(),entropy:we.bytes(Re).asOpaque(),timeslot:we.u32.asOpaque()}),al=we.object({serviceId:we.u32.convert(e=>e,e=>e),gas:we.u64.convert(e=>te(e),e=>yr(e))});class cl{currentServiceId;index=zn(0);gasCost=co(10);constructor(e){this.currentServiceId=e}execute(e,t){return t.set(7,te(e.get())),Promise.resolve(void 0)}}const ll=he(ii.Codec.sizeHint),hl=e=>te(e);var ul,dl,gl;!function(e){e[e.SourcePageFault=0]="SourcePageFault",e[e.DestinationPageFault=1]="DestinationPageFault",e[e.NoMachine=2]="NoMachine"}(ul||(ul={})),function(e){e[e.NoMachine=0]="NoMachine",e[e.InvalidPage=1]="InvalidPage"}(dl||(dl={})),Symbol("Machine index not found."),Symbol("Too many segments already exported.");class fl{currentServiceId;fetch;index=zn(18);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.fetch=t}async execute(e,t,r){const s=this.getValue(t),i=t.get(7),n=te(s?.length??0),o=oe(t.get(8),n),a=oe(t.get(9),te(n-o)),c=null===s?new Uint8Array:s.raw.subarray(Number(o),Number(o+a));if(r.storeFrom(i,c).isError)return Wn.Panic;t.set(7,null===s?Qa.NONE:n)}getValue(e){const t=Wa(e.get(10));if(t===gl.Constants)return this.fetch.constants();if(t===gl.Entropy)return this.fetch.entropy();if(t===gl.AuthorizerTrace)return this.fetch.authorizerTrace();if(t===gl.OtherWorkItemExtrinsics){const t=e.get(11),r=e.get(12);return this.fetch.workItemExtrinsic(t,r)}if(t===gl.MyExtrinsics){const t=e.get(11);return this.fetch.workItemExtrinsic(null,t)}if(t===gl.OtherWorkItemImports){const t=e.get(11),r=e.get(12);return this.fetch.workItemImport(t,r)}if(t===gl.MyImports){const t=e.get(11);return this.fetch.workItemImport(null,t)}if(t===gl.WorkPackage)return this.fetch.workPackage();if(t===gl.Authorizer)return this.fetch.authorizer();if(t===gl.AuthorizationToken)return this.fetch.authorizationToken();if(t===gl.RefineContext)return this.fetch.refineContext();if(t===gl.AllWorkItems)return this.fetch.allWorkItems();if(t===gl.OneWorkItem){const t=e.get(11);return this.fetch.oneWorkItem(t)}if(t===gl.WorkItemPayload){const t=e.get(11);return this.fetch.workItemPayload(t)}if(t===gl.AllOperands)return this.fetch.allOperands();if(t===gl.OneOperand){const t=e.get(11);return this.fetch.oneOperand(t)}if(t===gl.AllTransfers)return this.fetch.allTransfers();if(t===gl.OneTransfer){const t=e.get(11);return this.fetch.oneTransfer(t)}return null}}!function(e){e[e.Constants=0]="Constants",e[e.Entropy=1]="Entropy",e[e.AuthorizerTrace=2]="AuthorizerTrace",e[e.OtherWorkItemExtrinsics=3]="OtherWorkItemExtrinsics",e[e.MyExtrinsics=4]="MyExtrinsics",e[e.OtherWorkItemImports=5]="OtherWorkItemImports",e[e.MyImports=6]="MyImports",e[e.WorkPackage=7]="WorkPackage",e[e.Authorizer=8]="Authorizer",e[e.AuthorizationToken=9]="AuthorizationToken",e[e.RefineContext=10]="RefineContext",e[e.AllWorkItems=11]="AllWorkItems",e[e.OneWorkItem=12]="OneWorkItem",e[e.WorkItemPayload=13]="WorkItemPayload",e[e.AllOperands=14]="AllOperands",e[e.OneOperand=15]="OneOperand",e[e.AllTransfers=16]="AllTransfers",e[e.OneTransfer=17]="OneTransfer"}(gl||(gl={}));class pl{currentServiceId;account;index=zn(4);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=ja(7,t,this.currentServiceId),i=t.get(8),n=this.account.getServiceInfo(s),o=null===n?O.empty():ge.encodeObject(yl,{...n,thresholdBalance:li.calculateThresholdBalance(n.storageUtilisationCount,n.storageUtilisationBytes)});if(r.storeFrom(i,o.raw).isError)return Wn.Panic;null!==n?t.set(7,Qa.OK):t.set(7,Qa.NONE)}}const yl=we.object({codeHash:we.bytes(Re),balance:we.u64,thresholdBalance:we.u64,accumulateMinGas:we.u64.convert(e=>e,yr),onTransferMinGas:we.u64.convert(e=>e,yr),storageUtilisationBytes:we.u64,storageUtilisationCount:we.u32},"ServiceAccountInfoWithThresholdBalance"),ml=Gs.new(void 0,"host-calls"),bl=new TextDecoder("utf8");class Al{currentServiceId;index=zn(100);gasCost=co(0);constructor(e){this.currentServiceId=e}execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=t.get(10),a=t.get(11),c=new Uint8Array(Wa(n)),l=new Uint8Array(Wa(a));return 0n!==i&&r.loadInto(c,i),r.loadInto(l,o),ml.trace(`[${this.currentServiceId}] [${s}] ${bl.decode(c)} ${bl.decode(l)}`),Promise.resolve(void 0)}}class Il{currentServiceId;account;index=zn(1);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=ja(7,t,this.currentServiceId),i=t.get(8),n=t.get(9),o=U.zero(Re);if(r.loadInto(o.raw,i).isError)return Wn.Panic;const a=this.account.lookup(s,o),c=te(null===a?0:a.raw.length),l=t.get(10),h=t.get(11),u=oe(l,c),d=oe(h,te(c-u)),g=null===a?new Uint8Array(0):a.raw.subarray(Number(u),Number(u+d));if(r.storeFrom(n,g).isError)return Wn.Panic;null!==a?t.set(7,c):t.set(7,Qa.NONE)}}class vl{currentServiceId;account;index=zn(2);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=ja(7,t,this.currentServiceId),i=t.get(8),n=t.get(9),o=t.get(10),a=Wa(n),c=new Uint8Array(4+a);if(null!==s&&za(s,c),r.loadInto(c.subarray(4),i).isError)return Wn.Panic;const l=He(c),h=this.account.read(s,l),u=te(null===h?0:h.raw.length),d=t.get(11),g=t.get(12),f=oe(d,u),p=oe(g,te(u-f)),y=null===h?new Uint8Array(0):h.raw.subarray(Number(f),Number(f+p));if(r.storeFrom(o,y).isError)return Wn.Panic;null!==h?t.set(7,u):t.set(7,Qa.NONE)}}class wl{currentServiceId;account;index=zn(3);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.account=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=t.get(10),a=Wa(i),c=new Uint8Array(4+a);if(za(this.currentServiceId,c),r.loadInto(c.subarray(4),s).isError)return Wn.Panic;const l=He(c),h=Wa(o),u=new Uint8Array(h);if(r.loadInto(u,n).isError)return Wn.Panic;const d=0n===o?null:O.blobFrom(u);if(this.account.write(l,d).isError)return void t.set(7,Qa.FULL);const g=this.account.readSnapshotLength(l);t.set(7,null===g?Qa.NONE:te(g))}}const Sl=[class{currentServiceId;partialState;index=zn(5);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=qa(t.get(7)),i=qa(t.get(8)),n=qa(t.get(9)),o=t.get(10),a=t.get(11),c=new Array,l=new Uint8Array(he(al.sizeHint)),h=ae.fromBlob(l);let u=o;for(let e=0n;e<a;e+=1n){if(h.resetTo(0),r.loadInto(l,u).isError)return Wn.Panic;const{serviceId:e,gas:t}=h.object(al);c.push([e,t]),u=te(u+te(h.bytesRead()))}null!==s&&null!==i&&null!==n?(this.partialState.updatePrivilegedServices(s,i,n,c),t.set(7,Qa.OK)):t.set(7,Qa.WHO)}},class{currentServiceId;partialState;chainSpec;index=zn(6);gasCost=co(10);constructor(e,t,r){this.currentServiceId=e,this.partialState=t,this.chainSpec=r}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=new Uint8Array(2560);if(r.loadInto(n,i).isError)return Wn.Panic;if(s>=this.chainSpec.coresCount)return void t.set(7,Qa.CORE);const o=ae.fromBlob(n).sequenceFixLen(we.bytes(Re),80),a=ht.new(o,80);t.set(7,Qa.OK),this.partialState.updateAuthorizationQueue(mr(Number(s)),a)}},class{currentServiceId;partialState;chainSpec;index=zn(7);gasCost=co(10);constructor(e,t,r){this.currentServiceId=e,this.partialState=t,this.chainSpec=r}async execute(e,t,r){const s=t.get(7),i=new Uint8Array(ll*this.chainSpec.validatorsCount);if(r.loadInto(i,s).isError)return Wn.Panic;const n=ae.fromBlob(i).sequenceFixLen(ii.Codec,this.chainSpec.validatorsCount);t.set(7,Qa.OK),this.partialState.updateValidatorsData(Ar(n,this.chainSpec))}},class{currentServiceId;partialState;index=zn(8);gasCost=co(10);gasHostCall;constructor(e,t){this.currentServiceId=e,this.partialState=t,this.gasHostCall=new cl(e)}async execute(e,t){await this.gasHostCall.execute(e,t),this.partialState.checkpoint()}},class{currentServiceId;partialState;index=zn(9);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=yr(t.get(9)),o=yr(t.get(10)),a=U.zero(Re);if(r.loadInto(a.raw,s).isError)return Wn.Panic;const c=this.partialState.newService(a.asOpaque(),i,n,o);c.isOk?t.set(7,te(c.ok)):t.set(7,Qa.CASH)}},class{currentServiceId;partialState;index=zn(10);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=t.get(9),o=U.zero(Re);if(r.loadInto(o.raw,s).isError)return Wn.Panic;this.partialState.upgradeService(o.asOpaque(),i,n),t.set(7,Qa.OK)}},class{currentServiceId;partialState;index=zn(11);gasCost=e=>{const t=10n+e.get(9);return ho(t)};constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=qa(t.get(7)),i=t.get(8),n=yr(t.get(9)),o=t.get(10),a=U.zero(128);if(r.loadInto(a.raw,o).isError)return Wn.Panic;const c=this.partialState.transfer(s,i,n,a);if(c.isOk)return void t.set(7,Qa.OK);const l=c.error;l!==Wc.DestinationNotFound?l!==Wc.GasTooLow?l!==Wc.BalanceBelowThreshold?b(l):t.set(7,Qa.CASH):t.set(7,Qa.LOW):t.set(7,Qa.WHO)}},class{currentServiceId;partialState;index=zn(12);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=qa(t.get(7)),i=t.get(8),n=U.zero(Re).asOpaque();if(r.loadInto(n.raw,i).isError)return Wn.Panic;if(s===this.currentServiceId)return void t.set(7,Qa.WHO);const o=this.partialState.eject(s,n);if(o.isOk)return void t.set(7,Qa.OK);const a=o.error;a===Jc.InvalidService?t.set(7,Qa.WHO):a===Jc.InvalidPreimage?t.set(7,Qa.HUH):b(a)}},class{currentServiceId;partialState;index=zn(13);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=U.zero(Re);if(r.loadInto(n.raw,s).isError)return Wn.Panic;const o=this.partialState.checkPreimageStatus(n.asOpaque(),i),a=te(0n);if(null===o)return t.set(7,Qa.NONE),void t.set(8,a);switch(o.status){case qc.Requested:return t.set(7,a),void t.set(8,a);case qc.Available:return t.set(7,te(1n+(BigInt(o.data[0])<<32n))),void t.set(8,a);case qc.Unavailable:return t.set(7,te(2n+(BigInt(o.data[0])<<32n))),void t.set(8,te(o.data[1]));case qc.Reavailable:return t.set(7,te(3n+(BigInt(o.data[0])<<32n))),void t.set(8,te((BigInt(o.data[2])<<32n)+BigInt(o.data[1])))}}},class{currentServiceId;partialState;index=zn(14);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=U.zero(Re);if(r.loadInto(n.raw,s).isError)return Wn.Panic;const o=this.partialState.requestPreimage(n.asOpaque(),i);if(o.isOk)return void t.set(7,Qa.OK);const a=o.error;a!==zc.AlreadyAvailable&&a!==zc.AlreadyRequested?a!==zc.InsufficientFunds?b(a):t.set(7,Qa.FULL):t.set(7,Qa.HUH)}},class{currentServiceId;partialState;index=zn(15);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=t.get(8),n=U.zero(Re);if(r.loadInto(n.raw,s).isError)return Wn.Panic;this.partialState.forgetPreimage(n.asOpaque(),i).isOk?t.set(7,Qa.OK):t.set(7,Qa.HUH)}},class{currentServiceId;partialState;index=zn(16);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=t.get(7),i=U.zero(Re);if(r.loadInto(i.raw,s).isError)return Wn.Panic;this.partialState.yield(i),t.set(7,Qa.OK)}},class{currentServiceId;partialState;index=zn(27);gasCost=co(10);constructor(e,t){this.currentServiceId=e,this.partialState=t}async execute(e,t,r){const s=ja(7,t,this.currentServiceId),i=t.get(8),n=Wa(t.get(9)),o=O.blobFrom(new Uint8Array(n));if(r.loadInto(o.raw,i).isError)return Wn.Panic;const a=this.partialState.providePreimage(s,o);if(a.isOk)return void t.set(7,Qa.OK);const c=a.error;c!==Yc.ServiceNotFound?c!==Yc.WasNotRequested&&c!==Yc.AlreadyProvided?b(c):t.set(7,Qa.HUH):t.set(7,Qa.WHO)}}];var El;!function(e){e.IS_AUTHORIZED=hl(0),e.REFINE=hl(0),e.ACCUMULATE=hl(5),e.ON_TRANSFER=hl(10)}(El||(El={}));class Cl{serviceCode;entrypoint;pvm;hostCalls;pvmInstanceManager=new Va(4);constructor(e,t,r){this.serviceCode=e,this.entrypoint=r,this.hostCalls=new Ya(...t),this.pvm=new Ka(this.pvmInstanceManager,this.hostCalls)}static prepareAccumulateHostCalls(e,t,r){const s=Sl.map(s=>new s(e,t.partialState,r)),i=[new Al(e),new cl(e),new vl(e,t.serviceExternalities),new wl(e,t.serviceExternalities),new fl(e,t.fetchExternalities),new Il(e,t.serviceExternalities),new pl(e,t.serviceExternalities)];return s.concat(i)}static prepareOnTransferHostCalls(e,t){return[new Al(e),new cl(e),new vl(e,t.partialState),new wl(e,t.partialState),new Il(e,t.partialState),new pl(e,t.partialState)]}async run(e,t){const r=lc.fromSpi(this.serviceCode.raw,e.raw,!0);return this.pvm.runProgram(r.code,Number(this.entrypoint),t,r.registers,r.memory)}static createAccumulateExecutor(e,t,r,s){const i=Cl.prepareAccumulateHostCalls(e,r,s);return new Cl(t,i,El.ACCUMULATE)}static createOnTransferExecutor(e,t,r){const s=Cl.prepareOnTransferHostCalls(e,r);return new Cl(t,s,El.ON_TRANSFER)}}const kl=we.object({timeslot:we.u32.asOpaque(),serviceId:we.u32.asOpaque(),transfers:we.sequenceVarLen(tl.Codec)});var xl;!function(e){e[e.ServiceBalanceOverflow=1]="ServiceBalanceOverflow",e[e.ServiceInfoNotExist=2]="ServiceInfoNotExist"}(xl||(xl={}));const Bl=Gs.new(void 0,"deferred-transfers");class _l{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getPotentiallyUpdatedServiceInfo(e,t,r){if(r.includes(e))return null;const s=t.find(t=>t.serviceId===e);return void 0!==s?s.action.account:this.state.getService(e)?.getInfo()??null}getPotentiallyUpdatedPreimage(e,t,r){const s=e.findLast(e=>e.serviceId===t&&e.hash.isEqualTo(r));if(void 0===s)return this.state.getService(t)?.getPreimage(r)??null;switch(s.action.kind){case fi.Provide:return s.action.preimage.blob;case fi.Remove:return null;case fi.UpdateOrAdd:return this.state.getService(t)?.getPreimage(r)??null}}async transition({pendingTransfers:e,timeslot:t,servicesUpdates:r,servicesRemoved:s,preimages:i}){const n=new Map,o=[...r],a=function(e){const t=new Set;for(const r of e)t.add(r);return Array.from(t)}(e.flatMap(e=>[e.source,e.destination]));for(const r of a){const a=e.filter(e=>e.destination===r),c=this.getPotentiallyUpdatedServiceInfo(r,o,s);if(null===c)return _.error(xl.ServiceInfoNotExist);const l=c.codeHash,h=this.getPotentiallyUpdatedPreimage(i,r,l.asOpaque()),u=o.findIndex(e=>e.serviceId===r),d=se(c.balance,...a.map(e=>e.amount));if(d.overflow)return _.error(xl.ServiceBalanceOverflow);const g=li.create({...c,balance:d.value}),f=bi.update({serviceId:r,serviceInfo:g});if(u<0||o[u].action.kind===pi.Create?o.push(f):o[u]=f,null===h||0===a.length){Bl.trace(`Skipping ON_TRANSFER execution for service ${r}, code is null or no transfers`),n.set(r,{count:X(a.length),gasUsed:yr(0)});continue}const p=new sl(this.chainSpec,this.state,r,r,t),y=Cl.createOnTransferExecutor(r,h,{partialState:p}),m=ge.encodeObject(kl,{timeslot:t,serviceId:r,transfers:a},this.chainSpec),b=a.reduce((e,t)=>e+t.gas,0n),{consumedGas:A}=await y.run(m,ho(b));n.set(r,{count:X(a.length),gasUsed:yr(A)})}return _.ok({servicesUpdates:o,transferStatistics:n})}}class Rl extends w{static Codec=we.Class(Rl,{hash:we.bytes(Re).asOpaque(),exportsRoot:we.bytes(Re).asOpaque(),authorizerHash:we.bytes(Re).asOpaque(),payloadHash:we.bytes(Re),gas:we.varU64.asOpaque(),result:Tr.Codec,authorizationOutput:we.blob});hash;exportsRoot;authorizerHash;payloadHash;gas;result;authorizationOutput;static create({authorizationOutput:e,authorizerHash:t,exportsRoot:r,gas:s,hash:i,payloadHash:n,result:o}){return new Rl({gas:yr(s),payloadHash:n.asOpaque(),result:o,authorizationOutput:O.blobFrom(e.raw),exportsRoot:r.asOpaque(),hash:i.asOpaque(),authorizerHash:t.asOpaque()})}constructor(e){super(),this.gas=e.gas,this.payloadHash=e.payloadHash,this.result=e.result,this.authorizationOutput=e.authorizationOutput,this.exportsRoot=e.exportsRoot,this.hash=e.hash,this.authorizerHash=e.authorizerHash}static new(e){return new Rl(e)}}class Ol{static Codec=we.Class(Ol,{hash:we.bytes(Re).asOpaque(),exportsRoot:we.bytes(Re).asOpaque(),authorizerHash:we.bytes(Re).asOpaque(),authorizationOutput:we.blob,payloadHash:we.bytes(Re),result:Tr.Codec});hash;exportsRoot;authorizerHash;authorizationOutput;payloadHash;result;static create({authorizationOutput:e,authorizerHash:t,exportsRoot:r,hash:s,payloadHash:i,result:n}){return new Ol({payloadHash:i,result:n,authorizationOutput:e,exportsRoot:r,hash:s,authorizerHash:t})}constructor(e){this.payloadHash=e.payloadHash,this.result=e.result,this.authorizationOutput=e.authorizationOutput,this.exportsRoot=e.exportsRoot,this.hash=e.hash,this.authorizerHash=e.authorizerHash}static new(e){return new Ol(e)}}class Ul{operands;reportsLength;gasCost;constructor(e,t,r){this.operands=e,this.reportsLength=t,this.gasCost=r}static empty(){return new Ul([],X(0),yr(0n))}}class Tl{reportsDataByServiceId;autoAccumulateServicesByServiceId;serviceIds;constructor(e,t){const{autoAccumulateServicesByServiceId:r,serviceIds:s}=this.transformAutoAccumulateServices(t);this.autoAccumulateServicesByServiceId=r;const{reportsDataByServiceId:i,serviceIds:n}=this.transformReports(e);this.reportsDataByServiceId=i,this.serviceIds=this.mergeServiceIds(n,s)}mergeServiceIds(e,t){const r=new Set;for(const t of e)r.add(t);for(const e of t)r.add(e);return Array.from(r)}transformAutoAccumulateServices(e){const t=new Set,r=new Map;for(const s of e)r.set(s.service,s),t.add(s.service);return{autoAccumulateServicesByServiceId:r,serviceIds:t}}transformReports(e){const t=new Map,r=new Set;for(const s of e)for(const e of s.results){const i=e.serviceId;r.add(i);const n=t.get(i)??Ul.empty();n.reportsLength=X(n.reportsLength+1),n.gasCost=yr(n.gasCost+e.gas),n.operands.push(Rl.new({gas:e.gas,payloadHash:e.payloadHash,result:e.result,authorizationOutput:s.authorizationOutput,exportsRoot:s.workPackageSpec.exportsRoot,hash:s.workPackageSpec.hash,authorizerHash:s.authorizerHash})),t.set(i,n)}for(const e of r){const r=t.get(e)??null,s=this.autoAccumulateServicesByServiceId.get(e)??null;null!==r&&null!==s&&(r.gasCost=yr(r.gasCost+s.gasLimit))}return{reportsDataByServiceId:t,serviceIds:r}}getOperands(e){return this.reportsDataByServiceId.get(e)?.operands??[]}getReportsLength(e){return this.reportsDataByServiceId.get(e)?.reportsLength??X(0)}getGasCost(e){return this.reportsDataByServiceId.get(e)?.gasCost??yr(0n)}getServiceIds(){return this.serviceIds}}class Nl{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getWorkReportsToAccumulateImmediately(e){return e.filter(e=>0===e.context.prerequisites.length&&0===e.segmentRootLookup.length)}getWorkReportDependencies(e){return Array.from(ct.from(e.context.prerequisites.concat(e.segmentRootLookup.map(e=>e.workPackageHash))))}getWorkReportsToAccumulateLater(e){const t=this.state.recentlyAccumulated.flatMap(e=>Array.from(e));return Dl(e.filter(e=>e.context.prerequisites.length>0||e.segmentRootLookup.length>0).map(e=>Ui.create({report:e,dependencies:this.getWorkReportDependencies(e)})),ct.from(t))}enqueueReports(e){const t=[];let r=[...e];for(;r.length>0;){const e=r.filter(({dependencies:e})=>0===e.length).map(({report:e})=>e);if(0===e.length)return t;t.push(...e),r=Dl(r,nl(e))}return t}getQueueFromState(e){const t=e%this.chainSpec.epochLength,r=this.state.accumulationQueue.slice(t),s=this.state.accumulationQueue.slice(0,t);return r.concat(s).flat()}}function Dl(e,t){return e.filter(({report:e})=>!t.has(e.workPackageSpec.hash)).map(e=>{const{report:r,dependencies:s}=e;return Ui.create({report:r,dependencies:s.filter(e=>!t.has(e))})})}var Ml;!function(e){e[e.InvalidAnchor=0]="InvalidAnchor",e[e.InvalidOrder=1]="InvalidOrder",e[e.InvalidSignature=2]="InvalidSignature",e[e.NoReportPending=3]="NoReportPending",e[e.InvalidValidatorIndex=4]="InvalidValidatorIndex"}(Ml||(Ml={}));class Pl{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}async transition(e){const t=this.chainSpec.coresCount,r=this.verifySignatures(e.assurances),s=e.assurances.map(e=>e.materialize()),i=ht.new(Array(t).fill(0),t);let n=-1;for(const r of s){const{anchor:s,validatorIndex:o,bitfield:a}=r;if(!s.isEqualTo(e.parentHash))return _.error(Ml.InvalidAnchor,`anchor: expected: ${e.parentHash}, got ${s}`);if(n>=o)return _.error(Ml.InvalidOrder,`order: expected: ${n+1}, got: ${o}`);n=r.validatorIndex,y(a.bitLength===t,`Invalid bitfield length of ${a.bitLength}`);const c=a.indicesOfSetBits();for(const e of c)i[e]+=1}const o=[],a=[],c=this.chainSpec.validatorsSuperMajority;for(let r=0;r<t;r++){const t=i[r],s=this.state.availabilityAssignment[r],n=null!==s;if(t>0&&!n)return _.error(Ml.NoReportPending,`no report pending for core ${r} yet we got an assurance`);n&&(e.slot>=s.timeout+5&&a.push(r),t>=c&&(o.push(s.workReport.data),a.push(r)))}const l=await r;if(l.isError)return l;const h=this.state.availabilityAssignment.slice();for(const e of a)h[e]=null;return _.ok({availableReports:o,stateUpdate:{availabilityAssignment:h}})}async verifySignatures(e){const t=this.state.currentValidatorData,r=[];for(const s of e){const e=s.view(),i=t[e.validatorIndex.materialize()];if(void 0===i)return _.error(Ml.InvalidValidatorIndex);r.push({signature:e.signature.materialize(),key:i.ed25519,message:Hl(e.anchor.encoded(),e.bitfield.encoded())})}const s=await ir(r),i=s.every(e=>e);if(!i){const e=s.reduce((e,t,r)=>t?e:e.concat(r),[]);return _.error(Ml.InvalidSignature,`invalid signatures at ${e.join(", ")}`)}return _.ok(C)}}const Ll=O.blobFromString("jam_available").raw;function Hl(e,t){return O.blobFromParts(Ll,He(O.blobFromParts(e.raw,t.raw)).raw)}const Kl=O.blobFromString("peak");class Vl{hasher;mountains;static empty(e){return new Vl(e)}static fromPeaks(e,t){return new Vl(e,t.peaks.reduce((e,t,r)=>(null!==t&&e.push(Ql.fromPeak(t,2**r)),e),[]).reverse())}constructor(e,t=[]){this.hasher=e,this.mountains=t}append(e){let t=Ql.fromPeak(e,1);for(;;){const e=this.mountains.pop();if(void 0===e)return void this.mountains.push(t);if(e.size!==t.size)return this.mountains.push(e),void this.mountains.push(t);t=e.mergeWith(this.hasher,t)}}getSuperPeakHash(){if(0===this.mountains.length)return U.zero(Re).asOpaque();const e=this.mountains.slice().reverse(),t=e.length;let r=e[0].peak;for(let s=1;s<t;s++){const t=e[s];r=this.hasher.hashConcatPrepend(Kl,r,t.peak)}return r}getPeaks(){const e=[],t=this.mountains;let r=1,s=t.length-1;for(;s>=0;){const i=t[s];i.size>=r&&i.size<2*r?(e.push(i.peak),s-=1):e.push(null),r<<=1}return{peaks:e}}}class Ql{peak;size;constructor(e,t){this.peak=e,this.size=t}static fromPeak(e,t){return new Ql(e,t)}static fromChildren(e,t){const[r,s]=t,i=e.hashConcat(r.peak,s.peak),n=r.size+s.size;return new Ql(i,n)}mergeWith(e,t){return Ql.fromChildren(e,[this,t])}toString(){return`${this.size} @ ${this.peak}`}}var Fl;!function(e){e[e.BadCoreIndex=0]="BadCoreIndex",e[e.FutureReportSlot=1]="FutureReportSlot",e[e.ReportEpochBeforeLast=2]="ReportEpochBeforeLast",e[e.InsufficientGuarantees=3]="InsufficientGuarantees",e[e.OutOfOrderGuarantee=4]="OutOfOrderGuarantee",e[e.NotSortedOrUniqueGuarantors=5]="NotSortedOrUniqueGuarantors",e[e.WrongAssignment=6]="WrongAssignment",e[e.CoreEngaged=7]="CoreEngaged",e[e.AnchorNotRecent=8]="AnchorNotRecent",e[e.BadServiceId=9]="BadServiceId",e[e.BadCodeHash=10]="BadCodeHash",e[e.DependencyMissing=11]="DependencyMissing",e[e.DuplicatePackage=12]="DuplicatePackage",e[e.BadStateRoot=13]="BadStateRoot",e[e.BadBeefyMmrRoot=14]="BadBeefyMmrRoot",e[e.CoreUnauthorized=15]="CoreUnauthorized",e[e.BadValidatorIndex=16]="BadValidatorIndex",e[e.WorkReportGasTooHigh=17]="WorkReportGasTooHigh",e[e.ServiceItemGasTooLow=18]="ServiceItemGasTooLow",e[e.TooManyDependencies=19]="TooManyDependencies",e[e.SegmentRootLookupInvalid=20]="SegmentRootLookupInvalid",e[e.BadSignature=21]="BadSignature",e[e.WorkReportTooBig=22]="WorkReportTooBig"}(Fl||(Fl={}));const Gl=we.object({B_I:we.u64,B_L:we.u64,B_S:we.u64,C:we.u16,D:we.u32,E:we.u32,G_A:we.u64,G_I:we.u64,G_R:we.u64,G_T:we.u64,H:we.u16,I:we.u16,J:we.u16,L:we.u32,O:we.u16,P:we.u16,Q:we.u16,R:we.u16,S:we.u16,T:we.u16,U:we.u16,V:we.u16,W_A:we.u16,W_B:we.u32,W_C:we.u32,W_E:we.u32,W_G:we.u32,W_M:we.u32,W_P:we.u32,W_R:we.u32,W_T:we.u32,W_X:we.u32,Y:we.u32}),$l=new Map;class jl{entropyHash;operands;chainSpec;constructor(e,t,r){this.entropyHash=e,this.operands=t,this.chainSpec=r}constants(){return function(e){const t=$l.get(e);if(void 0!==t)return t;const r=ge.encodeObject(Gl,{B_I:te(10n),B_L:te(1n),B_S:te(100n),C:Y(e.coresCount),D:X(e.preimageExpungePeriod),E:X(e.epochLength),G_A:te(zl),G_I:te(5e7),G_R:te(5e9),G_T:te(Wl),H:Y(8),I:Y(_r),J:Y(8),L:X(14400),O:Y(8),P:Y(e.slotDuration),Q:Y(80),R:Y(0),S:Y(1024),T:Y(e.rotationPeriod),U:Y(5),V:Y(0),W_A:Y(e.validatorsCount),W_B:X(13794305),W_C:X(4e6),W_E:X(684),W_G:X(4104),W_M:X(3072),W_P:X(6),W_R:X(49152),W_T:X(128),W_X:X(3072),Y:X(e.contestLength)});return $l.set(e,r),r}(this.chainSpec)}entropy(){return this.entropyHash.asOpaque()}authorizerTrace(){return null}workItemExtrinsic(e,t){return null}workItemImport(e,t){return null}workPackage(){return null}authorizer(){return null}authorizationToken(){return null}refineContext(){return null}allWorkItems(){return null}oneWorkItem(e){return null}workItemPayload(e){return null}allOperands(){return p.is(h.V0_6_4)?ge.encodeObject(we.sequenceVarLen(Ol.Codec),this.operands,this.chainSpec):ge.encodeObject(we.sequenceVarLen(Rl.Codec),this.operands,this.chainSpec)}oneOperand(e){if(e>=2n**32n)return null;const t=this.operands[Number(e)];return void 0===t?null:p.isGreaterOrEqual(h.V0_6_5)?ge.encodeObject(Rl.Codec,t,this.chainSpec):ge.encodeObject(Ol.Codec,t,this.chainSpec)}allTransfers(){return null}oneTransfer(e){return null}}var ql;!function(e){e[e.NoService=0]="NoService",e[e.NoPreimage=1]="NoPreimage"}(ql||(ql={}));const zl=10000000n,Wl=3500000000n,Jl=Gs.new(void 0,"accumulate"),Yl=we.object({slot:we.u32.asOpaque(),serviceId:we.u32.asOpaque(),operands:we.sequenceVarLen(Ol.Codec)}),Zl=we.object({slot:we.u32.asOpaque(),serviceId:we.u32.asOpaque(),operands:we.sequenceVarLen(Rl.Codec)}),Xl=we.object({slot:we.varU32.asOpaque(),serviceId:we.varU32.asOpaque(),operands:we.varU32});class eh{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}findReportCutoffIndex(e,t){const r=t.length;let s=0n;for(let i=0;i<r;i++){const r=t[i].results.map(e=>e.gas).reduce((e,t)=>e+t,0n);if(s+r>e)return i;s+=r}return r}async pvmAccumulateInvocation(e,t,r,s,i,n){const o=this.state.getService(t);if(null===o)return Jl.log(`Service with id ${t} not found.`),_.error(ql.NoService);const a=o.getInfo().codeHash,c=o.getPreimage(a.asOpaque());if(null===c)return Jl.log(`Code with hash ${a} not found for service ${t}.`),_.error(ql.NoPreimage);const l=function({serviceId:e,entropy:t,timeslot:r},s){const i=ne(He(ge.encodeObject(ol,{serviceId:e,entropy:t,timeslot:r},s)).raw.subarray(0,4))>>>0;return pr(i%(2**32-512)+256)}({serviceId:t,entropy:i,timeslot:e},this.chainSpec),u=new sl(this.chainSpec,this.state,t,l,e,n),d={partialState:u,serviceExternalities:u,fetchExternalities:new jl(i,r,this.chainSpec)},g=Cl.createAccumulateExecutor(t,c,d,this.chainSpec);let f=O.empty();f=p.is(h.V0_6_4)?ge.encodeObject(Yl,{slot:e,serviceId:t,operands:r},this.chainSpec):p.is(h.V0_6_5)?ge.encodeObject(Zl,{slot:e,serviceId:t,operands:r},this.chainSpec):ge.encodeObject(Xl,{slot:e,serviceId:t,operands:X(r.length)});const y=await g.run(f,ho(s)),[m,b]=u.getStateUpdates();if(y.hasStatus()){const e=y.status;if(e===jn.OOG||e===jn.PANIC)return _.ok({stateUpdate:b,consumedGas:yr(y.consumedGas)})}if(y.hasMemorySlice()&&y.memorySlice.length===Re){const e=U.fromBlob(y.memorySlice,Re);m.yieldedRoot=e.asOpaque()}return _.ok({stateUpdate:m,consumedGas:yr(y.consumedGas)})}async accumulateSingleService(e,t,r,s,i,n){Jl.trace(`Accumulating service ${e}, items: ${t.length} at slot: ${s}.`);const o=await this.pvmAccumulateInvocation(s,e,t,r,i,n);return o.isError?(Jl.trace(`Accumulation failed for ${e}.`),{stateUpdate:null,consumedGas:r}):(Jl.trace(`Accumulation successful for ${e}.`),o.ok)}async accumulateSequentially(e,t,r,s,i,n){const o=this.findReportCutoffIndex(e,t);if(0===o)return{accumulatedReports:X(0),gasCost:yr(0),yieldedRoots:[],pendingTransfers:[],stateUpdates:[]};const a=t.slice(0,o),c=this.state.privilegedServices.autoAccumulateServices,l=new Tl(a,c),h=t.slice(o),{gasCost:u,yieldedRoots:d,pendingTransfers:g,stateUpdates:f,...p}=await this.accumulateInParallel(l,r,s,i,n);A(p);const y=this.mergeServiceStateUpdates(f);if(y.isError)throw new Error("we should be returning Result here");const{accumulatedReports:m,gasCost:b,yieldedRoots:I,pendingTransfers:v,stateUpdates:w,...S}=await this.accumulateSequentially(yr(e-u),h,r,s,i,y.ok);return A(S),{accumulatedReports:X(o+m),gasCost:yr(u+b),yieldedRoots:d.concat(I),pendingTransfers:g.concat(v),stateUpdates:f.concat(w)}}async accumulateInParallel(e,t,r,s,i){const n=e.getServiceIds(),o=[];let a=yr(0);const c=[],l=[];for(const h of n){const{consumedGas:n,stateUpdate:u}=await this.accumulateSingleService(h,e.getOperands(h),e.getGasCost(h),t,r,rl.copyFrom(i));a=yr(a+n);const d=s.get(h)??{count:X(0),gasUsed:yr(0)};d.count=X(d.count+e.getReportsLength(h)),d.gasUsed=yr(d.gasUsed+n),s.set(h,d),null!==u&&(o.push([h,u]),l.push(...u.transfers),null!==u.yieldedRoot&&c.push([h,u.yieldedRoot]))}return{stateUpdates:o,pendingTransfers:l,yieldedRoots:c,gasCost:a}}mergeServiceStateUpdates(e){const{authManager:t,manager:r,validatorsManager:s}=this.state.privilegedServices;let i=null;const n=this.state.authQueues.slice();let o=!1,a=null;const c=[];for(const[l,h]of e){if(l===r&&null!==h.privilegedServices){const{manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s}=h.privilegedServices;y(null===i,"Only one service can update privileged services!"),i=ri.create({manager:e,authManager:t,validatorsManager:r,autoAccumulateServices:s})}if(l===t&&null!==h.authorizationQueues)for(const[e,t]of h.authorizationQueues)n[e]=t,o=!0;l===s&&null!==h.validatorsData&&(y(null===a,"Only one service can update designated validators!"),a=h.validatorsData),c.push(h.services)}const l=c.reduce((e,t)=>(e.servicesRemoved.push(...t.servicesRemoved),e.servicesUpdates.push(...t.servicesUpdates),e.preimages.push(...t.preimages),e.storage.push(...t.storage),e),{servicesRemoved:[],servicesUpdates:[],preimages:[],storage:[]}),h=new Set;for(const e of l.servicesUpdates)if(e.action.kind===pi.Create){if(h.has(e.serviceId))return _.error("duplicate service created",`duplicate service ${e.serviceId} has been created!`);h.add(e.serviceId)}const u=rl.new(l);if(null!==i&&(u.privilegedServices=i),null!==a&&(u.validatorsData=a),o)for(const[e,t]of n.entries())u.authorizationQueues.set(mr(e),t);return _.ok(u)}getAccumulationStateUpdate(e,t,r){const s=this.chainSpec.epochLength,i=r%s,n=nl(e),o=Array.from(n).sort((e,t)=>ei(e,t).value),a=vr(this.state.recentlyAccumulated.slice(1).concat(ct.from(o)),this.chainSpec),c=this.state.accumulationQueue.slice();c[i]=Dl(t,n);for(let e=1;e<s;e++)if(e<r-this.state.timeslot)c[(i+s-e)%s]=[];else{const t=(i+s-e)%s;c[t]=Dl(c[t],n)}return{recentlyAccumulated:a,accumulationQueue:vr(c,this.chainSpec),timeslot:r}}getGasLimit(){const e=zl*BigInt(this.chainSpec.coresCount)+this.state.privilegedServices.autoAccumulateServices.reduce((e,{gasLimit:t})=>e+t,0n),t=yr(Wl>e?Wl:e);return yr(t)}async transition({reports:e,slot:t,entropy:r}){const s=new Map,i=new Nl(this.chainSpec,this.state),n=i.getWorkReportsToAccumulateImmediately(e),o=i.getWorkReportsToAccumulateLater(e),a=Dl(i.getQueueFromState(t).concat(o),nl(n)),c=i.enqueueReports(a),l=n.concat(c),h=this.getGasLimit(),{accumulatedReports:u,yieldedRoots:d,gasCost:g,pendingTransfers:f,stateUpdates:p,...y}=await this.accumulateSequentially(h,l,t,r,s,rl.empty());A(y);const m=l.slice(0,u),b=this.getAccumulationStateUpdate(m,o,t),I=this.mergeServiceStateUpdates(p);if(I.isError)return I;const v=await async function(e){const t=await nt.create(),r=(s=t,{hashConcat:(e,t=[])=>ot(s,[e,...t].map(O.blobFrom)).asOpaque()});var s;return function(e,t){return 1===e.length?t.hashConcat(e[0].raw):function e(t,r){if(0===t.length)return U.zero(Re).asOpaque();if(1===t.length)return t[0];const s=Math.ceil(t.length/2),i=t.slice(0,s),n=t.slice(s);return r.hashConcat(O.blobFromString("node").raw,[e(i,r).raw,e(n,r).raw])}(e,t)}(e.sort((e,t)=>e[0]-t[0]).map(([e,t])=>O.blobFromParts([ie(e),t.raw])),r)}(d);return _.ok({root:v,stateUpdate:{...b,...I.ok.services},accumulationStatistics:s,pendingTransfers:f})}}class th{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}transition(e){const t=this.state.authPools.slice();for(let r=mr(0);r<this.chainSpec.coresCount;r++){let s=t[r].slice();const i=this.state.authQueues[r],n=e.used.get(r);for(void 0!==n&&(s=s.filter(e=>!n.delete(e))),s.push(i[e.slot%80]);s.length>8;)s.shift();t[r]=lt(s)}return{authPools:Ws(t,this.chainSpec)}}}class rh{hasher;state;constructor(e,t){this.hasher=e,this.state=t}transition(e){const t=this.state.recentBlocks.slice(),r=t.length>0?t[t.length-1]:null;null!==r&&(r.postStateRoot=e.priorStateRoot);const s=null!==r?Vl.fromPeaks(this.hasher,r.mmr):Vl.empty(this.hasher);return s.append(e.accumulateRoot),t.push({headerHash:e.headerHash,mmr:s.getPeaks(),postStateRoot:U.zero(Re).asOpaque(),reported:e.workPackages}),t.length>8&&t.shift(),{recentBlocks:t}}}function sh(e,t,r){return function(e,t,r){const s=ih(gr(t%r.epochLength),r.rotationPeriod),i=(n=function(e,t){y(32===t.length,`Expected entropy of length 32, got ${t.length}`);const r=e.length,s=function(e,t){const r=new Array(t),s=new Uint8Array(36);s.set(e.raw);for(let e=0;e<t;e++){s.set(ie(X(Math.floor(e/8))),32);const t=4*e%32,i=t+4,n=ne(He(s).raw.subarray(t,i))>>>0;r[e]=n}return r}(t,e.length),i=new Array(r);let n=r;for(let t=0;t<r;t++){const r=s[t]%n;i[t]=e[r],n--,e[r]=e[n],e.length=n}return i}(Array(r.validatorsCount).fill(0).map((e,t)=>mr(Math.floor(t*r.coresCount/r.validatorsCount))),e),o=s,a=r.coresCount,n.map(e=>(e+o)%a));var n,o,a;return i}(t,r,e)}function ih(e,t){return Math.floor(e/t)}const nh=O.blobFromString("jam_guarantee").raw;function oh(e){return O.blobFromParts(nh,e.raw)}const ah=1e7;class ch{chainSpec;state;mmrHasher;headerChain;constructor(e,t,r,s){this.chainSpec=e,this.state=t,this.mmrHasher=r,this.headerChain=s}async transition(e){const t=function(e,t){const r=t.coresCount;let s=-1;for(const t of e){const e=t.view().report.view().coreIndex.materialize();if(s>=e)return _.error(Fl.OutOfOrderGuarantee,`Core indices of work reports are not unique or in order. Got: ${e}, expected at least: ${s+1}`);if(e>=r)return _.error(Fl.BadCoreIndex,`Invalid core index. Got: ${e}, max: ${r}`);s=e}return _.ok(C)}(e.guarantees,this.chainSpec);if(t.isError)return t;const r=function(e){for(const t of e){const e=t.view().report.view(),r=e.context.view().prerequisites.view().length,s=e.segmentRootLookup.view().length;if(r+s>8)return _.error(Fl.TooManyDependencies,`Report at ${e.coreIndex.materialize()} has too many dependencies. Got ${r} + ${s}, max: 8`);const i=e.authorizationOutput.view().length;let n=0;for(const t of e.results.view())n+=t.view().result.view().okBlob?.raw.length??0;if(i+n>49152)return _.error(Fl.WorkReportTooBig,`Work report at ${e.coreIndex.materialize()} too big. Got ${i} + ${n}, max: 49152`)}return _.ok(C)}(e.guarantees);if(r.isError)return r;const s=this.workReportHashes(e.guarantees),i=this.verifyCredentials(e,s);if(i.isError)return i;const n=ir(i.ok),o=this.verifyPostSignatureChecks(e.guarantees);if(o.isError)return o;const a=this.verifyContextualValidity(e);if(a.isError)return a;const c=this.checkSignatures(i.ok,await n);if(c.isError)return c;let l=0;const h=this.state.availabilityAssignment.slice();for(const t of e.guarantees){const r=t.view().report.materialize(),i=s[l];h[r.coreIndex]=qs.create({workReport:new Oe(i,r),timeout:e.slot}),l+=1}return _.ok({stateUpdate:{availabilityAssignment:Ws(h,this.chainSpec)},reported:a.ok,reporters:dt.fromArray(F,i.ok.map(e=>e.key)).slice()})}workReportHashes(e){const t=[];for(const r of e)t.push(S(He(r.view().report.encoded())));return t}verifyCredentials(e,t){return function(e,t,r,s){const i=[],n=r;let o=0;for(const r of e){const e=r.view(),a=e.report.view().coreIndex.materialize(),c=t[o];o+=1;const l=e.credentials.view();if(l.length<Hr[0]||l.length>Hr[1])return _.error(Fl.InsufficientGuarantees,`Invalid number of credentials. Expected ${Hr}, got ${l.length}`);const h=s(n,e.slot.materialize());if(h.isError)return h;const u=h.ok;let d=-1;for(const e of l){const t=e.view(),r=t.validatorIndex.materialize();if(d>=r)return _.error(Fl.NotSortedOrUniqueGuarantors,`Credentials must be sorted by validator index. Got ${r}, expected at least ${d+1}`);d=r;const s=t.signature.materialize(),n=u[r];if(void 0===n)return _.error(Fl.BadValidatorIndex,`Invalid validator index: ${r}`);if(n.core!==a)return _.error(Fl.WrongAssignment,`Invalid core assignment for validator ${r}. Expected: ${n.core}, got: ${a}`);i.push({signature:s,key:n.ed25519,message:oh(c)})}}return _.ok(i)}(e.guarantees,t,e.slot,(e,t)=>this.getGuarantorAssignment(e,t))}verifyPostSignatureChecks(e){return function(e,t,r,s){for(const i of e){const e=i.materialize().report,n=e.coreIndex;if(null!==t[n])return _.error(Fl.CoreEngaged,`Report pending availability at core: ${n}`);const o=e.authorizerHash;if(void 0===r[n].find(e=>e.isEqualTo(o)))return _.error(Fl.CoreUnauthorized,`Authorizer hash not found in the pool of core ${n}: ${o}`);for(const t of e.results){const e=s(t.serviceId);if(null===e)return _.error(Fl.BadServiceId,`No service with id: ${t.serviceId}`);const r=e.getInfo();if(t.gas<r.accumulateMinGas)return _.error(Fl.ServiceItemGasTooLow,`Service (${t.serviceId}) gas is less than minimal. Got: ${t.gas}, expected at least: ${r.accumulateMinGas}`)}const a=se(...e.results.map(e=>e.gas));if(a.overflow||a.value>ah)return _.error(Fl.WorkReportGasTooHigh,`Total gas too high. Got: ${a.value} (ovfl: ${a.overflow}), maximal: ${ah}`)}return _.ok(C)}(e,this.state.availabilityAssignment,this.state.authPools,e=>this.state.getService(e))}verifyContextualValidity(e){return function(e,t,r,s){const i=[],n=at.new(),o=ct.new(),a=ct.new();for(const r of e.guarantees){const e=r.materialize();i.push(e.report.context);const s=Pr.create({workPackageHash:e.report.workPackageSpec.hash,segmentTreeRoot:e.report.workPackageSpec.exportsRoot});n.set(s.workPackageHash,s),o.insertAll(e.report.context.prerequisites),a.insertAll(e.report.segmentRootLookup.map(e=>e.workPackageHash));for(const r of e.report.results){const e=t.getService(r.serviceId);if(null===e)return _.error(Fl.BadServiceId,`No service with id: ${r.serviceId}`);if(!r.codeHash.isEqualTo(e.getInfo().codeHash))return _.error(Fl.BadCodeHash,`Service (${r.serviceId}) code hash mismatch. Got: ${r.codeHash}, expected: ${e.getInfo().codeHash}`)}}if(n.size!==e.guarantees.length)return _.error(Fl.DuplicatePackage,"Duplicate work package detected.");const c=function(e,t,r,s,i){const n=at.new();for(const e of r.recentBlocks)n.set(e.headerHash,e);for(const r of t){const t=n.get(r.anchor);if(void 0===t)return _.error(Fl.AnchorNotRecent,`Anchor block ${r.anchor} not found in recent blocks.`);if(!t.postStateRoot.isEqualTo(r.stateRoot))return _.error(Fl.BadStateRoot,`Anchor state root mismatch. Got: ${r.stateRoot}, expected: ${t.postStateRoot}.`);const o=Vl.fromPeaks(s,t.mmr).getSuperPeakHash();if(!o.isEqualTo(r.beefyRoot))return _.error(Fl.BadBeefyMmrRoot,`Invalid BEEFY super peak hash. Got: ${r.beefyRoot}, expected: ${o}. Anchor: ${t.headerHash}`);if(r.lookupAnchorSlot<e)return _.error(Fl.SegmentRootLookupInvalid,`Lookup anchor slot's too old. Got: ${r.lookupAnchorSlot}, minimal: ${e}`);if(!i.isInChain(r.lookupAnchor))return _.error(Fl.SegmentRootLookupInvalid,`Lookup anchor is not found in chain. Hash: ${r.lookupAnchor} (slot: ${r.lookupAnchorSlot})`)}return _.ok(C)}(Math.max(0,e.slot-14400),i,t,r,s);if(c.isError)return c;const l=function(e,t){const r=ct.new();for(const e of t.recentBlocks)r.insertAll(Array.from(e.reported.keys()));for(const e of t.recentlyAccumulated)r.insertAll(Array.from(e));for(const e of t.accumulationQueue)r.insertAll(e.map(e=>e.report.workPackageSpec.hash));for(const e of t.availabilityAssignment)null!==e&&r.insert(e.workReport.data.workPackageSpec.hash);const s=r.intersection(e);for(const e of s)return _.error(Fl.DuplicatePackage,`The same work package hash found in the pipeline (workPackageHash: ${e})`);return _.ok(C)}(ct.viewDictionaryKeys(n),t);if(l.isError)return l;const h=at.new();for(const e of t.recentBlocks)for(const t of e.reported.values())h.set(t.workPackageHash,t.segmentTreeRoot);const u=function({currentWorkPackages:e,recentlyReported:t,prerequisiteHashes:r,segmentRootLookupHashes:s}){const i=(r,s=!1)=>{for(const i of r)if(!e.has(i)&&!t.has(i))return _.error(s?Fl.SegmentRootLookupInvalid:Fl.DependencyMissing,`Missing work package ${i} in current extrinsic or recent history.`);return _.ok(C)},n=i(r);if(n.isError)return n;const o=i(s,!0);return o.isError?o:_.ok(C)}({currentWorkPackages:n,recentlyReported:h,prerequisiteHashes:o,segmentRootLookupHashes:a});if(u.isError)return u;for(const t of e.guarantees){const e=t.materialize().report;for(const t of e.segmentRootLookup){let e=n.get(t.workPackageHash);if(void 0===e){const r=h.get(t.workPackageHash);e=void 0!==r?Pr.create({workPackageHash:t.workPackageHash,segmentTreeRoot:r}):void 0}if(void 0===e||!e.segmentTreeRoot.isEqualTo(t.segmentTreeRoot))return _.error(Fl.SegmentRootLookupInvalid,`Mismatching segment tree root for package ${t.workPackageHash}. Got: ${t.segmentTreeRoot}, expected: ${e?.segmentTreeRoot}`)}}return _.ok(n)}(e,this.state,this.mmrHasher,this.headerChain)}checkSignatures(e,t){if(t.every(e=>e))return _.ok(C);const r=t.map((t,r)=>t?null:e[r].key).filter(e=>null!==e);return _.error(Fl.BadSignature,`Invalid signatures for validators with keys: ${r.join(", ")}`)}getGuarantorAssignment(e,t){const r=this.chainSpec.epochLength,s=this.chainSpec.rotationPeriod,i=ih(e,s),n=ih(t,s),o=Math.max(0,i-1)*s;if(t>e)return _.error(Fl.FutureReportSlot,`Report slot is in future. Block ${e}, Report: ${t}`);if(t<o)return _.error(Fl.ReportEpochBeforeLast,`Report slot is too old. Block ${e}, Report: ${t}`);let a=this.state.entropy[2],c=this.state.currentValidatorData,l=e;i>n&&(l=gr(e-s),function(e,t,r){const s=Math.floor(t/r);return Math.floor(e/r)!==s}(l,e,r)&&(a=this.state.entropy[3],c=this.state.previousValidatorData));const h=sh(this.chainSpec,a,l);return _.ok((u=c,d=(e,t)=>({core:e,ed25519:t.ed25519}),h.map((e,t)=>d(e,u[t]))));var u,d}}class lh{chainSpec;state;constructor(e,t){this.chainSpec=e,this.state=t}getStatistics(e){if(Math.floor(this.state.timeslot/this.chainSpec.epochLength)===Math.floor(e/this.chainSpec.epochLength))return this.state.statistics;const t=Ar(Array.from({length:this.chainSpec.validatorsCount},()=>vi.empty()),this.chainSpec);return ki.create({...this.state.statistics,current:t,previous:this.state.statistics.current})}calculateDAScoreCore(e){if(void 0===e)return X(0);let t=0;return t+=e.workPackageSpec.length+4104*Math.ceil(65*e.workPackageSpec.exportsCount/64),X(t)}calculateRefineScore(e){const t={gasUsed:0n,imported:0,extrinsicCount:0,extrinsicSize:0,exported:0};for(const r of e)t.gasUsed+=r.load.gasUsed,t.imported+=r.load.importedSegments,t.extrinsicCount+=r.load.extrinsicCount,t.extrinsicSize+=r.load.extrinsicSize,t.exported+=r.load.exportedSegments;return{gasUsed:yr(t.gasUsed),exported:Y(t.exported),imported:Y(t.imported),extrinsicCount:Y(t.extrinsicCount),extrinsicSize:X(t.extrinsicSize)}}calculateProvidedScoreService(e){const t={count:0,size:0};for(const r of e)t.count+=1,t.size+=r.blob.length;return{count:Y(t.count),size:X(t.size)}}collectServiceIds(e,t,r,s){const i=new Set;for(const t of e)i.add(t.requester);for(const e of t)i.add(e.serviceId);for(const e of r)i.add(e);for(const e of s)i.add(e);return i}transition(e){const{slot:t,authorIndex:r,extrinsic:s,incomingReports:i,availableReports:n}=e,o=this.getStatistics(t),{current:a,cores:c,services:l}=o;y(void 0!==a[r],"authorIndex is out of bounds");const h=a[r].blocks+1;a[r].blocks=X(h);const u=a[r].tickets+s.tickets.length;a[r].tickets=X(u);const d=a[r].preImages+s.preimages.length;a[r].preImages=X(d);const g=s.preimages.reduce((e,t)=>e+t.blob.length,0),f=a[r].preImagesSize+g;a[r].preImagesSize=X(f);for(const{credentials:e}of s.guarantees)for(const{validatorIndex:t}of e){const e=a[t].guarantees+1;a[t].guarantees=X(e)}for(const{validatorIndex:e}of s.assurances){const t=a[e].assurances+1;a[e].assurances=X(t)}for(let e=0;e<this.chainSpec.coresCount;e++){const t=mr(e),r=i.find(e=>e.coreIndex===t),{imported:o,extrinsicCount:a,extrinsicSize:l,exported:h,gasUsed:u}=void 0!==r?this.calculateRefineScore(r.results.map(e=>e)):{imported:Y(0),extrinsicCount:Y(0),extrinsicSize:X(0),exported:Y(0),gasUsed:yr(0n)},d=n.find(e=>e.coreIndex===t),g=s.assurances.reduce((t,{bitfield:r})=>t+(r.isSet(e)?1:0),0);c[t].imports=o,c[t].extrinsicCount=a,c[t].extrinsicSize=l,c[t].exports=h,c[t].gasUsed=u,c[t].bundleSize=X(r?.workPackageSpec.length??0),c[t].dataAvailabilityLoad=this.calculateDAScoreCore(d),c[t].popularity=Y(g)}l.clear();const p=this.collectServiceIds(s.preimages,i.flatMap(e=>e.results),e.accumulationStatistics.keys(),e.transferStatistics.keys());for(const t of p){const r=i.flatMap(e=>e.results.filter(e=>e.serviceId===t)),{gasUsed:n,imported:o,extrinsicCount:a,extrinsicSize:c,exported:h}=this.calculateRefineScore(r),u=s.preimages.filter(e=>e.requester===t),{count:d,size:g}=this.calculateProvidedScoreService(u),{count:f,gasUsed:p}=e.accumulationStatistics.get(t)??{count:X(0),gasUsed:yr(0n)},{count:y,gasUsed:m}=e.transferStatistics.get(t)??{count:X(0),gasUsed:yr(0n)},b=Ci.empty();b.refinementCount=X(r.length),b.refinementGasUsed=n,b.imports=o,b.extrinsicCount=a,b.extrinsicSize=c,b.exports=h,b.providedCount=d,b.providedSize=g,b.providedCount=d,b.providedSize=g,b.accumulateCount=f,b.accumulateGasUsed=p,b.onTransfersCount=y,b.onTransfersGasUsed=m,l.set(t,b)}return{statistics:o}}}class hh{blocks;constructor(e){this.blocks=e}isInChain(e){return null!==this.blocks.getHeader(e)}}var uh;!function(e){e[e.Assurances=0]="Assurances",e[e.Disputes=1]="Disputes",e[e.Safrole=2]="Safrole",e[e.Reports=3]="Reports",e[e.Preimages=4]="Preimages",e[e.SafroleSeal=5]="SafroleSeal",e[e.Accumulate=6]="Accumulate",e[e.DeferredTransfers=7]="DeferredTransfers"}(uh||(uh={}));const dh=(e,t)=>_.taggedError(uh,e,t);class gh{chainSpec;state;hasher;safrole;safroleSeal;disputes;reports;assurances;accumulate;deferredTransfers;preimages;recentHistory;authorization;statistics;constructor(e,t,r,s,{enableParallelSealVerification:i}){this.chainSpec=e,this.state=t,this.hasher=s;const n=Fc.new({synchronous:!i});this.statistics=new lh(e,t),this.safrole=new Zc(e,t,n),this.safroleSeal=new Xc(n),this.recentHistory=new rh(s,t),this.disputes=new xc(e,t),this.reports=new ch(e,t,s,new hh(r)),this.assurances=new Pl(e,t),this.accumulate=new eh(e,t),this.deferredTransfers=new _l(e,t),this.preimages=new pc(t),this.authorization=new th(e,t)}async verifySeal(e,t){const r=this.safrole.getSafroleSealState(e);return await this.safroleSeal.verifyHeaderSeal(t.header.view(),r)}async transition(e,t,r=null,s=!1){const i=e.header.materialize(),n=i.timeSlotIndex;let o=r;if(s&&(o=He(i.seal).asOpaque()),null===o){const t=await this.verifySeal(n,e);if(t.isError)return dh(uh.SafroleSeal,t);o=t.ok}const a=await this.disputes.transition(e.extrinsic.view().disputes.materialize());if(a.isError)return dh(uh.Disputes,a);const{disputesRecords:c,availabilityAssignment:l,...h}=a.ok.stateUpdate;A(h);const u=await this.reports.transition({slot:n,guarantees:e.extrinsic.view().guarantees.view(),knownPackages:[]});if(u.isError)return dh(uh.Reports,u);const{availabilityAssignment:d,...g}=u.ok.stateUpdate;A(g);const f=await this.assurances.transition({assurances:e.extrinsic.view().assurances.view(),slot:n,parentHash:i.parentHeaderHash});if(f.isError)return dh(uh.Assurances,f);const{availabilityAssignment:p,...y}=f.ok.stateUpdate;A(y);const m=await this.safrole.transition({slot:n,entropy:o,extrinsic:e.extrinsic.view().tickets.materialize()});if(m.isError)return dh(uh.Safrole,m);const{timeslot:b,ticketsAccumulator:I,sealingKeySeries:v,epochRoot:w,entropy:S,nextValidatorData:E,currentValidatorData:C,previousValidatorData:k,...x}=m.ok.stateUpdate;A(x);const B=this.preimages.integrate({slot:n,preimages:e.extrinsic.view().preimages.materialize()});if(B.isError)return dh(uh.Preimages,B);const{preimages:R,...O}=B.ok;A(O);const U=await this.accumulate.transition({slot:n,reports:f.ok.availableReports,entropy:S[0]});if(U.isError)return dh(uh.Accumulate,U);const{root:T,stateUpdate:N,accumulationStatistics:D,pendingTransfers:M,...P}=U.ok;A(P);const{privilegedServices:L,authQueues:H,designatedValidatorData:K,timeslot:V,preimages:Q,...F}=N,G=await this.deferredTransfers.transition({pendingTransfers:M,...F,preimages:Q,timeslot:n});if(G.isError)return dh(uh.DeferredTransfers,G);const{servicesUpdates:$,transferStatistics:j,...q}=G.ok;A(q),F.servicesUpdates=$;const z=this.recentHistory.transition({headerHash:t,priorStateRoot:i.priorStateRoot,accumulateRoot:T,workPackages:u.ok.reported}),{recentBlocks:W,...J}=z;A(J);const Y=this.authorization.transition({slot:n,used:this.getUsedAuthorizerHashes(e.extrinsic.view().guarantees.view())}),{authPools:Z,...X}=Y;A(X);const ee=e.extrinsic.materialize(),te=this.statistics.transition({slot:n,authorIndex:i.bandersnatchBlockAuthorIndex,extrinsic:ee,incomingReports:ee.guarantees.map(e=>e.report),availableReports:f.ok.availableReports,accumulationStatistics:D,transferStatistics:j}),{statistics:re,...se}=te;return A(se),_.ok({...void 0!==H?{authQueues:H}:{},...void 0!==K?{designatedValidatorData:K}:{},...void 0!==L?{privilegedServices:L}:{},authPools:Z,preimages:R.concat(Q),disputesRecords:c,availabilityAssignment:fh(this.state.availabilityAssignment,d,l,p),recentBlocks:W,statistics:re,timeslot:b,epochRoot:w,entropy:S,currentValidatorData:C,nextValidatorData:E,previousValidatorData:k,sealingKeySeries:v,ticketsAccumulator:I,...F})}getUsedAuthorizerHashes(e){const t=new Map;for(const r of e){const e=r.view().report.view(),s=e.coreIndex.materialize(),i=t.get(s)??ct.new();i.insert(e.authorizerHash.materialize()),t.set(s,i)}return t}}function fh(e,t,r,s){const i=e.slice();for(const n of t.keys())null!==r[n]&&null!==s[n]||(i[n]=null),null!==t[n]&&e[n]!==t[n]&&(i[n]=t[n]);return i}var ph;!function(e){e[e.Verifier=0]="Verifier",e[e.Stf=1]="Stf",e[e.Update=2]="Update"}(ph||(ph={}));const yh=(e,t)=>_.taggedError(ph,e,t);class mh{logger;blocks;states;verifier;stf;state;constructor(e,t,r,s,i){this.logger=r,this.blocks=s,this.states=i;const n=this.blocks.getBestHeaderHash(),o=i.getState(n);if(null===o)throw new Error(`Unable to load best state from header hash: ${n}.`);this.verifier=new bc(t,s),this.stf=new gh(e,o,s,t,{enableParallelSealVerification:!0}),this.state=o,r.info(`😎 Best time slot: ${o.timeslot} (header hash: ${n})`)}async preverifySeal(e,t){try{const r=await this.stf.verifySeal(e,t);return r.isOk?r.ok:(this.logger.warn(`Unable to pre-verify the seal: ${B(r)}`),null)}catch(e){return this.logger.warn(`Error while trying to pre-verify the seal: ${e}`),null}}async importBlock(e,t,r=!1){const s=this.logger;s.log("🧱 Attempting to import a new block "+(null!==t?"(seal preverified)":""));const i=v("import:verify"),n=await this.verifier.verifyBlock(e);if(s.log(i()),n.isError)return yh(ph.Verifier,n);const o=e.header.view().timeSlotIndex.materialize(),a=n.ok;s.log(`🧱 Verified block: Got hash ${a} for block at slot ${o}.`);const c=v("import:stf"),l=await this.stf.transition(e,a,t,r);if(s.log(c()),l.isError)return yh(ph.Stf,l);const h=l.ok,u=v("import:state"),d=await this.states.updateAndSetState(a,this.state,h);if(d.isError)return s.error(`🧱 Unable to update state: ${B(d)}`),yh(ph.Update,d);const g=this.states.getState(a);if(null===g)throw new Error("Freshly updated state not in the DB?");this.state.updateBackend(g.backend),s.log(u());const f=v("import:db"),p=this.blocks.insertBlock(new Oe(a,e)),y=await this.states.getStateRoot(g);s.log(`🧱 Storing post-state-root for ${a}: ${y}.`);const m=this.blocks.setPostStateRoot(a,y);return await Promise.all([p,m]),s.log(f()),await this.blocks.setBestHeaderHash(a),_.ok(new Oe(a,e.header.view()))}bestBlockHash(){return this.blocks.getBestHeaderHash()}}const bh=Gs.new(void 0,"importer");class Ah extends Un{onBestBlock=new _n;constructor(){super({name:"ready(main)",allowedTransitions:["finished"],signalListeners:{bestBlock:e=>this.triggerBestBlock(e)}})}getConfig(){if(null===this.data)throw new Error("Did not receive chain spec config!");return this.data}triggerBestBlock(e){if(e instanceof Uint8Array){const t=this.getConfig(),r=ae.decodeObject(zr,e,t.chainSpec);this.onBestBlock.emit(r)}}sendBlock(e,t){e.sendSignal("block",t,[t.buffer])}finish(e){return this.onBestBlock.markDone(),{state:"finished",data:e.sendRequest("finish",null)}}}class Ih extends Un{onBlock=new _n;constructor(){super({name:"ready(importer)",allowedTransitions:["finished"],requestHandlers:{finish:async()=>this.endWork()},signalListeners:{block:e=>this.triggerOnBlock(e)}})}getConfig(){if(null===this.data)throw new Error("Did not receive chain spec config!");return this.data}announce(e,t){const r=this.getConfig(),s=ge.encodeObject(zr,t,r.chainSpec).raw;e.sendSignal("bestBlock",s,[s.buffer])}triggerOnBlock(e){if(e instanceof Uint8Array){const t=this.getConfig(),r=ae.decodeObject(Zr.Codec.View,e,t.chainSpec);this.onBlock.emit(r)}else bh.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(e)}.`)}async endWork(){return this.onBlock.markDone(),{response:null,transitionTo:{state:"finished",data:Promise.resolve(null)}}}}const vh=Gs.new(void 0,"importer");if(!$s.isMainThread){Gs.configureAll(process.env.JAM_LOG??"",Ms.LOG);const e=function(){const e=new Dn("ready(importer)",yt.reInit),t=new Ih,r=new Tn;return new Rn("importer",e,[e,t,r])}();kn.receiveChannel(e,$s.parentPort).then(e=>async function(e){vh.info(`📥 Importer starting ${e.currentState()}`);const t=await e.waitForState("ready(importer)"),r=await t.doUntil("finished",async(e,t)=>{vh.info("📥 Importer waiting for blocks.");const r=e.getConfig(),s=new mn(r.dbPath),i=new gn(r.chainSpec,s),n=new bn(r.chainSpec,s),o=new mh(r.chainSpec,new fc(r.chainSpec,await wh,new Te),vh,i,n);let a=!1;const c=new yc(r.chainSpec,o);e.onBlock.on(async s=>{const i=c.push(s)??gr(0);if(vh.log(`🧊 Got block: #${i}`),!a){a=!0;try{for(;;){const s=c.shift();if(void 0===s)return;const{block:i,seal:n,timeSlot:a}=s,l=v("importBlock"),h=await o.importBlock(i,await n,r.omitSealVerification);if(h.isOk){const r=h.ok;e.announce(t,r),vh.info(`🧊 Best block: #${r.data.timeSlotIndex.materialize()} (${r.hash})`)}else vh.log(`❌ Rejected block #${a}: ${B(h)}`);vh.log(l())}}finally{a=!1}}})});vh.info("📥 Importer finished. Closing channel."),r.currentState().close(e)}(e)).catch(e=>vh.error(e))}const wh=nt.create(),Sh=t(import.meta.url)("node:timers/promises");class Eh{chainSpec;keccakHasher;blocks;states;hashAllocator=new Te;lastHeaderHash;lastHeader;lastState;constructor(e,t,r,s){this.chainSpec=e,this.keccakHasher=t,this.blocks=r,this.states=s;const{lastHeaderHash:i,lastHeader:n,lastState:o}=Eh.getLastHeaderAndState(r,s);this.lastHeaderHash=i,this.lastHeader=n,this.lastState=o}refreshLastHeaderAndState(){const{lastHeaderHash:e,lastHeader:t,lastState:r}=Eh.getLastHeaderAndState(this.blocks,this.states);this.lastHeaderHash=e,this.lastHeader=t,this.lastState=r}static getLastHeaderAndState(e,t){const r=e.getBestHeaderHash(),s=e.getHeader(r)?.materialize()??null,i=t.getState(r);if(null===s)throw new Error(`Missing best header: ${r}! Make sure DB is initialized.`);if(null===i)throw new Error(`Missing last state at ${r}! Make sure DB is initialized.`);return{lastHeaderHash:r,lastHeader:s,lastState:i}}async nextEncodedBlock(){const e=await this.nextBlock();return ge.encodeObject(Zr.Codec,e,this.chainSpec)}async nextBlock(){this.refreshLastHeaderAndState();const e=this.lastHeader.timeSlotIndex+1,t=fr(e%6),r=new fc(this.chainSpec,this.keccakHasher,this.hashAllocator),s=this.lastHeaderHash,i=this.states.getStateRoot(this.lastState),n=Yr.create({tickets:[],preimages:[],guarantees:[],assurances:[],disputes:dr.create({verdicts:[],culprits:[],faults:[]})}),o=ge.encodeObject(Yr.Codec,n,this.chainSpec),a=ae.decodeObject(Yr.Codec.View,o,this.chainSpec),c=r.extrinsic(a).hash,l=ge.create();l.i32(e),l.i16(t),l.bytes(U.fill(90,0));const h=U.fromBlob(l.viewResult().raw,96),u=jr.create({parentHeaderHash:s,priorStateRoot:await i,extrinsicHash:c,timeSlotIndex:gr(e),epochMarker:null,ticketsMarker:null,offendersMarker:[],bandersnatchBlockAuthorIndex:t,entropySource:U.fill(96,42*e%256).asOpaque(),seal:h.asOpaque()}),d=ge.encodeObject(jr.Codec,u,this.chainSpec),g=ae.decodeObject(jr.Codec.View,d,this.chainSpec);return this.lastHeaderHash=r.header(g).hash,this.lastHeader=u,Zr.create({header:u,extrinsic:n})}}const Ch=Gs.new(void 0,"block-generator");class kh extends Un{onBlock=new _n;constructor(){super({name:"ready(main)",allowedTransitions:["finished"],signalListeners:{block:e=>this.triggerOnBlock(e)}})}triggerOnBlock(e){e instanceof Uint8Array?this.onBlock.emit(e):Ch.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(e)}.`)}finish(e){return this.onBlock.markDone(),{state:"finished",data:e.sendRequest("finish",null)}}}class xh extends Un{constructor(){super({name:"ready(generator)",allowedTransitions:["finished"],requestHandlers:{finish:async()=>this.endWork()}})}sendBlock(e,t){e.sendSignal("block",t.raw,[t.raw.buffer])}getConfig(){if(null===this.data)throw new Error("Config not received.");return this.data}async endWork(){return{response:null,transitionTo:{state:"finished",data:Promise.resolve(null)}}}}const Bh=Gs.new(void 0,"block-generator");if(!$s.isMainThread){Gs.configureAll(process.env.JAM_LOG??"",Ms.LOG);const e=function(){const e=new Dn("ready(generator)",yt.reInit),t=new xh,r=new Tn;return new Rn("block-generator",e,[e,t,r])}();kn.receiveChannel(e,$s.parentPort).then(e=>async function(e){Bh.info(`🎁 Block Generator running ${e.currentState()}`);const t=await e.waitForState("ready(generator)"),r=t.currentState().getConfig(),s=new mn(r.dbPath),i=new gn(r.chainSpec,s),n=new bn(r.chainSpec,s),o=await t.doUntil("finished",async(e,t,s)=>{let o=0;const a=new Eh(r.chainSpec,await nt.create(),i,n);for(;!s();){o+=1;const r=await a.nextEncodedBlock();Bh.trace(`Sending block ${o}`),e.sendBlock(t,r),await(0,Sh.setTimeout)(3e3)}});Bh.info("Block Generator finished. Closing channel."),o.currentState().close(e)}(e)).catch(e=>{Bh.error(e),void 0!==e.stack&&Bh.error(e.stack),void 0!==e.cause&&Bh.error(e.cause)})}const _h=t(import.meta.url)("dgram");var Rh,Oh;(Oh=Rh||(Rh={}))[Oh.NOTSET=0]="NOTSET",Oh[Oh.DEBUG=1]="DEBUG",Oh[Oh.INFO=2]="INFO",Oh[Oh.WARN=3]="WARN",Oh[Oh.ERROR=4]="ERROR",Oh[Oh.SILENT=100]="SILENT";const Uh="captureStackTrace"in Error,Th="stackTraceLimit"in Error;function Nh(e){switch(e){case Rh.NOTSET:return"NOTSET";case Rh.DEBUG:return"DEBUG";case Rh.INFO:return"INFO";case Rh.WARN:return"WARN";case Rh.ERROR:return"ERROR";case Rh.SILENT:return"SILENT"}}function Dh(e,t){return"function"==typeof t?t():t}function Mh(e){return JSON.stringify(e,Dh)}const Ph=Symbol("level"),Lh=Symbol("key"),Hh=Symbol("keys"),Kh=Symbol("date"),Vh=Symbol("msg"),Qh=Symbol("stack"),Fh=Symbol("data"),Gh=(function(e,...t){return r=>{let s=e[0];for(let i=0;i<t.length;i++){const n=t[i];if(n===Lh)s+=r.key;else if(n===Hh)s+=r.keys;else if(n===Kh)s+=r.date().toISOString();else if(n===Vh)null!=r.msg&&(s+=r.msg);else if(n===Ph)s+=Nh(r.level);else if(n===Fh)s+=Mh(r.data);else if(n===Qh){const e=r.stack();""!==e&&(s+="\n"+e)}else s+=n.toString();s+=e[i+1]}return s}})`${Ph}:${Lh}:${Vh}`,$h=class{formatter;constructor(e=Gh){this.formatter=e}setFormatter(e){this.formatter=e}handle(e,t){const r=null!=t?t(e):this.format(e);this.emit(r)}format(e){return this.formatter(e)}},jh=class extends $h{emit(e){console.error(e)}};class qh{key;level;filter;keys;handlers;parent;_loggers=new Map;loggersRegistry;constructor(e="root",t=Rh.NOTSET,r=[new jh],s){this.key=e,this.level=t,this.handlers=new Set(r),this.parent=s,this.keys=null!=s?`${s.keys}.${e}`:e,this.loggersRegistry=new FinalizationRegistry(e=>{this._loggers.delete(e)})}get loggers(){return new Map([...this._loggers.entries()].map(([e,t])=>{const r=t.deref();return null!=r?[e,r]:void 0}).filter(e=>null!=e))}getChild(e){let t=this._loggers.get(e),r=t?.deref();return null!=r||(r=new qh(e,Rh.NOTSET,[],this),t=new WeakRef(r),this._loggers.set(e,t),this.loggersRegistry.register(r,e)),r}getParent(){return this.parent}setLevel(e){this.level=e}getEffectiveLevel(){return this.level!==Rh.NOTSET?this.level:this.parent?this.parent.getEffectiveLevel():this.level}isEnabledFor(e){return e>=this.level}addHandler(e){this.handlers.add(e)}removeHandler(e){this.handlers.delete(e)}clearHandlers(){this.handlers.clear()}hasHandlers(){return!!this.handlers.size||(this.parent?.hasHandlers()??!1)}setFilter(e){this.filter=e}unsetFilter(){delete this.filter}debug(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Rh.DEBUG,t):this.log(e,t,Rh.DEBUG,r)}info(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Rh.INFO,t):this.log(e,t,Rh.INFO,r)}warn(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Rh.WARN,t):this.log(e,t,Rh.WARN,r)}error(e,t,r){return null==t||"function"==typeof t?this.log(e,{},Rh.ERROR,t):this.log(e,t,Rh.ERROR,r)}log(e,t,r,s){if(r<this.getEffectiveLevel())return;const i=this.makeRecord(e,t,r);this.callHandlers(i,r,s)}makeRecord(e,t,r){return{logger:this,key:this.key,keys:this.keys,level:r,msg:e?.toString(),data:t,date:()=>new Date,stack:()=>{let e;if(Uh&&Th){Error.stackTraceLimit++;const t={};Error.captureStackTrace(t,qh.prototype.log),Error.stackTraceLimit--,e=t.stack,e=e.slice(e.indexOf("\n",e.indexOf("\n")+1)+1)}else e=(new Error).stack??"",e=e.slice(e.indexOf("\n")+1);return e}}}callHandlers(e,t,r,s=""){if(!(t<this.getEffectiveLevel())&&(s=`${this.key}.${s}`,null==this.filter||this.filter.test(s))){for(const t of this.handlers)t.handle(e,r);this.parent&&this.parent.callHandlers(e,t,r,s)}}}const zh=qh;t(import.meta.url)("node:process");class Wh extends Event{detail;constructorParams;constructor(e=new.target.name,t,r){"string"==typeof e?(super(e,t),this.detail=t?.detail):(super(new.target.name,e),this.detail=e.detail,r=t),this.constructorParams=r??arguments}clone(){try{return new this.constructor(...this.constructorParams)}catch(e){if("TypeError"===e.name)throw new TypeError(`Cloning ${this.constructor.name} requires the original constructor arguments to be passed into super`);throw e}}}const Jh=Wh;class Yh extends Jh{constructor(e){super(Yh.name,e,arguments)}}const Zh=Yh;class Xh extends Jh{constructor(e){super(Xh.name,e,arguments)}}const eu=Xh;class tu extends Jh{constructor(e){super(tu.name,e,arguments)}}const ru=tu,su=Symbol("_eventTarget"),iu=Symbol("eventTarget"),nu=Symbol("_eventHandlers"),ou=Symbol("eventHandlers"),au=Symbol("_eventHandled"),cu=Symbol("eventHandled"),lu=Symbol("_handleEventError"),hu=Symbol("handleEventError");function uu(e){return{capture:!1,once:!1,passive:!1,..."boolean"==typeof e?{capture:e}:"object"==typeof e?e:void 0}}function du(e,t){return e.capture===t.capture}function gu(){return e=>{const t=class extends e{[su]=new EventTarget;[nu]=new Map;[au]=new WeakSet;[lu]=e=>{throw e.detail};constructor(...e){super(...e),this[su].addEventListener(ru.name,this[lu])}get[iu](){return this[su]}get[ou](){return this[nu]}get[cu](){return this[au]}get[hu](){return this[lu]}addEventListener(e,t,r){r=uu(r);const s=this;let i,n,o=!1;if("function"==typeof t||"function"==typeof t?.handleEvent){n=this[nu].get(e),void 0===n&&(n=new Set,this[nu].set(e,n));for(const e of n)if(e.callback===t&&(i=e.handler,du(e.options,r))){o=!0;break}}"function"==typeof t?null==i?(i=async function(e){let r;s[au].add(e);try{r=t.call(s,e)}catch(e){this.dispatchEvent(new ru({detail:e}))}if("function"==typeof r?.then)try{await r}catch(e){this.dispatchEvent(new ru({detail:e}))}},n.add({callback:t,options:r,handler:i})):o||n.add({callback:t,options:r,handler:i}):"function"==typeof t?.handleEvent?null==i?(i=async function(e){let r;s[au].add(e);try{r=t.handleEvent(e)}catch(e){this.dispatchEvent(new ru({detail:e}))}if("function"==typeof r?.then)try{await r}catch(e){this.dispatchEvent(new ru({detail:e}))}return r},n.add({callback:t,options:r,handler:i})):o||n.add({callback:t,options:r,handler:i}):i=t,this[su].addEventListener(e,i,r),e===ru.name&&1===n?.size&&this[su].removeEventListener(ru.name,this[lu])}removeEventListener(e,t,r){let s,i,n;if(r=uu(r),null!=t){if(i=this[nu].get(e),void 0===i)return;for(const e of i)if(e.callback===t&&du(e.options,r)){s=e.handler,n=e;break}if(null==s)return}else s=t;this[su].removeEventListener(e,s,r),null!=i&&null!=n&&(i.delete(n),e===ru.name&&0===i.size&&this[su].addEventListener(ru.name,this[lu]))}dispatchEvent(e){if(Object.defineProperties(e,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),e instanceof ru)return this[su].dispatchEvent(e);{let t=this[su].dispatchEvent(e);if(t&&!this[au].has(e)){const r=new Zh({bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e});Object.defineProperties(r,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),t=this[su].dispatchEvent(r)}if(t){const r=new eu({bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed,detail:e});Object.defineProperties(r,{target:{value:this,writable:!1},currentTarget:{value:this,writable:!1}}),t=this[su].dispatchEvent(r)}return t}}};return Object.defineProperty(t,"name",Object.getOwnPropertyDescriptor(e,"name")),t}}async function fu(e,t){const r=[],s=[];let i;try{for(const t of e){const[e,i]=await t(s);r.push(e),s.push(i)}return await t(s)}catch(e){throw i=e,e}finally{r.reverse();for(const e of r)await e(i)}}async function*pu(e,t){const r=[],s=[];let i;try{for(const t of e){const[e,i]=await t(s);r.push(e),s.push(i)}return yield*t(s)}catch(e){throw i=e,e}finally{r.reverse();for(const e of r)await e(i)}}class yu extends Promise{static get[Symbol.species](){return Promise}static resolve(e){return e instanceof yu?e:super.resolve(e)}static reject(e){return super.reject(e)}static all(e,t){const r=super.all(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static allSettled(e,t){const r=super.allSettled(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static race(e,t){const r=super.race(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static any(e,t){const r=super.any(e);return"function"==typeof t?(r.abortController=new AbortController,t(r.abortController.signal)):null!=t&&(r.abortController=t),r}static from(e,t){return new this((t,r)=>{e.then(t,r)},t)}reject;abortController;constructor(e,t){let r,s,i,n;"function"==typeof t?(r=new AbortController,t(r.signal),s=r.signal,i=!0):null!=t?(r=t,s=t.signal,i=!0):(r=new AbortController,s=new Proxy(r.signal,{get:(e,t,r)=>"addEventListener"===t?function(...r){return i=!0,e[t].apply(this,r)}:Reflect.get(e,t,r),set:(e,t,r)=>("onabort"===t&&(i=!0),Reflect.set(e,t,r)),deleteProperty:(e,t)=>("onabort"===t&&(i=!0),Reflect.deleteProperty(e,t))}),i=!1),super((t,r)=>{n=e=>{e instanceof DOMException&&"AbortError"===e.name&&(e=void 0),r(e)},e(t,n,s)}),i||r.signal.addEventListener("abort",()=>{n(r.signal.reason)},{once:!0}),this.reject=n,this.abortController=r}get[Symbol.toStringTag](){return this.constructor.name}cancel(e){this.abortController.abort(e)}then(e,t,r){let s,i,n;"function"==typeof e&&(i=t=>e(t,s)),"function"==typeof t&&(n=e=>t(e,s));const o=super.then(i,n),a=yu.from(o,r);return s=a.abortController.signal,a}catch(e,t){let r,s;"function"==typeof e&&(s=t=>e(t,r));const i=super.catch(s);return"function"==typeof t?(i.abortController=new AbortController,t(i.abortController.signal)):null!=t&&(i.abortController=t),r=i.abortController.signal,i}finally(e,t){let r,s;"function"==typeof e&&(s=()=>e(r));const i=super.finally(s);return"function"==typeof t?(i.abortController=new AbortController,t(i.abortController.signal)):null!=t&&(i.abortController=t),r=i.abortController.signal,i}}const mu=yu,bu=t(import.meta.url)("node:perf_hooks");var Au,Iu=(Au=function(e,t){return Au=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},Au(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}Au(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),vu=function(e){function t(t){var r,s,i,n=this.constructor,o=e.call(this,t)||this;return Object.defineProperty(o,"name",{value:n.name,enumerable:!1,configurable:!0}),r=o,s=n.prototype,(i=Object.setPrototypeOf)?i(r,s):r.__proto__=s,function(e,t){void 0===t&&(t=e.constructor);var r=Error.captureStackTrace;r&&r(e,t)}(o),o}return Iu(t,e),t}(Error);const wu=class extends vu{static description="";static fromJSON(e){if("object"!=typeof e||e.type!==this.name||"object"!=typeof e.data||"string"!=typeof e.data.message||isNaN(Date.parse(e.data.timestamp))||"object"!=typeof e.data.data||"stack"in e.data&&"string"!=typeof e.data.stack)throw new TypeError(`Cannot decode JSON to ${this.name}`);const t=new this(e.data.message,{timestamp:new Date(e.data.timestamp),data:e.data.data,cause:e.data.cause});return t.stack=e.data.stack,t}data;cause;timestamp;constructor(e="",t={}){super(e),this.timestamp=t.timestamp??new Date(bu.performance.timeOrigin+bu.performance.now()),this.data=t.data??{},this.cause=t.cause}get description(){return this.constructor.description}toJSON(){return{type:this.constructor.name,description:this.description,data:{message:this.message,timestamp:this.timestamp,data:this.data,cause:this.cause,stack:this.stack}}}};function Su(e,t,r=new Set){if(r.has(e))return!1;if(r.add(e),t(e))return!0;if(e instanceof AggregateError){for(const s of e.errors){const e=Su(s,t,r);if(e)return e}return Su(e.cause,t,r)}return e instanceof Error&&Su(e.cause,t,r)}class Eu extends wu{static description="Timer error"}class Cu extends Eu{static description="The timer has already ended"}class ku{_delay;lazy;timestamp;_scheduled;handler;p;resolveP;rejectP;abortController;timeoutRef;_status=null;constructor(e,t=0,r=!1,s){let i,n;"function"==typeof e?i=e:"object"==typeof e&&null!==e&&(i=e.handler,t=e.delay??t,r=e.lazy??r,s=e.controller??s),isNaN(t)?t=0:(t=Math.max(t,0),isFinite(t)&&(t=Math.min(t,2**31-1))),this.handler=i,this._delay=t,this.lazy=r,"function"==typeof s?(n=new AbortController,s(n.signal)):null!=s?n=s:(n=new AbortController,n.signal.addEventListener("abort",()=>{this.reject(n.signal.reason)})),this.p=new mu((e,t)=>{this.resolveP=e.bind(this.p),this.rejectP=t.bind(this.p)},n),this.abortController=n,isFinite(t)?(this.timeoutRef=setTimeout(()=>{this.fulfill()},t),this.timestamp=new Date(bu.performance.timeOrigin+bu.performance.now()),this._scheduled=new Date(this.timestamp.getTime()+t)):(this.timeoutRef=setInterval(()=>{},2**31-1),this.timestamp=new Date(bu.performance.timeOrigin+bu.performance.now()))}get[Symbol.toStringTag](){return this.constructor.name}get status(){return this._status}get scheduled(){return this._scheduled}get delay(){return this._delay}getTimeout(){return null!==this._status?0:null==this._scheduled?1/0:Math.max(Math.trunc(this._scheduled.getTime()-(bu.performance.timeOrigin+bu.performance.now())),0)}toString(){return this.getTimeout().toString()}valueOf(){return this.getTimeout()}cancel(e){this.p.catch(()=>{}),this.p.cancel(e)}then(e,t,r){return this.p.then(e,t,r)}catch(e,t){return this.p.catch(e,t)}finally(e,t){return this.p.finally(e,t)}refresh(){if(null!=this._status)throw new Cu;return this.reset(this._delay)}reset(e){if(null!=this._status)throw new Cu;clearTimeout(this.timeoutRef),this._delay=e,isFinite(e)?(this.timeoutRef=setTimeout(()=>{this.fulfill()},e),this._scheduled=new Date(bu.performance.timeOrigin+bu.performance.now()+e)):(this.timeoutRef=setInterval(()=>{},2**31-1),delete this._scheduled)}async fulfill(){if(this._status="settling",clearTimeout(this.timeoutRef),delete this.timeoutRef,null!=this.handler)try{const e=await this.handler(this.abortController.signal);this.resolveP(e)}catch(e){this.rejectP(e)}else this.resolveP();delete this.handler,this._status="settled"}async reject(e){this.lazy&&"settling"===this._status||"settled"===this._status||(this._status="settling",clearTimeout(this.timeoutRef),delete this.timeoutRef,this.rejectP(e),delete this.handler,this._status="settled")}}const xu=ku;function Bu(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function _u(e,t,r,s,i,n){let o,a;if(void 0!==i.timer&&"number"!=typeof i.timer||void 0!==i.signal)if((void 0===i.timer||"number"==typeof i.timer)&&i.signal instanceof AbortSignal){o=new AbortController;const e=new s,t=new xu(()=>{o.abort(e)},i.timer??r),n=i.signal,c=()=>{t.cancel(),o.abort(n.reason)};n.aborted?(t.cancel(),o.abort(n.reason)):n.addEventListener("abort",c),i.signal=o.signal,i.timer=t,a=()=>{n.removeEventListener("abort",c),t.cancel()}}else if(i.timer instanceof xu&&void 0===i.signal){o=new AbortController;const e=new s;let t=!1;i.timer.then((r,s)=>(t||s.aborted||o.abort(e),r),()=>{}),i.signal=o.signal,a=()=>{t=!0}}else{o=new AbortController;const e=i.signal,t=()=>{o.abort(e.reason)};e.aborted?o.abort(e.reason):e.addEventListener("abort",t),i.signal=o.signal,a=()=>{e.removeEventListener("abort",t)}}else{o=new AbortController;const e=new s,t=new xu(()=>{o.abort(e)},i.timer??r);o.signal.addEventListener("abort",()=>{t.cancel()}),i.signal=o.signal,i.timer=t,a=()=>{t.cancel()}}const c=e(i,...n);return new mu((e,r,s)=>{t||(s.aborted?r(s.reason):s.addEventListener("abort",()=>{r(s.reason)},{once:!0})),c.then(e,r)},o).finally(()=>{a()},o)}class Ru extends wu{static description="Async locks error"}class Ou extends Ru{static description="Async locks timeout"}const Uu=class{limit;priority;_count=0;currentWeight=0;queue=[];abortQueueMap=new WeakMap;constructor(e,t=!1){if(e<1)throw new RangeError("Semaphore must be constructed with `limit` >= 1");this.limit=e,this.priority=t}get count(){return this._count}isLocked(){return this._count>0}lock(...e){const t=(2===e.length||"number"==typeof e[0]?e[0]:void 0)??1;let r=2===e.length?e[1]:"number"!=typeof e[0]?e[0]:void 0;if(t<1)throw new RangeError("Semaphore must be locked with `weight` >= 1");return r=null!=r?{...r}:{},()=>_u((e,t)=>{this._count++;const{p:r,resolveP:s,rejectP:i}=Bu();if(e.signal.aborted)return this._count--,i(e.signal.reason),r;const n=()=>{this._count--;const t=this.abortQueueMap.get(n);null!=t&&(t.aborted=!0),i(e.signal.reason)};let o=!1;const a={task:()=>{this.currentWeight+=t,e.signal.removeEventListener("abort",n),s([async()=>{o||(o=!0,this._count--,this.currentWeight-=t,this.processQueue())},this])},weight:t,abortHandler:n,aborted:!1};return e.signal.addEventListener("abort",n,{once:!0}),this.abortQueueMap.set(n,a),this.insertQueue(a),this.processQueue(),r},!0,1/0,Ou,r,[t])}waitForUnlock(...e){const t=(2===e.length||"number"==typeof e[0]?e[0]:void 0)??1;let r=2===e.length?e[1]:"number"!=typeof e[0]?e[0]:void 0;if(t<1)throw new RangeError("Semaphore must be locked with `weight` >= 1");return r=null!=r?{...r}:{},_u((e,t)=>{const{p:r,resolveP:s,rejectP:i}=Bu();if(e.signal.aborted)return i(e.signal.reason),r;const n=()=>{const t=this.abortQueueMap.get(n);null!=t&&(t.aborted=!0),i(e.signal.reason)},o={task:()=>{e.signal.removeEventListener("abort",n),s()},weight:t,abortHandler:n,aborted:!1};return e.signal.addEventListener("abort",n,{once:!0}),this.abortQueueMap.set(n,o),this.insertQueue(o),this.processQueue(),r},!0,1/0,Ou,r,[t])}withF(...e){const t=e.pop();return fu([this.lock(...e)],([e])=>t(e))}withG(...e){const t=e.pop();return pu([this.lock(...e)],([e])=>t(e))}insertQueue(e){if(this.priority){let t=this.queue.length;for(;t>0&&this.queue[t-1].weight<e.weight;)t--;this.queue.splice(t,0,e)}else this.queue.unshift(e)}processQueue(){for(;this.queue.length>0&&this.currentWeight+this.queue[this.queue.length-1].weight<=this.limit;){const e=this.queue.pop();e.aborted||e.task()}}},Tu=class{semaphore=new Uu(1);get count(){return this.semaphore.count}isLocked(){return this.semaphore.isLocked()}lock(e){const t=this.semaphore.lock(1,e);return()=>{const e=t();return e.then(([e])=>[e,this],void 0,t=>{t.addEventListener("abort",()=>{e.cancel(t.reason)},{once:!0})})}}waitForUnlock(e){return this.semaphore.waitForUnlock(1,e)}withF(...e){const t=e.pop();return fu([this.lock(...e)],([e])=>t(e))}withG(...e){const t=e.pop();return pu([this.lock(...e)],([e])=>t(e))}},Nu=class{readersLock=new Tu;writersLock=new Tu;readersRelease;readerCountBlocked=0;acquireReadersLockP;_readerCount=0;_writerCount=0;get count(){return this.readerCount+this.writerCount}get readerCount(){return this._readerCount+this.readerCountBlocked}get writerCount(){return this._writerCount}isLocked(e){return"read"===e?0===this._writerCount&&this.readersLock.isLocked():"write"===e?this.writersLock.isLocked():this.readersLock.isLocked()||this.writersLock.isLocked()}lock(...e){const t=(2===e.length||"string"==typeof e[0]?e[0]:void 0)??"write",r=2===e.length?e[1]:"string"!=typeof e[0]?e[0]:void 0;switch(t){case"read":return this.read(r);case"write":return this.write(r)}}read(e){return e=null!=e?{...e}:{},()=>_u(async e=>{if(this._writerCount>0){++this.readerCountBlocked;const t=this.writersLock.waitForUnlock(e);try{await t}finally{--this.readerCountBlocked}}if(1===++this._readerCount){const t=this.readersLock.lock(e);this.acquireReadersLockP=t();try{[this.readersRelease]=await this.acquireReadersLockP}catch(e){throw--this._readerCount,e}}else await this.acquireReadersLockP.catch(()=>{});let t=!1;return[async()=>{t||(t=!0,0===--this._readerCount&&await this.readersRelease())},this]},!0,1/0,Ou,e,[])}write(e){return e=null!=e?{...e}:{},()=>_u(async e=>{++this._writerCount;const t=this.writersLock.lock(e)();let r;try{[r]=await t}catch(e){throw--this._writerCount,e}const s=this.readersLock.lock(e)();try{[this.readersRelease]=await s}catch(e){throw await r(),--this._writerCount,e}let i=!1;return[async()=>{i||(i=!0,await this.readersRelease(),await r(),--this._writerCount)},this]},!0,1/0,Ou,e,[])}waitForUnlock(e){const t=this.readersLock.waitForUnlock(e),r=this.writersLock.waitForUnlock(e);return mu.all([t,r]).then(()=>{},void 0,e=>{e.addEventListener("abort",()=>{t.cancel(e.reason),r.cancel(e.reason)},{once:!0})})}withF(...e){let t;switch(2===e.length||"string"==typeof e[0]?t=e.shift():null==typeof e[0]&&e.shift(),t=t??"write",t){case"read":return this.withReadF(...e);case"write":return this.withWriteF(...e)}}withReadF(...e){const t=e.pop();return fu([this.read(...e)],([e])=>t(e))}withWriteF(...e){const t=e.pop();return fu([this.write(...e)],([e])=>t(e))}withG(...e){let t;switch(2===e.length||"string"==typeof e[0]?t=e.shift():null==typeof e[0]&&e.shift(),t=t??"write",t){case"read":return this.withReadG(...e);case"write":return this.withWriteG(...e)}}withReadG(...e){const t=e.pop();return pu([this.read(...e)],([e])=>t(e))}withWriteG(...e){const t=e.pop();return pu([this.write(...e)],([e])=>t(e))}},Du=Symbol("_running"),Mu=Symbol("running"),Pu=Symbol("_destroyed"),Lu=Symbol("destroyed"),Hu=Symbol("_status"),Ku=Symbol("status"),Vu=Symbol("_statusP"),Qu=Symbol("statusP"),Fu=Symbol("resolveStatusP"),Gu=Symbol("initLock"),$u=(async()=>{}).constructor,ju=function*(){}.constructor,qu=async function*(){}.constructor,zu="captureStackTrace"in Error;function Wu(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function Ju(e,t){if(null!=e.stack){const r=e.stack.slice(0,e.stack.indexOf("\n")+1);zu?Error.captureStackTrace(e,t):e.stack=(new Error).stack??"",e.stack=e.stack.replace(/[^\n]+\n/,r)}}class Yu extends Jh{}class Zu extends Yu{}class Xu extends Yu{}class ed extends Yu{}class td extends Yu{}class rd extends Yu{}class sd extends Yu{}class id extends wu{static description="Async init error"}class nd extends id{static description="Async init is not running"}class od extends id{static description="Async init is destroyed"}function ad({eventDestroy:e=rd,eventDestroyed:t=sd}={}){return r=>{const{p:s,resolveP:i}=Wu(),n=class extends(gu()(r)){[Pu]=!1;[Hu]=null;[Vu]=s;[Fu]=i;[Gu]=new Nu;get[Lu](){return this[Pu]}get[Ku](){return this[Hu]}get[Qu](){return this[Vu]}async destroy(...r){return this[Gu].withWriteF(async()=>{if(this[Pu])return;this[Hu]="destroying",this[Fu]("destroying");const{p:s,resolveP:i}=Wu();let n;return this[Vu]=s,this[Fu]=i,this.dispatchEvent(new e),"function"==typeof super.destroy&&(n=await super.destroy(...r)),this[Pu]=!0,this.dispatchEvent(new t),n}).finally(()=>{this[Hu]=null,this[Fu](null);const{p:e,resolveP:t}=Wu();this[Vu]=e,this[Fu]=t})}};return Object.defineProperty(n,"name",Object.getOwnPropertyDescriptor(r,"name")),n}}function cd(e=new od,t=!1,r=[]){return(s,i,n)=>{let o;null!=n.value?o="value":null!=n.get?o="get":null!=n.set&&(o="set");const a=n[o];if("function"!=typeof a)throw new TypeError(`${i} is not a function`);return n[o]=a instanceof $u?async function(...s){if(this[Gu].isLocked("write")&&null===this[Hu]&&await this[Vu],r.includes(this[Hu]))return a.apply(this,s);if(t)return this[Gu].withReadF(async()=>{if(this[Pu])throw Ju(e,n[o]),e;return a.apply(this,s)});if(this[Gu].isLocked("write")||this[Pu])throw Ju(e,n[o]),e;return a.apply(this,s)}:a instanceof ju?function*(...t){if(r.includes(this[Hu]))return yield*a.apply(this,t);if(this[Gu].isLocked("write")&&null!==this[Ku]||this[Pu])throw Ju(e,n[o]),e;return yield*a.apply(this,t)}:a instanceof qu?async function*(...s){if(this[Gu].isLocked("write")&&null===this[Hu]&&await this[Vu],r.includes(this[Hu]))return yield*a.apply(this,s);if(t)return yield*this[Gu].withReadG(()=>{if(this[Pu])throw Ju(e,n[o]),e;return a.apply(this,s)});if(this[Gu].isLocked("write")||this[Pu])throw Ju(e,n[o]),e;return yield*a.apply(this,s)}:function(...t){if(r.includes(this[Hu]))return a.apply(this,t);if(this[Gu].isLocked("write")&&null!==this[Ku]||this[Pu])throw Ju(e,n[o]),e;return a.apply(this,t)},Object.defineProperty(n[o],"name",{value:i}),n}}function ld({eventStart:e=Zu,eventStarted:t=Xu,eventStop:r=ed,eventStopped:s=td}={}){return i=>{const{p:n,resolveP:o}=Wu(),a=class extends(gu()(i)){[Du]=!1;[Hu]=null;[Vu]=n;[Fu]=o;[Gu]=new Nu;get[Mu](){return this[Du]}get[Ku](){return this[Hu]}get[Qu](){return this[Vu]}async start(...r){return this[Gu].withWriteF(async()=>{if(this[Du])return;this[Hu]="starting",this[Fu]("starting");const{p:s,resolveP:i}=Wu();let n;return this[Vu]=s,this[Fu]=i,this.dispatchEvent(new e),"function"==typeof super.start&&(n=await super.start(...r)),this[Du]=!0,this.dispatchEvent(new t),n}).finally(()=>{this[Hu]=null,this[Fu](null);const{p:e,resolveP:t}=Wu();this[Vu]=e,this[Fu]=t})}async stop(...e){return this[Gu].withWriteF(async()=>{if(!this[Du])return;this[Hu]="stopping",this[Fu]("stopping");const{p:t,resolveP:i}=Wu();let n;return this[Vu]=t,this[Fu]=i,this.dispatchEvent(new r),"function"==typeof super.stop&&(n=await super.stop(...e)),this[Du]=!1,this.dispatchEvent(new s),n}).finally(()=>{this[Hu]=null,this[Fu](null);const{p:e,resolveP:t}=Wu();this[Vu]=e,this[Fu]=t})}};return Object.defineProperty(a,"name",Object.getOwnPropertyDescriptor(i,"name")),a}}function hd(e=new nd,t=!1,r=[]){return(s,i,n)=>{let o;null!=n.value?o="value":null!=n.get?o="get":null!=n.set&&(o="set");const a=n[o];if("function"!=typeof a)throw new TypeError(`${i} is not a function`);return n[o]=a instanceof $u?async function(...s){if(this[Gu].isLocked("write")&&null===this[Hu]&&await this[Vu],r.includes(this[Hu]))return a.apply(this,s);if(t)return this[Gu].withReadF(async()=>{if(!this[Du])throw Ju(e,n[o]),e;return a.apply(this,s)});if(this[Gu].isLocked("write")||!this[Du])throw Ju(e,n[o]),e;return a.apply(this,s)}:a instanceof ju?function*(...t){if(r.includes(this[Hu]))return yield*a.apply(this,t);if(this[Gu].isLocked("write")&&null!==this[Ku]||!this[Du])throw Ju(e,n[o]),e;return yield*a.apply(this,t)}:a instanceof qu?async function*(...s){if(this[Gu].isLocked("write")&&null===this[Hu]&&await this[Vu],r.includes(this[Hu]))return yield*a.apply(this,s);if(t)return yield*this[Gu].withReadG(()=>{if(!this[Du])throw Ju(e,n[o]),e;return a.apply(this,s)});if(this[Gu].isLocked("write")||!this[Du])throw Ju(e,n[o]),e;return yield*a.apply(this,s)}:function(...t){if(r.includes(this[Hu]))return a.apply(this,t);if(this[Gu].isLocked("write")&&null!==this[Ku]||!this[Du])throw Ju(e,n[o]),e;return a.apply(this,t)},Object.defineProperty(n[o],"name",{value:i}),n}}class ud extends Uint8Array{string;static fromString(e){const t=Buffer.from(e,"hex");return new this(t.buffer,t.byteOffset,t.byteLength)}static fromBuffer(e){return new this(e.buffer,e.byteOffset,e.byteLength)}constructor(...e){super(...e),this.string=this.toBuffer().toString("hex")}toString(){return this.string}toBuffer(){return Buffer.from(this.buffer,this.byteOffset,this.byteLength)}[Symbol.toPrimitive](e){return this.toString()}}const dd=ud;class gd{[Symbol.toStringTag]="QUICConnectionMap";_serverConnections=new Map;_clientConnections=new Map;constructor(e){if(null!=e)for(const[t,r]of e)this.set(t,r)}get size(){return this._serverConnections.size+this._clientConnections.size}get serverConnections(){return this._serverConnections}get clientConnections(){return this._clientConnections}has(e){return this._serverConnections.has(e.toString())||this._clientConnections.has(e.toString())}get(e){return this._serverConnections.get(e.toString())??this._clientConnections.get(e.toString())}set(e,t){return"server"===t.type?this._serverConnections.set(e.toString(),t):"client"===t.type&&this._clientConnections.set(e.toString(),t),this}delete(e){return this._serverConnections.delete(e.toString())||this._clientConnections.delete(e.toString())}clear(){this._serverConnections.clear(),this._clientConnections.clear()}forEach(e,t){this._serverConnections.forEach((r,s)=>{e.bind(t)(r,dd.fromString(s),this)}),this._clientConnections.forEach((r,s)=>{e.bind(t)(r,dd.fromString(s),this)})}[Symbol.iterator](){const e=this._serverConnections[Symbol.iterator](),t=this._clientConnections[Symbol.iterator](),r={next:()=>{const r=e.next();if(!r.done){const[e,t]=r.value;return{done:!1,value:[dd.fromString(e),t]}}const s=t.next();if(!s.done){const[e,t]=s.value;return{done:!1,value:[dd.fromString(e),t]}}return{done:!0,value:void 0}},[Symbol.iterator]:()=>r};return r}entries(){return this[Symbol.iterator]()}keys(){const e={next:()=>{const e=this[Symbol.iterator]().next();return e.done?{done:!0,value:void 0}:{done:!1,value:e.value[0]}},[Symbol.iterator]:()=>e};return e}values(){const e={next:()=>{const e=this[Symbol.iterator]().next();return e.done?{done:!0,value:void 0}:{done:!1,value:e.value[1]}},[Symbol.iterator]:()=>e};return e}}const fd=gd,pd="data:application/javascript;base64,aW1wb3J0IHByb2Nlc3MgZnJvbSAncHJvY2Vzcyc7CmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnOwppbXBvcnQgdXJsIGZyb20gJ3VybCc7CmltcG9ydCBNb2R1bGUgZnJvbSAnbm9kZTptb2R1bGUnOwpjb25zdCByZXF1aXJlID0gTW9kdWxlLmNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTsKY29uc3QgZGlybmFtZSA9IHVybC5maWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpKTsKY29uc3QgcHJvamVjdFJvb3QgPSBwYXRoLmpvaW4oZGlybmFtZSwgJy4uLy4uLycpOwpjb25zdCBwcmVidWlsZFBhdGggPSBwYXRoLmpvaW4ocHJvamVjdFJvb3QsICdwcmVidWlsZCcpOwovKioKICogVHJ5IHJlcXVpcmUgb24gYWxsIHByZWJ1aWxkIHRhcmdldHMgZmlyc3QsIHRoZW4KICogdHJ5IHJlcXVpcmUgb24gYWxsIG5wbSB0YXJnZXRzIHNlY29uZC4KICovCmZ1bmN0aW9uIHJlcXVpcmVCaW5kaW5nKHRhcmdldHMpIHsKICAgIGNvbnN0IHByZWJ1aWxkVGFyZ2V0cyA9IHRhcmdldHMubWFwKCh0YXJnZXQpID0+IHBhdGguam9pbihwcmVidWlsZFBhdGgsIGBxdWljLSR7dGFyZ2V0fS5ub2RlYCkpOwogICAgZm9yIChjb25zdCBwcmVidWlsZFRhcmdldCBvZiBwcmVidWlsZFRhcmdldHMpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gcmVxdWlyZShwcmVidWlsZFRhcmdldCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgIGlmIChlLmNvZGUgIT09ICdNT0RVTEVfTk9UX0ZPVU5EJykKICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHVybC5wYXRoVG9GaWxlVVJMKHByZWJ1aWxkVGFyZ2V0KS5ocmVmKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgaWYgKGUuY29kZSAhPT0gJ01PRFVMRV9OT1RfRk9VTkQnKQogICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9CiAgICB9CiAgICBjb25zdCBucG1UYXJnZXRzID0gdGFyZ2V0cy5tYXAoKHRhcmdldCkgPT4gYEBtYXRyaXhhaS9xdWljLSR7dGFyZ2V0fWApOwogICAgZm9yIChjb25zdCBucG1UYXJnZXQgb2YgbnBtVGFyZ2V0cykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKG5wbVRhcmdldCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgIGlmIChlLmNvZGUgIT09ICdNT0RVTEVfTk9UX0ZPVU5EJykKICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlKHVybC5wYXRoVG9GaWxlVVJMKG5wbVRhcmdldCkuaHJlZik7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlKSB7CiAgICAgICAgICAgIGlmIChlLmNvZGUgIT09ICdNT0RVTEVfTk9UX0ZPVU5EJykKICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfQogICAgfQogICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgcmVxdWlyaW5nIHBvc3NpYmxlIG5hdGl2ZSBiaW5kaW5nczogJHtwcmVidWlsZFRhcmdldHMuY29uY2F0KG5wbVRhcmdldHMpfWApOwp9CmxldCBuYXRpdmVCaW5kaW5nOwovKioKICogRm9yIGRlc2t0b3Agd2Ugb25seSBzdXBwb3J0IHdpbjMyLCBkYXJ3aW4gYW5kIGxpbnV4LgogKiBNb2JpbGUgT1Mgc3VwcG9ydCBpcyBwZW5kaW5nLgogKi8Kc3dpdGNoIChwcm9jZXNzLnBsYXRmb3JtKSB7CiAgICBjYXNlICd3aW4zMic6CiAgICAgICAgc3dpdGNoIChwcm9jZXNzLmFyY2gpIHsKICAgICAgICAgICAgY2FzZSAneDY0JzoKICAgICAgICAgICAgICAgIG5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlQmluZGluZyhbJ3dpbjMyLXg2NCddKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdpYTMyJzoKICAgICAgICAgICAgICAgIG5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlQmluZGluZyhbJ3dpbjMyLWlhMzInXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXJtNjQnOgogICAgICAgICAgICAgICAgbmF0aXZlQmluZGluZyA9IHJlcXVpcmVCaW5kaW5nKFsnd2luMzItYXJtNjQnXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIG9uIFdpbmRvd3M6ICR7cHJvY2Vzcy5hcmNofWApOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgIGNhc2UgJ2Rhcndpbic6CiAgICAgICAgc3dpdGNoIChwcm9jZXNzLmFyY2gpIHsKICAgICAgICAgICAgY2FzZSAneDY0JzoKICAgICAgICAgICAgICAgIG5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlQmluZGluZyhbCiAgICAgICAgICAgICAgICAgICAgJ2Rhcndpbi14NjQnLAogICAgICAgICAgICAgICAgICAgICdkYXJ3aW4teDY0K2FybTY0JywKICAgICAgICAgICAgICAgICAgICAnZGFyd2luLWFybTY0K3g2NCcsCiAgICAgICAgICAgICAgICAgICAgJ2Rhcndpbi11bml2ZXJzYWwnLAogICAgICAgICAgICAgICAgXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXJtNjQnOgogICAgICAgICAgICAgICAgbmF0aXZlQmluZGluZyA9IHJlcXVpcmVCaW5kaW5nKFsKICAgICAgICAgICAgICAgICAgICAnZGFyd2luLWFybTY0JywKICAgICAgICAgICAgICAgICAgICAnZGFyd2luLWFybTY0K3g2NCcsCiAgICAgICAgICAgICAgICAgICAgJ2Rhcndpbi14NjQrYXJtNjQnLAogICAgICAgICAgICAgICAgICAgICdkYXJ3aW4tdW5pdmVyc2FsJywKICAgICAgICAgICAgICAgIF0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSBvbiBtYWNPUzogJHtwcm9jZXNzLmFyY2h9YCk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgY2FzZSAnbGludXgnOgogICAgICAgIHN3aXRjaCAocHJvY2Vzcy5hcmNoKSB7CiAgICAgICAgICAgIGNhc2UgJ3g2NCc6CiAgICAgICAgICAgICAgICBuYXRpdmVCaW5kaW5nID0gcmVxdWlyZUJpbmRpbmcoWydsaW51eC14NjQnXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXJtNjQnOgogICAgICAgICAgICAgICAgbmF0aXZlQmluZGluZyA9IHJlcXVpcmVCaW5kaW5nKFsnbGludXgtYXJtNjQnXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYXJtJzoKICAgICAgICAgICAgICAgIG5hdGl2ZUJpbmRpbmcgPSByZXF1aXJlQmluZGluZyhbJ2xpbnV4LWFybSddKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUgb24gTGludXg6ICR7cHJvY2Vzcy5hcmNofWApOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBPUzogJHtwcm9jZXNzLnBsYXRmb3JtfSwgYXJjaGl0ZWN0dXJlOiAke3Byb2Nlc3MuYXJjaH1gKTsKfQpleHBvcnQgZGVmYXVsdCBuYXRpdmVCaW5kaW5nOwovLyMgc291cmNlTWFwcGluZ1VSTD1xdWljaGUuanMubWFw",yd=t(import.meta.url)("dns");var md=o(618);class bd extends wu{static description="QUIC error"}class Ad extends wu{static description="You should never see this error"}class Id extends wu{static description="Host provided was not valid"}class vd extends wu{static description="Port provided was not valid"}class wd extends bd{static description="QUIC config error"}class Sd extends bd{static description="QUIC Socket error"}class Ed extends Sd{static description="QUIC Socket is not running"}class Cd extends Sd{static description="QUIC Socket has active connections"}class kd extends Sd{static description="QUIC Socket cannot bind to the specified address"}class xd extends Sd{static description="QUIC Socket cannot send to the specified address"}class Bd extends Sd{static description="QUIC Socket internal error"}class _d extends bd{static description="QUIC Client error"}class Rd extends _d{static description="QUIC Client is destroyed"}class Od extends _d{static description="QUIC Client cannot be created with an unstarted shared QUIC socket"}class Ud extends _d{static description="QUIC Client had a failure relating to an invalid argument"}class Td extends _d{static description="QUIC Client cannot be created with the specified host"}class Nd extends _d{static description="QUIC Client internal error"}class Dd extends bd{static description="QUIC Server error"}class Md extends Dd{static description="QUIC Server is not running"}class Pd extends Dd{static description="QUIC Server cannot start with an unstarted shared QUIC socket"}class Ld extends Dd{static description="QUIC Server creating a new connection"}class Hd extends Dd{static description="QUIC Server internal error"}class Kd extends Dd{static description="QUIC Server is stopping"}class Vd extends bd{static description="QUIC Connection error"}class Qd extends Vd{static description="QUIC Connection is stopping"}class Fd extends Vd{static description="QUIC Connection is not running"}class Gd extends Vd{static description="QUIC Connection cannot be restarted because it has already been closed"}class $d extends bd{static description="QUIC Connection start requires data when it is a server connection"}class jd extends Vd{static description="QUIC connection invalid configuration"}class qd extends Vd{static description="QUIC Connection local error";constructor(e="",t){super(e,t)}}class zd extends qd{static description="QUIC Connection local TLS error";constructor(e="",t){super(e,t)}}class Wd extends Vd{static description="QUIC Connection peer error";constructor(e="",t){super(e,t)}}class Jd extends qd{static description="QUIC Connection local TLS error";constructor(e="",t){super(e,t)}}class Yd extends Vd{static description="QUIC Connection max idle timeout exhausted"}class Zd extends Vd{static description="QUIC Connection internal error"}class Xd extends bd{static description="QUIC Stream error"}class eg extends Xd{static description="QUIC Stream is destroyed"}class tg extends Xd{static description="QUIC Stream locally closed readable side";constructor(e="",t){super(e,t)}}class rg extends Xd{static description="QUIC Stream locally closed writable side";constructor(e="",t){super(e,t)}}class sg extends Xd{static description="QUIC Stream peer closed readable side";constructor(e="",t){super(e,t)}}class ig extends Xd{static description="QUIC Stream peer closed writable side";constructor(e="",t){super(e,t)}}class ng extends Xd{static description="QUIC Stream internal error"}class og extends Xd{static description="QUIC Stream limit has been reached"}const ag=new TextEncoder,cg=new TextDecoder("utf-8");function lg(e){throw new Ad(e)}function hg(e){return function(...t){return new Promise((r,s)=>{t.push((e,...t)=>{if(null!=e)return s(e);0===t.length?r():1===t.length?r(t[0]):r(t)}),e.apply(this,t)})}}function ug(){let e,t;return{p:new Promise((r,s)=>{e=r,t=s}),resolveP:e,rejectP:t}}function dg(e){const[t]=md.Validator.isValidIPv4String(e);return t}function gg(e){const[t]=md.Validator.isValidIPv6String(e);return!!t||fg(e)}function fg(e){if(e.startsWith("::ffff:"))try{return md.IPv6.fromString(e),!0}catch{if(dg(e.slice(7)))return!0}return!1}function pg(e){if(!dg(e))throw new TypeError("Invalid IPv4 address");return"::ffff:"+e}function yg(e){const t=e.slice(7);if(dg(t))return t;const r=t.match(/^([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/);if(null==r)throw new TypeError("Invalid IPv4 mapped IPv6 address");return(r[1].padStart(4,"0")+r[2].padStart(4,"0")).match(/.{1,2}/g).map(e=>parseInt(e,16)).join(".")}function mg(e){const t=new md.IPv4("0.0.0.0"),r=new md.IPv6("::");if(fg(e)){const r=yg(e);return new md.IPv4(r).isEquals(t)?pg("127.0.0.1"):e}return dg(e)&&new md.IPv4(e).isEquals(t)?"127.0.0.1":gg(e)&&new md.IPv6(e).isEquals(r)?"::1":e}async function bg(e){return(await yd.promises.lookup(e,{family:0,all:!1,verbatim:!0})).address}async function Ag(e,t){if(dg(e))return[e,"udp4"];if(gg(e))return[e,"udp6"];try{return Ag(e=await t(e),t)}catch{throw new Id}}function Ig(e){if(!function(e){return"number"==typeof e&&e>=0&&e<=65535}(e))throw new vd;return e}function vg(e,t=0){let r;return r=dg(e)?`${e}:${t}`:gg(e)?`[${e}]:${t}`:`${e}:${t}`,r}function wg(e,t,r,s,i){if("0.0.0.0"===(n=r)||"::"===n||"::0"===n||"::ffff:0.0.0.0"===n||"::ffff:0:0"===n)throw new i(`Invalid wildcard target host ${r}`);var n;const o=fg(e),a=fg(r);if("ipv4&ipv6"===t&&"udp4"===s)return pg(r);if("ipv4"===t){if(o){if("udp4"===s)return pg(r);if("udp6"===s&&!a)throw new i(`Invalid target host ${r} from an IPv4 socket`)}else if("udp6"===s){if(a)return yg(r);throw new i(`Invalid target host ${r} from an IPv4 socket`)}return r}if("ipv6"===t){if("udp4"===s||a)throw new i(`Invalid target host ${r} from an IPv6 socket`);return r}return r}function Sg(e){const t=[];if("string"==typeof e)t.push(e.trim()+"\n");else if(e instanceof Uint8Array)t.push(cg.decode(e).trim()+"\n");else if(Array.isArray(e))for(const r of e)"string"==typeof r?t.push(r.trim()+"\n"):t.push(cg.decode(r).trim()+"\n");return t}function Eg(e){const t=e.replace(/-----BEGIN .*-----/,"").replace(/-----END .*-----/,"").replace(/\s+/g,""),r=Buffer.from(t,"base64");return new Uint8Array(r)}function Cg(e){return`${e.name}${"description"in e?`: ${e.description}`:""}${void 0!==e.message?` - ${e.message}`:""}`}function kg(e){let t;return null!=(t=e.message.match(/StreamStopped\((\d{1,16})\)/))&&parseInt(t[1])}function xg(e){let t;return null!=(t=e.message.match(/StreamReset\((\d{1,16})\)/))&&parseInt(t[1])}function Bg(e,t=1e5){An.setMaxListeners(t,e)}class _g extends Jh{}class Rg extends _g{}class Og extends Rg{}class Ug extends Rg{}class Tg extends Rg{}class Ng extends _g{}class Dg extends Ng{}class Mg extends Rg{}class Pg extends Ng{}class Lg extends _g{}class Hg extends Lg{}class Kg extends Lg{}class Vg extends Lg{}class Qg extends _g{}class Fg extends Qg{}class Gg extends Qg{}class $g extends Qg{}class jg extends Qg{}class qg extends Qg{}class zg extends _g{}class Wg extends zg{}class Jg extends zg{}class Yg extends zg{}class Zg extends zg{}class Xg extends zg{}var ef=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let tf=class{connectionMap=new fd;logger;server;resolveHostname;_host;_port;_type;_closed=!1;_closedP;resolveClosedP;socket;socketBind;socketClose;socketSend;handleEventQUICSocketError=e=>{const t=e.detail;this.logger.debug(Cg(t))};handleEventQUICSocketClose=async()=>{await this.socketClose(),this._closed=!0,this.resolveClosedP(),this[Mu]&&await this.stop({force:!0})};handleSocketMessage=async(e,t)=>{let r;try{r=pd.Header.fromSlice(e,pd.MAX_CONN_ID_LEN)}catch(e){if("BufferTooShort"===e.message||"InvalidPacket"===e.message)return;throw e}const s=new dd(r.dcid),i={host:t.address,port:t.port},n=this.connectionMap.get(s);if(null!=n)await n.recv(e,i);else{if(null==this.server)return;try{await this.server.acceptConnection(i,r,s,e)}catch(e){if(Su(e,e=>e instanceof Sd)){const t=new Bd("Failed to call accept connection due to socket send",{cause:e});return this.dispatchEvent(new Ug({detail:t})),void this.dispatchEvent(new Tg)}if(e instanceof Ld)return;throw e}}};constructor({resolveHostname:e=bg,logger:t}){this.logger=t??new zh(this.constructor.name),this.resolveHostname=e;const{p:r,resolveP:s}=ug();this._closedP=r,this.resolveClosedP=s}get host(){return this._host}get port(){return this._port}get type(){return this._type}get closed(){return this._closed}get closedP(){return this._closedP}async start({host:e="::",port:t=0,reuseAddr:r=!1,ipv6Only:s=!1}={}){Bg(this[su]);let i=vg(e,t);this.logger.info(`Start ${this.constructor.name} on ${i}`);const[n,o]=await Ag(e,this.resolveHostname),a=Ig(t);this.socket=_h.createSocket({type:o,reuseAddr:r,ipv6Only:s}),this.socketBind=hg(this.socket.bind).bind(this.socket),this.socketClose=hg(this.socket.close).bind(this.socket),this.socketSend=hg(this.socket.send).bind(this.socket);const{p:c,rejectP:l}=ug();c.catch(()=>{}),this.socket.once("error",l);const h=this.socketBind(a,n);try{await Promise.race([h,c])}catch(t){throw new kd(e!==n?`Could not bind to resolved ${e} -> ${n}`:`Could not bind to ${e}`,{cause:t})}this.socket.removeListener("error",l);const u=this.socket.address();this._host=u.address,this._port=u.port,"::"!==n||s?"udp4"===o||fg(n)?this._type="ipv4":"udp6"===o&&(this._type="ipv6"):this._type="ipv4&ipv6",this.socket.on("message",this.handleSocketMessage),this.addEventListener(Ug.name,this.handleEventQUICSocketError),this.addEventListener(Tg.name,this.handleEventQUICSocketClose,{once:!0}),this._closed=!1,i=vg(this._host,this._port),this.logger.info(`Started ${this.constructor.name} on ${i}`)}async stop({force:e=!1}={}){const t=vg(this._host,this._port);if(this.logger.info(`Stop ${this.constructor.name} on ${t}`),!e&&this.connectionMap.size>0)throw new Cd(`Cannot stop QUICSocket with ${this.connectionMap.size} active connection(s)`);this._closed||this.dispatchEvent(new Tg),await this._closedP;const{p:r,resolveP:s}=ug();this._closedP=r,this.resolveClosedP=s,this.removeEventListener(Ug.name,this.handleEventQUICSocketError),this.removeEventListener(Tg.name,this.handleEventQUICSocketClose),this.socket.off("message",this.handleSocketMessage),this.logger.info(`Stopped ${this.constructor.name} on ${t}`)}async send(...e){let t;if(3===e.length&&"string"==typeof e[2])t=2;else{if(5!==e.length||"string"!=typeof e[4])throw new TypeError("QUICSocket.send requires `port` and `address` parameters");t=4}const r=e[t];let[s,i]=await Ag(r,this.resolveHostname);return s=mg(s),s=wg(this._host,this._type,s,i,xd),e[t]=s,this.socketSend(...e)}async send_(...e){return this.socketSend(...e)}setServer(e){this.server=e}unsetServer(){delete this.server}};ef([hd(new Ed)],tf.prototype,"host",null),ef([hd(new Ed)],tf.prototype,"port",null),ef([hd(new Ed)],tf.prototype,"type",null),ef([hd(new Ed)],tf.prototype,"send",null),ef([hd(new Ed)],tf.prototype,"send_",null),tf=ef([ld({eventStart:class extends Rg{},eventStarted:class extends Rg{},eventStop:class extends Rg{},eventStopped:Og})],tf);const rf=tf,sf=new WeakMap;const nf=function(e,t,r){const s=e.name??e.constructor.name,i=e[t];if(sf.has(i))throw new TypeError(`\`${s}.${t.toString()}\` redeclares \`@context\` decorator`);sf.set(i,r)};class of extends wu{static description="Contexts error"}class af extends of{static description="Aborted due to timer expiration"}const cf=function(e=!1,t=1/0,r=af){return(s,i,n)=>{const o=s.name??s.constructor.name,a=n.value;if("function"!=typeof a)throw new TypeError(`\`${o}.${i.toString()}\` is not a function`);const c=function(e,t,r){const s=sf.get(e[t]);if(null==s)throw new TypeError(`\`${r}.${t.toString()}\` does not have a \`@context\` parameter decorator`);return s}(s,i,o);return n.value=function(...s){let n=s[c];return n=void 0===n?{}:{...n},s[c]=n,function(e,t,r){if("object"!=typeof e||null===e)throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter is not a context object`);if(void 0!==e.signal&&!(e.signal instanceof AbortSignal))throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter's \`signal\` property is not an instance of \`AbortSignal\``);if(void 0!==e.timer&&!("number"==typeof e.timer||e.timer instanceof xu))throw new TypeError(`\`${r}.${t.toString()}\` decorated \`@context\` parameter's \`timer\` property is not a number nor an instance of \`Timer\``)}(n,i,o),function(e,t,r,s,i,n){let o,a;if(void 0!==i.timer&&"number"!=typeof i.timer||void 0!==i.signal)if((void 0===i.timer||"number"==typeof i.timer)&&i.signal instanceof AbortSignal){o=new AbortController;const e=new s,t=new xu(()=>{o.abort(e)},i.timer??r),n=i.signal,c=()=>{t.cancel(),o.abort(n.reason)};n.aborted?(t.cancel(),o.abort(n.reason)):n.addEventListener("abort",c),i.signal=o.signal,i.timer=t,a=()=>{n.removeEventListener("abort",c),t.cancel()}}else if(i.timer instanceof xu&&void 0===i.signal){o=new AbortController;const e=new s;let t=!1;i.timer.then((r,s)=>(t||s.aborted||o.abort(e),r),()=>{}),i.signal=o.signal,a=()=>{t=!0}}else{o=new AbortController;const e=i.signal,t=()=>{o.abort(e.reason)};e.aborted?o.abort(e.reason):e.addEventListener("abort",t),i.signal=o.signal,a=()=>{e.removeEventListener("abort",t)}}else{o=new AbortController;const e=new s,t=new xu(()=>{o.abort(e)},i.timer??r);o.signal.addEventListener("abort",()=>{t.cancel()}),i.signal=o.signal,i.timer=t,a=()=>{t.cancel()}}const c=e(i,...n);return new mu((e,r,s)=>{t||(s.aborted?r(s.reason):s.addEventListener("abort",()=>{r(s.reason)},{once:!0})),c.then(e,r)},o).finally(()=>{a()},o)}((e,...t)=>a.apply(this,t),"boolean"==typeof e?e:e(this),"number"==typeof t?t:t(this),r,n,s)},Object.defineProperty(n.value,"name",{value:"symbol"==typeof i?`[${i.description}]`:i}),n}},lf=["rsa_pkcs1_sha256","rsa_pkcs1_sha384","rsa_pkcs1_sha512","rsa_pss_rsae_sha256","rsa_pss_rsae_sha384","rsa_pss_rsae_sha512","ecdsa_secp256r1_sha256","ecdsa_secp384r1_sha384","ecdsa_secp521r1_sha512","ed25519"].join(":"),hf=1/0,uf={sigalgs:lf,verifyPeer:!0,grease:!0,keepAliveIntervalTime:void 0,maxIdleTimeout:0,maxRecvUdpPayloadSize:pd.MAX_DATAGRAM_SIZE,maxSendUdpPayloadSize:pd.MAX_DATAGRAM_SIZE,initialMaxData:10485760,initialMaxStreamDataBidiLocal:1048576,initialMaxStreamDataBidiRemote:1048576,initialMaxStreamDataUni:1048576,initialMaxStreamsBidi:100,initialMaxStreamsUni:100,maxConnectionWindow:pd.MAX_CONNECTION_WINDOW,maxStreamWindow:pd.MAX_STREAM_WINDOW,enableDgram:[!1,0,0],disableActiveMigration:!0,applicationProtos:["quic"],enableEarlyData:!0,readableChunkSize:4096},df={sigalgs:lf,verifyPeer:!1,grease:!0,keepAliveIntervalTime:void 0,maxIdleTimeout:0,maxRecvUdpPayloadSize:pd.MAX_DATAGRAM_SIZE,maxSendUdpPayloadSize:pd.MAX_DATAGRAM_SIZE,initialMaxData:10485760,initialMaxStreamDataBidiLocal:1048576,initialMaxStreamDataBidiRemote:1048576,initialMaxStreamDataUni:1048576,initialMaxStreamsBidi:100,initialMaxStreamsUni:100,maxConnectionWindow:pd.MAX_CONNECTION_WINDOW,maxStreamWindow:pd.MAX_STREAM_WINDOW,enableDgram:[!1,0,0],disableActiveMigration:!0,applicationProtos:["quic"],enableEarlyData:!0,readableChunkSize:4096},gf=t(import.meta.url)("stream/web");var ff=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};const pf=Symbol("abort readableP reason");let yf=class{static createQUICStream({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i=()=>0,codeToReason:n=(e,t)=>new Error(`${e.toString()} ${t.toString()}`),logger:o=new zh(`${this.name} ${t}`)}){o.info(`Create ${this.name}`);const a=new this({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i,codeToReason:n,logger:o});return"uni"===a.type&&("local"===e?(a.readableController.close(),a._readClosed=!0):"peer"===e&&(a.writable.close().catch(()=>{}),a._writeClosed=!0)),a.addEventListener(Jg.name,a.handleEventQUICStreamError),a.addEventListener(Yg.name,a.handleEventQUICStreamCloseRead,{once:!0}),a.addEventListener(Zg.name,a.handleEventQUICStreamCloseWrite,{once:!0}),o.info(`Created ${this.name}`),a}type;initiated;streamId;readable;writable;closedP;logger;connection;reasonToCode;codeToReason;readableController;writableController;_readClosed=!1;_writeClosed=!1;readableChunk;resolveReadableP;rejectReadableP;resolveWritableP;rejectWritableP;resolveClosedP;handleEventQUICStreamError=e=>{const t=e.detail;if(t instanceof ng)throw this.logger.debug(Cg(t)),t;t instanceof tg||t instanceof sg?this.dispatchEvent(new Yg({detail:t})):(t instanceof rg||t instanceof ig)&&this.dispatchEvent(new Zg({detail:t}))};handleEventQUICStreamCloseRead=async()=>{this._readClosed=!0,this._readClosed&&this._writeClosed&&(this.resolveClosedP(),this[Lu]||"destroying"===this[Ku]||await this.destroy({force:!1}))};handleEventQUICStreamCloseWrite=async()=>{this._writeClosed=!0,this._readClosed&&this._writeClosed&&(this.resolveClosedP(),this[Lu]||"destroying"===this[Ku]||await this.destroy({force:!1}))};constructor({initiated:e,streamId:t,connection:r,config:s,reasonToCode:i,codeToReason:n,logger:o}){!function(e){return!(2&e)}(t)?function(e){return!!(2&e)}(t)&&(this.type="uni"):this.type="bidi",this.logger=o,this.initiated=e,this.streamId=t,this.connection=r,this.reasonToCode=i,this.codeToReason=n;const{p:a,resolveP:c}=ug();if(this.closedP=a,this.resolveClosedP=c,"uni"===this.type&&"local"===e?this.readableChunk=void 0:this.readableChunk=Buffer.allocUnsafe(s.readableChunkSize),"uni"===this.type&&"local"===e?this.readable=new gf.ReadableStream({start:this.readableStart.bind(this)}):this.readable=new gf.ReadableStream({start:this.readableStart.bind(this),pull:this.readablePull.bind(this),cancel:this.readableCancel.bind(this)},new gf.CountQueuingStrategy({highWaterMark:1})),"uni"===this.type&&"peer"===this.initiated)this.writable=new gf.WritableStream({start:this.writableStart.bind(this)});else{this.writable=new gf.WritableStream({start:this.writableStart.bind(this),write:this.writableWrite.bind(this),close:this.writableClose.bind(this),abort:this.writableAbort.bind(this)},{highWaterMark:1});try{r.conn.streamSend(t,new Uint8Array(0),!1)}catch(e){if(!1===kg(e)){if("StreamLimit"===e.message){const t="bidi"===this.type?s.initialMaxStreamsBidi:s.initialMaxStreamsUni;throw new og(`Stream limit of ${t} has been reached`,{cause:e})}throw new ng(`Failed to prime local stream state with a 0-length message: ${e.message}`,{cause:e})}}}}get writeClosed(){return this._writeClosed}get readClosed(){return this._readClosed}get meta(){return this.connection.meta()}get closed(){return this._readClosed&&this._writeClosed}async destroy({force:e=!0,reason:t}={}){this.logger.info(`Destroy ${this.constructor.name}`),!e||this._readClosed&&this._writeClosed||this.cancel(t),await this.closedP,this.removeEventListener(Jg.name,this.handleEventQUICStreamError),this.removeEventListener(Yg.name,this.handleEventQUICStreamCloseRead),this.removeEventListener(Zg.name,this.handleEventQUICStreamCloseWrite),this.logger.info(`Destroyed ${this.constructor.name}`)}cancel(e){this.readableCancel(e),this.writableAbort(e)}read(){if(this.connection.conn.streamFinished(this.streamId)){let e;try{e=this.connection.conn.streamRecv(this.streamId,this.readableChunk)}catch(e){let t;if(!1!==(t=xg(e))){const e=this.codeToReason("read",t),r=new sg("Peer reset the readable stream",{data:{code:t},cause:e});return this.readableController.error(e),this.rejectReadableP?.(e),void this.dispatchEvent(new Jg({detail:r}))}{const t=new ng("Failed `streamRecv` on the readable stream",{cause:e});throw this.readableController.error(t),this.rejectReadableP?.(t),this.dispatchEvent(new Jg({detail:t})),t}}if(null===e){const e=new ng("Failed `streamRecv` on the readable stream");throw this.readableController.error(e),this.rejectReadableP?.(e),this.dispatchEvent(new Jg({detail:e})),e}const[t]=e;return t>0&&this.readableController.enqueue(Buffer.from(this.readableChunk.subarray(0,t))),this.readableController.close(),this.dispatchEvent(new Yg),void this.rejectReadableP?.(pf)}this.resolveReadableP?.()}write(){try{this.connection.conn.streamCapacity(this.streamId)}catch(e){let t;if(!1!==(t=kg(e))){this.connection.conn.streamShutdown(this.streamId,pd.Shutdown.Write,t);const e=this.codeToReason("write",t),r=new ig("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),this.rejectWritableP?.(e),void this.dispatchEvent(new Jg({detail:r}))}{const t=new ng("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.rejectWritableP?.(t),this.dispatchEvent(new Jg({detail:t})),t}}this.resolveWritableP?.()}readableStart(e){this.readableController=e}writableStart(e){this.writableController=e}async readablePull(){if(!this.connection.conn.streamReadable(this.streamId)){const{p:e,resolveP:t,rejectP:r}=ug();e.catch(()=>{}),this.resolveReadableP=t,this.rejectReadableP=r;try{await e}catch(e){return}}let e;try{e=this.connection.conn.streamRecv(this.streamId,this.readableChunk)}catch(e){let t;if(!1!==(t=xg(e))){const e=this.codeToReason("read",t),r=new sg("Peer reset the readable stream",{data:{code:t},cause:e});return this.readableController.error(e),void this.dispatchEvent(new Jg({detail:r}))}{const t=new ng("Failed `streamRecv` on the readable stream",{cause:e});throw this.readableController.error(t),this.dispatchEvent(new Jg({detail:t})),t}}if(null===e){const e=new ng("Failed `streamRecv` on the readable stream because it is not readable");throw this.readableController.error(e),this.dispatchEvent(new Jg({detail:e})),e}const[t,r]=e;t>0&&this.readableController.enqueue(Buffer.from(this.readableChunk.subarray(0,t))),r&&(this.readableController.close(),this.dispatchEvent(new Yg)),this.dispatchEvent(new Xg)}async writableWrite(e){if(0===e.byteLength)return;let t;for(;;){try{const r=this.connection.conn.streamSend(this.streamId,e,!1);t=null===r?0:r}catch(e){let t;if(!1!==(t=kg(e))){const e=this.codeToReason("write",t),r=new ig("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),void this.dispatchEvent(new Jg({detail:r}))}{const t=new ng("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.dispatchEvent(new Jg({detail:t})),t}}if(this.dispatchEvent(new Xg),t<e.byteLength){e=e.subarray(t,e.byteLength);const{p:r,resolveP:s,rejectP:i}=ug();r.catch(()=>{}),this.resolveWritableP=s,this.rejectWritableP=i,await r;continue}return}}writableClose(){try{this.connection.conn.streamSend(this.streamId,new Uint8Array(0),!0)}catch(e){let t;if(!1!==(t=kg(e))){const e=this.codeToReason("write",t),r=new ig("Peer stopped the writable stream",{data:{code:t},cause:e});return this.writableController.error(e),void this.dispatchEvent(new Jg({detail:r}))}{const t=new ng("Local stream writable could not `streamSend`",{cause:e});throw this.writableController.error(t),this.dispatchEvent(new Jg({detail:t})),t}}this.dispatchEvent(new Zg),this.dispatchEvent(new Xg)}readableCancel(e){if(this._readClosed)return;const t=this.reasonToCode("read",e);try{this.connection.conn.streamShutdown(this.streamId,pd.Shutdown.Read,t)}catch(r){const e=new ng("Local stream readable could not be shutdown",{cause:r});throw this.readableController.error(e),this.dispatchEvent(new Jg({detail:e})),e}const r=new tg("Closing readable stream locally",{data:{code:t},cause:e});this.readableController.error(e),this.rejectReadableP?.(e),this.dispatchEvent(new Jg({detail:r})),this.dispatchEvent(new Xg)}writableAbort(e){if(this._writeClosed)return;const t=this.reasonToCode("write",e);try{this.connection.conn.streamShutdown(this.streamId,pd.Shutdown.Write,t)}catch(r){const e=new ng("Local stream writable could not be shutdown",{cause:r});throw this.writableController.error(e),this.dispatchEvent(new Jg({detail:e})),e}const r=new rg("Closing writable stream locally",{data:{code:t},cause:e});this.writableController.error(e),this.rejectWritableP?.(e),this.dispatchEvent(new Jg({detail:r})),this.dispatchEvent(new Xg)}};ff([cd(new eg)],yf.prototype,"meta",null),ff([cd(new eg,!1,["destroying"])],yf.prototype,"read",null),ff([cd(new eg,!1,["destroying"])],yf.prototype,"write",null),yf=ff([ad({eventDestroy:class extends zg{},eventDestroyed:Wg})],yf);const mf=yf;var bf,Af,If,vf,wf,Sf;!function(e){e[e.Reno=0]="Reno",e[e.CUBIC=1]="CUBIC",e[e.BBR=2]="BBR"}(bf||(bf={})),function(e){e[e.Read=0]="Read",e[e.Write=1]="Write"}(Af||(Af={})),function(e){e[e.Initial=0]="Initial",e[e.Retry=1]="Retry",e[e.Handshake=2]="Handshake",e[e.ZeroRTT=3]="ZeroRTT",e[e.VersionNegotiation=4]="VersionNegotiation",e[e.Short=5]="Short"}(If||(If={})),function(e){e[e.NoError=0]="NoError",e[e.InternalError=1]="InternalError",e[e.ConnectionRefused=2]="ConnectionRefused",e[e.FlowControlError=3]="FlowControlError",e[e.StreamLimitError=4]="StreamLimitError",e[e.StreamStateError=5]="StreamStateError",e[e.FinalSizeError=6]="FinalSizeError",e[e.FrameEncodingError=7]="FrameEncodingError",e[e.TransportParameterError=8]="TransportParameterError",e[e.ConnectionIdLimitError=9]="ConnectionIdLimitError",e[e.ProtocolViolation=10]="ProtocolViolation",e[e.InvalidToken=11]="InvalidToken",e[e.ApplicationError=12]="ApplicationError",e[e.CryptoBufferExceeded=13]="CryptoBufferExceeded",e[e.KeyUpdateError=14]="KeyUpdateError",e[e.AEADLimitReached=15]="AEADLimitReached",e[e.NoViablePath=16]="NoViablePath"}(vf||(vf={})),(Sf=wf||(wf={}))[Sf.CloseNotify=256]="CloseNotify",Sf[Sf.UnexpectedMessage=266]="UnexpectedMessage",Sf[Sf.BadRecordMac=276]="BadRecordMac",Sf[Sf.RecordOverflow=278]="RecordOverflow",Sf[Sf.HandshakeFailure=296]="HandshakeFailure",Sf[Sf.BadCertificate=298]="BadCertificate",Sf[Sf.UnsupportedCertificate=299]="UnsupportedCertificate",Sf[Sf.CertificateRevoked=300]="CertificateRevoked",Sf[Sf.CertificateExpired=301]="CertificateExpired",Sf[Sf.CertificateUnknown=302]="CertificateUnknown",Sf[Sf.IllegalParameter=303]="IllegalParameter",Sf[Sf.UnknownCA=304]="UnknownCA",Sf[Sf.AccessDenied=305]="AccessDenied",Sf[Sf.DecodeError=306]="DecodeError",Sf[Sf.DecryptError=307]="DecryptError",Sf[Sf.ProtocolVersion=326]="ProtocolVersion",Sf[Sf.InsufficientSecurity=327]="InsufficientSecurity",Sf[Sf.InternalError=336]="InternalError",Sf[Sf.InappropriateFallback=342]="InappropriateFallback",Sf[Sf.UserCanceled=346]="UserCanceled",Sf[Sf.MissingExtension=365]="MissingExtension",Sf[Sf.UnsupportedExtension=366]="UnsupportedExtension",Sf[Sf.UnrecognizedName=368]="UnrecognizedName",Sf[Sf.BadCertificateStatusResponse=369]="BadCertificateStatusResponse",Sf[Sf.UnknownPSKIdentity=371]="UnknownPSKIdentity",Sf[Sf.CertificateRequired=372]="CertificateRequired",Sf[Sf.NoApplicationProtocol=376]="NoApplicationProtocol";var Ef=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let Cf=class{type;closedP;conn;streamMap=new Map;sendId;logger;socket;config;reasonToCode;codeToReason;recvLock=new Tu;streamIdClientBidi=0;streamIdServerBidi=1;streamIdClientUni=2;streamIdServerUni=3;streamIdUsedClientBidi=-4;streamIdUsedServerBidi=-3;streamIdUsedClientUni=-2;streamIdUsedServerUni=-1;streamIdUsedSet=new Set;connTimeoutTimer;keepAliveIntervalTimer;_remoteHost;_remotePort;certDERs=[];caDERs=[];secureEstablished=!1;secureEstablishedP;resolveSecureEstablishedP;rejectSecureEstablishedP;resolveClosedP;errorLast=null;handleEventQUICConnectionError=e=>{const t=e.detail;if(this.errorLast=t,this.logger.info(Cg(t)),t instanceof Zd)throw t;this.dispatchEvent(new $g({detail:t}))};handleEventQUICConnectionClose=async e=>{const t=e.detail;this.secureEstablished||this.rejectSecureEstablishedP(t),t instanceof qd&&await this.send(),this[Mu]&&"stopping"!==this[Ku]&&await this.stop({force:!0})};handleEventQUICStream=e=>{e.detail instanceof Jh&&!(e.detail instanceof Xg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICStreamSend=async()=>{this[Mu]&&await this.send()};handleEventQUICStreamDestroyed=e=>{const t=e.target;t.removeEventListener(Xg.name,this.handleEventQUICStreamSend),t.removeEventListener(eu.name,this.handleEventQUICStream),this.streamMap.delete(t.streamId)};constructor({type:e,scid:t,dcid:r,serverName:s=null,remoteInfo:i,config:n,socket:o,reasonToCode:a=()=>0,codeToReason:c=(e,t)=>new Error(`${e} ${t}`),logger:l}){if(this.logger=l??new zh(`${this.constructor.name} ${t}`),this.sendId=t.toString(),null!=n.keepAliveIntervalTime&&0!==n.maxIdleTimeout&&n.keepAliveIntervalTime>=n.maxIdleTimeout)throw new jd("`keepAliveIntervalTime` must be less than `maxIdleTimeout`");const h=function(e){if(null!=e.key&&null==e.cert)throw new wd("The cert option must be set when key is set");if(null==e.key&&null!=e.cert)throw new wd("The key option must be set when cert is set");if(null!=e.key&&null!=e.cert&&Array.isArray(e.key)&&Array.isArray(e.cert)&&e.key.length!==e.cert.length)throw new wd("The number of keys must match the number of certs");let t,r,s,i;if(null!=e.ca){const r=Sg(e.ca);t=ag.encode(r.join(""))}null!=e.key&&(r=Sg(e.key).map(e=>ag.encode(e))),null!=e.cert&&(s=Sg(e.cert).map(e=>ag.encode(e)));try{i=pd.Config.withBoringSslCtx(e.verifyPeer,null!=e.verifyCallback,t,r,s,e.sigalgs)}catch(e){throw new wd(`Failed to build Quiche config with custom SSL context: ${e.message}`,{cause:e})}return null!=e.logKeys&&i.logKeys(),e.enableEarlyData&&i.enableEarlyData(),i.grease(e.grease),i.setMaxIdleTimeout(e.maxIdleTimeout),i.setMaxRecvUdpPayloadSize(e.maxRecvUdpPayloadSize),i.setMaxSendUdpPayloadSize(e.maxSendUdpPayloadSize),i.setInitialMaxData(e.initialMaxData),i.setInitialMaxStreamDataBidiLocal(e.initialMaxStreamDataBidiLocal),i.setInitialMaxStreamDataBidiRemote(e.initialMaxStreamDataBidiRemote),i.setInitialMaxStreamDataUni(e.initialMaxStreamDataUni),i.setInitialMaxStreamsBidi(e.initialMaxStreamsBidi),i.setInitialMaxStreamsUni(e.initialMaxStreamsUni),i.enableDgram(...e.enableDgram),i.setDisableActiveMigration(e.disableActiveMigration),i.setApplicationProtos(e.applicationProtos),i}(n);let u;if("client"===e?(this.logger.info(`Connect ${this.constructor.name}`),u=pd.Connection.connect(s,t,{host:o.host,port:o.port},{host:i.host,port:i.port},h)):"server"===e&&(this.logger.info(`Accept ${this.constructor.name}`),u=pd.Connection.accept(t,r,{host:o.host,port:o.port},{host:i.host,port:i.port},h)),null!=n.logKeys&&u.setKeylog(n.logKeys),this.type=e,this.conn=u,this.socket=o,this.config=n,null!=this.config.cert){const e=Sg(this.config.cert);this.certDERs=e.map(Eg)}if(null!=this.config.ca){const e=Sg(this.config.ca);this.caDERs=e.map(Eg)}this.reasonToCode=a,this.codeToReason=c,this._remoteHost=i.host,this._remotePort=i.port;const{p:d,resolveP:g,rejectP:f}=ug();d.catch(()=>{}),this.secureEstablishedP=d,this.resolveSecureEstablishedP=()=>{this.secureEstablished=!0,g()},this.rejectSecureEstablishedP=f;const{p,resolveP:y}=ug();this.closedP=p,this.resolveClosedP=y}get connectionId(){const e=this.conn.sourceId();return new dd(e.buffer,e.byteOffset,e.byteLength)}get connectionIdPeer(){const e=this.conn.destinationId();return new dd(e.buffer,e.byteOffset,e.byteLength)}get connectionIdShared(){const e=this.conn.sourceId(),t=this.conn.destinationId();return Buffer.compare(e,t)<=0?new dd(Buffer.concat([e,t])):new dd(Buffer.concat([t,e]))}get remoteHost(){return this._remoteHost}get remotePort(){return this._remotePort}get localHost(){return this.socket.host}get localPort(){return this.socket.port}get closed(){return this.conn.isClosed()}async start({data:e,remoteInfo:t}={},r){if(this.logger.info(`Start ${this.constructor.name}`),this.conn.isClosed())throw new Gd;r.signal.throwIfAborted();const{p:s,rejectP:i}=ug();s.catch(()=>{});const n=()=>{i(r.signal.reason)};if(r.signal.addEventListener("abort",n),this.addEventListener(Gg.name,this.handleEventQUICConnectionError),this.addEventListener($g.name,this.handleEventQUICConnectionClose,{once:!0}),"client"===this.type)await this.send();else if("server"===this.type){if(null==e||null==t)throw new $d("Starting a server connection requires initial data and remote information");await this.recv(e,t)}try{await Promise.race([this.secureEstablishedP,s])}catch(e){if(r.signal.aborted){for(const t of this.conn.readable())this.conn.streamShutdown(t,pd.Shutdown.Read,this.reasonToCode("read",e));for(const t of this.conn.writable())this.conn.streamShutdown(t,pd.Shutdown.Write,this.reasonToCode("write",e));this.conn.close(!1,vf.ApplicationError,Buffer.from(""));const t=this.conn.localError(),r=new qd("Failed to start QUIC connection due to start timeout",{data:t,cause:e});this.dispatchEvent(new Gg({detail:r}))}throw await this.closedP,e}finally{r.signal.removeEventListener("abort",n)}null!=this.config.keepAliveIntervalTime&&this.startKeepAliveIntervalTimer(this.config.keepAliveIntervalTime),this.logger.info(`Started ${this.constructor.name}`)}async stop({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){this.logger.info(`Stop ${this.constructor.name}`),this.stopKeepAliveIntervalTimer(),await async function(){return await new Promise(e=>queueMicrotask(e))}();const i=[];for(const e of this.streamMap.values())i.push(e.destroy({reason:this.errorLast,force:s||this.conn.isDraining()||this.conn.isClosed()}));if(await Promise.all(i),!this.conn.isDraining()&&!this.conn.isClosed()){this.conn.close(e,t,r);const s=this.conn.localError(),i=`Locally closed with ${s.isApp?"application":"transport"} code ${s.errorCode}`,n=new qd(i,{data:s});this.dispatchEvent(new Gg({detail:n}))}await this.closedP,this.removeEventListener(Gg.name,this.handleEventQUICConnectionError),this.removeEventListener($g.name,this.handleEventQUICConnectionClose),this.logger.info(`Stopped ${this.constructor.name}`)}getConnectionError(){return this.conn.localError()??this.conn.peerError()??void 0}getLocalCACertsChain(){return this.caDERs}getLocalCertsChain(){return this.certDERs}getRemoteCertsChain(){return this.conn.peerCertChain()??[]}meta(){return{localHost:this.localHost,localPort:this.localPort,remoteHost:this.remoteHost,remotePort:this.remotePort,localCertsChain:this.certDERs,localCACertsChain:this.caDERs,remoteCertsChain:this.getRemoteCertsChain()}}async recv(e,t){await this.recvLock.withF(async()=>{const r={to:{host:this.localHost,port:this.localPort},from:{host:t.host,port:t.port}};try{this.conn.recv(e,r)}catch(e){const t=this.conn.localError();if(null==t){const t=new Zd("Failed connection recv due with unknown error",{cause:e});throw this.dispatchEvent(new Gg({detail:t})),t}{let r;return r="TlsFail"===e.message?new zd("Failed connection due to native TLS verification",{cause:e,data:t}):new qd("Failed connection due to local error",{cause:e,data:t}),void this.dispatchEvent(new Gg({detail:r}))}}this._remoteHost=t.host,this._remotePort=t.port,!this.secureEstablished&&this.conn.isEstablished()&&null==this.config.verifyCallback&&this.resolveSecureEstablishedP(),this.secureEstablished&&this.processStreams(),await this.send()})}async send(){let e,t;for(;;){const r=Buffer.allocUnsafe(this.config.maxSendUdpPayloadSize);try{const s=this.conn.send(r);if(null===s)break;[e,t]=s}catch(e){const t=new Zd("Failed connection send with unknown internal error",{cause:e});throw this.dispatchEvent(new Gg({detail:t})),t}this.dispatchEvent(new qg({detail:{id:this.sendId,msg:r.subarray(0,e),port:t.to.port,address:t.to.host}}))}if(this.setConnTimeoutTimer(),!this.secureEstablished&&!this.conn.isDraining()&&!this.conn.isClosed()&&this.conn.isEstablished()&&this.config.verifyPeer&&null!=this.config.verifyCallback){const e=this.conn.peerCertChain(),t=await this.config.verifyCallback(e,this.caDERs);if(null!=t){this.conn.close(!1,t,Buffer.from(""));const e=this.conn.localError(),r=new zd("Failed connection due to custom TLS verification",{data:e});return void this.dispatchEvent(new Gg({detail:r}))}this.resolveSecureEstablishedP(),this.processStreams()}if("stopping"!==this[Ku]){const e=this.conn.peerError();if(null!=e){const t=`Peer closed with ${e.isApp?"application":"transport"} code ${e.errorCode}`;return void(e.errorCode>=pd.CRYPTO_ERROR_START&&e.errorCode<=pd.CRYPTO_ERROR_STOP?this.dispatchEvent(new Gg({detail:new Jd(t,{data:e})})):this.dispatchEvent(new Gg({detail:new Wd(t,{data:e})})))}}}isStreamUsed(e){let t;switch(3&e){case 0:if(t=this.streamIdUsedClientBidi+4,e<=this.streamIdUsedClientBidi||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedClientBidi=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 1:if(t=this.streamIdUsedServerBidi+4,e<=this.streamIdUsedServerBidi||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedServerBidi=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 2:if(t=this.streamIdUsedClientUni+4,e<=this.streamIdUsedClientUni||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedClientUni=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;case 3:if(t=this.streamIdUsedServerUni+4,e<=this.streamIdUsedServerUni||this.streamIdUsedSet.has(e))return!0;if(e===t){do{this.streamIdUsedServerUni=t,this.streamIdUsedSet.delete(t),t+=4}while(this.streamIdUsedSet.has(t));return!1}return this.streamIdUsedSet.add(e),!1;default:lg("got an unexpected ID type")}}processStreams(){for(const e of this.conn.readable()){let t=this.streamMap.get(e);if(null==t){if(!1===this[Mu]||"stopping"===this[Ku]){this.conn.streamShutdown(e,Af.Write,this.reasonToCode("write",Qd)),this.conn.streamShutdown(e,Af.Read,this.reasonToCode("read",Qd));continue}this.isStreamUsed(e)&&lg("We should never repeat streamIds when creating streams"),t=mf.createQUICStream({initiated:"peer",streamId:e,config:this.config,connection:this,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${mf.name} ${e}`)}),this.streamMap.set(t.streamId,t),t.addEventListener(Xg.name,this.handleEventQUICStreamSend),t.addEventListener(Wg.name,this.handleEventQUICStreamDestroyed,{once:!0}),t.addEventListener(eu.name,this.handleEventQUICStream),this.dispatchEvent(new jg({detail:t}))}t.read()}for(const e of this.conn.writable()){let t=this.streamMap.get(e);if(null==t){if(!1===this[Mu]||"stopping"===this[Ku]){this.conn.streamShutdown(e,Af.Write,this.reasonToCode("write",Qd)),this.conn.streamShutdown(e,Af.Read,this.reasonToCode("read",Qd));continue}if(this.isStreamUsed(e)){try{this.conn.streamSend(e,new Uint8Array,!1)}catch(e){if(!1!==kg(e))continue;if("FinalSize"===e.message)continue;throw e}lg("We never expect a duplicate stream to be readable")}t=mf.createQUICStream({initiated:"peer",streamId:e,config:this.config,connection:this,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${mf.name} ${e}`)}),this.streamMap.set(t.streamId,t),t.addEventListener(Xg.name,this.handleEventQUICStreamSend),t.addEventListener(Wg.name,this.handleEventQUICStreamDestroyed,{once:!0}),t.addEventListener(eu.name,this.handleEventQUICStream),this.dispatchEvent(new jg({detail:t}))}t.write()}}setConnTimeoutTimer(){const e=async t=>{if(t.aborted)return;if(this.conn.onTimeout(),this.conn.isClosed())return this.resolveClosedP(),void(this.conn.isTimedOut()&&this.dispatchEvent(new Gg({detail:new Yd})));await this.send();const r=this.conn.timeout();null!=r&&(this.connTimeoutTimer=new xu({delay:r+1,handler:e,lazy:!0}))},t=this.conn.timeout();if(null==t)return this.connTimeoutTimer?.cancel(),delete this.connTimeoutTimer,void(this.conn.isClosed()&&(this.resolveClosedP(),this.conn.isTimedOut()&&this.dispatchEvent(new Gg({detail:new Yd}))));null==this.connTimeoutTimer||"settled"===this.connTimeoutTimer.status?this.connTimeoutTimer=new xu({delay:t+1,handler:e,lazy:!0}):null==this.connTimeoutTimer.status&&this.connTimeoutTimer.reset(t+1)}newStream(e="bidi"){let t;"client"===this.type&&"bidi"===e?t=this.streamIdClientBidi:"server"===this.type&&"bidi"===e?t=this.streamIdServerBidi:"client"===this.type&&"uni"===e?t=this.streamIdClientUni:"server"===this.type&&"uni"===e&&(t=this.streamIdServerUni),this.isStreamUsed(t)&&lg("We should never repeat streamIds when creating streams");const r=mf.createQUICStream({initiated:"local",streamId:t,connection:this,config:this.config,codeToReason:this.codeToReason,reasonToCode:this.reasonToCode,logger:this.logger.getChild(`${mf.name} ${t}`)});return this.streamMap.set(r.streamId,r),r.addEventListener(Xg.name,this.handleEventQUICStreamSend),r.addEventListener(Wg.name,this.handleEventQUICStreamDestroyed,{once:!0}),r.addEventListener(eu.name,this.handleEventQUICStream),"client"===this.type&&"bidi"===e?this.streamIdClientBidi=this.streamIdClientBidi+4:"server"===this.type&&"bidi"===e?this.streamIdServerBidi=this.streamIdServerBidi+4:"client"===this.type&&"uni"===e?this.streamIdClientUni=this.streamIdClientUni+4:"server"===this.type&&"uni"===e&&(this.streamIdServerUni=this.streamIdServerUni+4),r}destroyStreams(e){for(const t of this.streamMap.values())t.cancel(e)}startKeepAliveIntervalTimer(e){const t=async r=>{r.aborted||(this.conn.sendAckEliciting(),await this.send(),r.aborted||(this.keepAliveIntervalTimer=new xu({delay:e,handler:t,lazy:!0})))};this.keepAliveIntervalTimer=new xu({delay:e,handler:t,lazy:!0})}stopKeepAliveIntervalTimer(){this.keepAliveIntervalTimer?.cancel()}};var kf,xf;Ef([hd(new Fd)],Cf.prototype,"connectionIdPeer",null),Ef([hd(new Fd)],Cf.prototype,"connectionIdShared",null),Ef([cf(!0,hf,class extends Vd{static description="QUIC Connection start timeout"}),(kf=1,xf=nf,function(e,t){xf(e,t,kf)})],Cf.prototype,"start",null),Ef([hd(new Fd,!1,["starting","stopping"])],Cf.prototype,"recv",null),Ef([hd(new Fd,!1,["starting","stopping"])],Cf.prototype,"send",null),Ef([hd(new Fd)],Cf.prototype,"newStream",null),Cf=Ef([ld({eventStart:class extends Qg{},eventStarted:class extends Qg{},eventStop:class extends Qg{},eventStopped:Fg})],Cf);const Bf=Cf;var _f=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let Rf=class{isSocketShared;reasonToCode;codeToReason;minIdleTimeout;logger;socket;crypto;config;_closed=!1;_closedP;resolveClosedP;stopAbortController;handleEventQUICServerError=e=>{const t=e.detail;if(this.logger.info(Cg(t)),t instanceof Hd)throw t;this.dispatchEvent(new Vg({detail:t}))};handleEventQUICServerClose=async e=>{const t=e.detail;if(!(t instanceof Pd||this.isSocketShared)){this.socket.removeEventListener(Og.name,this.handleEventQUICSocketStopped);try{await this.socket.stop({force:!0})}catch(e){const t=new Hd("Failed to stop QUICSocket",{cause:e});this.dispatchEvent(new Kg({detail:t}))}}this._closed=!0,this.resolveClosedP(),this[Mu]&&"stopping"!==this[Ku]&&(void 0!==t?await this.stop({isApp:!1,errorCode:vf.InternalError,reason:Buffer.from(t.description),force:!0}):await this.stop({force:!0}))};handleEventQUICSocket=e=>{e.detail instanceof Jh&&this.dispatchEvent(e.detail.clone())};handleEventQUICSocketStopped=()=>{const e=new Pd;this.removeEventListener(eu.name,this.handleEventQUICSocket),this.dispatchEvent(new Kg({detail:e}))};handleEventQUICConnection=e=>{e.detail instanceof Jh&&!(e.detail instanceof qg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICConnectionSend=async e=>{if(this.socket[Mu]&&"stopping"!==this.socket[Ku])try{await this.socket.send_(e.detail.msg,e.detail.port,e.detail.address)}catch(t){switch(t.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":case"EHOSTUNREACH":this.dispatchEvent(new Mg(`${Mg.name}-${e.detail.id}`,{detail:t}));break;default:this.dispatchEvent(new Kg({detail:new Hd("Failed to send data on the QUICSocket",{data:e.detail,cause:t})}))}}};handleEventQUICConnectionStopped=e=>{const t=e.target;t.removeEventListener(qg.name,this.handleEventQUICConnectionSend),t.removeEventListener(eu.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(t.connectionId)};constructor({crypto:e,config:t,socket:r,resolveHostname:s=bg,reasonToCode:i,codeToReason:n,minIdleTimeout:o,logger:a}){this.logger=a??new zh(this.constructor.name),this.crypto=e,null==r?(this.socket=new rf({resolveHostname:s,logger:this.logger.getChild(rf.name)}),this.isSocketShared=!1):(this.socket=r,this.isSocketShared=!0),this.config={...df,...t},this.reasonToCode=i,this.codeToReason=n,this.minIdleTimeout=o;const{p:c,resolveP:l}=ug();this._closedP=c,this.resolveClosedP=l}get host(){return this.socket.host}get port(){return this.socket.port}get closed(){return this._closed}get closedP(){return this._closedP}async start({host:e="::",port:t=0,reuseAddr:r,ipv6Only:s}={}){let i;if(this.stopAbortController=new AbortController,Bg(this.stopAbortController.signal),this.isSocketShared){if(!this.socket[Mu])throw new Pd;i=vg(this.socket.host,this.socket.port),this.logger.info(`Start ${this.constructor.name} on ${i}`)}else i=vg(e,t),this.logger.info(`Start ${this.constructor.name} on ${i}`),await this.socket.start({host:e,port:t,reuseAddr:r,ipv6Only:s}),i=vg(this.socket.host,this.socket.port);this.socket.setServer(this),this.addEventListener(Kg.name,this.handleEventQUICServerError),this.addEventListener(Vg.name,this.handleEventQUICServerClose,{once:!0}),this.socket.addEventListener(Og.name,this.handleEventQUICSocketStopped,{once:!0}),this.isSocketShared||this.socket.addEventListener(eu.name,this.handleEventQUICSocket),this._closed=!1,this.logger.info(`Started ${this.constructor.name} on ${i}`)}async stop({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){let i;this.socket[Mu]&&(i=vg(this.socket.host,this.socket.port)),this.logger.info(`Stop ${this.constructor.name}${null!=i?` on ${i}`:""}`),this.socket.unsetServer();const n=[];s&&this.stopAbortController?.abort(new Kd),this.stopAbortController=void 0;for(const i of this.socket.connectionMap.serverConnections.values())n.push(i.stop({isApp:e,errorCode:t,reason:r,force:s}));await Promise.all(n),this._closed||this.dispatchEvent(new Vg),await this._closedP;const{p:o,resolveP:a}=ug();this._closedP=o,this.resolveClosedP=a,this.removeEventListener(Kg.name,this.handleEventQUICServerError),this.removeEventListener(Vg.name,this.handleEventQUICServerClose),this.socket.removeEventListener(Og.name,this.handleEventQUICSocketStopped),this.isSocketShared||this.socket.removeEventListener(eu.name,this.handleEventQUICSocket),this.logger.info(`Stopped ${this.constructor.name}${null!=i?` on ${i}`:""}`)}async acceptConnection(e,t,r,s){if(t.ty!==pd.Type.Initial&&t.ty!==pd.Type.ZeroRTT)return;const i=new dd(await this.crypto.ops.sign(this.crypto.key,r),0,pd.MAX_CONN_ID_LEN),n=vg(e.host,e.port);if(!pd.versionIsSupported(t.version)){const r=Buffer.allocUnsafe(pd.MAX_DATAGRAM_SIZE),s=pd.negotiateVersion(t.scid,t.dcid,r);try{await this.socket.send_(r,0,s,e.port,e.host)}catch(e){throw new Ld(`Failed to send version datagram ${n}`,{cause:e})}return}const o=t.token;if(0===o.byteLength){const s=await this.mintToken(r,e.host),o=Buffer.allocUnsafe(pd.MAX_DATAGRAM_SIZE),a=pd.retry(t.scid,t.dcid,i,s,t.version,o);try{await this.socket.send_(o,0,a,e.port,e.host)}catch(e){throw new Ld(`Failed to send stateless retry datagram to ${n}`,{cause:e})}return}const a=await this.validateToken(Buffer.from(o),e.host);if(null==a)return;if(i.byteLength!==t.dcid.byteLength)return;const c=new dd(t.dcid),l=new Bf({type:"server",scid:c,dcid:a,socket:this.socket,remoteInfo:e,config:{...this.config},reasonToCode:this.reasonToCode,codeToReason:this.codeToReason,logger:this.logger.getChild(`${Bf.name} ${i.toString()}`)});this.socket.connectionMap.set(l.connectionId,l),l.addEventListener(qg.name,this.handleEventQUICConnectionSend),l.addEventListener(Fg.name,this.handleEventQUICConnectionStopped,{once:!0}),l.addEventListener(eu.name,this.handleEventQUICConnection);try{await l.start({data:s,remoteInfo:e},{timer:this.minIdleTimeout,signal:this.stopAbortController?.signal})}catch(e){throw l.removeEventListener(qg.name,this.handleEventQUICConnectionSend),l.removeEventListener(Fg.name,this.handleEventQUICConnectionStopped),l.removeEventListener(eu.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(l.connectionId),new Ld("Failed to start accepted connection",{cause:e})}return this.dispatchEvent(new Hg({detail:l})),l}updateCrypto(e){this.crypto={...this.crypto,...e}}updateConfig(e){this.config={...this.config,...e}}async mintToken(e,t){return async function(e,t,r){const s={dcid:e.toString(),host:t},i=JSON.stringify(s),n=Buffer.from(i),o=Buffer.from(await r.ops.sign(r.key,n)),a={msg:n.toString("base64url"),sig:o.toString("base64url")},c=JSON.stringify(a);return Buffer.from(c)}(e,t,this.crypto)}async validateToken(e,t){return async function(e,t,r){let s;try{s=JSON.parse(e.toString())}catch{return}if("object"!=typeof s||null==s)return;if("string"!=typeof s.msg||"string"!=typeof s.sig)return;const i=Buffer.from(s.msg,"base64url"),n=Buffer.from(s.sig,"base64url");if(!await r.ops.verify(r.key,i,n))return;let o;try{o=JSON.parse(i.toString())}catch{return}return"object"==typeof o&&null!=o&&"string"==typeof o.dcid&&"string"==typeof o.host&&o.host===t?dd.fromString(o.dcid):void 0}(e,t,this.crypto)}};_f([hd(new Md)],Rf.prototype,"host",null),_f([hd(new Md)],Rf.prototype,"port",null),_f([hd(new Md)],Rf.prototype,"acceptConnection",null),Rf=_f([ld({eventStart:class extends Lg{},eventStarted:class extends Lg{},eventStop:class extends Lg{},eventStopped:class extends Lg{}})],Rf);var Of=function(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o};let Uf=class{static async createQUICClient({host:e,port:t,serverName:r,localHost:s="::",localPort:i=0,socket:n,crypto:o,config:a={},resolveHostname:c=bg,reuseAddr:l,ipv6Only:h,reasonToCode:u,codeToReason:d,logger:g=new zh(`${this.name}`)},f){let p=vg(e,t);g.info(`Create ${this.name} to ${p}`);const y={...uf,...a},m=new ArrayBuffer(pd.MAX_CONN_ID_LEN);await o.ops.randomBytes(m);const b=new dd(m);let[A,I]=await Ag(e,c);const v=Ig(t);let w,S;if(A=mg(A),null==n){const[e]=await Ag(s,c),t=Ig(i);n=new rf({resolveHostname:c,logger:g.getChild(rf.name)}),w=!1,await n.start({host:e,port:t,reuseAddr:l,ipv6Only:h})}else if(w=!0,!n[Mu])throw new Pd;try{A=wg(n.host,n.type,A,I,Td)}catch(e){throw w||await n.stop({force:!0}),e}try{S=new Bf({type:"client",scid:b,serverName:r??e,socket:n,remoteInfo:{host:A,port:v},config:y,reasonToCode:u,codeToReason:d,logger:g.getChild(`${Bf.name} ${b.toString()}`)})}catch(e){throw w||await n.stop({force:!0}),e}const E=new this({socket:n,connection:S,isSocketShared:w,logger:g});w||n.addEventListener(eu.name,E.handleEventQUICSocket),n.addEventListener(Og.name,E.handleEventQUICSocketStopped,{once:!0}),S.addEventListener(eu.name,E.handleEventQUICConnection),S.addEventListener(Gg.name,E.handleEventQUICConnectionError),S.addEventListener(qg.name,E.handleEventQUICConnectionSend),S.addEventListener(Fg.name,E.handleEventQUICConnectionStopped,{once:!0}),E.addEventListener(Dg.name,E.handleEventQUICClientError),E.addEventListener(Pg.name,E.handleEventQUICClientClose,{once:!0}),n.connectionMap.set(S.connectionId,S);const C=new AbortController,k=()=>{C.abort(f.signal.reason)};f.signal.aborted?C.abort(f.signal.reason):f.signal.addEventListener("abort",k);const x=e=>{switch(e.detail.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":C.abort(new Ud(void 0,{cause:e.detail}))}};E.addEventListener(`${Mg.name}-${S.sendId}`,x);try{await S.start(void 0,{timer:f.timer,signal:C.signal})}catch(e){throw n.connectionMap.delete(S.connectionId),n.removeEventListener(Og.name,E.handleEventQUICSocketStopped),w||(n.removeEventListener(eu.name,E.handleEventQUICSocket),await n.stop({force:!0})),S.removeEventListener(eu.name,E.handleEventQUICConnection),S.removeEventListener(Gg.name,E.handleEventQUICConnectionError),S.removeEventListener(qg.name,E.handleEventQUICConnectionSend),S.removeEventListener(Fg.name,E.handleEventQUICConnectionStopped),E.removeEventListener(Dg.name,E.handleEventQUICClientError),E.removeEventListener(Pg.name,E.handleEventQUICClientClose),e}finally{f.signal.removeEventListener("abort",k),E.removeEventListener(`${Mg.name}-${S.sendId}`,x)}return p=vg(A,t),g.info(`Created ${this.name} to ${p}`),E}isSocketShared;connection;closedP;logger;socket;config;_closed=!1;resolveClosedP;handleEventQUICClientError=e=>{const t=e.detail;if(this.logger.info(Cg(t)),t instanceof Nd||t instanceof Zd)throw t;this.dispatchEvent(new Pg({detail:t}))};handleEventQUICClientClose=async e=>{const t=e.detail;if(this.connection.removeEventListener(Gg.name,this.handleEventQUICConnectionError),await this.connection.stop({isApp:!1,errorCode:vf.InternalError,reason:Buffer.from(t.description),force:!0}),!(t instanceof Od||this.isSocketShared)){this.socket.removeEventListener(Og.name,this.handleEventQUICSocketStopped);try{await this.socket.stop({force:!0})}catch(e){const t=new Nd("Failed to stop QUICSocket",{cause:e});this.dispatchEvent(new Dg({detail:t}))}}this._closed=!0,this.resolveClosedP(),this[Lu]||"destroying"===this[Ku]||await this.destroy({force:!0})};handleEventQUICSocket=e=>{e.detail instanceof Jh&&!(e.detail instanceof qg)&&this.dispatchEvent(e.detail.clone())};handleEventQUICSocketStopped=()=>{const e=new Od;this.removeEventListener(eu.name,this.handleEventQUICSocket),this.dispatchEvent(new Dg({detail:e}))};handleEventQUICConnection=e=>{e.detail instanceof Jh&&this.dispatchEvent(e.detail.clone())};handleEventQUICConnectionError=e=>{const t=e.detail;this.dispatchEvent(new Dg({detail:t}))};handleEventQUICConnectionSend=async e=>{try{if(!this.socket[Mu]||"stopping"===this.socket[Ku])return;await this.socket.send_(e.detail.msg,e.detail.port,e.detail.address)}catch(t){switch(t.code){case"EINVAL":case"EADDRNOTAVAIL":case"ENETUNREACH":case"EHOSTUNREACH":this.dispatchEvent(new Mg(`${Mg.name}-${e.detail.id}`,{detail:t}));break;default:this.dispatchEvent(new Dg({detail:new Nd("Failed to send data on the QUICSocket",{data:e.detail,cause:t})}))}}};handleEventQUICConnectionStopped=e=>{const t=e.target;t.removeEventListener(Gg.name,this.handleEventQUICConnectionError),t.removeEventListener(qg.name,this.handleEventQUICConnectionSend),t.removeEventListener(eu.name,this.handleEventQUICConnection),this.socket.connectionMap.delete(t.connectionId)};constructor({socket:e,isSocketShared:t,connection:r,logger:s}){this.logger=s,this.socket=e,this.isSocketShared=t,this.connection=r;const{p:i,resolveP:n}=ug();this.closedP=i,this.resolveClosedP=n}get host(){return this.connection.remoteHost}get port(){return this.connection.remotePort}get localHost(){return this.socket.host}get localPort(){return this.socket.port}get closed(){return this._closed}async destroy({isApp:e=!0,errorCode:t=0,reason:r=new Uint8Array,force:s=!0}={}){let i;this.connection[Mu]&&(i=vg(this.connection.remoteHost,this.connection.remotePort)),this.logger.info(`Destroy ${this.constructor.name}${null!=i?` to ${i}`:""}`),this._closed||await this.connection.stop({isApp:e,errorCode:t,reason:r,force:s}),await this.closedP,this.removeEventListener(Dg.name,this.handleEventQUICClientError),this.removeEventListener(Pg.name,this.handleEventQUICClientClose),this.socket.removeEventListener(Og.name,this.handleEventQUICSocketStopped),this.isSocketShared||this.socket.removeEventListener(eu.name,this.handleEventQUICSocket),this.logger.info(`Destroyed ${this.constructor.name}${null!=i?` to ${i}`:""}`)}};Of([cd(new Rd)],Uf.prototype,"host",null),Of([cd(new Rd)],Uf.prototype,"port",null),Of([cd(new Rd)],Uf.prototype,"localHost",null),Of([cd(new Rd)],Uf.prototype,"localPort",null),Of([cf(!0,hf,class extends _d{static description="QUIC Client create timeout"}),function(e,t){return function(r,s){t(r,s,e)}}(1,nf)],Uf,"createQUICClient",null),Uf=Of([ad({eventDestroy:class extends Ng{},eventDestroyed:class extends Ng{}})],Uf),t(import.meta.url)("node:crypto");class Tf{static isArrayBuffer(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e)}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){const r=Tf.toUint8Array(e),s=Tf.toUint8Array(t);if(r.length!==s.byteLength)return!1;for(let e=0;e<r.length;e++)if(r[e]!==s[e])return!1;return!0}static concat(...e){let t;t=!Array.isArray(e[0])||e[1]instanceof Function?Array.isArray(e[0])&&e[1]instanceof Function?e[0]:e[e.length-1]instanceof Function?e.slice(0,e.length-1):e:e[0];let r=0;for(const e of t)r+=e.byteLength;const s=new Uint8Array(r);let i=0;for(const e of t){const t=this.toUint8Array(e);s.set(t,i),i+=t.length}return e[e.length-1]instanceof Function?this.toView(s,e[e.length-1]):s.buffer}}const Nf="string",Df=/^[0-9a-f\s]+$/i,Mf=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,Pf=/^[a-zA-Z0-9-_]+$/;class Lf{static fromString(e){const t=unescape(encodeURIComponent(e)),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r.buffer}static toString(e){const t=Tf.toUint8Array(e);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return decodeURIComponent(escape(r))}}class Hf{static toString(e,t=!1){const r=Tf.toArrayBuffer(e),s=new DataView(r);let i="";for(let e=0;e<r.byteLength;e+=2){const r=s.getUint16(e,t);i+=String.fromCharCode(r)}return i}static fromString(e,t=!1){const r=new ArrayBuffer(2*e.length),s=new DataView(r);for(let r=0;r<e.length;r++)s.setUint16(2*r,e.charCodeAt(r),t);return r}}class Kf{static isHex(e){return typeof e===Nf&&Df.test(e)}static isBase64(e){return typeof e===Nf&&Mf.test(e)}static isBase64Url(e){return typeof e===Nf&&Pf.test(e)}static ToString(e,t="utf8"){const r=Tf.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(r);case"binary":return this.ToBinary(r);case"hex":return this.ToHex(r);case"base64":return this.ToBase64(r);case"base64url":return this.ToBase64Url(r);case"utf16le":return Hf.toString(r,!0);case"utf16":case"utf16be":return Hf.toString(r);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Hf.fromString(e,!0);case"utf16":case"utf16be":return Hf.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){const t=Tf.toUint8Array(e);if("undefined"!=typeof btoa){const e=this.ToString(t,"binary");return btoa(e)}return Buffer.from(t).toString("base64")}static FromBase64(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Kf.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return"undefined"!=typeof atob?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){const t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Kf.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=Kf.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return Lf.fromString(e);case"utf16":case"utf16be":return Hf.fromString(e);case"utf16le":case"usc2":return Hf.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=Kf.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return Lf.toString(e);case"utf16":case"utf16be":return Hf.toString(e);case"utf16le":case"usc2":return Hf.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){const t=e.length,r=new Uint8Array(t);for(let s=0;s<t;s++)r[s]=e.charCodeAt(s);return r.buffer}static ToBinary(e){const t=Tf.toUint8Array(e);let r="";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return r}static ToHex(e){const t=Tf.toUint8Array(e);let r="";const s=t.length;for(let e=0;e<s;e++){const s=t[e];s<16&&(r+="0"),r+=s.toString(16)}return r}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!Kf.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);const r=new Uint8Array(t.length/2);for(let e=0;e<t.length;e+=2){const s=t.slice(e,e+2);r[e/2]=parseInt(s,16)}return r.buffer}static ToUtf16String(e,t=!1){return Hf.toString(e,t)}static FromUtf16String(e,t=!1){return Hf.fromString(e,t)}static Base64Padding(e){const t=4-e.length%4;if(t<4)for(let r=0;r<t;r++)e+="=";return e}static formatString(e){return(null==e?void 0:e.replace(/[\n\r\t ]/g,""))||""}}function Vf(...e){const t=e.map(e=>e.byteLength).reduce((e,t)=>e+t),r=new Uint8Array(t);let s=0;return e.map(e=>new Uint8Array(e)).forEach(e=>{for(const t of e)r[s++]=t}),r.buffer}function Qf(e,t){if(!e||!t)return!1;if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let t=0;t<e.byteLength;t++)if(r[t]!==s[t])return!1;return!0}function Ff(e,t){let r=0;if(1===e.length)return e[0];for(let s=e.length-1;s>=0;s--)r+=e[e.length-1-s]*Math.pow(2,t*s);return r}function Gf(e,t,r=-1){const s=r;let i=e,n=0,o=Math.pow(2,t);for(let r=1;r<8;r++){if(e<o){let e;if(s<0)e=new ArrayBuffer(r),n=r;else{if(s<r)return new ArrayBuffer(0);e=new ArrayBuffer(s),n=s}const o=new Uint8Array(e);for(let e=r-1;e>=0;e--){const r=Math.pow(2,e*t);o[n-e-1]=Math.floor(i/r),i-=o[n-e-1]*r}return e}o*=Math.pow(2,t)}return new ArrayBuffer(0)}function $f(...e){let t=0,r=0;for(const r of e)t+=r.length;const s=new ArrayBuffer(t),i=new Uint8Array(s);for(const t of e)i.set(t,r),r+=t.length;return i}function jf(){const e=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){const t=255===e[0]&&128&e[1],r=0===e[0]&&!(128&e[1]);(t||r)&&this.warnings.push("Needlessly long format")}const t=new ArrayBuffer(this.valueHex.byteLength),r=new Uint8Array(t);for(let e=0;e<this.valueHex.byteLength;e++)r[e]=0;r[0]=128&e[0];const s=Ff(r,8),i=new ArrayBuffer(this.valueHex.byteLength),n=new Uint8Array(i);for(let t=0;t<this.valueHex.byteLength;t++)n[t]=e[t];return n[0]&=127,Ff(n,8)-s}function qf(e,t){const r=e.toString(10);if(t<r.length)return"";const s=t-r.length,i=new Array(s);for(let e=0;e<s;e++)i[e]="0";return i.join("").concat(r)}function zf(){if("undefined"==typeof BigInt)throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Wf(e){let t=0,r=0;for(let r=0;r<e.length;r++)t+=e[r].byteLength;const s=new Uint8Array(t);for(let t=0;t<e.length;t++){const i=e[t];s.set(new Uint8Array(i),r),r+=i.byteLength}return s.buffer}function Jf(e,t,r,s){return t instanceof Uint8Array?t.byteLength?r<0?(e.error="Wrong parameter: inputOffset less than zero",!1):s<0?(e.error="Wrong parameter: inputLength less than zero",!1):!(t.byteLength-r-s<0&&(e.error="End of input reached before message was fully decoded (inconsistent offset and length values)",1)):(e.error="Wrong parameter: inputBuffer has zero length",!1):(e.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}Kf.DEFAULT_UTF8_ENCODING="utf8",Math.log(2);class Yf{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Wf(this.items)}}const Zf=[new Uint8Array([1])],Xf="0123456789",ep="name",tp="valueHexView",rp="isHexOnly",sp="idBlock",ip="tagClass",np="tagNumber",op="isConstructed",ap="fromBER",cp="toBER",lp="local",hp="",up=new ArrayBuffer(0),dp=new Uint8Array(0),gp="EndOfContent",fp="OCTET STRING",pp="BIT STRING";function yp(e){var t;return t=class extends e{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(e){this.valueHexView=new Uint8Array(e)}constructor(...e){var t;super(...e);const r=e[0]||{};this.isHexOnly=null!==(t=r.isHexOnly)&&void 0!==t&&t,this.valueHexView=r.valueHex?Tf.toUint8Array(r.valueHex):dp}fromBER(e,t,r){const s=e instanceof ArrayBuffer?new Uint8Array(e):e;if(!Jf(this,s,t,r))return-1;const i=t+r;return this.valueHexView=s.subarray(t,i),this.valueHexView.length?(this.blockLength=r,i):(this.warnings.push("Zero buffer length"),t)}toBER(e=!1){return this.isHexOnly?e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",up)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:Kf.ToHex(this.valueHexView)}}},t.NAME="hexBlock",t}class mp{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=hp,warnings:r=[],valueBeforeDecode:s=dp}={}){this.blockLength=e,this.error=t,this.warnings=r,this.valueBeforeDecodeView=Tf.toUint8Array(s)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:Kf.ToHex(this.valueBeforeDecodeView)}}}mp.NAME="baseBlock";class bp extends mp{fromBER(e,t,r){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}}bp.NAME="valueBlock";class Ap extends(yp(mp)){constructor({idBlock:e={}}={}){var t,r,s,i;super(),e?(this.isHexOnly=null!==(t=e.isHexOnly)&&void 0!==t&&t,this.valueHexView=e.valueHex?Tf.toUint8Array(e.valueHex):dp,this.tagClass=null!==(r=e.tagClass)&&void 0!==r?r:-1,this.tagNumber=null!==(s=e.tagNumber)&&void 0!==s?s:-1,this.isConstructed=null!==(i=e.isConstructed)&&void 0!==i&&i):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",up}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){const r=new Uint8Array(1);if(!e){let e=this.tagNumber;e&=31,t|=e,r[0]=t}return r.buffer}if(!this.isHexOnly){const r=Gf(this.tagNumber,7),s=new Uint8Array(r),i=r.byteLength,n=new Uint8Array(i+1);if(n[0]=31|t,!e){for(let e=0;e<i-1;e++)n[e+1]=128|s[e];n[i]=s[i-1]}return n.buffer}const r=new Uint8Array(this.valueHexView.byteLength+1);if(r[0]=31|t,!e){const e=this.valueHexView;for(let t=0;t<e.length-1;t++)r[t+1]=128|e[t];r[this.valueHexView.byteLength]=e[e.length-1]}return r.buffer}fromBER(e,t,r){const s=Tf.toUint8Array(e);if(!Jf(this,s,t,r))return-1;const i=s.subarray(t,t+r);if(0===i.length)return this.error="Zero buffer length",-1;switch(192&i[0]){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=!(32&~i[0]),this.isHexOnly=!1;const n=31&i[0];if(31!==n)this.tagNumber=n,this.blockLength=1;else{let e=1,t=this.valueHexView=new Uint8Array(255),r=255;for(;128&i[e];){if(t[e-1]=127&i[e],e++,e>=i.length)return this.error="End of input reached before message was fully decoded",-1;if(e===r){r+=255;const e=new Uint8Array(r);for(let r=0;r<t.length;r++)e[r]=t[r];t=this.valueHexView=new Uint8Array(r)}}this.blockLength=e+1,t[e-1]=127&i[e];const s=new Uint8Array(e);for(let r=0;r<e;r++)s[r]=t[r];t=this.valueHexView=new Uint8Array(e),t.set(s),this.blockLength<=9?this.tagNumber=Ff(t,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(1===this.tagClass&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}}Ap.NAME="identificationBlock";class Ip extends mp{constructor({lenBlock:e={}}={}){var t,r,s;super(),this.isIndefiniteForm=null!==(t=e.isIndefiniteForm)&&void 0!==t&&t,this.longFormUsed=null!==(r=e.longFormUsed)&&void 0!==r&&r,this.length=null!==(s=e.length)&&void 0!==s?s:0}fromBER(e,t,r){const s=Tf.toUint8Array(e);if(!Jf(this,s,t,r))return-1;const i=s.subarray(t,t+r);if(0===i.length)return this.error="Zero buffer length",-1;if(255===i[0])return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=128===i[0],this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(128&i[0]),!1===this.longFormUsed)return this.length=i[0],this.blockLength=1,t+this.blockLength;const n=127&i[0];if(n>8)return this.error="Too big integer",-1;if(n+1>i.length)return this.error="End of input reached before message was fully decoded",-1;const o=t+1,a=s.subarray(o,o+n);return 0===a[n-1]&&this.warnings.push("Needlessly long encoded length"),this.length=Ff(a,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=n+1,t+this.blockLength}toBER(e=!1){let t,r;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=128),t;if(this.longFormUsed){const s=Gf(this.length,8);if(s.byteLength>127)return this.error="Too big length",up;if(t=new ArrayBuffer(s.byteLength+1),e)return t;const i=new Uint8Array(s);r=new Uint8Array(t),r[0]=128|s.byteLength;for(let e=0;e<s.byteLength;e++)r[e+1]=i[e];return t}return t=new ArrayBuffer(1),!1===e&&(r=new Uint8Array(t),r[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}}Ip.NAME="lengthBlock";const vp={};class wp extends mp{constructor({name:e=hp,optional:t=!1,primitiveSchema:r,...s}={},i){super(s),this.name=e,this.optional=t,r&&(this.primitiveSchema=r),this.idBlock=new Ap(s),this.lenBlock=new Ip(s),this.valueBlock=i?new i(s):new bp(s)}fromBER(e,t,r){const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}toBER(e,t){const r=t||new Yf;t||Sp(this);const s=this.idBlock.toBER(e);if(r.write(s),this.lenBlock.isIndefiniteForm)r.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,r),r.write(new ArrayBuffer(2));else{const t=this.valueBlock.toBER(e);this.lenBlock.length=t.byteLength;const s=this.lenBlock.toBER(e);r.write(s),r.write(t)}return t?up:r.final()}toJSON(){const e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return"ascii"===e?this.onAsciiEncoding():Kf.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${Kf.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){return this===e||e instanceof this.constructor&&function(e,t){if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let e=0;e<r.length;e++)if(r[e]!==s[e])return!1;return!0}(this.toBER(),e.toBER())}}function Sp(e){var t;if(e instanceof vp.Constructed)for(const t of e.valueBlock.value)Sp(t)&&(e.lenBlock.isIndefiniteForm=!0);return!!(null===(t=e.lenBlock)||void 0===t?void 0:t.isIndefiniteForm)}wp.NAME="BaseBlock";class Ep extends wp{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=hp,...t}={},r){super(t,r),e&&this.fromString(e)}fromBER(e,t,r){const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}}Ep.NAME="BaseStringBlock";class Cp extends(yp(bp)){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}}var kp,xp,Bp,_p,Rp,Op,Up,Tp,Np,Dp,Mp,Pp,Lp,Hp,Kp,Vp,Qp,Fp,Gp,$p,jp,qp,zp,Wp,Jp,Yp,Zp,Xp,ey,ty,ry,sy,iy,ny,oy,ay;Cp.NAME="PrimitiveValueBlock";class cy extends wp{constructor(e={}){super(e,Cp),this.idBlock.isConstructed=!1}}function ly(e,t=0,r=e.length){const s=t;let i=new wp({},bp);const n=new mp;if(!Jf(n,e,t,r))return i.error=n.error,{offset:-1,result:i};if(!e.subarray(t,t+r).length)return i.error="Zero buffer length",{offset:-1,result:i};let o=i.idBlock.fromBER(e,t,r);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),-1===o)return i.error=i.idBlock.error,{offset:-1,result:i};if(t=o,r-=i.idBlock.blockLength,o=i.lenBlock.fromBER(e,t,r),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),-1===o)return i.error=i.lenBlock.error,{offset:-1,result:i};if(t=o,r-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let a=wp;if(1===i.idBlock.tagClass){if(i.idBlock.tagNumber>=37&&!1===i.idBlock.isHexOnly)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};a=vp.EndOfContent;break;case 1:a=vp.Boolean;break;case 2:a=vp.Integer;break;case 3:a=vp.BitString;break;case 4:a=vp.OctetString;break;case 5:a=vp.Null;break;case 6:a=vp.ObjectIdentifier;break;case 10:a=vp.Enumerated;break;case 12:a=vp.Utf8String;break;case 13:a=vp.RelativeObjectIdentifier;break;case 14:a=vp.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:a=vp.Sequence;break;case 17:a=vp.Set;break;case 18:a=vp.NumericString;break;case 19:a=vp.PrintableString;break;case 20:a=vp.TeletexString;break;case 21:a=vp.VideotexString;break;case 22:a=vp.IA5String;break;case 23:a=vp.UTCTime;break;case 24:a=vp.GeneralizedTime;break;case 25:a=vp.GraphicString;break;case 26:a=vp.VisibleString;break;case 27:a=vp.GeneralString;break;case 28:a=vp.UniversalString;break;case 29:a=vp.CharacterString;break;case 30:a=vp.BmpString;break;case 31:a=vp.DATE;break;case 32:a=vp.TimeOfDay;break;case 33:a=vp.DateTime;break;case 34:a=vp.Duration;break;default:{const e=i.idBlock.isConstructed?new vp.Constructed:new vp.Primitive;e.idBlock=i.idBlock,e.lenBlock=i.lenBlock,e.warnings=i.warnings,i=e}}}else a=i.idBlock.isConstructed?vp.Constructed:vp.Primitive;return i=function(e,t){if(e instanceof t)return e;const r=new t;return r.idBlock=e.idBlock,r.lenBlock=e.lenBlock,r.warnings=e.warnings,r.valueBeforeDecodeView=e.valueBeforeDecodeView,r}(i,a),o=i.fromBER(e,t,i.lenBlock.isIndefiniteForm?r:i.lenBlock.length),i.valueBeforeDecodeView=e.subarray(s,s+i.blockLength),{offset:o,result:i}}function hy(e){if(!e.byteLength){const e=new wp({},bp);return e.error="Input buffer has zero length",{offset:-1,result:e}}return ly(Tf.toUint8Array(e).slice(),0,e.byteLength)}function uy(e,t){return e?1:t}kp=cy,vp.Primitive=kp,cy.NAME="PRIMITIVE";class dy extends bp{constructor({value:e=[],isIndefiniteForm:t=!1,...r}={}){super(r),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,r){const s=Tf.toUint8Array(e);if(!Jf(this,s,t,r))return-1;if(this.valueBeforeDecodeView=s.subarray(t,t+r),0===this.valueBeforeDecodeView.length)return this.warnings.push("Zero buffer length"),t;let i=t;for(;uy(this.isIndefiniteForm,r)>0;){const e=ly(s,i,r);if(-1===e.offset)return this.error=e.result.error,this.warnings.concat(e.result.warnings),-1;if(i=e.offset,this.blockLength+=e.result.blockLength,r-=e.result.blockLength,this.value.push(e.result),this.isIndefiniteForm&&e.result.constructor.NAME===gp)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===gp?this.value.pop():this.warnings.push("No EndOfContent block encoded")),i}toBER(e,t){const r=t||new Yf;for(let t=0;t<this.value.length;t++)this.value[t].toBER(e,r);return t?up:r.final()}toJSON(){const e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(const t of this.value)e.value.push(t.toJSON());return e}}dy.NAME="ConstructedValueBlock";class gy extends wp{constructor(e={}){super(e,dy),this.idBlock.isConstructed=!0}fromBER(e,t,r){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;const s=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?r:this.lenBlock.length);return-1===s?(this.error=this.valueBlock.error,s):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),s)}onAsciiEncoding(){const e=[];for(const t of this.valueBlock.value)e.push(t.toString("ascii").split("\n").map(e=>` ${e}`).join("\n"));const t=3===this.idBlock.tagClass?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :\n${e.join("\n")}`:`${t} :`}}xp=gy,vp.Constructed=xp,gy.NAME="CONSTRUCTED";class fy extends bp{fromBER(e,t,r){return t}toBER(e){return up}}fy.override="EndOfContentValueBlock";class py extends wp{constructor(e={}){super(e,fy),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}}Bp=py,vp.EndOfContent=Bp,py.NAME=gp;class yy extends wp{constructor(e={}){super(e,bp),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,r){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=r,t+r>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+r}toBER(e,t){const r=new ArrayBuffer(2);if(!e){const e=new Uint8Array(r);e[0]=5,e[1]=0}return t&&t.write(r),r}onAsciiEncoding(){return`${this.constructor.NAME}`}}_p=yy,vp.Null=_p,yy.NAME="NULL";class my extends(yp(bp)){get value(){for(const e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=Tf.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}fromBER(e,t,r){const s=Tf.toUint8Array(e);return Jf(this,s,t,r)?(this.valueHexView=s.subarray(t,t+r),r>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,jf.call(this),this.blockLength=r,t+r):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}}my.NAME="BooleanValueBlock";class by extends wp{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor(e={}){super(e,my),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}}Rp=by,vp.Boolean=Rp,by.NAME="BOOLEAN";class Ay extends(yp(dy)){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,r){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=dy.prototype.fromBER.call(this,e,t,r),-1===s)return s;for(let e=0;e<this.value.length;e++){const t=this.value[e].constructor.NAME;if(t===gp){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(t!==fp)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,r),this.blockLength=r;return s}toBER(e,t){return this.isConstructed?dy.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}}Ay.NAME="OctetStringValueBlock";class Iy extends wp{constructor({idBlock:e={},lenBlock:t={},...r}={}){var s,i;null!==(s=r.isConstructed)&&void 0!==s||(r.isConstructed=!!(null===(i=r.value)||void 0===i?void 0:i.length)),super({idBlock:{isConstructed:r.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!r.isIndefiniteForm},...r},Ay),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,r){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,0===r)return 0===this.idBlock.error.length&&(this.blockLength+=this.idBlock.blockLength),0===this.lenBlock.error.length&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){const s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+r);try{if(s.byteLength){const e=ly(s,0,s.byteLength);-1!==e.offset&&e.offset===r&&(this.valueBlock.value=[e.result])}}catch{}}return super.fromBER(e,t,r)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?gy.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${Kf.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;const e=[];for(const t of this.valueBlock.value)t instanceof Op&&e.push(t.valueBlock.valueHexView);return Tf.concat(e)}}Op=Iy,vp.OctetString=Op,Iy.NAME=fp;class vy extends(yp(dy)){constructor({unusedBits:e=0,isConstructed:t=!1,...r}={}){super(r),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,r){if(!r)return t;let s=-1;if(this.isConstructed){if(s=dy.prototype.fromBER.call(this,e,t,r),-1===s)return s;for(const e of this.value){const t=e.constructor.NAME;if(t===gp){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(t!==pp)return this.error="BIT STRING may consists of BIT STRINGs only",-1;const r=e.valueBlock;if(this.unusedBits>0&&r.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=r.unusedBits}return s}const i=Tf.toUint8Array(e);if(!Jf(this,i,t,r))return-1;const n=i.subarray(t,t+r);if(this.unusedBits=n[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){const e=n.subarray(1);try{if(e.byteLength){const t=ly(e,0,e.byteLength);-1!==t.offset&&t.offset===r-1&&(this.value=[t.result])}}catch{}}return this.valueHexView=n.subarray(1),this.blockLength=n.length,t+r}toBER(e,t){if(this.isConstructed)return dy.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return up;const r=new Uint8Array(this.valueHexView.length+1);return r[0]=this.unusedBits,r.set(this.valueHexView,1),r.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}}vy.NAME="BitStringValueBlock";class wy extends wp{constructor({idBlock:e={},lenBlock:t={},...r}={}){var s,i;null!==(s=r.isConstructed)&&void 0!==s||(r.isConstructed=!!(null===(i=r.value)||void 0===i?void 0:i.length)),super({idBlock:{isConstructed:r.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!r.isIndefiniteForm},...r},vy),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,r){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,r)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return gy.prototype.onAsciiEncoding.call(this);{const e=[],t=this.valueBlock.valueHexView;for(const r of t)e.push(r.toString(2).padStart(8,"0"));const r=e.join("");return`${this.constructor.NAME} : ${r.substring(0,r.length-this.valueBlock.unusedBits)}`}}}function Sy(e,t){const r=new Uint8Array([0]),s=new Uint8Array(e),i=new Uint8Array(t);let n=s.slice(0);const o=n.length-1,a=i.slice(0),c=a.length-1;let l=0,h=0;for(let e=c<o?o:c;e>=0;e--,h++)l=1==h<a.length?n[o-h]+a[c-h]+r[0]:n[o-h]+r[0],r[0]=l/10,1==h>=n.length?n=$f(new Uint8Array([l%10]),n):n[o-h]=l%10;return r[0]>0&&(n=$f(r,n)),n}function Ey(e){if(e>=Zf.length)for(let t=Zf.length;t<=e;t++){const e=new Uint8Array([0]);let r=Zf[t-1].slice(0);for(let t=r.length-1;t>=0;t--){const s=new Uint8Array([(r[t]<<1)+e[0]]);e[0]=s[0]/10,r[t]=s[0]%10}e[0]>0&&(r=$f(e,r)),Zf.push(r)}return Zf[e]}function Cy(e,t){let r=0;const s=new Uint8Array(e),i=new Uint8Array(t),n=s.slice(0),o=n.length-1,a=i.slice(0),c=a.length-1;let l,h=0;for(let e=c;e>=0;e--,h++)l=n[o-h]-a[c-h]-r,1==l<0?(r=1,n[o-h]=l+10):(r=0,n[o-h]=l);if(r>0)for(let e=o-c+1;e>=0;e--,h++){if(l=n[o-h]-r,!(l<0)){r=0,n[o-h]=l;break}r=1,n[o-h]=l+10}return n.slice()}Up=wy,vp.BitString=Up,wy.NAME=pp;class ky extends(yp(bp)){setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=jf.call(this)))}constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),void 0!==e&&(this.valueDec=e)}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(function(e){const t=e<0?-1*e:e;let r=128;for(let s=1;s<8;s++){if(t<=r){if(e<0){const e=Gf(r-t,8,s);return new Uint8Array(e)[0]|=128,e}let i=Gf(t,8,s),n=new Uint8Array(i);if(128&n[0]){const e=i.slice(0),t=new Uint8Array(e);i=new ArrayBuffer(i.byteLength+1),n=new Uint8Array(i);for(let r=0;r<e.byteLength;r++)n[r+1]=t[r];n[0]=0}return i}r*=Math.pow(2,8)}return new ArrayBuffer(0)}(e))}get valueDec(){return this._valueDec}fromDER(e,t,r,s=0){const i=this.fromBER(e,t,r);if(-1===i)return i;const n=this.valueHexView;return 0===n[0]&&128&n[1]?this.valueHexView=n.subarray(1):0!==s&&n.length<s&&(s-n.length>1&&(s=n.length+1),this.valueHexView=n.subarray(s-n.length)),i}toDER(e=!1){const t=this.valueHexView;switch(!0){case!!(128&t[0]):{const e=new Uint8Array(this.valueHexView.length+1);e[0]=0,e.set(t,1),this.valueHexView=e}break;case 0===t[0]&&!(128&t[1]):this.valueHexView=this.valueHexView.subarray(1)}return this.toBER(e)}fromBER(e,t,r){const s=super.fromBER(e,t,r);return-1===s||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){const e=8*this.valueHexView.length-1;let t,r=new Uint8Array(8*this.valueHexView.length/3),s=0;const i=this.valueHexView;let n="",o=!1;for(let o=i.byteLength-1;o>=0;o--){t=i[o];for(let i=0;i<8;i++)1&~t||(s===e?(r=Cy(Ey(s),r),n="-"):r=Sy(r,Ey(s))),s++,t>>=1}for(let e=0;e<r.length;e++)r[e]&&(o=!0),o&&(n+=Xf.charAt(r[e]));return!1===o&&(n+=Xf.charAt(0)),n}}Tp=ky,ky.NAME="IntegerValueBlock",Object.defineProperty(Tp.prototype,"valueHex",{set:function(e){this.valueHexView=new Uint8Array(e),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});class xy extends wp{constructor(e={}){super(e,ky),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return zf(),BigInt(this.valueBlock.toString())}static fromBigInt(e){zf();const t=BigInt(e),r=new Yf,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(Kf.FromHex(s));if(t<0){const e=new Uint8Array(i.length+(128&i[0]?1:0));e[0]|=128;const s=BigInt(`0x${Kf.ToHex(e)}`)+t,n=Tf.toUint8Array(Kf.FromHex(s.toString(16)));n[0]|=128,r.write(n)}else 128&i[0]&&r.write(new Uint8Array([0])),r.write(i);return new Np({valueHex:r.final()})}convertToDER(){const e=new Np({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new Np({valueHex:0===this.valueBlock.valueHexView[0]?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}}Np=xy,vp.Integer=Np,xy.NAME="INTEGER";class By extends xy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}}Dp=By,vp.Enumerated=Dp,By.NAME="ENUMERATED";class _y extends(yp(bp)){constructor({valueDec:e=-1,isFirstSid:t=!1,...r}={}){super(r),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,r){if(!r)return t;const s=Tf.toUint8Array(e);if(!Jf(this,s,t,r))return-1;const i=s.subarray(t,t+r);this.valueHexView=new Uint8Array(r);for(let e=0;e<r&&(this.valueHexView[e]=127&i[e],this.blockLength++,128&i[e]);e++);const n=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength;e++)n[e]=this.valueHexView[e];return this.valueHexView=n,128&i[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(0===this.valueHexView[0]&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Ff(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){zf();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;const r=new Uint8Array(t.length/7);for(let e=0;e<r.length;e++)r[e]=parseInt(t.slice(7*e,7*e+7),2)+(e+1<r.length?128:0);this.fromBER(r.buffer,0,r.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);const t=this.valueHexView,r=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength-1;e++)r[e]=128|t[e];return r[this.blockLength-1]=t[this.blockLength-1],r.buffer}const t=Gf(this.valueDec,7);if(0===t.byteLength)return this.error="Error during encoding SID value",up;const r=new Uint8Array(t.byteLength);if(!e){const e=new Uint8Array(t),s=t.byteLength-1;for(let t=0;t<s;t++)r[t]=128|e[t];r[s]=e[s]}return r}toString(){let e="";if(this.isHexOnly)e=Kf.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}}_y.NAME="sidBlock";class Ry extends bp{constructor({value:e=hp,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,r){let s=t;for(;r>0;){const t=new _y;if(s=t.fromBER(e,s,r),-1===s)return this.blockLength=0,this.error=t.error,s;0===this.value.length&&(t.isFirstSid=!0),this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return s}toBER(e){const t=[];for(let r=0;r<this.value.length;r++){const s=this.value[r].toBER(e);if(0===s.byteLength)return this.error=this.value[r].error,up;t.push(s)}return Wf(t)}fromString(e){this.value=[];let t=0,r=0,s="",i=!1;do{if(r=e.indexOf(".",t),s=-1===r?e.substring(t):e.substring(t,r),t=r+1,i){const e=this.value[0];let t=0;switch(e.valueDec){case 0:break;case 1:t=40;break;case 2:t=80;break;default:return void(this.value=[])}const r=parseInt(s,10);if(isNaN(r))return;e.valueDec=r+t,i=!1}else{const e=new _y;if(s>Number.MAX_SAFE_INTEGER){zf();const t=BigInt(s);e.valueBigInt=t}else if(e.valueDec=parseInt(s,10),isNaN(e.valueDec))return;this.value.length||(e.isFirstSid=!0,i=!0),this.value.push(e)}}while(-1!==r)}toString(){let e="",t=!1;for(let r=0;r<this.value.length;r++){t=this.value[r].isHexOnly;let s=this.value[r].toString();0!==r&&(e=`${e}.`),t?(s=`{${s}}`,this.value[r].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){const e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}}Ry.NAME="ObjectIdentifierValueBlock";class Oy extends wp{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,Ry),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}}Mp=Oy,vp.ObjectIdentifier=Mp,Oy.NAME="OBJECT IDENTIFIER";class Uy extends(yp(mp)){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,r){if(0===r)return t;const s=Tf.toUint8Array(e);if(!Jf(this,s,t,r))return-1;const i=s.subarray(t,t+r);this.valueHexView=new Uint8Array(r);for(let e=0;e<r&&(this.valueHexView[e]=127&i[e],this.blockLength++,128&i[e]);e++);const n=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength;e++)n[e]=this.valueHexView[e];return this.valueHexView=n,128&i[this.blockLength-1]?(this.error="End of input reached before message was fully decoded",-1):(0===this.valueHexView[0]&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=Ff(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);const t=this.valueHexView,r=new Uint8Array(this.blockLength);for(let e=0;e<this.blockLength-1;e++)r[e]=128|t[e];return r[this.blockLength-1]=t[this.blockLength-1],r.buffer}const t=Gf(this.valueDec,7);if(0===t.byteLength)return this.error="Error during encoding SID value",up;const r=new Uint8Array(t.byteLength);if(!e){const e=new Uint8Array(t),s=t.byteLength-1;for(let t=0;t<s;t++)r[t]=128|e[t];r[s]=e[s]}return r.buffer}toString(){let e="";return e=this.isHexOnly?Kf.ToHex(this.valueHexView):this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}}Uy.NAME="relativeSidBlock";class Ty extends bp{constructor({value:e=hp,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,r){let s=t;for(;r>0;){const t=new Uy;if(s=t.fromBER(e,s,r),-1===s)return this.blockLength=0,this.error=t.error,s;this.blockLength+=t.blockLength,r-=t.blockLength,this.value.push(t)}return s}toBER(e,t){const r=[];for(let t=0;t<this.value.length;t++){const s=this.value[t].toBER(e);if(0===s.byteLength)return this.error=this.value[t].error,up;r.push(s)}return Wf(r)}fromString(e){this.value=[];let t=0,r=0,s="";do{r=e.indexOf(".",t),s=-1===r?e.substring(t):e.substring(t,r),t=r+1;const i=new Uy;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(-1!==r);return!0}toString(){let e="",t=!1;for(let r=0;r<this.value.length;r++){t=this.value[r].isHexOnly;let s=this.value[r].toString();0!==r&&(e=`${e}.`),t?(s=`{${s}}`,e+=s):e+=s}return e}toJSON(){const e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}}Ty.NAME="RelativeObjectIdentifierValueBlock";class Ny extends wp{getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}constructor(e={}){super(e,Ty),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}}Pp=Ny,vp.RelativeObjectIdentifier=Pp,Ny.NAME="RelativeObjectIdentifier";class Dy extends gy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}}Lp=Dy,vp.Sequence=Lp,Dy.NAME="SEQUENCE";class My extends gy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}}Hp=My,vp.Set=Hp,My.NAME="SET";class Py extends(yp(bp)){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=hp}toJSON(){return{...super.toJSON(),value:this.value}}}Py.NAME="StringValueBlock";class Ly extends Py{}Ly.NAME="SimpleStringValueBlock";class Hy extends Ep{constructor({...e}={}){super(e,Ly)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,Tf.toUint8Array(e))}fromString(e){const t=e.length,r=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)r[s]=e.charCodeAt(s);this.valueBlock.value=e}}Hy.NAME="SIMPLE STRING";class Ky extends Hy{fromBuffer(e){this.valueBlock.valueHexView=Tf.toUint8Array(e);try{this.valueBlock.value=Kf.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=Kf.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(Kf.FromUtf8String(e)),this.valueBlock.value=e}}Ky.NAME="Utf8StringValueBlock";class Vy extends Ky{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}}Kp=Vy,vp.Utf8String=Kp,Vy.NAME="UTF8String";class Qy extends Hy{fromBuffer(e){this.valueBlock.value=Kf.ToUtf16String(e),this.valueBlock.valueHexView=Tf.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(Kf.FromUtf16String(e))}}Qy.NAME="BmpStringValueBlock";class Fy extends Qy{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}}Vp=Fy,vp.BmpString=Vp,Fy.NAME="BMPString";class Gy extends Hy{fromBuffer(e){const t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),r=new Uint8Array(t);for(let e=0;e<r.length;e+=4)r[e]=r[e+3],r[e+1]=r[e+2],r[e+2]=0,r[e+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){const t=e.length,r=this.valueBlock.valueHexView=new Uint8Array(4*t);for(let s=0;s<t;s++){const t=Gf(e.charCodeAt(s),8),i=new Uint8Array(t);if(i.length>4)continue;const n=4-i.length;for(let e=i.length-1;e>=0;e--)r[4*s+e+n]=i[e]}this.valueBlock.value=e}}Gy.NAME="UniversalStringValueBlock";class $y extends Gy{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}}Qp=$y,vp.UniversalString=Qp,$y.NAME="UniversalString";class jy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}}Fp=jy,vp.NumericString=Fp,jy.NAME="NumericString";class qy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}}Gp=qy,vp.PrintableString=Gp,qy.NAME="PrintableString";class zy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}}$p=zy,vp.TeletexString=$p,zy.NAME="TeletexString";class Wy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}}jp=Wy,vp.VideotexString=jp,Wy.NAME="VideotexString";class Jy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}}qp=Jy,vp.IA5String=qp,Jy.NAME="IA5String";class Yy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}}zp=Yy,vp.GraphicString=zp,Yy.NAME="GraphicString";class Zy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}}Wp=Zy,vp.VisibleString=Wp,Zy.NAME="VisibleString";class Xy extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}}Jp=Xy,vp.GeneralString=Jp,Xy.NAME="GeneralString";class em extends Hy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}}Yp=em,vp.CharacterString=Yp,em.NAME="CharacterString";class tm extends Zy{constructor({value:e,valueDate:t,...r}={}){if(super(r),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let t=0;t<e.length;t++)this.valueBlock.valueHexView[t]=e.charCodeAt(t)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,Tf.toUint8Array(e)))}toBuffer(){const e=this.toString(),t=new ArrayBuffer(e.length),r=new Uint8Array(t);for(let t=0;t<e.length;t++)r[t]=e.charCodeAt(t);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){const t=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/gi.exec(e);if(null===t)return void(this.error="Wrong input string for conversion");const r=parseInt(t[1],10);this.year=r>=50?1900+r:2e3+r,this.month=parseInt(t[2],10),this.day=parseInt(t[3],10),this.hour=parseInt(t[4],10),this.minute=parseInt(t[5],10),this.second=parseInt(t[6],10)}toString(e="iso"){if("iso"===e){const e=new Array(7);return e[0]=qf(this.year<2e3?this.year-1900:this.year-2e3,2),e[1]=qf(this.month,2),e[2]=qf(this.day,2),e[3]=qf(this.hour,2),e[4]=qf(this.minute,2),e[5]=qf(this.second,2),e[6]="Z",e.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}}Zp=tm,vp.UTCTime=Zp,tm.NAME="UTCTime";class rm extends tm{constructor(e={}){var t;super(e),null!==(t=this.millisecond)&&void 0!==t||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){const e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond);return new Date(e)}fromString(e){let t,r=!1,s="",i="",n=0,o=0,a=0;if("Z"===e[e.length-1])s=e.substring(0,e.length-1),r=!0;else{const t=new Number(e[e.length-1]);if(isNaN(t.valueOf()))throw new Error("Wrong input string for conversion");s=e}if(r){if(-1!==s.indexOf("+"))throw new Error("Wrong input string for conversion");if(-1!==s.indexOf("-"))throw new Error("Wrong input string for conversion")}else{let e=1,t=s.indexOf("+"),r="";if(-1===t&&(t=s.indexOf("-"),e=-1),-1!==t){if(r=s.substring(t+1),s=s.substring(0,t),2!==r.length&&4!==r.length)throw new Error("Wrong input string for conversion");let i=parseInt(r.substring(0,2),10);if(isNaN(i.valueOf()))throw new Error("Wrong input string for conversion");if(o=e*i,4===r.length){if(i=parseInt(r.substring(2,4),10),isNaN(i.valueOf()))throw new Error("Wrong input string for conversion");a=e*i}}}let c=s.indexOf(".");if(-1===c&&(c=s.indexOf(",")),-1!==c){const e=new Number(`0${s.substring(c)}`);if(isNaN(e.valueOf()))throw new Error("Wrong input string for conversion");n=e.valueOf(),i=s.substring(0,c)}else i=s;switch(!0){case 8===i.length:if(t=/(\d{4})(\d{2})(\d{2})/gi,-1!==c)throw new Error("Wrong input string for conversion");break;case 10===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})/gi,-1!==c){let e=60*n;this.minute=Math.floor(e),e=60*(e-this.minute),this.second=Math.floor(e),e=1e3*(e-this.second),this.millisecond=Math.floor(e)}break;case 12===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/gi,-1!==c){let e=60*n;this.second=Math.floor(e),e=1e3*(e-this.second),this.millisecond=Math.floor(e)}break;case 14===i.length:if(t=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/gi,-1!==c){const e=1e3*n;this.millisecond=Math.floor(e)}break;default:throw new Error("Wrong input string for conversion")}const l=t.exec(i);if(null===l)throw new Error("Wrong input string for conversion");for(let e=1;e<l.length;e++)switch(e){case 1:this.year=parseInt(l[e],10);break;case 2:this.month=parseInt(l[e],10);break;case 3:this.day=parseInt(l[e],10);break;case 4:this.hour=parseInt(l[e],10)+o;break;case 5:this.minute=parseInt(l[e],10)+a;break;case 6:this.second=parseInt(l[e],10);break;default:throw new Error("Wrong input string for conversion")}if(!1===r){const e=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth(),this.day=e.getUTCDay(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds(),this.millisecond=e.getUTCMilliseconds()}}toString(e="iso"){if("iso"===e){const e=[];return e.push(qf(this.year,4)),e.push(qf(this.month,2)),e.push(qf(this.day,2)),e.push(qf(this.hour,2)),e.push(qf(this.minute,2)),e.push(qf(this.second,2)),0!==this.millisecond&&(e.push("."),e.push(qf(this.millisecond,3))),e.push("Z"),e.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}}Xp=rm,vp.GeneralizedTime=Xp,rm.NAME="GeneralizedTime";class sm extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}}ey=sm,vp.DATE=ey,sm.NAME="DATE";class im extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}}ty=im,vp.TimeOfDay=ty,im.NAME="TimeOfDay";class nm extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}}ry=nm,vp.DateTime=ry,nm.NAME="DateTime";class om extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}}sy=om,vp.Duration=sy,om.NAME="Duration";class am extends Vy{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}}iy=am,vp.TIME=iy,am.NAME="TIME";class cm{constructor({name:e=hp,optional:t=!1}={}){this.name=e,this.optional=t}}class lm extends cm{constructor({value:e=[],...t}={}){super(t),this.value=e}}class hm extends cm{constructor({value:e=new cm,local:t=!1,...r}={}){super(r),this.value=e,this.local=t}}class um{get data(){return this.dataView.slice().buffer}set data(e){this.dataView=Tf.toUint8Array(e)}constructor({data:e=dp}={}){this.dataView=Tf.toUint8Array(e)}fromBER(e,t,r){const s=t+r;return this.dataView=Tf.toUint8Array(e).subarray(t,s),s}toBER(e){return this.dataView.slice().buffer}}function dm(e,t,r){if(r instanceof lm){for(const s of r.value)if(dm(e,t,s).verified)return{verified:!0,result:e};{const e={verified:!1,result:{error:"Wrong values for Choice type"}};return r.hasOwnProperty(ep)&&(e.name=r.name),e}}if(r instanceof cm)return r.hasOwnProperty(ep)&&(e[r.name]=t),{verified:!0,result:e};if(e instanceof Object==0)return{verified:!1,result:{error:"Wrong root object"}};if(t instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 data"}};if(r instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(sp in r==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(ap in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(cp in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};const s=r.idBlock.toBER(!1);if(0===s.byteLength)return{verified:!1,result:{error:"Error encoding idBlock for ASN.1 schema"}};if(-1===r.idBlock.fromBER(s,0,s.byteLength))return{verified:!1,result:{error:"Error decoding idBlock for ASN.1 schema"}};if(!1===r.idBlock.hasOwnProperty(ip))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.tagClass!==t.idBlock.tagClass)return{verified:!1,result:e};if(!1===r.idBlock.hasOwnProperty(np))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.tagNumber!==t.idBlock.tagNumber)return{verified:!1,result:e};if(!1===r.idBlock.hasOwnProperty(op))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.isConstructed!==t.idBlock.isConstructed)return{verified:!1,result:e};if(!(rp in r.idBlock))return{verified:!1,result:{error:"Wrong ASN.1 schema"}};if(r.idBlock.isHexOnly!==t.idBlock.isHexOnly)return{verified:!1,result:e};if(r.idBlock.isHexOnly){if(tp in r.idBlock==0)return{verified:!1,result:{error:"Wrong ASN.1 schema"}};const s=r.idBlock.valueHexView,i=t.idBlock.valueHexView;if(s.length!==i.length)return{verified:!1,result:e};for(let t=0;t<s.length;t++)if(s[t]!==i[1])return{verified:!1,result:e}}if(r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&(e[r.name]=t)),r instanceof vp.Constructed){let s=0,i={verified:!1,result:{error:"Unknown error"}},n=r.valueBlock.value.length;if(n>0&&r.valueBlock.value[0]instanceof hm&&(n=t.valueBlock.value.length),0===n)return{verified:!0,result:e};if(0===t.valueBlock.value.length&&0!==r.valueBlock.value.length){let t=!0;for(let e=0;e<r.valueBlock.value.length;e++)t=t&&(r.valueBlock.value[e].optional||!1);return t?{verified:!0,result:e}:(r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&delete e[r.name]),e.error="Inconsistent object length",{verified:!1,result:e})}for(let o=0;o<n;o++)if(o-s>=t.valueBlock.value.length){if(!1===r.valueBlock.value[o].optional){const t={verified:!1,result:e};return e.error="Inconsistent length between ASN.1 data and schema",r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&(delete e[r.name],t.name=r.name)),t}}else if(r.valueBlock.value[0]instanceof hm){if(i=dm(e,t.valueBlock.value[o],r.valueBlock.value[0].value),!1===i.verified){if(!r.valueBlock.value[0].optional)return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&delete e[r.name]),i;s++}if(ep in r.valueBlock.value[0]&&r.valueBlock.value[0].name.length>0){let s={};s=lp in r.valueBlock.value[0]&&r.valueBlock.value[0].local?t:e,void 0===s[r.valueBlock.value[0].name]&&(s[r.valueBlock.value[0].name]=[]),s[r.valueBlock.value[0].name].push(t.valueBlock.value[o])}}else if(i=dm(e,t.valueBlock.value[o-s],r.valueBlock.value[o]),!1===i.verified){if(!r.valueBlock.value[o].optional)return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&delete e[r.name]),i;s++}if(!1===i.verified){const t={verified:!1,result:e};return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&(delete e[r.name],t.name=r.name)),t}return{verified:!0,result:e}}if(r.primitiveSchema&&tp in t.valueBlock){const s=ly(t.valueBlock.valueHexView);if(-1===s.offset){const t={verified:!1,result:s.result};return r.name&&(r.name=r.name.replace(/^\s+|\s+$/g,hp),r.name&&(delete e[r.name],t.name=r.name)),t}return dm(e,s.result,r.primitiveSchema)}return{verified:!0,result:e}}function gm(e,t){if(t instanceof Object==0)return{verified:!1,result:{error:"Wrong ASN.1 schema type"}};const r=ly(Tf.toUint8Array(e));return-1===r.offset?{verified:!1,result:r.result}:dm(r.result,r.result,t)}(ay=ny||(ny={}))[ay.Sequence=0]="Sequence",ay[ay.Set=1]="Set",ay[ay.Choice=2]="Choice",function(e){e[e.Any=1]="Any",e[e.Boolean=2]="Boolean",e[e.OctetString=3]="OctetString",e[e.BitString=4]="BitString",e[e.Integer=5]="Integer",e[e.Enumerated=6]="Enumerated",e[e.ObjectIdentifier=7]="ObjectIdentifier",e[e.Utf8String=8]="Utf8String",e[e.BmpString=9]="BmpString",e[e.UniversalString=10]="UniversalString",e[e.NumericString=11]="NumericString",e[e.PrintableString=12]="PrintableString",e[e.TeletexString=13]="TeletexString",e[e.VideotexString=14]="VideotexString",e[e.IA5String=15]="IA5String",e[e.GraphicString=16]="GraphicString",e[e.VisibleString=17]="VisibleString",e[e.GeneralString=18]="GeneralString",e[e.CharacterString=19]="CharacterString",e[e.UTCTime=20]="UTCTime",e[e.GeneralizedTime=21]="GeneralizedTime",e[e.DATE=22]="DATE",e[e.TimeOfDay=23]="TimeOfDay",e[e.DateTime=24]="DateTime",e[e.Duration=25]="Duration",e[e.TIME=26]="TIME",e[e.Null=27]="Null"}(oy||(oy={}));class fm{constructor(e,t=0){if(this.unusedBits=0,this.value=new ArrayBuffer(0),e)if("number"==typeof e)this.fromNumber(e);else{if(!Tf.isBufferSource(e))throw TypeError("Unsupported type of 'params' argument for BitString");this.unusedBits=t,this.value=Tf.toArrayBuffer(e)}}fromASN(e){if(!(e instanceof wy))throw new TypeError("Argument 'asn' is not instance of ASN.1 BitString");return this.unusedBits=e.valueBlock.unusedBits,this.value=e.valueBlock.valueHex,this}toASN(){return new wy({unusedBits:this.unusedBits,valueHex:this.value})}toSchema(e){return new wy({name:e})}toNumber(){let e="";const t=new Uint8Array(this.value);for(const r of t)e+=r.toString(2).padStart(8,"0");return e=e.split("").reverse().join(""),this.unusedBits&&(e=e.slice(this.unusedBits).padStart(this.unusedBits,"0")),parseInt(e,2)}fromNumber(e){let t=e.toString(2);const r=t.length+7>>3;this.unusedBits=(r<<3)-t.length;const s=new Uint8Array(r);t=t.padStart(r<<3,"0").split("").reverse().join("");let i=0;for(;i<r;)s[i]=parseInt(t.slice(i<<3,8+(i<<3)),2),i++;this.value=s.buffer}}class pm{get byteLength(){return this.buffer.byteLength}get byteOffset(){return 0}constructor(e){"number"==typeof e?this.buffer=new ArrayBuffer(e):Tf.isBufferSource(e)?this.buffer=Tf.toArrayBuffer(e):Array.isArray(e)?this.buffer=new Uint8Array(e):this.buffer=new ArrayBuffer(0)}fromASN(e){if(!(e instanceof Iy))throw new TypeError("Argument 'asn' is not instance of ASN.1 OctetString");return this.buffer=e.valueBlock.valueHex,this}toASN(){return new Iy({valueHex:this.buffer})}toSchema(e){return new Iy({name:e})}}const ym={fromASN:e=>e instanceof yy?null:e.valueBeforeDecodeView,toASN:e=>{if(null===e)return new yy;const t=hy(e);if(t.result.error)throw new Error(t.result.error);return t.result}},mm={fromASN:e=>e.valueBlock.valueHexView.byteLength>=4?e.valueBlock.toString():e.valueBlock.valueDec,toASN:e=>new xy({value:+e})},bm={fromASN:e=>e.valueBlock.valueDec,toASN:e=>new By({value:e})},Am={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new xy({valueHex:e})},Im={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new wy({valueHex:e})},vm={fromASN:e=>e.valueBlock.toString(),toASN:e=>new Oy({value:e})},wm={fromASN:e=>e.valueBlock.value,toASN:e=>new by({value:e})},Sm={fromASN:e=>e.valueBlock.valueHexView,toASN:e=>new Iy({valueHex:e})},Em={fromASN:e=>new pm(e.getValue()),toASN:e=>e.toASN()};function Cm(e){return{fromASN:e=>e.valueBlock.value,toASN:t=>new e({value:t})}}const km=Cm(Vy),xm=Cm(Fy),Bm=Cm($y),_m=Cm(jy),Rm=Cm(qy),Om=Cm(zy),Um=Cm(Wy),Tm=Cm(Jy),Nm=Cm(Yy),Dm=Cm(Zy),Mm=Cm(Xy),Pm=Cm(em),Lm={fromASN:e=>e.toDate(),toASN:e=>new tm({valueDate:e})},Hm={fromASN:e=>e.toDate(),toASN:e=>new rm({valueDate:e})},Km={fromASN:()=>null,toASN:()=>new yy};function Vm(e){switch(e){case oy.Any:return ym;case oy.BitString:return Im;case oy.BmpString:return xm;case oy.Boolean:return wm;case oy.CharacterString:return Pm;case oy.Enumerated:return bm;case oy.GeneralString:return Mm;case oy.GeneralizedTime:return Hm;case oy.GraphicString:return Nm;case oy.IA5String:return Tm;case oy.Integer:return mm;case oy.Null:return Km;case oy.NumericString:return _m;case oy.ObjectIdentifier:return vm;case oy.OctetString:return Sm;case oy.PrintableString:return Rm;case oy.TeletexString:return Om;case oy.UTCTime:return Lm;case oy.UniversalString:return Bm;case oy.Utf8String:return km;case oy.VideotexString:return Um;case oy.VisibleString:return Dm;default:return null}}function Qm(e){return"function"==typeof e&&e.prototype?!(!e.prototype.toASN||!e.prototype.fromASN)||Qm(e.prototype):!!(e&&"object"==typeof e&&"toASN"in e&&"fromASN"in e)}function Fm(e){var t;if(e){const r=Object.getPrototypeOf(e);return(null===(t=null==r?void 0:r.prototype)||void 0===t?void 0:t.constructor)===Array||Fm(r)}return!1}function Gm(e,t){if(!e||!t)return!1;if(e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e),s=new Uint8Array(t);for(let t=0;t<e.byteLength;t++)if(r[t]!==s[t])return!1;return!0}const $m=new class{constructor(){this.items=new WeakMap}has(e){return this.items.has(e)}get(e,t=!1){const r=this.items.get(e);if(!r)throw new Error(`Cannot get schema for '${e.prototype.constructor.name}' target`);if(t&&!r.schema)throw new Error(`Schema '${e.prototype.constructor.name}' doesn't contain ASN.1 schema. Call 'AsnSchemaStorage.cache'.`);return r}cache(e){const t=this.get(e);t.schema||(t.schema=this.create(e,!0))}createDefault(e){const t={type:ny.Sequence,items:{}},r=this.findParentSchema(e);return r&&(Object.assign(t,r),t.items=Object.assign({},t.items,r.items)),t}create(e,t){const r=this.items.get(e)||this.createDefault(e),s=[];for(const e in r.items){const i=r.items[e],n=t?e:"";let o;if("number"==typeof i.type){const e=oy[i.type],t=a[e];if(!t)throw new Error(`Cannot get ASN1 class by name '${e}'`);o=new t({name:n})}else Qm(i.type)?o=(new i.type).toSchema(n):i.optional?this.get(i.type).type===ny.Choice?o=new cm({name:n}):(o=this.create(i.type,!1),o.name=n):o=new cm({name:n});const c=!!i.optional||void 0!==i.defaultValue;if(i.repeated&&(o.name="",o=new("set"===i.repeated?My:Dy)({name:"",value:[new hm({name:n,value:o})]})),null!==i.context&&void 0!==i.context)if(i.implicit)if("number"==typeof i.type||Qm(i.type)){const e=i.repeated?gy:cy;s.push(new e({name:n,optional:c,idBlock:{tagClass:3,tagNumber:i.context}}))}else{this.cache(i.type);const e=!!i.repeated;let t=e?o:this.get(i.type,!0).schema;t="valueBlock"in t?t.valueBlock.value:t.value,s.push(new gy({name:e?"":n,optional:c,idBlock:{tagClass:3,tagNumber:i.context},value:t}))}else s.push(new gy({optional:c,idBlock:{tagClass:3,tagNumber:i.context},value:[o]}));else o.optional=c,s.push(o)}switch(r.type){case ny.Sequence:return new Dy({value:s,name:""});case ny.Set:return new My({value:s,name:""});case ny.Choice:return new lm({value:s,name:""});default:throw new Error("Unsupported ASN1 type in use")}}set(e,t){return this.items.set(e,t),this}findParentSchema(e){const t=Object.getPrototypeOf(e);return t?this.items.get(t)||this.findParentSchema(t):null}},jm=e=>t=>{let r;$m.has(t)?r=$m.get(t):(r=$m.createDefault(t),$m.set(t,r)),Object.assign(r,e)},qm=e=>(t,r)=>{let s;$m.has(t.constructor)?s=$m.get(t.constructor):(s=$m.createDefault(t.constructor),$m.set(t.constructor,s));const i=Object.assign({},e);if("number"==typeof i.type&&!i.converter){const s=Vm(e.type);if(!s)throw new Error(`Cannot get default converter for property '${r}' of ${t.constructor.name}`);i.converter=s}s.items[r]=i};class zm extends Error{constructor(){super(...arguments),this.schemas=[]}}class Wm{static parse(e,t){const r=hy(e);if(r.result.error)throw new Error(r.result.error);return this.fromASN(r.result,t)}static fromASN(e,t){var r;try{if(Qm(t))return(new t).fromASN(e);const s=$m.get(t);$m.cache(t);let i=s.schema;if(e.constructor===gy&&s.type!==ny.Choice){i=new gy({idBlock:{tagClass:3,tagNumber:e.idBlock.tagNumber},value:s.schema.valueBlock.value});for(const t in s.items)delete e[t]}const n=dm({},e,i);if(!n.verified)throw new zm(`Data does not match to ${t.name} ASN1 schema. ${n.result.error}`);const o=new t;if(Fm(t)){if(!("value"in e.valueBlock)||!Array.isArray(e.valueBlock.value))throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.");const r=s.itemType;if("number"==typeof r){const s=Vm(r);if(!s)throw new Error(`Cannot get default converter for array item of ${t.name} ASN1 schema`);return t.from(e.valueBlock.value,e=>s.fromASN(e))}return t.from(e.valueBlock.value,e=>this.fromASN(e,r))}for(const e in s.items){const t=n.result[e];if(!t)continue;const i=s.items[e],c=i.type;if("number"==typeof c||Qm(c)){const s=null!==(r=i.converter)&&void 0!==r?r:Qm(c)?new c:null;if(!s)throw new Error("Converter is empty");if(i.repeated)if(i.implicit){const r=new("sequence"===i.repeated?Dy:My);r.valueBlock=t.valueBlock;const n=hy(r.toBER(!1));if(-1===n.offset)throw new Error(`Cannot parse the child item. ${n.result.error}`);if(!("value"in n.result.valueBlock)||!Array.isArray(n.result.valueBlock.value))throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.");const a=n.result.valueBlock.value;o[e]=Array.from(a,e=>s.fromASN(e))}else o[e]=Array.from(t,e=>s.fromASN(e));else{let r=t;if(i.implicit){let e;if(Qm(c))e=(new c).toSchema("");else{const t=oy[c],r=a[t];if(!r)throw new Error(`Cannot get '${t}' class from asn1js module`);e=new r}e.valueBlock=r.valueBlock,r=hy(e.toBER(!1)).result}o[e]=s.fromASN(r)}}else if(i.repeated){if(!Array.isArray(t))throw new Error("Cannot get list of items from the ASN.1 parsed value. ASN.1 value should be iterable.");o[e]=Array.from(t,e=>this.fromASN(e,c))}else o[e]=this.fromASN(t,c)}return o}catch(e){throw e instanceof zm&&e.schemas.push(t.name),e}}}class Jm{static serialize(e){return e instanceof wp?e.toBER(!1):this.toASN(e).toBER(!1)}static toASN(e){if(e&&"object"==typeof e&&Qm(e))return e.toASN();if(!e||"object"!=typeof e)throw new TypeError("Parameter 1 should be type of Object.");const t=e.constructor,r=$m.get(t);$m.cache(t);let s,i=[];if(r.itemType){if(!Array.isArray(e))throw new TypeError("Parameter 1 should be type of Array.");if("number"==typeof r.itemType){const s=Vm(r.itemType);if(!s)throw new Error(`Cannot get default converter for array item of ${t.name} ASN1 schema`);i=e.map(e=>s.toASN(e))}else i=e.map(e=>this.toAsnItem({type:r.itemType},"[]",t,e))}else for(const s in r.items){const n=r.items[s],o=e[s];if(void 0===o||n.defaultValue===o||"object"==typeof n.defaultValue&&"object"==typeof o&&Gm(this.serialize(n.defaultValue),this.serialize(o)))continue;const a=Jm.toAsnItem(n,s,t,o);if("number"==typeof n.context)if(n.implicit)if(n.repeated||"number"!=typeof n.type&&!Qm(n.type))i.push(new gy({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},value:a.valueBlock.value}));else{const e={};e.valueHex=a instanceof yy?a.valueBeforeDecodeView:a.valueBlock.toBER(),i.push(new cy({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},...e}))}else i.push(new gy({optional:n.optional,idBlock:{tagClass:3,tagNumber:n.context},value:[a]}));else n.repeated?i=i.concat(a):i.push(a)}switch(r.type){case ny.Sequence:s=new Dy({value:i});break;case ny.Set:s=new My({value:i});break;case ny.Choice:if(!i[0])throw new Error(`Schema '${t.name}' has wrong data. Choice cannot be empty.`);s=i[0]}return s}static toAsnItem(e,t,r,s){let i;if("number"==typeof e.type){const n=e.converter;if(!n)throw new Error(`Property '${t}' doesn't have converter for type ${oy[e.type]} in schema '${r.name}'`);if(e.repeated){if(!Array.isArray(s))throw new TypeError("Parameter 'objProp' should be type of Array.");const t=Array.from(s,e=>n.toASN(e));i=new("sequence"===e.repeated?Dy:My)({value:t})}else i=n.toASN(s)}else if(e.repeated){if(!Array.isArray(s))throw new TypeError("Parameter 'objProp' should be type of Array.");const t=Array.from(s,e=>this.toASN(e));i=new("sequence"===e.repeated?Dy:My)({value:t})}else i=this.toASN(s);return i}}class Ym extends Array{constructor(e=[]){if("number"==typeof e)super(e);else{super();for(const t of e)this.push(t)}}}class Zm{static serialize(e){return Jm.serialize(e)}static parse(e,t){return Wm.parse(e,t)}static toString(e){const t=hy(Tf.isBufferSource(e)?Tf.toArrayBuffer(e):Zm.serialize(e));if(-1===t.offset)throw new Error(`Cannot decode ASN.1 data. ${t.result.error}`);return t.result.toString()}}function Xm(e,t,r,s){var i,n=arguments.length,o=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,s);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(o=(n<3?i(o):n>3?i(t,r,o):i(t,r))||o);return n>3&&o&&Object.defineProperty(t,r,o),o}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;class eb extends Error{constructor(e,t){super(t?`${e}. See the inner exception for more details.`:e),this.message=e,this.innerError=t}}class tb extends eb{constructor(e,t,r){super(t,r),this.schema=e}}class rb extends tb{constructor(e,t,r){super(e,`JSON doesn't match to '${e.target.name}' schema. ${t}`,r)}}class sb extends eb{}class ib extends eb{constructor(e,t,r){super(`Cannot serialize by '${e}' schema. ${t}`,r),this.schemaName=e}}class nb extends rb{constructor(e,t,r={}){super(e,"Some keys doesn't match to schema"),this.keys=t,this.errors=r}}var ob;function ab(e,t){if(!function(e,t){switch(t){case ob.Boolean:return"boolean"==typeof e;case ob.Number:return"number"==typeof e;case ob.String:return"string"==typeof e}return!0}(e,t))throw new TypeError(`Value must be ${ob[t]}`)}function cb(e){return e&&e.prototype?!(!e.prototype.toJSON||!e.prototype.fromJSON)||cb(e.prototype):!!(e&&e.toJSON&&e.fromJSON)}!function(e){e[e.Any=0]="Any",e[e.Boolean=1]="Boolean",e[e.Number=2]="Number",e[e.String=3]="String"}(ob||(ob={}));const lb="default",hb=new class{constructor(){this.items=new Map}has(e){return this.items.has(e)||!!this.findParentSchema(e)}get(e){const t=this.items.get(e)||this.findParentSchema(e);if(!t)throw new Error("Cannot get schema for current target");return t}create(e){const t={names:{}},r=this.findParentSchema(e);if(r){Object.assign(t,r),t.names={};for(const e in r.names)t.names[e]=Object.assign({},r.names[e])}return t.target=e,t}set(e,t){return this.items.set(e,t),this}findParentSchema(e){const t=e.__proto__;return t?this.items.get(t)||this.findParentSchema(t):null}};class ub{constructor(e){this.pattern=new RegExp(e)}validate(e){const t=new RegExp(this.pattern.source,this.pattern.flags);if("string"!=typeof e)throw new sb("Incoming value must be string");if(!t.exec(e))throw new sb(`Value doesn't match to pattern '${t.toString()}'`)}}class db{constructor(e=Number.MIN_VALUE,t=Number.MAX_VALUE){this.min=e,this.max=t}validate(e){if(ab(e,ob.Number),!(this.min<=e&&e<=this.max)){const e=this.min===Number.MIN_VALUE?"MIN":this.min,t=this.max===Number.MAX_VALUE?"MAX":this.max;throw new sb(`Value doesn't match to diapason [${e},${t}]`)}}}class gb{constructor(e=Number.MIN_VALUE,t=Number.MAX_VALUE){this.min=e,this.max=t}validate(e){if(ab(e,ob.Number),!(this.min<e&&e<this.max)){const e=this.min===Number.MIN_VALUE?"MIN":this.min,t=this.max===Number.MAX_VALUE?"MAX":this.max;throw new sb(`Value doesn't match to diapason (${e},${t})`)}}}class fb{constructor(e,t,r){this.length=e,this.minLength=t,this.maxLength=r}validate(e){if(void 0===this.length){if(void 0!==this.minLength&&e.length<this.minLength)throw new sb(`Value length must be more than ${this.minLength}.`);if(void 0!==this.maxLength&&e.length>this.maxLength)throw new sb(`Value length must be less than ${this.maxLength}.`)}else if(e.length!==this.length)throw new sb(`Value length must be exactly ${this.length}.`)}}class pb{constructor(e){this.enumeration=e}validate(e){if(ab(e,ob.String),!this.enumeration.includes(e))throw new sb(`Value must be one of ${this.enumeration.map(e=>`'${e}'`).join(", ")}`)}}class yb{static checkValues(e,t){const r=Array.isArray(e)?e:[e];for(const s of r)for(const r of t.validations)r instanceof fb&&t.repeated?r.validate(e):r.validate(s)}static checkTypes(e,t){if(t.repeated&&!Array.isArray(e))throw new TypeError("Value must be Array");if("number"==typeof t.type){const r=Array.isArray(e)?e:[e];for(const e of r)ab(e,t.type)}}static getSchemaByName(e,t=lb){return{...e.names[lb],...e.names[t]}}}class mb extends yb{static serialize(e,t,r,s){const i=this.toJSON(e,t);return JSON.stringify(i,r,s)}static toJSON(e,t={}){let r,s=t.targetSchema;const i=t.schemaName||lb;if(cb(e))return e.toJSON();if(Array.isArray(e)){r=[];for(const s of e)r.push(this.toJSON(s,t))}else if("object"==typeof e){if(s&&!hb.has(s))throw new eb("Cannot get schema for `targetSchema` param");if(s=s||e.constructor,hb.has(s)){const t=hb.get(s);r={};const n=this.getSchemaByName(t,i);for(const o in n)try{const t=n[o],a=e[o];let c;if(t.optional&&void 0===a||void 0!==t.defaultValue&&a===t.defaultValue)continue;if(!t.optional&&void 0===a)throw new ib(s.name,`Property '${o}' is required.`);c="number"==typeof t.type?t.converter?t.repeated?a.map(r=>t.converter.toJSON(r,e)):t.converter.toJSON(a,e):a:t.repeated?a.map(e=>this.toJSON(e,{schemaName:i})):this.toJSON(a,{schemaName:i}),this.checkTypes(c,t),this.checkValues(c,t),r[t.name||o]=c}catch(e){throw e instanceof ib?e:new ib(t.target.name,`Property '${o}' is wrong. ${e.message}`,e)}}else{r={};for(const t in e)r[t]=this.toJSON(e[t],{schemaName:i})}}else r=e;return r}}class bb extends yb{static parse(e,t){const r=JSON.parse(e);return this.fromJSON(r,t)}static fromJSON(e,t){const r=t.targetSchema,s=t.schemaName||lb,i=new r;if(cb(i))return i.fromJSON(e);const n=hb.get(r),o=this.getSchemaByName(n,s),a={};t.strictProperty&&!Array.isArray(e)&&bb.checkStrictProperty(e,o,n);for(const r in o)try{const a=o[r],c=a.name||r,l=e[c];if(void 0===l&&(a.optional||void 0!==a.defaultValue))continue;if(!a.optional&&void 0===l)throw new rb(n,`Property '${c}' is required.`);if(this.checkTypes(l,a),this.checkValues(l,a),"number"==typeof a.type)a.converter?a.repeated?i[r]=l.map(e=>a.converter.fromJSON(e,i)):i[r]=a.converter.fromJSON(l,i):i[r]=l;else{const e={...t,targetSchema:a.type,schemaName:s};a.repeated?i[r]=l.map(t=>this.fromJSON(t,e)):i[r]=this.fromJSON(l,e)}}catch(e){if(e instanceof rb||(e=new rb(n,`Property '${r}' is wrong. ${e.message}`,e)),!t.strictAllKeys)throw e;a[r]=e}const c=Object.keys(a);if(c.length)throw new nb(n,c,a);return i}static checkStrictProperty(e,t,r){const s=Object.keys(e),i=Object.keys(t),n=[];for(const e of s)-1===i.indexOf(e)&&n.push(e);if(n.length)throw new nb(r,n)}}const Ab=(e={})=>(t,r)=>{const s=`Cannot set type for ${r} property of ${t.constructor.name} schema`;let i;hb.has(t.constructor)?(i=hb.get(t.constructor),i.target!==t.constructor&&(i=hb.create(t.constructor),hb.set(t.constructor,i))):(i=hb.create(t.constructor),hb.set(t.constructor,i));const n={type:ob.Any,validations:[]},o=Object.assign(n,e);if(o.validations=function(e){const t=[];return e.pattern&&t.push(new ub(e.pattern)),e.type!==ob.Number&&e.type!==ob.Any||(void 0===e.minInclusive&&void 0===e.maxInclusive||t.push(new db(e.minInclusive,e.maxInclusive)),void 0===e.minExclusive&&void 0===e.maxExclusive||t.push(new gb(e.minExclusive,e.maxExclusive)),void 0!==e.enumeration&&t.push(new pb(e.enumeration))),(e.type===ob.String||e.repeated||e.type===ob.Any)&&(void 0===e.length&&void 0===e.minLength&&void 0===e.maxLength||t.push(new fb(e.length,e.minLength,e.maxLength))),t}(o),"number"!=typeof o.type&&!hb.has(o.type)&&!cb(o.type))throw new Error(`${s}. Assigning type doesn't have schema.`);let a;a=Array.isArray(e.schema)?e.schema:[e.schema||lb];for(const e of a)i.names[e]||(i.names[e]={}),i.names[e][r]=o};class Ib extends Error{}class vb extends Ib{}class wb extends Ib{constructor(e){super("Unsupported operation: "+(e?`${e}`:""))}}class Sb extends Ib{}class Eb extends Ib{constructor(e){super(`${e}: Missing required property`)}}class Cb{static toArrayBuffer(e){const t=e.replace(/-{5}(BEGIN|END) .*-{5}/g,"").replace("\r","").replace("\n","");return Kf.FromBase64(t)}static toUint8Array(e){const t=this.toArrayBuffer(e);return new Uint8Array(t)}static fromBufferSource(e,t){const r=Kf.ToBase64(e);let s,i=0;const n=[];for(;i<r.length&&(s=r.slice(i,i+64),s.length);)n.push(s),i+=64;const o=t.toUpperCase();return`-----BEGIN ${o}-----\n${n.join("\n")}\n-----END ${o}-----`}static isPEM(e){return/-----BEGIN .+-----[A-Za-z0-9+/+=\s\n]+-----END .+-----/i.test(e)}static getTagName(e){if(!this.isPEM(e))throw new Error("Bad parameter. Incoming data is not right PEM");const t=/-----BEGIN (.+)-----/.exec(e);if(!t)throw new Error("Cannot get tag from PEM");return t[1]}static hasTagName(e,t){const r=this.getTagName(e);return t.toLowerCase()===r.toLowerCase()}static isCertificate(e){return this.hasTagName(e,"certificate")}static isCertificateRequest(e){return this.hasTagName(e,"certificate request")}static isCRL(e){return this.hasTagName(e,"x509 crl")}static isPublicKey(e){return this.hasTagName(e,"public key")}}class kb{async digest(...e){return this.checkDigest.apply(this,e),this.onDigest.apply(this,e)}checkDigest(e,t){this.checkAlgorithmName(e)}async onDigest(e,t){throw new wb("digest")}async generateKey(...e){return this.checkGenerateKey.apply(this,e),this.onGenerateKey.apply(this,e)}checkGenerateKey(e,t,r,...s){if(this.checkAlgorithmName(e),this.checkGenerateKeyParams(e),!r||!r.length)throw new TypeError("Usages cannot be empty when creating a key.");let i;i=Array.isArray(this.usages)?this.usages:this.usages.privateKey.concat(this.usages.publicKey),this.checkKeyUsages(r,i)}checkGenerateKeyParams(e){}async onGenerateKey(e,t,r,...s){throw new wb("generateKey")}async sign(...e){return this.checkSign.apply(this,e),this.onSign.apply(this,e)}checkSign(e,t,r,...s){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,"sign")}async onSign(e,t,r,...s){throw new wb("sign")}async verify(...e){return this.checkVerify.apply(this,e),this.onVerify.apply(this,e)}checkVerify(e,t,r,s,...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,"verify")}async onVerify(e,t,r,s,...i){throw new wb("verify")}async encrypt(...e){return this.checkEncrypt.apply(this,e),this.onEncrypt.apply(this,e)}checkEncrypt(e,t,r,s={},...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"encrypt":void 0)}async onEncrypt(e,t,r,...s){throw new wb("encrypt")}async decrypt(...e){return this.checkDecrypt.apply(this,e),this.onDecrypt.apply(this,e)}checkDecrypt(e,t,r,s={},...i){this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"decrypt":void 0)}async onDecrypt(e,t,r,...s){throw new wb("decrypt")}async deriveBits(...e){return this.checkDeriveBits.apply(this,e),this.onDeriveBits.apply(this,e)}checkDeriveBits(e,t,r,s={},...i){if(this.checkAlgorithmName(e),this.checkAlgorithmParams(e),this.checkCryptoKey(t,s.keyUsage?"deriveBits":void 0),r%8!=0)throw new Sb("length: Is not multiple of 8")}async onDeriveBits(e,t,r,...s){throw new wb("deriveBits")}async exportKey(...e){return this.checkExportKey.apply(this,e),this.onExportKey.apply(this,e)}checkExportKey(e,t,...r){if(this.checkKeyFormat(e),this.checkCryptoKey(t),!t.extractable)throw new Ib("key: Is not extractable")}async onExportKey(e,t,...r){throw new wb("exportKey")}async importKey(...e){return this.checkImportKey.apply(this,e),this.onImportKey.apply(this,e)}checkImportKey(e,t,r,s,i,...n){this.checkKeyFormat(e),this.checkKeyData(e,t),this.checkAlgorithmName(r),this.checkImportParams(r),Array.isArray(this.usages)&&this.checkKeyUsages(i,this.usages)}async onImportKey(e,t,r,s,i,...n){throw new wb("importKey")}checkAlgorithmName(e){if(e.name.toLowerCase()!==this.name.toLowerCase())throw new vb("Unrecognized name")}checkAlgorithmParams(e){}checkDerivedKeyParams(e){}checkKeyUsages(e,t){for(const r of e)if(-1===t.indexOf(r))throw new TypeError("Cannot create a key using the specified key usages")}checkCryptoKey(e,t){if(this.checkAlgorithmName(e.algorithm),t&&-1===e.usages.indexOf(t))throw new Ib("key does not match that of operation")}checkRequiredProperty(e,t){if(!(t in e))throw new Eb(t)}checkHashAlgorithm(e,t){for(const r of t)if(r.toLowerCase()===e.name.toLowerCase())return;throw new Sb(`hash: Must be one of ${t.join(", ")}`)}checkImportParams(e){}checkKeyFormat(e){switch(e){case"raw":case"pkcs8":case"spki":case"jwk":break;default:throw new TypeError("format: Is invalid value. Must be 'jwk', 'raw', 'spki', or 'pkcs8'")}}checkKeyData(e,t){if(!t)throw new TypeError("keyData: Cannot be empty on empty on key importing");if("jwk"===e){if("object"!=typeof(r=t)||!("kty"in r))throw new TypeError("keyData: Is not JsonWebToken")}else if(!Tf.isBufferSource(t))throw new TypeError("keyData: Is not ArrayBufferView or ArrayBuffer");var r}prepareData(e){return Tf.toArrayBuffer(e)}}class xb extends kb{checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not of type Number");switch(e.length){case 128:case 192:case 256:break;default:throw new TypeError("length: Must be 128, 192, or 256")}}checkDerivedKeyParams(e){this.checkGenerateKeyParams(e)}}class Bb extends xb{constructor(){super(...arguments),this.name="AES-CBC",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(16!==e.iv.byteLength)throw new TypeError("iv: Must have length 16 bytes")}}class _b extends xb{constructor(){super(...arguments),this.name="AES-CMAC",this.usages=["sign","verify"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new Sb("length: Must be more than 0")}}class Rb extends xb{constructor(){super(...arguments),this.name="AES-CTR",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"counter"),!(e.counter instanceof ArrayBuffer||ArrayBuffer.isView(e.counter)))throw new TypeError("counter: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(16!==e.counter.byteLength)throw new TypeError("iv: Must have length 16 bytes");if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new Sb("length: Must be more than 0")}}class Ob extends xb{constructor(){super(...arguments),this.name="AES-ECB",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}}class Ub extends xb{constructor(){super(...arguments),this.name="AES-GCM",this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){var t;if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(e.iv.byteLength<1)throw new Sb("iv: Must have length more than 0 and less than 2^64 - 1");switch(null!==(t=e.tagLength)&&void 0!==t||(e.tagLength=128),e.tagLength){case 32:case 64:case 96:case 104:case 112:case 120:case 128:break;default:throw new Sb("tagLength: Must be one of 32, 64, 96, 104, 112, 120 or 128")}}}class Tb extends xb{constructor(){super(...arguments),this.name="AES-KW",this.usages=["wrapKey","unwrapKey"]}}class Nb extends kb{constructor(){super(...arguments),this.usages=["encrypt","decrypt","wrapKey","unwrapKey"]}checkAlgorithmParams(e){if(this.ivSize){if(this.checkRequiredProperty(e,"iv"),!(e.iv instanceof ArrayBuffer||ArrayBuffer.isView(e.iv)))throw new TypeError("iv: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(e.iv.byteLength!==this.ivSize)throw new TypeError(`iv: Must have length ${this.ivSize} bytes`)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"length"),"number"!=typeof e.length)throw new TypeError("length: Is not of type Number");if(e.length!==this.keySizeBits)throw new Sb(`algorithm.length: Must be ${this.keySizeBits}`)}checkDerivedKeyParams(e){this.checkGenerateKeyParams(e)}}class Db extends kb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"]}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"publicExponent"),!(e.publicExponent&&e.publicExponent instanceof Uint8Array))throw new TypeError("publicExponent: Missing or not a Uint8Array");const t=Kf.ToBase64(e.publicExponent);if("Aw=="!==t&&"AQAB"!==t)throw new TypeError("publicExponent: Must be [3] or [1,0,1]");if(this.checkRequiredProperty(e,"modulusLength"),e.modulusLength%8||e.modulusLength<256||e.modulusLength>16384)throw new TypeError("The modulus length must be a multiple of 8 bits and >= 256 and <= 16384")}checkImportParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}class Mb extends Db{constructor(){super(...arguments),this.name="RSASSA-PKCS1-v1_5",this.usages={privateKey:["sign"],publicKey:["verify"]}}}class Pb extends Db{constructor(){super(...arguments),this.name="RSA-PSS",this.usages={privateKey:["sign"],publicKey:["verify"]}}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"saltLength"),"number"!=typeof e.saltLength)throw new TypeError("saltLength: Is not a Number");if(e.saltLength<0)throw new RangeError("saltLength: Must be positive number")}}class Lb extends Db{constructor(){super(...arguments),this.name="RSA-OAEP",this.usages={privateKey:["decrypt","unwrapKey"],publicKey:["encrypt","wrapKey"]}}checkAlgorithmParams(e){if(e.label&&!(e.label instanceof ArrayBuffer||ArrayBuffer.isView(e.label)))throw new TypeError("label: Is not of type '(ArrayBuffer or ArrayBufferView)'")}}class Hb extends kb{checkGenerateKeyParams(e){this.checkRequiredProperty(e,"namedCurve"),this.checkNamedCurve(e.namedCurve)}checkNamedCurve(e){for(const t of this.namedCurves)if(t.toLowerCase()===e.toLowerCase())return;throw new Sb(`namedCurve: Must be one of ${this.namedCurves.join(", ")}`)}}class Kb extends Hb{constructor(){super(...arguments),this.name="ECDSA",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages={privateKey:["sign"],publicKey:["verify"]},this.namedCurves=["P-256","P-384","P-521","K-256"]}checkAlgorithmParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}const Vb=["secret","private","public"];class Qb{static create(e,t,r,s){const i=new this;return i.algorithm=e,i.type=t,i.extractable=r,i.usages=s,i}static isKeyType(e){return-1!==Vb.indexOf(e)}get[Symbol.toStringTag](){return"CryptoKey"}}class Fb extends Hb{constructor(){super(...arguments),this.name="ECDH",this.usages={privateKey:["deriveBits","deriveKey"],publicKey:[]},this.namedCurves=["P-256","P-384","P-521","K-256"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"public"),!(e.public instanceof Qb))throw new TypeError("public: Is not a CryptoKey");if("public"!==e.public.type)throw new Sb("public: Is not a public key");if(e.public.algorithm.name!==this.name)throw new Sb(`public: Is not ${this.name} key`)}}class Gb extends Fb{constructor(){super(...arguments),this.name="ECDH-ES",this.namedCurves=["X25519","X448"]}}class $b extends Hb{constructor(){super(...arguments),this.name="EdDSA",this.usages={privateKey:["sign"],publicKey:["verify"]},this.namedCurves=["Ed25519","Ed448"]}}let jb=class{constructor(e){e&&(this.value=e)}};Xm([qm({type:oy.ObjectIdentifier})],jb.prototype,"value",void 0),jb=Xm([jm({type:ny.Choice})],jb);class qb{constructor(e){Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],qb.prototype,"algorithm",void 0),Xm([qm({type:oy.Any,optional:!0})],qb.prototype,"parameters",void 0);class zb{constructor(){this.version=0,this.privateKeyAlgorithm=new qb,this.privateKey=new ArrayBuffer(0)}}Xm([qm({type:oy.Integer})],zb.prototype,"version",void 0),Xm([qm({type:qb})],zb.prototype,"privateKeyAlgorithm",void 0),Xm([qm({type:oy.OctetString})],zb.prototype,"privateKey",void 0),Xm([qm({type:oy.Any,optional:!0})],zb.prototype,"attributes",void 0);class Wb{constructor(){this.publicKeyAlgorithm=new qb,this.publicKey=new ArrayBuffer(0)}}Xm([qm({type:qb})],Wb.prototype,"publicKeyAlgorithm",void 0),Xm([qm({type:oy.BitString})],Wb.prototype,"publicKey",void 0);const Jb={fromJSON:e=>Kf.FromBase64Url(e),toJSON:e=>Kf.ToBase64Url(new Uint8Array(e))},Yb={fromASN:e=>{const t=e.valueBlock.valueHex;return new Uint8Array(t)[0]?e.valueBlock.valueHex:e.valueBlock.valueHex.slice(1)},toASN:e=>{const t=new Uint8Array(e)[0]>127?Vf(new Uint8Array([0]).buffer,e):e;return new xy({valueHex:t})}};class Zb{constructor(){this.version=0,this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),this.privateExponent=new ArrayBuffer(0),this.prime1=new ArrayBuffer(0),this.prime2=new ArrayBuffer(0),this.exponent1=new ArrayBuffer(0),this.exponent2=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0)}}Xm([qm({type:oy.Integer,converter:mm})],Zb.prototype,"version",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"n",converter:Jb})],Zb.prototype,"modulus",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"e",converter:Jb})],Zb.prototype,"publicExponent",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"d",converter:Jb})],Zb.prototype,"privateExponent",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"p",converter:Jb})],Zb.prototype,"prime1",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"q",converter:Jb})],Zb.prototype,"prime2",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"dp",converter:Jb})],Zb.prototype,"exponent1",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"dq",converter:Jb})],Zb.prototype,"exponent2",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"qi",converter:Jb})],Zb.prototype,"coefficient",void 0),Xm([qm({type:oy.Any,optional:!0})],Zb.prototype,"otherPrimeInfos",void 0);class Xb{constructor(){this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0)}}Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"n",converter:Jb})],Xb.prototype,"modulus",void 0),Xm([qm({type:oy.Integer,converter:Yb}),Ab({name:"e",converter:Jb})],Xb.prototype,"publicExponent",void 0);let eA=class{constructor(e){this.value=new ArrayBuffer(0),e&&(this.value=e)}toJSON(){let e=new Uint8Array(this.value);if(4!==e[0])throw new Ib("Wrong ECPoint. Current version supports only Uncompressed (0x04) point");e=new Uint8Array(this.value.slice(1));const t=e.length/2;return{x:Kf.ToBase64Url(e.buffer.slice(0,0+t)),y:Kf.ToBase64Url(e.buffer.slice(0+t,0+t+t))}}fromJSON(e){if(!("x"in e))throw new Error("x: Missing required property");if(!("y"in e))throw new Error("y: Missing required property");const t=Kf.FromBase64Url(e.x),r=Kf.FromBase64Url(e.y),s=Vf(new Uint8Array([4]).buffer,t,r);return this.value=new Uint8Array(s).buffer,this}};Xm([qm({type:oy.OctetString})],eA.prototype,"value",void 0),eA=Xm([jm({type:ny.Choice})],eA);class tA{constructor(){this.version=1,this.privateKey=new ArrayBuffer(0)}fromJSON(e){if(!("d"in e))throw new Error("d: Missing required property");if(this.privateKey=Kf.FromBase64Url(e.d),"x"in e){const t=new eA;t.fromJSON(e);const r=Jm.toASN(t);"valueHex"in r.valueBlock&&(this.publicKey=r.valueBlock.valueHex)}return this}toJSON(){const e={};return e.d=Kf.ToBase64Url(this.privateKey),this.publicKey&&Object.assign(e,new eA(this.publicKey).toJSON()),e}}Xm([qm({type:oy.Integer,converter:mm})],tA.prototype,"version",void 0),Xm([qm({type:oy.OctetString})],tA.prototype,"privateKey",void 0),Xm([qm({context:0,type:oy.Any,optional:!0})],tA.prototype,"parameters",void 0),Xm([qm({context:1,type:oy.BitString,optional:!0})],tA.prototype,"publicKey",void 0);const rA={fromASN:e=>{const t=new Uint8Array(e.valueBlock.valueHex);return 0===t[0]?t.buffer.slice(1):t.buffer},toASN:e=>{const t=new Uint8Array(e);if(t[0]>127){const e=new Uint8Array(t.length+1);return e.set(t,1),new xy({valueHex:e.buffer})}return new xy({valueHex:e})}};var sA=Object.freeze({__proto__:null,AsnIntegerWithoutPaddingConverter:rA});class iA{static decodePoint(e,t){const r=Tf.toUint8Array(e);if(0===r.length||4!==r[0])throw new Error("Only uncompressed point format supported");const s=(r.length-1)/2;if(s!==Math.ceil(t/8))throw new Error("Point does not match field size");return{x:r.slice(1,s+1),y:r.slice(s+1,s+1+s)}}static encodePoint(e,t){const r=Math.ceil(t/8);if(e.x.byteLength!==r||e.y.byteLength!==r)throw new Error("X,Y coordinates don't match point size criteria");const s=Tf.toUint8Array(e.x),i=Tf.toUint8Array(e.y),n=new Uint8Array(2*r+1);return n[0]=4,n.set(s,1),n.set(i,r+1),n}static getSize(e){return Math.ceil(e/8)}static encodeSignature(e,t){const r=this.getSize(t),s=Tf.toUint8Array(e.r),i=Tf.toUint8Array(e.s),n=new Uint8Array(2*r);return n.set(this.padStart(s,r)),n.set(this.padStart(i,r),r),n}static decodeSignature(e,t){const r=this.getSize(t),s=Tf.toUint8Array(e);if(s.length!==2*r)throw new Error("Incorrect size of the signature");const i=s.slice(0,r),n=s.slice(r);return{r:this.trimStart(i),s:this.trimStart(n)}}static trimStart(e){let t=0;for(;t<e.length-1&&0===e[t];)t++;return 0===t?e:e.slice(t,e.length)}static padStart(e,t){if(t===e.length)return e;const r=new Uint8Array(t);return r.set(e,t-e.length),r}}class nA{constructor(){this.r=new ArrayBuffer(0),this.s=new ArrayBuffer(0)}static fromWebCryptoSignature(e){const t=e.byteLength/2,r=iA.decodeSignature(e,8*t),s=new nA;return s.r=Tf.toArrayBuffer(r.r),s.s=Tf.toArrayBuffer(r.s),s}toWebCryptoSignature(e){if(!e){const t=Math.max(this.r.byteLength,this.s.byteLength);e=t<=32?256:t<=48?384:521}return iA.encodeSignature(this,e).buffer}}Xm([qm({type:oy.Integer,converter:rA})],nA.prototype,"r",void 0),Xm([qm({type:oy.Integer,converter:rA})],nA.prototype,"s",void 0);class oA extends zb{}Xm([qm({context:1,implicit:!0,type:oy.BitString,optional:!0})],oA.prototype,"publicKey",void 0);let aA=class{constructor(){this.value=new ArrayBuffer(0)}fromJSON(e){if(!e.d)throw new Error("d: Missing required property");return this.value=Kf.FromBase64Url(e.d),this}toJSON(){return{d:Kf.ToBase64Url(this.value)}}};Xm([qm({type:oy.OctetString})],aA.prototype,"value",void 0),aA=Xm([jm({type:ny.Choice})],aA);let cA=class{constructor(e){this.value=new ArrayBuffer(0),e&&(this.value=e)}toJSON(){return{x:Kf.ToBase64Url(this.value)}}fromJSON(e){if(!("x"in e))throw new Error("x: Missing required property");return this.value=Kf.FromBase64Url(e.x),this}};Xm([qm({type:oy.BitString})],cA.prototype,"value",void 0),cA=Xm([jm({type:ny.Choice})],cA);let lA=class{};Xm([qm({type:oy.OctetString}),Ab({type:ob.String,converter:Jb})],lA.prototype,"d",void 0),lA=Xm([jm({type:ny.Choice})],lA);const hA="1.2.840.10045.3.1.7",uA="1.3.132.0",dA=`${uA}.34`,gA=`${uA}.35`,fA=`${uA}.10`,pA="1.3.36.3.3.2.8.1.1",yA=`${pA}.1`,mA=`${pA}.2`,bA=`${pA}.3`,AA=`${pA}.4`,IA=`${pA}.5`,vA=`${pA}.6`,wA=`${pA}.7`,SA=`${pA}.8`,EA=`${pA}.9`,CA=`${pA}.10`,kA=`${pA}.11`,xA=`${pA}.12`,BA=`${pA}.13`,_A=`${pA}.14`;var RA=Object.freeze({__proto__:null,AlgorithmIdentifier:qb,get CurvePrivateKey(){return lA},EcDsaSignature:nA,EcPrivateKey:tA,get EcPublicKey(){return eA},get EdPrivateKey(){return aA},get EdPublicKey(){return cA},get ObjectIdentifier(){return jb},OneAsymmetricKey:oA,PrivateKeyInfo:zb,PublicKeyInfo:Wb,RsaPrivateKey:Zb,RsaPublicKey:Xb,converters:sA,idBrainpoolP160r1:yA,idBrainpoolP160t1:mA,idBrainpoolP192r1:bA,idBrainpoolP192t1:AA,idBrainpoolP224r1:IA,idBrainpoolP224t1:vA,idBrainpoolP256r1:wA,idBrainpoolP256t1:SA,idBrainpoolP320r1:EA,idBrainpoolP320t1:CA,idBrainpoolP384r1:kA,idBrainpoolP384t1:xA,idBrainpoolP512r1:BA,idBrainpoolP512t1:_A,idEd25519:"1.3.101.112",idEd448:"1.3.101.113",idEllipticCurve:uA,idSecp256k1:fA,idSecp256r1:hA,idSecp384r1:dA,idSecp521r1:gA,idVersionOne:pA,idX25519:"1.3.101.110",idX448:"1.3.101.111"});class OA{constructor(){}static register(e){const t=new jb;t.value=e.id;const r=Zm.serialize(t);this.items.push({...e,raw:r}),this.names.push(e.name)}static find(e){e=e.toUpperCase();for(const t of this.items)if(t.name.toUpperCase()===e||t.id.toUpperCase()===e)return t;return null}static get(e){const t=this.find(e);if(!t)throw new Error(`Unsupported EC named curve '${e}'`);return t}}OA.items=[],OA.names=[],OA.register({name:"P-256",id:hA,size:256}),OA.register({name:"P-384",id:dA,size:384}),OA.register({name:"P-521",id:gA,size:521}),OA.register({name:"K-256",id:fA,size:256}),OA.register({name:"brainpoolP160r1",id:yA,size:160}),OA.register({name:"brainpoolP160t1",id:mA,size:160}),OA.register({name:"brainpoolP192r1",id:bA,size:192}),OA.register({name:"brainpoolP192t1",id:AA,size:192}),OA.register({name:"brainpoolP224r1",id:IA,size:224}),OA.register({name:"brainpoolP224t1",id:vA,size:224}),OA.register({name:"brainpoolP256r1",id:wA,size:256}),OA.register({name:"brainpoolP256t1",id:SA,size:256}),OA.register({name:"brainpoolP320r1",id:EA,size:320}),OA.register({name:"brainpoolP320t1",id:CA,size:320}),OA.register({name:"brainpoolP384r1",id:kA,size:384}),OA.register({name:"brainpoolP384t1",id:xA,size:384}),OA.register({name:"brainpoolP512r1",id:BA,size:512}),OA.register({name:"brainpoolP512t1",id:_A,size:512});class UA extends kb{constructor(){super(...arguments),this.name="X25519",this.usages={privateKey:["deriveKey","deriveBits"],publicKey:[]}}checkAlgorithmParams(e){this.checkRequiredProperty(e,"public")}}class TA extends kb{constructor(){super(...arguments),this.name="Ed25519",this.usages={privateKey:["sign"],publicKey:["verify"]}}}class NA extends kb{constructor(){super(...arguments),this.name="HMAC",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["sign","verify"]}getDefaultLength(e){switch(e.toUpperCase()){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":return 512;default:throw new Error(`Unknown algorithm name '${e}'`)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),"length"in e){if("number"!=typeof e.length)throw new TypeError("length: Is not a Number");if(e.length<1)throw new RangeError("length: Number is out of range")}}checkImportParams(e){this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms)}}class DA extends kb{constructor(){super(...arguments),this.name="PBKDF2",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["deriveBits","deriveKey"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"salt"),!(e.salt instanceof ArrayBuffer||ArrayBuffer.isView(e.salt)))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(this.checkRequiredProperty(e,"iterations"),"number"!=typeof e.iterations)throw new TypeError("iterations: Is not a Number");if(e.iterations<1)throw new TypeError("iterations: Is less than 1")}checkImportKey(e,t,r,s,i,...n){if(super.checkImportKey(e,t,r,s,i,...n),s)throw new SyntaxError("extractable: Must be 'false'")}}class MA extends kb{constructor(){super(...arguments),this.name="HKDF",this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512"],this.usages=["deriveKey","deriveBits"]}checkAlgorithmParams(e){if(this.checkRequiredProperty(e,"hash"),this.checkHashAlgorithm(e.hash,this.hashAlgorithms),this.checkRequiredProperty(e,"salt"),!Tf.isBufferSource(e.salt))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'");if(this.checkRequiredProperty(e,"info"),!Tf.isBufferSource(e.info))throw new TypeError("salt: Is not of type '(ArrayBuffer or ArrayBufferView)'")}checkImportKey(e,t,r,s,i,...n){if(super.checkImportKey(e,t,r,s,i,...n),s)throw new SyntaxError("extractable: Must be 'false'")}}class PA extends kb{constructor(){super(...arguments),this.usages=[],this.defaultLength=0}digest(...e){return e[0]={length:this.defaultLength,...e[0]},super.digest.apply(this,e)}checkDigest(e,t){super.checkDigest(e,t);const r=e.length||0;if("number"!=typeof r)throw new TypeError("length: Is not a Number");if(r<0)throw new TypeError("length: Is negative")}}class LA extends PA{constructor(){super(...arguments),this.name="shake128",this.defaultLength=16}}class HA extends PA{constructor(){super(...arguments),this.name="shake256",this.defaultLength=32}}class KA{get[Symbol.toStringTag](){return"Crypto"}randomUUID(){const e=this.getRandomValues(new Uint8Array(16));e[6]=15&e[6]|64,e[8]=63&e[8]|128;const t=Kf.ToHex(e).toLowerCase();return`${t.substring(0,8)}-${t.substring(8,12)}-${t.substring(12,16)}-${t.substring(16,20)}-${t.substring(20)}`}}class VA{constructor(){this.items={}}get(e){return this.items[e.toLowerCase()]||null}set(e){this.items[e.name.toLowerCase()]=e}removeAt(e){const t=this.get(e.toLowerCase());return t&&delete this.items[e],t}has(e){return!!this.get(e)}get length(){return Object.keys(this.items).length}get algorithms(){const e=[];for(const t in this.items){const r=this.items[t];e.push(r.name)}return e.sort()}}const QA={jwk:["private","public","secret"],pkcs8:["private"],spki:["public"],raw:["secret","public"]},FA=["pkcs8","spki","raw"];class GA{constructor(){this.providers=new VA}static isHashedAlgorithm(e){return!!(e&&"object"==typeof e&&"name"in e&&"hash"in e)}get[Symbol.toStringTag](){return"SubtleCrypto"}async digest(...e){this.checkRequiredArguments(e,2,"digest");const[t,r,...s]=e,i=this.prepareAlgorithm(t),n=Tf.toArrayBuffer(r),o=this.getProvider(i.name);return await o.digest(i,n,...s)}async generateKey(...e){this.checkRequiredArguments(e,3,"generateKey");const[t,r,s,...i]=e,n=this.prepareAlgorithm(t),o=this.getProvider(n.name);return await o.generateKey({...n,name:o.name},r,s,...i)}async sign(...e){this.checkRequiredArguments(e,3,"sign");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=Tf.toArrayBuffer(s),a=this.getProvider(n.name);return await a.sign({...n,name:a.name},r,o,...i)}async verify(...e){this.checkRequiredArguments(e,4,"verify");const[t,r,s,i,...n]=e;this.checkCryptoKey(r);const o=this.prepareAlgorithm(t),a=Tf.toArrayBuffer(i),c=Tf.toArrayBuffer(s),l=this.getProvider(o.name);return await l.verify({...o,name:l.name},r,c,a,...n)}async encrypt(...e){this.checkRequiredArguments(e,3,"encrypt");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=Tf.toArrayBuffer(s),a=this.getProvider(n.name);return await a.encrypt({...n,name:a.name},r,o,{keyUsage:!0},...i)}async decrypt(...e){this.checkRequiredArguments(e,3,"decrypt");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=Tf.toArrayBuffer(s),a=this.getProvider(n.name);return await a.decrypt({...n,name:a.name},r,o,{keyUsage:!0},...i)}async deriveBits(...e){this.checkRequiredArguments(e,3,"deriveBits");const[t,r,s,...i]=e;this.checkCryptoKey(r);const n=this.prepareAlgorithm(t),o=this.getProvider(n.name);return await o.deriveBits({...n,name:o.name},r,s,{keyUsage:!0},...i)}async deriveKey(...e){this.checkRequiredArguments(e,5,"deriveKey");const[t,r,s,i,n,...o]=e,a=this.prepareAlgorithm(s);this.getProvider(a.name).checkDerivedKeyParams(a);const c=this.prepareAlgorithm(t),l=this.getProvider(c.name);l.checkCryptoKey(r,"deriveKey");const h=await l.deriveBits({...c,name:l.name},r,s.length||512,{keyUsage:!1},...o);return this.importKey("raw",h,s,i,n,...o)}async exportKey(...e){this.checkRequiredArguments(e,2,"exportKey");const[t,r,...s]=e;if(this.checkCryptoKey(r),!QA[t])throw new TypeError("Invalid keyFormat argument");if(!QA[t].includes(r.type))throw new DOMException("The key is not of the expected type");const i=this.getProvider(r.algorithm.name);return await i.exportKey(t,r,...s)}async importKey(...e){this.checkRequiredArguments(e,5,"importKey");const[t,r,s,i,n,...o]=e,a=this.prepareAlgorithm(s),c=this.getProvider(a.name);if("jwk"===t){if("object"!=typeof r||!r.kty)throw new TypeError("Key data must be an object for JWK import")}else{if(!FA.includes(t))throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView or JsonWebKey)'");if(!Tf.isBufferSource(r))throw new TypeError("Key data must be a BufferSource for non-JWK formats")}return c.importKey(t,r,{...a,name:c.name},i,n,...o)}async wrapKey(e,t,r,s,...i){let n=await this.exportKey(e,t,...i);if("jwk"===e){const e=JSON.stringify(n);n=Kf.FromUtf8String(e)}const o=this.prepareAlgorithm(s),a=Tf.toArrayBuffer(n),c=this.getProvider(o.name);return c.encrypt({...o,name:c.name},r,a,{keyUsage:!1},...i)}async unwrapKey(e,t,r,s,i,n,o,...a){const c=this.prepareAlgorithm(s),l=Tf.toArrayBuffer(t),h=this.getProvider(c.name);let u=await h.decrypt({...c,name:h.name},r,l,{keyUsage:!1},...a);if("jwk"===e)try{u=JSON.parse(Kf.ToUtf8String(u))}catch(e){const t=new TypeError("wrappedKey: Is not a JSON");throw t.internal=e,t}return this.importKey(e,u,i,n,o,...a)}checkRequiredArguments(e,t,r){if(e.length<t)throw new TypeError(`Failed to execute '${r}' on 'SubtleCrypto': ${t} arguments required, but only ${e.length} present`)}prepareAlgorithm(e){if("string"==typeof e)return{name:e};if(GA.isHashedAlgorithm(e)){const t={...e};return t.hash=this.prepareAlgorithm(e.hash),t}return{...e}}getProvider(e){const t=this.providers.get(e);if(!t)throw new vb("Unrecognized name");return t}checkCryptoKey(e){if(!(e instanceof Qb))throw new TypeError("Key is not of type 'CryptoKey'")}}const $A=t(import.meta.url)("buffer"),jA=t(import.meta.url)("crypto");var qA=o.n(jA);const zA=t(import.meta.url)("process"),WA={fromJSON:e=>$A.Buffer.from(Kf.FromBase64Url(e)),toJSON:e=>Kf.ToBase64Url(e)};class JA extends Qb{constructor(){super(...arguments),this.data=$A.Buffer.alloc(0),this.algorithm={name:""},this.extractable=!1,this.type="secret",this.usages=[],this.kty="oct",this.alg=""}}Xm([Ab({name:"ext",type:ob.Boolean,optional:!0})],JA.prototype,"extractable",void 0),Xm([Ab({name:"key_ops",type:ob.String,repeated:!0,optional:!0})],JA.prototype,"usages",void 0),Xm([Ab({type:ob.String})],JA.prototype,"kty",void 0),Xm([Ab({type:ob.String,optional:!0})],JA.prototype,"alg",void 0);class YA extends JA{constructor(){super(...arguments),this.kty="oct",this.type="secret"}}class ZA extends JA{}class XA extends YA{get alg(){switch(this.algorithm.name.toUpperCase()){case"AES-CBC":return`A${this.algorithm.length}CBC`;case"AES-CTR":return`A${this.algorithm.length}CTR`;case"AES-GCM":return`A${this.algorithm.length}GCM`;case"AES-KW":return`A${this.algorithm.length}KW`;case"AES-CMAC":return`A${this.algorithm.length}CMAC`;case"AES-ECB":return`A${this.algorithm.length}ECB`;default:throw new vb("Unsupported algorithm name")}}set alg(e){}}Xm([Ab({name:"k",converter:WA})],XA.prototype,"data",void 0);class eI{static async generateKey(e,t,r){const s=new XA;return s.algorithm=e,s.extractable=t,s.usages=r,s.data=qA().randomBytes(e.length>>3),s}static async exportKey(e,t){if(!(t instanceof XA))throw new Error("key: Is not AesCryptoKey");switch(e.toLowerCase()){case"jwk":return mb.toJSON(t);case"raw":return new Uint8Array(t.data).buffer;default:throw new Sb("format: Must be 'jwk' or 'raw'")}}static async importKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=bb.fromJSON(t,{targetSchema:XA});break;case"raw":n=new XA,n.data=$A.Buffer.from(t);break;default:throw new Sb("format: Must be 'jwk' or 'raw'")}switch(n.algorithm=r,n.algorithm.length=n.data.length<<3,n.extractable=s,n.usages=i,n.algorithm.length){case 128:case 192:case 256:break;default:throw new Sb("keyData: Is wrong key length")}return n}static async encrypt(e,t,r){switch(e.name.toUpperCase()){case"AES-CBC":return this.encryptAesCBC(e,t,$A.Buffer.from(r));case"AES-CTR":return this.encryptAesCTR(e,t,$A.Buffer.from(r));case"AES-GCM":return this.encryptAesGCM(e,t,$A.Buffer.from(r));case"AES-KW":return this.encryptAesKW(e,t,$A.Buffer.from(r));case"AES-ECB":return this.encryptAesECB(e,t,$A.Buffer.from(r));default:throw new Sb("algorithm: Is not recognized")}}static async decrypt(e,t,r){if(!(t instanceof XA))throw new Error("key: Is not AesCryptoKey");switch(e.name.toUpperCase()){case"AES-CBC":return this.decryptAesCBC(e,t,$A.Buffer.from(r));case"AES-CTR":return this.decryptAesCTR(e,t,$A.Buffer.from(r));case"AES-GCM":return this.decryptAesGCM(e,t,$A.Buffer.from(r));case"AES-KW":return this.decryptAesKW(e,t,$A.Buffer.from(r));case"AES-ECB":return this.decryptAesECB(e,t,$A.Buffer.from(r));default:throw new Sb("algorithm: Is not recognized")}}static async encryptAesCBC(e,t,r){const s=qA().createCipheriv(`aes-${t.algorithm.length}-cbc`,t.data,new Uint8Array(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesCBC(e,t,r){const s=qA().createDecipheriv(`aes-${t.algorithm.length}-cbc`,t.data,new Uint8Array(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesCTR(e,t,r){const s=qA().createCipheriv(`aes-${t.algorithm.length}-ctr`,t.data,$A.Buffer.from(e.counter));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesCTR(e,t,r){const s=qA().createDecipheriv(`aes-${t.algorithm.length}-ctr`,t.data,new Uint8Array(e.counter));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesGCM(e,t,r){const s=qA().createCipheriv(`aes-${t.algorithm.length}-gcm`,t.data,$A.Buffer.from(e.iv),{authTagLength:(e.tagLength||128)>>3});e.additionalData&&s.setAAD($A.Buffer.from(e.additionalData));let i=s.update(r);return i=$A.Buffer.concat([i,s.final(),s.getAuthTag()]),new Uint8Array(i).buffer}static async decryptAesGCM(e,t,r){const s=(e.tagLength||128)>>3,i=qA().createDecipheriv(`aes-${t.algorithm.length}-gcm`,t.data,new Uint8Array(e.iv),{authTagLength:s}),n=r.slice(0,r.length-s),o=r.slice(r.length-s);e.additionalData&&i.setAAD($A.Buffer.from(e.additionalData)),i.setAuthTag(o);let a=i.update(n);return a=$A.Buffer.concat([a,i.final()]),new Uint8Array(a).buffer}static async encryptAesKW(e,t,r){const s=qA().createCipheriv(`id-aes${t.algorithm.length}-wrap`,t.data,this.AES_KW_IV);let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesKW(e,t,r){const s=qA().createDecipheriv(`id-aes${t.algorithm.length}-wrap`,t.data,this.AES_KW_IV);let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptAesECB(e,t,r){const s=qA().createCipheriv(`aes-${t.algorithm.length}-ecb`,t.data,new Uint8Array(0));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptAesECB(e,t,r){const s=qA().createDecipheriv(`aes-${t.algorithm.length}-ecb`,t.data,new Uint8Array(0));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}}eI.AES_KW_IV=$A.Buffer.from("A6A6A6A6A6A6A6A6","hex");const tI=new WeakMap;function rI(e){const t=tI.get(e);if(!t)throw new Sb("Cannot get CryptoKey from secure storage");return t}function sI(e){const t=Qb.create(e.algorithm,e.type,e.extractable,e.usages);return Object.freeze(t),tI.set(t,e),t}class iI extends Bb{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return eI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return eI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}const nI=$A.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),oI=$A.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135]),aI=16;function cI(e){const t=$A.Buffer.alloc(e.length),r=e.length-1;for(let s=0;s<r;s++)t[s]=e[s]<<1,128&e[s+1]&&(t[s]+=1);return t[r]=e[r]<<1,t}function lI(e,t){const r=Math.min(e.length,t.length),s=$A.Buffer.alloc(r);for(let i=0;i<r;i++)s[i]=e[i]^t[i];return s}function hI(e,t){const r=qA().createCipheriv("aes"+(e.length<<3),e,nI),s=r.update(t);return r.final(),s}function uI(e,t){const r=$A.Buffer.alloc(aI),s=t*aI,i=s+aI;return e.copy(r,0,s,i),r}class dI extends _b{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onSign(e,t,r){const s=function(e,t){const r=function(e){const t=hI(e,nI);let r=cI(t);128&t[0]&&(r=lI(r,oI));let s=cI(r);return 128&r[0]&&(s=lI(s,oI)),{subkey1:r,subkey2:s}}(e);let s,i,n=Math.ceil(t.length/aI);0===n?(n=1,s=!1):s=t.length%aI===0;const o=n-1;i=s?lI(uI(t,o),r.subkey1):lI(function(e,t){const r=$A.Buffer.alloc(aI),s=t*aI,i=e.length;return r.fill(0),e.copy(r,0,s,i),r[i-s]=128,r}(t,o),r.subkey2);let a,c=nI;for(let r=0;r<o;r++)a=lI(c,uI(t,r)),c=hI(e,a);return a=lI(i,c),hI(e,a)}(rI(t).data,$A.Buffer.from(r));return new Uint8Array(s).buffer}async onVerify(e,t,r,s){const i=await this.sign(e,t,s);return 0===$A.Buffer.from(r).compare($A.Buffer.from(i))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}class gI extends Rb{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return eI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return eI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}class fI extends Ub{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return eI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return eI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}class pI extends Tb{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}async onEncrypt(e,t,r){return eI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return eI.decrypt(e,rI(t),new Uint8Array(r))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}class yI extends Ob{async onGenerateKey(e,t,r){return sI(await eI.generateKey({name:this.name,length:e.length},t,r))}async onEncrypt(e,t,r){return eI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return eI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return eI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await eI.importKey(e,t,{name:r.name},s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof XA))throw new TypeError("key: Is not a AesCryptoKey")}}class mI extends YA{get alg(){switch(this.algorithm.name.toUpperCase()){case"DES-CBC":return"DES-CBC";case"DES-EDE3-CBC":return"3DES-CBC";default:throw new vb("Unsupported algorithm name")}}set alg(e){}}Xm([Ab({name:"k",converter:WA})],mI.prototype,"data",void 0);class bI{static async generateKey(e,t,r){const s=new mI;return s.algorithm=e,s.extractable=t,s.usages=r,s.data=qA().randomBytes(e.length>>3),s}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return mb.toJSON(t);case"raw":return new Uint8Array(t.data).buffer;default:throw new Sb("format: Must be 'jwk' or 'raw'")}}static async importKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=bb.fromJSON(t,{targetSchema:mI});break;case"raw":n=new mI,n.data=$A.Buffer.from(t);break;default:throw new Sb("format: Must be 'jwk' or 'raw'")}return n.algorithm=r,n.extractable=s,n.usages=i,n}static async encrypt(e,t,r){switch(e.name.toUpperCase()){case"DES-CBC":return this.encryptDesCBC(e,t,$A.Buffer.from(r));case"DES-EDE3-CBC":return this.encryptDesEDE3CBC(e,t,$A.Buffer.from(r));default:throw new Sb("algorithm: Is not recognized")}}static async decrypt(e,t,r){if(!(t instanceof mI))throw new Error("key: Is not DesCryptoKey");switch(e.name.toUpperCase()){case"DES-CBC":return this.decryptDesCBC(e,t,$A.Buffer.from(r));case"DES-EDE3-CBC":return this.decryptDesEDE3CBC(e,t,$A.Buffer.from(r));default:throw new Sb("algorithm: Is not recognized")}}static async encryptDesCBC(e,t,r){const s=qA().createCipheriv("des-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptDesCBC(e,t,r){const s=qA().createDecipheriv("des-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async encryptDesEDE3CBC(e,t,r){const s=qA().createCipheriv("des-ede3-cbc",t.data,$A.Buffer.from(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}static async decryptDesEDE3CBC(e,t,r){const s=qA().createDecipheriv("des-ede3-cbc",t.data,new Uint8Array(e.iv));let i=s.update(r);return i=$A.Buffer.concat([i,s.final()]),new Uint8Array(i).buffer}}class AI extends Nb{constructor(){super(...arguments),this.keySizeBits=64,this.ivSize=8,this.name="DES-CBC"}async onGenerateKey(e,t,r){return sI(await bI.generateKey({name:this.name,length:this.keySizeBits},t,r))}async onEncrypt(e,t,r){return bI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return bI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return bI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){const n=await bI.importKey(e,t,{name:this.name,length:this.keySizeBits},s,i);if(n.data.length!==this.keySizeBits>>3)throw new Sb("keyData: Wrong key size");return sI(n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof mI))throw new TypeError("key: Is not a DesCryptoKey")}}class II extends Nb{constructor(){super(...arguments),this.keySizeBits=192,this.ivSize=8,this.name="DES-EDE3-CBC"}async onGenerateKey(e,t,r){return sI(await bI.generateKey({name:this.name,length:this.keySizeBits},t,r))}async onEncrypt(e,t,r){return bI.encrypt(e,rI(t),new Uint8Array(r))}async onDecrypt(e,t,r){return bI.decrypt(e,rI(t),new Uint8Array(r))}async onExportKey(e,t){return bI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){const n=await bI.importKey(e,t,{name:this.name,length:this.keySizeBits},s,i);if(n.data.length!==this.keySizeBits>>3)throw new Sb("keyData: Wrong key size");return sI(n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof mI))throw new TypeError("key: Is not a DesCryptoKey")}}function vI(e){switch(e.name.toUpperCase()){case"RSA-OAEP":{const t=/(\d+)$/.exec(e.hash.name)[1];return"RSA-OAEP"+("1"!==t?`-${t}`:"")}case"RSASSA-PKCS1-V1_5":return`RS${/(\d+)$/.exec(e.hash.name)[1]}`;case"RSA-PSS":return`PS${/(\d+)$/.exec(e.hash.name)[1]}`;case"RSA-PKCS1":return"RS1";default:throw new Sb("algorithm: Is not recognized")}}class wI extends ZA{constructor(){super(...arguments),this.type="private"}getKey(){const e=Wm.parse(this.data,RA.PrivateKeyInfo);return Wm.parse(e.privateKey,RA.RsaPrivateKey)}toJSON(){const e=this.getKey(),t={kty:"RSA",alg:vI(this.algorithm),key_ops:this.usages,ext:this.extractable};return Object.assign(t,mb.toJSON(e))}fromJSON(e){const t=bb.fromJSON(e,{targetSchema:RA.RsaPrivateKey}),r=new RA.PrivateKeyInfo;r.privateKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",r.privateKeyAlgorithm.parameters=null,r.privateKey=Jm.serialize(t),this.data=$A.Buffer.from(Jm.serialize(r))}}class SI extends ZA{constructor(){super(...arguments),this.type="public"}getKey(){const e=Wm.parse(this.data,RA.PublicKeyInfo);return Wm.parse(e.publicKey,RA.RsaPublicKey)}toJSON(){const e=this.getKey(),t={kty:"RSA",alg:vI(this.algorithm),key_ops:this.usages,ext:this.extractable};return Object.assign(t,mb.toJSON(e))}fromJSON(e){const t=bb.fromJSON(e,{targetSchema:RA.RsaPublicKey}),r=new RA.PublicKeyInfo;r.publicKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",r.publicKeyAlgorithm.parameters=null,r.publicKey=Jm.serialize(t),this.data=$A.Buffer.from(Jm.serialize(r))}}class EI{static async generateKey(e,t,r){const s=new wI;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new SI;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=$A.Buffer.concat([$A.Buffer.alloc(4-e.publicExponent.byteLength,0),$A.Buffer.from(e.publicExponent)]).readInt32BE(0),o=qA().generateKeyPairSync("rsa",{modulusLength:e.modulusLength,publicExponent:n,publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=o.privateKey,i.data=o.publicKey,{privateKey:s,publicKey:i}}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return mb.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;default:throw new Sb("format: Must be 'jwk', 'pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":if(t.d){const e=bb.fromJSON(t,{targetSchema:RA.RsaPrivateKey});return this.importPrivateKey(e,r,s,i)}{const e=bb.fromJSON(t,{targetSchema:RA.RsaPublicKey});return this.importPublicKey(e,r,s,i)}case"spki":{const e=Wm.parse(new Uint8Array(t),RA.PublicKeyInfo),n=Wm.parse(e.publicKey,RA.RsaPublicKey);return this.importPublicKey(n,r,s,i)}case"pkcs8":{const e=Wm.parse(new Uint8Array(t),RA.PrivateKeyInfo),n=Wm.parse(e.privateKey,RA.RsaPrivateKey);return this.importPrivateKey(n,r,s,i)}default:throw new Sb("format: Must be 'jwk', 'pkcs8' or 'spki'")}}static async sign(e,t,r){switch(e.name.toUpperCase()){case"RSA-PSS":case"RSASSA-PKCS1-V1_5":return this.signRsa(e,t,r);default:throw new Sb("algorithm: Is not recognized")}}static async verify(e,t,r,s){switch(e.name.toUpperCase()){case"RSA-PSS":case"RSASSA-PKCS1-V1_5":return this.verifySSA(e,t,s,r);default:throw new Sb("algorithm: Is not recognized")}}static async encrypt(e,t,r){if("RSA-OAEP"===e.name.toUpperCase())return this.encryptOAEP(e,t,r);throw new Sb("algorithm: Is not recognized")}static async decrypt(e,t,r){if("RSA-OAEP"===e.name.toUpperCase())return this.decryptOAEP(e,t,r);throw new Sb("algorithm: Is not recognized")}static importPrivateKey(e,t,r,s){const i=new RA.PrivateKeyInfo;i.privateKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",i.privateKeyAlgorithm.parameters=null,i.privateKey=Jm.serialize(e);const n=new wI;return n.data=$A.Buffer.from(Jm.serialize(i)),n.algorithm=Object.assign({},t),n.algorithm.publicExponent=new Uint8Array(e.publicExponent),n.algorithm.modulusLength=e.modulus.byteLength<<3,n.extractable=r,n.usages=s,n}static importPublicKey(e,t,r,s){const i=new RA.PublicKeyInfo;i.publicKeyAlgorithm.algorithm="1.2.840.113549.1.1.1",i.publicKeyAlgorithm.parameters=null,i.publicKey=Jm.serialize(e);const n=new SI;return n.data=$A.Buffer.from(Jm.serialize(i)),n.algorithm=Object.assign({},t),n.algorithm.publicExponent=new Uint8Array(e.publicExponent),n.algorithm.modulusLength=e.modulus.byteLength<<3,n.extractable=r,n.usages=s,n}static getCryptoAlgorithm(e){switch(e.hash.name.toUpperCase()){case"SHA-1":return"RSA-SHA1";case"SHA-256":return"RSA-SHA256";case"SHA-384":return"RSA-SHA384";case"SHA-512":return"RSA-SHA512";case"SHA3-256":return"RSA-SHA3-256";case"SHA3-384":return"RSA-SHA3-384";case"SHA3-512":return"RSA-SHA3-512";default:throw new Sb("algorithm.hash: Is not recognized")}}static signRsa(e,t,r){const s=this.getCryptoAlgorithm(t.algorithm),i=qA().createSign(s);i.update($A.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const n={key:t.pem};"RSA-PSS"===e.name.toUpperCase()&&(n.padding=qA().constants.RSA_PKCS1_PSS_PADDING,n.saltLength=e.saltLength);const o=i.sign(n);return new Uint8Array(o).buffer}static verifySSA(e,t,r,s){const i=this.getCryptoAlgorithm(t.algorithm),n=qA().createVerify(i);n.update($A.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const o={key:t.pem};return"RSA-PSS"===e.name.toUpperCase()&&(o.padding=qA().constants.RSA_PKCS1_PSS_PADDING,o.saltLength=e.saltLength),n.verify(o,s)}static encryptOAEP(e,t,r){const s={key:`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`,padding:qA().constants.RSA_PKCS1_OAEP_PADDING};return e.label,new Uint8Array(qA().publicEncrypt(s,r)).buffer}static decryptOAEP(e,t,r){const s={key:`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`,padding:qA().constants.RSA_PKCS1_OAEP_PADDING};return e.label,new Uint8Array(qA().privateDecrypt(s,r)).buffer}}EI.publicKeyUsages=["verify","encrypt","wrapKey"],EI.privateKeyUsages=["sign","decrypt","unwrapKey"];class CI extends Mb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await EI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onSign(e,t,r){return EI.sign(e,rI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return EI.verify(e,rI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return EI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await EI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof wI||r instanceof SI))throw new TypeError("key: Is not RSA CryptoKey")}}class kI extends Pb{constructor(){super(...arguments),this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await EI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onSign(e,t,r){return EI.sign(e,rI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return EI.verify(e,rI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return EI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await EI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof wI||r instanceof SI))throw new TypeError("key: Is not RSA CryptoKey")}}class xI{static size(e){switch(e.name.toUpperCase()){case"SHA-1":return 160;case"SHA-256":case"SHA3-256":return 256;case"SHA-384":case"SHA3-384":return 384;case"SHA-512":case"SHA3-512":return 512;default:throw new Error("Unrecognized name")}}static getAlgorithmName(e){switch(e.name.toUpperCase()){case"SHA-1":return"sha1";case"SHA-256":return"sha256";case"SHA-384":return"sha384";case"SHA-512":return"sha512";case"SHA3-256":return"sha3-256";case"SHA3-384":return"sha3-384";case"SHA3-512":return"sha3-512";default:throw new Error("Unrecognized name")}}static digest(e,t){const r=this.getAlgorithmName(e),s=qA().createHash(r).update($A.Buffer.from(t)).digest();return new Uint8Array(s).buffer}}class BI extends Lb{async onGenerateKey(e,t,r){const s=await EI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onEncrypt(e,t,r){const s=rI(t),i=new Uint8Array(r),n=Math.ceil(s.algorithm.modulusLength>>3),o=xI.size(s.algorithm.hash)>>3,a=i.byteLength,c=n-a-2*o-2;if(a>n-2*o-2)throw new Error("Data too large");const l=new Uint8Array(n),h=l.subarray(1,o+1),u=l.subarray(o+1);u.set(i,o+c+1);const d=qA().createHash(s.algorithm.hash.name.replace("-","")).update(Tf.toUint8Array(e.label||new Uint8Array(0))).digest();u.set(d,0),u[o+c]=1,qA().randomFillSync(h);const g=this.mgf1(s.algorithm.hash,h,u.length);for(let e=0;e<u.length;e++)u[e]^=g[e];const f=this.mgf1(s.algorithm.hash,u,h.length);for(let e=0;e<h.length;e++)h[e]^=f[e];s.pem||(s.pem=`-----BEGIN PUBLIC KEY-----\n${s.data.toString("base64")}\n-----END PUBLIC KEY-----`);const p=qA().publicEncrypt({key:s.pem,padding:qA().constants.RSA_NO_PADDING},$A.Buffer.from(l));return new Uint8Array(p).buffer}async onDecrypt(e,t,r){const s=rI(t),i=Math.ceil(s.algorithm.modulusLength>>3),n=xI.size(s.algorithm.hash)>>3;if(r.byteLength!==i)throw new Error("Bad data");s.pem||(s.pem=`-----BEGIN PRIVATE KEY-----\n${s.data.toString("base64")}\n-----END PRIVATE KEY-----`);let o=qA().privateDecrypt({key:s.pem,padding:qA().constants.RSA_NO_PADDING},$A.Buffer.from(r));const a=o[0],c=o.subarray(1,n+1),l=o.subarray(n+1);if(0!==a)throw new Error("Decryption failed");const h=this.mgf1(s.algorithm.hash,l,c.length);for(let e=0;e<c.length;e++)c[e]^=h[e];const u=this.mgf1(s.algorithm.hash,c,l.length);for(let e=0;e<l.length;e++)l[e]^=u[e];const d=qA().createHash(s.algorithm.hash.name.replace("-","")).update(Tf.toUint8Array(e.label||new Uint8Array(0))).digest();for(let e=0;e<n;e++)if(d[e]!==l[e])throw new Error("Decryption failed");let g=n;for(;g<l.length;g++){const e=l[g];if(1===e)break;if(0!==e)throw new Error("Decryption failed")}if(g===l.length)throw new Error("Decryption failed");return o=l.subarray(g+1),new Uint8Array(o).buffer}async onExportKey(e,t){return EI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await EI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof wI||r instanceof SI))throw new TypeError("key: Is not RSA CryptoKey")}mgf1(e,t,r=0){const s=xI.size(e)>>3,i=new Uint8Array(r),n=new Uint8Array(4),o=Math.ceil(r/s);for(let r=0;r<o;r++){n[0]=r>>>24,n[1]=r>>>16&255,n[2]=r>>>8&255,n[3]=255&r;const o=i.subarray(r*s);let a=qA().createHash(e.name.replace("-","")).update(t).update(n).digest();a.length>o.length&&(a=a.subarray(0,o.length)),o.set(a)}return i}}class _I extends kb{constructor(){super(...arguments),this.name="RSAES-PKCS1-v1_5",this.usages={publicKey:["encrypt","wrapKey"],privateKey:["decrypt","unwrapKey"]}}async onGenerateKey(e,t,r){const s=await EI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}checkGenerateKeyParams(e){if(this.checkRequiredProperty(e,"publicExponent"),!(e.publicExponent&&e.publicExponent instanceof Uint8Array))throw new TypeError("publicExponent: Missing or not a Uint8Array");const t=Kf.ToBase64(e.publicExponent);if("Aw=="!==t&&"AQAB"!==t)throw new TypeError("publicExponent: Must be [3] or [1,0,1]");switch(this.checkRequiredProperty(e,"modulusLength"),e.modulusLength){case 1024:case 2048:case 4096:break;default:throw new TypeError("modulusLength: Must be 1024, 2048, or 4096")}}async onEncrypt(e,t,r){const s=this.toCryptoOptions(t),i=qA().publicEncrypt(s,new Uint8Array(r));return new Uint8Array(i).buffer}async onDecrypt(e,t,r){const s=this.toCryptoOptions(t),i=qA().privateDecrypt(s,new Uint8Array(r));return new Uint8Array(i).buffer}async onExportKey(e,t){return EI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await EI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof wI||r instanceof SI))throw new TypeError("key: Is not RSA CryptoKey")}toCryptoOptions(e){const t=e.type.toUpperCase();return{key:`-----BEGIN ${t} KEY-----\n${rI(e).data.toString("base64")}\n-----END ${t} KEY-----`,padding:qA().constants.RSA_PKCS1_PADDING}}}const RI={"1.2.840.10045.3.1.7":"P-256","P-256":"1.2.840.10045.3.1.7","1.3.132.0.34":"P-384","P-384":"1.3.132.0.34","1.3.132.0.35":"P-521","P-521":"1.3.132.0.35","1.3.132.0.10":"K-256","K-256":"1.3.132.0.10",brainpoolP160r1:"1.3.36.3.3.2.8.1.1.1","1.3.36.3.3.2.8.1.1.1":"brainpoolP160r1",brainpoolP160t1:"1.3.36.3.3.2.8.1.1.2","1.3.36.3.3.2.8.1.1.2":"brainpoolP160t1",brainpoolP192r1:"1.3.36.3.3.2.8.1.1.3","1.3.36.3.3.2.8.1.1.3":"brainpoolP192r1",brainpoolP192t1:"1.3.36.3.3.2.8.1.1.4","1.3.36.3.3.2.8.1.1.4":"brainpoolP192t1",brainpoolP224r1:"1.3.36.3.3.2.8.1.1.5","1.3.36.3.3.2.8.1.1.5":"brainpoolP224r1",brainpoolP224t1:"1.3.36.3.3.2.8.1.1.6","1.3.36.3.3.2.8.1.1.6":"brainpoolP224t1",brainpoolP256r1:"1.3.36.3.3.2.8.1.1.7","1.3.36.3.3.2.8.1.1.7":"brainpoolP256r1",brainpoolP256t1:"1.3.36.3.3.2.8.1.1.8","1.3.36.3.3.2.8.1.1.8":"brainpoolP256t1",brainpoolP320r1:"1.3.36.3.3.2.8.1.1.9","1.3.36.3.3.2.8.1.1.9":"brainpoolP320r1",brainpoolP320t1:"1.3.36.3.3.2.8.1.1.10","1.3.36.3.3.2.8.1.1.10":"brainpoolP320t1",brainpoolP384r1:"1.3.36.3.3.2.8.1.1.11","1.3.36.3.3.2.8.1.1.11":"brainpoolP384r1",brainpoolP384t1:"1.3.36.3.3.2.8.1.1.12","1.3.36.3.3.2.8.1.1.12":"brainpoolP384t1",brainpoolP512r1:"1.3.36.3.3.2.8.1.1.13","1.3.36.3.3.2.8.1.1.13":"brainpoolP512r1",brainpoolP512t1:"1.3.36.3.3.2.8.1.1.14","1.3.36.3.3.2.8.1.1.14":"brainpoolP512t1"};function OI(e){const t=RI[e];if(!t)throw new Sb(`Cannot convert WebCrypto named curve '${e}' to OID`);return t}class UI extends ZA{constructor(){super(...arguments),this.type="private"}getKey(){const e=Wm.parse(this.data,RA.PrivateKeyInfo);return Wm.parse(e.privateKey,RA.EcPrivateKey)}toJSON(){const e=this.getKey(),t={kty:"EC",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,mb.toJSON(e))}fromJSON(e){if(!e.crv)throw new Sb("Cannot get named curve from JWK. Property 'crv' is required");const t=new RA.PrivateKeyInfo;t.privateKeyAlgorithm.algorithm="1.2.840.10045.2.1",t.privateKeyAlgorithm.parameters=Jm.serialize(new RA.ObjectIdentifier(OI(e.crv)));const r=bb.fromJSON(e,{targetSchema:RA.EcPrivateKey});return t.privateKey=Jm.serialize(r),this.data=$A.Buffer.from(Jm.serialize(t)),this}}class TI extends ZA{constructor(){super(...arguments),this.type="public"}getKey(){const e=Wm.parse(this.data,RA.PublicKeyInfo);return new RA.EcPublicKey(e.publicKey)}toJSON(){const e=this.getKey(),t={kty:"EC",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,mb.toJSON(e))}fromJSON(e){if(!e.crv)throw new Sb("Cannot get named curve from JWK. Property 'crv' is required");const t=bb.fromJSON(e,{targetSchema:RA.EcPublicKey}),r=new RA.PublicKeyInfo;return r.publicKeyAlgorithm.algorithm="1.2.840.10045.2.1",r.publicKeyAlgorithm.parameters=Jm.serialize(new RA.ObjectIdentifier(OI(e.crv))),r.publicKey=Jm.toASN(t).valueHex,this.data=$A.Buffer.from(Jm.serialize(r)),this}}class NI extends kb{constructor(){super(...arguments),this.name="SHA-1",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class DI extends kb{constructor(){super(...arguments),this.name="SHA-256",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class MI extends kb{constructor(){super(...arguments),this.name="SHA-384",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class PI extends kb{constructor(){super(...arguments),this.name="SHA-512",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class LI extends kb{constructor(){super(...arguments),this.name="SHA3-256",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class HI extends kb{constructor(){super(...arguments),this.name="SHA3-384",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class KI extends kb{constructor(){super(...arguments),this.name="SHA3-512",this.usages=[]}async onDigest(e,t){return xI.digest(e,t)}}class VI{static async generateKey(e,t,r){const s=new UI;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new TI;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=qA().generateKeyPairSync("ec",{namedCurve:this.getOpenSSLNamedCurve(e.namedCurve),publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=n.privateKey,i.data=n.publicKey,{privateKey:s,publicKey:i}}static async sign(e,t,r){const s=xI.getAlgorithmName(e.hash),i=qA().createSign(s);i.update($A.Buffer.from(r)),t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const n={key:t.pem},o=i.sign(n),a=Wm.parse(o,RA.EcDsaSignature);return iA.encodeSignature(a,OA.get(t.algorithm.namedCurve).size).buffer}static async verify(e,t,r,s){const i=xI.getAlgorithmName(e.hash),n=qA().createVerify(i);n.update($A.Buffer.from(s)),t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const o={key:t.pem},a=new RA.EcDsaSignature,c=OA.get(t.algorithm.namedCurve),l=iA.decodeSignature(r,c.size);a.r=Tf.toArrayBuffer(l.r),a.s=Tf.toArrayBuffer(l.s);const h=$A.Buffer.from(Jm.serialize(a));return n.verify(o,h)}static async deriveBits(e,t,r){const s=this.getOpenSSLNamedCurve(t.algorithm.namedCurve),i=qA().createECDH(s),n=Wm.parse(t.data,RA.PrivateKeyInfo),o=Wm.parse(n.privateKey,RA.EcPrivateKey);i.setPrivateKey($A.Buffer.from(o.privateKey));const a=Wm.parse(e.public.data,RA.PublicKeyInfo),c=i.computeSecret($A.Buffer.from(a.publicKey));return null===r?c:new Uint8Array(c).buffer.slice(0,r>>3)}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return mb.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;case"raw":return Wm.parse(t.data,RA.PublicKeyInfo).publicKey;default:throw new Sb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":if(t.d){const e=bb.fromJSON(t,{targetSchema:RA.EcPrivateKey});return this.importPrivateKey(e,r,s,i)}{const e=bb.fromJSON(t,{targetSchema:RA.EcPublicKey});return this.importPublicKey(e,r,s,i)}case"raw":{const e=new RA.EcPublicKey(t);return this.importPublicKey(e,r,s,i)}case"spki":{const e=Wm.parse(new Uint8Array(t),RA.PublicKeyInfo),n=new RA.EcPublicKey(e.publicKey);return this.assertKeyParameters(e.publicKeyAlgorithm.parameters,r.namedCurve),this.importPublicKey(n,r,s,i)}case"pkcs8":{const e=Wm.parse(new Uint8Array(t),RA.PrivateKeyInfo),n=Wm.parse(e.privateKey,RA.EcPrivateKey);return this.assertKeyParameters(e.privateKeyAlgorithm.parameters,r.namedCurve),this.importPrivateKey(n,r,s,i)}default:throw new Sb("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'")}}static assertKeyParameters(e,t){if(!e)throw new Ib("Key info doesn't have required parameters");let r="";try{r=Wm.parse(e,RA.ObjectIdentifier).value}catch(e){throw new Ib("Cannot read key info parameters")}if(OI(t)!==r)throw new Ib("Key info parameter doesn't match to named curve")}static async importPrivateKey(e,t,r,s){const i=new RA.PrivateKeyInfo;i.privateKeyAlgorithm.algorithm="1.2.840.10045.2.1",i.privateKeyAlgorithm.parameters=Jm.serialize(new RA.ObjectIdentifier(OI(t.namedCurve))),i.privateKey=Jm.serialize(e);const n=new UI;return n.data=$A.Buffer.from(Jm.serialize(i)),n.algorithm=Object.assign({},t),n.extractable=r,n.usages=s,n}static async importPublicKey(e,t,r,s){const i=new RA.PublicKeyInfo;i.publicKeyAlgorithm.algorithm="1.2.840.10045.2.1";const n=OI(t.namedCurve);i.publicKeyAlgorithm.parameters=Jm.serialize(new RA.ObjectIdentifier(n)),i.publicKey=e.value;const o=new TI;return o.data=$A.Buffer.from(Jm.serialize(i)),o.algorithm=Object.assign({},t),o.extractable=r,o.usages=s,o}static getOpenSSLNamedCurve(e){switch(e.toUpperCase()){case"P-256":return"prime256v1";case"K-256":return"secp256k1";case"P-384":return"secp384r1";case"P-521":return"secp521r1";default:return e}}}VI.publicKeyUsages=["verify"],VI.privateKeyUsages=["sign","deriveKey","deriveBits"];class QI extends Kb{constructor(){super(...arguments),this.namedCurves=OA.names,this.hashAlgorithms=["SHA-1","SHA-256","SHA-384","SHA-512","shake128","shake256","SHA3-256","SHA3-384","SHA3-512"]}async onGenerateKey(e,t,r){const s=await VI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onSign(e,t,r){return VI.sign(e,rI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return VI.verify(e,rI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return VI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await VI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof UI||r instanceof TI))throw new TypeError("key: Is not EC CryptoKey")}}class FI extends Fb{constructor(){super(...arguments),this.namedCurves=OA.names}async onGenerateKey(e,t,r){const s=await VI.generateKey({...e,name:this.name},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onExportKey(e,t){return VI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await VI.importKey(e,t,{...r,name:this.name},s,i))}checkCryptoKey(e,t){super.checkCryptoKey(e,t);const r=rI(e);if(!(r instanceof UI||r instanceof TI))throw new TypeError("key: Is not EC CryptoKey")}async onDeriveBits(e,t,r){return await VI.deriveBits({...e,public:rI(e.public)},rI(t),r)}}const GI={[RA.idEd448]:"Ed448",ed448:RA.idEd448,[RA.idX448]:"X448",x448:RA.idX448,[RA.idEd25519]:"Ed25519",ed25519:RA.idEd25519,[RA.idX25519]:"X25519",x25519:RA.idX25519};function $I(e){const t=GI[e.toLowerCase()];if(!t)throw new Sb(`Cannot convert WebCrypto named curve '${e}' to OID`);return t}class jI extends ZA{constructor(){super(...arguments),this.type="private"}getKey(){const e=Wm.parse(this.data,RA.PrivateKeyInfo);return Wm.parse(e.privateKey,RA.CurvePrivateKey)}toJSON(){const e=this.getKey(),t={kty:"OKP",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,mb.toJSON(e))}fromJSON(e){if(!e.crv)throw new Sb("Cannot get named curve from JWK. Property 'crv' is required");const t=new RA.PrivateKeyInfo;t.privateKeyAlgorithm.algorithm=$I(e.crv);const r=bb.fromJSON(e,{targetSchema:RA.CurvePrivateKey});return t.privateKey=Jm.serialize(r),this.data=$A.Buffer.from(Jm.serialize(t)),this}}class qI extends ZA{constructor(){super(...arguments),this.type="public"}getKey(){return Wm.parse(this.data,RA.PublicKeyInfo).publicKey}toJSON(){const e=this.getKey(),t={kty:"OKP",crv:this.algorithm.namedCurve,key_ops:this.usages,ext:this.extractable};return Object.assign(t,{x:Kf.ToBase64Url(e)})}fromJSON(e){if(!e.crv)throw new Sb("Cannot get named curve from JWK. Property 'crv' is required");if(!e.x)throw new Sb("Cannot get property from JWK. Property 'x' is required");const t=new RA.PublicKeyInfo;return t.publicKeyAlgorithm.algorithm=$I(e.crv),t.publicKey=Kf.FromBase64Url(e.x),this.data=$A.Buffer.from(Jm.serialize(t)),this}}class zI{static async generateKey(e,t,r){const s=new jI;s.algorithm=e,s.extractable=t,s.usages=r.filter(e=>-1!==this.privateKeyUsages.indexOf(e));const i=new qI;i.algorithm=e,i.extractable=!0,i.usages=r.filter(e=>-1!==this.publicKeyUsages.indexOf(e));const n=e.namedCurve.toLowerCase(),o=qA().generateKeyPairSync(n,{publicKeyEncoding:{format:"der",type:"spki"},privateKeyEncoding:{format:"der",type:"pkcs8"}});return s.data=o.privateKey,i.data=o.publicKey,{privateKey:s,publicKey:i}}static async sign(e,t,r){t.pem||(t.pem=`-----BEGIN PRIVATE KEY-----\n${t.data.toString("base64")}\n-----END PRIVATE KEY-----`);const s={key:t.pem},i=qA().sign(null,$A.Buffer.from(r),s);return Tf.toArrayBuffer(i)}static async verify(e,t,r,s){t.pem||(t.pem=`-----BEGIN PUBLIC KEY-----\n${t.data.toString("base64")}\n-----END PUBLIC KEY-----`);const i={key:t.pem};return qA().verify(null,$A.Buffer.from(s),i,$A.Buffer.from(r))}static async deriveBits(e,t,r){const s=qA().createPublicKey({key:e.public.data,format:"der",type:"spki"}),i=qA().createPrivateKey({key:t.data,format:"der",type:"pkcs8"}),n=qA().diffieHellman({publicKey:s,privateKey:i});return new Uint8Array(n).buffer.slice(0,r>>3)}static async exportKey(e,t){switch(e.toLowerCase()){case"jwk":return mb.toJSON(t);case"pkcs8":case"spki":return new Uint8Array(t.data).buffer;case"raw":return Wm.parse(t.data,RA.PublicKeyInfo).publicKey;default:throw new Sb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'")}}static async importKey(e,t,r,s,i){switch(e.toLowerCase()){case"jwk":{const e=t;if(e.d){const e=bb.fromJSON(t,{targetSchema:RA.CurvePrivateKey});return this.importPrivateKey(e,r,s,i)}if(!e.x)throw new TypeError("keyData: Cannot get required 'x' filed");return this.importPublicKey(Kf.FromBase64Url(e.x),r,s,i)}case"raw":return this.importPublicKey(t,r,s,i);case"spki":{const e=Wm.parse(new Uint8Array(t),RA.PublicKeyInfo);return this.importPublicKey(e.publicKey,r,s,i)}case"pkcs8":{const e=Wm.parse(new Uint8Array(t),RA.PrivateKeyInfo),n=Wm.parse(e.privateKey,RA.CurvePrivateKey);return this.importPrivateKey(n,r,s,i)}default:throw new Sb("format: Must be 'jwk', 'raw', 'pkcs8' or 'spki'")}}static importPrivateKey(e,t,r,s){const i=new jI;return i.fromJSON({crv:t.namedCurve,d:Kf.ToBase64Url(e.d)}),i.algorithm=Object.assign({},t),i.extractable=r,i.usages=s,i}static async importPublicKey(e,t,r,s){const i=new qI;return i.fromJSON({crv:t.namedCurve,x:Kf.ToBase64Url(e)}),i.algorithm=Object.assign({},t),i.extractable=r,i.usages=s,i}}zI.publicKeyUsages=["verify"],zI.privateKeyUsages=["sign","deriveKey","deriveBits"];class WI extends $b{async onGenerateKey(e,t,r){const s=await zI.generateKey({name:this.name,namedCurve:e.namedCurve.replace(/^ed/i,"Ed")},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onSign(e,t,r){return zI.sign(e,rI(t),new Uint8Array(r))}async onVerify(e,t,r,s){return zI.verify(e,rI(t),new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){return zI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await zI.importKey(e,t,{...r,name:this.name},s,i))}}class JI extends Gb{async onGenerateKey(e,t,r){const s=await zI.generateKey({name:this.name,namedCurve:e.namedCurve.toUpperCase()},t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onDeriveBits(e,t,r){return await zI.deriveBits({...e,public:rI(e.public)},rI(t),r)}async onExportKey(e,t){return zI.exportKey(e,rI(t))}async onImportKey(e,t,r,s,i){return sI(await zI.importKey(e,t,{...r,name:this.name},s,i))}}class YI extends JA{constructor(e,t,r,s){super(),this.algorithm=e,this.extractable=t,this.usages=r,this.data=Buffer.from(s)}toJWK(){return{kty:"OKP",crv:this.algorithm.name,key_ops:this.usages,ext:this.extractable}}}class ZI extends YI{constructor(){super(...arguments),this.type="private"}toJWK(){const e=qA().createPublicKey({key:this.data,format:"pem"}).export({format:"jwk"}),t=Cb.toUint8Array(this.data.toString()),r=Zm.parse(t,RA.PrivateKeyInfo),s=Zm.parse(r.privateKey,RA.EdPrivateKey).value;return{...super.toJWK(),...e,d:Buffer.from(new Uint8Array(s)).toString("base64url")}}}class XI extends YI{constructor(){super(...arguments),this.type="public"}toJWK(){const e=qA().createPublicKey({key:this.data,format:"pem"}).export({format:"jwk"});return{...super.toJWK(),...e}}}class ev{static async generateKey(e,t,r){const s=e.name.toLowerCase(),i=qA().generateKeyPairSync(s,{publicKeyEncoding:{format:"pem",type:"spki"},privateKeyEncoding:{format:"pem",type:"pkcs8"}}),n={name:"ed25519"===s?"Ed25519":"X25519"},o=r.filter(e=>this.privateKeyUsages.includes(e)),a=r.filter(e=>this.publicKeyUsages.includes(e));return{privateKey:new ZI(n,t,o,i.privateKey),publicKey:new XI(n,!0,a,i.publicKey)}}static async sign(e,t,r){const s=qA().sign(null,Buffer.from(r),t.data);return Tf.toArrayBuffer(s)}static async verify(e,t,r,s){return qA().verify(null,Buffer.from(s),t.data,r)}static async exportKey(e,t){switch(e){case"jwk":return t.toJWK();case"pkcs8":case"spki":return Cb.toArrayBuffer(t.data.toString());case"raw":{const e=t.toJWK();return Kf.FromBase64Url(e.x)}default:return Promise.reject(new Sb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"))}}static async importKey(e,t,r,s,i){switch(e){case"jwk":{const e=t;if(e.d){const t=new RA.EdPrivateKey;t.value=Tf.toArrayBuffer(Buffer.from(e.d,"base64url"));const n=new RA.PrivateKeyInfo;n.privateKeyAlgorithm.algorithm="ed25519"===r.name.toLowerCase()?RA.idEd25519:RA.idX25519,n.privateKey=Zm.serialize(t);const o=Zm.serialize(n),a=Cb.fromBufferSource(o,"PRIVATE KEY");return new ZI(r,s,i,a)}if(e.x){const t=qA().createPublicKey({format:"jwk",key:e}).export({format:"pem",type:"spki"});return new XI(r,s,i,t)}throw new Sb("keyData: Cannot import JWK. 'd' or 'x' must be presented")}case"pkcs8":{const e=Cb.fromBufferSource(t,"PRIVATE KEY");return new ZI(r,s,i,e)}case"spki":{const e=Cb.fromBufferSource(t,"PUBLIC KEY");return new XI(r,s,i,e)}case"raw":{const e=t,n=qA().createPublicKey({format:"jwk",key:{kty:"OKP",crv:"ed25519"===r.name.toLowerCase()?"Ed25519":"X25519",x:Kf.ToBase64Url(e)}}).export({format:"pem",type:"spki"});return new XI(r,s,i,n)}default:return Promise.reject(new Sb("format: Must be 'jwk', 'raw', pkcs8' or 'spki'"))}}}ev.privateKeyUsages=["sign","deriveBits","deriveKey"],ev.publicKeyUsages=["verify"];class tv extends TA{async onGenerateKey(e,t,r){const s=await ev.generateKey(e,t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onSign(e,t,r){const s=rI(t);return ev.sign(e,s,new Uint8Array(r))}onVerify(e,t,r,s){const i=rI(t);return ev.verify(e,i,new Uint8Array(r),new Uint8Array(s))}async onExportKey(e,t){const r=rI(t);return ev.exportKey(e,r)}async onImportKey(e,t,r,s,i){return sI(await ev.importKey(e,t,r,s,i))}}class rv extends UA{async onGenerateKey(e,t,r){const s=await ev.generateKey(e,t,r);return{privateKey:sI(s.privateKey),publicKey:sI(s.publicKey)}}async onDeriveBits(e,t,r){const s=rI(t),i=rI(e.public),n=qA().createPublicKey({key:i.data.toString(),format:"pem",type:"spki"}),o=qA().createPrivateKey({key:s.data.toString(),format:"pem",type:"pkcs8"}),a=qA().diffieHellman({publicKey:n,privateKey:o});return new Uint8Array(a).buffer.slice(0,r>>3)}async onExportKey(e,t){const r=rI(t);return ev.exportKey(e,r)}async onImportKey(e,t,r,s,i){return sI(await ev.importKey(e,t,r,s,i))}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof YI))throw new TypeError("key: Is not a Ed25519CryptoKey")}}class sv extends JA{}class iv extends DA{async onDeriveBits(e,t,r){return new Promise((s,i)=>{const n=Tf.toArrayBuffer(e.salt),o=e.hash.name.replace("-","");qA().pbkdf2(rI(t).data,$A.Buffer.from(n),e.iterations,r>>3,o,(e,t)=>{e?i(e):s(new Uint8Array(t).buffer)})})}async onImportKey(e,t,r,s,i){if("raw"===e){const e=new sv;return e.data=$A.Buffer.from(t),e.algorithm={name:this.name},e.extractable=!1,e.usages=i,sI(e)}throw new Sb("format: Must be 'raw'")}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof sv))throw new TypeError("key: Is not PBKDF CryptoKey")}}class nv extends JA{get alg(){return`HS${this.algorithm.hash.name.toUpperCase().replace("SHA-","")}`}set alg(e){}}Xm([Ab({name:"k",converter:WA})],nv.prototype,"data",void 0);class ov extends NA{async onGenerateKey(e,t,r){const s=(e.length||this.getDefaultLength(e.hash.name))>>3<<3,i=new nv;return i.algorithm={...e,length:s,name:this.name},i.extractable=t,i.usages=r,i.data=qA().randomBytes(s>>3),sI(i)}async onSign(e,t,r){const s=xI.getAlgorithmName(t.algorithm.hash),i=qA().createHmac(s,rI(t).data).update($A.Buffer.from(r)).digest();return new Uint8Array(i).buffer}async onVerify(e,t,r,s){const i=xI.getAlgorithmName(t.algorithm.hash);return 0===qA().createHmac(i,rI(t).data).update($A.Buffer.from(s)).digest().compare($A.Buffer.from(r))}async onImportKey(e,t,r,s,i){let n;switch(e.toLowerCase()){case"jwk":n=bb.fromJSON(t,{targetSchema:nv});break;case"raw":n=new nv,n.data=$A.Buffer.from(t);break;default:throw new Sb("format: Must be 'jwk' or 'raw'")}return n.algorithm={hash:{name:r.hash.name},name:this.name,length:n.data.length<<3},n.extractable=s,n.usages=i,sI(n)}async onExportKey(e,t){switch(e.toLowerCase()){case"jwk":return mb.toJSON(rI(t));case"raw":return new Uint8Array(rI(t).data).buffer;default:throw new Sb("format: Must be 'jwk' or 'raw'")}}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof nv))throw new TypeError("key: Is not HMAC CryptoKey")}}class av extends JA{}class cv extends MA{async onImportKey(e,t,r,s,i){if("raw"!==e.toLowerCase())throw new Sb("Operation not supported");const n=new av;return n.data=$A.Buffer.from(t),n.algorithm={name:this.name},n.extractable=s,n.usages=i,sI(n)}async onDeriveBits(e,t,r){const s=e.hash.name.replace("-",""),i=qA().createHash(s).digest().length,n=r/8,o=Tf.toUint8Array(e.info),a=qA().createHmac(s,Tf.toUint8Array(e.salt)).update(Tf.toUint8Array(rI(t).data)).digest(),c=[$A.Buffer.alloc(0)],l=Math.ceil(n/i)+1;for(let e=1;e<l;++e)c.push(qA().createHmac(s,a).update($A.Buffer.concat([c[e-1],o,$A.Buffer.from([e])])).digest());return $A.Buffer.concat(c).slice(0,n)}checkCryptoKey(e,t){if(super.checkCryptoKey(e,t),!(rI(e)instanceof av))throw new TypeError("key: Is not HKDF CryptoKey")}}class lv{static digest(e,t){const r=qA().createHash(e.name.toLowerCase(),{outputLength:e.length}).update($A.Buffer.from(t)).digest();return new Uint8Array(r).buffer}}class hv extends LA{async onDigest(e,t){return lv.digest(e,t)}}class uv extends HA{async onDigest(e,t){return lv.digest(e,t)}}class dv extends GA{constructor(){var e;super(),this.providers.set(new iI),this.providers.set(new gI),this.providers.set(new fI),this.providers.set(new dI),this.providers.set(new pI),this.providers.set(new yI),qA().getCiphers().includes("des-cbc")&&this.providers.set(new AI),this.providers.set(new II),this.providers.set(new CI),this.providers.set(new kI),this.providers.set(new BI),this.providers.set(new _I),this.providers.set(new QI),this.providers.set(new FI),this.providers.set(new NI),this.providers.set(new DI),this.providers.set(new MI),this.providers.set(new PI),this.providers.set(new iv),this.providers.set(new ov),this.providers.set(new cv);const t=null===(e=/^v(\d+)/.exec(zA.version))||void 0===e?void 0:e[1];t&&parseInt(t,10)>=12&&(this.providers.set(new hv),this.providers.set(new uv));const r=qA().getHashes();r.includes("sha3-256")&&this.providers.set(new LI),r.includes("sha3-384")&&this.providers.set(new HI),r.includes("sha3-512")&&this.providers.set(new KI),t&&parseInt(t,10)>=14&&(this.providers.set(new WI),this.providers.set(new JI),this.providers.set(new tv),this.providers.set(new rv))}}var gv,fv,pv;o(909);class yv{static isIPv4(e){return/^(\d{1,3}\.){3}\d{1,3}$/.test(e)}static parseIPv4(e){const t=e.split(".");if(4!==t.length)throw new Error("Invalid IPv4 address");return t.map(e=>{const t=parseInt(e,10);if(isNaN(t)||t<0||t>255)throw new Error("Invalid IPv4 address part");return t})}static parseIPv6(e){const t=this.expandIPv6(e).split(":");if(8!==t.length)throw new Error("Invalid IPv6 address");return t.reduce((e,t)=>{const r=parseInt(t,16);if(isNaN(r)||r<0||r>65535)throw new Error("Invalid IPv6 address part");return e.push(r>>8&255),e.push(255&r),e},[])}static expandIPv6(e){if(!e.includes("::"))return e;const t=e.split("::");if(t.length>2)throw new Error("Invalid IPv6 address");const r=t[0]?t[0].split(":"):[],s=t[1]?t[1].split(":"):[],i=8-(r.length+s.length);if(i<0)throw new Error("Invalid IPv6 address");return[...r,...Array(i).fill("0"),...s].join(":")}static formatIPv6(e){const t=[];for(let r=0;r<16;r+=2)t.push((e[r]<<8|e[r+1]).toString(16));return this.compressIPv6(t.join(":"))}static compressIPv6(e){const t=e.split(":");let r=-1,s=0,i=-1,n=0;for(let e=0;e<t.length;e++)"0"===t[e]?(-1===i&&(i=e),n++):(n>s&&(r=i,s=n),i=-1,n=0);return n>s&&(r=i,s=n),s>1?`${t.slice(0,r).join(":")}::${t.slice(r+s).join(":")}`:e}static parseCIDR(e){const[t,r]=e.split("/"),s=parseInt(r,10);if(this.isIPv4(t)){if(s<0||s>32)throw new Error("Invalid IPv4 prefix length");return[this.parseIPv4(t),s]}if(s<0||s>128)throw new Error("Invalid IPv6 prefix length");return[this.parseIPv6(t),s]}static decodeIP(e){if(64===e.length&&0===parseInt(e,16))return"::/0";if(16!==e.length)return e;const t=parseInt(e.slice(8),16).toString(2).split("").reduce((e,t)=>e+ +t,0);let r=e.slice(0,8).replace(/(.{2})/g,e=>`${parseInt(e,16)}.`);return r=r.slice(0,-1),`${r}/${t}`}static toString(e){const t=new Uint8Array(e);if(4===t.length)return Array.from(t).join(".");if(16===t.length)return this.formatIPv6(t);if(8===t.length||32===t.length){const e=t.length/2,r=t.slice(0,e),s=t.slice(e);if(t.every(e=>0===e))return 8===t.length?"0.0.0.0/0":"::/0";const i=s.reduce((e,t)=>e+(t.toString(2).match(/1/g)||[]).length,0);return 8===t.length?`${Array.from(r).join(".")}/${i}`:`${this.formatIPv6(r)}/${i}`}return this.decodeIP(Kf.ToHex(e))}static fromString(e){if(e.includes("/")){const[t,r]=this.parseCIDR(e),s=new Uint8Array(t.length);let i=r;for(let e=0;e<s.length;e++)i>=8?(s[e]=255,i-=8):i>0&&(s[e]=255<<8-i,i=0);const n=new Uint8Array(2*t.length);return n.set(t,0),n.set(s,t.length),n.buffer}const t=this.isIPv4(e)?this.parseIPv4(e):this.parseIPv6(e);return new Uint8Array(t).buffer}}let mv=class{constructor(e={}){Object.assign(this,e)}toString(){return this.bmpString||this.printableString||this.teletexString||this.universalString||this.utf8String||""}};Xm([qm({type:oy.TeletexString})],mv.prototype,"teletexString",void 0),Xm([qm({type:oy.PrintableString})],mv.prototype,"printableString",void 0),Xm([qm({type:oy.UniversalString})],mv.prototype,"universalString",void 0),Xm([qm({type:oy.Utf8String})],mv.prototype,"utf8String",void 0),Xm([qm({type:oy.BmpString})],mv.prototype,"bmpString",void 0),mv=Xm([jm({type:ny.Choice})],mv);let bv=class extends mv{constructor(e={}){super(e),Object.assign(this,e)}toString(){return this.ia5String||(this.anyValue?Kf.ToHex(this.anyValue):super.toString())}};Xm([qm({type:oy.IA5String})],bv.prototype,"ia5String",void 0),Xm([qm({type:oy.Any})],bv.prototype,"anyValue",void 0),bv=Xm([jm({type:ny.Choice})],bv);class Av{constructor(e={}){this.type="",this.value=new bv,Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Av.prototype,"type",void 0),Xm([qm({type:bv})],Av.prototype,"value",void 0);let Iv=gv=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,gv.prototype)}};Iv=gv=Xm([jm({type:ny.Set,itemType:Av})],Iv);let vv=fv=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,fv.prototype)}};vv=fv=Xm([jm({type:ny.Sequence,itemType:Iv})],vv);let wv=pv=class extends vv{constructor(e){super(e),Object.setPrototypeOf(this,pv.prototype)}};wv=pv=Xm([jm({type:ny.Sequence})],wv);const Sv={fromASN:e=>yv.toString(Sm.fromASN(e)),toASN:e=>Sm.toASN(yv.fromString(e))};class Ev{constructor(e={}){this.typeId="",this.value=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Ev.prototype,"typeId",void 0),Xm([qm({type:oy.Any,context:0})],Ev.prototype,"value",void 0);class Cv{constructor(e={}){this.partyName=new mv,Object.assign(this,e)}}Xm([qm({type:mv,optional:!0,context:0,implicit:!0})],Cv.prototype,"nameAssigner",void 0),Xm([qm({type:mv,context:1,implicit:!0})],Cv.prototype,"partyName",void 0);let kv=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:Ev,context:0,implicit:!0})],kv.prototype,"otherName",void 0),Xm([qm({type:oy.IA5String,context:1,implicit:!0})],kv.prototype,"rfc822Name",void 0),Xm([qm({type:oy.IA5String,context:2,implicit:!0})],kv.prototype,"dNSName",void 0),Xm([qm({type:oy.Any,context:3,implicit:!0})],kv.prototype,"x400Address",void 0),Xm([qm({type:wv,context:4,implicit:!1})],kv.prototype,"directoryName",void 0),Xm([qm({type:Cv,context:5})],kv.prototype,"ediPartyName",void 0),Xm([qm({type:oy.IA5String,context:6,implicit:!0})],kv.prototype,"uniformResourceIdentifier",void 0),Xm([qm({type:oy.OctetString,context:7,implicit:!0,converter:Sv})],kv.prototype,"iPAddress",void 0),Xm([qm({type:oy.ObjectIdentifier,context:8,implicit:!0})],kv.prototype,"registeredID",void 0),kv=Xm([jm({type:ny.Choice})],kv);const xv="1.3.6.1.5.5.7",Bv=`${xv}.3`,_v=`${xv}.48`,Rv=`${_v}.1`,Ov=`${_v}.2`,Uv=`${_v}.3`,Tv=`${_v}.5`,Nv="2.5.29";var Dv;const Mv=`${xv}.1.1`;class Pv{constructor(e={}){this.accessMethod="",this.accessLocation=new kv,Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Pv.prototype,"accessMethod",void 0),Xm([qm({type:kv})],Pv.prototype,"accessLocation",void 0);let Lv=Dv=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Dv.prototype)}};Lv=Dv=Xm([jm({type:ny.Sequence,itemType:Pv})],Lv);const Hv=`${Nv}.35`;class Kv extends pm{}class Vv{constructor(e={}){e&&Object.assign(this,e)}}Xm([qm({type:Kv,context:0,optional:!0,implicit:!0})],Vv.prototype,"keyIdentifier",void 0),Xm([qm({type:kv,context:1,optional:!0,implicit:!0,repeated:"sequence"})],Vv.prototype,"authorityCertIssuer",void 0),Xm([qm({type:oy.Integer,context:2,optional:!0,implicit:!0,converter:Am})],Vv.prototype,"authorityCertSerialNumber",void 0);const Qv=`${Nv}.19`;class Fv{constructor(e={}){this.cA=!1,Object.assign(this,e)}}var Gv;Xm([qm({type:oy.Boolean,defaultValue:!1})],Fv.prototype,"cA",void 0),Xm([qm({type:oy.Integer,optional:!0})],Fv.prototype,"pathLenConstraint",void 0);let $v=Gv=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Gv.prototype)}};var jv;$v=Gv=Xm([jm({type:ny.Sequence,itemType:kv})],$v);let qv=jv=class extends $v{constructor(e){super(e),Object.setPrototypeOf(this,jv.prototype)}};var zv;qv=jv=Xm([jm({type:ny.Sequence})],qv);const Wv=`${Nv}.32`;let Jv=class{constructor(e={}){Object.assign(this,e)}toString(){return this.ia5String||this.visibleString||this.bmpString||this.utf8String||""}};Xm([qm({type:oy.IA5String})],Jv.prototype,"ia5String",void 0),Xm([qm({type:oy.VisibleString})],Jv.prototype,"visibleString",void 0),Xm([qm({type:oy.BmpString})],Jv.prototype,"bmpString",void 0),Xm([qm({type:oy.Utf8String})],Jv.prototype,"utf8String",void 0),Jv=Xm([jm({type:ny.Choice})],Jv);class Yv{constructor(e={}){this.organization=new Jv,this.noticeNumbers=[],Object.assign(this,e)}}Xm([qm({type:Jv})],Yv.prototype,"organization",void 0),Xm([qm({type:oy.Integer,repeated:"sequence"})],Yv.prototype,"noticeNumbers",void 0);class Zv{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:Yv,optional:!0})],Zv.prototype,"noticeRef",void 0),Xm([qm({type:Jv,optional:!0})],Zv.prototype,"explicitText",void 0);let Xv=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:oy.IA5String})],Xv.prototype,"cPSuri",void 0),Xm([qm({type:Zv})],Xv.prototype,"userNotice",void 0),Xv=Xm([jm({type:ny.Choice})],Xv);class ew{constructor(e={}){this.policyQualifierId="",this.qualifier=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],ew.prototype,"policyQualifierId",void 0),Xm([qm({type:oy.Any})],ew.prototype,"qualifier",void 0);class tw{constructor(e={}){this.policyIdentifier="",Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],tw.prototype,"policyIdentifier",void 0),Xm([qm({type:ew,repeated:"sequence",optional:!0})],tw.prototype,"policyQualifiers",void 0);let rw=zv=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,zv.prototype)}};rw=zv=Xm([jm({type:ny.Sequence,itemType:tw})],rw);let sw=class{constructor(e=0){this.value=e}};Xm([qm({type:oy.Integer})],sw.prototype,"value",void 0),sw=Xm([jm({type:ny.Choice})],sw);let iw=class extends sw{};var nw;iw=Xm([jm({type:ny.Choice})],iw);const ow=`${Nv}.31`;var aw;!function(e){e[e.unused=1]="unused",e[e.keyCompromise=2]="keyCompromise",e[e.cACompromise=4]="cACompromise",e[e.affiliationChanged=8]="affiliationChanged",e[e.superseded=16]="superseded",e[e.cessationOfOperation=32]="cessationOfOperation",e[e.certificateHold=64]="certificateHold",e[e.privilegeWithdrawn=128]="privilegeWithdrawn",e[e.aACompromise=256]="aACompromise"}(aw||(aw={}));class cw extends fm{toJSON(){const e=[],t=this.toNumber();return t&aw.aACompromise&&e.push("aACompromise"),t&aw.affiliationChanged&&e.push("affiliationChanged"),t&aw.cACompromise&&e.push("cACompromise"),t&aw.certificateHold&&e.push("certificateHold"),t&aw.cessationOfOperation&&e.push("cessationOfOperation"),t&aw.keyCompromise&&e.push("keyCompromise"),t&aw.privilegeWithdrawn&&e.push("privilegeWithdrawn"),t&aw.superseded&&e.push("superseded"),t&aw.unused&&e.push("unused"),e}toString(){return`[${this.toJSON().join(", ")}]`}}let lw=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:kv,context:0,repeated:"sequence",implicit:!0})],lw.prototype,"fullName",void 0),Xm([qm({type:Iv,context:1,implicit:!0})],lw.prototype,"nameRelativeToCRLIssuer",void 0),lw=Xm([jm({type:ny.Choice})],lw);class hw{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:lw,context:0,optional:!0})],hw.prototype,"distributionPoint",void 0),Xm([qm({type:cw,context:1,optional:!0,implicit:!0})],hw.prototype,"reasons",void 0),Xm([qm({type:kv,context:2,optional:!0,repeated:"sequence",implicit:!0})],hw.prototype,"cRLIssuer",void 0);let uw=nw=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,nw.prototype)}};var dw;uw=nw=Xm([jm({type:ny.Sequence,itemType:hw})],uw);let gw=dw=class extends uw{constructor(e){super(e),Object.setPrototypeOf(this,dw.prototype)}};gw=dw=Xm([jm({type:ny.Sequence,itemType:hw})],gw);class fw{constructor(e={}){this.onlyContainsUserCerts=fw.ONLY,this.onlyContainsCACerts=fw.ONLY,this.indirectCRL=fw.ONLY,this.onlyContainsAttributeCerts=fw.ONLY,Object.assign(this,e)}}var pw;fw.ONLY=!1,Xm([qm({type:lw,context:0,optional:!0})],fw.prototype,"distributionPoint",void 0),Xm([qm({type:oy.Boolean,context:1,defaultValue:fw.ONLY,implicit:!0})],fw.prototype,"onlyContainsUserCerts",void 0),Xm([qm({type:oy.Boolean,context:2,defaultValue:fw.ONLY,implicit:!0})],fw.prototype,"onlyContainsCACerts",void 0),Xm([qm({type:cw,context:3,optional:!0,implicit:!0})],fw.prototype,"onlySomeReasons",void 0),Xm([qm({type:oy.Boolean,context:4,defaultValue:fw.ONLY,implicit:!0})],fw.prototype,"indirectCRL",void 0),Xm([qm({type:oy.Boolean,context:5,defaultValue:fw.ONLY,implicit:!0})],fw.prototype,"onlyContainsAttributeCerts",void 0),function(e){e[e.unspecified=0]="unspecified",e[e.keyCompromise=1]="keyCompromise",e[e.cACompromise=2]="cACompromise",e[e.affiliationChanged=3]="affiliationChanged",e[e.superseded=4]="superseded",e[e.cessationOfOperation=5]="cessationOfOperation",e[e.certificateHold=6]="certificateHold",e[e.removeFromCRL=8]="removeFromCRL",e[e.privilegeWithdrawn=9]="privilegeWithdrawn",e[e.aACompromise=10]="aACompromise"}(pw||(pw={}));let yw=class{constructor(e=pw.unspecified){this.reason=pw.unspecified,this.reason=e}toJSON(){return pw[this.reason]}toString(){return this.toJSON()}};var mw;Xm([qm({type:oy.Enumerated})],yw.prototype,"reason",void 0),yw=Xm([jm({type:ny.Choice})],yw);const bw=`${Nv}.37`;let Aw=mw=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,mw.prototype)}};Aw=mw=Xm([jm({type:ny.Sequence,itemType:oy.ObjectIdentifier})],Aw);const Iw=`${Bv}.1`,vw=`${Bv}.2`,ww=`${Bv}.3`,Sw=`${Bv}.4`,Ew=`${Bv}.8`,Cw=`${Bv}.9`;let kw=class{constructor(e=new ArrayBuffer(0)){this.value=e}};Xm([qm({type:oy.Integer,converter:Am})],kw.prototype,"value",void 0),kw=Xm([jm({type:ny.Choice})],kw);let xw=class{constructor(e){this.value=new Date,e&&(this.value=e)}};var Bw;Xm([qm({type:oy.GeneralizedTime})],xw.prototype,"value",void 0),xw=Xm([jm({type:ny.Choice})],xw);let _w=Bw=class extends $v{constructor(e){super(e),Object.setPrototypeOf(this,Bw.prototype)}};_w=Bw=Xm([jm({type:ny.Sequence})],_w);const Rw=`${Nv}.15`;var Ow,Uw;!function(e){e[e.digitalSignature=1]="digitalSignature",e[e.nonRepudiation=2]="nonRepudiation",e[e.keyEncipherment=4]="keyEncipherment",e[e.dataEncipherment=8]="dataEncipherment",e[e.keyAgreement=16]="keyAgreement",e[e.keyCertSign=32]="keyCertSign",e[e.cRLSign=64]="cRLSign",e[e.encipherOnly=128]="encipherOnly",e[e.decipherOnly=256]="decipherOnly"}(Ow||(Ow={}));class Tw extends fm{toJSON(){const e=this.toNumber(),t=[];return e&Ow.cRLSign&&t.push("crlSign"),e&Ow.dataEncipherment&&t.push("dataEncipherment"),e&Ow.decipherOnly&&t.push("decipherOnly"),e&Ow.digitalSignature&&t.push("digitalSignature"),e&Ow.encipherOnly&&t.push("encipherOnly"),e&Ow.keyAgreement&&t.push("keyAgreement"),e&Ow.keyCertSign&&t.push("keyCertSign"),e&Ow.keyEncipherment&&t.push("keyEncipherment"),e&Ow.nonRepudiation&&t.push("nonRepudiation"),t}toString(){return`[${this.toJSON().join(", ")}]`}}class Nw{constructor(e={}){this.base=new kv,this.minimum=0,Object.assign(this,e)}}Xm([qm({type:kv})],Nw.prototype,"base",void 0),Xm([qm({type:oy.Integer,context:0,defaultValue:0,implicit:!0})],Nw.prototype,"minimum",void 0),Xm([qm({type:oy.Integer,context:1,optional:!0,implicit:!0})],Nw.prototype,"maximum",void 0);let Dw=Uw=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Uw.prototype)}};Dw=Uw=Xm([jm({type:ny.Sequence,itemType:Nw})],Dw);class Mw{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:Dw,context:0,optional:!0,implicit:!0})],Mw.prototype,"permittedSubtrees",void 0),Xm([qm({type:Dw,context:1,optional:!0,implicit:!0})],Mw.prototype,"excludedSubtrees",void 0);class Pw{constructor(e={}){Object.assign(this,e)}}var Lw;Xm([qm({type:oy.Integer,context:0,implicit:!0,optional:!0,converter:Am})],Pw.prototype,"requireExplicitPolicy",void 0),Xm([qm({type:oy.Integer,context:1,implicit:!0,optional:!0,converter:Am})],Pw.prototype,"inhibitPolicyMapping",void 0);class Hw{constructor(e={}){this.issuerDomainPolicy="",this.subjectDomainPolicy="",Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Hw.prototype,"issuerDomainPolicy",void 0),Xm([qm({type:oy.ObjectIdentifier})],Hw.prototype,"subjectDomainPolicy",void 0);let Kw=Lw=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Lw.prototype)}};var Vw;Kw=Lw=Xm([jm({type:ny.Sequence,itemType:Hw})],Kw);const Qw=`${Nv}.17`;let Fw=Vw=class extends $v{constructor(e){super(e),Object.setPrototypeOf(this,Vw.prototype)}};Fw=Vw=Xm([jm({type:ny.Sequence})],Fw);class Gw{constructor(e={}){this.type="",this.values=[],Object.assign(this,e)}}var $w;Xm([qm({type:oy.ObjectIdentifier})],Gw.prototype,"type",void 0),Xm([qm({type:oy.Any,repeated:"set"})],Gw.prototype,"values",void 0);let jw=$w=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,$w.prototype)}};jw=$w=Xm([jm({type:ny.Sequence,itemType:Gw})],jw);const qw=`${Nv}.14`;class zw extends Kv{}class Ww{constructor(e={}){Object.assign(this,e)}}var Jw,Yw;Xm([qm({type:oy.GeneralizedTime,context:0,implicit:!0,optional:!0})],Ww.prototype,"notBefore",void 0),Xm([qm({type:oy.GeneralizedTime,context:1,implicit:!0,optional:!0})],Ww.prototype,"notAfter",void 0),function(e){e[e.keyUpdateAllowed=1]="keyUpdateAllowed",e[e.newExtensions=2]="newExtensions",e[e.pKIXCertificate=4]="pKIXCertificate"}(Jw||(Jw={}));class Zw extends fm{toJSON(){const e=[],t=this.toNumber();return t&Jw.pKIXCertificate&&e.push("pKIXCertificate"),t&Jw.newExtensions&&e.push("newExtensions"),t&Jw.keyUpdateAllowed&&e.push("keyUpdateAllowed"),e}toString(){return`[${this.toJSON().join(", ")}]`}}class Xw{constructor(e={}){this.entrustVers="",this.entrustInfoFlags=new Zw,Object.assign(this,e)}}Xm([qm({type:oy.GeneralString})],Xw.prototype,"entrustVers",void 0),Xm([qm({type:Zw})],Xw.prototype,"entrustInfoFlags",void 0);let eS=Yw=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Yw.prototype)}};eS=Yw=Xm([jm({type:ny.Sequence,itemType:Pv})],eS);class tS{constructor(e={}){this.algorithm="",Object.assign(this,e)}isEqual(e){return e instanceof tS&&e.algorithm==this.algorithm&&(e.parameters&&this.parameters&&Qf(e.parameters,this.parameters)||e.parameters===this.parameters)}}Xm([qm({type:oy.ObjectIdentifier})],tS.prototype,"algorithm",void 0),Xm([qm({type:oy.Any,optional:!0})],tS.prototype,"parameters",void 0);class rS{constructor(e={}){this.algorithm=new tS,this.subjectPublicKey=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:tS})],rS.prototype,"algorithm",void 0),Xm([qm({type:oy.BitString})],rS.prototype,"subjectPublicKey",void 0);let sS=class{constructor(e){if(e)if("string"==typeof e||"number"==typeof e||e instanceof Date){const t=new Date(e);t.getUTCFullYear()>2049?this.generalTime=t:this.utcTime=t}else Object.assign(this,e)}getTime(){const e=this.utcTime||this.generalTime;if(!e)throw new Error("Cannot get time from CHOICE object");return e}};Xm([qm({type:oy.UTCTime})],sS.prototype,"utcTime",void 0),Xm([qm({type:oy.GeneralizedTime})],sS.prototype,"generalTime",void 0),sS=Xm([jm({type:ny.Choice})],sS);class iS{constructor(e){this.notBefore=new sS(new Date),this.notAfter=new sS(new Date),e&&(this.notBefore=new sS(e.notBefore),this.notAfter=new sS(e.notAfter))}}var nS;Xm([qm({type:sS})],iS.prototype,"notBefore",void 0),Xm([qm({type:sS})],iS.prototype,"notAfter",void 0);class oS{constructor(e={}){this.extnID="",this.critical=oS.CRITICAL,this.extnValue=new pm,Object.assign(this,e)}}oS.CRITICAL=!1,Xm([qm({type:oy.ObjectIdentifier})],oS.prototype,"extnID",void 0),Xm([qm({type:oy.Boolean,defaultValue:oS.CRITICAL})],oS.prototype,"critical",void 0),Xm([qm({type:pm})],oS.prototype,"extnValue",void 0);let aS=nS=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,nS.prototype)}};var cS;aS=nS=Xm([jm({type:ny.Sequence,itemType:oS})],aS),function(e){e[e.v1=0]="v1",e[e.v2=1]="v2",e[e.v3=2]="v3"}(cS||(cS={}));class lS{constructor(e={}){this.version=cS.v1,this.serialNumber=new ArrayBuffer(0),this.signature=new tS,this.issuer=new wv,this.validity=new iS,this.subject=new wv,this.subjectPublicKeyInfo=new rS,Object.assign(this,e)}}Xm([qm({type:oy.Integer,context:0,defaultValue:cS.v1})],lS.prototype,"version",void 0),Xm([qm({type:oy.Integer,converter:Am})],lS.prototype,"serialNumber",void 0),Xm([qm({type:tS})],lS.prototype,"signature",void 0),Xm([qm({type:wv})],lS.prototype,"issuer",void 0),Xm([qm({type:iS})],lS.prototype,"validity",void 0),Xm([qm({type:wv})],lS.prototype,"subject",void 0),Xm([qm({type:rS})],lS.prototype,"subjectPublicKeyInfo",void 0),Xm([qm({type:oy.BitString,context:1,implicit:!0,optional:!0})],lS.prototype,"issuerUniqueID",void 0),Xm([qm({type:oy.BitString,context:2,implicit:!0,optional:!0})],lS.prototype,"subjectUniqueID",void 0),Xm([qm({type:aS,context:3,optional:!0})],lS.prototype,"extensions",void 0);class hS{constructor(e={}){this.tbsCertificate=new lS,this.signatureAlgorithm=new tS,this.signatureValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:lS})],hS.prototype,"tbsCertificate",void 0),Xm([qm({type:tS})],hS.prototype,"signatureAlgorithm",void 0),Xm([qm({type:oy.BitString})],hS.prototype,"signatureValue",void 0);class uS{constructor(e={}){this.userCertificate=new ArrayBuffer(0),this.revocationDate=new sS,Object.assign(this,e)}}Xm([qm({type:oy.Integer,converter:Am})],uS.prototype,"userCertificate",void 0),Xm([qm({type:sS})],uS.prototype,"revocationDate",void 0),Xm([qm({type:oS,optional:!0,repeated:"sequence"})],uS.prototype,"crlEntryExtensions",void 0);class dS{constructor(e={}){this.signature=new tS,this.issuer=new wv,this.thisUpdate=new sS,Object.assign(this,e)}}Xm([qm({type:oy.Integer,optional:!0})],dS.prototype,"version",void 0),Xm([qm({type:tS})],dS.prototype,"signature",void 0),Xm([qm({type:wv})],dS.prototype,"issuer",void 0),Xm([qm({type:sS})],dS.prototype,"thisUpdate",void 0),Xm([qm({type:sS,optional:!0})],dS.prototype,"nextUpdate",void 0),Xm([qm({type:uS,repeated:"sequence",optional:!0})],dS.prototype,"revokedCertificates",void 0),Xm([qm({type:oS,optional:!0,context:0,repeated:"sequence"})],dS.prototype,"crlExtensions",void 0);class gS{constructor(e={}){this.tbsCertList=new dS,this.signatureAlgorithm=new tS,this.signature=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:dS})],gS.prototype,"tbsCertList",void 0),Xm([qm({type:tS})],gS.prototype,"signatureAlgorithm",void 0),Xm([qm({type:oy.BitString})],gS.prototype,"signature",void 0);class fS{constructor(e={}){this.issuer=new wv,this.serialNumber=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:wv})],fS.prototype,"issuer",void 0),Xm([qm({type:oy.Integer,converter:Am})],fS.prototype,"serialNumber",void 0);let pS=class{constructor(e={}){Object.assign(this,e)}};var yS;Xm([qm({type:zw,context:0,implicit:!0})],pS.prototype,"subjectKeyIdentifier",void 0),Xm([qm({type:fS})],pS.prototype,"issuerAndSerialNumber",void 0),pS=Xm([jm({type:ny.Choice})],pS),function(e){e[e.v0=0]="v0",e[e.v1=1]="v1",e[e.v2=2]="v2",e[e.v3=3]="v3",e[e.v4=4]="v4",e[e.v5=5]="v5"}(yS||(yS={}));let mS=class extends tS{};mS=Xm([jm({type:ny.Sequence})],mS);let bS=class extends tS{};bS=Xm([jm({type:ny.Sequence})],bS);let AS=class extends tS{};AS=Xm([jm({type:ny.Sequence})],AS);let IS=class extends tS{};IS=Xm([jm({type:ny.Sequence})],IS);let vS=class extends tS{};vS=Xm([jm({type:ny.Sequence})],vS);let wS=class extends tS{};wS=Xm([jm({type:ny.Sequence})],wS);class SS{constructor(e={}){this.attrType="",this.attrValues=[],Object.assign(this,e)}}var ES;Xm([qm({type:oy.ObjectIdentifier})],SS.prototype,"attrType",void 0),Xm([qm({type:oy.Any,repeated:"set"})],SS.prototype,"attrValues",void 0);class CS{constructor(e={}){this.version=yS.v0,this.sid=new pS,this.digestAlgorithm=new mS,this.signatureAlgorithm=new bS,this.signature=new pm,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],CS.prototype,"version",void 0),Xm([qm({type:pS})],CS.prototype,"sid",void 0),Xm([qm({type:mS})],CS.prototype,"digestAlgorithm",void 0),Xm([qm({type:SS,repeated:"set",context:0,implicit:!0,optional:!0})],CS.prototype,"signedAttrs",void 0),Xm([qm({type:bS})],CS.prototype,"signatureAlgorithm",void 0),Xm([qm({type:pm})],CS.prototype,"signature",void 0),Xm([qm({type:SS,repeated:"set",context:1,implicit:!0,optional:!0})],CS.prototype,"unsignedAttrs",void 0);let kS=ES=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,ES.prototype)}};kS=ES=Xm([jm({type:ny.Set,itemType:CS})],kS);let xS=class extends sS{};xS=Xm([jm({type:ny.Choice})],xS);let BS=class extends CS{};BS=Xm([jm({type:ny.Sequence})],BS);class _S{constructor(e={}){this.acIssuer=new kv,this.acSerial=0,this.attrs=[],Object.assign(this,e)}}var RS;Xm([qm({type:kv})],_S.prototype,"acIssuer",void 0),Xm([qm({type:oy.Integer})],_S.prototype,"acSerial",void 0),Xm([qm({type:Gw,repeated:"sequence"})],_S.prototype,"attrs",void 0);let OS=RS=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,RS.prototype)}};OS=RS=Xm([jm({type:ny.Sequence,itemType:oy.ObjectIdentifier})],OS);class US{constructor(e={}){this.permitUnSpecified=!0,Object.assign(this,e)}}Xm([qm({type:oy.Integer,optional:!0})],US.prototype,"pathLenConstraint",void 0),Xm([qm({type:OS,implicit:!0,context:0,optional:!0})],US.prototype,"permittedAttrs",void 0),Xm([qm({type:OS,implicit:!0,context:1,optional:!0})],US.prototype,"excludedAttrs",void 0),Xm([qm({type:oy.Boolean,defaultValue:!0})],US.prototype,"permitUnSpecified",void 0);class TS{constructor(e={}){this.issuer=new $v,this.serial=new ArrayBuffer(0),this.issuerUID=new ArrayBuffer(0),Object.assign(this,e)}}var NS;Xm([qm({type:$v})],TS.prototype,"issuer",void 0),Xm([qm({type:oy.Integer,converter:Am})],TS.prototype,"serial",void 0),Xm([qm({type:oy.BitString,optional:!0})],TS.prototype,"issuerUID",void 0),function(e){e[e.publicKey=0]="publicKey",e[e.publicKeyCert=1]="publicKeyCert",e[e.otherObjectTypes=2]="otherObjectTypes"}(NS||(NS={}));class DS{constructor(e={}){this.digestedObjectType=NS.publicKey,this.digestAlgorithm=new tS,this.objectDigest=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.Enumerated})],DS.prototype,"digestedObjectType",void 0),Xm([qm({type:oy.ObjectIdentifier,optional:!0})],DS.prototype,"otherObjectTypeID",void 0),Xm([qm({type:tS})],DS.prototype,"digestAlgorithm",void 0),Xm([qm({type:oy.BitString})],DS.prototype,"objectDigest",void 0);class MS{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:$v,optional:!0})],MS.prototype,"issuerName",void 0),Xm([qm({type:TS,context:0,implicit:!0,optional:!0})],MS.prototype,"baseCertificateID",void 0),Xm([qm({type:DS,context:1,implicit:!0,optional:!0})],MS.prototype,"objectDigestInfo",void 0);let PS=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:kv,repeated:"sequence"})],PS.prototype,"v1Form",void 0),Xm([qm({type:MS,context:0,implicit:!0})],PS.prototype,"v2Form",void 0),PS=Xm([jm({type:ny.Choice})],PS);class LS{constructor(e={}){this.notBeforeTime=new Date,this.notAfterTime=new Date,Object.assign(this,e)}}Xm([qm({type:oy.GeneralizedTime})],LS.prototype,"notBeforeTime",void 0),Xm([qm({type:oy.GeneralizedTime})],LS.prototype,"notAfterTime",void 0);class HS{constructor(e={}){Object.assign(this,e)}}var KS,VS,QS;Xm([qm({type:TS,implicit:!0,context:0,optional:!0})],HS.prototype,"baseCertificateID",void 0),Xm([qm({type:$v,implicit:!0,context:1,optional:!0})],HS.prototype,"entityName",void 0),Xm([qm({type:DS,implicit:!0,context:2,optional:!0})],HS.prototype,"objectDigestInfo",void 0),function(e){e[e.v2=1]="v2"}(KS||(KS={}));class FS{constructor(e={}){this.version=KS.v2,this.holder=new HS,this.issuer=new PS,this.signature=new tS,this.serialNumber=new ArrayBuffer(0),this.attrCertValidityPeriod=new LS,this.attributes=[],Object.assign(this,e)}}Xm([qm({type:oy.Integer})],FS.prototype,"version",void 0),Xm([qm({type:HS})],FS.prototype,"holder",void 0),Xm([qm({type:PS})],FS.prototype,"issuer",void 0),Xm([qm({type:tS})],FS.prototype,"signature",void 0),Xm([qm({type:oy.Integer,converter:Am})],FS.prototype,"serialNumber",void 0),Xm([qm({type:LS})],FS.prototype,"attrCertValidityPeriod",void 0),Xm([qm({type:Gw,repeated:"sequence"})],FS.prototype,"attributes",void 0),Xm([qm({type:oy.BitString,optional:!0})],FS.prototype,"issuerUniqueID",void 0),Xm([qm({type:aS,optional:!0})],FS.prototype,"extensions",void 0);class GS{constructor(e={}){this.acinfo=new FS,this.signatureAlgorithm=new tS,this.signatureValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:FS})],GS.prototype,"acinfo",void 0),Xm([qm({type:tS})],GS.prototype,"signatureAlgorithm",void 0),Xm([qm({type:oy.BitString})],GS.prototype,"signatureValue",void 0),function(e){e[e.unmarked=1]="unmarked",e[e.unclassified=2]="unclassified",e[e.restricted=4]="restricted",e[e.confidential=8]="confidential",e[e.secret=16]="secret",e[e.topSecret=32]="topSecret"}(VS||(VS={}));class $S extends fm{}class jS{constructor(e={}){this.type="",this.value=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier,implicit:!0,context:0})],jS.prototype,"type",void 0),Xm([qm({type:oy.Any,implicit:!0,context:1})],jS.prototype,"value",void 0);class qS{constructor(e={}){this.policyId="",this.classList=new $S(VS.unclassified),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],qS.prototype,"policyId",void 0),Xm([qm({type:$S,defaultValue:new $S(VS.unclassified)})],qS.prototype,"classList",void 0),Xm([qm({type:jS,repeated:"set"})],qS.prototype,"securityCategories",void 0);class zS{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:pm})],zS.prototype,"cotets",void 0),Xm([qm({type:oy.ObjectIdentifier})],zS.prototype,"oid",void 0),Xm([qm({type:oy.Utf8String})],zS.prototype,"string",void 0);class WS{constructor(e={}){this.values=[],Object.assign(this,e)}}Xm([qm({type:$v,implicit:!0,context:0,optional:!0})],WS.prototype,"policyAuthority",void 0),Xm([qm({type:zS,repeated:"sequence"})],WS.prototype,"values",void 0);class JS{constructor(e={}){this.targetCertificate=new TS,Object.assign(this,e)}}Xm([qm({type:TS})],JS.prototype,"targetCertificate",void 0),Xm([qm({type:kv,optional:!0})],JS.prototype,"targetName",void 0),Xm([qm({type:DS,optional:!0})],JS.prototype,"certDigestInfo",void 0);let YS=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:kv,context:0,implicit:!0})],YS.prototype,"targetName",void 0),Xm([qm({type:kv,context:1,implicit:!0})],YS.prototype,"targetGroup",void 0),Xm([qm({type:JS,context:2,implicit:!0})],YS.prototype,"targetCert",void 0),YS=Xm([jm({type:ny.Choice})],YS);let ZS=QS=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,QS.prototype)}};var XS;ZS=QS=Xm([jm({type:ny.Sequence,itemType:YS})],ZS);let eE=XS=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,XS.prototype)}};eE=XS=Xm([jm({type:ny.Sequence,itemType:ZS})],eE);class tE{constructor(e={}){Object.assign(this,e)}}Xm([qm({type:$v,implicit:!0,context:0,optional:!0})],tE.prototype,"roleAuthority",void 0),Xm([qm({type:kv,implicit:!0,context:1})],tE.prototype,"roleName",void 0);class rE{constructor(e={}){this.service=new kv,this.ident=new kv,Object.assign(this,e)}}var sE;Xm([qm({type:kv})],rE.prototype,"service",void 0),Xm([qm({type:kv})],rE.prototype,"ident",void 0),Xm([qm({type:pm,optional:!0})],rE.prototype,"authInfo",void 0);class iE{constructor(e={}){this.otherCertFormat="",this.otherCert=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],iE.prototype,"otherCertFormat",void 0),Xm([qm({type:oy.Any})],iE.prototype,"otherCert",void 0);let nE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:hS})],nE.prototype,"certificate",void 0),Xm([qm({type:GS,context:2,implicit:!0})],nE.prototype,"v2AttrCert",void 0),Xm([qm({type:iE,context:3,implicit:!0})],nE.prototype,"other",void 0),nE=Xm([jm({type:ny.Choice})],nE);let oE=sE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,sE.prototype)}};oE=sE=Xm([jm({type:ny.Set,itemType:nE})],oE);class aE{constructor(e={}){this.contentType="",this.content=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],aE.prototype,"contentType",void 0),Xm([qm({type:oy.Any,context:0})],aE.prototype,"content",void 0);let cE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:pm})],cE.prototype,"single",void 0),Xm([qm({type:oy.Any})],cE.prototype,"any",void 0),cE=Xm([jm({type:ny.Choice})],cE);class lE{constructor(e={}){this.eContentType="",Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],lE.prototype,"eContentType",void 0),Xm([qm({type:cE,context:0,optional:!0})],lE.prototype,"eContent",void 0);let hE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:pm,context:0,implicit:!0,optional:!0})],hE.prototype,"value",void 0),Xm([qm({type:pm,converter:Em,context:0,implicit:!0,optional:!0,repeated:"sequence"})],hE.prototype,"constructedValue",void 0),hE=Xm([jm({type:ny.Choice})],hE);class uE{constructor(e={}){this.contentType="",this.contentEncryptionAlgorithm=new IS,Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],uE.prototype,"contentType",void 0),Xm([qm({type:IS})],uE.prototype,"contentEncryptionAlgorithm",void 0),Xm([qm({type:hE,optional:!0})],uE.prototype,"encryptedContent",void 0);class dE{constructor(e={}){this.keyAttrId="",Object.assign(this,e)}}var gE;Xm([qm({type:oy.ObjectIdentifier})],dE.prototype,"keyAttrId",void 0),Xm([qm({type:oy.Any,optional:!0})],dE.prototype,"keyAttr",void 0);class fE{constructor(e={}){this.subjectKeyIdentifier=new zw,Object.assign(this,e)}}Xm([qm({type:zw})],fE.prototype,"subjectKeyIdentifier",void 0),Xm([qm({type:oy.GeneralizedTime,optional:!0})],fE.prototype,"date",void 0),Xm([qm({type:dE,optional:!0})],fE.prototype,"other",void 0);let pE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:fE,context:0,implicit:!0,optional:!0})],pE.prototype,"rKeyId",void 0),Xm([qm({type:fS,optional:!0})],pE.prototype,"issuerAndSerialNumber",void 0),pE=Xm([jm({type:ny.Choice})],pE);class yE{constructor(e={}){this.rid=new pE,this.encryptedKey=new pm,Object.assign(this,e)}}Xm([qm({type:pE})],yE.prototype,"rid",void 0),Xm([qm({type:pm})],yE.prototype,"encryptedKey",void 0);let mE=gE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,gE.prototype)}};mE=gE=Xm([jm({type:ny.Sequence,itemType:yE})],mE);class bE{constructor(e={}){this.algorithm=new tS,this.publicKey=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:tS})],bE.prototype,"algorithm",void 0),Xm([qm({type:oy.BitString})],bE.prototype,"publicKey",void 0);let AE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:zw,context:0,implicit:!0,optional:!0})],AE.prototype,"subjectKeyIdentifier",void 0),Xm([qm({type:bE,context:1,implicit:!0,optional:!0})],AE.prototype,"originatorKey",void 0),Xm([qm({type:fS,optional:!0})],AE.prototype,"issuerAndSerialNumber",void 0),AE=Xm([jm({type:ny.Choice})],AE);class IE{constructor(e={}){this.version=yS.v3,this.originator=new AE,this.keyEncryptionAlgorithm=new AS,this.recipientEncryptedKeys=new mE,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],IE.prototype,"version",void 0),Xm([qm({type:AE,context:0})],IE.prototype,"originator",void 0),Xm([qm({type:pm,context:1,optional:!0})],IE.prototype,"ukm",void 0),Xm([qm({type:AS})],IE.prototype,"keyEncryptionAlgorithm",void 0),Xm([qm({type:mE})],IE.prototype,"recipientEncryptedKeys",void 0);let vE=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:zw,context:0,implicit:!0})],vE.prototype,"subjectKeyIdentifier",void 0),Xm([qm({type:fS})],vE.prototype,"issuerAndSerialNumber",void 0),vE=Xm([jm({type:ny.Choice})],vE);class wE{constructor(e={}){this.version=yS.v0,this.rid=new vE,this.keyEncryptionAlgorithm=new AS,this.encryptedKey=new pm,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],wE.prototype,"version",void 0),Xm([qm({type:vE})],wE.prototype,"rid",void 0),Xm([qm({type:AS})],wE.prototype,"keyEncryptionAlgorithm",void 0),Xm([qm({type:pm})],wE.prototype,"encryptedKey",void 0);class SE{constructor(e={}){this.keyIdentifier=new pm,Object.assign(this,e)}}Xm([qm({type:pm})],SE.prototype,"keyIdentifier",void 0),Xm([qm({type:oy.GeneralizedTime,optional:!0})],SE.prototype,"date",void 0),Xm([qm({type:dE,optional:!0})],SE.prototype,"other",void 0);class EE{constructor(e={}){this.version=yS.v4,this.kekid=new SE,this.keyEncryptionAlgorithm=new AS,this.encryptedKey=new pm,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],EE.prototype,"version",void 0),Xm([qm({type:SE})],EE.prototype,"kekid",void 0),Xm([qm({type:AS})],EE.prototype,"keyEncryptionAlgorithm",void 0),Xm([qm({type:pm})],EE.prototype,"encryptedKey",void 0);class CE{constructor(e={}){this.version=yS.v0,this.keyEncryptionAlgorithm=new AS,this.encryptedKey=new pm,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],CE.prototype,"version",void 0),Xm([qm({type:wS,context:0,optional:!0})],CE.prototype,"keyDerivationAlgorithm",void 0),Xm([qm({type:AS})],CE.prototype,"keyEncryptionAlgorithm",void 0),Xm([qm({type:pm})],CE.prototype,"encryptedKey",void 0);class kE{constructor(e={}){this.oriType="",this.oriValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],kE.prototype,"oriType",void 0),Xm([qm({type:oy.Any})],kE.prototype,"oriValue",void 0);let xE=class{constructor(e={}){Object.assign(this,e)}};var BE;Xm([qm({type:wE,optional:!0})],xE.prototype,"ktri",void 0),Xm([qm({type:IE,context:1,implicit:!0,optional:!0})],xE.prototype,"kari",void 0),Xm([qm({type:EE,context:2,implicit:!0,optional:!0})],xE.prototype,"kekri",void 0),Xm([qm({type:CE,context:3,implicit:!0,optional:!0})],xE.prototype,"pwri",void 0),Xm([qm({type:kE,context:4,implicit:!0,optional:!0})],xE.prototype,"ori",void 0),xE=Xm([jm({type:ny.Choice})],xE);let _E=BE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,BE.prototype)}};var RE;_E=BE=Xm([jm({type:ny.Set,itemType:xE})],_E);class OE{constructor(e={}){this.otherRevInfoFormat="",this.otherRevInfo=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],OE.prototype,"otherRevInfoFormat",void 0),Xm([qm({type:oy.Any})],OE.prototype,"otherRevInfo",void 0);let UE=class{constructor(e={}){this.other=new OE,Object.assign(this,e)}};Xm([qm({type:OE,context:1,implicit:!0})],UE.prototype,"other",void 0),UE=Xm([jm({type:ny.Choice})],UE);let TE=RE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,RE.prototype)}};TE=RE=Xm([jm({type:ny.Set,itemType:UE})],TE);class NE{constructor(e={}){Object.assign(this,e)}}var DE;Xm([qm({type:oE,context:0,implicit:!0,optional:!0})],NE.prototype,"certs",void 0),Xm([qm({type:TE,context:1,implicit:!0,optional:!0})],NE.prototype,"crls",void 0);let ME=DE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,DE.prototype)}};ME=DE=Xm([jm({type:ny.Set,itemType:SS})],ME);class PE{constructor(e={}){this.version=yS.v0,this.recipientInfos=new _E,this.encryptedContentInfo=new uE,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],PE.prototype,"version",void 0),Xm([qm({type:NE,context:0,implicit:!0,optional:!0})],PE.prototype,"originatorInfo",void 0),Xm([qm({type:_E})],PE.prototype,"recipientInfos",void 0),Xm([qm({type:uE})],PE.prototype,"encryptedContentInfo",void 0),Xm([qm({type:ME,context:1,implicit:!0,optional:!0})],PE.prototype,"unprotectedAttrs",void 0);const LE="1.2.840.113549.1.7.2";var HE;let KE=HE=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,HE.prototype)}};KE=HE=Xm([jm({type:ny.Set,itemType:mS})],KE);class VE{constructor(e={}){this.version=yS.v0,this.digestAlgorithms=new KE,this.encapContentInfo=new lE,this.signerInfos=new kS,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],VE.prototype,"version",void 0),Xm([qm({type:KE})],VE.prototype,"digestAlgorithms",void 0),Xm([qm({type:lE})],VE.prototype,"encapContentInfo",void 0),Xm([qm({type:oE,context:0,implicit:!0,optional:!0})],VE.prototype,"certificates",void 0),Xm([qm({type:TE,context:1,implicit:!0,optional:!0})],VE.prototype,"crls",void 0),Xm([qm({type:kS})],VE.prototype,"signerInfos",void 0);const QE="1.2.840.10045.2.1",FE="1.2.840.10045.4.1",GE="1.2.840.10045.4.3.1",$E="1.2.840.10045.4.3.2",jE="1.2.840.10045.4.3.3",qE="1.2.840.10045.4.3.4",zE="1.2.840.10045.3.1.7",WE="1.3.132.0.34",JE="1.3.132.0.35";function YE(e){return new tS({algorithm:e})}const ZE=YE(FE),XE=(YE(GE),YE($E)),eC=YE(jE),tC=YE(qE);let rC=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:oy.ObjectIdentifier})],rC.prototype,"fieldType",void 0),Xm([qm({type:oy.Any})],rC.prototype,"parameters",void 0),rC=Xm([jm({type:ny.Sequence})],rC);let sC=class{constructor(e={}){Object.assign(this,e)}};var iC;Xm([qm({type:oy.OctetString})],sC.prototype,"a",void 0),Xm([qm({type:oy.OctetString})],sC.prototype,"b",void 0),Xm([qm({type:oy.BitString,optional:!0})],sC.prototype,"seed",void 0),sC=Xm([jm({type:ny.Sequence})],sC),function(e){e[e.ecpVer1=1]="ecpVer1"}(iC||(iC={}));let nC=class{constructor(e={}){this.version=iC.ecpVer1,Object.assign(this,e)}};Xm([qm({type:oy.Integer})],nC.prototype,"version",void 0),Xm([qm({type:rC})],nC.prototype,"fieldID",void 0),Xm([qm({type:sC})],nC.prototype,"curve",void 0),Xm([qm({type:class extends pm{}})],nC.prototype,"base",void 0),Xm([qm({type:oy.Integer,converter:Am})],nC.prototype,"order",void 0),Xm([qm({type:oy.Integer,optional:!0})],nC.prototype,"cofactor",void 0),nC=Xm([jm({type:ny.Sequence})],nC);let oC=class{constructor(e={}){Object.assign(this,e)}};Xm([qm({type:oy.ObjectIdentifier})],oC.prototype,"namedCurve",void 0),Xm([qm({type:oy.Null})],oC.prototype,"implicitCurve",void 0),Xm([qm({type:nC})],oC.prototype,"specifiedCurve",void 0),oC=Xm([jm({type:ny.Choice})],oC);class aC{constructor(e={}){this.version=1,this.privateKey=new pm,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],aC.prototype,"version",void 0),Xm([qm({type:pm})],aC.prototype,"privateKey",void 0),Xm([qm({type:oC,context:0,optional:!0})],aC.prototype,"parameters",void 0),Xm([qm({type:oy.BitString,context:1,optional:!0})],aC.prototype,"publicKey",void 0);class cC{constructor(e={}){this.r=new ArrayBuffer(0),this.s=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.Integer,converter:Am})],cC.prototype,"r",void 0),Xm([qm({type:oy.Integer,converter:Am})],cC.prototype,"s",void 0);const lC="1.2.840.113549.1.1",hC=`${lC}.1`,uC=`${lC}.7`,dC=`${lC}.9`,gC=`${lC}.10`,fC=`${lC}.2`,pC=`${lC}.4`,yC=`${lC}.5`,mC=`${lC}.14`,bC=`${lC}.11`,AC=`${lC}.12`,IC=`${lC}.13`,vC=`${lC}.15`,wC=`${lC}.16`,SC="1.3.14.3.2.26",EC="2.16.840.1.101.3.4.2.4",CC="2.16.840.1.101.3.4.2.1",kC="2.16.840.1.101.3.4.2.2",xC="2.16.840.1.101.3.4.2.3",BC=`${lC}.8`;function _C(e){return new tS({algorithm:e,parameters:null})}_C("1.2.840.113549.2.2"),_C("1.2.840.113549.2.5");const RC=_C(SC),OC=(_C(EC),_C(CC),_C(kC),_C(xC),_C("2.16.840.1.101.3.4.2.5"),_C("2.16.840.1.101.3.4.2.6"),new tS({algorithm:BC,parameters:Zm.serialize(RC)})),UC=new tS({algorithm:dC,parameters:Zm.serialize(Sm.toASN(new Uint8Array([218,57,163,238,94,107,75,13,50,85,191,239,149,96,24,144,175,216,7,9]).buffer))});_C(hC),_C(fC),_C(pC),_C(yC),_C(vC),_C(wC),_C(AC),_C(IC),_C(vC),_C(wC);class TC{constructor(e={}){this.hashAlgorithm=new tS(RC),this.maskGenAlgorithm=new tS({algorithm:BC,parameters:Zm.serialize(RC)}),this.pSourceAlgorithm=new tS(UC),Object.assign(this,e)}}Xm([qm({type:tS,context:0,defaultValue:RC})],TC.prototype,"hashAlgorithm",void 0),Xm([qm({type:tS,context:1,defaultValue:OC})],TC.prototype,"maskGenAlgorithm",void 0),Xm([qm({type:tS,context:2,defaultValue:UC})],TC.prototype,"pSourceAlgorithm",void 0),new tS({algorithm:uC,parameters:Zm.serialize(new TC)});class NC{constructor(e={}){this.hashAlgorithm=new tS(RC),this.maskGenAlgorithm=new tS({algorithm:BC,parameters:Zm.serialize(RC)}),this.saltLength=20,this.trailerField=1,Object.assign(this,e)}}Xm([qm({type:tS,context:0,defaultValue:RC})],NC.prototype,"hashAlgorithm",void 0),Xm([qm({type:tS,context:1,defaultValue:OC})],NC.prototype,"maskGenAlgorithm",void 0),Xm([qm({type:oy.Integer,context:2,defaultValue:20})],NC.prototype,"saltLength",void 0),Xm([qm({type:oy.Integer,context:3,defaultValue:1})],NC.prototype,"trailerField",void 0),new tS({algorithm:gC,parameters:Zm.serialize(new NC)});class DC{constructor(e={}){this.digestAlgorithm=new tS,this.digest=new pm,Object.assign(this,e)}}var MC;Xm([qm({type:tS})],DC.prototype,"digestAlgorithm",void 0),Xm([qm({type:pm})],DC.prototype,"digest",void 0);class PC{constructor(e={}){this.prime=new ArrayBuffer(0),this.exponent=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.Integer,converter:Am})],PC.prototype,"prime",void 0),Xm([qm({type:oy.Integer,converter:Am})],PC.prototype,"exponent",void 0),Xm([qm({type:oy.Integer,converter:Am})],PC.prototype,"coefficient",void 0);let LC=MC=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,MC.prototype)}};LC=MC=Xm([jm({type:ny.Sequence,itemType:PC})],LC);class HC{constructor(e={}){this.version=0,this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),this.privateExponent=new ArrayBuffer(0),this.prime1=new ArrayBuffer(0),this.prime2=new ArrayBuffer(0),this.exponent1=new ArrayBuffer(0),this.exponent2=new ArrayBuffer(0),this.coefficient=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.Integer})],HC.prototype,"version",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"modulus",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"publicExponent",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"privateExponent",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"prime1",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"prime2",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"exponent1",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"exponent2",void 0),Xm([qm({type:oy.Integer,converter:Am})],HC.prototype,"coefficient",void 0),Xm([qm({type:LC,optional:!0})],HC.prototype,"otherPrimeInfos",void 0);class KC{constructor(e={}){this.modulus=new ArrayBuffer(0),this.publicExponent=new ArrayBuffer(0),Object.assign(this,e)}}var VC;Xm([qm({type:oy.Integer,converter:Am})],KC.prototype,"modulus",void 0),Xm([qm({type:oy.Integer,converter:Am})],KC.prototype,"publicExponent",void 0),function(e){e[e.Transient=0]="Transient",e[e.Singleton=1]="Singleton",e[e.ResolutionScoped=2]="ResolutionScoped",e[e.ContainerScoped=3]="ContainerScoped"}(VC||(VC={}));const QC=VC;var FC=function(e,t){return FC=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},FC(e,t)};function GC(e,t){function r(){this.constructor=e}FC(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function $C(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],s=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&s>=e.length&&(e=void 0),{value:e&&e[s++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function jC(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var s,i,n=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(s=n.next()).done;)o.push(s.value)}catch(e){i={error:e}}finally{try{s&&!s.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}return o}function qC(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(jC(arguments[t]));return e}function zC(e){return!!e.useClass}function WC(e){return!!e.useFactory}var JC=function(){function e(e){this.wrap=e,this.reflectMethods=["get","getPrototypeOf","setPrototypeOf","getOwnPropertyDescriptor","defineProperty","has","set","deleteProperty","apply","construct","ownKeys"]}return e.prototype.createProxy=function(e){var t,r=this,s=!1;return new Proxy({},this.createHandler(function(){return s||(t=e(r.wrap()),s=!0),t}))},e.prototype.createHandler=function(e){var t={};return this.reflectMethods.forEach(function(r){t[r]=function(){for(var t=[],s=0;s<arguments.length;s++)t[s]=arguments[s];return t[0]=e(),Reflect[r].apply(void 0,qC(t))}}),t},e}();function YC(e){return"string"==typeof e||"symbol"==typeof e}function ZC(e){return"object"==typeof e&&"token"in e&&"transform"in e}function XC(e){return!!e.useToken}function ek(e){return null!=e.useValue}var tk=function(){function e(){this._registryMap=new Map}return e.prototype.entries=function(){return this._registryMap.entries()},e.prototype.getAll=function(e){return this.ensure(e),this._registryMap.get(e)},e.prototype.get=function(e){this.ensure(e);var t=this._registryMap.get(e);return t[t.length-1]||null},e.prototype.set=function(e,t){this.ensure(e),this._registryMap.get(e).push(t)},e.prototype.setAll=function(e,t){this._registryMap.set(e,t)},e.prototype.has=function(e){return this.ensure(e),this._registryMap.get(e).length>0},e.prototype.clear=function(){this._registryMap.clear()},e.prototype.ensure=function(e){this._registryMap.has(e)||this._registryMap.set(e,[])},e}();const rk=tk,sk=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return GC(t,e),t}(rk),ik=function(){this.scopedResolutions=new Map};var nk=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return GC(t,e),t}(rk),ok=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return GC(t,e),t}(rk);const ak=function(){this.preResolution=new nk,this.postResolution=new ok};var ck=new Map,lk=function(){function e(e){this.parent=e,this._registry=new sk,this.interceptors=new ak,this.disposed=!1,this.disposables=new Set}return e.prototype.register=function(e,t,r){var s;if(void 0===r&&(r={lifecycle:QC.Transient}),this.ensureNotDisposed(),s=function(e){return zC(e)||ek(e)||XC(e)||WC(e)}(t)?t:{useClass:t},XC(s))for(var i=[e],n=s;null!=n;){var o=n.useToken;if(i.includes(o))throw new Error("Token registration cycle detected! "+qC(i,[o]).join(" -> "));i.push(o);var a=this._registry.get(o);n=a&&XC(a.provider)?a.provider:null}if((r.lifecycle===QC.Singleton||r.lifecycle==QC.ContainerScoped||r.lifecycle==QC.ResolutionScoped)&&(ek(s)||WC(s)))throw new Error('Cannot use lifecycle "'+QC[r.lifecycle]+'" with ValueProviders or FactoryProviders');return this._registry.set(e,{provider:s,options:r}),this},e.prototype.registerType=function(e,t){return this.ensureNotDisposed(),YC(t)?this.register(e,{useToken:t}):this.register(e,{useClass:t})},e.prototype.registerInstance=function(e,t){return this.ensureNotDisposed(),this.register(e,{useValue:t})},e.prototype.registerSingleton=function(e,t){if(this.ensureNotDisposed(),YC(e)){if(YC(t))return this.register(e,{useToken:t},{lifecycle:QC.Singleton});if(t)return this.register(e,{useClass:t},{lifecycle:QC.Singleton});throw new Error('Cannot register a type name as a singleton without a "to" token')}var r=e;return t&&!YC(t)&&(r=t),this.register(e,{useClass:r},{lifecycle:QC.Singleton})},e.prototype.resolve=function(e,t,r){void 0===t&&(t=new ik),void 0===r&&(r=!1),this.ensureNotDisposed();var s=this.getRegistration(e);if(!s&&YC(e)){if(r)return;throw new Error('Attempted to resolve unregistered dependency token: "'+e.toString()+'"')}if(this.executePreResolutionInterceptor(e,"Single"),s){var i=this.resolveRegistration(s,t);return this.executePostResolutionInterceptor(e,i,"Single"),i}if(function(e){return"function"==typeof e||e instanceof JC}(e))return i=this.construct(e,t),this.executePostResolutionInterceptor(e,i,"Single"),i;throw new Error("Attempted to construct an undefined constructor. Could mean a circular dependency problem. Try using `delay` function.")},e.prototype.executePreResolutionInterceptor=function(e,t){var r,s;if(this.interceptors.preResolution.has(e)){var i=[];try{for(var n=$C(this.interceptors.preResolution.getAll(e)),o=n.next();!o.done;o=n.next()){var a=o.value;"Once"!=a.options.frequency&&i.push(a),a.callback(e,t)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(s=n.return)&&s.call(n)}finally{if(r)throw r.error}}this.interceptors.preResolution.setAll(e,i)}},e.prototype.executePostResolutionInterceptor=function(e,t,r){var s,i;if(this.interceptors.postResolution.has(e)){var n=[];try{for(var o=$C(this.interceptors.postResolution.getAll(e)),a=o.next();!a.done;a=o.next()){var c=a.value;"Once"!=c.options.frequency&&n.push(c),c.callback(e,t,r)}}catch(e){s={error:e}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(s)throw s.error}}this.interceptors.postResolution.setAll(e,n)}},e.prototype.resolveRegistration=function(e,t){if(this.ensureNotDisposed(),e.options.lifecycle===QC.ResolutionScoped&&t.scopedResolutions.has(e))return t.scopedResolutions.get(e);var r,s=e.options.lifecycle===QC.Singleton,i=e.options.lifecycle===QC.ContainerScoped,n=s||i;return r=ek(e.provider)?e.provider.useValue:XC(e.provider)?n?e.instance||(e.instance=this.resolve(e.provider.useToken,t)):this.resolve(e.provider.useToken,t):zC(e.provider)?n?e.instance||(e.instance=this.construct(e.provider.useClass,t)):this.construct(e.provider.useClass,t):WC(e.provider)?e.provider.useFactory(this):this.construct(e.provider,t),e.options.lifecycle===QC.ResolutionScoped&&t.scopedResolutions.set(e,r),r},e.prototype.resolveAll=function(e,t,r){var s=this;void 0===t&&(t=new ik),void 0===r&&(r=!1),this.ensureNotDisposed();var i=this.getAllRegistrations(e);if(!i&&YC(e)){if(r)return[];throw new Error('Attempted to resolve unregistered dependency token: "'+e.toString()+'"')}if(this.executePreResolutionInterceptor(e,"All"),i){var n=i.map(function(e){return s.resolveRegistration(e,t)});return this.executePostResolutionInterceptor(e,n,"All"),n}var o=[this.construct(e,t)];return this.executePostResolutionInterceptor(e,o,"All"),o},e.prototype.isRegistered=function(e,t){return void 0===t&&(t=!1),this.ensureNotDisposed(),this._registry.has(e)||t&&(this.parent||!1)&&this.parent.isRegistered(e,!0)},e.prototype.reset=function(){this.ensureNotDisposed(),this._registry.clear(),this.interceptors.preResolution.clear(),this.interceptors.postResolution.clear()},e.prototype.clearInstances=function(){var e,t;this.ensureNotDisposed();try{for(var r=$C(this._registry.entries()),s=r.next();!s.done;s=r.next()){var i=jC(s.value,2),n=i[0],o=i[1];this._registry.setAll(n,o.filter(function(e){return!ek(e.provider)}).map(function(e){return e.instance=void 0,e}))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}},e.prototype.createChildContainer=function(){var t,r;this.ensureNotDisposed();var s=new e(this);try{for(var i=$C(this._registry.entries()),n=i.next();!n.done;n=i.next()){var o=jC(n.value,2),a=o[0],c=o[1];c.some(function(e){return e.options.lifecycle===QC.ContainerScoped})&&s._registry.setAll(a,c.map(function(e){return e.options.lifecycle===QC.ContainerScoped?{provider:e.provider,options:e.options}:e}))}}catch(e){t={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}return s},e.prototype.beforeResolution=function(e,t,r){void 0===r&&(r={frequency:"Always"}),this.interceptors.preResolution.set(e,{callback:t,options:r})},e.prototype.afterResolution=function(e,t,r){void 0===r&&(r={frequency:"Always"}),this.interceptors.postResolution.set(e,{callback:t,options:r})},e.prototype.dispose=function(){return function(e,t,r,s){return new(r||(r=Promise))(function(i,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function a(e){try{c(s.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((s=s.apply(e,t||[])).next())})}(this,void 0,void 0,function(){var e;return function(e,t){var r,s,i,n,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return n={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(n[Symbol.iterator]=function(){return this}),n;function a(n){return function(a){return function(n){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,s&&(i=2&n[0]?s.return:n[0]?s.throw||((i=s.return)&&i.call(s),0):s.next)&&!(i=i.call(s,n[1])).done)return i;switch(s=0,i&&(n=[2&n[0],i.value]),n[0]){case 0:case 1:i=n;break;case 4:return o.label++,{value:n[1],done:!1};case 5:o.label++,s=n[1],n=[0];continue;case 7:n=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==n[0]&&2!==n[0])){o=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){o.label=n[1];break}if(6===n[0]&&o.label<i[1]){o.label=i[1],i=n;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(n);break}i[2]&&o.ops.pop(),o.trys.pop();continue}n=t.call(e,o)}catch(e){n=[6,e],s=0}finally{r=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}([n,a])}}}(this,function(t){switch(t.label){case 0:return this.disposed=!0,e=[],this.disposables.forEach(function(t){var r=t.dispose();r&&e.push(r)}),[4,Promise.all(e)];case 1:return t.sent(),[2]}})})},e.prototype.getRegistration=function(e){return this.isRegistered(e)?this._registry.get(e):this.parent?this.parent.getRegistration(e):null},e.prototype.getAllRegistrations=function(e){return this.isRegistered(e)?this._registry.getAll(e):this.parent?this.parent.getAllRegistrations(e):null},e.prototype.construct=function(e,t){var r=this;if(e instanceof JC)return e.createProxy(function(e){return r.resolve(e,t)});var s,i=function(){var s=ck.get(e);if(!s||0===s.length){if(0===e.length)return new e;throw new Error('TypeInfo not known for "'+e.name+'"')}var i=s.map(r.resolveParams(t,e));return new(e.bind.apply(e,qC([void 0],i)))}();return"function"!=typeof(s=i).dispose||s.dispose.length>0||this.disposables.add(i),i},e.prototype.resolveParams=function(e,t){var r=this;return function(s,i){var n,o,a,c;try{return"object"==typeof(c=s)&&"token"in c&&"multiple"in c?ZC(s)?s.multiple?(n=r.resolve(s.transform)).transform.apply(n,qC([r.resolveAll(s.token,new ik,s.isOptional)],s.transformArgs)):(o=r.resolve(s.transform)).transform.apply(o,qC([r.resolve(s.token,e,s.isOptional)],s.transformArgs)):s.multiple?r.resolveAll(s.token,new ik,s.isOptional):r.resolve(s.token,e,s.isOptional):ZC(s)?(a=r.resolve(s.transform,e)).transform.apply(a,qC([r.resolve(s.token,e)],s.transformArgs)):r.resolve(s,e)}catch(e){throw new Error(function(e,t,r){var s,i,n=jC(e.toString().match(/constructor\(([\w, ]+)\)/)||[],2)[1];return function(e,t,r){return void 0===r&&(r=" "),qC([e],t.message.split("\n").map(function(e){return r+e})).join("\n")}("Cannot inject the dependency "+(i=t,(null===(s=void 0===n?null:n)?"at position #"+i:'"'+s.split(",")[i].trim()+'" at position #'+i)+' of "')+e.name+'" constructor. Reason:',r)}(t,i,e))}}},e.prototype.ensureNotDisposed=function(){if(this.disposed)throw new Error("This container has been disposed, you cannot interact with a disposed container")},e}(),hk=new lk;const uk=function(e){return function(t){ck.set(t,function(e){var t=Reflect.getMetadata("design:paramtypes",e)||[],r=Reflect.getOwnMetadata("injectionTokens",e)||{};return Object.keys(r).forEach(function(e){t[+e]=r[e]}),t}(t)),e&&e.token&&(Array.isArray(e.token)?e.token.forEach(function(e){hk.register(e,t)}):hk.register(e.token,t))}};if("undefined"==typeof Reflect||!Reflect.getMetadata)throw new Error("tsyringe requires a reflect polyfill. Please add 'import \"reflect-metadata\"' to the top of your entry point.");var dk;class gk{constructor(e={}){this.attrId="",this.attrValues=[],Object.assign(e)}}Xm([qm({type:oy.ObjectIdentifier})],gk.prototype,"attrId",void 0),Xm([qm({type:oy.Any,repeated:"set"})],gk.prototype,"attrValues",void 0);let fk=dk=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,dk.prototype)}};var pk;fk=dk=Xm([jm({type:ny.Sequence,itemType:gk})],fk);let yk=pk=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,pk.prototype)}};yk=pk=Xm([jm({type:ny.Sequence,itemType:aE})],yk);class mk{constructor(e={}){this.certId="",this.certValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],mk.prototype,"certId",void 0),Xm([qm({type:oy.Any,context:0})],mk.prototype,"certValue",void 0);class bk{constructor(e={}){this.crlId="",this.crltValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],bk.prototype,"crlId",void 0),Xm([qm({type:oy.Any,context:0})],bk.prototype,"crltValue",void 0);class Ak extends pm{}class Ik{constructor(e={}){this.encryptionAlgorithm=new tS,this.encryptedData=new Ak,Object.assign(this,e)}}var vk,wk;Xm([qm({type:tS})],Ik.prototype,"encryptionAlgorithm",void 0),Xm([qm({type:Ak})],Ik.prototype,"encryptedData",void 0),function(e){e[e.v1=0]="v1"}(wk||(wk={}));class Sk extends pm{}let Ek=vk=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,vk.prototype)}};Ek=vk=Xm([jm({type:ny.Sequence,itemType:Gw})],Ek);class Ck{constructor(e={}){this.version=wk.v1,this.privateKeyAlgorithm=new tS,this.privateKey=new Sk,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],Ck.prototype,"version",void 0),Xm([qm({type:tS})],Ck.prototype,"privateKeyAlgorithm",void 0),Xm([qm({type:Sk})],Ck.prototype,"privateKey",void 0),Xm([qm({type:Ek,implicit:!0,context:0,optional:!0})],Ck.prototype,"attributes",void 0);let kk=class extends Ck{};kk=Xm([jm({type:ny.Sequence})],kk);let xk=class extends Ik{};xk=Xm([jm({type:ny.Sequence})],xk);class Bk{constructor(e={}){this.secretTypeId="",this.secretValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Bk.prototype,"secretTypeId",void 0),Xm([qm({type:oy.Any,context:0})],Bk.prototype,"secretValue",void 0);class _k{constructor(e={}){this.mac=new DC,this.macSalt=new pm,this.iterations=1,Object.assign(this,e)}}Xm([qm({type:DC})],_k.prototype,"mac",void 0),Xm([qm({type:pm})],_k.prototype,"macSalt",void 0),Xm([qm({type:oy.Integer,defaultValue:1})],_k.prototype,"iterations",void 0);class Rk{constructor(e={}){this.version=3,this.authSafe=new aE,this.macData=new _k,Object.assign(this,e)}}var Ok;Xm([qm({type:oy.Integer})],Rk.prototype,"version",void 0),Xm([qm({type:aE})],Rk.prototype,"authSafe",void 0),Xm([qm({type:_k,optional:!0})],Rk.prototype,"macData",void 0);class Uk{constructor(e={}){this.bagId="",this.bagValue=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:oy.ObjectIdentifier})],Uk.prototype,"bagId",void 0),Xm([qm({type:oy.Any,context:0})],Uk.prototype,"bagValue",void 0),Xm([qm({type:gk,repeated:"set",optional:!0})],Uk.prototype,"bagAttributes",void 0);let Tk=Ok=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Ok.prototype)}};var Nk,Dk,Mk;Tk=Ok=Xm([jm({type:ny.Sequence,itemType:Uk})],Tk);const Pk="1.2.840.113549.1.9",Lk=`${Pk}.7`,Hk=`${Pk}.14`;let Kk=class extends mv{constructor(e={}){super(e)}toString(){return{}.toString(),this.ia5String||super.toString()}};Xm([qm({type:oy.IA5String})],Kk.prototype,"ia5String",void 0),Kk=Xm([jm({type:ny.Choice})],Kk);let Vk=class extends aE{};Vk=Xm([jm({type:ny.Sequence})],Vk);let Qk=class extends Rk{};Qk=Xm([jm({type:ny.Sequence})],Qk);let Fk=class extends Ik{};Fk=Xm([jm({type:ny.Sequence})],Fk);let Gk=class{constructor(e=""){this.value=e}toString(){return this.value}};Xm([qm({type:oy.IA5String})],Gk.prototype,"value",void 0),Gk=Xm([jm({type:ny.Choice})],Gk);let $k=class extends Kk{};$k=Xm([jm({type:ny.Choice})],$k);let jk=class extends mv{};jk=Xm([jm({type:ny.Choice})],jk);let qk=class{constructor(e=new Date){this.value=e}};Xm([qm({type:oy.GeneralizedTime})],qk.prototype,"value",void 0),qk=Xm([jm({type:ny.Choice})],qk);let zk=class extends mv{};zk=Xm([jm({type:ny.Choice})],zk);let Wk=class{constructor(e="M"){this.value=e}toString(){return this.value}};Xm([qm({type:oy.PrintableString})],Wk.prototype,"value",void 0),Wk=Xm([jm({type:ny.Choice})],Wk);let Jk=class{constructor(e=""){this.value=e}toString(){return this.value}};Xm([qm({type:oy.PrintableString})],Jk.prototype,"value",void 0),Jk=Xm([jm({type:ny.Choice})],Jk);let Yk=class extends Jk{};Yk=Xm([jm({type:ny.Choice})],Yk);let Zk=class extends mv{};Zk=Xm([jm({type:ny.Choice})],Zk);let Xk=class{constructor(e=""){this.value=e}toString(){return this.value}};Xm([qm({type:oy.ObjectIdentifier})],Xk.prototype,"value",void 0),Xk=Xm([jm({type:ny.Choice})],Xk);let ex=class extends sS{};ex=Xm([jm({type:ny.Choice})],ex);let tx=class{constructor(e=0){this.value=e}toString(){return this.value.toString()}};Xm([qm({type:oy.Integer})],tx.prototype,"value",void 0),tx=Xm([jm({type:ny.Choice})],tx);let rx=class extends CS{};rx=Xm([jm({type:ny.Sequence})],rx);let sx=class extends mv{};sx=Xm([jm({type:ny.Choice})],sx);let ix=Nk=class extends aS{constructor(e){super(e),Object.setPrototypeOf(this,Nk.prototype)}};ix=Nk=Xm([jm({type:ny.Sequence})],ix);let nx=Dk=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Dk.prototype)}};nx=Dk=Xm([jm({type:ny.Set,itemType:SS})],nx);let ox=class{constructor(e=""){this.value=e}toString(){return this.value}};Xm([qm({type:oy.BmpString})],ox.prototype,"value",void 0),ox=Xm([jm({type:ny.Choice})],ox);let ax=class extends tS{};ax=Xm([jm({type:ny.Sequence})],ax);let cx=Mk=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,Mk.prototype)}};var lx;cx=Mk=Xm([jm({type:ny.Sequence,itemType:ax})],cx);let hx=lx=class extends Ym{constructor(e){super(e),Object.setPrototypeOf(this,lx.prototype)}};hx=lx=Xm([jm({type:ny.Sequence,itemType:Gw})],hx);class ux{constructor(e={}){this.version=0,this.subject=new wv,this.subjectPKInfo=new rS,this.attributes=new hx,Object.assign(this,e)}}Xm([qm({type:oy.Integer})],ux.prototype,"version",void 0),Xm([qm({type:wv})],ux.prototype,"subject",void 0),Xm([qm({type:rS})],ux.prototype,"subjectPKInfo",void 0),Xm([qm({type:hx,implicit:!0,context:0})],ux.prototype,"attributes",void 0);class dx{constructor(e={}){this.certificationRequestInfo=new ux,this.signatureAlgorithm=new tS,this.signature=new ArrayBuffer(0),Object.assign(this,e)}}Xm([qm({type:ux})],dx.prototype,"certificationRequestInfo",void 0),Xm([qm({type:tS})],dx.prototype,"signatureAlgorithm",void 0),Xm([qm({type:oy.BitString})],dx.prototype,"signature",void 0);const gx="crypto.algorithm",fx="crypto.algorithmProvider";var px;hk.registerSingleton(fx,class{getAlgorithms(){return hk.resolveAll(gx)}toAsnAlgorithm(e){for(const t of this.getAlgorithms()){const r=t.toAsnAlgorithm(e);if(r)return r}if(/^[0-9.]+$/.test(e.name)){const t=new tS({algorithm:e.name});if("parameters"in e){const r=e;t.parameters=r.parameters}return t}throw new Error("Cannot convert WebCrypto algorithm to ASN.1 algorithm")}toWebAlgorithm(e){for(const t of this.getAlgorithms()){const r=t.toWebAlgorithm(e);if(r)return r}return{name:e.algorithm,parameters:e.parameters}}});const yx="1.3.36.3.3.2.8.1.1",mx=`${yx}.1`,bx=`${yx}.2`,Ax=`${yx}.3`,Ix=`${yx}.4`,vx=`${yx}.5`,wx=`${yx}.6`,Sx=`${yx}.7`,Ex=`${yx}.8`,Cx=`${yx}.9`,kx=`${yx}.10`,xx=`${yx}.11`,Bx=`${yx}.12`,_x=`${yx}.13`,Rx=`${yx}.14`,Ox="brainpoolP160r1",Ux="brainpoolP160t1",Tx="brainpoolP192r1",Nx="brainpoolP192t1",Dx="brainpoolP224r1",Mx="brainpoolP224t1",Px="brainpoolP256r1",Lx="brainpoolP256t1",Hx="brainpoolP320r1",Kx="brainpoolP320t1",Vx="brainpoolP384r1",Qx="brainpoolP384t1",Fx="brainpoolP512r1",Gx="brainpoolP512t1",$x="ECDSA";let jx=px=class{toAsnAlgorithm(e){if(e.name.toLowerCase()===$x.toLowerCase())if("hash"in e)switch(("string"==typeof e.hash?e.hash:e.hash.name).toLowerCase()){case"sha-1":return ZE;case"sha-256":return XE;case"sha-384":return eC;case"sha-512":return tC}else if("namedCurve"in e){let t="";switch(e.namedCurve){case"P-256":t=zE;break;case"K-256":t=px.SECP256K1;break;case"P-384":t=WE;break;case"P-521":t=JE;break;case Ox:t=mx;break;case Ux:t=bx;break;case Tx:t=Ax;break;case Nx:t=Ix;break;case Dx:t=vx;break;case Mx:t=wx;break;case Px:t=Sx;break;case Lx:t=Ex;break;case Hx:t=Cx;break;case Kx:t=kx;break;case Vx:t=xx;break;case Qx:t=Bx;break;case Fx:t=_x;break;case Gx:t=Rx}if(t)return new tS({algorithm:QE,parameters:Zm.serialize(new oC({namedCurve:t}))})}return null}toWebAlgorithm(e){switch(e.algorithm){case FE:return{name:$x,hash:{name:"SHA-1"}};case $E:return{name:$x,hash:{name:"SHA-256"}};case jE:return{name:$x,hash:{name:"SHA-384"}};case qE:return{name:$x,hash:{name:"SHA-512"}};case QE:if(!e.parameters)throw new TypeError("Cannot get required parameters from EC algorithm");switch(Zm.parse(e.parameters,oC).namedCurve){case zE:return{name:$x,namedCurve:"P-256"};case px.SECP256K1:return{name:$x,namedCurve:"K-256"};case WE:return{name:$x,namedCurve:"P-384"};case JE:return{name:$x,namedCurve:"P-521"};case mx:return{name:$x,namedCurve:Ox};case bx:return{name:$x,namedCurve:Ux};case Ax:return{name:$x,namedCurve:Tx};case Ix:return{name:$x,namedCurve:Nx};case vx:return{name:$x,namedCurve:Dx};case wx:return{name:$x,namedCurve:Mx};case Sx:return{name:$x,namedCurve:Px};case Ex:return{name:$x,namedCurve:Lx};case Cx:return{name:$x,namedCurve:Hx};case kx:return{name:$x,namedCurve:Kx};case xx:return{name:$x,namedCurve:Vx};case Bx:return{name:$x,namedCurve:Qx};case _x:return{name:$x,namedCurve:Fx};case Rx:return{name:$x,namedCurve:Gx}}}return null}};jx.SECP256K1="1.3.132.0.10",jx=px=Xm([uk()],jx),hk.registerSingleton(gx,jx);const qx=Symbol("name"),zx=Symbol("value");class Wx{constructor(e,t={},r=""){this[qx]=e,this[zx]=r;for(const e in t)this[e]=t[e]}}Wx.NAME=qx,Wx.VALUE=zx;class Jx{static toString(e){return this.items[e]||e}}Jx.items={[SC]:"sha1",[EC]:"sha224",[CC]:"sha256",[kC]:"sha384",[xC]:"sha512",[hC]:"rsaEncryption",[yC]:"sha1WithRSAEncryption",[mC]:"sha224WithRSAEncryption",[bC]:"sha256WithRSAEncryption",[AC]:"sha384WithRSAEncryption",[IC]:"sha512WithRSAEncryption",[QE]:"ecPublicKey",[FE]:"ecdsaWithSHA1",[GE]:"ecdsaWithSHA224",[$E]:"ecdsaWithSHA256",[jE]:"ecdsaWithSHA384",[qE]:"ecdsaWithSHA512",[Iw]:"TLS WWW server authentication",[vw]:"TLS WWW client authentication",[ww]:"Code Signing",[Sw]:"E-mail Protection",[Ew]:"Time Stamping",[Cw]:"OCSP Signing",[LE]:"Signed Data"};class Yx{static serialize(e){return this.serializeObj(e).join("\n")}static pad(e=0){return"".padStart(2*e," ")}static serializeObj(e,t=0){const r=[];let s=this.pad(t++),i="";const n=e[Wx.VALUE];n&&(i=` ${n}`),r.push(`${s}${e[Wx.NAME]}:${i}`),s=this.pad(t);for(const i in e){if("symbol"==typeof i)continue;const n=e[i],o=i?`${i}: `:"";if("string"==typeof n||"number"==typeof n||"boolean"==typeof n)r.push(`${s}${o}${n}`);else if(n instanceof Date)r.push(`${s}${o}${n.toUTCString()}`);else if(Array.isArray(n))for(const e of n)e[Wx.NAME]=i,r.push(...this.serializeObj(e,t));else if(n instanceof Wx)n[Wx.NAME]=i,r.push(...this.serializeObj(n,t));else if(Tf.isBufferSource(n))i?(r.push(`${s}${o}`),r.push(...this.serializeBufferSource(n,t+1))):r.push(...this.serializeBufferSource(n,t));else{if(!("toTextObject"in n))throw new TypeError("Cannot serialize data in text format. Unsupported type.");{const e=n.toTextObject();e[Wx.NAME]=i,r.push(...this.serializeObj(e,t))}}}return r}static serializeBufferSource(e,t=0){const r=this.pad(t),s=Tf.toUint8Array(e),i=[];for(let e=0;e<s.length;){const t=[];for(let r=0;r<16&&e<s.length;r++){8===r&&t.push("");const i=s[e++].toString(16).padStart(2,"0");t.push(i)}i.push(`${r}${t.join(" ")}`)}return i}static serializeAlgorithm(e){return this.algorithmSerializer.toTextObject(e)}}Yx.oidSerializer=Jx,Yx.algorithmSerializer=class{static toTextObject(e){const t=new Wx("Algorithm Identifier",{},Jx.toString(e.algorithm));if(e.parameters)switch(e.algorithm){case QE:{const r=(new jx).toWebAlgorithm(e);r&&"namedCurve"in r?t["Named Curve"]=r.namedCurve:t.Parameters=e.parameters;break}default:t.Parameters=e.parameters}return t}};class Zx{constructor(...e){if(1===e.length){const t=e[0];this.rawData=Zm.serialize(t),this.onInit(t)}else{const t=Zm.parse(e[0],e[1]);this.rawData=Tf.toArrayBuffer(e[0]),this.onInit(t)}}equal(e){return e instanceof Zx&&Qf(e.rawData,this.rawData)}toString(e="text"){switch(e){case"asn":return Zm.toString(this.rawData);case"text":return Yx.serialize(this.toTextObject());case"hex":return Kf.ToHex(this.rawData);case"base64":return Kf.ToBase64(this.rawData);case"base64url":return Kf.ToBase64Url(this.rawData);default:throw TypeError("Argument 'format' is unsupported value")}}getTextName(){return this.constructor.NAME}toTextObject(){const e=this.toTextObjectEmpty();return e[""]=this.rawData,e}toTextObjectEmpty(e){return new Wx(this.getTextName(),{},e)}}Zx.NAME="ASN";class Xx extends Zx{constructor(...e){let t;t=Tf.isBufferSource(e[0])?Tf.toArrayBuffer(e[0]):Zm.serialize(new oS({extnID:e[0],critical:e[1],extnValue:new pm(Tf.toArrayBuffer(e[2]))})),super(t,oS)}onInit(e){this.type=e.extnID,this.critical=e.critical,this.value=e.extnValue.buffer}toTextObject(){const e=this.toTextObjectWithoutValue();return e[""]=this.value,e}toTextObjectWithoutValue(){const e=this.toTextObjectEmpty(this.critical?"critical":void 0);return e[Wx.NAME]===Xx.NAME&&(e[Wx.NAME]=Jx.toString(this.type)),e}}var eB;class tB{static isCryptoKeyPair(e){return e&&e.privateKey&&e.publicKey}static isCryptoKey(e){return e&&e.usages&&e.type&&e.algorithm&&void 0!==e.extractable}constructor(){this.items=new Map,this[eB]="CryptoProvider","undefined"!=typeof self&&"undefined"!=typeof crypto?this.set(tB.DEFAULT,crypto):"undefined"!=typeof global&&global.crypto&&global.crypto.subtle&&this.set(tB.DEFAULT,global.crypto)}clear(){this.items.clear()}delete(e){return this.items.delete(e)}forEach(e,t){return this.items.forEach(e,t)}has(e){return this.items.has(e)}get size(){return this.items.size}entries(){return this.items.entries()}keys(){return this.items.keys()}values(){return this.items.values()}[Symbol.iterator](){return this.items[Symbol.iterator]()}get(e=tB.DEFAULT){const t=this.items.get(e.toLowerCase());if(!t)throw new Error(`Cannot get Crypto by name '${e}'`);return t}set(e,t){if("string"==typeof e){if(!t)throw new TypeError("Argument 'value' is required");this.items.set(e.toLowerCase(),t)}else this.items.set(tB.DEFAULT,e);return this}}eB=Symbol.toStringTag,tB.DEFAULT="default";const rB=new tB,sB=/^[0-2](?:\.[1-9][0-9]*)+$/;class iB{constructor(e={}){this.items={};for(const t in e)this.register(t,e[t])}get(e){return this.items[e]||null}findId(e){return t=e,new RegExp(sB).test(t)?e:this.get(e);var t}register(e,t){this.items[e]=t,this.items[t]=e}}const nB=new iB;function oB(e,t){return`\\${Kf.ToHex(Kf.FromUtf8String(t)).toUpperCase()}`}nB.register("CN","2.5.4.3"),nB.register("L","2.5.4.7"),nB.register("ST","2.5.4.8"),nB.register("O","2.5.4.10"),nB.register("OU","2.5.4.11"),nB.register("C","2.5.4.6"),nB.register("DC","0.9.2342.19200300.100.1.25"),nB.register("E","1.2.840.113549.1.9.1"),nB.register("G","2.5.4.42"),nB.register("I","2.5.4.43"),nB.register("SN","2.5.4.4"),nB.register("T","2.5.4.12");class aB{static isASCII(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!1;return!0}static isPrintableString(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/g.test(e)}constructor(e,t={}){this.extraNames=new iB,this.asn=new wv;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e)){const r=t[e];this.extraNames.register(e,r)}"string"==typeof e?this.asn=this.fromString(e):e instanceof wv?this.asn=e:Tf.isBufferSource(e)?this.asn=Zm.parse(e,wv):this.asn=this.fromJSON(e)}getField(e){const t=this.extraNames.findId(e)||nB.findId(e),r=[];for(const e of this.asn)for(const s of e)s.type===t&&r.push(s.value.toString());return r}getName(e){return this.extraNames.get(e)||nB.get(e)}toString(){return this.asn.map(e=>e.map(e=>`${this.getName(e.type)||e.type}=${e.value.anyValue?`#${Kf.ToHex(e.value.anyValue)}`:e.value.toString().replace(/([,+"\\<>;])/g,"\\$1").replace(/^([ #])/,"\\$1").replace(/([ ]$)/,"\\$1").replace(/([\r\n\t])/,oB)}`).join("+")).join(", ")}toJSON(){var e;const t=[];for(const r of this.asn){const s={};for(const t of r){const r=this.getName(t.type)||t.type;null!==(e=s[r])&&void 0!==e||(s[r]=[]),s[r].push(t.value.anyValue?`#${Kf.ToHex(t.value.anyValue)}`:t.value.toString())}t.push(s)}return t}fromString(e){const t=new wv,r=/(\d\.[\d.]*\d|[A-Za-z]+)=((?:"")|(?:".*?[^\\]")|(?:[^,+].*?(?:[^\\][,+]))|(?:))([,+])?/g;let s=null,i=",";for(;s=r.exec(`${e},`);){let[,e,r]=s;const n=r[r.length-1];","!==n&&"+"!==n||(r=r.slice(0,r.length-1),s[3]=n);const o=s[3];e=this.getTypeOid(e);const a=this.createAttribute(e,r);"+"===i?t[t.length-1].push(a):t.push(new Iv([a])),i=o}return t}fromJSON(e){const t=new wv;for(const r of e){const e=new Iv;for(const t in r){const s=this.getTypeOid(t),i=r[t];for(const t of i){const r=this.createAttribute(s,t);e.push(r)}}t.push(e)}return t}getTypeOid(e){if(/[\d.]+/.test(e)||(e=this.getName(e)||""),!e)throw new Error(`Cannot get OID for name type '${e}'`);return e}createAttribute(e,t){const r=new Av({type:e});if("object"==typeof t)for(const e in t)switch(e){case"ia5String":r.value.ia5String=t[e];break;case"utf8String":r.value.utf8String=t[e];break;case"universalString":r.value.universalString=t[e];break;case"bmpString":r.value.bmpString=t[e];break;case"printableString":r.value.printableString=t[e]}else if("#"===t[0])r.value.anyValue=Kf.FromHex(t.slice(1));else{const s=this.processStringValue(t);e===this.getName("E")||e===this.getName("DC")?r.value.ia5String=s:aB.isPrintableString(s)?r.value.printableString=s:r.value.utf8String=s}return r}processStringValue(e){const t=/"(.*?[^\\])?"/.exec(e);return t&&(e=t[1]),e.replace(/\\0a/gi,"\n").replace(/\\0d/gi,"\r").replace(/\\0g/gi,"\t").replace(/\\(.)/g,"$1")}toArrayBuffer(){return Zm.serialize(this.asn)}async getThumbprint(...e){var t;let r,s="SHA-1";return e.length>=1&&!(null===(t=e[0])||void 0===t?void 0:t.subtle)?(s=e[0]||s,r=e[1]||rB.get()):r=e[0]||rB.get(),await r.subtle.digest(s,this.toArrayBuffer())}}const cB="Cannot initialize GeneralName from ASN.1 data.",lB=`${cB} Unsupported string format in use.`,hB=`${cB} Value doesn't match to GUID regular expression.`,uB=/^([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})$/i,dB="1.3.6.1.4.1.311.25.1",gB="1.3.6.1.4.1.311.20.2.3",fB="dns",pB="dn",yB="email",mB="ip",bB="url",AB="guid",IB="upn",vB="id";class wB extends Zx{constructor(...e){let t;if(2===e.length)switch(e[0]){case pB:{const r=new aB(e[1]).toArrayBuffer(),s=Zm.parse(r,wv);t=new kv({directoryName:s});break}case fB:t=new kv({dNSName:e[1]});break;case yB:t=new kv({rfc822Name:e[1]});break;case AB:{const r=new RegExp(uB,"i").exec(e[1]);if(!r)throw new Error("Cannot parse GUID value. Value doesn't match to regular expression");const s=r.slice(1).map((e,t)=>t<3?Kf.ToHex(new Uint8Array(Kf.FromHex(e)).reverse()):e).join("");t=new kv({otherName:new Ev({typeId:dB,value:Zm.serialize(new pm(Kf.FromHex(s)))})});break}case mB:t=new kv({iPAddress:e[1]});break;case vB:t=new kv({registeredID:e[1]});break;case IB:t=new kv({otherName:new Ev({typeId:gB,value:Zm.serialize(km.toASN(e[1]))})});break;case bB:t=new kv({uniformResourceIdentifier:e[1]});break;default:throw new Error("Cannot create GeneralName. Unsupported type of the name")}else t=Tf.isBufferSource(e[0])?Zm.parse(e[0],kv):e[0];super(t)}onInit(e){if(null!=e.dNSName)this.type=fB,this.value=e.dNSName;else if(null!=e.rfc822Name)this.type=yB,this.value=e.rfc822Name;else if(null!=e.iPAddress)this.type=mB,this.value=e.iPAddress;else if(null!=e.uniformResourceIdentifier)this.type=bB,this.value=e.uniformResourceIdentifier;else if(null!=e.registeredID)this.type=vB,this.value=e.registeredID;else if(null!=e.directoryName)this.type=pB,this.value=new aB(e.directoryName).toString();else{if(null==e.otherName)throw new Error(lB);if(e.otherName.typeId===dB){this.type=AB;const t=Zm.parse(e.otherName.value,pm),r=new RegExp(uB,"i").exec(Kf.ToHex(t));if(!r)throw new Error(hB);this.value=r.slice(1).map((e,t)=>t<3?Kf.ToHex(new Uint8Array(Kf.FromHex(e)).reverse()):e).join("-")}else{if(e.otherName.typeId!==gB)throw new Error(lB);this.type=IB,this.value=Zm.parse(e.otherName.value,mv).toString()}}}toJSON(){return{type:this.type,value:this.value}}toTextObject(){let e;switch(this.type){case pB:case fB:case AB:case mB:case vB:case IB:case bB:e=this.type.toUpperCase();break;case yB:e="Email";break;default:throw new Error("Unsupported GeneralName type")}let t=this.value;return this.type===vB&&(t=Jx.toString(t)),new Wx(e,void 0,t)}}class SB extends Zx{constructor(e){let t;if(e instanceof $v)t=e;else if(Array.isArray(e)){const r=[];for(const t of e)if(t instanceof kv)r.push(t);else{const e=Zm.parse(new wB(t.type,t.value).rawData,kv);r.push(e)}t=new $v(r)}else{if(!Tf.isBufferSource(e))throw new Error("Cannot initialize GeneralNames. Incorrect incoming arguments");t=Zm.parse(e,$v)}super(t)}onInit(e){const t=[];for(const r of e){let e=null;try{e=new wB(r)}catch{continue}t.push(e)}this.items=t}toJSON(){return this.items.map(e=>e.toJSON())}toTextObject(){const e=super.toTextObjectEmpty();for(const t of this.items){const r=t.toTextObject();let s=e[r[Wx.NAME]];Array.isArray(s)||(s=[],e[r[Wx.NAME]]=s),s.push(r)}return e}}SB.NAME="GeneralNames";const EB="-{5}",CB="\\n",kB="\\n",xB=`${EB}BEGIN ([^${CB}]+(?=${EB}))${EB}${kB}(?:((?:[^:${CB}]+: (?:[^${CB}]+${kB}(?: +[^${CB}]+${kB})*))+))?${kB}?((?:[a-zA-Z0-9=+/]+${kB})+)${EB}END \\1${EB}`;class BB{static isPem(e){return"string"==typeof e&&new RegExp(xB,"g").test(e)}static decodeWithHeaders(e){e=e.replace(/\r/g,"");const t=new RegExp(xB,"g"),r=[];let s=null;for(;s=t.exec(e);){const e=s[3].replace(new RegExp(`[${CB}]+`,"g"),""),t={type:s[1],headers:[],rawData:Kf.FromBase64(e)},i=s[2];if(i){const e=i.split(new RegExp(kB,"g"));let r=null;for(const s of e){const[e,i]=s.split(/:(.*)/);if(void 0===i){if(!r)throw new Error("Cannot parse PEM string. Incorrect header value");r.value+=e.trim()}else r&&t.headers.push(r),r={key:e,value:i.trim()}}r&&t.headers.push(r)}r.push(t)}return r}static decode(e){return this.decodeWithHeaders(e).map(e=>e.rawData)}static decodeFirst(e){const t=this.decode(e);if(!t.length)throw new RangeError("PEM string doesn't contain any objects");return t[0]}static encode(e,t){if(Array.isArray(e)){const r=new Array;return t?e.forEach(e=>{if(!Tf.isBufferSource(e))throw new TypeError("Cannot encode array of BufferSource in PEM format. Not all items of the array are BufferSource");r.push(this.encodeStruct({type:t,rawData:Tf.toArrayBuffer(e)}))}):e.forEach(e=>{if(!("type"in e))throw new TypeError("Cannot encode array of PemStruct in PEM format. Not all items of the array are PemStrut");r.push(this.encodeStruct(e))}),r.join("\n")}if(!t)throw new Error("Required argument 'tag' is missed");return this.encodeStruct({type:t,rawData:Tf.toArrayBuffer(e)})}static encodeStruct(e){var t;const r=e.type.toLocaleUpperCase(),s=[];if(s.push(`-----BEGIN ${r}-----`),null===(t=e.headers)||void 0===t?void 0:t.length){for(const t of e.headers)s.push(`${t.key}: ${t.value}`);s.push("")}const i=Kf.ToBase64(e.rawData);let n,o=0;const a=Array();for(;o<i.length&&(i.length-o<64?n=i.substring(o):(n=i.substring(o,o+64),o+=64),0!==n.length)&&(a.push(n),!(n.length<64)););return s.push(...a),s.push(`-----END ${r}-----`),s.join("\n")}}BB.CertificateTag="CERTIFICATE",BB.CrlTag="CRL",BB.CertificateRequestTag="CERTIFICATE REQUEST",BB.PublicKeyTag="PUBLIC KEY",BB.PrivateKeyTag="PRIVATE KEY";class _B extends Zx{static isAsnEncoded(e){return Tf.isBufferSource(e)||"string"==typeof e}static toArrayBuffer(e){if("string"==typeof e){if(BB.isPem(e))return BB.decode(e)[0];if(Kf.isHex(e))return Kf.FromHex(e);if(Kf.isBase64(e))return Kf.FromBase64(e);if(Kf.isBase64Url(e))return Kf.FromBase64Url(e);throw new TypeError("Unsupported format of 'raw' argument. Must be one of DER, PEM, HEX, Base64, or Base4Url")}{const t=Kf.ToBinary(e);return BB.isPem(t)?BB.decode(t)[0]:Kf.isHex(t)?Kf.FromHex(t):Kf.isBase64(t)?Kf.FromBase64(t):Kf.isBase64Url(t)?Kf.FromBase64Url(t):Tf.toArrayBuffer(e)}}constructor(...e){_B.isAsnEncoded(e[0])?super(_B.toArrayBuffer(e[0]),e[1]):super(e[0])}toString(e="pem"){return"pem"===e?BB.encode(this.rawData,this.tag):super.toString(e)}}class RB extends _B{static async create(e,t=rB.get()){if(e instanceof RB)return e;if(tB.isCryptoKey(e)){if("public"!==e.type)throw new TypeError("Public key is required");const r=await t.subtle.exportKey("spki",e);return new RB(r)}if(e.publicKey)return e.publicKey;if(Tf.isBufferSource(e))return new RB(e);throw new TypeError("Unsupported PublicKeyType")}constructor(e){_B.isAsnEncoded(e)?super(e,rS):super(e),this.tag=BB.PublicKeyTag}async export(...e){let t,r=["verify"],s={hash:"SHA-256",...this.algorithm};e.length>1?(s=e[0]||s,r=e[1]||r,t=e[2]||rB.get()):t=e[0]||rB.get();let i=this.rawData;const n=Zm.parse(this.rawData,rS);return n.algorithm.algorithm===gC&&(i=function(e){return e.algorithm=new tS({algorithm:hC,parameters:null}),Zm.serialize(e)}(n)),t.subtle.importKey("spki",i,s,!0,r)}onInit(e){const t=hk.resolve(fx),r=this.algorithm=t.toWebAlgorithm(e.algorithm);switch(e.algorithm.algorithm){case hC:{const t=Zm.parse(e.subjectPublicKey,KC),s=Tf.toUint8Array(t.modulus);r.publicExponent=Tf.toUint8Array(t.publicExponent),r.modulusLength=(s[0]?s:s.slice(1)).byteLength<<3;break}}}async getThumbprint(...e){var t;let r,s="SHA-1";return e.length>=1&&!(null===(t=e[0])||void 0===t?void 0:t.subtle)?(s=e[0]||s,r=e[1]||rB.get()):r=e[0]||rB.get(),await r.subtle.digest(s,this.rawData)}async getKeyIdentifier(...e){let t,r="SHA-1";1===e.length?"string"==typeof e[0]?(r=e[0],t=rB.get()):t=e[0]:2===e.length?(r=e[0],t=e[1]):t=rB.get();const s=Zm.parse(this.rawData,rS);return await t.subtle.digest(r,s.subjectPublicKey)}toTextObject(){const e=this.toTextObjectEmpty(),t=Zm.parse(this.rawData,rS);return e.Algorithm=Yx.serializeAlgorithm(t.algorithm),t.algorithm.algorithm===QE?e["EC Point"]=t.subjectPublicKey:e["Raw Data"]=t.subjectPublicKey,e}}class OB extends Xx{static async create(e,t=!1,r=rB.get()){if("name"in e&&"serialNumber"in e)return new OB(e,t);const s=await RB.create(e,r),i=await s.getKeyIdentifier(r);return new OB(Kf.ToHex(i),t)}constructor(...e){if(Tf.isBufferSource(e[0]))super(e[0]);else if("string"==typeof e[0]){const t=new Vv({keyIdentifier:new Kv(Kf.FromHex(e[0]))});super(Hv,e[1],Zm.serialize(t))}else{const t=e[0],r=t.name instanceof SB?Zm.parse(t.name.rawData,$v):t.name,s=new Vv({authorityCertIssuer:r,authorityCertSerialNumber:Kf.FromHex(t.serialNumber)});super(Hv,e[1],Zm.serialize(s))}}onInit(e){super.onInit(e);const t=Zm.parse(e.extnValue,Vv);t.keyIdentifier&&(this.keyId=Kf.ToHex(t.keyIdentifier)),(t.authorityCertIssuer||t.authorityCertSerialNumber)&&(this.certId={name:t.authorityCertIssuer||[],serialNumber:t.authorityCertSerialNumber?Kf.ToHex(t.authorityCertSerialNumber):""})}toTextObject(){const e=this.toTextObjectWithoutValue(),t=Zm.parse(this.value,Vv);return t.authorityCertIssuer&&(e["Authority Issuer"]=new SB(t.authorityCertIssuer).toTextObject()),t.authorityCertSerialNumber&&(e["Authority Serial Number"]=t.authorityCertSerialNumber),t.keyIdentifier&&(e[""]=t.keyIdentifier),e}}OB.NAME="Authority Key Identifier";class UB extends Xx{constructor(...e){if(Tf.isBufferSource(e[0])){super(e[0]);const t=Zm.parse(this.value,Fv);this.ca=t.cA,this.pathLength=t.pathLenConstraint}else{const t=new Fv({cA:e[0],pathLenConstraint:e[1]});super(Qv,e[2],Zm.serialize(t)),this.ca=e[0],this.pathLength=e[1]}}toTextObject(){const e=this.toTextObjectWithoutValue();return this.ca&&(e.CA=this.ca),void 0!==this.pathLength&&(e["Path Length"]=this.pathLength),e}}var TB,NB;UB.NAME="Basic Constraints",function(e){e.serverAuth="1.3.6.1.5.5.7.3.1",e.clientAuth="1.3.6.1.5.5.7.3.2",e.codeSigning="1.3.6.1.5.5.7.3.3",e.emailProtection="1.3.6.1.5.5.7.3.4",e.timeStamping="1.3.6.1.5.5.7.3.8",e.ocspSigning="1.3.6.1.5.5.7.3.9"}(TB||(TB={}));class DB extends Xx{constructor(...e){if(Tf.isBufferSource(e[0])){super(e[0]);const t=Zm.parse(this.value,Aw);this.usages=t.map(e=>e)}else{const t=new Aw(e[0]);super(bw,e[1],Zm.serialize(t)),this.usages=e[0]}}toTextObject(){const e=this.toTextObjectWithoutValue();return e[""]=this.usages.map(e=>Jx.toString(e)).join(", "),e}}DB.NAME="Extended Key Usages",function(e){e[e.digitalSignature=1]="digitalSignature",e[e.nonRepudiation=2]="nonRepudiation",e[e.keyEncipherment=4]="keyEncipherment",e[e.dataEncipherment=8]="dataEncipherment",e[e.keyAgreement=16]="keyAgreement",e[e.keyCertSign=32]="keyCertSign",e[e.cRLSign=64]="cRLSign",e[e.encipherOnly=128]="encipherOnly",e[e.decipherOnly=256]="decipherOnly"}(NB||(NB={}));class MB extends Xx{constructor(...e){if(Tf.isBufferSource(e[0])){super(e[0]);const t=Zm.parse(this.value,Tw);this.usages=t.toNumber()}else{const t=new Tw(e[0]);super(Rw,e[1],Zm.serialize(t)),this.usages=e[0]}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=Zm.parse(this.value,Tw);return e[""]=t.toJSON().join(", "),e}}MB.NAME="Key Usages";class PB extends Xx{static async create(e,t=!1,r=rB.get()){const s=await RB.create(e,r),i=await s.getKeyIdentifier(r);return new PB(Kf.ToHex(i),t)}constructor(...e){if(Tf.isBufferSource(e[0])){super(e[0]);const t=Zm.parse(this.value,zw);this.keyId=Kf.ToHex(t)}else{const t="string"==typeof e[0]?Kf.FromHex(e[0]):e[0],r=new zw(t);super(qw,e[1],Zm.serialize(r)),this.keyId=Kf.ToHex(t)}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=Zm.parse(this.value,zw);return e[""]=t,e}}PB.NAME="Subject Key Identifier";class LB extends Xx{constructor(...e){Tf.isBufferSource(e[0])?super(e[0]):super(Qw,e[1],new SB(e[0]||[]).rawData)}onInit(e){super.onInit(e);const t=Zm.parse(e.extnValue,Fw);this.names=new SB(t)}toTextObject(){const e=this.toTextObjectWithoutValue(),t=this.names.toTextObject();for(const r in t)e[r]=t[r];return e}}LB.NAME="Subject Alternative Name";class HB{static register(e,t){this.items.set(e,t)}static create(e){const t=new Xx(e),r=this.items.get(t.type);return r?new r(e):t}}HB.items=new Map;class KB extends Xx{constructor(...e){var t;if(Tf.isBufferSource(e[0])){super(e[0]);const t=Zm.parse(this.value,rw);this.policies=t.map(e=>e.policyIdentifier)}else{const r=e[0],s=null!==(t=e[1])&&void 0!==t&&t,i=new rw(r.map(e=>new tw({policyIdentifier:e})));super(Wv,s,Zm.serialize(i)),this.policies=r}}toTextObject(){const e=this.toTextObjectWithoutValue();return e.Policy=this.policies.map(e=>new Wx("",{},Jx.toString(e))),e}}KB.NAME="Certificate Policies",HB.register(Wv,KB);class VB extends Xx{constructor(...e){var t;if(Tf.isBufferSource(e[0]))super(e[0]);else if(Array.isArray(e[0])&&"string"==typeof e[0][0]){const t=e[0].map(e=>new hw({distributionPoint:new lw({fullName:[new kv({uniformResourceIdentifier:e})]})})),r=new uw(t);super(ow,e[1],Zm.serialize(r))}else{const t=new uw(e[0]);super(ow,e[1],Zm.serialize(t))}null!==(t=this.distributionPoints)&&void 0!==t||(this.distributionPoints=[])}onInit(e){super.onInit(e);const t=Zm.parse(e.extnValue,uw);this.distributionPoints=t}toTextObject(){const e=this.toTextObjectWithoutValue();return e["Distribution Point"]=this.distributionPoints.map(e=>{var t;const r={};return e.distributionPoint&&(r[""]=null===(t=e.distributionPoint.fullName)||void 0===t?void 0:t.map(e=>new wB(e).toString()).join(", ")),e.reasons&&(r.Reasons=e.reasons.toString()),e.cRLIssuer&&(r["CRL Issuer"]=e.cRLIssuer.map(e=>e.toString()).join(", ")),r}),e}}VB.NAME="CRL Distribution Points";class QB extends Xx{constructor(...e){var t,r,s,i;if(Tf.isBufferSource(e[0]))super(e[0]);else if(e[0]instanceof Lv){const t=new Lv(e[0]);super(Mv,e[1],Zm.serialize(t))}else{const t=e[0],r=new Lv;GB(r,t,Rv,"ocsp"),GB(r,t,Ov,"caIssuers"),GB(r,t,Uv,"timeStamping"),GB(r,t,Tv,"caRepository"),super(Mv,e[1],Zm.serialize(r))}null!==(t=this.ocsp)&&void 0!==t||(this.ocsp=[]),null!==(r=this.caIssuers)&&void 0!==r||(this.caIssuers=[]),null!==(s=this.timeStamping)&&void 0!==s||(this.timeStamping=[]),null!==(i=this.caRepository)&&void 0!==i||(this.caRepository=[])}onInit(e){super.onInit(e),this.ocsp=[],this.caIssuers=[],this.timeStamping=[],this.caRepository=[],Zm.parse(e.extnValue,Lv).forEach(e=>{switch(e.accessMethod){case Rv:this.ocsp.push(new wB(e.accessLocation));break;case Ov:this.caIssuers.push(new wB(e.accessLocation));break;case Uv:this.timeStamping.push(new wB(e.accessLocation));break;case Tv:this.caRepository.push(new wB(e.accessLocation))}})}toTextObject(){const e=this.toTextObjectWithoutValue();return this.ocsp.length&&FB(e,"OCSP",this.ocsp),this.caIssuers.length&&FB(e,"CA Issuers",this.caIssuers),this.timeStamping.length&&FB(e,"Time Stamping",this.timeStamping),this.caRepository.length&&FB(e,"CA Repository",this.caRepository),e}}function FB(e,t,r){if(1===r.length)e[t]=r[0].toTextObject();else{const s=new Wx("");r.forEach((e,t)=>{const r=e.toTextObject(),i=`${r[Wx.NAME]} ${t+1}`;let n=s[i];Array.isArray(n)||(n=[],s[i]=n),n.push(r)}),e[t]=s}}function GB(e,t,r,s){const i=t[s];i&&(Array.isArray(i)?i:[i]).forEach(t=>{"string"==typeof t&&(t=new wB("url",t)),e.push(new Pv({accessMethod:r,accessLocation:Zm.parse(t.rawData,kv)}))})}QB.NAME="Authority Info Access";class $B extends Zx{constructor(...e){let t;if(Tf.isBufferSource(e[0]))t=Tf.toArrayBuffer(e[0]);else{const r=e[0],s=Array.isArray(e[1])?e[1].map(e=>Tf.toArrayBuffer(e)):[];t=Zm.serialize(new Gw({type:r,values:s}))}super(t,Gw)}onInit(e){this.type=e.type,this.values=e.values}toTextObject(){const e=this.toTextObjectWithoutValue();return e.Value=this.values.map(e=>new Wx("",{"":e})),e}toTextObjectWithoutValue(){const e=this.toTextObjectEmpty();return e[Wx.NAME]===$B.NAME&&(e[Wx.NAME]=Jx.toString(this.type)),e}}$B.NAME="Attribute";class jB extends $B{constructor(...e){var t;if(Tf.isBufferSource(e[0]))super(e[0]);else{const t=new sx({printableString:e[0]});super(Lk,[Zm.serialize(t)])}null!==(t=this.password)&&void 0!==t||(this.password="")}onInit(e){if(super.onInit(e),this.values[0]){const e=Zm.parse(this.values[0],sx);this.password=e.toString()}}toTextObject(){const e=this.toTextObjectWithoutValue();return e[Wx.VALUE]=this.password,e}}jB.NAME="Challenge Password";class qB extends $B{constructor(...e){var t;if(Tf.isBufferSource(e[0]))super(e[0]);else{const t=e[0],r=new aS;for(const e of t)r.push(Zm.parse(e.rawData,oS));super(Hk,[Zm.serialize(r)])}null!==(t=this.items)&&void 0!==t||(this.items=[])}onInit(e){if(super.onInit(e),this.values[0]){const e=Zm.parse(this.values[0],aS);this.items=e.map(e=>HB.create(Zm.serialize(e)))}}toTextObject(){const e=this.toTextObjectWithoutValue(),t=this.items.map(e=>e.toTextObject());for(const r of t)e[r[Wx.NAME]]=r;return e}}qB.NAME="Extensions";class zB{static register(e,t){this.items.set(e,t)}static create(e){const t=new $B(e),r=this.items.get(t.type);return r?new r(e):t}}zB.items=new Map;const WB="crypto.signatureFormatter";var JB;let YB=JB=class{static createPssParams(e,t){const r=JB.getHashAlgorithm(e);return r?new NC({hashAlgorithm:r,maskGenAlgorithm:new tS({algorithm:BC,parameters:Zm.serialize(r)}),saltLength:t}):null}static getHashAlgorithm(e){const t=hk.resolve(fx);return"string"==typeof e?t.toAsnAlgorithm({name:e}):"object"==typeof e&&e&&"name"in e?t.toAsnAlgorithm(e):null}toAsnAlgorithm(e){switch(e.name.toLowerCase()){case"rsassa-pkcs1-v1_5":if(!("hash"in e))return new tS({algorithm:hC,parameters:null});{let t;if("string"==typeof e.hash)t=e.hash;else{if(!e.hash||"object"!=typeof e.hash||!("name"in e.hash)||"string"!=typeof e.hash.name)throw new Error("Cannot get hash algorithm name");t=e.hash.name.toUpperCase()}switch(t.toLowerCase()){case"sha-1":return new tS({algorithm:yC,parameters:null});case"sha-256":return new tS({algorithm:bC,parameters:null});case"sha-384":return new tS({algorithm:AC,parameters:null});case"sha-512":return new tS({algorithm:IC,parameters:null})}}break;case"rsa-pss":if("hash"in e){if(!("saltLength"in e)||"number"!=typeof e.saltLength)throw new Error("Cannot get 'saltLength' from 'alg' argument");const t=JB.createPssParams(e.hash,e.saltLength);if(!t)throw new Error("Cannot create PSS parameters");return new tS({algorithm:gC,parameters:Zm.serialize(t)})}return new tS({algorithm:gC,parameters:null})}return null}toWebAlgorithm(e){switch(e.algorithm){case hC:return{name:"RSASSA-PKCS1-v1_5"};case yC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-1"}};case bC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case AC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-384"}};case IC:return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-512"}};case gC:if(e.parameters){const t=Zm.parse(e.parameters,NC);return{name:"RSA-PSS",hash:hk.resolve(fx).toWebAlgorithm(t.hashAlgorithm),saltLength:t.saltLength}}return{name:"RSA-PSS"}}return null}};YB=JB=Xm([uk()],YB),hk.registerSingleton(gx,YB);let ZB=class{toAsnAlgorithm(e){switch(e.name.toLowerCase()){case"sha-1":return new tS({algorithm:SC});case"sha-256":return new tS({algorithm:CC});case"sha-384":return new tS({algorithm:kC});case"sha-512":return new tS({algorithm:xC})}return null}toWebAlgorithm(e){switch(e.algorithm){case SC:return{name:"SHA-1"};case CC:return{name:"SHA-256"};case kC:return{name:"SHA-384"};case xC:return{name:"SHA-512"}}return null}};ZB=Xm([uk()],ZB),hk.registerSingleton(gx,ZB);class XB{addPadding(e,t){const r=Tf.toUint8Array(t),s=new Uint8Array(e);return s.set(r,e-r.length),s}removePadding(e,t=!1){let r=Tf.toUint8Array(e);for(let e=0;e<r.length;e++)if(r[e]){r=r.slice(e);break}if(t&&r[0]>127){const e=new Uint8Array(r.length+1);return e.set(r,1),e.buffer}return r.buffer}toAsnSignature(e,t){if("ECDSA"===e.name){const r=e.namedCurve,s=XB.namedCurveSize.get(r)||XB.defaultNamedCurveSize,i=new cC,n=Tf.toUint8Array(t);return i.r=this.removePadding(n.slice(0,s),!0),i.s=this.removePadding(n.slice(s,s+s),!0),Zm.serialize(i)}return null}toWebSignature(e,t){if("ECDSA"===e.name){const r=Zm.parse(t,cC),s=e.namedCurve,i=XB.namedCurveSize.get(s)||XB.defaultNamedCurveSize;return Vf(this.addPadding(i,this.removePadding(r.r)),this.addPadding(i,this.removePadding(r.s)))}return null}}XB.namedCurveSize=new Map,XB.defaultNamedCurveSize=32;const e_="1.3.101.110",t_="1.3.101.111",r_="1.3.101.112",s_="1.3.101.113";let i_=class{toAsnAlgorithm(e){let t=null;switch(e.name.toLowerCase()){case"ed25519":t=r_;break;case"x25519":t=e_;break;case"eddsa":switch(e.namedCurve.toLowerCase()){case"ed25519":t=r_;break;case"ed448":t=s_}break;case"ecdh-es":switch(e.namedCurve.toLowerCase()){case"x25519":t=e_;break;case"x448":t=t_}}return t?new tS({algorithm:t}):null}toWebAlgorithm(e){switch(e.algorithm){case r_:return{name:"Ed25519"};case s_:return{name:"EdDSA",namedCurve:"Ed448"};case e_:return{name:"X25519"};case t_:return{name:"ECDH-ES",namedCurve:"X448"}}return null}};i_=Xm([uk()],i_),hk.registerSingleton(gx,i_);(class extends _B{constructor(e){_B.isAsnEncoded(e)?super(e,dx):super(e),this.tag=BB.CertificateRequestTag}onInit(e){this.tbs=Zm.serialize(e.certificationRequestInfo),this.publicKey=new RB(e.certificationRequestInfo.subjectPKInfo);const t=hk.resolve(fx);this.signatureAlgorithm=t.toWebAlgorithm(e.signatureAlgorithm),this.signature=e.signature,this.attributes=e.certificationRequestInfo.attributes.map(e=>zB.create(Zm.serialize(e)));const r=this.getAttribute(Hk);this.extensions=[],r instanceof qB&&(this.extensions=r.items),this.subjectName=new aB(e.certificationRequestInfo.subject),this.subject=this.subjectName.toString()}getAttribute(e){for(const t of this.attributes)if(t.type===e)return t;return null}getAttributes(e){return this.attributes.filter(t=>t.type===e)}getExtension(e){for(const t of this.extensions)if(t.type===e)return t;return null}getExtensions(e){return this.extensions.filter(t=>t.type===e)}async verify(e=rB.get()){const t={...this.publicKey.algorithm,...this.signatureAlgorithm},r=await this.publicKey.export(t,["verify"],e),s=hk.resolveAll(WB).reverse();let i=null;for(const e of s)if(i=e.toWebSignature(t,this.signature),i)break;if(!i)throw Error("Cannot convert WebCrypto signature value to ASN.1 format");return await e.subtle.verify(this.signatureAlgorithm,r,i,this.tbs)}toTextObject(){const e=this.toTextObjectEmpty(),t=Zm.parse(this.rawData,dx),r=t.certificationRequestInfo,s=new Wx("",{Version:`${cS[r.version]} (${r.version})`,Subject:this.subject,"Subject Public Key Info":this.publicKey});if(this.attributes.length){const e=new Wx("");for(const t of this.attributes){const r=t.toTextObject();e[r[Wx.NAME]]=r}s.Attributes=e}return e.Data=s,e.Signature=new Wx("",{Algorithm:Yx.serializeAlgorithm(t.signatureAlgorithm),"":t.signature}),e}}).NAME="PKCS#10 Certificate Request";var n_;(class extends _B{constructor(e){_B.isAsnEncoded(e)?super(e,hS):super(e),this.tag=BB.CertificateTag}onInit(e){const t=e.tbsCertificate;this.tbs=Zm.serialize(t),this.serialNumber=Kf.ToHex(t.serialNumber),this.subjectName=new aB(t.subject),this.subject=new aB(t.subject).toString(),this.issuerName=new aB(t.issuer),this.issuer=this.issuerName.toString();const r=hk.resolve(fx);this.signatureAlgorithm=r.toWebAlgorithm(e.signatureAlgorithm),this.signature=e.signatureValue;const s=t.validity.notBefore.utcTime||t.validity.notBefore.generalTime;if(!s)throw new Error("Cannot get 'notBefore' value");this.notBefore=s;const i=t.validity.notAfter.utcTime||t.validity.notAfter.generalTime;if(!i)throw new Error("Cannot get 'notAfter' value");this.notAfter=i,this.extensions=[],t.extensions&&(this.extensions=t.extensions.map(e=>HB.create(Zm.serialize(e)))),this.publicKey=new RB(t.subjectPublicKeyInfo)}getExtension(e){for(const t of this.extensions)if("string"==typeof e){if(t.type===e)return t}else if(t instanceof e)return t;return null}getExtensions(e){return this.extensions.filter(t=>"string"==typeof e?t.type===e:t instanceof e)}async verify(e={},t=rB.get()){let r,s;const i=e.publicKey;try{if(i)if("publicKey"in i)r={...i.publicKey.algorithm,...this.signatureAlgorithm},s=await i.publicKey.export(r,["verify"],t);else if(i instanceof RB)r={...i.algorithm,...this.signatureAlgorithm},s=await i.export(r,["verify"],t);else if(Tf.isBufferSource(i)){const e=new RB(i);r={...e.algorithm,...this.signatureAlgorithm},s=await e.export(r,["verify"],t)}else r={...i.algorithm,...this.signatureAlgorithm},s=i;else r={...this.publicKey.algorithm,...this.signatureAlgorithm},s=await this.publicKey.export(r,["verify"],t)}catch(e){return!1}const n=hk.resolveAll(WB).reverse();let o=null;for(const e of n)if(o=e.toWebSignature(r,this.signature),o)break;if(!o)throw Error("Cannot convert ASN.1 signature value to WebCrypto format");const a=await t.subtle.verify(this.signatureAlgorithm,s,o,this.tbs);if(e.signatureOnly)return a;{const t=(e.date||new Date).getTime();return a&&this.notBefore.getTime()<t&&t<this.notAfter.getTime()}}async getThumbprint(...e){let t,r="SHA-1";return e[0]&&(e[0].subtle?t=e[0]:(r=e[0]||r,t=e[1])),null!=t||(t=rB.get()),await t.subtle.digest(r,this.rawData)}async isSelfSigned(e=rB.get()){return this.subject===this.issuer&&await this.verify({signatureOnly:!0},e)}toTextObject(){const e=this.toTextObjectEmpty(),t=Zm.parse(this.rawData,hS),r=t.tbsCertificate,s=new Wx("",{Version:`${cS[r.version]} (${r.version})`,"Serial Number":r.serialNumber,"Signature Algorithm":Yx.serializeAlgorithm(r.signature),Issuer:this.issuer,Validity:new Wx("",{"Not Before":r.validity.notBefore.getTime(),"Not After":r.validity.notAfter.getTime()}),Subject:this.subject,"Subject Public Key Info":this.publicKey});if(r.issuerUniqueID&&(s["Issuer Unique ID"]=r.issuerUniqueID),r.subjectUniqueID&&(s["Subject Unique ID"]=r.subjectUniqueID),this.extensions.length){const e=new Wx("");for(const t of this.extensions){const r=t.toTextObject();e[r[Wx.NAME]]=r}s.Extensions=e}return e.Data=s,e.Signature=new Wx("",{Algorithm:Yx.serializeAlgorithm(t.signatureAlgorithm),"":t.signatureValue}),e}}).NAME="Certificate",function(e){e[e.unspecified=0]="unspecified",e[e.keyCompromise=1]="keyCompromise",e[e.cACompromise=2]="cACompromise",e[e.affiliationChanged=3]="affiliationChanged",e[e.superseded=4]="superseded",e[e.cessationOfOperation=5]="cessationOfOperation",e[e.certificateHold=6]="certificateHold",e[e.removeFromCRL=8]="removeFromCRL",e[e.privilegeWithdrawn=9]="privilegeWithdrawn",e[e.aACompromise=10]="aACompromise"}(n_||(n_={})),HB.register(Qv,UB),HB.register(bw,DB),HB.register(Rw,MB),HB.register(qw,PB),HB.register(Hv,OB),HB.register(Qw,LB),HB.register(ow,VB),HB.register(Mv,QB),zB.register(Lk,jB),zB.register(Hk,qB),hk.registerSingleton(WB,class{toAsnSignature(e,t){return Tf.toArrayBuffer(t)}toWebSignature(e,t){return Tf.toArrayBuffer(t)}}),hk.registerSingleton(WB,XB),XB.namedCurveSize.set("P-256",32),XB.namedCurveSize.set("K-256",32),XB.namedCurveSize.set("P-384",48),XB.namedCurveSize.set("P-521",66),Gs.new(void 0,"networking");const o_=new class extends KA{constructor(){super(...arguments),this.subtle=new dv}getRandomValues(e){if(!ArrayBuffer.isView(e))throw new TypeError("Failed to execute 'getRandomValues' on 'Crypto': parameter 1 is not of type 'ArrayBufferView'");const t=$A.Buffer.from(e.buffer,e.byteOffset,e.byteLength);return qA().randomFillSync(t),e}};var a_,c_,l_;function h_(e){return W(e)}rB.set(o_),(l_=a_||(a_={}))[l_.NoCertificate=0]="NoCertificate",l_[l_.NotEd25519=1]="NotEd25519",l_[l_.PublicKeyTypeMismatch=2]="PublicKeyTypeMismatch",l_[l_.AltNameMismatch=3]="AltNameMismatch",l_[l_.IncorrectSignature=4]="IncorrectSignature",function(e){e[e.Public=0]="Public",e[e.Private=1]="Private"}(c_||(c_={})),Gs.new(void 0,"net:peers"),Gs.new(void 0,"net"),Gs.new(void 0,"net"),Gs.new(void 0,"net"),Gs.new(void 0,"jamnps");const u_=h_(0);class d_ extends w{hash;slot;static Codec=we.Class(d_,{hash:we.bytes(Re).asOpaque(),slot:we.u32.asOpaque()});static create({hash:e,slot:t}){return new d_(e,t)}constructor(e,t){super(),this.hash=e,this.slot=t}}class g_{final;leafs;static Codec=we.Class(g_,{final:d_.Codec,leafs:we.sequenceVarLen(d_.Codec)});static create({final:e,leafs:t}){return new g_(e,t)}constructor(e,t){this.final=e,this.leafs=t}}class f_ extends w{header;final;static Codec=we.Class(f_,{header:jr.Codec,final:d_.Codec});static create({header:e,final:t}){return new f_(e,t)}constructor(e,t){super(),this.header=e,this.final=t}}const p_=Gs.new(void 0,"protocol/up-0");class y_{getHandshake;onAnnouncement;kind=u_;handshakes=new Map;pendingHandshakes=new Map;constructor(e,t){this.getHandshake=e,this.onAnnouncement=t}onStreamMessage(e,t){const r=e.streamId;if(!this.handshakes.has(r)){const s=ae.decodeObject(g_.Codec,t);return this.handshakes.set(r,s),void(this.pendingHandshakes.delete(r)||(p_.log(`[${r}] <-- responding with a handshake.`),e.bufferAndSend(ge.encodeObject(g_.Codec,this.getHandshake()))))}const s=ae.decodeObject(f_.Codec,t);p_.info(`[${r}] got blocks announcement: ${s}`),this.onAnnouncement(s)}onClose(e){this.handshakes.delete(e)}sendHandshake(e,t){this.pendingHandshakes.set(e.streamId,!0),e.bufferAndSend(ge.encodeObject(g_.Codec,t))}sendAnnouncement(e,t){this.handshakes.has(e.streamId)?e.bufferAndSend(ge.encodeObject(f_.Codec,t)):p_.warn(`[${e.streamId}] no handshake yet, skipping announcement.`)}}var m_;h_(128),function(e){e[e.AscExcl=0]="AscExcl",e[e.DescIncl=1]="DescIncl"}(m_||(m_={}));class b_ extends w{headerHash;direction;maxBlocks;static Codec=we.Class(b_,{headerHash:we.bytes(Re).asOpaque(),direction:we.u8.convert(e=>W(e),e=>{switch(e){case m_.AscExcl:return m_.AscExcl;case m_.DescIncl:return m_.DescIncl;default:throw new Error(`Invalid 'Direction' value: ${e}`)}}),maxBlocks:we.u32});static create({headerHash:e,direction:t,maxBlocks:r}){return new b_(e,t,r)}constructor(e,t,r){super(),this.headerHash=e,this.direction=t,this.maxBlocks=r}}Gs.new(void 0,"protocol/ce-128");const A_=h_(129),I_=we.bytes(64).convert(e=>U.fromBlob(e.raw,64),e=>new Fi(e.raw));class v_ extends w{key;value;static Codec=we.Class(v_,{key:we.bytes(Vi),value:we.blob});static create({key:e,value:t}){return new v_(e,t)}constructor(e,t){super(),this.key=e,this.value=t}}class w_ extends w{keyValuePairs;static Codec=we.Class(w_,{keyValuePairs:we.sequenceVarLen(v_.Codec)});static create({keyValuePairs:e}){return new w_(e)}constructor(e){super(),this.keyValuePairs=e}}class S_ extends w{headerHash;startKey;endKey;maximumSize;static Codec=we.Class(S_,{headerHash:we.bytes(Re).asOpaque(),startKey:we.bytes(Vi),endKey:we.bytes(Vi),maximumSize:we.u32});static create({headerHash:e,startKey:t,endKey:r,maximumSize:s}){return new S_(e,t,r,s)}constructor(e,t,r,s){super(),this.headerHash=e,this.startKey=t,this.endKey=r,this.maximumSize=s}}const E_=Gs.new(void 0,"protocol/ce-129");class C_{isServer;getBoundaryNodes;getKeyValuePairs;kind=A_;boundaryNodes=new Map;onResponse=new Map;constructor(e=!1,t,r){if(this.isServer=e,this.getBoundaryNodes=t,this.getKeyValuePairs=r,e&&(void 0===t||void 0===r))throw new Error("getBoundaryNodes and getKeyValuePairs are required in server mode.")}onStreamMessage(e,t){if(this.isServer){if(E_.info(`[${e.streamId}][server]: Received request.`),void 0===this.getBoundaryNodes||void 0===this.getKeyValuePairs)return;const r=ae.decodeObject(S_.Codec,t),s=this.getBoundaryNodes(r.headerHash,r.startKey,r.endKey),i=this.getKeyValuePairs(r.headerHash,r.startKey,r.endKey);return E_.info(`[${e.streamId}][server]: <-- responding with boundary nodes and key value pairs.`),e.bufferAndSend(ge.encodeObject(we.sequenceVarLen(I_),s)),e.bufferAndSend(ge.encodeObject(w_.Codec,w_.create({keyValuePairs:i}))),void e.close()}if(!this.boundaryNodes.has(e.streamId))return this.boundaryNodes.set(e.streamId,ae.decodeObject(we.sequenceVarLen(I_),t)),void E_.info(`[${e.streamId}][client]: Received boundary nodes.`);this.onResponse.get(e.streamId)?.(ae.decodeObject(w_.Codec,t)),E_.info(`[${e.streamId}][client]: Received state values.`)}onClose(e){this.boundaryNodes.delete(e),this.onResponse.delete(e)}getStateByKey(e,t,r,s){if(this.onResponse.has(e.streamId))throw new Error("It is disallowed to use the same stream for multiple requests.");this.onResponse.set(e.streamId,s),e.bufferAndSend(ge.encodeObject(S_.Codec,S_.create({headerHash:t,startKey:r,endKey:r,maximumSize:X(4096)}))),e.close()}}h_(131),h_(132);class k_ extends w{epochIndex;ticket;static Codec=we.Class(k_,{epochIndex:we.u32.asOpaque(),ticket:vt.Codec});static create({epochIndex:e,ticket:t}){return new k_(e,t)}constructor(e,t){super(),this.epochIndex=e,this.ticket=t}}Gs.new(void 0,"protocol/ce-131-ce-132"),h_(133);class x_ extends w{coreIndex;workPackage;static Codec=we.Class(x_,{coreIndex:we.u16.asOpaque(),workPackage:Rr.Codec});static create({coreIndex:e,workPackage:t}){return new x_(e,t)}constructor(e,t){super(),this.coreIndex=e,this.workPackage=t}}Gs.new(void 0,"protocol/ce-133"),we.blob,h_(134);class B_ extends w{coreIndex;segmentsRootMappings;static Codec=we.Class(B_,{coreIndex:we.u16.asOpaque(),segmentsRootMappings:we.sequenceVarLen(Pr.Codec)});static create({coreIndex:e,segmentsRootMappings:t}){return new B_(e,t)}constructor(e,t){super(),this.coreIndex=e,this.segmentsRootMappings=t}}class __ extends w{workReportHash;signature;static Codec=we.Class(__,{workReportHash:we.bytes(Re).asOpaque(),signature:we.bytes(sr).asOpaque()});static create({workReportHash:e,signature:t}){return new __(e,t)}constructor(e,t){super(),this.workReportHash=e,this.signature=t}}Gs.new(void 0,"protocol/ce-134"),h_(135);class R_ extends w{report;slot;signatures;static Codec=we.Class(R_,{report:Lr.Codec,slot:we.u32.asOpaque(),signatures:mt(e=>bt(Kr.Codec,{minLength:0,maxLength:e.validatorsCount,typicalLength:e.validatorsCount/2}))});static create({report:e,slot:t,signatures:r}){return new R_(e,t,r)}constructor(e,t,r){super(),this.report=e,this.slot=t,this.signatures=r}}Gs.new(void 0,"protocol/ce-135");const O_=t(import.meta.url)("node:net"),U_=t(import.meta.url)("node:path"),T_=t(import.meta.url)("node:buffer");var N_;!function(e){e[e.Msg=0]="Msg",e[e.Open=1]="Open",e[e.Close=2]="Close"}(N_||(N_={}));class D_{streamId;type;data;static Codec=we.Class(D_,{streamId:we.u32,type:we.u8.convert(e=>W(e),e=>{switch(e){case N_.Msg:return N_.Msg;case N_.Open:return N_.Open;case N_.Close:return N_.Close;default:throw new Error(`Invalid 'StreamEnvelopeType' value: ${e}`)}}),data:we.blob});static create({streamId:e,type:t,data:r}){return new D_(e,t,r)}constructor(e,t,r){this.streamId=e,this.type=t,this.data=r}}class M_{streamByte;static Codec=we.Class(M_,{streamByte:we.u8});static create({streamByte:e}){return new M_(e)}constructor(e){this.streamByte=e}}const P_=Gs.new(void 0,"ext-ipc");class L_{streams=new Map;pendingStreams=new Map;streamHandlers=new Map;onEnd;sender;constructor(e){const t={finished:!1};t.listen=new Promise((e,r)=>{t.resolve=e,t.reject=r}),this.onEnd=t,this.sender=new K_(e)}registerHandlers(...e){for(const t of e)this.streamHandlers.set(t.kind,t)}withStreamOfKind(e,t){for(const[r,s]of this.streams.entries())if(s.kind===e)return void t(s,new H_(r,this.sender));throw new Error(`Missing handler for ${e}!`)}withNewStream(e,t){const r=this.streamHandlers.get(e);if(void 0===r)throw new Error(`Stream with unregistered handler of kind: ${e} was requested to be opened.`);const s=this.streams,i=function e(){const t=Math.floor(65536*Math.random());return s.has(t)?e():t}();this.streams.set(i,r),this.pendingStreams.set(i,!0);const n=new H_(i,this.sender);n.open(M_.create({streamByte:e})),t(r,n)}onSocketMessage(e){const t=ae.decodeObject(D_.Codec,e),r=t.streamId;P_.log(`[${r}] incoming message: ${t.type} ${t.data}`);const s=this.streams.get(r),i=new H_(r,this.sender);if(void 0===s){if(t.type!==N_.Open)return void P_.warn(`[${r}] (unknown) got invalid type ${t.type}.`);const e=ae.decodeObject(M_.Codec,t.data),s=this.streamHandlers.get(e.streamByte);return void 0!==s?(P_.log(`[${r}] new stream for ${s.kind}`),this.streams.set(r,s),void i.open(e)):void i.close()}if(t.type===N_.Close){const e=this.streams.get(r);return e?.onClose(r,!1),void this.streams.delete(r)}t.type===N_.Msg?s.onStreamMessage(i,t.data):this.pendingStreams.delete(r)||P_.warn(`[${r}] got invalid type ${t.type}.`)}onClose({error:e}){P_.log(`Closing the handler. Reason: ${void 0!==e?e.message:"close"}.`);for(const[t,r]of this.streams.entries())r.onClose(t,void 0===e);this.streams.clear(),this.onEnd.finished=!0,void 0!==e?this.onEnd.reject(e):this.onEnd.resolve()}waitForEnd(){return P_.log("Waiting for the handler to be closed."),this.onEnd.listen}}class H_{streamId;sender;constructor(e,t){this.streamId=e,this.sender=t}open(e){const t=ge.encodeObject(M_.Codec,e);this.sender.send(ge.encodeObject(D_.Codec,D_.create({streamId:this.streamId,type:N_.Open,data:t})))}bufferAndSend(e){return this.sender.send(ge.encodeObject(D_.Codec,D_.create({streamId:this.streamId,type:N_.Msg,data:e}))),!0}close(){this.sender.send(ge.encodeObject(D_.Codec,D_.create({streamId:this.streamId,type:N_.Close,data:O.blobFromNumbers([])})))}}class K_{socket;constructor(e){this.socket=e}send(e){!function(e,t){const r=new Uint8Array(V_);ge.create({destination:r}).i32(t.length),e.write(r),e.write(t)}(this.socket,e.raw)}close(){this.socket.end()}}const V_=4;function Q_(e){const t=function(e){const t=new An.EventEmitter;let r=null;return e.bestHeader.on(e=>{const s=e.data.materialize(),i=e.hash,n=d_.create({hash:i,slot:s.timeSlotIndex});r=n,t.emit("announcement",f_.create({header:s,final:n}))}),function(e,t,r,s){const i="win32"===xs.platform()?"\\\\.\\pipe\\typeberry":U_.join(xs.tmpdir(),"typeberry.ipc"),n=Gs.new(void 0,"ext-ipc"),o=(0,O_.createServer)(i=>{n.log("Client connected");const o=new L_(i);o.registerHandlers(new y_(t,()=>{})),o.registerHandlers(new C_(!0,r,s));const a=e=>{if(!(e instanceof f_))throw new Error(`Invalid annoncement received: ${e}`);o.withStreamOfKind(u_,(t,r)=>{t.sendAnnouncement(r,e)})};e.on("announcement",a),i.on("data",function(e){let t=T_.Buffer.alloc(0),r=-1;return s=>{t=T_.Buffer.concat([t,s]);do{if(-1===r){if(t.length<V_)break;r=t.readUint32LE(),t=t.subarray(V_)}if(t.length<r)break;const s=t.subarray(0,r);t=t.subarray(r),r=-1,e(s)}while(t.length>0)}}(e=>{try{o.onSocketMessage(new Uint8Array(e))}catch(e){n.error(`Received invalid data on socket: ${e}. Closing connection.`),i.end()}})),i.on("end",()=>{n.log("Client disconnected"),o.onClose({}),e.off("annoucement",a)}),i.on("error",e=>{n.error(`Socket error: ${e}`),o.onClose({error:e}),i.end()})});try{Cs.unlinkSync(i)}catch{}const a=new AbortController;return o.listen({path:i,signal:a.signal},()=>{n.log(`IPC server is listening at ${i}`)}),o.on("error",e=>{throw e}),()=>{n.info("Closing IPC server."),o.close(),a.abort(),o.unref()}}(t,()=>{const e=r??d_.create({hash:U.zero(Re).asOpaque(),slot:gr(0)});return g_.create({final:e,leafs:[]})},()=>[],(e,t)=>{let r=O.blobFromNumbers([255,255,0,0]);return U.fromBlob(Ke("0x83bd3bde264a79a2e67c487696c1d7f0b549da89").raw.subarray(0,Vi),Vi).isEqualTo(t)&&(r=O.blobFromNumbers([255,255,255,0])),[new v_(t,r)]})}(e);return()=>{t()}}const F_=e=>e.endsWith(".json");function G_(e,t){const r=ks().readFileSync(e),s=O.blobFrom(new Uint8Array(r));return ae.decodeObject(Zr.Codec.View,s,t)}function $_(e,t){const r=ks().readFileSync(e,"utf-8"),s=j(JSON.parse(r),(i=t,z.object({header:ws,extrinsic:(n=i,z.object({tickets:ms,preimages:ps,guarantees:gs,assurances:ar(n),disputes:ss},({tickets:e,preimages:t,guarantees:r,assurances:s,disputes:i})=>Yr.create({tickets:e,preimages:t,guarantees:r,assurances:s,disputes:i})))},({header:e,extrinsic:t})=>Zr.create({header:e,extrinsic:t}))));var i,n;const o=ge.encodeObject(Zr.Codec,s,t);return ae.decodeObject(Zr.Codec.View,o,t)}const j_={genesisPath:"",timeSlot:gr(0),validatorIndex:fr(0)};class q_{isAuthoring;blocksToImport;nodeName;node;dev;static new({isAuthoring:e,blockToImport:t,nodeName:r,nodeConfig:s,devConfig:i,seedConfig:n}){let o=i??{...j_};return void 0!==n&&(o={...o,...n}),new q_(e??!1,t??[],r,s,o)}constructor(e,t,r,s,i){this.isAuthoring=e,this.blocksToImport=t,this.nodeName=r,this.node=s,this.dev=i}}const z_=Gs.new(void 0,"jam");var W_;async function J_(e,t){if(!$s.isMainThread)return void z_.error("The main binary cannot be running as a Worker!");const r=X_(e.node.flavor),{rootDb:s,dbPath:i,genesisHeaderHash:n}=function(e,t,r,{readOnly:s=!1}={}){const i=Ke(e).toString().substring(2,10),n=He(t).asOpaque(),o=`${r}/${i}/${n.toString().substring(2,10)}`;z_.info(`🛢️ Opening database at ${o}`);try{return{dbPath:o,rootDb:new mn(o,s),genesisHeaderHash:n}}catch(e){throw new Error(`Unable to open database at ${o}: ${e}`)}}(e.nodeName,e.node.chainSpec.genesisHeader,t(e.node.databaseBasePath));await async function(e,t,r,s){const i=new gn(e,r),n=new bn(e,r),o=i.getBestHeaderHash(),a=i.getPostStateRoot(o);if(z_.log(`🛢️ Best header hash: ${o}`),z_.log(`🛢️ Best state root: ${a}`),null!==a&&!a.isEqualTo(U.zero(Re))&&!o.isEqualTo(U.zero(Re)))return void await r.db.close();z_.log("🛢️ Database looks fresh. Initializing.");const c=ae.decodeObject(jr.Codec,s.genesisHeader,e),l=Zr.create({header:jr.empty(),extrinsic:Yr.create({tickets:[],preimages:[],assurances:[],guarantees:[],disputes:{verdicts:[],culprits:[],faults:[]}})}).extrinsic,h=Zr.create({header:c,extrinsic:l}),u=ae.decodeObject(Zr.Codec.View,ge.encodeObject(Zr.Codec,h,e),e);z_.log(`🧬 Writing genesis block #${c.timeSlotIndex}: ${t}`);const{genesisStateSerialized:d,genesisStateRootHash:g}=function(e,t){const r=hn.fromEntries(Array.from(t.entries())),s=en.fromTruncatedDictionaryUnsafe(r),i=Hi.fromStateEntries(e,s),n=s.getRootHash();return z_.info(`🧬 Genesis state root: ${n}`),{genesisState:i,genesisStateSerialized:s,genesisStateRootHash:n}}(e,s.genesisState);await i.insertBlock(new Oe(t,u)),await n.insertState(t,d),await i.setPostStateRoot(t,g),await i.setBestHeaderHash(t),await r.db.close()}(r,n,s,e.node.chainSpec);const o=await async function(){const e=vh,t=new Ah;return Mn(new URL("./bootstrap.mjs","file:///home/runner/work/typeberry/typeberry/workers/importer/index.ts"),e,"ready(main)",t)}(),a=Q_({bestHeader:o.getState("ready(main)").onBestBlock}),c=new yt(r,i,e.node.authorship.omitSealVerification),l=o.transition((e,t)=>e.sendConfig(t,c)),h=Z_(l,r,e.blocksToImport),u=await Y_(e.isAuthoring,c,l);z_.info("[main]⌛ waiting for importer to finish");const d=await h;z_.log("[main] ☠️ Closing the extensions"),a(),z_.log("[main]⌛ waiting for tasks to finish"),await d.currentState().waitForWorkerToFinish(),z_.log("[main] ☠️ Closing the authorship module"),u(),z_.info("[main] ✅ Done.")}!function(e){e[e.InMemory=0]="InMemory",e[e.Lmdb=1]="Lmdb"}(W_||(W_={}));const Y_=async(e,t,r)=>{if(!e)return()=>Promise.resolve();z_.info("✍️ Starting block generator.");const{generator:s,finish:i}=await async function(e){const t=(await async function(){const e=Bh,t=new kh;return Mn(new URL("./bootstrap.mjs","file:///home/runner/work/typeberry/typeberry/workers/block-generator/index.ts"),e,"ready(main)",t)}()).transition((t,r)=>t.sendConfig(r,e));return{generator:t,finish:()=>(t.transition((e,t)=>e.finish(t)),t.waitForState("finished"))}}(t);return r.doUntil("finished",async(e,t)=>{s.currentState().onBlock.on(r=>{z_.log(`✍️ Produced block. Size: [${r.length}]`),e.sendBlock(t,r)})}),i},Z_=async(e,t,r)=>null===r?e.waitForState("finished"):(z_.info(`📖 Reading ${r.length} blocks`),e.transition((e,s)=>{const i=function*(e){const{chainSpec:t}=e;for(const r of e.files){const e=F_(r)?$_(r,t):G_(r,t);yield e}}({files:r,chainSpec:t});for(const t of i)z_.log(`📖 Importing block: #${t.header.view().timeSlotIndex.materialize()}`),e.sendBlock(s,t.encoded().raw);return z_.info("All blocks scheduled to be imported."),e.finish(s)})),X_=e=>{if(e===Ts.Full)return pt;if(e===Ts.Tiny)return ft;throw new Error(`Unknown chain spec: ${e}. Possible options: ${[Ts.Full,Ts.Tiny]}`)},eR=(e=>{var t={};return o.d(t,e),t})({default:()=>s.default}),tR=`\n@typeberry/jam 0.0.1 by Fluffy Labs.\n\nUsage:\n jam [options]\n jam [options] import <bin-or-json-blocks>\n\nOptions:\n --name Override node name. Affects networking key and db location.\n [default: ${Us.name}]\n --config Path to a config file or '${Os}'.\n [default: ${Us.config}]\n`;var rR;function sR(e,t){const{name:r}=nR(e,"name",e=>e,Us.name),{config:s}=nR(e,"config",e=>e===Os?Os:t(e),Us.config);return{nodeName:r,configPath:s}}function iR(e,t){const r=(0,eR.default)(e),s=r._.shift()??rR.Run;switch(s){case rR.Run:{const e=sR(r,t);return oR(r),{command:rR.Run,args:e}}case rR.Import:{const e=sR(r,t),s=r._.map(e=>t(e));return r._=[],oR(r),{command:rR.Import,args:{...e,files:s}}}default:r._.unshift(s),oR(r)}throw new Error(`Invalid arguments: ${JSON.stringify(r)}`)}function nR(e,t,r,s){const i=e[t];if(void 0===i)return{[t]:s};if(delete e[t],"string"!=typeof i)throw new Error(`Option '--${t}' requires an argument.`);try{const e=r(i);return{[t]:e??s}}catch(e){throw new Error(`Invalid value '${i}' for option '${t}': ${e}`)}}function oR(e){const t=Object.keys(e).filter(e=>"_"!==e&&"--"!==e);if(e._.length>0)throw new Error(`Unexpected command: '${e._[0]}'`);if((e["--"]?.length??0)>0)throw new Error(`Unexpected parameters: '${e["--"]?.[0]}'...`);if(t.length>0)throw new Error(`Unrecognized options: '${t}'`)}!function(e){e.Run="run",e.Import="import"}(rR||(rR={}));const aR=e=>{const t=e.command===rR.Import?e.args.files:[],r=function(e){if(e===Os)return j(_s,Ds.fromJson);try{const t=ks().readFileSync(e,"utf8");return j(JSON.parse(t),Ds.fromJson)}catch(t){throw new Error(`Unable to load config file from ${e}: ${t}`)}}(e.args.configPath);return q_.new({isAuthoring:!1,blockToImport:t,nodeName:e.args.nodeName,nodeConfig:r})};if("file:///home/runner/work/typeberry/typeberry/bin/jam/index.ts"===(0,c.pathToFileURL)(process.argv[1]).href){Gs.configureAll(process.env.JAM_LOG??"",Ms.LOG);const e="undefined/../..",t=t=>t.startsWith("/")?t:`${e}/${t}`;let r;try{r=iR(process.argv.slice(2),t)}catch(e){console.error(`\n${e}\n`),console.info(tR),process.exit(1)}J_(aR(r),t).catch(e=>{console.error(`${e}`),process.exit(-1)})}let cR;Gs.configureAll(process.env.JAM_LOG??"",Ms.LOG);try{cR=iR(process.argv.slice(2),lR)}catch(e){console.error(`\n${e}\n`),console.info(tR),process.exit(1)}function lR(e){return e}J_(aR(cR),lR).catch(e=>{console.error(`${e}`),process.exit(-1)});export{rR as Command,tR as HELP,iR as parseArgs,aR as prepareConfigFile};
|
|
3
3
|
//# sourceMappingURL=typeberry.mjs.map
|