@ignitionfi/spl-stake-pool 1.1.8

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.
@@ -0,0 +1,19 @@
1
+ var solanaStakePool=function(exports,node_buffer){"use strict";function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x["default"]:x}function getAugmentedNamespace(n){if(Object.prototype.hasOwnProperty.call(n,"__esModule"))return n;var f=n.default;if(typeof f=="function"){var a=function a(){var isInstance=false;try{isInstance=this instanceof a}catch{}if(isInstance){return Reflect.construct(f,arguments,this.constructor)}return f.apply(this,arguments)};a.prototype=f.prototype}else a={};Object.defineProperty(a,"__esModule",{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k]}})});return a}var buffer={};var base64Js={};var hasRequiredBase64Js;function requireBase64Js(){if(hasRequiredBase64Js)return base64Js;hasRequiredBase64Js=1;base64Js.byteLength=byteLength;base64Js.toByteArray=toByteArray;base64Js.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i}revLookup["-".charCodeAt(0)]=62;revLookup["_".charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var validLen=b64.indexOf("=");if(validLen===-1)validLen=len;var placeHoldersLen=validLen===len?0:4-validLen%4;return[validLen,placeHoldersLen]}function byteLength(b64){var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];return(validLen+placeHoldersLen)*3/4-placeHoldersLen}function _byteLength(b64,validLen,placeHoldersLen){return(validLen+placeHoldersLen)*3/4-placeHoldersLen}function toByteArray(b64){var tmp;var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];var arr=new Arr(_byteLength(b64,validLen,placeHoldersLen));var curByte=0;var len=placeHoldersLen>0?validLen-4:validLen;var i;for(i=0;i<len;i+=4){tmp=revLookup[b64.charCodeAt(i)]<<18|revLookup[b64.charCodeAt(i+1)]<<12|revLookup[b64.charCodeAt(i+2)]<<6|revLookup[b64.charCodeAt(i+3)];arr[curByte++]=tmp>>16&255;arr[curByte++]=tmp>>8&255;arr[curByte++]=tmp&255}if(placeHoldersLen===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[curByte++]=tmp&255}if(placeHoldersLen===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[curByte++]=tmp>>8&255;arr[curByte++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;i<end;i+=3){tmp=(uint8[i]<<16&16711680)+(uint8[i+1]<<8&65280)+(uint8[i+2]&255);output.push(tripletToBase64(tmp))}return output.join("")}function fromByteArray(uint8){var tmp;var len=uint8.length;var extraBytes=len%3;var parts=[];var maxChunkLength=16383;for(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"=")}return parts.join("")}return base64Js}var ieee754={};
2
+ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */var hasRequiredIeee754;function requireIeee754(){if(hasRequiredIeee754)return ieee754;hasRequiredIeee754=1;ieee754.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};ieee754.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128};return ieee754}
3
+ /*!
4
+ * The buffer module from node.js, for the browser.
5
+ *
6
+ * @author Feross Aboukhadijeh <https://feross.org>
7
+ * @license MIT
8
+ */var hasRequiredBuffer;function requireBuffer(){if(hasRequiredBuffer)return buffer;hasRequiredBuffer=1;(function(exports){const base64=requireBase64Js();const ieee754=requireIeee754();const customInspectSymbol=typeof Symbol==="function"&&typeof Symbol["for"]==="function"?Symbol["for"]("nodejs.util.inspect.custom"):null;exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;const K_MAX_LENGTH=2147483647;exports.kMaxLength=K_MAX_LENGTH;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=="undefined"&&typeof console.error==="function"){console.error("This browser lacks typed array (Uint8Array) support which is required by "+"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.")}function typedArraySupport(){try{const arr=new Uint8Array(1);const proto={foo:function(){return 42}};Object.setPrototypeOf(proto,Uint8Array.prototype);Object.setPrototypeOf(arr,proto);return arr.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,"parent",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,"offset",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError('The value "'+length+'" is invalid for option "size"')}const buf=new Uint8Array(length);Object.setPrototypeOf(buf,Buffer.prototype);return buf}function Buffer(arg,encodingOrOffset,length){if(typeof arg==="number"){if(typeof encodingOrOffset==="string"){throw new TypeError('The "string" argument must be of type string. Received type number')}return allocUnsafe(arg)}return from(arg,encodingOrOffset,length)}Buffer.poolSize=8192;function from(value,encodingOrOffset,length){if(typeof value==="string"){return fromString(value,encodingOrOffset)}if(ArrayBuffer.isView(value)){return fromArrayView(value)}if(value==null){throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer)){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof SharedArrayBuffer!=="undefined"&&(isInstance(value,SharedArrayBuffer)||value&&isInstance(value.buffer,SharedArrayBuffer))){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof value==="number"){throw new TypeError('The "value" argument must not be of type number. Received type number')}const valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value){return Buffer.from(valueOf,encodingOrOffset,length)}const b=fromObject(value);if(b)return b;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]==="function"){return Buffer.from(value[Symbol.toPrimitive]("string"),encodingOrOffset,length)}throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(size){if(typeof size!=="number"){throw new TypeError('"size" argument must be of type number')}else if(size<0){throw new RangeError('The value "'+size+'" is invalid for option "size"')}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size)}if(fill!==undefined){return typeof encoding==="string"?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill)}return createBuffer(size)}Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding)};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0)}Buffer.allocUnsafe=function(size){return allocUnsafe(size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size)};function fromString(string,encoding){if(typeof encoding!=="string"||encoding===""){encoding="utf8"}if(!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}const length=byteLength(string,encoding)|0;let buf=createBuffer(length);const actual=buf.write(string,encoding);if(actual!==length){buf=buf.slice(0,actual)}return buf}function fromArrayLike(array){const length=array.length<0?0:checked(array.length)|0;const buf=createBuffer(length);for(let i=0;i<length;i+=1){buf[i]=array[i]&255}return buf}function fromArrayView(arrayView){if(isInstance(arrayView,Uint8Array)){const copy=new Uint8Array(arrayView);return fromArrayBuffer(copy.buffer,copy.byteOffset,copy.byteLength)}return fromArrayLike(arrayView)}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError('"offset" is outside of buffer bounds')}if(array.byteLength<byteOffset+(length||0)){throw new RangeError('"length" is outside of buffer bounds')}let buf;if(byteOffset===undefined&&length===undefined){buf=new Uint8Array(array)}else if(length===undefined){buf=new Uint8Array(array,byteOffset)}else{buf=new Uint8Array(array,byteOffset,length)}Object.setPrototypeOf(buf,Buffer.prototype);return buf}function fromObject(obj){if(Buffer.isBuffer(obj)){const len=checked(obj.length)|0;const buf=createBuffer(len);if(buf.length===0){return buf}obj.copy(buf,0,0,len);return buf}if(obj.length!==undefined){if(typeof obj.length!=="number"||numberIsNaN(obj.length)){return createBuffer(0)}return fromArrayLike(obj)}if(obj.type==="Buffer"&&Array.isArray(obj.data)){return fromArrayLike(obj.data)}}function checked(length){if(length>=K_MAX_LENGTH){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+K_MAX_LENGTH.toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true&&b!==Buffer.prototype};Buffer.compare=function compare(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array')}if(a===b)return 0;let x=a.length;let y=b.length;for(let i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.concat=function concat(list,length){if(!Array.isArray(list)){throw new TypeError('"list" argument must be an Array of Buffers')}if(list.length===0){return Buffer.alloc(0)}let i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length}}const buffer=Buffer.allocUnsafe(length);let pos=0;for(i=0;i<list.length;++i){let buf=list[i];if(isInstance(buf,Uint8Array)){if(pos+buf.length>buffer.length){if(!Buffer.isBuffer(buf))buf=Buffer.from(buf);buf.copy(buffer,pos)}else{Uint8Array.prototype.set.call(buffer,buf,pos)}}else if(!Buffer.isBuffer(buf)){throw new TypeError('"list" argument must be an Array of Buffers')}else{buf.copy(buffer,pos)}pos+=buf.length}return buffer};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length}if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer)){return string.byteLength}if(typeof string!=="string"){throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. '+"Received type "+typeof string)}const len=string.length;const mustMatch=arguments.length>2&&arguments[2]===true;if(!mustMatch&&len===0)return 0;let loweredCase=false;for(;;){switch(encoding){case"ascii":case"latin1":case"binary":return len;case"utf8":case"utf-8":return utf8ToBytes(string).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return len*2;case"hex":return len>>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase){return mustMatch?-1:utf8ToBytes(string).length}encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){let loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){const i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){const len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(let i=0;i<len;i+=2){swap(this,i,i+1)}return this};Buffer.prototype.swap32=function swap32(){const len=this.length;if(len%4!==0){throw new RangeError("Buffer size must be a multiple of 32-bits")}for(let i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2)}return this};Buffer.prototype.swap64=function swap64(){const len=this.length;if(len%8!==0){throw new RangeError("Buffer size must be a multiple of 64-bits")}for(let i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4)}return this};Buffer.prototype.toString=function toString(){const length=this.length;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){let str="";const max=exports.INSPECT_MAX_BYTES;str=this.toString("hex",0,max).replace(/(.{2})/g,"$1 ").trim();if(this.length>max)str+=" ... ";return"<Buffer "+str+">"};if(customInspectSymbol){Buffer.prototype[customInspectSymbol]=Buffer.prototype.inspect}Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array)){target=Buffer.from(target,target.offset,target.byteLength)}if(!Buffer.isBuffer(target)){throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. '+"Received type "+typeof target)}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;let x=thisEnd-thisStart;let y=end-start;const len=Math.min(x,y);const thisCopy=this.slice(thisStart,thisEnd);const targetCopy=target.slice(start,end);for(let i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buffer.length===0)return-1;if(typeof byteOffset==="string"){encoding=byteOffset;byteOffset=0}else if(byteOffset>2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(numberIsNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){let indexSize=1;let arrLength=arr.length;let valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}let i;if(dir){let foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){let found=true;for(let j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break}}if(found)return i}}return-1}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false)};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;const remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}const strLen=string.length;if(length>strLen/2){length=strLen/2}let i;for(i=0;i<length;++i){const parsed=parseInt(string.substr(i*2,2),16);if(numberIsNaN(parsed))return i;buf[offset+i]=parsed}return i}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length)}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length)}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)}Buffer.prototype.write=function write(string,offset,length,encoding){if(offset===undefined){encoding="utf8";length=this.length;offset=0}else if(length===undefined&&typeof offset==="string"){encoding=offset;length=this.length;offset=0}else if(isFinite(offset)){offset=offset>>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding="utf8"}else{encoding=length;length=undefined}}else{throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported")}const remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";let loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":case"latin1":case"binary":return asciiWrite(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);const res=[];let i=start;while(i<end){const firstByte=buf[i];let codePoint=null;let bytesPerSequence=firstByte>239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){let secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}const MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){const len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}let res="";let i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH))}return res}function asciiSlice(buf,start,end){let ret="";end=Math.min(buf.length,end);for(let i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&127)}return ret}function latin1Slice(buf,start,end){let ret="";end=Math.min(buf.length,end);for(let i=start;i<end;++i){ret+=String.fromCharCode(buf[i])}return ret}function hexSlice(buf,start,end){const len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;let out="";for(let i=start;i<end;++i){out+=hexSliceLookupTable[buf[i]]}return out}function utf16leSlice(buf,start,end){const bytes=buf.slice(start,end);let res="";for(let i=0;i<bytes.length-1;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function slice(start,end){const len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0}else if(start>len){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(end<start)end=start;const newBuf=this.subarray(start,end);Object.setPrototypeOf(newBuf,Buffer.prototype);return newBuf};function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError("offset is not uint");if(offset+ext>length)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let val=this[offset];let mul=1;let i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}return val};Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length)}let val=this[offset+--byteLength];let mul=1;while(byteLength>0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readBigUInt64LE=defineBigIntMethod(function readBigUInt64LE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const lo=first+this[++offset]*2**8+this[++offset]*2**16+this[++offset]*2**24;const hi=this[++offset]+this[++offset]*2**8+this[++offset]*2**16+last*2**24;return BigInt(lo)+(BigInt(hi)<<BigInt(32))});Buffer.prototype.readBigUInt64BE=defineBigIntMethod(function readBigUInt64BE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const hi=first*2**24+this[++offset]*2**16+this[++offset]*2**8+this[++offset];const lo=this[++offset]*2**24+this[++offset]*2**16+this[++offset]*2**8+last;return(BigInt(hi)<<BigInt(32))+BigInt(lo)});Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let val=this[offset];let mul=1;let i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let i=byteLength;let mul=1;let val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);const val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);const val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readBigInt64LE=defineBigIntMethod(function readBigInt64LE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const val=this[offset+4]+this[offset+5]*2**8+this[offset+6]*2**16+(last<<24);return(BigInt(val)<<BigInt(32))+BigInt(first+this[++offset]*2**8+this[++offset]*2**16+this[++offset]*2**24)});Buffer.prototype.readBigInt64BE=defineBigIntMethod(function readBigInt64BE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const val=(first<<24)+this[++offset]*2**16+this[++offset]*2**8+this[++offset];return(BigInt(val)<<BigInt(32))+BigInt(this[++offset]*2**24+this[++offset]*2**16+this[++offset]*2**8+last)});Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('"value" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){const maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}let mul=1;let i=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){const maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}let i=byteLength-1;let mul=1;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,255,0);this[offset]=value&255;return offset+1};Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255;return offset+4};Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};function wrtBigUInt64LE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;return offset}function wrtBigUInt64BE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset+7]=lo;lo=lo>>8;buf[offset+6]=lo;lo=lo>>8;buf[offset+5]=lo;lo=lo>>8;buf[offset+4]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));buf[offset+3]=hi;hi=hi>>8;buf[offset+2]=hi;hi=hi>>8;buf[offset+1]=hi;hi=hi>>8;buf[offset]=hi;return offset+8}Buffer.prototype.writeBigUInt64LE=defineBigIntMethod(function writeBigUInt64LE(value,offset=0){return wrtBigUInt64LE(this,value,offset,BigInt(0),BigInt("0xffffffffffffffff"))});Buffer.prototype.writeBigUInt64BE=defineBigIntMethod(function writeBigUInt64BE(value,offset=0){return wrtBigUInt64BE(this,value,offset,BigInt(0),BigInt("0xffffffffffffffff"))});Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){const limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}let i=0;let mul=1;let sub=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){const limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}let i=byteLength-1;let mul=1;let sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};Buffer.prototype.writeBigInt64LE=defineBigIntMethod(function writeBigInt64LE(value,offset=0){return wrtBigUInt64LE(this,value,offset,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});Buffer.prototype.writeBigInt64BE=defineBigIntMethod(function writeBigInt64BE(value,offset=0){return wrtBigUInt64BE(this,value,offset,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw new TypeError("argument should be a Buffer");if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;if(end===start)return 0;if(target.length===0||this.length===0)return 0;if(targetStart<0){throw new RangeError("targetStart out of bounds")}if(start<0||start>=this.length)throw new RangeError("Index out of range");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start}const len=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin==="function"){this.copyWithin(targetStart,start,end)}else{Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart)}return len};Buffer.prototype.fill=function fill(val,start,end,encoding){if(typeof val==="string"){if(typeof start==="string"){encoding=start;start=0;end=this.length}else if(typeof end==="string"){encoding=end;end=this.length}if(encoding!==undefined&&typeof encoding!=="string"){throw new TypeError("encoding must be a string")}if(typeof encoding==="string"&&!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}if(val.length===1){const code=val.charCodeAt(0);if(encoding==="utf8"&&code<128||encoding==="latin1"){val=code}}}else if(typeof val==="number"){val=val&255}else if(typeof val==="boolean"){val=Number(val)}if(start<0||this.length<start||this.length<end){throw new RangeError("Out of range index")}if(end<=start){return this}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;let i;if(typeof val==="number"){for(i=start;i<end;++i){this[i]=val}}else{const bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding);const len=bytes.length;if(len===0){throw new TypeError('The value "'+val+'" is invalid for argument "value"')}for(i=0;i<end-start;++i){this[i+start]=bytes[i%len]}}return this};const errors={};function E(sym,getMessage,Base){errors[sym]=class NodeError extends Base{constructor(){super();Object.defineProperty(this,"message",{value:getMessage.apply(this,arguments),writable:true,configurable:true});this.name=`${this.name} [${sym}]`;this.stack;delete this.name}get code(){return sym}set code(value){Object.defineProperty(this,"code",{configurable:true,enumerable:true,value:value,writable:true})}toString(){return`${this.name} [${sym}]: ${this.message}`}}}E("ERR_BUFFER_OUT_OF_BOUNDS",function(name){if(name){return`${name} is outside of buffer bounds`}return"Attempt to access memory outside buffer bounds"},RangeError);E("ERR_INVALID_ARG_TYPE",function(name,actual){return`The "${name}" argument must be of type number. Received type ${typeof actual}`},TypeError);E("ERR_OUT_OF_RANGE",function(str,range,input){let msg=`The value of "${str}" is out of range.`;let received=input;if(Number.isInteger(input)&&Math.abs(input)>2**32){received=addNumericalSeparator(String(input))}else if(typeof input==="bigint"){received=String(input);if(input>BigInt(2)**BigInt(32)||input<-(BigInt(2)**BigInt(32))){received=addNumericalSeparator(received)}received+="n"}msg+=` It must be ${range}. Received ${received}`;return msg},RangeError);function addNumericalSeparator(val){let res="";let i=val.length;const start=val[0]==="-"?1:0;for(;i>=start+4;i-=3){res=`_${val.slice(i-3,i)}${res}`}return`${val.slice(0,i)}${res}`}function checkBounds(buf,offset,byteLength){validateNumber(offset,"offset");if(buf[offset]===undefined||buf[offset+byteLength]===undefined){boundsError(offset,buf.length-(byteLength+1))}}function checkIntBI(value,min,max,buf,offset,byteLength){if(value>max||value<min){const n=typeof min==="bigint"?"n":"";let range;{if(min===0||min===BigInt(0)){range=`>= 0${n} and < 2${n} ** ${(byteLength+1)*8}${n}`}else{range=`>= -(2${n} ** ${(byteLength+1)*8-1}${n}) and < 2 ** `+`${(byteLength+1)*8-1}${n}`}}throw new errors.ERR_OUT_OF_RANGE("value",range,value)}checkBounds(buf,offset,byteLength)}function validateNumber(value,name){if(typeof value!=="number"){throw new errors.ERR_INVALID_ARG_TYPE(name,"number",value)}}function boundsError(value,length,type){if(Math.floor(value)!==value){validateNumber(value,type);throw new errors.ERR_OUT_OF_RANGE("offset","an integer",value)}if(length<0){throw new errors.ERR_BUFFER_OUT_OF_BOUNDS}throw new errors.ERR_OUT_OF_RANGE("offset",`>= ${0} and <= ${length}`,value)}const INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){str=str.split("=")[0];str=str.trim().replace(INVALID_BASE64_RE,"");if(str.length<2)return"";while(str.length%4!==0){str=str+"="}return str}function utf8ToBytes(string,units){units=units||Infinity;let codePoint;const length=string.length;let leadSurrogate=null;const bytes=[];for(let i=0;i<length;++i){codePoint=string.charCodeAt(i);if(codePoint>55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){const byteArray=[];for(let i=0;i<str.length;++i){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str,units){let c,hi,lo;const byteArray=[];for(let i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){let i;for(i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name}function numberIsNaN(obj){return obj!==obj}const hexSliceLookupTable=function(){const alphabet="0123456789abcdef";const table=new Array(256);for(let i=0;i<16;++i){const i16=i*16;for(let j=0;j<16;++j){table[i16+j]=alphabet[i]+alphabet[j]}}return table}();function defineBigIntMethod(fn){return typeof BigInt==="undefined"?BufferBigIntNotDefined:fn}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}})(buffer);return buffer}var bufferExports=requireBuffer();const crypto=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:undefined;
9
+ /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function isBytes(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function anumber(n){if(!Number.isSafeInteger(n)||n<0)throw new Error("positive integer expected, got "+n)}function abytes(b,...lengths){if(!isBytes(b))throw new Error("Uint8Array expected");if(lengths.length>0&&!lengths.includes(b.length))throw new Error("Uint8Array expected of length "+lengths+", got length="+b.length)}function ahash(h){if(typeof h!=="function"||typeof h.create!=="function")throw new Error("Hash should be wrapped by utils.createHasher");anumber(h.outputLen);anumber(h.blockLen)}function aexists(instance,checkFinished=true){if(instance.destroyed)throw new Error("Hash instance has been destroyed");if(checkFinished&&instance.finished)throw new Error("Hash#digest() has already been called")}function aoutput(out,instance){abytes(out);const min=instance.outputLen;if(out.length<min){throw new Error("digestInto() expects output buffer of length at least "+min)}}function clean(...arrays){for(let i=0;i<arrays.length;i++){arrays[i].fill(0)}}function createView(arr){return new DataView(arr.buffer,arr.byteOffset,arr.byteLength)}function rotr(word,shift){return word<<32-shift|word>>>shift}const hasHexBuiltin=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")();const hexes=Array.from({length:256},(_,i)=>i.toString(16).padStart(2,"0"));function bytesToHex(bytes){abytes(bytes);if(hasHexBuiltin)return bytes.toHex();let hex="";for(let i=0;i<bytes.length;i++){hex+=hexes[bytes[i]]}return hex}const asciis={_0:48,_9:57,A:65,F:70,a:97,f:102};function asciiToBase16(ch){if(ch>=asciis._0&&ch<=asciis._9)return ch-asciis._0;if(ch>=asciis.A&&ch<=asciis.F)return ch-(asciis.A-10);if(ch>=asciis.a&&ch<=asciis.f)return ch-(asciis.a-10);return}function hexToBytes(hex){if(typeof hex!=="string")throw new Error("hex string expected, got "+typeof hex);if(hasHexBuiltin)return Uint8Array.fromHex(hex);const hl=hex.length;const al=hl/2;if(hl%2)throw new Error("hex string expected, got unpadded hex of length "+hl);const array=new Uint8Array(al);for(let ai=0,hi=0;ai<al;ai++,hi+=2){const n1=asciiToBase16(hex.charCodeAt(hi));const n2=asciiToBase16(hex.charCodeAt(hi+1));if(n1===undefined||n2===undefined){const char=hex[hi]+hex[hi+1];throw new Error('hex string expected, got non-hex character "'+char+'" at index '+hi)}array[ai]=n1*16+n2}return array}function utf8ToBytes(str){if(typeof str!=="string")throw new Error("string expected");return new Uint8Array((new TextEncoder).encode(str))}function toBytes(data){if(typeof data==="string")data=utf8ToBytes(data);abytes(data);return data}function concatBytes(...arrays){let sum=0;for(let i=0;i<arrays.length;i++){const a=arrays[i];abytes(a);sum+=a.length}const res=new Uint8Array(sum);for(let i=0,pad=0;i<arrays.length;i++){const a=arrays[i];res.set(a,pad);pad+=a.length}return res}class Hash{}function createHasher(hashCons){const hashC=msg=>hashCons().update(toBytes(msg)).digest();const tmp=hashCons();hashC.outputLen=tmp.outputLen;hashC.blockLen=tmp.blockLen;hashC.create=()=>hashCons();return hashC}function randomBytes(bytesLength=32){if(crypto&&typeof crypto.getRandomValues==="function"){return crypto.getRandomValues(new Uint8Array(bytesLength))}if(crypto&&typeof crypto.randomBytes==="function"){return Uint8Array.from(crypto.randomBytes(bytesLength))}throw new Error("crypto.getRandomValues must be defined")}function setBigUint64(view,byteOffset,value,isLE){if(typeof view.setBigUint64==="function")return view.setBigUint64(byteOffset,value,isLE);const _32n=BigInt(32);const _u32_max=BigInt(4294967295);const wh=Number(value>>_32n&_u32_max);const wl=Number(value&_u32_max);const h=isLE?4:0;const l=isLE?0:4;view.setUint32(byteOffset+h,wh,isLE);view.setUint32(byteOffset+l,wl,isLE)}function Chi(a,b,c){return a&b^~a&c}function Maj(a,b,c){return a&b^a&c^b&c}class HashMD extends Hash{constructor(blockLen,outputLen,padOffset,isLE){super();this.finished=false;this.length=0;this.pos=0;this.destroyed=false;this.blockLen=blockLen;this.outputLen=outputLen;this.padOffset=padOffset;this.isLE=isLE;this.buffer=new Uint8Array(blockLen);this.view=createView(this.buffer)}update(data){aexists(this);data=toBytes(data);abytes(data);const{view:view,buffer:buffer,blockLen:blockLen}=this;const len=data.length;for(let pos=0;pos<len;){const take=Math.min(blockLen-this.pos,len-pos);if(take===blockLen){const dataView=createView(data);for(;blockLen<=len-pos;pos+=blockLen)this.process(dataView,pos);continue}buffer.set(data.subarray(pos,pos+take),this.pos);this.pos+=take;pos+=take;if(this.pos===blockLen){this.process(view,0);this.pos=0}}this.length+=data.length;this.roundClean();return this}digestInto(out){aexists(this);aoutput(out,this);this.finished=true;const{buffer:buffer,view:view,blockLen:blockLen,isLE:isLE}=this;let{pos:pos}=this;buffer[pos++]=128;clean(this.buffer.subarray(pos));if(this.padOffset>blockLen-pos){this.process(view,0);pos=0}for(let i=pos;i<blockLen;i++)buffer[i]=0;setBigUint64(view,blockLen-8,BigInt(this.length*8),isLE);this.process(view,0);const oview=createView(out);const len=this.outputLen;if(len%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const outLen=len/4;const state=this.get();if(outLen>state.length)throw new Error("_sha2: outputLen bigger than state");for(let i=0;i<outLen;i++)oview.setUint32(4*i,state[i],isLE)}digest(){const{buffer:buffer,outputLen:outputLen}=this;this.digestInto(buffer);const res=buffer.slice(0,outputLen);this.destroy();return res}_cloneInto(to){to||(to=new this.constructor);to.set(...this.get());const{blockLen:blockLen,buffer:buffer,length:length,finished:finished,destroyed:destroyed,pos:pos}=this;to.destroyed=destroyed;to.finished=finished;to.length=length;to.pos=pos;if(length%blockLen)to.buffer.set(buffer);return to}clone(){return this._cloneInto()}}const SHA256_IV=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);const SHA512_IV=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);const U32_MASK64=BigInt(2**32-1);const _32n=BigInt(32);function fromBig(n,le=false){if(le)return{h:Number(n&U32_MASK64),l:Number(n>>_32n&U32_MASK64)};return{h:Number(n>>_32n&U32_MASK64)|0,l:Number(n&U32_MASK64)|0}}function split(lst,le=false){const len=lst.length;let Ah=new Uint32Array(len);let Al=new Uint32Array(len);for(let i=0;i<len;i++){const{h:h,l:l}=fromBig(lst[i],le);[Ah[i],Al[i]]=[h,l]}return[Ah,Al]}const shrSH=(h,_l,s)=>h>>>s;const shrSL=(h,l,s)=>h<<32-s|l>>>s;const rotrSH=(h,l,s)=>h>>>s|l<<32-s;const rotrSL=(h,l,s)=>h<<32-s|l>>>s;const rotrBH=(h,l,s)=>h<<64-s|l>>>s-32;const rotrBL=(h,l,s)=>h>>>s-32|l<<64-s;function add(Ah,Al,Bh,Bl){const l=(Al>>>0)+(Bl>>>0);return{h:Ah+Bh+(l/2**32|0)|0,l:l|0}}const add3L=(Al,Bl,Cl)=>(Al>>>0)+(Bl>>>0)+(Cl>>>0);const add3H=(low,Ah,Bh,Ch)=>Ah+Bh+Ch+(low/2**32|0)|0;const add4L=(Al,Bl,Cl,Dl)=>(Al>>>0)+(Bl>>>0)+(Cl>>>0)+(Dl>>>0);const add4H=(low,Ah,Bh,Ch,Dh)=>Ah+Bh+Ch+Dh+(low/2**32|0)|0;const add5L=(Al,Bl,Cl,Dl,El)=>(Al>>>0)+(Bl>>>0)+(Cl>>>0)+(Dl>>>0)+(El>>>0);const add5H=(low,Ah,Bh,Ch,Dh,Eh)=>Ah+Bh+Ch+Dh+Eh+(low/2**32|0)|0;const SHA256_K=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);const SHA256_W=new Uint32Array(64);class SHA256 extends HashMD{constructor(outputLen=32){super(64,outputLen,8,false);this.A=SHA256_IV[0]|0;this.B=SHA256_IV[1]|0;this.C=SHA256_IV[2]|0;this.D=SHA256_IV[3]|0;this.E=SHA256_IV[4]|0;this.F=SHA256_IV[5]|0;this.G=SHA256_IV[6]|0;this.H=SHA256_IV[7]|0}get(){const{A:A,B:B,C:C,D:D,E:E,F:F,G:G,H:H}=this;return[A,B,C,D,E,F,G,H]}set(A,B,C,D,E,F,G,H){this.A=A|0;this.B=B|0;this.C=C|0;this.D=D|0;this.E=E|0;this.F=F|0;this.G=G|0;this.H=H|0}process(view,offset){for(let i=0;i<16;i++,offset+=4)SHA256_W[i]=view.getUint32(offset,false);for(let i=16;i<64;i++){const W15=SHA256_W[i-15];const W2=SHA256_W[i-2];const s0=rotr(W15,7)^rotr(W15,18)^W15>>>3;const s1=rotr(W2,17)^rotr(W2,19)^W2>>>10;SHA256_W[i]=s1+SHA256_W[i-7]+s0+SHA256_W[i-16]|0}let{A:A,B:B,C:C,D:D,E:E,F:F,G:G,H:H}=this;for(let i=0;i<64;i++){const sigma1=rotr(E,6)^rotr(E,11)^rotr(E,25);const T1=H+sigma1+Chi(E,F,G)+SHA256_K[i]+SHA256_W[i]|0;const sigma0=rotr(A,2)^rotr(A,13)^rotr(A,22);const T2=sigma0+Maj(A,B,C)|0;H=G;G=F;F=E;E=D+T1|0;D=C;C=B;B=A;A=T1+T2|0}A=A+this.A|0;B=B+this.B|0;C=C+this.C|0;D=D+this.D|0;E=E+this.E|0;F=F+this.F|0;G=G+this.G|0;H=H+this.H|0;this.set(A,B,C,D,E,F,G,H)}roundClean(){clean(SHA256_W)}destroy(){this.set(0,0,0,0,0,0,0,0);clean(this.buffer)}}const K512=(()=>split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(n=>BigInt(n))))();const SHA512_Kh=(()=>K512[0])();const SHA512_Kl=(()=>K512[1])();const SHA512_W_H=new Uint32Array(80);const SHA512_W_L=new Uint32Array(80);class SHA512 extends HashMD{constructor(outputLen=64){super(128,outputLen,16,false);this.Ah=SHA512_IV[0]|0;this.Al=SHA512_IV[1]|0;this.Bh=SHA512_IV[2]|0;this.Bl=SHA512_IV[3]|0;this.Ch=SHA512_IV[4]|0;this.Cl=SHA512_IV[5]|0;this.Dh=SHA512_IV[6]|0;this.Dl=SHA512_IV[7]|0;this.Eh=SHA512_IV[8]|0;this.El=SHA512_IV[9]|0;this.Fh=SHA512_IV[10]|0;this.Fl=SHA512_IV[11]|0;this.Gh=SHA512_IV[12]|0;this.Gl=SHA512_IV[13]|0;this.Hh=SHA512_IV[14]|0;this.Hl=SHA512_IV[15]|0}get(){const{Ah:Ah,Al:Al,Bh:Bh,Bl:Bl,Ch:Ch,Cl:Cl,Dh:Dh,Dl:Dl,Eh:Eh,El:El,Fh:Fh,Fl:Fl,Gh:Gh,Gl:Gl,Hh:Hh,Hl:Hl}=this;return[Ah,Al,Bh,Bl,Ch,Cl,Dh,Dl,Eh,El,Fh,Fl,Gh,Gl,Hh,Hl]}set(Ah,Al,Bh,Bl,Ch,Cl,Dh,Dl,Eh,El,Fh,Fl,Gh,Gl,Hh,Hl){this.Ah=Ah|0;this.Al=Al|0;this.Bh=Bh|0;this.Bl=Bl|0;this.Ch=Ch|0;this.Cl=Cl|0;this.Dh=Dh|0;this.Dl=Dl|0;this.Eh=Eh|0;this.El=El|0;this.Fh=Fh|0;this.Fl=Fl|0;this.Gh=Gh|0;this.Gl=Gl|0;this.Hh=Hh|0;this.Hl=Hl|0}process(view,offset){for(let i=0;i<16;i++,offset+=4){SHA512_W_H[i]=view.getUint32(offset);SHA512_W_L[i]=view.getUint32(offset+=4)}for(let i=16;i<80;i++){const W15h=SHA512_W_H[i-15]|0;const W15l=SHA512_W_L[i-15]|0;const s0h=rotrSH(W15h,W15l,1)^rotrSH(W15h,W15l,8)^shrSH(W15h,W15l,7);const s0l=rotrSL(W15h,W15l,1)^rotrSL(W15h,W15l,8)^shrSL(W15h,W15l,7);const W2h=SHA512_W_H[i-2]|0;const W2l=SHA512_W_L[i-2]|0;const s1h=rotrSH(W2h,W2l,19)^rotrBH(W2h,W2l,61)^shrSH(W2h,W2l,6);const s1l=rotrSL(W2h,W2l,19)^rotrBL(W2h,W2l,61)^shrSL(W2h,W2l,6);const SUMl=add4L(s0l,s1l,SHA512_W_L[i-7],SHA512_W_L[i-16]);const SUMh=add4H(SUMl,s0h,s1h,SHA512_W_H[i-7],SHA512_W_H[i-16]);SHA512_W_H[i]=SUMh|0;SHA512_W_L[i]=SUMl|0}let{Ah:Ah,Al:Al,Bh:Bh,Bl:Bl,Ch:Ch,Cl:Cl,Dh:Dh,Dl:Dl,Eh:Eh,El:El,Fh:Fh,Fl:Fl,Gh:Gh,Gl:Gl,Hh:Hh,Hl:Hl}=this;for(let i=0;i<80;i++){const sigma1h=rotrSH(Eh,El,14)^rotrSH(Eh,El,18)^rotrBH(Eh,El,41);const sigma1l=rotrSL(Eh,El,14)^rotrSL(Eh,El,18)^rotrBL(Eh,El,41);const CHIh=Eh&Fh^~Eh&Gh;const CHIl=El&Fl^~El&Gl;const T1ll=add5L(Hl,sigma1l,CHIl,SHA512_Kl[i],SHA512_W_L[i]);const T1h=add5H(T1ll,Hh,sigma1h,CHIh,SHA512_Kh[i],SHA512_W_H[i]);const T1l=T1ll|0;const sigma0h=rotrSH(Ah,Al,28)^rotrBH(Ah,Al,34)^rotrBH(Ah,Al,39);const sigma0l=rotrSL(Ah,Al,28)^rotrBL(Ah,Al,34)^rotrBL(Ah,Al,39);const MAJh=Ah&Bh^Ah&Ch^Bh&Ch;const MAJl=Al&Bl^Al&Cl^Bl&Cl;Hh=Gh|0;Hl=Gl|0;Gh=Fh|0;Gl=Fl|0;Fh=Eh|0;Fl=El|0;({h:Eh,l:El}=add(Dh|0,Dl|0,T1h|0,T1l|0));Dh=Ch|0;Dl=Cl|0;Ch=Bh|0;Cl=Bl|0;Bh=Ah|0;Bl=Al|0;const All=add3L(T1l,sigma0l,MAJl);Ah=add3H(All,T1h,sigma0h,MAJh);Al=All|0}({h:Ah,l:Al}=add(this.Ah|0,this.Al|0,Ah|0,Al|0));({h:Bh,l:Bl}=add(this.Bh|0,this.Bl|0,Bh|0,Bl|0));({h:Ch,l:Cl}=add(this.Ch|0,this.Cl|0,Ch|0,Cl|0));({h:Dh,l:Dl}=add(this.Dh|0,this.Dl|0,Dh|0,Dl|0));({h:Eh,l:El}=add(this.Eh|0,this.El|0,Eh|0,El|0));({h:Fh,l:Fl}=add(this.Fh|0,this.Fl|0,Fh|0,Fl|0));({h:Gh,l:Gl}=add(this.Gh|0,this.Gl|0,Gh|0,Gl|0));({h:Hh,l:Hl}=add(this.Hh|0,this.Hl|0,Hh|0,Hl|0));this.set(Ah,Al,Bh,Bl,Ch,Cl,Dh,Dl,Eh,El,Fh,Fl,Gh,Gl,Hh,Hl)}roundClean(){clean(SHA512_W_H,SHA512_W_L)}destroy(){clean(this.buffer);this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}const sha256$1=createHasher(()=>new SHA256);const sha512=createHasher(()=>new SHA512);
10
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _0n$4=BigInt(0);const _1n$5=BigInt(1);function _abool2(value,title=""){if(typeof value!=="boolean"){const prefix=title&&`"${title}"`;throw new Error(prefix+"expected boolean, got type="+typeof value)}return value}function _abytes2(value,length,title=""){const bytes=isBytes(value);const len=value?.length;const needsLen=length!==undefined;if(!bytes||needsLen&&len!==length){const prefix=title&&`"${title}" `;const ofLen=needsLen?` of length ${length}`:"";const got=bytes?`length=${len}`:`type=${typeof value}`;throw new Error(prefix+"expected Uint8Array"+ofLen+", got "+got)}return value}function numberToHexUnpadded(num){const hex=num.toString(16);return hex.length&1?"0"+hex:hex}function hexToNumber(hex){if(typeof hex!=="string")throw new Error("hex string expected, got "+typeof hex);return hex===""?_0n$4:BigInt("0x"+hex)}function bytesToNumberBE(bytes){return hexToNumber(bytesToHex(bytes))}function bytesToNumberLE(bytes){abytes(bytes);return hexToNumber(bytesToHex(Uint8Array.from(bytes).reverse()))}function numberToBytesBE(n,len){return hexToBytes(n.toString(16).padStart(len*2,"0"))}function numberToBytesLE(n,len){return numberToBytesBE(n,len).reverse()}function ensureBytes(title,hex,expectedLength){let res;if(typeof hex==="string"){try{res=hexToBytes(hex)}catch(e){throw new Error(title+" must be hex string or Uint8Array, cause: "+e)}}else if(isBytes(hex)){res=Uint8Array.from(hex)}else{throw new Error(title+" must be hex string or Uint8Array")}const len=res.length;if(typeof expectedLength==="number"&&len!==expectedLength)throw new Error(title+" of length "+expectedLength+" expected, got "+len);return res}function copyBytes(bytes){return Uint8Array.from(bytes)}const isPosBig=n=>typeof n==="bigint"&&_0n$4<=n;function inRange(n,min,max){return isPosBig(n)&&isPosBig(min)&&isPosBig(max)&&min<=n&&n<max}function aInRange(title,n,min,max){if(!inRange(n,min,max))throw new Error("expected valid "+title+": "+min+" <= n < "+max+", got "+n)}function bitLen(n){let len;for(len=0;n>_0n$4;n>>=_1n$5,len+=1);return len}const bitMask=n=>(_1n$5<<BigInt(n))-_1n$5;function createHmacDrbg(hashLen,qByteLen,hmacFn){if(typeof hashLen!=="number"||hashLen<2)throw new Error("hashLen must be a number");if(typeof qByteLen!=="number"||qByteLen<2)throw new Error("qByteLen must be a number");if(typeof hmacFn!=="function")throw new Error("hmacFn must be a function");const u8n=len=>new Uint8Array(len);const u8of=byte=>Uint8Array.of(byte);let v=u8n(hashLen);let k=u8n(hashLen);let i=0;const reset=()=>{v.fill(1);k.fill(0);i=0};const h=(...b)=>hmacFn(k,v,...b);const reseed=(seed=u8n(0))=>{k=h(u8of(0),seed);v=h();if(seed.length===0)return;k=h(u8of(1),seed);v=h()};const gen=()=>{if(i++>=1e3)throw new Error("drbg: tried 1000 values");let len=0;const out=[];while(len<qByteLen){v=h();const sl=v.slice();out.push(sl);len+=v.length}return concatBytes(...out)};const genUntil=(seed,pred)=>{reset();reseed(seed);let res=undefined;while(!(res=pred(gen())))reseed();reset();return res};return genUntil}function _validateObject(object,fields,optFields={}){if(!object||typeof object!=="object")throw new Error("expected valid options object");function checkField(fieldName,expectedType,isOpt){const val=object[fieldName];if(isOpt&&val===undefined)return;const current=typeof val;if(current!==expectedType||val===null)throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`)}Object.entries(fields).forEach(([k,v])=>checkField(k,v,false));Object.entries(optFields).forEach(([k,v])=>checkField(k,v,true))}function memoized(fn){const map=new WeakMap;return(arg,...args)=>{const val=map.get(arg);if(val!==undefined)return val;const computed=fn(arg,...args);map.set(arg,computed);return computed}}
11
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _0n$3=BigInt(0),_1n$4=BigInt(1),_2n$4=BigInt(2),_3n$1=BigInt(3);const _4n$1=BigInt(4),_5n$1=BigInt(5),_7n=BigInt(7);const _8n$2=BigInt(8),_9n=BigInt(9),_16n=BigInt(16);function mod(a,b){const result=a%b;return result>=_0n$3?result:b+result}function pow2(x,power,modulo){let res=x;while(power-- >_0n$3){res*=res;res%=modulo}return res}function invert(number,modulo){if(number===_0n$3)throw new Error("invert: expected non-zero number");if(modulo<=_0n$3)throw new Error("invert: expected positive modulus, got "+modulo);let a=mod(number,modulo);let b=modulo;let x=_0n$3,u=_1n$4;while(a!==_0n$3){const q=b/a;const r=b%a;const m=x-u*q;b=a,a=r,x=u,u=m}const gcd=b;if(gcd!==_1n$4)throw new Error("invert: does not exist");return mod(x,modulo)}function assertIsSquare(Fp,root,n){if(!Fp.eql(Fp.sqr(root),n))throw new Error("Cannot find square root")}function sqrt3mod4(Fp,n){const p1div4=(Fp.ORDER+_1n$4)/_4n$1;const root=Fp.pow(n,p1div4);assertIsSquare(Fp,root,n);return root}function sqrt5mod8(Fp,n){const p5div8=(Fp.ORDER-_5n$1)/_8n$2;const n2=Fp.mul(n,_2n$4);const v=Fp.pow(n2,p5div8);const nv=Fp.mul(n,v);const i=Fp.mul(Fp.mul(nv,_2n$4),v);const root=Fp.mul(nv,Fp.sub(i,Fp.ONE));assertIsSquare(Fp,root,n);return root}function sqrt9mod16(P){const Fp_=Field(P);const tn=tonelliShanks(P);const c1=tn(Fp_,Fp_.neg(Fp_.ONE));const c2=tn(Fp_,c1);const c3=tn(Fp_,Fp_.neg(c1));const c4=(P+_7n)/_16n;return(Fp,n)=>{let tv1=Fp.pow(n,c4);let tv2=Fp.mul(tv1,c1);const tv3=Fp.mul(tv1,c2);const tv4=Fp.mul(tv1,c3);const e1=Fp.eql(Fp.sqr(tv2),n);const e2=Fp.eql(Fp.sqr(tv3),n);tv1=Fp.cmov(tv1,tv2,e1);tv2=Fp.cmov(tv4,tv3,e2);const e3=Fp.eql(Fp.sqr(tv2),n);const root=Fp.cmov(tv1,tv2,e3);assertIsSquare(Fp,root,n);return root}}function tonelliShanks(P){if(P<_3n$1)throw new Error("sqrt is not defined for small field");let Q=P-_1n$4;let S=0;while(Q%_2n$4===_0n$3){Q/=_2n$4;S++}let Z=_2n$4;const _Fp=Field(P);while(FpLegendre(_Fp,Z)===1){if(Z++>1e3)throw new Error("Cannot find square root: probably non-prime P")}if(S===1)return sqrt3mod4;let cc=_Fp.pow(Z,Q);const Q1div2=(Q+_1n$4)/_2n$4;return function tonelliSlow(Fp,n){if(Fp.is0(n))return n;if(FpLegendre(Fp,n)!==1)throw new Error("Cannot find square root");let M=S;let c=Fp.mul(Fp.ONE,cc);let t=Fp.pow(n,Q);let R=Fp.pow(n,Q1div2);while(!Fp.eql(t,Fp.ONE)){if(Fp.is0(t))return Fp.ZERO;let i=1;let t_tmp=Fp.sqr(t);while(!Fp.eql(t_tmp,Fp.ONE)){i++;t_tmp=Fp.sqr(t_tmp);if(i===M)throw new Error("Cannot find square root")}const exponent=_1n$4<<BigInt(M-i-1);const b=Fp.pow(c,exponent);M=i;c=Fp.sqr(b);t=Fp.mul(t,c);R=Fp.mul(R,b)}return R}}function FpSqrt(P){if(P%_4n$1===_3n$1)return sqrt3mod4;if(P%_8n$2===_5n$1)return sqrt5mod8;if(P%_16n===_9n)return sqrt9mod16(P);return tonelliShanks(P)}const isNegativeLE=(num,modulo)=>(mod(num,modulo)&_1n$4)===_1n$4;const FIELD_FIELDS=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function validateField(field){const initial={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"};const opts=FIELD_FIELDS.reduce((map,val)=>{map[val]="function";return map},initial);_validateObject(field,opts);return field}function FpPow(Fp,num,power){if(power<_0n$3)throw new Error("invalid exponent, negatives unsupported");if(power===_0n$3)return Fp.ONE;if(power===_1n$4)return num;let p=Fp.ONE;let d=num;while(power>_0n$3){if(power&_1n$4)p=Fp.mul(p,d);d=Fp.sqr(d);power>>=_1n$4}return p}function FpInvertBatch(Fp,nums,passZero=false){const inverted=new Array(nums.length).fill(passZero?Fp.ZERO:undefined);const multipliedAcc=nums.reduce((acc,num,i)=>{if(Fp.is0(num))return acc;inverted[i]=acc;return Fp.mul(acc,num)},Fp.ONE);const invertedAcc=Fp.inv(multipliedAcc);nums.reduceRight((acc,num,i)=>{if(Fp.is0(num))return acc;inverted[i]=Fp.mul(acc,inverted[i]);return Fp.mul(acc,num)},invertedAcc);return inverted}function FpLegendre(Fp,n){const p1mod2=(Fp.ORDER-_1n$4)/_2n$4;const powered=Fp.pow(n,p1mod2);const yes=Fp.eql(powered,Fp.ONE);const zero=Fp.eql(powered,Fp.ZERO);const no=Fp.eql(powered,Fp.neg(Fp.ONE));if(!yes&&!zero&&!no)throw new Error("invalid Legendre symbol result");return yes?1:zero?0:-1}function nLength(n,nBitLength){if(nBitLength!==undefined)anumber(nBitLength);const _nBitLength=nBitLength!==undefined?nBitLength:n.toString(2).length;const nByteLength=Math.ceil(_nBitLength/8);return{nBitLength:_nBitLength,nByteLength:nByteLength}}function Field(ORDER,bitLenOrOpts,isLE=false,opts={}){if(ORDER<=_0n$3)throw new Error("invalid field: expected ORDER > 0, got "+ORDER);let _nbitLength=undefined;let _sqrt=undefined;let modFromBytes=false;let allowedLengths=undefined;if(typeof bitLenOrOpts==="object"&&bitLenOrOpts!=null){if(opts.sqrt||isLE)throw new Error("cannot specify opts in two arguments");const _opts=bitLenOrOpts;if(_opts.BITS)_nbitLength=_opts.BITS;if(_opts.sqrt)_sqrt=_opts.sqrt;if(typeof _opts.isLE==="boolean")isLE=_opts.isLE;if(typeof _opts.modFromBytes==="boolean")modFromBytes=_opts.modFromBytes;allowedLengths=_opts.allowedLengths}else{if(typeof bitLenOrOpts==="number")_nbitLength=bitLenOrOpts;if(opts.sqrt)_sqrt=opts.sqrt}const{nBitLength:BITS,nByteLength:BYTES}=nLength(ORDER,_nbitLength);if(BYTES>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let sqrtP;const f=Object.freeze({ORDER:ORDER,isLE:isLE,BITS:BITS,BYTES:BYTES,MASK:bitMask(BITS),ZERO:_0n$3,ONE:_1n$4,allowedLengths:allowedLengths,create:num=>mod(num,ORDER),isValid:num=>{if(typeof num!=="bigint")throw new Error("invalid field element: expected bigint, got "+typeof num);return _0n$3<=num&&num<ORDER},is0:num=>num===_0n$3,isValidNot0:num=>!f.is0(num)&&f.isValid(num),isOdd:num=>(num&_1n$4)===_1n$4,neg:num=>mod(-num,ORDER),eql:(lhs,rhs)=>lhs===rhs,sqr:num=>mod(num*num,ORDER),add:(lhs,rhs)=>mod(lhs+rhs,ORDER),sub:(lhs,rhs)=>mod(lhs-rhs,ORDER),mul:(lhs,rhs)=>mod(lhs*rhs,ORDER),pow:(num,power)=>FpPow(f,num,power),div:(lhs,rhs)=>mod(lhs*invert(rhs,ORDER),ORDER),sqrN:num=>num*num,addN:(lhs,rhs)=>lhs+rhs,subN:(lhs,rhs)=>lhs-rhs,mulN:(lhs,rhs)=>lhs*rhs,inv:num=>invert(num,ORDER),sqrt:_sqrt||(n=>{if(!sqrtP)sqrtP=FpSqrt(ORDER);return sqrtP(f,n)}),toBytes:num=>isLE?numberToBytesLE(num,BYTES):numberToBytesBE(num,BYTES),fromBytes:(bytes,skipValidation=true)=>{if(allowedLengths){if(!allowedLengths.includes(bytes.length)||bytes.length>BYTES){throw new Error("Field.fromBytes: expected "+allowedLengths+" bytes, got "+bytes.length)}const padded=new Uint8Array(BYTES);padded.set(bytes,isLE?0:padded.length-bytes.length);bytes=padded}if(bytes.length!==BYTES)throw new Error("Field.fromBytes: expected "+BYTES+" bytes, got "+bytes.length);let scalar=isLE?bytesToNumberLE(bytes):bytesToNumberBE(bytes);if(modFromBytes)scalar=mod(scalar,ORDER);if(!skipValidation)if(!f.isValid(scalar))throw new Error("invalid field element: outside of range 0..ORDER");return scalar},invertBatch:lst=>FpInvertBatch(f,lst),cmov:(a,b,c)=>c?b:a});return Object.freeze(f)}function getFieldBytesLength(fieldOrder){if(typeof fieldOrder!=="bigint")throw new Error("field order must be bigint");const bitLength=fieldOrder.toString(2).length;return Math.ceil(bitLength/8)}function getMinHashLength(fieldOrder){const length=getFieldBytesLength(fieldOrder);return length+Math.ceil(length/2)}function mapHashToField(key,fieldOrder,isLE=false){const len=key.length;const fieldLen=getFieldBytesLength(fieldOrder);const minLen=getMinHashLength(fieldOrder);if(len<16||len<minLen||len>1024)throw new Error("expected "+minLen+"-1024 bytes of input, got "+len);const num=isLE?bytesToNumberLE(key):bytesToNumberBE(key);const reduced=mod(num,fieldOrder-_1n$4)+_1n$4;return isLE?numberToBytesLE(reduced,fieldLen):numberToBytesBE(reduced,fieldLen)}
12
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _0n$2=BigInt(0);const _1n$3=BigInt(1);function negateCt(condition,item){const neg=item.negate();return condition?neg:item}function normalizeZ(c,points){const invertedZs=FpInvertBatch(c.Fp,points.map(p=>p.Z));return points.map((p,i)=>c.fromAffine(p.toAffine(invertedZs[i])))}function validateW(W,bits){if(!Number.isSafeInteger(W)||W<=0||W>bits)throw new Error("invalid window size, expected [1.."+bits+"], got W="+W)}function calcWOpts(W,scalarBits){validateW(W,scalarBits);const windows=Math.ceil(scalarBits/W)+1;const windowSize=2**(W-1);const maxNumber=2**W;const mask=bitMask(W);const shiftBy=BigInt(W);return{windows:windows,windowSize:windowSize,mask:mask,maxNumber:maxNumber,shiftBy:shiftBy}}function calcOffsets(n,window,wOpts){const{windowSize:windowSize,mask:mask,maxNumber:maxNumber,shiftBy:shiftBy}=wOpts;let wbits=Number(n&mask);let nextN=n>>shiftBy;if(wbits>windowSize){wbits-=maxNumber;nextN+=_1n$3}const offsetStart=window*windowSize;const offset=offsetStart+Math.abs(wbits)-1;const isZero=wbits===0;const isNeg=wbits<0;const isNegF=window%2!==0;const offsetF=offsetStart;return{nextN:nextN,offset:offset,isZero:isZero,isNeg:isNeg,isNegF:isNegF,offsetF:offsetF}}function validateMSMPoints(points,c){if(!Array.isArray(points))throw new Error("array expected");points.forEach((p,i)=>{if(!(p instanceof c))throw new Error("invalid point at index "+i)})}function validateMSMScalars(scalars,field){if(!Array.isArray(scalars))throw new Error("array of scalars expected");scalars.forEach((s,i)=>{if(!field.isValid(s))throw new Error("invalid scalar at index "+i)})}const pointPrecomputes=new WeakMap;const pointWindowSizes=new WeakMap;function getW(P){return pointWindowSizes.get(P)||1}function assert0(n){if(n!==_0n$2)throw new Error("invalid wNAF")}class wNAF{constructor(Point,bits){this.BASE=Point.BASE;this.ZERO=Point.ZERO;this.Fn=Point.Fn;this.bits=bits}_unsafeLadder(elm,n,p=this.ZERO){let d=elm;while(n>_0n$2){if(n&_1n$3)p=p.add(d);d=d.double();n>>=_1n$3}return p}precomputeWindow(point,W){const{windows:windows,windowSize:windowSize}=calcWOpts(W,this.bits);const points=[];let p=point;let base=p;for(let window=0;window<windows;window++){base=p;points.push(base);for(let i=1;i<windowSize;i++){base=base.add(p);points.push(base)}p=base.double()}return points}wNAF(W,precomputes,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let p=this.ZERO;let f=this.BASE;const wo=calcWOpts(W,this.bits);for(let window=0;window<wo.windows;window++){const{nextN:nextN,offset:offset,isZero:isZero,isNeg:isNeg,isNegF:isNegF,offsetF:offsetF}=calcOffsets(n,window,wo);n=nextN;if(isZero){f=f.add(negateCt(isNegF,precomputes[offsetF]))}else{p=p.add(negateCt(isNeg,precomputes[offset]))}}assert0(n);return{p:p,f:f}}wNAFUnsafe(W,precomputes,n,acc=this.ZERO){const wo=calcWOpts(W,this.bits);for(let window=0;window<wo.windows;window++){if(n===_0n$2)break;const{nextN:nextN,offset:offset,isZero:isZero,isNeg:isNeg}=calcOffsets(n,window,wo);n=nextN;if(isZero){continue}else{const item=precomputes[offset];acc=acc.add(isNeg?item.negate():item)}}assert0(n);return acc}getPrecomputes(W,point,transform){let comp=pointPrecomputes.get(point);if(!comp){comp=this.precomputeWindow(point,W);if(W!==1){if(typeof transform==="function")comp=transform(comp);pointPrecomputes.set(point,comp)}}return comp}cached(point,scalar,transform){const W=getW(point);return this.wNAF(W,this.getPrecomputes(W,point,transform),scalar)}unsafe(point,scalar,transform,prev){const W=getW(point);if(W===1)return this._unsafeLadder(point,scalar,prev);return this.wNAFUnsafe(W,this.getPrecomputes(W,point,transform),scalar,prev)}createCache(P,W){validateW(W,this.bits);pointWindowSizes.set(P,W);pointPrecomputes.delete(P)}hasCache(elm){return getW(elm)!==1}}function mulEndoUnsafe(Point,point,k1,k2){let acc=point;let p1=Point.ZERO;let p2=Point.ZERO;while(k1>_0n$2||k2>_0n$2){if(k1&_1n$3)p1=p1.add(acc);if(k2&_1n$3)p2=p2.add(acc);acc=acc.double();k1>>=_1n$3;k2>>=_1n$3}return{p1:p1,p2:p2}}function pippenger(c,fieldN,points,scalars){validateMSMPoints(points,c);validateMSMScalars(scalars,fieldN);const plength=points.length;const slength=scalars.length;if(plength!==slength)throw new Error("arrays of points and scalars must have equal length");const zero=c.ZERO;const wbits=bitLen(BigInt(plength));let windowSize=1;if(wbits>12)windowSize=wbits-3;else if(wbits>4)windowSize=wbits-2;else if(wbits>0)windowSize=2;const MASK=bitMask(windowSize);const buckets=new Array(Number(MASK)+1).fill(zero);const lastBits=Math.floor((fieldN.BITS-1)/windowSize)*windowSize;let sum=zero;for(let i=lastBits;i>=0;i-=windowSize){buckets.fill(zero);for(let j=0;j<slength;j++){const scalar=scalars[j];const wbits=Number(scalar>>BigInt(i)&MASK);buckets[wbits]=buckets[wbits].add(points[j])}let resI=zero;for(let j=buckets.length-1,sumI=zero;j>0;j--){sumI=sumI.add(buckets[j]);resI=resI.add(sumI)}sum=sum.add(resI);if(i!==0)for(let j=0;j<windowSize;j++)sum=sum.double()}return sum}function createField(order,field,isLE){if(field){if(field.ORDER!==order)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");validateField(field);return field}else{return Field(order,{isLE:isLE})}}function _createCurveFields(type,CURVE,curveOpts={},FpFnLE){if(FpFnLE===undefined)FpFnLE=type==="edwards";if(!CURVE||typeof CURVE!=="object")throw new Error(`expected valid ${type} CURVE object`);for(const p of["p","n","h"]){const val=CURVE[p];if(!(typeof val==="bigint"&&val>_0n$2))throw new Error(`CURVE.${p} must be positive bigint`)}const Fp=createField(CURVE.p,curveOpts.Fp,FpFnLE);const Fn=createField(CURVE.n,curveOpts.Fn,FpFnLE);const _b=type==="weierstrass"?"b":"d";const params=["Gx","Gy","a",_b];for(const p of params){if(!Fp.isValid(CURVE[p]))throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`)}CURVE=Object.freeze(Object.assign({},CURVE));return{CURVE:CURVE,Fp:Fp,Fn:Fn}}
13
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _0n$1=BigInt(0),_1n$2=BigInt(1),_2n$3=BigInt(2),_8n$1=BigInt(8);function isEdValidXY(Fp,CURVE,x,y){const x2=Fp.sqr(x);const y2=Fp.sqr(y);const left=Fp.add(Fp.mul(CURVE.a,x2),y2);const right=Fp.add(Fp.ONE,Fp.mul(CURVE.d,Fp.mul(x2,y2)));return Fp.eql(left,right)}function edwards(params,extraOpts={}){const validated=_createCurveFields("edwards",params,extraOpts,extraOpts.FpFnLE);const{Fp:Fp,Fn:Fn}=validated;let CURVE=validated.CURVE;const{h:cofactor}=CURVE;_validateObject(extraOpts,{},{uvRatio:"function"});const MASK=_2n$3<<BigInt(Fn.BYTES*8)-_1n$2;const modP=n=>Fp.create(n);const uvRatio=extraOpts.uvRatio||((u,v)=>{try{return{isValid:true,value:Fp.sqrt(Fp.div(u,v))}}catch(e){return{isValid:false,value:_0n$1}}});if(!isEdValidXY(Fp,CURVE,CURVE.Gx,CURVE.Gy))throw new Error("bad curve params: generator point");function acoord(title,n,banZero=false){const min=banZero?_1n$2:_0n$1;aInRange("coordinate "+title,n,min,MASK);return n}function aextpoint(other){if(!(other instanceof Point))throw new Error("ExtendedPoint expected")}const toAffineMemo=memoized((p,iz)=>{const{X:X,Y:Y,Z:Z}=p;const is0=p.is0();if(iz==null)iz=is0?_8n$1:Fp.inv(Z);const x=modP(X*iz);const y=modP(Y*iz);const zz=Fp.mul(Z,iz);if(is0)return{x:_0n$1,y:_1n$2};if(zz!==_1n$2)throw new Error("invZ was invalid");return{x:x,y:y}});const assertValidMemo=memoized(p=>{const{a:a,d:d}=CURVE;if(p.is0())throw new Error("bad point: ZERO");const{X:X,Y:Y,Z:Z,T:T}=p;const X2=modP(X*X);const Y2=modP(Y*Y);const Z2=modP(Z*Z);const Z4=modP(Z2*Z2);const aX2=modP(X2*a);const left=modP(Z2*modP(aX2+Y2));const right=modP(Z4+modP(d*modP(X2*Y2)));if(left!==right)throw new Error("bad point: equation left != right (1)");const XY=modP(X*Y);const ZT=modP(Z*T);if(XY!==ZT)throw new Error("bad point: equation left != right (2)");return true});class Point{constructor(X,Y,Z,T){this.X=acoord("x",X);this.Y=acoord("y",Y);this.Z=acoord("z",Z,true);this.T=acoord("t",T);Object.freeze(this)}static CURVE(){return CURVE}static fromAffine(p){if(p instanceof Point)throw new Error("extended point not allowed");const{x:x,y:y}=p||{};acoord("x",x);acoord("y",y);return new Point(x,y,_1n$2,modP(x*y))}static fromBytes(bytes,zip215=false){const len=Fp.BYTES;const{a:a,d:d}=CURVE;bytes=copyBytes(_abytes2(bytes,len,"point"));_abool2(zip215,"zip215");const normed=copyBytes(bytes);const lastByte=bytes[len-1];normed[len-1]=lastByte&-129;const y=bytesToNumberLE(normed);const max=zip215?MASK:Fp.ORDER;aInRange("point.y",y,_0n$1,max);const y2=modP(y*y);const u=modP(y2-_1n$2);const v=modP(d*y2-a);let{isValid:isValid,value:x}=uvRatio(u,v);if(!isValid)throw new Error("bad point: invalid y coordinate");const isXOdd=(x&_1n$2)===_1n$2;const isLastByteOdd=(lastByte&128)!==0;if(!zip215&&x===_0n$1&&isLastByteOdd)throw new Error("bad point: x=0 and x_0=1");if(isLastByteOdd!==isXOdd)x=modP(-x);return Point.fromAffine({x:x,y:y})}static fromHex(bytes,zip215=false){return Point.fromBytes(ensureBytes("point",bytes),zip215)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(windowSize=8,isLazy=true){wnaf.createCache(this,windowSize);if(!isLazy)this.multiply(_2n$3);return this}assertValidity(){assertValidMemo(this)}equals(other){aextpoint(other);const{X:X1,Y:Y1,Z:Z1}=this;const{X:X2,Y:Y2,Z:Z2}=other;const X1Z2=modP(X1*Z2);const X2Z1=modP(X2*Z1);const Y1Z2=modP(Y1*Z2);const Y2Z1=modP(Y2*Z1);return X1Z2===X2Z1&&Y1Z2===Y2Z1}is0(){return this.equals(Point.ZERO)}negate(){return new Point(modP(-this.X),this.Y,this.Z,modP(-this.T))}double(){const{a:a}=CURVE;const{X:X1,Y:Y1,Z:Z1}=this;const A=modP(X1*X1);const B=modP(Y1*Y1);const C=modP(_2n$3*modP(Z1*Z1));const D=modP(a*A);const x1y1=X1+Y1;const E=modP(modP(x1y1*x1y1)-A-B);const G=D+B;const F=G-C;const H=D-B;const X3=modP(E*F);const Y3=modP(G*H);const T3=modP(E*H);const Z3=modP(F*G);return new Point(X3,Y3,Z3,T3)}add(other){aextpoint(other);const{a:a,d:d}=CURVE;const{X:X1,Y:Y1,Z:Z1,T:T1}=this;const{X:X2,Y:Y2,Z:Z2,T:T2}=other;const A=modP(X1*X2);const B=modP(Y1*Y2);const C=modP(T1*d*T2);const D=modP(Z1*Z2);const E=modP((X1+Y1)*(X2+Y2)-A-B);const F=D-C;const G=D+C;const H=modP(B-a*A);const X3=modP(E*F);const Y3=modP(G*H);const T3=modP(E*H);const Z3=modP(F*G);return new Point(X3,Y3,Z3,T3)}subtract(other){return this.add(other.negate())}multiply(scalar){if(!Fn.isValidNot0(scalar))throw new Error("invalid scalar: expected 1 <= sc < curve.n");const{p:p,f:f}=wnaf.cached(this,scalar,p=>normalizeZ(Point,p));return normalizeZ(Point,[p,f])[0]}multiplyUnsafe(scalar,acc=Point.ZERO){if(!Fn.isValid(scalar))throw new Error("invalid scalar: expected 0 <= sc < curve.n");if(scalar===_0n$1)return Point.ZERO;if(this.is0()||scalar===_1n$2)return this;return wnaf.unsafe(this,scalar,p=>normalizeZ(Point,p),acc)}isSmallOrder(){return this.multiplyUnsafe(cofactor).is0()}isTorsionFree(){return wnaf.unsafe(this,CURVE.n).is0()}toAffine(invertedZ){return toAffineMemo(this,invertedZ)}clearCofactor(){if(cofactor===_1n$2)return this;return this.multiplyUnsafe(cofactor)}toBytes(){const{x:x,y:y}=this.toAffine();const bytes=Fp.toBytes(y);bytes[bytes.length-1]|=x&_1n$2?128:0;return bytes}toHex(){return bytesToHex(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get ex(){return this.X}get ey(){return this.Y}get ez(){return this.Z}get et(){return this.T}static normalizeZ(points){return normalizeZ(Point,points)}static msm(points,scalars){return pippenger(Point,Fn,points,scalars)}_setWindowSize(windowSize){this.precompute(windowSize)}toRawBytes(){return this.toBytes()}}Point.BASE=new Point(CURVE.Gx,CURVE.Gy,_1n$2,modP(CURVE.Gx*CURVE.Gy));Point.ZERO=new Point(_0n$1,_1n$2,_1n$2,_0n$1);Point.Fp=Fp;Point.Fn=Fn;const wnaf=new wNAF(Point,Fn.BITS);Point.BASE.precompute(8);return Point}function eddsa(Point,cHash,eddsaOpts={}){if(typeof cHash!=="function")throw new Error('"hash" function param is required');_validateObject(eddsaOpts,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});const{prehash:prehash}=eddsaOpts;const{BASE:BASE,Fp:Fp,Fn:Fn}=Point;const randomBytes$1=eddsaOpts.randomBytes||randomBytes;const adjustScalarBytes=eddsaOpts.adjustScalarBytes||(bytes=>bytes);const domain=eddsaOpts.domain||((data,ctx,phflag)=>{_abool2(phflag,"phflag");if(ctx.length||phflag)throw new Error("Contexts/pre-hash are not supported");return data});function modN_LE(hash){return Fn.create(bytesToNumberLE(hash))}function getPrivateScalar(key){const len=lengths.secretKey;key=ensureBytes("private key",key,len);const hashed=ensureBytes("hashed private key",cHash(key),2*len);const head=adjustScalarBytes(hashed.slice(0,len));const prefix=hashed.slice(len,2*len);const scalar=modN_LE(head);return{head:head,prefix:prefix,scalar:scalar}}function getExtendedPublicKey(secretKey){const{head:head,prefix:prefix,scalar:scalar}=getPrivateScalar(secretKey);const point=BASE.multiply(scalar);const pointBytes=point.toBytes();return{head:head,prefix:prefix,scalar:scalar,point:point,pointBytes:pointBytes}}function getPublicKey(secretKey){return getExtendedPublicKey(secretKey).pointBytes}function hashDomainToScalar(context=Uint8Array.of(),...msgs){const msg=concatBytes(...msgs);return modN_LE(cHash(domain(msg,ensureBytes("context",context),!!prehash)))}function sign(msg,secretKey,options={}){msg=ensureBytes("message",msg);if(prehash)msg=prehash(msg);const{prefix:prefix,scalar:scalar,pointBytes:pointBytes}=getExtendedPublicKey(secretKey);const r=hashDomainToScalar(options.context,prefix,msg);const R=BASE.multiply(r).toBytes();const k=hashDomainToScalar(options.context,R,pointBytes,msg);const s=Fn.create(r+k*scalar);if(!Fn.isValid(s))throw new Error("sign failed: invalid s");const rs=concatBytes(R,Fn.toBytes(s));return _abytes2(rs,lengths.signature,"result")}const verifyOpts={zip215:true};function verify(sig,msg,publicKey,options=verifyOpts){const{context:context,zip215:zip215}=options;const len=lengths.signature;sig=ensureBytes("signature",sig,len);msg=ensureBytes("message",msg);publicKey=ensureBytes("publicKey",publicKey,lengths.publicKey);if(zip215!==undefined)_abool2(zip215,"zip215");if(prehash)msg=prehash(msg);const mid=len/2;const r=sig.subarray(0,mid);const s=bytesToNumberLE(sig.subarray(mid,len));let A,R,SB;try{A=Point.fromBytes(publicKey,zip215);R=Point.fromBytes(r,zip215);SB=BASE.multiplyUnsafe(s)}catch(error){return false}if(!zip215&&A.isSmallOrder())return false;const k=hashDomainToScalar(context,R.toBytes(),A.toBytes(),msg);const RkA=R.add(A.multiplyUnsafe(k));return RkA.subtract(SB).clearCofactor().is0()}const _size=Fp.BYTES;const lengths={secretKey:_size,publicKey:_size,signature:2*_size,seed:_size};function randomSecretKey(seed=randomBytes$1(lengths.seed)){return _abytes2(seed,lengths.seed,"seed")}function keygen(seed){const secretKey=utils.randomSecretKey(seed);return{secretKey:secretKey,publicKey:getPublicKey(secretKey)}}function isValidSecretKey(key){return isBytes(key)&&key.length===Fn.BYTES}function isValidPublicKey(key,zip215){try{return!!Point.fromBytes(key,zip215)}catch(error){return false}}const utils={getExtendedPublicKey:getExtendedPublicKey,randomSecretKey:randomSecretKey,isValidSecretKey:isValidSecretKey,isValidPublicKey:isValidPublicKey,toMontgomery(publicKey){const{y:y}=Point.fromBytes(publicKey);const size=lengths.publicKey;const is25519=size===32;if(!is25519&&size!==57)throw new Error("only defined for 25519 and 448");const u=is25519?Fp.div(_1n$2+y,_1n$2-y):Fp.div(y-_1n$2,y+_1n$2);return Fp.toBytes(u)},toMontgomerySecret(secretKey){const size=lengths.secretKey;_abytes2(secretKey,size);const hashed=cHash(secretKey.subarray(0,size));return adjustScalarBytes(hashed).subarray(0,size)},randomPrivateKey:randomSecretKey,precompute(windowSize=8,point=Point.BASE){return point.precompute(windowSize,false)}};return Object.freeze({keygen:keygen,getPublicKey:getPublicKey,sign:sign,verify:verify,utils:utils,Point:Point,lengths:lengths})}function _eddsa_legacy_opts_to_new(c){const CURVE={a:c.a,d:c.d,p:c.Fp.ORDER,n:c.n,h:c.h,Gx:c.Gx,Gy:c.Gy};const Fp=c.Fp;const Fn=Field(CURVE.n,c.nBitLength,true);const curveOpts={Fp:Fp,Fn:Fn,uvRatio:c.uvRatio};const eddsaOpts={randomBytes:c.randomBytes,adjustScalarBytes:c.adjustScalarBytes,domain:c.domain,prehash:c.prehash,mapToCurve:c.mapToCurve};return{CURVE:CURVE,curveOpts:curveOpts,hash:c.hash,eddsaOpts:eddsaOpts}}function _eddsa_new_output_to_legacy(c,eddsa){const Point=eddsa.Point;const legacy=Object.assign({},eddsa,{ExtendedPoint:Point,CURVE:c,nBitLength:Point.Fn.BITS,nByteLength:Point.Fn.BYTES});return legacy}function twistedEdwards(c){const{CURVE:CURVE,curveOpts:curveOpts,hash:hash,eddsaOpts:eddsaOpts}=_eddsa_legacy_opts_to_new(c);const Point=edwards(CURVE,curveOpts);const EDDSA=eddsa(Point,hash,eddsaOpts);return _eddsa_new_output_to_legacy(c,EDDSA)}
14
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const _1n$1=BigInt(1),_2n$2=BigInt(2);BigInt(3);const _5n=BigInt(5),_8n=BigInt(8);const ed25519_CURVE_p=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed");const ed25519_CURVE=(()=>({p:ed25519_CURVE_p,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:_8n,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")}))();function ed25519_pow_2_252_3(x){const _10n=BigInt(10),_20n=BigInt(20),_40n=BigInt(40),_80n=BigInt(80);const P=ed25519_CURVE_p;const x2=x*x%P;const b2=x2*x%P;const b4=pow2(b2,_2n$2,P)*b2%P;const b5=pow2(b4,_1n$1,P)*x%P;const b10=pow2(b5,_5n,P)*b5%P;const b20=pow2(b10,_10n,P)*b10%P;const b40=pow2(b20,_20n,P)*b20%P;const b80=pow2(b40,_40n,P)*b40%P;const b160=pow2(b80,_80n,P)*b80%P;const b240=pow2(b160,_80n,P)*b80%P;const b250=pow2(b240,_10n,P)*b10%P;const pow_p_5_8=pow2(b250,_2n$2,P)*x%P;return{pow_p_5_8:pow_p_5_8,b2:b2}}function adjustScalarBytes(bytes){bytes[0]&=248;bytes[31]&=127;bytes[31]|=64;return bytes}const ED25519_SQRT_M1=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function uvRatio(u,v){const P=ed25519_CURVE_p;const v3=mod(v*v*v,P);const v7=mod(v3*v3*v,P);const pow=ed25519_pow_2_252_3(u*v7).pow_p_5_8;let x=mod(u*v3*pow,P);const vx2=mod(v*x*x,P);const root1=x;const root2=mod(x*ED25519_SQRT_M1,P);const useRoot1=vx2===u;const useRoot2=vx2===mod(-u,P);const noRoot=vx2===mod(-u*ED25519_SQRT_M1,P);if(useRoot1)x=root1;if(useRoot2||noRoot)x=root2;if(isNegativeLE(x,P))x=mod(-x,P);return{isValid:useRoot1||useRoot2,value:x}}const Fp=(()=>Field(ed25519_CURVE.p,{isLE:true}))();const ed25519Defaults=(()=>({...ed25519_CURVE,Fp:Fp,hash:sha512,adjustScalarBytes:adjustScalarBytes,uvRatio:uvRatio}))();const ed25519=(()=>twistedEdwards(ed25519Defaults))();var bn$1={exports:{}};var _nodeResolve_empty={};var _nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty});var require$$0=getAugmentedNamespace(_nodeResolve_empty$1);var bn=bn$1.exports;var hasRequiredBn;function requireBn(){if(hasRequiredBn)return bn$1.exports;hasRequiredBn=1;(function(module){(function(module,exports){function assert(val,msg){if(!val)throw new Error(msg||"Assertion failed")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number)){return number}this.negative=0;this.words=null;this.length=0;this.red=null;if(number!==null){if(base==="le"||base==="be"){endian=base;base=10}this._init(number||0,base||10,endian||"be")}}if(typeof module==="object"){module.exports=BN}else{exports.BN=BN}BN.BN=BN;BN.wordSize=26;var Buffer;try{if(typeof window!=="undefined"&&typeof window.Buffer!=="undefined"){Buffer=window.Buffer}else{Buffer=require$$0.Buffer}}catch(e){}BN.isBN=function isBN(num){if(num instanceof BN){return true}return num!==null&&typeof num==="object"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)};BN.max=function max(left,right){if(left.cmp(right)>0)return left;return right};BN.min=function min(left,right){if(left.cmp(right)<0)return left;return right};BN.prototype._init=function init(number,base,endian){if(typeof number==="number"){return this._initNumber(number,base,endian)}if(typeof number==="object"){return this._initArray(number,base,endian)}if(base==="hex"){base=16}assert(base===(base|0)&&base>=2&&base<=36);number=number.toString().replace(/\s+/g,"");var start=0;if(number[0]==="-"){start++;this.negative=1}if(start<number.length){if(base===16){this._parseHex(number,start,endian)}else{this._parseBase(number,base,start);if(endian==="le"){this._initArray(this.toArray(),base,endian)}}}};BN.prototype._initNumber=function _initNumber(number,base,endian){if(number<0){this.negative=1;number=-number}if(number<67108864){this.words=[number&67108863];this.length=1}else if(number<4503599627370496){this.words=[number&67108863,number/67108864&67108863];this.length=2}else{assert(number<9007199254740992);this.words=[number&67108863,number/67108864&67108863,1];this.length=3}if(endian!=="le")return;this._initArray(this.toArray(),base,endian)};BN.prototype._initArray=function _initArray(number,base,endian){assert(typeof number.length==="number");if(number.length<=0){this.words=[0];this.length=1;return this}this.length=Math.ceil(number.length/3);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0}var j,w;var off=0;if(endian==="be"){for(i=number.length-1,j=0;i>=0;i-=3){w=number[i]|number[i-1]<<8|number[i-2]<<16;this.words[j]|=w<<off&67108863;this.words[j+1]=w>>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}else if(endian==="le"){for(i=0,j=0;i<number.length;i+=3){w=number[i]|number[i+1]<<8|number[i+2]<<16;this.words[j]|=w<<off&67108863;this.words[j+1]=w>>>26-off&67108863;off+=24;if(off>=26){off-=26;j++}}}return this._strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=48&&c<=57){return c-48}else if(c>=65&&c<=70){return c-55}else if(c>=97&&c<=102){return c-87}else{assert(false,"Invalid character in "+string)}}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound){r|=parseHex4Bits(string,index-1)<<4}return r}BN.prototype._parseHex=function _parseHex(number,start,endian){this.length=Math.ceil((number.length-start)/6);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0}var off=0;var j=0;var w;if(endian==="be"){for(i=number.length-1;i>=start;i-=2){w=parseHexByte(number,start,i)<<off;this.words[j]|=w&67108863;if(off>=18){off-=18;j+=1;this.words[j]|=w>>>26}else{off+=8}}}else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2){w=parseHexByte(number,start,i)<<off;this.words[j]|=w&67108863;if(off>=18){off-=18;j+=1;this.words[j]|=w>>>26}else{off+=8}}}this._strip()};function parseBase(str,start,end,mul){var r=0;var b=0;var len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;r*=mul;if(c>=49){b=c-49+10}else if(c>=17){b=c-17+10}else{b=c}assert(c>=0&&b<mul,"Invalid character");r+=b}return r}BN.prototype._parseBase=function _parseBase(number,base,start){this.words=[0];this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base){limbLen++}limbLen--;limbPow=limbPow/base|0;var total=number.length-start;var mod=total%limbLen;var end=Math.min(total,total-mod)+start;var word=0;for(var i=start;i<end;i+=limbLen){word=parseBase(number,i,i+limbLen,base);this.imuln(limbPow);if(this.words[0]+word<67108864){this.words[0]+=word}else{this._iaddn(word)}}if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++){pow*=base}this.imuln(pow);if(this.words[0]+word<67108864){this.words[0]+=word}else{this._iaddn(word)}}this._strip()};BN.prototype.copy=function copy(dest){dest.words=new Array(this.length);for(var i=0;i<this.length;i++){dest.words[i]=this.words[i]}dest.length=this.length;dest.negative=this.negative;dest.red=this.red};function move(dest,src){dest.words=src.words;dest.length=src.length;dest.negative=src.negative;dest.red=src.red}BN.prototype._move=function _move(dest){move(dest,this)};BN.prototype.clone=function clone(){var r=new BN(null);this.copy(r);return r};BN.prototype._expand=function _expand(size){while(this.length<size){this.words[this.length++]=0}return this};BN.prototype._strip=function strip(){while(this.length>1&&this.words[this.length-1]===0){this.length--}return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0){this.negative=0}return this};if(typeof Symbol!=="undefined"&&typeof Symbol.for==="function"){try{BN.prototype[Symbol.for("nodejs.util.inspect.custom")]=inspect}catch(e){BN.prototype.inspect=inspect}}else{BN.prototype.inspect=inspect}function inspect(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"}var zeros=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"];var groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(base,padding){base=base||10;padding=padding|0||1;var out;if(base===16||base==="hex"){out="";var off=0;var carry=0;for(var i=0;i<this.length;i++){var w=this.words[i];var word=((w<<off|carry)&16777215).toString(16);carry=w>>>24-off&16777215;off+=2;if(off>=26){off-=26;i--}if(carry!==0||i!==this.length-1){out=zeros[6-word.length]+word+out}else{out=word+out}}if(carry!==0){out=carry.toString(16)+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base];var groupBase=groupBases[base];out="";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modrn(groupBase).toString(base);c=c.idivn(groupBase);if(!c.isZero()){out=zeros[groupSize-r.length]+r+out}else{out=r+out}}if(this.isZero()){out="0"+out}while(out.length%padding!==0){out="0"+out}if(this.negative!==0){out="-"+out}return out}assert(false,"Base should be between 2 and 36")};BN.prototype.toNumber=function toNumber(){var ret=this.words[0];if(this.length===2){ret+=this.words[1]*67108864}else if(this.length===3&&this.words[2]===1){ret+=4503599627370496+this.words[1]*67108864}else if(this.length>2){assert(false,"Number can only safely store up to 53 bits")}return this.negative!==0?-ret:ret};BN.prototype.toJSON=function toJSON(){return this.toString(16,2)};if(Buffer){BN.prototype.toBuffer=function toBuffer(endian,length){return this.toArrayLike(Buffer,endian,length)}}BN.prototype.toArray=function toArray(endian,length){return this.toArrayLike(Array,endian,length)};var allocate=function allocate(ArrayType,size){if(ArrayType.allocUnsafe){return ArrayType.allocUnsafe(size)}return new ArrayType(size)};BN.prototype.toArrayLike=function toArrayLike(ArrayType,endian,length){this._strip();var byteLength=this.byteLength();var reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,"byte array longer than desired length");assert(reqLength>0,"Requested array length <= 0");var res=allocate(ArrayType,reqLength);var postfix=endian==="le"?"LE":"BE";this["_toArrayLike"+postfix](res,byteLength);return res};BN.prototype._toArrayLikeLE=function _toArrayLikeLE(res,byteLength){var position=0;var carry=0;for(var i=0,shift=0;i<this.length;i++){var word=this.words[i]<<shift|carry;res[position++]=word&255;if(position<res.length){res[position++]=word>>8&255}if(position<res.length){res[position++]=word>>16&255}if(shift===6){if(position<res.length){res[position++]=word>>24&255}carry=0;shift=0}else{carry=word>>>24;shift+=2}}if(position<res.length){res[position++]=carry;while(position<res.length){res[position++]=0}}};BN.prototype._toArrayLikeBE=function _toArrayLikeBE(res,byteLength){var position=res.length-1;var carry=0;for(var i=0,shift=0;i<this.length;i++){var word=this.words[i]<<shift|carry;res[position--]=word&255;if(position>=0){res[position--]=word>>8&255}if(position>=0){res[position--]=word>>16&255}if(shift===6){if(position>=0){res[position--]=word>>24&255}carry=0;shift=0}else{carry=word>>>24;shift+=2}}if(position>=0){res[position--]=carry;while(position>=0){res[position--]=0}}};if(Math.clz32){BN.prototype._countBits=function _countBits(w){return 32-Math.clz32(w)}}else{BN.prototype._countBits=function _countBits(w){var t=w;var r=0;if(t>=4096){r+=13;t>>>=13}if(t>=64){r+=7;t>>>=7}if(t>=8){r+=4;t>>>=4}if(t>=2){r+=2;t>>>=2}return r+t}}BN.prototype._zeroBits=function _zeroBits(w){if(w===0)return 26;var t=w;var r=0;if((t&8191)===0){r+=13;t>>>=13}if((t&127)===0){r+=7;t>>>=7}if((t&15)===0){r+=4;t>>>=4}if((t&3)===0){r+=2;t>>>=2}if((t&1)===0){r++}return r};BN.prototype.bitLength=function bitLength(){var w=this.words[this.length-1];var hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=new Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0;var wbit=bit%26;w[bit]=num.words[off]>>>wbit&1}return w}BN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);r+=b;if(b!==26)break}return r};BN.prototype.byteLength=function byteLength(){return Math.ceil(this.bitLength()/8)};BN.prototype.toTwos=function toTwos(width){if(this.negative!==0){return this.abs().inotn(width).iaddn(1)}return this.clone()};BN.prototype.fromTwos=function fromTwos(width){if(this.testn(width-1)){return this.notn(width).iaddn(1).ineg()}return this.clone()};BN.prototype.isNeg=function isNeg(){return this.negative!==0};BN.prototype.neg=function neg(){return this.clone().ineg()};BN.prototype.ineg=function ineg(){if(!this.isZero()){this.negative^=1}return this};BN.prototype.iuor=function iuor(num){while(this.length<num.length){this.words[this.length++]=0}for(var i=0;i<num.length;i++){this.words[i]=this.words[i]|num.words[i]}return this._strip()};BN.prototype.ior=function ior(num){assert((this.negative|num.negative)===0);return this.iuor(num)};BN.prototype.or=function or(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)};BN.prototype.uor=function uor(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)};BN.prototype.iuand=function iuand(num){var b;if(this.length>num.length){b=num}else{b=this}for(var i=0;i<b.length;i++){this.words[i]=this.words[i]&num.words[i]}this.length=b.length;return this._strip()};BN.prototype.iand=function iand(num){assert((this.negative|num.negative)===0);return this.iuand(num)};BN.prototype.and=function and(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)};BN.prototype.uand=function uand(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)};BN.prototype.iuxor=function iuxor(num){var a;var b;if(this.length>num.length){a=this;b=num}else{a=num;b=this}for(var i=0;i<b.length;i++){this.words[i]=a.words[i]^b.words[i]}if(this!==a){for(;i<a.length;i++){this.words[i]=a.words[i]}}this.length=a.length;return this._strip()};BN.prototype.ixor=function ixor(num){assert((this.negative|num.negative)===0);return this.iuxor(num)};BN.prototype.xor=function xor(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)};BN.prototype.uxor=function uxor(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)};BN.prototype.inotn=function inotn(width){assert(typeof width==="number"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0;var bitsLeft=width%26;this._expand(bytesNeeded);if(bitsLeft>0){bytesNeeded--}for(var i=0;i<bytesNeeded;i++){this.words[i]=~this.words[i]&67108863}if(bitsLeft>0){this.words[i]=~this.words[i]&67108863>>26-bitsLeft}return this._strip()};BN.prototype.notn=function notn(width){return this.clone().inotn(width)};BN.prototype.setn=function setn(bit,val){assert(typeof bit==="number"&&bit>=0);var off=bit/26|0;var wbit=bit%26;this._expand(off+1);if(val){this.words[off]=this.words[off]|1<<wbit}else{this.words[off]=this.words[off]&~(1<<wbit)}return this._strip()};BN.prototype.iadd=function iadd(num){var r;if(this.negative!==0&&num.negative===0){this.negative=0;r=this.isub(num);this.negative^=1;return this._normSign()}else if(this.negative===0&&num.negative!==0){num.negative=0;r=this.isub(num);num.negative=1;return r._normSign()}var a,b;if(this.length>num.length){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i<b.length;i++){r=(a.words[i]|0)+(b.words[i]|0)+carry;this.words[i]=r&67108863;carry=r>>>26}for(;carry!==0&&i<a.length;i++){r=(a.words[i]|0)+carry;this.words[i]=r&67108863;carry=r>>>26}this.length=a.length;if(carry!==0){this.words[this.length]=carry;this.length++}else if(a!==this){for(;i<a.length;i++){this.words[i]=a.words[i]}}return this};BN.prototype.add=function add(num){var res;if(num.negative!==0&&this.negative===0){num.negative=0;res=this.sub(num);num.negative^=1;return res}else if(num.negative===0&&this.negative!==0){this.negative=0;res=num.sub(this);this.negative=1;return res}if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)};BN.prototype.isub=function isub(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);num.negative=1;return r._normSign()}else if(this.negative!==0){this.negative=0;this.iadd(num);this.negative=1;return this._normSign()}var cmp=this.cmp(num);if(cmp===0){this.negative=0;this.length=1;this.words[0]=0;return this}var a,b;if(cmp>0){a=this;b=num}else{a=num;b=this}var carry=0;for(var i=0;i<b.length;i++){r=(a.words[i]|0)-(b.words[i]|0)+carry;carry=r>>26;this.words[i]=r&67108863}for(;carry!==0&&i<a.length;i++){r=(a.words[i]|0)+carry;carry=r>>26;this.words[i]=r&67108863}if(carry===0&&i<a.length&&a!==this){for(;i<a.length;i++){this.words[i]=a.words[i]}}this.length=Math.max(this.length,i);if(a!==this){this.negative=1}return this._strip()};BN.prototype.sub=function sub(num){return this.clone().isub(num)};function smallMulTo(self,num,out){out.negative=num.negative^self.negative;var len=self.length+num.length|0;out.length=len;len=len-1|0;var a=self.words[0]|0;var b=num.words[0]|0;var r=a*b;var lo=r&67108863;var carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j|0;a=self.words[i]|0;b=num.words[j]|0;r=a*b+rword;ncarry+=r/67108864|0;rword=r&67108863}out.words[k]=rword|0;carry=ncarry|0}if(carry!==0){out.words[k]=carry|0}else{out.length--}return out._strip()}var comb10MulTo=function comb10MulTo(self,num,out){var a=self.words;var b=num.words;var o=out.words;var c=0;var lo;var mid;var hi;var a0=a[0]|0;var al0=a0&8191;var ah0=a0>>>13;var a1=a[1]|0;var al1=a1&8191;var ah1=a1>>>13;var a2=a[2]|0;var al2=a2&8191;var ah2=a2>>>13;var a3=a[3]|0;var al3=a3&8191;var ah3=a3>>>13;var a4=a[4]|0;var al4=a4&8191;var ah4=a4>>>13;var a5=a[5]|0;var al5=a5&8191;var ah5=a5>>>13;var a6=a[6]|0;var al6=a6&8191;var ah6=a6>>>13;var a7=a[7]|0;var al7=a7&8191;var ah7=a7>>>13;var a8=a[8]|0;var al8=a8&8191;var ah8=a8>>>13;var a9=a[9]|0;var al9=a9&8191;var ah9=a9>>>13;var b0=b[0]|0;var bl0=b0&8191;var bh0=b0>>>13;var b1=b[1]|0;var bl1=b1&8191;var bh1=b1>>>13;var b2=b[2]|0;var bl2=b2&8191;var bh2=b2>>>13;var b3=b[3]|0;var bl3=b3&8191;var bh3=b3>>>13;var b4=b[4]|0;var bl4=b4&8191;var bh4=b4>>>13;var b5=b[5]|0;var bl5=b5&8191;var bh5=b5>>>13;var b6=b[6]|0;var bl6=b6&8191;var bh6=b6>>>13;var b7=b[7]|0;var bl7=b7&8191;var bh7=b7>>>13;var b8=b[8]|0;var bl8=b8&8191;var bh8=b8>>>13;var b9=b[9]|0;var bl9=b9&8191;var bh9=b9>>>13;out.negative=self.negative^num.negative;out.length=19;lo=Math.imul(al0,bl0);mid=Math.imul(al0,bh0);mid=mid+Math.imul(ah0,bl0)|0;hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0;w0&=67108863;lo=Math.imul(al1,bl0);mid=Math.imul(al1,bh0);mid=mid+Math.imul(ah1,bl0)|0;hi=Math.imul(ah1,bh0);lo=lo+Math.imul(al0,bl1)|0;mid=mid+Math.imul(al0,bh1)|0;mid=mid+Math.imul(ah0,bl1)|0;hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0;w1&=67108863;lo=Math.imul(al2,bl0);mid=Math.imul(al2,bh0);mid=mid+Math.imul(ah2,bl0)|0;hi=Math.imul(ah2,bh0);lo=lo+Math.imul(al1,bl1)|0;mid=mid+Math.imul(al1,bh1)|0;mid=mid+Math.imul(ah1,bl1)|0;hi=hi+Math.imul(ah1,bh1)|0;lo=lo+Math.imul(al0,bl2)|0;mid=mid+Math.imul(al0,bh2)|0;mid=mid+Math.imul(ah0,bl2)|0;hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0;w2&=67108863;lo=Math.imul(al3,bl0);mid=Math.imul(al3,bh0);mid=mid+Math.imul(ah3,bl0)|0;hi=Math.imul(ah3,bh0);lo=lo+Math.imul(al2,bl1)|0;mid=mid+Math.imul(al2,bh1)|0;mid=mid+Math.imul(ah2,bl1)|0;hi=hi+Math.imul(ah2,bh1)|0;lo=lo+Math.imul(al1,bl2)|0;mid=mid+Math.imul(al1,bh2)|0;mid=mid+Math.imul(ah1,bl2)|0;hi=hi+Math.imul(ah1,bh2)|0;lo=lo+Math.imul(al0,bl3)|0;mid=mid+Math.imul(al0,bh3)|0;mid=mid+Math.imul(ah0,bl3)|0;hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0;w3&=67108863;lo=Math.imul(al4,bl0);mid=Math.imul(al4,bh0);mid=mid+Math.imul(ah4,bl0)|0;hi=Math.imul(ah4,bh0);lo=lo+Math.imul(al3,bl1)|0;mid=mid+Math.imul(al3,bh1)|0;mid=mid+Math.imul(ah3,bl1)|0;hi=hi+Math.imul(ah3,bh1)|0;lo=lo+Math.imul(al2,bl2)|0;mid=mid+Math.imul(al2,bh2)|0;mid=mid+Math.imul(ah2,bl2)|0;hi=hi+Math.imul(ah2,bh2)|0;lo=lo+Math.imul(al1,bl3)|0;mid=mid+Math.imul(al1,bh3)|0;mid=mid+Math.imul(ah1,bl3)|0;hi=hi+Math.imul(ah1,bh3)|0;lo=lo+Math.imul(al0,bl4)|0;mid=mid+Math.imul(al0,bh4)|0;mid=mid+Math.imul(ah0,bl4)|0;hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0;w4&=67108863;lo=Math.imul(al5,bl0);mid=Math.imul(al5,bh0);mid=mid+Math.imul(ah5,bl0)|0;hi=Math.imul(ah5,bh0);lo=lo+Math.imul(al4,bl1)|0;mid=mid+Math.imul(al4,bh1)|0;mid=mid+Math.imul(ah4,bl1)|0;hi=hi+Math.imul(ah4,bh1)|0;lo=lo+Math.imul(al3,bl2)|0;mid=mid+Math.imul(al3,bh2)|0;mid=mid+Math.imul(ah3,bl2)|0;hi=hi+Math.imul(ah3,bh2)|0;lo=lo+Math.imul(al2,bl3)|0;mid=mid+Math.imul(al2,bh3)|0;mid=mid+Math.imul(ah2,bl3)|0;hi=hi+Math.imul(ah2,bh3)|0;lo=lo+Math.imul(al1,bl4)|0;mid=mid+Math.imul(al1,bh4)|0;mid=mid+Math.imul(ah1,bl4)|0;hi=hi+Math.imul(ah1,bh4)|0;lo=lo+Math.imul(al0,bl5)|0;mid=mid+Math.imul(al0,bh5)|0;mid=mid+Math.imul(ah0,bl5)|0;hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0;w5&=67108863;lo=Math.imul(al6,bl0);mid=Math.imul(al6,bh0);mid=mid+Math.imul(ah6,bl0)|0;hi=Math.imul(ah6,bh0);lo=lo+Math.imul(al5,bl1)|0;mid=mid+Math.imul(al5,bh1)|0;mid=mid+Math.imul(ah5,bl1)|0;hi=hi+Math.imul(ah5,bh1)|0;lo=lo+Math.imul(al4,bl2)|0;mid=mid+Math.imul(al4,bh2)|0;mid=mid+Math.imul(ah4,bl2)|0;hi=hi+Math.imul(ah4,bh2)|0;lo=lo+Math.imul(al3,bl3)|0;mid=mid+Math.imul(al3,bh3)|0;mid=mid+Math.imul(ah3,bl3)|0;hi=hi+Math.imul(ah3,bh3)|0;lo=lo+Math.imul(al2,bl4)|0;mid=mid+Math.imul(al2,bh4)|0;mid=mid+Math.imul(ah2,bl4)|0;hi=hi+Math.imul(ah2,bh4)|0;lo=lo+Math.imul(al1,bl5)|0;mid=mid+Math.imul(al1,bh5)|0;mid=mid+Math.imul(ah1,bl5)|0;hi=hi+Math.imul(ah1,bh5)|0;lo=lo+Math.imul(al0,bl6)|0;mid=mid+Math.imul(al0,bh6)|0;mid=mid+Math.imul(ah0,bl6)|0;hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0;w6&=67108863;lo=Math.imul(al7,bl0);mid=Math.imul(al7,bh0);mid=mid+Math.imul(ah7,bl0)|0;hi=Math.imul(ah7,bh0);lo=lo+Math.imul(al6,bl1)|0;mid=mid+Math.imul(al6,bh1)|0;mid=mid+Math.imul(ah6,bl1)|0;hi=hi+Math.imul(ah6,bh1)|0;lo=lo+Math.imul(al5,bl2)|0;mid=mid+Math.imul(al5,bh2)|0;mid=mid+Math.imul(ah5,bl2)|0;hi=hi+Math.imul(ah5,bh2)|0;lo=lo+Math.imul(al4,bl3)|0;mid=mid+Math.imul(al4,bh3)|0;mid=mid+Math.imul(ah4,bl3)|0;hi=hi+Math.imul(ah4,bh3)|0;lo=lo+Math.imul(al3,bl4)|0;mid=mid+Math.imul(al3,bh4)|0;mid=mid+Math.imul(ah3,bl4)|0;hi=hi+Math.imul(ah3,bh4)|0;lo=lo+Math.imul(al2,bl5)|0;mid=mid+Math.imul(al2,bh5)|0;mid=mid+Math.imul(ah2,bl5)|0;hi=hi+Math.imul(ah2,bh5)|0;lo=lo+Math.imul(al1,bl6)|0;mid=mid+Math.imul(al1,bh6)|0;mid=mid+Math.imul(ah1,bl6)|0;hi=hi+Math.imul(ah1,bh6)|0;lo=lo+Math.imul(al0,bl7)|0;mid=mid+Math.imul(al0,bh7)|0;mid=mid+Math.imul(ah0,bl7)|0;hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0;w7&=67108863;lo=Math.imul(al8,bl0);mid=Math.imul(al8,bh0);mid=mid+Math.imul(ah8,bl0)|0;hi=Math.imul(ah8,bh0);lo=lo+Math.imul(al7,bl1)|0;mid=mid+Math.imul(al7,bh1)|0;mid=mid+Math.imul(ah7,bl1)|0;hi=hi+Math.imul(ah7,bh1)|0;lo=lo+Math.imul(al6,bl2)|0;mid=mid+Math.imul(al6,bh2)|0;mid=mid+Math.imul(ah6,bl2)|0;hi=hi+Math.imul(ah6,bh2)|0;lo=lo+Math.imul(al5,bl3)|0;mid=mid+Math.imul(al5,bh3)|0;mid=mid+Math.imul(ah5,bl3)|0;hi=hi+Math.imul(ah5,bh3)|0;lo=lo+Math.imul(al4,bl4)|0;mid=mid+Math.imul(al4,bh4)|0;mid=mid+Math.imul(ah4,bl4)|0;hi=hi+Math.imul(ah4,bh4)|0;lo=lo+Math.imul(al3,bl5)|0;mid=mid+Math.imul(al3,bh5)|0;mid=mid+Math.imul(ah3,bl5)|0;hi=hi+Math.imul(ah3,bh5)|0;lo=lo+Math.imul(al2,bl6)|0;mid=mid+Math.imul(al2,bh6)|0;mid=mid+Math.imul(ah2,bl6)|0;hi=hi+Math.imul(ah2,bh6)|0;lo=lo+Math.imul(al1,bl7)|0;mid=mid+Math.imul(al1,bh7)|0;mid=mid+Math.imul(ah1,bl7)|0;hi=hi+Math.imul(ah1,bh7)|0;lo=lo+Math.imul(al0,bl8)|0;mid=mid+Math.imul(al0,bh8)|0;mid=mid+Math.imul(ah0,bl8)|0;hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0;w8&=67108863;lo=Math.imul(al9,bl0);mid=Math.imul(al9,bh0);mid=mid+Math.imul(ah9,bl0)|0;hi=Math.imul(ah9,bh0);lo=lo+Math.imul(al8,bl1)|0;mid=mid+Math.imul(al8,bh1)|0;mid=mid+Math.imul(ah8,bl1)|0;hi=hi+Math.imul(ah8,bh1)|0;lo=lo+Math.imul(al7,bl2)|0;mid=mid+Math.imul(al7,bh2)|0;mid=mid+Math.imul(ah7,bl2)|0;hi=hi+Math.imul(ah7,bh2)|0;lo=lo+Math.imul(al6,bl3)|0;mid=mid+Math.imul(al6,bh3)|0;mid=mid+Math.imul(ah6,bl3)|0;hi=hi+Math.imul(ah6,bh3)|0;lo=lo+Math.imul(al5,bl4)|0;mid=mid+Math.imul(al5,bh4)|0;mid=mid+Math.imul(ah5,bl4)|0;hi=hi+Math.imul(ah5,bh4)|0;lo=lo+Math.imul(al4,bl5)|0;mid=mid+Math.imul(al4,bh5)|0;mid=mid+Math.imul(ah4,bl5)|0;hi=hi+Math.imul(ah4,bh5)|0;lo=lo+Math.imul(al3,bl6)|0;mid=mid+Math.imul(al3,bh6)|0;mid=mid+Math.imul(ah3,bl6)|0;hi=hi+Math.imul(ah3,bh6)|0;lo=lo+Math.imul(al2,bl7)|0;mid=mid+Math.imul(al2,bh7)|0;mid=mid+Math.imul(ah2,bl7)|0;hi=hi+Math.imul(ah2,bh7)|0;lo=lo+Math.imul(al1,bl8)|0;mid=mid+Math.imul(al1,bh8)|0;mid=mid+Math.imul(ah1,bl8)|0;hi=hi+Math.imul(ah1,bh8)|0;lo=lo+Math.imul(al0,bl9)|0;mid=mid+Math.imul(al0,bh9)|0;mid=mid+Math.imul(ah0,bl9)|0;hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0;w9&=67108863;lo=Math.imul(al9,bl1);mid=Math.imul(al9,bh1);mid=mid+Math.imul(ah9,bl1)|0;hi=Math.imul(ah9,bh1);lo=lo+Math.imul(al8,bl2)|0;mid=mid+Math.imul(al8,bh2)|0;mid=mid+Math.imul(ah8,bl2)|0;hi=hi+Math.imul(ah8,bh2)|0;lo=lo+Math.imul(al7,bl3)|0;mid=mid+Math.imul(al7,bh3)|0;mid=mid+Math.imul(ah7,bl3)|0;hi=hi+Math.imul(ah7,bh3)|0;lo=lo+Math.imul(al6,bl4)|0;mid=mid+Math.imul(al6,bh4)|0;mid=mid+Math.imul(ah6,bl4)|0;hi=hi+Math.imul(ah6,bh4)|0;lo=lo+Math.imul(al5,bl5)|0;mid=mid+Math.imul(al5,bh5)|0;mid=mid+Math.imul(ah5,bl5)|0;hi=hi+Math.imul(ah5,bh5)|0;lo=lo+Math.imul(al4,bl6)|0;mid=mid+Math.imul(al4,bh6)|0;mid=mid+Math.imul(ah4,bl6)|0;hi=hi+Math.imul(ah4,bh6)|0;lo=lo+Math.imul(al3,bl7)|0;mid=mid+Math.imul(al3,bh7)|0;mid=mid+Math.imul(ah3,bl7)|0;hi=hi+Math.imul(ah3,bh7)|0;lo=lo+Math.imul(al2,bl8)|0;mid=mid+Math.imul(al2,bh8)|0;mid=mid+Math.imul(ah2,bl8)|0;hi=hi+Math.imul(ah2,bh8)|0;lo=lo+Math.imul(al1,bl9)|0;mid=mid+Math.imul(al1,bh9)|0;mid=mid+Math.imul(ah1,bl9)|0;hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0;w10&=67108863;lo=Math.imul(al9,bl2);mid=Math.imul(al9,bh2);mid=mid+Math.imul(ah9,bl2)|0;hi=Math.imul(ah9,bh2);lo=lo+Math.imul(al8,bl3)|0;mid=mid+Math.imul(al8,bh3)|0;mid=mid+Math.imul(ah8,bl3)|0;hi=hi+Math.imul(ah8,bh3)|0;lo=lo+Math.imul(al7,bl4)|0;mid=mid+Math.imul(al7,bh4)|0;mid=mid+Math.imul(ah7,bl4)|0;hi=hi+Math.imul(ah7,bh4)|0;lo=lo+Math.imul(al6,bl5)|0;mid=mid+Math.imul(al6,bh5)|0;mid=mid+Math.imul(ah6,bl5)|0;hi=hi+Math.imul(ah6,bh5)|0;lo=lo+Math.imul(al5,bl6)|0;mid=mid+Math.imul(al5,bh6)|0;mid=mid+Math.imul(ah5,bl6)|0;hi=hi+Math.imul(ah5,bh6)|0;lo=lo+Math.imul(al4,bl7)|0;mid=mid+Math.imul(al4,bh7)|0;mid=mid+Math.imul(ah4,bl7)|0;hi=hi+Math.imul(ah4,bh7)|0;lo=lo+Math.imul(al3,bl8)|0;mid=mid+Math.imul(al3,bh8)|0;mid=mid+Math.imul(ah3,bl8)|0;hi=hi+Math.imul(ah3,bh8)|0;lo=lo+Math.imul(al2,bl9)|0;mid=mid+Math.imul(al2,bh9)|0;mid=mid+Math.imul(ah2,bl9)|0;hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0;w11&=67108863;lo=Math.imul(al9,bl3);mid=Math.imul(al9,bh3);mid=mid+Math.imul(ah9,bl3)|0;hi=Math.imul(ah9,bh3);lo=lo+Math.imul(al8,bl4)|0;mid=mid+Math.imul(al8,bh4)|0;mid=mid+Math.imul(ah8,bl4)|0;hi=hi+Math.imul(ah8,bh4)|0;lo=lo+Math.imul(al7,bl5)|0;mid=mid+Math.imul(al7,bh5)|0;mid=mid+Math.imul(ah7,bl5)|0;hi=hi+Math.imul(ah7,bh5)|0;lo=lo+Math.imul(al6,bl6)|0;mid=mid+Math.imul(al6,bh6)|0;mid=mid+Math.imul(ah6,bl6)|0;hi=hi+Math.imul(ah6,bh6)|0;lo=lo+Math.imul(al5,bl7)|0;mid=mid+Math.imul(al5,bh7)|0;mid=mid+Math.imul(ah5,bl7)|0;hi=hi+Math.imul(ah5,bh7)|0;lo=lo+Math.imul(al4,bl8)|0;mid=mid+Math.imul(al4,bh8)|0;mid=mid+Math.imul(ah4,bl8)|0;hi=hi+Math.imul(ah4,bh8)|0;lo=lo+Math.imul(al3,bl9)|0;mid=mid+Math.imul(al3,bh9)|0;mid=mid+Math.imul(ah3,bl9)|0;hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0;w12&=67108863;lo=Math.imul(al9,bl4);mid=Math.imul(al9,bh4);mid=mid+Math.imul(ah9,bl4)|0;hi=Math.imul(ah9,bh4);lo=lo+Math.imul(al8,bl5)|0;mid=mid+Math.imul(al8,bh5)|0;mid=mid+Math.imul(ah8,bl5)|0;hi=hi+Math.imul(ah8,bh5)|0;lo=lo+Math.imul(al7,bl6)|0;mid=mid+Math.imul(al7,bh6)|0;mid=mid+Math.imul(ah7,bl6)|0;hi=hi+Math.imul(ah7,bh6)|0;lo=lo+Math.imul(al6,bl7)|0;mid=mid+Math.imul(al6,bh7)|0;mid=mid+Math.imul(ah6,bl7)|0;hi=hi+Math.imul(ah6,bh7)|0;lo=lo+Math.imul(al5,bl8)|0;mid=mid+Math.imul(al5,bh8)|0;mid=mid+Math.imul(ah5,bl8)|0;hi=hi+Math.imul(ah5,bh8)|0;lo=lo+Math.imul(al4,bl9)|0;mid=mid+Math.imul(al4,bh9)|0;mid=mid+Math.imul(ah4,bl9)|0;hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0;w13&=67108863;lo=Math.imul(al9,bl5);mid=Math.imul(al9,bh5);mid=mid+Math.imul(ah9,bl5)|0;hi=Math.imul(ah9,bh5);lo=lo+Math.imul(al8,bl6)|0;mid=mid+Math.imul(al8,bh6)|0;mid=mid+Math.imul(ah8,bl6)|0;hi=hi+Math.imul(ah8,bh6)|0;lo=lo+Math.imul(al7,bl7)|0;mid=mid+Math.imul(al7,bh7)|0;mid=mid+Math.imul(ah7,bl7)|0;hi=hi+Math.imul(ah7,bh7)|0;lo=lo+Math.imul(al6,bl8)|0;mid=mid+Math.imul(al6,bh8)|0;mid=mid+Math.imul(ah6,bl8)|0;hi=hi+Math.imul(ah6,bh8)|0;lo=lo+Math.imul(al5,bl9)|0;mid=mid+Math.imul(al5,bh9)|0;mid=mid+Math.imul(ah5,bl9)|0;hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0;w14&=67108863;lo=Math.imul(al9,bl6);mid=Math.imul(al9,bh6);mid=mid+Math.imul(ah9,bl6)|0;hi=Math.imul(ah9,bh6);lo=lo+Math.imul(al8,bl7)|0;mid=mid+Math.imul(al8,bh7)|0;mid=mid+Math.imul(ah8,bl7)|0;hi=hi+Math.imul(ah8,bh7)|0;lo=lo+Math.imul(al7,bl8)|0;mid=mid+Math.imul(al7,bh8)|0;mid=mid+Math.imul(ah7,bl8)|0;hi=hi+Math.imul(ah7,bh8)|0;lo=lo+Math.imul(al6,bl9)|0;mid=mid+Math.imul(al6,bh9)|0;mid=mid+Math.imul(ah6,bl9)|0;hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0;w15&=67108863;lo=Math.imul(al9,bl7);mid=Math.imul(al9,bh7);mid=mid+Math.imul(ah9,bl7)|0;hi=Math.imul(ah9,bh7);lo=lo+Math.imul(al8,bl8)|0;mid=mid+Math.imul(al8,bh8)|0;mid=mid+Math.imul(ah8,bl8)|0;hi=hi+Math.imul(ah8,bh8)|0;lo=lo+Math.imul(al7,bl9)|0;mid=mid+Math.imul(al7,bh9)|0;mid=mid+Math.imul(ah7,bl9)|0;hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0;w16&=67108863;lo=Math.imul(al9,bl8);mid=Math.imul(al9,bh8);mid=mid+Math.imul(ah9,bl8)|0;hi=Math.imul(ah9,bh8);lo=lo+Math.imul(al8,bl9)|0;mid=mid+Math.imul(al8,bh9)|0;mid=mid+Math.imul(ah8,bl9)|0;hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0;w17&=67108863;lo=Math.imul(al9,bl9);mid=Math.imul(al9,bh9);mid=mid+Math.imul(ah9,bl9)|0;hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w18>>>26)|0;w18&=67108863;o[0]=w0;o[1]=w1;o[2]=w2;o[3]=w3;o[4]=w4;o[5]=w5;o[6]=w6;o[7]=w7;o[8]=w8;o[9]=w9;o[10]=w10;o[11]=w11;o[12]=w12;o[13]=w13;o[14]=w14;o[15]=w15;o[16]=w16;o[17]=w17;o[18]=w18;if(c!==0){o[19]=c;out.length++}return out};if(!Math.imul){comb10MulTo=smallMulTo}function bigMulTo(self,num,out){out.negative=num.negative^self.negative;out.length=self.length+num.length;var carry=0;var hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863;var maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self.length+1);j<=maxJ;j++){var i=k-j;var a=self.words[i]|0;var b=num.words[j]|0;var r=a*b;var lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0;lo=lo+rword|0;rword=lo&67108863;ncarry=ncarry+(lo>>>26)|0;hncarry+=ncarry>>>26;ncarry&=67108863}out.words[k]=rword;carry=ncarry;ncarry=hncarry}if(carry!==0){out.words[k]=carry}else{out.length--}return out._strip()}function jumboMulTo(self,num,out){return bigMulTo(self,num,out)}BN.prototype.mulTo=function mulTo(num,out){var res;var len=this.length+num.length;if(this.length===10&&num.length===10){res=comb10MulTo(this,num,out)}else if(len<63){res=smallMulTo(this,num,out)}else if(len<1024){res=bigMulTo(this,num,out)}else{res=jumboMulTo(this,num,out)}return res};BN.prototype.mul=function mul(num){var out=new BN(null);out.words=new Array(this.length+num.length);return this.mulTo(num,out)};BN.prototype.mulf=function mulf(num){var out=new BN(null);out.words=new Array(this.length+num.length);return jumboMulTo(this,num,out)};BN.prototype.imul=function imul(num){return this.clone().mulTo(num,this)};BN.prototype.imuln=function imuln(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(typeof num==="number");assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num;var lo=(w&67108863)+(carry&67108863);carry>>=26;carry+=w/67108864|0;carry+=lo>>>26;this.words[i]=lo&67108863}if(carry!==0){this.words[i]=carry;this.length++}this.length=num===0?1:this.length;return isNegNum?this.ineg():this};BN.prototype.muln=function muln(num){return this.clone().imuln(num)};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.imul(this.clone())};BN.prototype.pow=function pow(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr()){if(w[i]!==0)break}if(++i<w.length){for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}}return res};BN.prototype.iushln=function iushln(bits){assert(typeof bits==="number"&&bits>=0);var r=bits%26;var s=(bits-r)/26;var carryMask=67108863>>>26-r<<26-r;var i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask;var c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry;carry=newCarry>>>26-r}if(carry){this.words[i]=carry;this.length++}}if(s!==0){for(i=this.length-1;i>=0;i--){this.words[i+s]=this.words[i]}for(i=0;i<s;i++){this.words[i]=0}this.length+=s}return this._strip()};BN.prototype.ishln=function ishln(bits){assert(this.negative===0);return this.iushln(bits)};BN.prototype.iushrn=function iushrn(bits,hint,extended){assert(typeof bits==="number"&&bits>=0);var h;if(hint){h=(hint-hint%26)/26}else{h=0}var r=bits%26;var s=Math.min((bits-r)/26,this.length);var mask=67108863^67108863>>>r<<r;var maskedWords=extended;h-=s;h=Math.max(0,h);if(maskedWords){for(var i=0;i<s;i++){maskedWords.words[i]=this.words[i]}maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++){this.words[i]=this.words[i+s]}}else{this.words[0]=0;this.length=1}var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r;carry=word&mask}if(maskedWords&&carry!==0){maskedWords.words[maskedWords.length++]=carry}if(this.length===0){this.words[0]=0;this.length=1}return this._strip()};BN.prototype.ishrn=function ishrn(bits,hint,extended){assert(this.negative===0);return this.iushrn(bits,hint,extended)};BN.prototype.shln=function shln(bits){return this.clone().ishln(bits)};BN.prototype.ushln=function ushln(bits){return this.clone().iushln(bits)};BN.prototype.shrn=function shrn(bits){return this.clone().ishrn(bits)};BN.prototype.ushrn=function ushrn(bits){return this.clone().iushrn(bits)};BN.prototype.testn=function testn(bit){assert(typeof bit==="number"&&bit>=0);var r=bit%26;var s=(bit-r)/26;var q=1<<r;if(this.length<=s)return false;var w=this.words[s];return!!(w&q)};BN.prototype.imaskn=function imaskn(bits){assert(typeof bits==="number"&&bits>=0);var r=bits%26;var s=(bits-r)/26;assert(this.negative===0,"imaskn works only with positive numbers");if(this.length<=s){return this}if(r!==0){s++}this.length=Math.min(s,this.length);if(r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this._strip()};BN.prototype.maskn=function maskn(bits){return this.clone().imaskn(bits)};BN.prototype.iaddn=function iaddn(num){assert(typeof num==="number");assert(num<67108864);if(num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<=num){this.words[0]=num-(this.words[0]|0);this.negative=0;return this}this.negative=0;this.isubn(num);this.negative=1;return this}return this._iaddn(num)};BN.prototype._iaddn=function _iaddn(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++){this.words[i]-=67108864;if(i===this.length-1){this.words[i+1]=1}else{this.words[i+1]++}}this.length=Math.max(this.length,i+1);return this};BN.prototype.isubn=function isubn(num){assert(typeof num==="number");assert(num<67108864);if(num<0)return this.iaddn(-num);if(this.negative!==0){this.negative=0;this.iaddn(num);this.negative=1;return this}this.words[0]-=num;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1}else{for(var i=0;i<this.length&&this.words[i]<0;i++){this.words[i]+=67108864;this.words[i+1]-=1}}return this._strip()};BN.prototype.addn=function addn(num){return this.clone().iaddn(num)};BN.prototype.subn=function subn(num){return this.clone().isubn(num)};BN.prototype.iabs=function iabs(){this.negative=0;return this};BN.prototype.abs=function abs(){return this.clone().iabs()};BN.prototype._ishlnsubmul=function _ishlnsubmul(num,mul,shift){var len=num.length+shift;var i;this._expand(len);var w;var carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863;carry=(w>>26)-(right/67108864|0);this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++){w=(this.words[i+shift]|0)+carry;carry=w>>26;this.words[i+shift]=w&67108863}if(carry===0)return this._strip();assert(carry===-1);carry=0;for(i=0;i<this.length;i++){w=-(this.words[i]|0)+carry;carry=w>>26;this.words[i]=w&67108863}this.negative=1;return this._strip()};BN.prototype._wordDiv=function _wordDiv(num,mode){var shift=this.length-num.length;var a=this.clone();var b=num;var bhi=b.words[b.length-1]|0;var bhiBits=this._countBits(bhi);shift=26-bhiBits;if(shift!==0){b=b.ushln(shift);a.iushln(shift);bhi=b.words[b.length-1]|0}var m=a.length-b.length;var q;if(mode!=="mod"){q=new BN(null);q.length=m+1;q.words=new Array(q.length);for(var i=0;i<q.length;i++){q.words[i]=0}}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){a=diff;if(q){q.words[m]=1}}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863);a._ishlnsubmul(b,qj,j);while(a.negative!==0){qj--;a.negative=0;a._ishlnsubmul(b,1,j);if(!a.isZero()){a.negative^=1}}if(q){q.words[j]=qj}}if(q){q._strip()}a._strip();if(mode!=="div"&&shift!==0){a.iushrn(shift)}return{div:q||null,mod:a}};BN.prototype.divmod=function divmod(num,mode,positive){assert(!num.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)}}var div,mod,res;if(this.negative!==0&&num.negative===0){res=this.neg().divmod(num,mode);if(mode!=="mod"){div=res.div.neg()}if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.iadd(num)}}return{div:div,mod:mod}}if(this.negative===0&&num.negative!==0){res=this.divmod(num.neg(),mode);if(mode!=="mod"){div=res.div.neg()}return{div:div,mod:res.mod}}if((this.negative&num.negative)!==0){res=this.neg().divmod(num.neg(),mode);if(mode!=="div"){mod=res.mod.neg();if(positive&&mod.negative!==0){mod.isub(num)}}return{div:res.div,mod:mod}}if(num.length>this.length||this.cmp(num)<0){return{div:new BN(0),mod:this}}if(num.length===1){if(mode==="div"){return{div:this.divn(num.words[0]),mod:null}}if(mode==="mod"){return{div:null,mod:new BN(this.modrn(num.words[0]))}}return{div:this.divn(num.words[0]),mod:new BN(this.modrn(num.words[0]))}}return this._wordDiv(num,mode)};BN.prototype.div=function div(num){return this.divmod(num,"div",false).div};BN.prototype.mod=function mod(num){return this.divmod(num,"mod",false).mod};BN.prototype.umod=function umod(num){return this.divmod(num,"mod",true).mod};BN.prototype.divRound=function divRound(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod;var half=num.ushrn(1);var r2=num.andln(1);var cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)};BN.prototype.modrn=function modrn(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(num<=67108863);var p=(1<<26)%num;var acc=0;for(var i=this.length-1;i>=0;i--){acc=(p*acc+(this.words[i]|0))%num}return isNegNum?-acc:acc};BN.prototype.modn=function modn(num){return this.modrn(num)};BN.prototype.idivn=function idivn(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0;carry=w%num}this._strip();return isNegNum?this.ineg():this};BN.prototype.divn=function divn(num){return this.clone().idivn(num)};BN.prototype.egcd=function egcd(p){assert(p.negative===0);assert(!p.isZero());var x=this;var y=p.clone();if(x.negative!==0){x=x.umod(p)}else{x=x.clone()}var A=new BN(1);var B=new BN(0);var C=new BN(0);var D=new BN(1);var g=0;while(x.isEven()&&y.isEven()){x.iushrn(1);y.iushrn(1);++g}var yp=y.clone();var xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd()){A.iadd(yp);B.isub(xp)}A.iushrn(1);B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd()){C.iadd(yp);D.isub(xp)}C.iushrn(1);D.iushrn(1)}}if(x.cmp(y)>=0){x.isub(y);A.isub(C);B.isub(D)}else{y.isub(x);C.isub(A);D.isub(B)}}return{a:C,b:D,gcd:y.iushln(g)}};BN.prototype._invmp=function _invmp(p){assert(p.negative===0);assert(!p.isZero());var a=this;var b=p.clone();if(a.negative!==0){a=a.umod(p)}else{a=a.clone()}var x1=new BN(1);var x2=new BN(0);var delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd()){x1.iadd(delta)}x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd()){x2.iadd(delta)}x2.iushrn(1)}}if(a.cmp(b)>=0){a.isub(b);x1.isub(x2)}else{b.isub(a);x2.isub(x1)}}var res;if(a.cmpn(1)===0){res=x1}else{res=x2}if(res.cmpn(0)<0){res.iadd(p)}return res};BN.prototype.gcd=function gcd(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone();var b=num.clone();a.negative=0;b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++){a.iushrn(1);b.iushrn(1)}do{while(a.isEven()){a.iushrn(1)}while(b.isEven()){b.iushrn(1)}var r=a.cmp(b);if(r<0){var t=a;a=b;b=t}else if(r===0||b.cmpn(1)===0){break}a.isub(b)}while(true);return b.iushln(shift)};BN.prototype.invm=function invm(num){return this.egcd(num).a.umod(num)};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1};BN.prototype.andln=function andln(num){return this.words[0]&num};BN.prototype.bincn=function bincn(bit){assert(typeof bit==="number");var r=bit%26;var s=(bit-r)/26;var q=1<<r;if(this.length<=s){this._expand(s+1);this.words[s]|=q;return this}var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry;carry=w>>>26;w&=67108863;this.words[i]=w}if(carry!==0){this.words[i]=carry;this.length++}return this};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0};BN.prototype.cmpn=function cmpn(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this._strip();var res;if(this.length>1){res=1}else{if(negative){num=-num}assert(num<=67108863,"Number is too big");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res};BN.prototype.cmp=function cmp(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res};BN.prototype.ucmp=function ucmp(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0;var b=num.words[i]|0;if(a===b)continue;if(a<b){res=-1}else if(a>b){res=1}break}return res};BN.prototype.gtn=function gtn(num){return this.cmpn(num)===1};BN.prototype.gt=function gt(num){return this.cmp(num)===1};BN.prototype.gten=function gten(num){return this.cmpn(num)>=0};BN.prototype.gte=function gte(num){return this.cmp(num)>=0};BN.prototype.ltn=function ltn(num){return this.cmpn(num)===-1};BN.prototype.lt=function lt(num){return this.cmp(num)===-1};BN.prototype.lten=function lten(num){return this.cmpn(num)<=0};BN.prototype.lte=function lte(num){return this.cmp(num)<=0};BN.prototype.eqn=function eqn(num){return this.cmpn(num)===0};BN.prototype.eq=function eq(num){return this.cmp(num)===0};BN.red=function red(num){return new Red(num)};BN.prototype.toRed=function toRed(ctx){assert(!this.red,"Already a number in reduction context");assert(this.negative===0,"red works only with positives");return ctx.convertTo(this)._forceRed(ctx)};BN.prototype.fromRed=function fromRed(){assert(this.red,"fromRed works only with numbers in reduction context");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(ctx){this.red=ctx;return this};BN.prototype.forceRed=function forceRed(ctx){assert(!this.red,"Already a number in reduction context");return this._forceRed(ctx)};BN.prototype.redAdd=function redAdd(num){assert(this.red,"redAdd works only with red numbers");return this.red.add(this,num)};BN.prototype.redIAdd=function redIAdd(num){assert(this.red,"redIAdd works only with red numbers");return this.red.iadd(this,num)};BN.prototype.redSub=function redSub(num){assert(this.red,"redSub works only with red numbers");return this.red.sub(this,num)};BN.prototype.redISub=function redISub(num){assert(this.red,"redISub works only with red numbers");return this.red.isub(this,num)};BN.prototype.redShl=function redShl(num){assert(this.red,"redShl works only with red numbers");return this.red.shl(this,num)};BN.prototype.redMul=function redMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.mul(this,num)};BN.prototype.redIMul=function redIMul(num){assert(this.red,"redMul works only with red numbers");this.red._verify2(this,num);return this.red.imul(this,num)};BN.prototype.redSqr=function redSqr(){assert(this.red,"redSqr works only with red numbers");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,"redISqr works only with red numbers");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,"redSqrt works only with red numbers");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,"redInvm works only with red numbers");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,"redNeg works only with red numbers");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(num){assert(this.red&&!num.red,"redPow(normalNum)");this.red._verify1(this);return this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name;this.p=new BN(p,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var tmp=new BN(null);tmp.words=new Array(Math.ceil(this.n/13));return tmp};MPrime.prototype.ireduce=function ireduce(num){var r=num;var rlen;do{this.split(r,this.tmp);r=this.imulK(r);r=r.iadd(this.tmp);rlen=r.bitLength()}while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0){r.words[0]=0;r.length=1}else if(cmp>0){r.isub(this.p)}else{if(r.strip!==undefined){r.strip()}else{r._strip()}}return r};MPrime.prototype.split=function split(input,out){input.iushrn(this.n,0,out)};MPrime.prototype.imulK=function imulK(num){return num.imul(this.k)};function K256(){MPrime.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}inherits(K256,MPrime);K256.prototype.split=function split(input,output){var mask=4194303;var outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++){output.words[i]=input.words[i]}output.length=outLen;if(input.length<=9){input.words[0]=0;input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22;prev=next}prev>>>=22;input.words[i-10]=prev;if(prev===0&&input.length>10){input.length-=10}else{input.length-=9}};K256.prototype.imulK=function imulK(num){num.words[num.length]=0;num.words[num.length+1]=0;num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977;num.words[i]=lo&67108863;lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){num.length--;if(num.words[num.length-1]===0){num.length--}}return num};function P224(){MPrime.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}inherits(P224,MPrime);function P192(){MPrime.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}inherits(P192,MPrime);function P25519(){MPrime.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}inherits(P25519,MPrime);P25519.prototype.imulK=function imulK(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry;var lo=hi&67108863;hi>>>=26;num.words[i]=lo;carry=hi}if(carry!==0){num.words[num.length++]=carry}return num};BN._prime=function prime(name){if(primes[name])return primes[name];var prime;if(name==="k256"){prime=new K256}else if(name==="p224"){prime=new P224}else if(name==="p192"){prime=new P192}else if(name==="p25519"){prime=new P25519}else{throw new Error("Unknown prime "+name)}primes[name]=prime;return prime};function Red(m){if(typeof m==="string"){var prime=BN._prime(m);this.m=prime.p;this.prime=prime}else{assert(m.gtn(1),"modulus must be greater than 1");this.m=m;this.prime=null}}Red.prototype._verify1=function _verify1(a){assert(a.negative===0,"red works only with positives");assert(a.red,"red works only with red numbers")};Red.prototype._verify2=function _verify2(a,b){assert((a.negative|b.negative)===0,"red works only with positives");assert(a.red&&a.red===b.red,"red works only with red numbers")};Red.prototype.imod=function imod(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);move(a,a.umod(this.m)._forceRed(this));return a};Red.prototype.neg=function neg(a){if(a.isZero()){return a.clone()}return this.m.sub(a)._forceRed(this)};Red.prototype.add=function add(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res._forceRed(this)};Red.prototype.iadd=function iadd(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0){res.isub(this.m)}return res};Red.prototype.sub=function sub(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res._forceRed(this)};Red.prototype.isub=function isub(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0){res.iadd(this.m)}return res};Red.prototype.shl=function shl(a,num){this._verify1(a);return this.imod(a.ushln(num))};Red.prototype.imul=function imul(a,b){this._verify2(a,b);return this.imod(a.imul(b))};Red.prototype.mul=function mul(a,b){this._verify2(a,b);return this.imod(a.mul(b))};Red.prototype.isqr=function isqr(a){return this.imul(a,a.clone())};Red.prototype.sqr=function sqr(a){return this.mul(a,a)};Red.prototype.sqrt=function sqrt(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);assert(mod3%2===1);if(mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1);var s=0;while(!q.isZero()&&q.andln(1)===0){s++;q.iushrn(1)}assert(!q.isZero());var one=new BN(1).toRed(this);var nOne=one.redNeg();var lpow=this.m.subn(1).iushrn(1);var z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0){z.redIAdd(nOne)}var c=this.pow(z,q);var r=this.pow(a,q.addn(1).iushrn(1));var t=this.pow(a,q);var m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++){tmp=tmp.redSqr()}assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b);c=b.redSqr();t=t.redMul(c);m=i}return r};Red.prototype.invm=function invm(a){var inv=a._invmp(this.m);if(inv.negative!==0){inv.negative=0;return this.imod(inv).redNeg()}else{return this.imod(inv)}};Red.prototype.pow=function pow(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4;var wnd=new Array(1<<windowSize);wnd[0]=new BN(1).toRed(this);wnd[1]=a;for(var i=2;i<wnd.length;i++){wnd[i]=this.mul(wnd[i-1],a)}var res=wnd[0];var current=0;var currentLen=0;var start=num.bitLength()%26;if(start===0){start=26}for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0]){res=this.sqr(res)}if(bit===0&&current===0){currentLen=0;continue}current<<=1;current|=bit;currentLen++;if(currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]);currentLen=0;current=0}start=26}return res};Red.prototype.convertTo=function convertTo(num){var r=num.umod(this.m);return r===num?r.clone():r};Red.prototype.convertFrom=function convertFrom(num){var res=num.clone();res.red=null;return res};BN.mont=function mont(num){return new Mont(num)};function Mont(m){Red.call(this,m);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(num){return this.imod(num.ushln(this.shift))};Mont.prototype.convertFrom=function convertFrom(num){var r=this.imod(num.mul(this.rinv));r.red=null;return r};Mont.prototype.imul=function imul(a,b){if(a.isZero()||b.isZero()){a.words[0]=0;a.length=1;return a}var t=a.imul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.mul=function mul(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b);var c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var u=t.isub(c).iushrn(this.shift);var res=u;if(u.cmp(this.m)>=0){res=u.isub(this.m)}else if(u.cmpn(0)<0){res=u.iadd(this.m)}return res._forceRed(this)};Mont.prototype.invm=function invm(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(module,bn)})(bn$1);return bn$1.exports}var bnExports=requireBn();var BN=getDefaultExportFromCjs(bnExports);var safeBuffer={exports:{}};
15
+ /*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var hasRequiredSafeBuffer;function requireSafeBuffer(){if(hasRequiredSafeBuffer)return safeBuffer.exports;hasRequiredSafeBuffer=1;(function(module,exports){var buffer=requireBuffer();var Buffer=buffer.Buffer;function copyProps(src,dst){for(var key in src){dst[key]=src[key]}}if(Buffer.from&&Buffer.alloc&&Buffer.allocUnsafe&&Buffer.allocUnsafeSlow){module.exports=buffer}else{copyProps(buffer,exports);exports.Buffer=SafeBuffer}function SafeBuffer(arg,encodingOrOffset,length){return Buffer(arg,encodingOrOffset,length)}SafeBuffer.prototype=Object.create(Buffer.prototype);copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg==="number"){throw new TypeError("Argument must not be a number")}return Buffer(arg,encodingOrOffset,length)};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!=="number"){throw new TypeError("Argument must be a number")}var buf=Buffer(size);if(fill!==undefined){if(typeof encoding==="string"){buf.fill(fill,encoding)}else{buf.fill(fill)}}else{buf.fill(0)}return buf};SafeBuffer.allocUnsafe=function(size){if(typeof size!=="number"){throw new TypeError("Argument must be a number")}return Buffer(size)};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!=="number"){throw new TypeError("Argument must be a number")}return buffer.SlowBuffer(size)}})(safeBuffer,safeBuffer.exports);return safeBuffer.exports}var src;var hasRequiredSrc;function requireSrc(){if(hasRequiredSrc)return src;hasRequiredSrc=1;var _Buffer=requireSafeBuffer().Buffer;function base(ALPHABET){if(ALPHABET.length>=255){throw new TypeError("Alphabet too long")}var BASE_MAP=new Uint8Array(256);for(var j=0;j<BASE_MAP.length;j++){BASE_MAP[j]=255}for(var i=0;i<ALPHABET.length;i++){var x=ALPHABET.charAt(i);var xc=x.charCodeAt(0);if(BASE_MAP[xc]!==255){throw new TypeError(x+" is ambiguous")}BASE_MAP[xc]=i}var BASE=ALPHABET.length;var LEADER=ALPHABET.charAt(0);var FACTOR=Math.log(BASE)/Math.log(256);var iFACTOR=Math.log(256)/Math.log(BASE);function encode(source){if(Array.isArray(source)||source instanceof Uint8Array){source=_Buffer.from(source)}if(!_Buffer.isBuffer(source)){throw new TypeError("Expected Buffer")}if(source.length===0){return""}var zeroes=0;var length=0;var pbegin=0;var pend=source.length;while(pbegin!==pend&&source[pbegin]===0){pbegin++;zeroes++}var size=(pend-pbegin)*iFACTOR+1>>>0;var b58=new Uint8Array(size);while(pbegin!==pend){var carry=source[pbegin];var i=0;for(var it1=size-1;(carry!==0||i<length)&&it1!==-1;it1--,i++){carry+=256*b58[it1]>>>0;b58[it1]=carry%BASE>>>0;carry=carry/BASE>>>0}if(carry!==0){throw new Error("Non-zero carry")}length=i;pbegin++}var it2=size-length;while(it2!==size&&b58[it2]===0){it2++}var str=LEADER.repeat(zeroes);for(;it2<size;++it2){str+=ALPHABET.charAt(b58[it2])}return str}function decodeUnsafe(source){if(typeof source!=="string"){throw new TypeError("Expected String")}if(source.length===0){return _Buffer.alloc(0)}var psz=0;var zeroes=0;var length=0;while(source[psz]===LEADER){zeroes++;psz++}var size=(source.length-psz)*FACTOR+1>>>0;var b256=new Uint8Array(size);while(psz<source.length){var charCode=source.charCodeAt(psz);if(charCode>255){return}var carry=BASE_MAP[charCode];if(carry===255){return}var i=0;for(var it3=size-1;(carry!==0||i<length)&&it3!==-1;it3--,i++){carry+=BASE*b256[it3]>>>0;b256[it3]=carry%256>>>0;carry=carry/256>>>0}if(carry!==0){throw new Error("Non-zero carry")}length=i;psz++}var it4=size-length;while(it4!==size&&b256[it4]===0){it4++}var vch=_Buffer.allocUnsafe(zeroes+(size-it4));vch.fill(0,0,zeroes);var j=zeroes;while(it4!==size){vch[j++]=b256[it4++]}return vch}function decode(string){var buffer=decodeUnsafe(string);if(buffer){return buffer}throw new Error("Non-base"+BASE+" character")}return{encode:encode,decodeUnsafe:decodeUnsafe,decode:decode}}src=base;return src}var bs58$1;var hasRequiredBs58;function requireBs58(){if(hasRequiredBs58)return bs58$1;hasRequiredBs58=1;var basex=requireSrc();var ALPHABET="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";bs58$1=basex(ALPHABET);return bs58$1}var bs58Exports=requireBs58();var bs58=getDefaultExportFromCjs(bs58Exports);const sha256=sha256$1;var lib={};var encoding_lib={};var hasRequiredEncoding_lib;function requireEncoding_lib(){if(hasRequiredEncoding_lib)return encoding_lib;hasRequiredEncoding_lib=1;function inRange(a,min,max){return min<=a&&a<=max}function ToDictionary(o){if(o===undefined)return{};if(o===Object(o))return o;throw TypeError("Could not convert argument to dictionary")}function stringToCodePoints(string){var s=String(string);var n=s.length;var i=0;var u=[];while(i<n){var c=s.charCodeAt(i);if(c<55296||c>57343){u.push(c)}else if(56320<=c&&c<=57343){u.push(65533)}else if(55296<=c&&c<=56319){if(i===n-1){u.push(65533)}else{var d=string.charCodeAt(i+1);if(56320<=d&&d<=57343){var a=c&1023;var b=d&1023;u.push(65536+(a<<10)+b);i+=1}else{u.push(65533)}}}i+=1}return u}function codePointsToString(code_points){var s="";for(var i=0;i<code_points.length;++i){var cp=code_points[i];if(cp<=65535){s+=String.fromCharCode(cp)}else{cp-=65536;s+=String.fromCharCode((cp>>10)+55296,(cp&1023)+56320)}}return s}var end_of_stream=-1;function Stream(tokens){this.tokens=[].slice.call(tokens)}Stream.prototype={endOfStream:function(){return!this.tokens.length},read:function(){if(!this.tokens.length)return end_of_stream;return this.tokens.shift()},prepend:function(token){if(Array.isArray(token)){var tokens=token;while(tokens.length)this.tokens.unshift(tokens.pop())}else{this.tokens.unshift(token)}},push:function(token){if(Array.isArray(token)){var tokens=token;while(tokens.length)this.tokens.push(tokens.shift())}else{this.tokens.push(token)}}};var finished=-1;function decoderError(fatal,opt_code_point){if(fatal)throw TypeError("Decoder error");return opt_code_point||65533}var DEFAULT_ENCODING="utf-8";function TextDecoder(encoding,options){if(!(this instanceof TextDecoder)){return new TextDecoder(encoding,options)}encoding=encoding!==undefined?String(encoding).toLowerCase():DEFAULT_ENCODING;if(encoding!==DEFAULT_ENCODING){throw new Error("Encoding not supported. Only utf-8 is supported")}options=ToDictionary(options);this._streaming=false;this._BOMseen=false;this._decoder=null;this._fatal=Boolean(options["fatal"]);this._ignoreBOM=Boolean(options["ignoreBOM"]);Object.defineProperty(this,"encoding",{value:"utf-8"});Object.defineProperty(this,"fatal",{value:this._fatal});Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}TextDecoder.prototype={decode:function decode(input,options){var bytes;if(typeof input==="object"&&input instanceof ArrayBuffer){bytes=new Uint8Array(input)}else if(typeof input==="object"&&"buffer"in input&&input.buffer instanceof ArrayBuffer){bytes=new Uint8Array(input.buffer,input.byteOffset,input.byteLength)}else{bytes=new Uint8Array(0)}options=ToDictionary(options);if(!this._streaming){this._decoder=new UTF8Decoder({fatal:this._fatal});this._BOMseen=false}this._streaming=Boolean(options["stream"]);var input_stream=new Stream(bytes);var code_points=[];var result;while(!input_stream.endOfStream()){result=this._decoder.handler(input_stream,input_stream.read());if(result===finished)break;if(result===null)continue;if(Array.isArray(result))code_points.push.apply(code_points,result);else code_points.push(result)}if(!this._streaming){do{result=this._decoder.handler(input_stream,input_stream.read());if(result===finished)break;if(result===null)continue;if(Array.isArray(result))code_points.push.apply(code_points,result);else code_points.push(result)}while(!input_stream.endOfStream());this._decoder=null}if(code_points.length){if(["utf-8"].indexOf(this.encoding)!==-1&&!this._ignoreBOM&&!this._BOMseen){if(code_points[0]===65279){this._BOMseen=true;code_points.shift()}else{this._BOMseen=true}}}return codePointsToString(code_points)}};function TextEncoder(encoding,options){if(!(this instanceof TextEncoder))return new TextEncoder(encoding,options);encoding=encoding!==undefined?String(encoding).toLowerCase():DEFAULT_ENCODING;if(encoding!==DEFAULT_ENCODING){throw new Error("Encoding not supported. Only utf-8 is supported")}options=ToDictionary(options);this._streaming=false;this._encoder=null;this._options={fatal:Boolean(options["fatal"])};Object.defineProperty(this,"encoding",{value:"utf-8"})}TextEncoder.prototype={encode:function encode(opt_string,options){opt_string=opt_string?String(opt_string):"";options=ToDictionary(options);if(!this._streaming)this._encoder=new UTF8Encoder(this._options);this._streaming=Boolean(options["stream"]);var bytes=[];var input_stream=new Stream(stringToCodePoints(opt_string));var result;while(!input_stream.endOfStream()){result=this._encoder.handler(input_stream,input_stream.read());if(result===finished)break;if(Array.isArray(result))bytes.push.apply(bytes,result);else bytes.push(result)}if(!this._streaming){while(true){result=this._encoder.handler(input_stream,input_stream.read());if(result===finished)break;if(Array.isArray(result))bytes.push.apply(bytes,result);else bytes.push(result)}this._encoder=null}return new Uint8Array(bytes)}};function UTF8Decoder(options){var fatal=options.fatal;var utf8_code_point=0,utf8_bytes_seen=0,utf8_bytes_needed=0,utf8_lower_boundary=128,utf8_upper_boundary=191;this.handler=function(stream,bite){if(bite===end_of_stream&&utf8_bytes_needed!==0){utf8_bytes_needed=0;return decoderError(fatal)}if(bite===end_of_stream)return finished;if(utf8_bytes_needed===0){if(inRange(bite,0,127)){return bite}if(inRange(bite,194,223)){utf8_bytes_needed=1;utf8_code_point=bite-192}else if(inRange(bite,224,239)){if(bite===224)utf8_lower_boundary=160;if(bite===237)utf8_upper_boundary=159;utf8_bytes_needed=2;utf8_code_point=bite-224}else if(inRange(bite,240,244)){if(bite===240)utf8_lower_boundary=144;if(bite===244)utf8_upper_boundary=143;utf8_bytes_needed=3;utf8_code_point=bite-240}else{return decoderError(fatal)}utf8_code_point=utf8_code_point<<6*utf8_bytes_needed;return null}if(!inRange(bite,utf8_lower_boundary,utf8_upper_boundary)){utf8_code_point=utf8_bytes_needed=utf8_bytes_seen=0;utf8_lower_boundary=128;utf8_upper_boundary=191;stream.prepend(bite);return decoderError(fatal)}utf8_lower_boundary=128;utf8_upper_boundary=191;utf8_bytes_seen+=1;utf8_code_point+=bite-128<<6*(utf8_bytes_needed-utf8_bytes_seen);if(utf8_bytes_seen!==utf8_bytes_needed)return null;var code_point=utf8_code_point;utf8_code_point=utf8_bytes_needed=utf8_bytes_seen=0;return code_point}}function UTF8Encoder(options){options.fatal;this.handler=function(stream,code_point){if(code_point===end_of_stream)return finished;if(inRange(code_point,0,127))return code_point;var count,offset;if(inRange(code_point,128,2047)){count=1;offset=192}else if(inRange(code_point,2048,65535)){count=2;offset=224}else if(inRange(code_point,65536,1114111)){count=3;offset=240}var bytes=[(code_point>>6*count)+offset];while(count>0){var temp=code_point>>6*(count-1);bytes.push(128|temp&63);count-=1}return bytes}}encoding_lib.TextEncoder=TextEncoder;encoding_lib.TextDecoder=TextDecoder;return encoding_lib}var hasRequiredLib;function requireLib(){if(hasRequiredLib)return lib;hasRequiredLib=1;var __createBinding=lib&&lib.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;Object.defineProperty(o,k2,{enumerable:true,get:function(){return m[k]}})}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k]});var __setModuleDefault=lib&&lib.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,"default",{enumerable:true,value:v})}:function(o,v){o["default"]=v});var __decorate=lib&&lib.__decorate||function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect==="object"&&typeof Reflect.decorate==="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)if(d=decorators[i])r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r;return c>3&&r&&Object.defineProperty(target,key,r),r};var __importStar=lib&&lib.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)if(k!=="default"&&Object.hasOwnProperty.call(mod,k))__createBinding(result,mod,k);__setModuleDefault(result,mod);return result};var __importDefault=lib&&lib.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(lib,"__esModule",{value:true});lib.deserializeUnchecked=lib.deserialize=lib.serialize=lib.BinaryReader=lib.BinaryWriter=lib.BorshError=lib.baseDecode=lib.baseEncode=void 0;const bn_js_1=__importDefault(requireBn());const bs58_1=__importDefault(requireBs58());const encoding=__importStar(requireEncoding_lib());const ResolvedTextDecoder=typeof TextDecoder!=="function"?encoding.TextDecoder:TextDecoder;const textDecoder=new ResolvedTextDecoder("utf-8",{fatal:true});function baseEncode(value){if(typeof value==="string"){value=Buffer.from(value,"utf8")}return bs58_1.default.encode(Buffer.from(value))}lib.baseEncode=baseEncode;function baseDecode(value){return Buffer.from(bs58_1.default.decode(value))}lib.baseDecode=baseDecode;const INITIAL_LENGTH=1024;class BorshError extends Error{constructor(message){super(message);this.fieldPath=[];this.originalMessage=message}addToFieldPath(fieldName){this.fieldPath.splice(0,0,fieldName);this.message=this.originalMessage+": "+this.fieldPath.join(".")}}lib.BorshError=BorshError;class BinaryWriter{constructor(){this.buf=Buffer.alloc(INITIAL_LENGTH);this.length=0}maybeResize(){if(this.buf.length<16+this.length){this.buf=Buffer.concat([this.buf,Buffer.alloc(INITIAL_LENGTH)])}}writeU8(value){this.maybeResize();this.buf.writeUInt8(value,this.length);this.length+=1}writeU16(value){this.maybeResize();this.buf.writeUInt16LE(value,this.length);this.length+=2}writeU32(value){this.maybeResize();this.buf.writeUInt32LE(value,this.length);this.length+=4}writeU64(value){this.maybeResize();this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray("le",8)))}writeU128(value){this.maybeResize();this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray("le",16)))}writeU256(value){this.maybeResize();this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray("le",32)))}writeU512(value){this.maybeResize();this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray("le",64)))}writeBuffer(buffer){this.buf=Buffer.concat([Buffer.from(this.buf.subarray(0,this.length)),buffer,Buffer.alloc(INITIAL_LENGTH)]);this.length+=buffer.length}writeString(str){this.maybeResize();const b=Buffer.from(str,"utf8");this.writeU32(b.length);this.writeBuffer(b)}writeFixedArray(array){this.writeBuffer(Buffer.from(array))}writeArray(array,fn){this.maybeResize();this.writeU32(array.length);for(const elem of array){this.maybeResize();fn(elem)}}toArray(){return this.buf.subarray(0,this.length)}}lib.BinaryWriter=BinaryWriter;function handlingRangeError(target,propertyKey,propertyDescriptor){const originalMethod=propertyDescriptor.value;propertyDescriptor.value=function(...args){try{return originalMethod.apply(this,args)}catch(e){if(e instanceof RangeError){const code=e.code;if(["ERR_BUFFER_OUT_OF_BOUNDS","ERR_OUT_OF_RANGE"].indexOf(code)>=0){throw new BorshError("Reached the end of buffer when deserializing")}}throw e}}}class BinaryReader{constructor(buf){this.buf=buf;this.offset=0}readU8(){const value=this.buf.readUInt8(this.offset);this.offset+=1;return value}readU16(){const value=this.buf.readUInt16LE(this.offset);this.offset+=2;return value}readU32(){const value=this.buf.readUInt32LE(this.offset);this.offset+=4;return value}readU64(){const buf=this.readBuffer(8);return new bn_js_1.default(buf,"le")}readU128(){const buf=this.readBuffer(16);return new bn_js_1.default(buf,"le")}readU256(){const buf=this.readBuffer(32);return new bn_js_1.default(buf,"le")}readU512(){const buf=this.readBuffer(64);return new bn_js_1.default(buf,"le")}readBuffer(len){if(this.offset+len>this.buf.length){throw new BorshError(`Expected buffer length ${len} isn't within bounds`)}const result=this.buf.slice(this.offset,this.offset+len);this.offset+=len;return result}readString(){const len=this.readU32();const buf=this.readBuffer(len);try{return textDecoder.decode(buf)}catch(e){throw new BorshError(`Error decoding UTF-8 string: ${e}`)}}readFixedArray(len){return new Uint8Array(this.readBuffer(len))}readArray(fn){const len=this.readU32();const result=Array();for(let i=0;i<len;++i){result.push(fn())}return result}}__decorate([handlingRangeError],BinaryReader.prototype,"readU8",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU16",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU32",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU64",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU128",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU256",null);__decorate([handlingRangeError],BinaryReader.prototype,"readU512",null);__decorate([handlingRangeError],BinaryReader.prototype,"readString",null);__decorate([handlingRangeError],BinaryReader.prototype,"readFixedArray",null);__decorate([handlingRangeError],BinaryReader.prototype,"readArray",null);lib.BinaryReader=BinaryReader;function capitalizeFirstLetter(string){return string.charAt(0).toUpperCase()+string.slice(1)}function serializeField(schema,fieldName,value,fieldType,writer){try{if(typeof fieldType==="string"){writer[`write${capitalizeFirstLetter(fieldType)}`](value)}else if(fieldType instanceof Array){if(typeof fieldType[0]==="number"){if(value.length!==fieldType[0]){throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`)}writer.writeFixedArray(value)}else if(fieldType.length===2&&typeof fieldType[1]==="number"){if(value.length!==fieldType[1]){throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`)}for(let i=0;i<fieldType[1];i++){serializeField(schema,null,value[i],fieldType[0],writer)}}else{writer.writeArray(value,item=>{serializeField(schema,fieldName,item,fieldType[0],writer)})}}else if(fieldType.kind!==undefined){switch(fieldType.kind){case"option":{if(value===null||value===undefined){writer.writeU8(0)}else{writer.writeU8(1);serializeField(schema,fieldName,value,fieldType.type,writer)}break}case"map":{writer.writeU32(value.size);value.forEach((val,key)=>{serializeField(schema,fieldName,key,fieldType.key,writer);serializeField(schema,fieldName,val,fieldType.value,writer)});break}default:throw new BorshError(`FieldType ${fieldType} unrecognized`)}}else{serializeStruct(schema,value,writer)}}catch(error){if(error instanceof BorshError){error.addToFieldPath(fieldName)}throw error}}function serializeStruct(schema,obj,writer){if(typeof obj.borshSerialize==="function"){obj.borshSerialize(writer);return}const structSchema=schema.get(obj.constructor);if(!structSchema){throw new BorshError(`Class ${obj.constructor.name} is missing in schema`)}if(structSchema.kind==="struct"){structSchema.fields.map(([fieldName,fieldType])=>{serializeField(schema,fieldName,obj[fieldName],fieldType,writer)})}else if(structSchema.kind==="enum"){const name=obj[structSchema.field];for(let idx=0;idx<structSchema.values.length;++idx){const[fieldName,fieldType]=structSchema.values[idx];if(fieldName===name){writer.writeU8(idx);serializeField(schema,fieldName,obj[fieldName],fieldType,writer);break}}}else{throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`)}}function serialize(schema,obj,Writer=BinaryWriter){const writer=new Writer;serializeStruct(schema,obj,writer);return writer.toArray()}lib.serialize=serialize;function deserializeField(schema,fieldName,fieldType,reader){try{if(typeof fieldType==="string"){return reader[`read${capitalizeFirstLetter(fieldType)}`]()}if(fieldType instanceof Array){if(typeof fieldType[0]==="number"){return reader.readFixedArray(fieldType[0])}else if(typeof fieldType[1]==="number"){const arr=[];for(let i=0;i<fieldType[1];i++){arr.push(deserializeField(schema,null,fieldType[0],reader))}return arr}else{return reader.readArray(()=>deserializeField(schema,fieldName,fieldType[0],reader))}}if(fieldType.kind==="option"){const option=reader.readU8();if(option){return deserializeField(schema,fieldName,fieldType.type,reader)}return undefined}if(fieldType.kind==="map"){let map=new Map;const length=reader.readU32();for(let i=0;i<length;i++){const key=deserializeField(schema,fieldName,fieldType.key,reader);const val=deserializeField(schema,fieldName,fieldType.value,reader);map.set(key,val)}return map}return deserializeStruct(schema,fieldType,reader)}catch(error){if(error instanceof BorshError){error.addToFieldPath(fieldName)}throw error}}function deserializeStruct(schema,classType,reader){if(typeof classType.borshDeserialize==="function"){return classType.borshDeserialize(reader)}const structSchema=schema.get(classType);if(!structSchema){throw new BorshError(`Class ${classType.name} is missing in schema`)}if(structSchema.kind==="struct"){const result={};for(const[fieldName,fieldType]of schema.get(classType).fields){result[fieldName]=deserializeField(schema,fieldName,fieldType,reader)}return new classType(result)}if(structSchema.kind==="enum"){const idx=reader.readU8();if(idx>=structSchema.values.length){throw new BorshError(`Enum index: ${idx} is out of range`)}const[fieldName,fieldType]=structSchema.values[idx];const fieldValue=deserializeField(schema,fieldName,fieldType,reader);return new classType({[fieldName]:fieldValue})}throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`)}function deserialize(schema,classType,buffer,Reader=BinaryReader){const reader=new Reader(buffer);const result=deserializeStruct(schema,classType,reader);if(reader.offset<buffer.length){throw new BorshError(`Unexpected ${buffer.length-reader.offset} bytes after deserialized data`)}return result}lib.deserialize=deserialize;function deserializeUnchecked(schema,classType,buffer,Reader=BinaryReader){const reader=new Reader(buffer);return deserializeStruct(schema,classType,reader)}lib.deserializeUnchecked=deserializeUnchecked;return lib}var libExports=requireLib();var Layout$1={};var hasRequiredLayout$1;function requireLayout$1(){if(hasRequiredLayout$1)return Layout$1;hasRequiredLayout$1=1;Object.defineProperty(Layout$1,"__esModule",{value:true});Layout$1.s16=Layout$1.s8=Layout$1.nu64be=Layout$1.u48be=Layout$1.u40be=Layout$1.u32be=Layout$1.u24be=Layout$1.u16be=Layout$1.nu64=Layout$1.u48=Layout$1.u40=Layout$1.u32=Layout$1.u24=Layout$1.u16=Layout$1.u8=Layout$1.offset=Layout$1.greedy=Layout$1.Constant=Layout$1.UTF8=Layout$1.CString=Layout$1.Blob=Layout$1.Boolean=Layout$1.BitField=Layout$1.BitStructure=Layout$1.VariantLayout=Layout$1.Union=Layout$1.UnionLayoutDiscriminator=Layout$1.UnionDiscriminator=Layout$1.Structure=Layout$1.Sequence=Layout$1.DoubleBE=Layout$1.Double=Layout$1.FloatBE=Layout$1.Float=Layout$1.NearInt64BE=Layout$1.NearInt64=Layout$1.NearUInt64BE=Layout$1.NearUInt64=Layout$1.IntBE=Layout$1.Int=Layout$1.UIntBE=Layout$1.UInt=Layout$1.OffsetLayout=Layout$1.GreedyCount=Layout$1.ExternalLayout=Layout$1.bindConstructorLayout=Layout$1.nameWithProperty=Layout$1.Layout=Layout$1.uint8ArrayToBuffer=Layout$1.checkUint8Array=void 0;Layout$1.constant=Layout$1.utf8=Layout$1.cstr=Layout$1.blob=Layout$1.unionLayoutDiscriminator=Layout$1.union=Layout$1.seq=Layout$1.bits=Layout$1.struct=Layout$1.f64be=Layout$1.f64=Layout$1.f32be=Layout$1.f32=Layout$1.ns64be=Layout$1.s48be=Layout$1.s40be=Layout$1.s32be=Layout$1.s24be=Layout$1.s16be=Layout$1.ns64=Layout$1.s48=Layout$1.s40=Layout$1.s32=Layout$1.s24=void 0;const buffer_1=requireBuffer();function checkUint8Array(b){if(!(b instanceof Uint8Array)){throw new TypeError("b must be a Uint8Array")}}Layout$1.checkUint8Array=checkUint8Array;function uint8ArrayToBuffer(b){checkUint8Array(b);return buffer_1.Buffer.from(b.buffer,b.byteOffset,b.length)}Layout$1.uint8ArrayToBuffer=uint8ArrayToBuffer;class Layout{constructor(span,property){if(!Number.isInteger(span)){throw new TypeError("span must be an integer")}this.span=span;this.property=property}makeDestinationObject(){return{}}getSpan(b,offset){if(0>this.span){throw new RangeError("indeterminate span")}return this.span}replicate(property){const rv=Object.create(this.constructor.prototype);Object.assign(rv,this);rv.property=property;return rv}fromArray(values){return undefined}}Layout$1.Layout=Layout;function nameWithProperty(name,lo){if(lo.property){return name+"["+lo.property+"]"}return name}Layout$1.nameWithProperty=nameWithProperty;function bindConstructorLayout(Class,layout){if("function"!==typeof Class){throw new TypeError("Class must be constructor")}if(Object.prototype.hasOwnProperty.call(Class,"layout_")){throw new Error("Class is already bound to a layout")}if(!(layout&&layout instanceof Layout)){throw new TypeError("layout must be a Layout")}if(Object.prototype.hasOwnProperty.call(layout,"boundConstructor_")){throw new Error("layout is already bound to a constructor")}Class.layout_=layout;layout.boundConstructor_=Class;layout.makeDestinationObject=()=>new Class;Object.defineProperty(Class.prototype,"encode",{value(b,offset){return layout.encode(this,b,offset)},writable:true});Object.defineProperty(Class,"decode",{value(b,offset){return layout.decode(b,offset)},writable:true})}Layout$1.bindConstructorLayout=bindConstructorLayout;class ExternalLayout extends Layout{isCount(){throw new Error("ExternalLayout is abstract")}}Layout$1.ExternalLayout=ExternalLayout;class GreedyCount extends ExternalLayout{constructor(elementSpan=1,property){if(!Number.isInteger(elementSpan)||0>=elementSpan){throw new TypeError("elementSpan must be a (positive) integer")}super(-1,property);this.elementSpan=elementSpan}isCount(){return true}decode(b,offset=0){checkUint8Array(b);const rem=b.length-offset;return Math.floor(rem/this.elementSpan)}encode(src,b,offset){return 0}}Layout$1.GreedyCount=GreedyCount;class OffsetLayout extends ExternalLayout{constructor(layout,offset=0,property){if(!(layout instanceof Layout)){throw new TypeError("layout must be a Layout")}if(!Number.isInteger(offset)){throw new TypeError("offset must be integer or undefined")}super(layout.span,property||layout.property);this.layout=layout;this.offset=offset}isCount(){return this.layout instanceof UInt||this.layout instanceof UIntBE}decode(b,offset=0){return this.layout.decode(b,offset+this.offset)}encode(src,b,offset=0){return this.layout.encode(src,b,offset+this.offset)}}Layout$1.OffsetLayout=OffsetLayout;class UInt extends Layout{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset=0){return uint8ArrayToBuffer(b).readUIntLE(offset,this.span)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeUIntLE(src,offset,this.span);return this.span}}Layout$1.UInt=UInt;class UIntBE extends Layout{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset=0){return uint8ArrayToBuffer(b).readUIntBE(offset,this.span)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeUIntBE(src,offset,this.span);return this.span}}Layout$1.UIntBE=UIntBE;class Int extends Layout{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset=0){return uint8ArrayToBuffer(b).readIntLE(offset,this.span)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeIntLE(src,offset,this.span);return this.span}}Layout$1.Int=Int;class IntBE extends Layout{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset=0){return uint8ArrayToBuffer(b).readIntBE(offset,this.span)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeIntBE(src,offset,this.span);return this.span}}Layout$1.IntBE=IntBE;const V2E32=Math.pow(2,32);function divmodInt64(src){const hi32=Math.floor(src/V2E32);const lo32=src-hi32*V2E32;return{hi32:hi32,lo32:lo32}}function roundedInt64(hi32,lo32){return hi32*V2E32+lo32}class NearUInt64 extends Layout{constructor(property){super(8,property)}decode(b,offset=0){const buffer=uint8ArrayToBuffer(b);const lo32=buffer.readUInt32LE(offset);const hi32=buffer.readUInt32LE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset=0){const split=divmodInt64(src);const buffer=uint8ArrayToBuffer(b);buffer.writeUInt32LE(split.lo32,offset);buffer.writeUInt32LE(split.hi32,offset+4);return 8}}Layout$1.NearUInt64=NearUInt64;class NearUInt64BE extends Layout{constructor(property){super(8,property)}decode(b,offset=0){const buffer=uint8ArrayToBuffer(b);const hi32=buffer.readUInt32BE(offset);const lo32=buffer.readUInt32BE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset=0){const split=divmodInt64(src);const buffer=uint8ArrayToBuffer(b);buffer.writeUInt32BE(split.hi32,offset);buffer.writeUInt32BE(split.lo32,offset+4);return 8}}Layout$1.NearUInt64BE=NearUInt64BE;class NearInt64 extends Layout{constructor(property){super(8,property)}decode(b,offset=0){const buffer=uint8ArrayToBuffer(b);const lo32=buffer.readUInt32LE(offset);const hi32=buffer.readInt32LE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset=0){const split=divmodInt64(src);const buffer=uint8ArrayToBuffer(b);buffer.writeUInt32LE(split.lo32,offset);buffer.writeInt32LE(split.hi32,offset+4);return 8}}Layout$1.NearInt64=NearInt64;class NearInt64BE extends Layout{constructor(property){super(8,property)}decode(b,offset=0){const buffer=uint8ArrayToBuffer(b);const hi32=buffer.readInt32BE(offset);const lo32=buffer.readUInt32BE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset=0){const split=divmodInt64(src);const buffer=uint8ArrayToBuffer(b);buffer.writeInt32BE(split.hi32,offset);buffer.writeUInt32BE(split.lo32,offset+4);return 8}}Layout$1.NearInt64BE=NearInt64BE;class Float extends Layout{constructor(property){super(4,property)}decode(b,offset=0){return uint8ArrayToBuffer(b).readFloatLE(offset)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeFloatLE(src,offset);return 4}}Layout$1.Float=Float;class FloatBE extends Layout{constructor(property){super(4,property)}decode(b,offset=0){return uint8ArrayToBuffer(b).readFloatBE(offset)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeFloatBE(src,offset);return 4}}Layout$1.FloatBE=FloatBE;class Double extends Layout{constructor(property){super(8,property)}decode(b,offset=0){return uint8ArrayToBuffer(b).readDoubleLE(offset)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeDoubleLE(src,offset);return 8}}Layout$1.Double=Double;class DoubleBE extends Layout{constructor(property){super(8,property)}decode(b,offset=0){return uint8ArrayToBuffer(b).readDoubleBE(offset)}encode(src,b,offset=0){uint8ArrayToBuffer(b).writeDoubleBE(src,offset);return 8}}Layout$1.DoubleBE=DoubleBE;class Sequence extends Layout{constructor(elementLayout,count,property){if(!(elementLayout instanceof Layout)){throw new TypeError("elementLayout must be a Layout")}if(!(count instanceof ExternalLayout&&count.isCount()||Number.isInteger(count)&&0<=count)){throw new TypeError("count must be non-negative integer "+"or an unsigned integer ExternalLayout")}let span=-1;if(!(count instanceof ExternalLayout)&&0<elementLayout.span){span=count*elementLayout.span}super(span,property);this.elementLayout=elementLayout;this.count=count}getSpan(b,offset=0){if(0<=this.span){return this.span}let span=0;let count=this.count;if(count instanceof ExternalLayout){count=count.decode(b,offset)}if(0<this.elementLayout.span){span=count*this.elementLayout.span}else{let idx=0;while(idx<count){span+=this.elementLayout.getSpan(b,offset+span);++idx}}return span}decode(b,offset=0){const rv=[];let i=0;let count=this.count;if(count instanceof ExternalLayout){count=count.decode(b,offset)}while(i<count){rv.push(this.elementLayout.decode(b,offset));offset+=this.elementLayout.getSpan(b,offset);i+=1}return rv}encode(src,b,offset=0){const elo=this.elementLayout;const span=src.reduce((span,v)=>span+elo.encode(v,b,offset+span),0);if(this.count instanceof ExternalLayout){this.count.encode(src.length,b,offset)}return span}}Layout$1.Sequence=Sequence;class Structure extends Layout{constructor(fields,property,decodePrefixes){if(!(Array.isArray(fields)&&fields.reduce((acc,v)=>acc&&v instanceof Layout,true))){throw new TypeError("fields must be array of Layout instances")}if("boolean"===typeof property&&undefined===decodePrefixes){decodePrefixes=property;property=undefined}for(const fd of fields){if(0>fd.span&&undefined===fd.property){throw new Error("fields cannot contain unnamed variable-length layout")}}let span=-1;try{span=fields.reduce((span,fd)=>span+fd.getSpan(),0)}catch(e){}super(span,property);this.fields=fields;this.decodePrefixes=!!decodePrefixes}getSpan(b,offset=0){if(0<=this.span){return this.span}let span=0;try{span=this.fields.reduce((span,fd)=>{const fsp=fd.getSpan(b,offset);offset+=fsp;return span+fsp},0)}catch(e){throw new RangeError("indeterminate span")}return span}decode(b,offset=0){checkUint8Array(b);const dest=this.makeDestinationObject();for(const fd of this.fields){if(undefined!==fd.property){dest[fd.property]=fd.decode(b,offset)}offset+=fd.getSpan(b,offset);if(this.decodePrefixes&&b.length===offset){break}}return dest}encode(src,b,offset=0){const firstOffset=offset;let lastOffset=0;let lastWrote=0;for(const fd of this.fields){let span=fd.span;lastWrote=0<span?span:0;if(undefined!==fd.property){const fv=src[fd.property];if(undefined!==fv){lastWrote=fd.encode(fv,b,offset);if(0>span){span=fd.getSpan(b,offset)}}}lastOffset=offset;offset+=span}return lastOffset+lastWrote-firstOffset}fromArray(values){const dest=this.makeDestinationObject();for(const fd of this.fields){if(undefined!==fd.property&&0<values.length){dest[fd.property]=values.shift()}}return dest}layoutFor(property){if("string"!==typeof property){throw new TypeError("property must be string")}for(const fd of this.fields){if(fd.property===property){return fd}}return undefined}offsetOf(property){if("string"!==typeof property){throw new TypeError("property must be string")}let offset=0;for(const fd of this.fields){if(fd.property===property){return offset}if(0>fd.span){offset=-1}else if(0<=offset){offset+=fd.span}}return undefined}}Layout$1.Structure=Structure;class UnionDiscriminator{constructor(property){this.property=property}decode(b,offset){throw new Error("UnionDiscriminator is abstract")}encode(src,b,offset){throw new Error("UnionDiscriminator is abstract")}}Layout$1.UnionDiscriminator=UnionDiscriminator;class UnionLayoutDiscriminator extends UnionDiscriminator{constructor(layout,property){if(!(layout instanceof ExternalLayout&&layout.isCount())){throw new TypeError("layout must be an unsigned integer ExternalLayout")}super(property||layout.property||"variant");this.layout=layout}decode(b,offset){return this.layout.decode(b,offset)}encode(src,b,offset){return this.layout.encode(src,b,offset)}}Layout$1.UnionLayoutDiscriminator=UnionLayoutDiscriminator;class Union extends Layout{constructor(discr,defaultLayout,property){let discriminator;if(discr instanceof UInt||discr instanceof UIntBE){discriminator=new UnionLayoutDiscriminator(new OffsetLayout(discr))}else if(discr instanceof ExternalLayout&&discr.isCount()){discriminator=new UnionLayoutDiscriminator(discr)}else if(!(discr instanceof UnionDiscriminator)){throw new TypeError("discr must be a UnionDiscriminator "+"or an unsigned integer layout")}else{discriminator=discr}if(undefined===defaultLayout){defaultLayout=null}if(!(null===defaultLayout||defaultLayout instanceof Layout)){throw new TypeError("defaultLayout must be null or a Layout")}if(null!==defaultLayout){if(0>defaultLayout.span){throw new Error("defaultLayout must have constant span")}if(undefined===defaultLayout.property){defaultLayout=defaultLayout.replicate("content")}}let span=-1;if(defaultLayout){span=defaultLayout.span;if(0<=span&&(discr instanceof UInt||discr instanceof UIntBE)){span+=discriminator.layout.span}}super(span,property);this.discriminator=discriminator;this.usesPrefixDiscriminator=discr instanceof UInt||discr instanceof UIntBE;this.defaultLayout=defaultLayout;this.registry={};let boundGetSourceVariant=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(src){return boundGetSourceVariant(src)};this.configGetSourceVariant=function(gsv){boundGetSourceVariant=gsv.bind(this)}}getSpan(b,offset=0){if(0<=this.span){return this.span}const vlo=this.getVariant(b,offset);if(!vlo){throw new Error("unable to determine span for unrecognized variant")}return vlo.getSpan(b,offset)}defaultGetSourceVariant(src){if(Object.prototype.hasOwnProperty.call(src,this.discriminator.property)){if(this.defaultLayout&&this.defaultLayout.property&&Object.prototype.hasOwnProperty.call(src,this.defaultLayout.property)){return undefined}const vlo=this.registry[src[this.discriminator.property]];if(vlo&&(!vlo.layout||vlo.property&&Object.prototype.hasOwnProperty.call(src,vlo.property))){return vlo}}else{for(const tag in this.registry){const vlo=this.registry[tag];if(vlo.property&&Object.prototype.hasOwnProperty.call(src,vlo.property)){return vlo}}}throw new Error("unable to infer src variant")}decode(b,offset=0){let dest;const dlo=this.discriminator;const discr=dlo.decode(b,offset);const clo=this.registry[discr];if(undefined===clo){const defaultLayout=this.defaultLayout;let contentOffset=0;if(this.usesPrefixDiscriminator){contentOffset=dlo.layout.span}dest=this.makeDestinationObject();dest[dlo.property]=discr;dest[defaultLayout.property]=defaultLayout.decode(b,offset+contentOffset)}else{dest=clo.decode(b,offset)}return dest}encode(src,b,offset=0){const vlo=this.getSourceVariant(src);if(undefined===vlo){const dlo=this.discriminator;const clo=this.defaultLayout;let contentOffset=0;if(this.usesPrefixDiscriminator){contentOffset=dlo.layout.span}dlo.encode(src[dlo.property],b,offset);return contentOffset+clo.encode(src[clo.property],b,offset+contentOffset)}return vlo.encode(src,b,offset)}addVariant(variant,layout,property){const rv=new VariantLayout(this,variant,layout,property);this.registry[variant]=rv;return rv}getVariant(vb,offset=0){let variant;if(vb instanceof Uint8Array){variant=this.discriminator.decode(vb,offset)}else{variant=vb}return this.registry[variant]}}Layout$1.Union=Union;class VariantLayout extends Layout{constructor(union,variant,layout,property){if(!(union instanceof Union)){throw new TypeError("union must be a Union")}if(!Number.isInteger(variant)||0>variant){throw new TypeError("variant must be a (non-negative) integer")}if("string"===typeof layout&&undefined===property){property=layout;layout=null}if(layout){if(!(layout instanceof Layout)){throw new TypeError("layout must be a Layout")}if(null!==union.defaultLayout&&0<=layout.span&&layout.span>union.defaultLayout.span){throw new Error("variant span exceeds span of containing union")}if("string"!==typeof property){throw new TypeError("variant must have a String property")}}let span=union.span;if(0>union.span){span=layout?layout.span:0;if(0<=span&&union.usesPrefixDiscriminator){span+=union.discriminator.layout.span}}super(span,property);this.union=union;this.variant=variant;this.layout=layout||null}getSpan(b,offset=0){if(0<=this.span){return this.span}let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}let span=0;if(this.layout){span=this.layout.getSpan(b,offset+contentOffset)}return contentOffset+span}decode(b,offset=0){const dest=this.makeDestinationObject();if(this!==this.union.getVariant(b,offset)){throw new Error("variant mismatch")}let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}if(this.layout){dest[this.property]=this.layout.decode(b,offset+contentOffset)}else if(this.property){dest[this.property]=true}else if(this.union.usesPrefixDiscriminator){dest[this.union.discriminator.property]=this.variant}return dest}encode(src,b,offset=0){let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}if(this.layout&&!Object.prototype.hasOwnProperty.call(src,this.property)){throw new TypeError("variant lacks property "+this.property)}this.union.discriminator.encode(this.variant,b,offset);let span=contentOffset;if(this.layout){this.layout.encode(src[this.property],b,offset+contentOffset);span+=this.layout.getSpan(b,offset+contentOffset);if(0<=this.union.span&&span>this.union.span){throw new Error("encoded variant overruns containing union")}}return span}fromArray(values){if(this.layout){return this.layout.fromArray(values)}return undefined}}Layout$1.VariantLayout=VariantLayout;function fixBitwiseResult(v){if(0>v){v+=4294967296}return v}class BitStructure extends Layout{constructor(word,msb,property){if(!(word instanceof UInt||word instanceof UIntBE)){throw new TypeError("word must be a UInt or UIntBE layout")}if("string"===typeof msb&&undefined===property){property=msb;msb=false}if(4<word.span){throw new RangeError("word cannot exceed 32 bits")}super(word.span,property);this.word=word;this.msb=!!msb;this.fields=[];let value=0;this._packedSetValue=function(v){value=fixBitwiseResult(v);return this};this._packedGetValue=function(){return value}}decode(b,offset=0){const dest=this.makeDestinationObject();const value=this.word.decode(b,offset);this._packedSetValue(value);for(const fd of this.fields){if(undefined!==fd.property){dest[fd.property]=fd.decode(b)}}return dest}encode(src,b,offset=0){const value=this.word.decode(b,offset);this._packedSetValue(value);for(const fd of this.fields){if(undefined!==fd.property){const fv=src[fd.property];if(undefined!==fv){fd.encode(fv)}}}return this.word.encode(this._packedGetValue(),b,offset)}addField(bits,property){const bf=new BitField(this,bits,property);this.fields.push(bf);return bf}addBoolean(property){const bf=new Boolean(this,property);this.fields.push(bf);return bf}fieldFor(property){if("string"!==typeof property){throw new TypeError("property must be string")}for(const fd of this.fields){if(fd.property===property){return fd}}return undefined}}Layout$1.BitStructure=BitStructure;class BitField{constructor(container,bits,property){if(!(container instanceof BitStructure)){throw new TypeError("container must be a BitStructure")}if(!Number.isInteger(bits)||0>=bits){throw new TypeError("bits must be positive integer")}const totalBits=8*container.span;const usedBits=container.fields.reduce((sum,fd)=>sum+fd.bits,0);if(bits+usedBits>totalBits){throw new Error("bits too long for span remainder ("+(totalBits-usedBits)+" of "+totalBits+" remain)")}this.container=container;this.bits=bits;this.valueMask=(1<<bits)-1;if(32===bits){this.valueMask=4294967295}this.start=usedBits;if(this.container.msb){this.start=totalBits-usedBits-bits}this.wordMask=fixBitwiseResult(this.valueMask<<this.start);this.property=property}decode(b,offset){const word=this.container._packedGetValue();const wordValue=fixBitwiseResult(word&this.wordMask);const value=wordValue>>>this.start;return value}encode(value){if("number"!==typeof value||!Number.isInteger(value)||value!==fixBitwiseResult(value&this.valueMask)){throw new TypeError(nameWithProperty("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask)}const word=this.container._packedGetValue();const wordValue=fixBitwiseResult(value<<this.start);this.container._packedSetValue(fixBitwiseResult(word&~this.wordMask)|wordValue)}}Layout$1.BitField=BitField;class Boolean extends BitField{constructor(container,property){super(container,1,property)}decode(b,offset){return!!super.decode(b,offset)}encode(value){if("boolean"===typeof value){value=+value}super.encode(value)}}Layout$1.Boolean=Boolean;class Blob extends Layout{constructor(length,property){if(!(length instanceof ExternalLayout&&length.isCount()||Number.isInteger(length)&&0<=length)){throw new TypeError("length must be positive integer "+"or an unsigned integer ExternalLayout")}let span=-1;if(!(length instanceof ExternalLayout)){span=length}super(span,property);this.length=length}getSpan(b,offset){let span=this.span;if(0>span){span=this.length.decode(b,offset)}return span}decode(b,offset=0){let span=this.span;if(0>span){span=this.length.decode(b,offset)}return uint8ArrayToBuffer(b).slice(offset,offset+span)}encode(src,b,offset){let span=this.length;if(this.length instanceof ExternalLayout){span=src.length}if(!(src instanceof Uint8Array&&span===src.length)){throw new TypeError(nameWithProperty("Blob.encode",this)+" requires (length "+span+") Uint8Array as src")}if(offset+span>b.length){throw new RangeError("encoding overruns Uint8Array")}const srcBuffer=uint8ArrayToBuffer(src);uint8ArrayToBuffer(b).write(srcBuffer.toString("hex"),offset,span,"hex");if(this.length instanceof ExternalLayout){this.length.encode(span,b,offset)}return span}}Layout$1.Blob=Blob;class CString extends Layout{constructor(property){super(-1,property)}getSpan(b,offset=0){checkUint8Array(b);let idx=offset;while(idx<b.length&&0!==b[idx]){idx+=1}return 1+idx-offset}decode(b,offset=0){const span=this.getSpan(b,offset);return uint8ArrayToBuffer(b).slice(offset,offset+span-1).toString("utf-8")}encode(src,b,offset=0){if("string"!==typeof src){src=String(src)}const srcb=buffer_1.Buffer.from(src,"utf8");const span=srcb.length;if(offset+span>b.length){throw new RangeError("encoding overruns Buffer")}const buffer=uint8ArrayToBuffer(b);srcb.copy(buffer,offset);buffer[offset+span]=0;return span+1}}Layout$1.CString=CString;class UTF8 extends Layout{constructor(maxSpan,property){if("string"===typeof maxSpan&&undefined===property){property=maxSpan;maxSpan=undefined}if(undefined===maxSpan){maxSpan=-1}else if(!Number.isInteger(maxSpan)){throw new TypeError("maxSpan must be an integer")}super(-1,property);this.maxSpan=maxSpan}getSpan(b,offset=0){checkUint8Array(b);return b.length-offset}decode(b,offset=0){const span=this.getSpan(b,offset);if(0<=this.maxSpan&&this.maxSpan<span){throw new RangeError("text length exceeds maxSpan")}return uint8ArrayToBuffer(b).slice(offset,offset+span).toString("utf-8")}encode(src,b,offset=0){if("string"!==typeof src){src=String(src)}const srcb=buffer_1.Buffer.from(src,"utf8");const span=srcb.length;if(0<=this.maxSpan&&this.maxSpan<span){throw new RangeError("text length exceeds maxSpan")}if(offset+span>b.length){throw new RangeError("encoding overruns Buffer")}srcb.copy(uint8ArrayToBuffer(b),offset);return span}}Layout$1.UTF8=UTF8;class Constant extends Layout{constructor(value,property){super(0,property);this.value=value}decode(b,offset){return this.value}encode(src,b,offset){return 0}}Layout$1.Constant=Constant;Layout$1.greedy=(elementSpan,property)=>new GreedyCount(elementSpan,property);Layout$1.offset=(layout,offset,property)=>new OffsetLayout(layout,offset,property);Layout$1.u8=property=>new UInt(1,property);Layout$1.u16=property=>new UInt(2,property);Layout$1.u24=property=>new UInt(3,property);Layout$1.u32=property=>new UInt(4,property);Layout$1.u40=property=>new UInt(5,property);Layout$1.u48=property=>new UInt(6,property);Layout$1.nu64=property=>new NearUInt64(property);Layout$1.u16be=property=>new UIntBE(2,property);Layout$1.u24be=property=>new UIntBE(3,property);Layout$1.u32be=property=>new UIntBE(4,property);Layout$1.u40be=property=>new UIntBE(5,property);Layout$1.u48be=property=>new UIntBE(6,property);Layout$1.nu64be=property=>new NearUInt64BE(property);Layout$1.s8=property=>new Int(1,property);Layout$1.s16=property=>new Int(2,property);Layout$1.s24=property=>new Int(3,property);Layout$1.s32=property=>new Int(4,property);Layout$1.s40=property=>new Int(5,property);Layout$1.s48=property=>new Int(6,property);Layout$1.ns64=property=>new NearInt64(property);Layout$1.s16be=property=>new IntBE(2,property);Layout$1.s24be=property=>new IntBE(3,property);Layout$1.s32be=property=>new IntBE(4,property);Layout$1.s40be=property=>new IntBE(5,property);Layout$1.s48be=property=>new IntBE(6,property);Layout$1.ns64be=property=>new NearInt64BE(property);Layout$1.f32=property=>new Float(property);Layout$1.f32be=property=>new FloatBE(property);Layout$1.f64=property=>new Double(property);Layout$1.f64be=property=>new DoubleBE(property);Layout$1.struct=(fields,property,decodePrefixes)=>new Structure(fields,property,decodePrefixes);Layout$1.bits=(word,msb,property)=>new BitStructure(word,msb,property);Layout$1.seq=(elementLayout,count,property)=>new Sequence(elementLayout,count,property);Layout$1.union=(discr,defaultLayout,property)=>new Union(discr,defaultLayout,property);Layout$1.unionLayoutDiscriminator=(layout,property)=>new UnionLayoutDiscriminator(layout,property);Layout$1.blob=(length,property)=>new Blob(length,property);Layout$1.cstr=property=>new CString(property);Layout$1.utf8=(maxSpan,property)=>new UTF8(maxSpan,property);Layout$1.constant=(value,property)=>new Constant(value,property);return Layout$1}var LayoutExports$1=requireLayout$1();var SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED=1;var SOLANA_ERROR__INVALID_NONCE=2;var SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND=3;var SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE=4;var SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH=5;var SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE=6;var SOLANA_ERROR__MALFORMED_BIGINT_STRING=7;var SOLANA_ERROR__MALFORMED_NUMBER_STRING=8;var SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE=9;var SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR=10;var SOLANA_ERROR__JSON_RPC__PARSE_ERROR=-32700;var SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR=-32603;var SOLANA_ERROR__JSON_RPC__INVALID_PARAMS=-32602;var SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND=-32601;var SOLANA_ERROR__JSON_RPC__INVALID_REQUEST=-32600;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED=-32016;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION=-32015;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET=-32014;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH=-32013;var SOLANA_ERROR__JSON_RPC__SCAN_ERROR=-32012;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE=-32011;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX=-32010;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED=-32009;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT=-32008;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED=-32007;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE=-32006;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY=-32005;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE=-32004;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE=-32003;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE=-32002;var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP=-32001;var SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH=28e5;var SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE=2800001;var SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS=2800002;var SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY=2800003;var SOLANA_ERROR__ADDRESSES__MALFORMED_PDA=2800004;var SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE=2800005;var SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED=2800006;var SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED=2800007;var SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE=2800008;var SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED=2800009;var SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER=2800010;var SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS=2800011;var SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND=323e4;var SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND=32300001;var SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT=3230002;var SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT=3230003;var SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED=3230004;var SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT=361e4;var SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED=3610001;var SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED=3610002;var SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED=3610003;var SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED=3610004;var SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED=3610005;var SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED=3610006;var SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY=3610007;var SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED=3611e3;var SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH=3704e3;var SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH=3704001;var SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH=3704002;var SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE=3704003;var SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY=3704004;var SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS=4128e3;var SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA=4128001;var SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH=4128002;var SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN=4615e3;var SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR=4615001;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT=4615002;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA=4615003;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA=4615004;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL=4615005;var SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS=4615006;var SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID=4615007;var SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE=4615008;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED=4615009;var SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT=4615010;var SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION=4615011;var SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID=4615012;var SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND=4615013;var SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED=4615014;var SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE=4615015;var SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED=4615016;var SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX=4615017;var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED=4615018;var SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED=4615019;var SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS=4615020;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED=4615021;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE=4615022;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED=4615023;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING=4615024;var SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC=4615025;var SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM=4615026;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR=4615027;var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED=4615028;var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE=4615029;var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT=4615030;var SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID=4615031;var SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH=4615032;var SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT=4615033;var SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED=4615034;var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED=4615035;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS=4615036;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC=4615037;var SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED=4615038;var SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION=4615039;var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE=4615040;var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE=4615041;var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE=4615042;var SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE=4615043;var SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY=4615044;var SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR=4615045;var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT=4615046;var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER=4615047;var SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW=4615048;var SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR=4615049;var SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER=4615050;var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED=4615051;var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED=4615052;var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED=4615053;var SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS=4615054;var SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS=5508e3;var SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER=5508001;var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER=5508002;var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER=5508003;var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER=5508004;var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER=5508005;var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER=5508006;var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER=5508007;var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER=5508008;var SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS=5508009;var SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING=5508010;var SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED=5508011;var SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES=5663e3;var SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE=5663001;var SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME=5663002;var SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME=5663003;var SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE=5663004;var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING=5663005;var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE=5663006;var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND=5663007;var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING=5663008;var SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING=5663009;var SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING=5663010;var SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING=5663011;var SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING=5663012;var SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING=5663013;var SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE=5663014;var SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION=5663015;var SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES=5663016;var SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH=5663017;var SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT=5663018;var SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT=5663019;var SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT=5663020;var SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN=705e4;var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE=7050001;var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE=7050002;var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND=7050003;var SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND=7050004;var SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE=7050005;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE=7050006;var SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED=7050007;var SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND=7050008;var SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP=7050009;var SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE=7050010;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX=7050011;var SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE=7050012;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION=7050013;var SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE=7050014;var SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE=7050015;var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING=7050016;var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT=7050017;var SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION=7050018;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT=7050019;var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT=7050020;var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT=7050021;var SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS=7050022;var SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND=7050023;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER=7050024;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA=7050025;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX=7050026;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT=7050027;var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT=7050028;var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT=7050029;var SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION=7050030;var SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT=7050031;var SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED=7050032;var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT=7050033;var SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED=7050034;var SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED=7050035;var SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION=7050036;var SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY=8078e3;var SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH=8078001;var SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH=8078002;var SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH=8078003;var SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH=8078004;var SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH=8078005;var SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH=8078006;var SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS=8078007;var SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE=8078008;var SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT=8078009;var SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT=8078010;var SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE=8078011;var SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE=8078012;var SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH=8078013;var SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE=8078014;var SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT=8078015;var SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE=8078016;var SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE=8078017;var SOLANA_ERROR__CODECS__INVALID_CONSTANT=8078018;var SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE=8078019;var SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL=8078020;var SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES=8078021;var SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS=8078022;var SOLANA_ERROR__RPC__INTEGER_OVERFLOW=81e5;var SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN=8100001;var SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR=8100002;var SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD=8100003;var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN=819e4;var SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID=8190001;var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED=8190002;var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED=8190003;var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT=8190004;var SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING=99e5;var SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE=9900001;var SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING=9900002;var SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE=9900003;var SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED=9900004;function encodeValue(value){if(Array.isArray(value)){const commaSeparatedValues=value.map(encodeValue).join("%2C%20");return"%5B"+commaSeparatedValues+"%5D"}else if(typeof value==="bigint"){return`${value}n`}else{return encodeURIComponent(String(value!=null&&Object.getPrototypeOf(value)===null?{...value}:value))}}function encodeObjectContextEntry([key,value]){return`${key}=${encodeValue(value)}`}function encodeContextObject(context){const searchParamsString=Object.entries(context).map(encodeObjectContextEntry).join("&");return btoa(searchParamsString)}var SolanaErrorMessages={[SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]:"Account not found at address: $address",[SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]:"Not all accounts were decoded. Encoded accounts found at addresses: $addresses.",[SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]:"Expected decoded account at address: $address",[SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]:"Failed to decode account data at address: $address",[SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]:"Accounts not found at addresses: $addresses",[SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]:"Unable to find a viable program address bump seed.",[SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]:"$putativeAddress is not a base58-encoded address.",[SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]:"Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.",[SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]:"The `CryptoKey` must be an `Ed25519` public key.",[SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS]:"$putativeOffCurveAddress is not a base58-encoded off-curve address.",[SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]:"Invalid seeds; point must fall off the Ed25519 curve.",[SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]:"Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].",[SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]:"A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.",[SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]:"The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.",[SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]:"Expected program derived address bump to be in the range [0, 255], got: $bump.",[SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]:"Program address cannot end with PDA marker.",[SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]:"Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.",[SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]:"Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.",[SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]:"The network has progressed past the last block for which this transaction could have been committed.",[SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]:"Codec [$codecDescription] cannot decode empty byte arrays.",[SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]:"Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.",[SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]:"Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].",[SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]:"Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].",[SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]:"Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].",[SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]:"Encoder and decoder must either both be fixed-size or variable-size.",[SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]:"Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.",[SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]:"Expected a fixed-size codec, got a variable-size one.",[SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]:"Codec [$codecDescription] expected a positive byte length, got $bytesLength.",[SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]:"Expected a variable-size codec, got a fixed-size one.",[SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]:"Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].",[SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]:"Codec [$codecDescription] expected $expected bytes, got $bytesLength.",[SOLANA_ERROR__CODECS__INVALID_CONSTANT]:"Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].",[SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]:"Invalid discriminated union variant. Expected one of [$variants], got $value.",[SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]:"Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.",[SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]:"Invalid literal union variant. Expected one of [$variants], got $value.",[SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]:"Expected [$codecDescription] to have $expected items, got $actual.",[SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]:"Invalid value $value for base $base with alphabet $alphabet.",[SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]:"Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.",[SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]:"Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.",[SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]:"Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.",[SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]:"Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].",[SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]:"Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.",[SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]:"No random values implementation could be found.",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]:"instruction requires an uninitialized account",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]:"instruction tries to borrow reference for an account which is already borrowed",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:"instruction left account with an outstanding borrowed reference",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]:"program other than the account's owner changed the size of the account data",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]:"account data too small for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]:"instruction expected an executable account",[SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]:"An account does not have enough lamports to be rent-exempt",[SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]:"Program arithmetic overflowed",[SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]:"Failed to serialize or deserialize account data: $encodedData",[SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]:"Builtin programs must consume compute units",[SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]:"Cross-program invocation call depth too deep",[SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]:"Computational budget exceeded",[SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]:"custom program error: #$code",[SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]:"instruction contains duplicate accounts",[SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]:"instruction modifications of multiply-passed account differ",[SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]:"executable accounts must be rent exempt",[SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]:"instruction changed executable accounts data",[SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]:"instruction changed the balance of an executable account",[SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]:"instruction changed executable bit of an account",[SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]:"instruction modified data of an account it does not own",[SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]:"instruction spent from the balance of an account it does not own",[SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]:"generic instruction error",[SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]:"Provided owner is not allowed",[SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]:"Account is immutable",[SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]:"Incorrect authority provided",[SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]:"incorrect program id for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]:"insufficient funds for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]:"invalid account data for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]:"Invalid account owner",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]:"invalid program argument",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]:"program returned invalid error code",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]:"invalid instruction data",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]:"Failed to reallocate account data",[SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]:"Provided seeds do not result in a valid address",[SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]:"Accounts data allocations exceeded the maximum allowed per transaction",[SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]:"Max accounts exceeded",[SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]:"Max instruction trace length exceeded",[SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]:"Length of the seed is too long for address generation",[SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]:"An account required by the instruction is missing",[SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]:"missing required signature for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]:"instruction illegally modified the program id of an account",[SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]:"insufficient account keys for instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]:"Cross-program invocation with unauthorized signer or writable account",[SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]:"Failed to create program execution environment",[SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]:"Program failed to compile",[SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]:"Program failed to complete",[SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]:"instruction modified data of a read-only account",[SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]:"instruction changed the balance of a read-only account",[SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]:"Cross-program invocation reentrancy not allowed for this instruction",[SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]:"instruction modified rent epoch of an account",[SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]:"sum of account balances before and after instruction do not match",[SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]:"instruction requires an initialized account",[SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]:"",[SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]:"Unsupported program id",[SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]:"Unsupported sysvar",[SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]:"The instruction does not have any accounts.",[SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]:"The instruction does not have any data.",[SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]:"Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.",[SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]:"Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.",[SOLANA_ERROR__INVALID_NONCE]:"The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`",[SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]:"Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant",[SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]:"Invariant violation: This data publisher does not publish to the channel named `$channelName`. Supported channels include $supportedChannelNames.",[SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]:"Invariant violation: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant",[SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]:"Invariant violation: WebSocket message iterator is missing state storage. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant",[SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]:"Invariant violation: Switch statement non-exhaustive. Received unexpected value `$unexpectedValue`. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant",[SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]:"JSON-RPC error: Internal JSON-RPC error ($__serverMessage)",[SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]:"JSON-RPC error: Invalid method parameter(s) ($__serverMessage)",[SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]:"JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)",[SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]:"JSON-RPC error: The method does not exist / is not available ($__serverMessage)",[SOLANA_ERROR__JSON_RPC__PARSE_ERROR]:"JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)",[SOLANA_ERROR__JSON_RPC__SCAN_ERROR]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]:"Minimum context slot has not been reached",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]:"Node is unhealthy; behind by $numSlotsBehind slots",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]:"No snapshot",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]:"Transaction simulation failed",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]:"Transaction history is not available from this node",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]:"$__serverMessage",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]:"Transaction signature length mismatch",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]:"Transaction signature verification failure",[SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]:"$__serverMessage",[SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]:"Key pair bytes must be of length 64, got $byteLength.",[SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]:"Expected private key bytes with length 32. Actual length: $actualLength.",[SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]:"Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.",[SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]:"The provided private key does not match the provided public key.",[SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]:"Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.",[SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]:"Lamports value must be in the range [0, 2e64-1]",[SOLANA_ERROR__MALFORMED_BIGINT_STRING]:"`$value` cannot be parsed as a `BigInt`",[SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]:"$message",[SOLANA_ERROR__MALFORMED_NUMBER_STRING]:"`$value` cannot be parsed as a `Number`",[SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]:"No nonce account could be found at address `$nonceAccountAddress`",[SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]:"The notification name must end in 'Notifications' and the API must supply a subscription plan creator function for the notification '$notificationName'.",[SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]:"WebSocket was closed before payload could be added to the send buffer",[SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]:"WebSocket connection closed",[SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]:"WebSocket failed to connect",[SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]:"Failed to obtain a subscription id from the server",[SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]:"Could not find an API plan for RPC method: `$method`",[SOLANA_ERROR__RPC__INTEGER_OVERFLOW]:"The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was `$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds `Number.MAX_SAFE_INTEGER`.",[SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]:"HTTP error ($statusCode): $message",[SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]:"HTTP header(s) forbidden: $headers. Learn more at https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.",[SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]:"Multiple distinct signers were identified for address `$address`. Please ensure that you are using the same signer instance for each address.",[SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]:"The provided value does not implement the `KeyPairSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]:"The provided value does not implement the `MessageModifyingSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]:"The provided value does not implement the `MessagePartialSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]:"The provided value does not implement any of the `MessageSigner` interfaces",[SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]:"The provided value does not implement the `TransactionModifyingSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]:"The provided value does not implement the `TransactionPartialSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]:"The provided value does not implement the `TransactionSendingSigner` interface",[SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]:"The provided value does not implement any of the `TransactionSigner` interfaces",[SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]:"More than one `TransactionSendingSigner` was identified.",[SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]:"No `TransactionSendingSigner` was identified. Please provide a valid `TransactionWithSingleSendingSigner` transaction.",[SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]:"Wallet account signers do not support signing multiple messages/transactions in a single operation",[SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]:"Cannot export a non-extractable key.",[SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]:"No digest implementation could be found.",[SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]:"Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.",[SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]:"This runtime does not support the generation of Ed25519 key pairs.\n\nInstall @solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in environments that do not support Ed25519.\n\nFor a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20.",[SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]:"No signature verification implementation could be found.",[SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]:"No key generation implementation could be found.",[SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]:"No signing implementation could be found.",[SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]:"No key export implementation could be found.",[SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]:"Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given",[SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:"Transaction processing left an account with an outstanding borrowed reference",[SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]:"Account in use",[SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]:"Account loaded twice",[SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]:"Attempt to debit an account but found no record of a prior credit.",[SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]:"Transaction loads an address table account that doesn't exist",[SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]:"This transaction has already been processed",[SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]:"Blockhash not found",[SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]:"Loader call chain is too deep",[SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]:"Transactions are currently disabled due to cluster maintenance",[SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]:"Transaction contains a duplicate instruction ($index) that is not allowed",[SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]:"Insufficient funds for fee",[SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]:"Transaction results in an account ($accountIndex) with insufficient funds for rent",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]:"This account may not be used to pay transaction fees",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]:"Transaction contains an invalid account reference",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]:"Transaction loads an address table account with invalid data",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]:"Transaction address table lookup uses an invalid index",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]:"Transaction loads an address table account with an invalid owner",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]:"LoadedAccountsDataSizeLimit set for transaction must be greater than 0.",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]:"This program may not be used for executing instructions",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]:"Transaction leaves an account with a lower balance than rent-exempt minimum",[SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]:"Transaction loads a writable account that cannot be written",[SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]:"Transaction exceeded max loaded accounts data size cap",[SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]:"Transaction requires a fee but has no signature present",[SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]:"Attempt to load a program that does not exist",[SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]:"Execution of the program referenced by account at index $accountIndex is temporarily restricted.",[SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]:"ResanitizationNeeded",[SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]:"Transaction failed to sanitize accounts offsets correctly",[SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]:"Transaction did not pass signature verification",[SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]:"Transaction locked too many accounts",[SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]:"Sum of account balances before and after transaction do not match",[SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]:"The transaction failed with the error `$errorName`",[SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]:"Transaction version is unsupported",[SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]:"Transaction would exceed account data limit within the block",[SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]:"Transaction would exceed total account data limit",[SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]:"Transaction would exceed max account limit within the block",[SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]:"Transaction would exceed max Block Cost Limit",[SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]:"Transaction would exceed max Vote Cost Limit",[SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]:"Attempted to sign a transaction with an address that is not a signer for it",[SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]:"Transaction is missing an address at index: $index.",[SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]:"Transaction has no expected signers therefore it cannot be encoded",[SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]:"Transaction size $transactionSize exceeds limit of $transactionSizeLimit bytes",[SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]:"Transaction does not have a blockhash lifetime",[SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]:"Transaction is not a durable nonce transaction",[SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]:"Contents of these address lookup tables unknown: $lookupTableAddresses",[SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]:"Lookup of address at index $highestRequestedIndex failed for lookup table `$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table may have been extended since its contents were retrieved",[SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]:"No fee payer set in CompiledTransaction",[SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]:"Could not find program address at index $index",[SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]:"Failed to estimate the compute unit consumption for this transaction message. This is likely because simulating the transaction failed. Inspect the `cause` property of this error to learn more",[SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]:"Transaction failed when it was simulated in order to estimate the compute unit consumption. The compute unit estimate provided is for a transaction that failed when simulated and may not be representative of the compute units this transaction would consume if successful. Inspect the `cause` property of this error to learn more",[SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]:"Transaction is missing a fee payer.",[SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]:"Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer.",[SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]:"Transaction first instruction is not advance nonce account instruction.",[SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]:"Transaction with no instructions cannot be durable nonce transaction.",[SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]:"This transaction includes an address (`$programAddress`) which is both invoked and set as the fee payer. Program addresses may not pay fees",[SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]:"This transaction includes an address (`$programAddress`) which is both invoked and marked writable. Program addresses may not be writable",[SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]:"The transaction message expected the transaction to have $signerAddressesLength signatures, got $signaturesLength.",[SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]:"Transaction is missing signatures for addresses: $addresses.",[SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]:"Transaction version must be in the range [0, 127]. `$actualVersion` given"};var START_INDEX="i";var TYPE="t";function getHumanReadableErrorMessage(code,context={}){const messageFormatString=SolanaErrorMessages[code];if(messageFormatString.length===0){return""}let state;function commitStateUpTo(endIndex){if(state[TYPE]===2){const variableName=messageFormatString.slice(state[START_INDEX]+1,endIndex);fragments.push(variableName in context?`${context[variableName]}`:`$${variableName}`)}else if(state[TYPE]===1){fragments.push(messageFormatString.slice(state[START_INDEX],endIndex))}}const fragments=[];messageFormatString.split("").forEach((char,ii)=>{if(ii===0){state={[START_INDEX]:0,[TYPE]:messageFormatString[0]==="\\"?0:messageFormatString[0]==="$"?2:1};return}let nextState;switch(state[TYPE]){case 0:nextState={[START_INDEX]:ii,[TYPE]:1};break;case 1:if(char==="\\"){nextState={[START_INDEX]:ii,[TYPE]:0}}else if(char==="$"){nextState={[START_INDEX]:ii,[TYPE]:2}}break;case 2:if(char==="\\"){nextState={[START_INDEX]:ii,[TYPE]:0}}else if(char==="$"){nextState={[START_INDEX]:ii,[TYPE]:2}}else if(!char.match(/\w/)){nextState={[START_INDEX]:ii,[TYPE]:1}}break}if(nextState){if(state!==nextState){commitStateUpTo(ii)}state=nextState}});commitStateUpTo();return fragments.join("")}function getErrorMessage(code,context={}){if(process.env.NODE_ENV!=="production"){return getHumanReadableErrorMessage(code,context)}else{let decodingAdviceMessage=`Solana error #${code}; Decode this error by running \`npx @solana/errors decode -- ${code}`;if(Object.keys(context).length){decodingAdviceMessage+=` '${encodeContextObject(context)}'`}return`${decodingAdviceMessage}\``}}var SolanaError=class extends Error{cause=this.cause;context;constructor(...[code,contextAndErrorOptions]){let context;let errorOptions;if(contextAndErrorOptions){const{cause:cause,...contextRest}=contextAndErrorOptions;if(cause){errorOptions={cause:cause}}if(Object.keys(contextRest).length>0){context=contextRest}}const message=getErrorMessage(code,context);super(message,errorOptions);this.context={__code:code,...context};this.name="SolanaError"}};function getEncodedSize(value,encoder){return"fixedSize"in encoder?encoder.fixedSize:encoder.getSizeFromValue(value)}function createEncoder(encoder){return Object.freeze({...encoder,encode:value=>{const bytes=new Uint8Array(getEncodedSize(value,encoder));encoder.write(value,bytes,0);return bytes}})}function createDecoder(decoder){return Object.freeze({...decoder,decode:(bytes,offset=0)=>decoder.read(bytes,offset)[0]})}function isFixedSize(codec){return"fixedSize"in codec&&typeof codec.fixedSize==="number"}function combineCodec(encoder,decoder){if(isFixedSize(encoder)!==isFixedSize(decoder)){throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH)}if(isFixedSize(encoder)&&isFixedSize(decoder)&&encoder.fixedSize!==decoder.fixedSize){throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,{decoderFixedSize:decoder.fixedSize,encoderFixedSize:encoder.fixedSize})}if(!isFixedSize(encoder)&&!isFixedSize(decoder)&&encoder.maxSize!==decoder.maxSize){throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,{decoderMaxSize:decoder.maxSize,encoderMaxSize:encoder.maxSize})}return{...decoder,...encoder,decode:decoder.decode,encode:encoder.encode,read:decoder.read,write:encoder.write}}function assertByteArrayIsNotEmptyForCodec(codecDescription,bytes,offset=0){if(bytes.length-offset<=0){throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,{codecDescription:codecDescription})}}function assertByteArrayHasEnoughBytesForCodec(codecDescription,expected,bytes,offset=0){const bytesLength=bytes.length-offset;if(bytesLength<expected){throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,{bytesLength:bytesLength,codecDescription:codecDescription,expected:expected})}}function assertNumberIsBetweenForCodec(codecDescription,min,max,value){if(value<min||value>max){throw new SolanaError(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE,{codecDescription:codecDescription,max:max,min:min,value:value})}}function isLittleEndian(config){return config?.endian===1?false:true}function numberEncoderFactory(input){return createEncoder({fixedSize:input.size,write(value,bytes,offset){if(input.range){assertNumberIsBetweenForCodec(input.name,input.range[0],input.range[1],value)}const arrayBuffer=new ArrayBuffer(input.size);input.set(new DataView(arrayBuffer),value,isLittleEndian(input.config));bytes.set(new Uint8Array(arrayBuffer),offset);return offset+input.size}})}function numberDecoderFactory(input){return createDecoder({fixedSize:input.size,read(bytes,offset=0){assertByteArrayIsNotEmptyForCodec(input.name,bytes,offset);assertByteArrayHasEnoughBytesForCodec(input.name,input.size,bytes,offset);const view=new DataView(toArrayBuffer(bytes,offset,input.size));return[input.get(view,isLittleEndian(input.config)),offset+input.size]}})}function toArrayBuffer(bytes,offset,length){const bytesOffset=bytes.byteOffset+(offset??0);const bytesLength=length??bytes.byteLength;return bytes.buffer.slice(bytesOffset,bytesOffset+bytesLength)}var getU64Encoder=(config={})=>numberEncoderFactory({config:config,name:"u64",range:[0n,BigInt("0xffffffffffffffff")],set:(view,value,le)=>view.setBigUint64(0,BigInt(value),le),size:8});var getU64Decoder=(config={})=>numberDecoderFactory({config:config,get:(view,le)=>view.getBigUint64(0,le),name:"u64",size:8});var getU64Codec=(config={})=>combineCodec(getU64Encoder(config),getU64Decoder(config));class StructError extends TypeError{constructor(failure,failures){let cached;const{message:message,explanation:explanation,...rest}=failure;const{path:path}=failure;const msg=path.length===0?message:`At path: ${path.join(".")} -- ${message}`;super(explanation??msg);if(explanation!=null)this.cause=msg;Object.assign(this,rest);this.name=this.constructor.name;this.failures=()=>cached??(cached=[failure,...failures()])}}function isIterable(x){return isObject(x)&&typeof x[Symbol.iterator]==="function"}function isObject(x){return typeof x==="object"&&x!=null}function isNonArrayObject(x){return isObject(x)&&!Array.isArray(x)}function print(value){if(typeof value==="symbol"){return value.toString()}return typeof value==="string"?JSON.stringify(value):`${value}`}function shiftIterator(input){const{done:done,value:value}=input.next();return done?undefined:value}function toFailure(result,context,struct,value){if(result===true){return}else if(result===false){result={}}else if(typeof result==="string"){result={message:result}}const{path:path,branch:branch}=context;const{type:type}=struct;const{refinement:refinement,message:message=`Expected a value of type \`${type}\`${refinement?` with refinement \`${refinement}\``:""}, but received: \`${print(value)}\``}=result;return{value:value,type:type,refinement:refinement,key:path[path.length-1],path:path,branch:branch,...result,message:message}}function*toFailures(result,context,struct,value){if(!isIterable(result)){result=[result]}for(const r of result){const failure=toFailure(r,context,struct,value);if(failure){yield failure}}}function*run(value,struct,options={}){const{path:path=[],branch:branch=[value],coerce:coerce=false,mask:mask=false}=options;const ctx={path:path,branch:branch,mask:mask};if(coerce){value=struct.coercer(value,ctx)}let status="valid";for(const failure of struct.validator(value,ctx)){failure.explanation=options.message;status="not_valid";yield[failure,undefined]}for(let[k,v,s]of struct.entries(value,ctx)){const ts=run(v,s,{path:k===undefined?path:[...path,k],branch:k===undefined?branch:[...branch,v],coerce:coerce,mask:mask,message:options.message});for(const t of ts){if(t[0]){status=t[0].refinement!=null?"not_refined":"not_valid";yield[t[0],undefined]}else if(coerce){v=t[1];if(k===undefined){value=v}else if(value instanceof Map){value.set(k,v)}else if(value instanceof Set){value.add(v)}else if(isObject(value)){if(v!==undefined||k in value)value[k]=v}}}}if(status!=="not_valid"){for(const failure of struct.refiner(value,ctx)){failure.explanation=options.message;status="not_refined";yield[failure,undefined]}}if(status==="valid"){yield[undefined,value]}}let Struct$1=class Struct{constructor(props){const{type:type,schema:schema,validator:validator,refiner:refiner,coercer:coercer=value=>value,entries:entries=function*(){}}=props;this.type=type;this.schema=schema;this.entries=entries;this.coercer=coercer;if(validator){this.validator=(value,context)=>{const result=validator(value,context);return toFailures(result,context,this,value)}}else{this.validator=()=>[]}if(refiner){this.refiner=(value,context)=>{const result=refiner(value,context);return toFailures(result,context,this,value)}}else{this.refiner=()=>[]}}assert(value,message){return assert$1(value,this,message)}create(value,message){return create(value,this,message)}is(value){return is(value,this)}mask(value,message){return mask(value,this,message)}validate(value,options={}){return validate(value,this,options)}};function assert$1(value,struct,message){const result=validate(value,struct,{message:message});if(result[0]){throw result[0]}}function create(value,struct,message){const result=validate(value,struct,{coerce:true,message:message});if(result[0]){throw result[0]}else{return result[1]}}function mask(value,struct,message){const result=validate(value,struct,{coerce:true,mask:true,message:message});if(result[0]){throw result[0]}else{return result[1]}}function is(value,struct){const result=validate(value,struct);return!result[0]}function validate(value,struct,options={}){const tuples=run(value,struct,options);const tuple=shiftIterator(tuples);if(tuple[0]){const error=new StructError(tuple[0],function*(){for(const t of tuples){if(t[0]){yield t[0]}}});return[error,undefined]}else{const v=tuple[1];return[undefined,v]}}function define(name,validator){return new Struct$1({type:name,schema:null,validator:validator})}function any(){return define("any",()=>true)}function array(Element){return new Struct$1({type:"array",schema:Element,*entries(value){if(Element&&Array.isArray(value)){for(const[i,v]of value.entries()){yield[i,v,Element]}}},coercer(value){return Array.isArray(value)?value.slice():value},validator(value){return Array.isArray(value)||`Expected an array value, but received: ${print(value)}`}})}function boolean(){return define("boolean",value=>typeof value==="boolean")}function enums(values){const schema={};const description=values.map(v=>print(v)).join();for(const key of values){schema[key]=key}return new Struct$1({type:"enums",schema:schema,validator(value){return values.includes(value)||`Expected one of \`${description}\`, but received: ${print(value)}`}})}function instance(Class){return define("instance",value=>value instanceof Class||`Expected a \`${Class.name}\` instance, but received: ${print(value)}`)}function literal(constant){const description=print(constant);const t=typeof constant;return new Struct$1({type:"literal",schema:t==="string"||t==="number"||t==="boolean"?constant:null,validator(value){return value===constant||`Expected the literal \`${description}\`, but received: ${print(value)}`}})}function never(){return define("never",()=>false)}function nullable(struct){return new Struct$1({...struct,validator:(value,ctx)=>value===null||struct.validator(value,ctx),refiner:(value,ctx)=>value===null||struct.refiner(value,ctx)})}function number(){return define("number",value=>typeof value==="number"&&!isNaN(value)||`Expected a number, but received: ${print(value)}`)}function optional(struct){return new Struct$1({...struct,validator:(value,ctx)=>value===undefined||struct.validator(value,ctx),refiner:(value,ctx)=>value===undefined||struct.refiner(value,ctx)})}function record(Key,Value){return new Struct$1({type:"record",schema:null,*entries(value){if(isObject(value)){for(const k in value){const v=value[k];yield[k,k,Key];yield[k,v,Value]}}},validator(value){return isNonArrayObject(value)||`Expected an object, but received: ${print(value)}`},coercer(value){return isNonArrayObject(value)?{...value}:value}})}function string(){return define("string",value=>typeof value==="string"||`Expected a string, but received: ${print(value)}`)}function tuple(Structs){const Never=never();return new Struct$1({type:"tuple",schema:null,*entries(value){if(Array.isArray(value)){const length=Math.max(Structs.length,value.length);for(let i=0;i<length;i++){yield[i,value[i],Structs[i]||Never]}}},validator(value){return Array.isArray(value)||`Expected an array, but received: ${print(value)}`},coercer(value){return Array.isArray(value)?value.slice():value}})}function type(schema){const keys=Object.keys(schema);return new Struct$1({type:"type",schema:schema,*entries(value){if(isObject(value)){for(const k of keys){yield[k,value[k],schema[k]]}}},validator(value){return isNonArrayObject(value)||`Expected an object, but received: ${print(value)}`},coercer(value){return isNonArrayObject(value)?{...value}:value}})}function union(Structs){const description=Structs.map(s=>s.type).join(" | ");return new Struct$1({type:"union",schema:null,coercer(value,ctx){for(const S of Structs){const[error,coerced]=S.validate(value,{coerce:true,mask:ctx.mask});if(!error){return coerced}}return value},validator(value,ctx){const failures=[];for(const S of Structs){const[...tuples]=run(value,S,ctx);const[first]=tuples;if(!first[0]){return[]}else{for(const[failure]of tuples){if(failure){failures.push(failure)}}}}return[`Expected the value to satisfy a union of \`${description}\`, but received: ${print(value)}`,...failures]}})}function unknown(){return define("unknown",()=>true)}function coerce(struct,condition,coercer){return new Struct$1({...struct,coercer:(value,ctx)=>is(value,condition)?struct.coercer(coercer(value,ctx),ctx):struct.coercer(value,ctx)})}class HMAC extends Hash{constructor(hash,_key){super();this.finished=false;this.destroyed=false;ahash(hash);const key=toBytes(_key);this.iHash=hash.create();if(typeof this.iHash.update!=="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;const blockLen=this.blockLen;const pad=new Uint8Array(blockLen);pad.set(key.length>blockLen?hash.create().update(key).digest():key);for(let i=0;i<pad.length;i++)pad[i]^=54;this.iHash.update(pad);this.oHash=hash.create();for(let i=0;i<pad.length;i++)pad[i]^=54^92;this.oHash.update(pad);clean(pad)}update(buf){aexists(this);this.iHash.update(buf);return this}digestInto(out){aexists(this);abytes(out,this.outputLen);this.finished=true;this.iHash.digestInto(out);this.oHash.update(out);this.oHash.digestInto(out);this.destroy()}digest(){const out=new Uint8Array(this.oHash.outputLen);this.digestInto(out);return out}_cloneInto(to){to||(to=Object.create(Object.getPrototypeOf(this),{}));const{oHash:oHash,iHash:iHash,finished:finished,destroyed:destroyed,blockLen:blockLen,outputLen:outputLen}=this;to=to;to.finished=finished;to.destroyed=destroyed;to.blockLen=blockLen;to.outputLen=outputLen;to.oHash=oHash._cloneInto(to.oHash);to.iHash=iHash._cloneInto(to.iHash);return to}clone(){return this._cloneInto()}destroy(){this.destroyed=true;this.oHash.destroy();this.iHash.destroy()}}const hmac=(hash,key,message)=>new HMAC(hash,key).update(message).digest();hmac.create=(hash,key)=>new HMAC(hash,key);
16
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const divNearest=(num,den)=>(num+(num>=0?den:-den)/_2n$1)/den;function _splitEndoScalar(k,basis,n){const[[a1,b1],[a2,b2]]=basis;const c1=divNearest(b2*k,n);const c2=divNearest(-b1*k,n);let k1=k-c1*a1-c2*a2;let k2=-c1*b1-c2*b2;const k1neg=k1<_0n;const k2neg=k2<_0n;if(k1neg)k1=-k1;if(k2neg)k2=-k2;const MAX_NUM=bitMask(Math.ceil(bitLen(n)/2))+_1n;if(k1<_0n||k1>=MAX_NUM||k2<_0n||k2>=MAX_NUM){throw new Error("splitScalar (endomorphism): failed, k="+k)}return{k1neg:k1neg,k1:k1,k2neg:k2neg,k2:k2}}function validateSigFormat(format){if(!["compact","recovered","der"].includes(format))throw new Error('Signature format must be "compact", "recovered", or "der"');return format}function validateSigOpts(opts,def){const optsn={};for(let optName of Object.keys(def)){optsn[optName]=opts[optName]===undefined?def[optName]:opts[optName]}_abool2(optsn.lowS,"lowS");_abool2(optsn.prehash,"prehash");if(optsn.format!==undefined)validateSigFormat(optsn.format);return optsn}class DERErr extends Error{constructor(m=""){super(m)}}const DER={Err:DERErr,_tlv:{encode:(tag,data)=>{const{Err:E}=DER;if(tag<0||tag>256)throw new E("tlv.encode: wrong tag");if(data.length&1)throw new E("tlv.encode: unpadded data");const dataLen=data.length/2;const len=numberToHexUnpadded(dataLen);if(len.length/2&128)throw new E("tlv.encode: long form length too big");const lenLen=dataLen>127?numberToHexUnpadded(len.length/2|128):"";const t=numberToHexUnpadded(tag);return t+lenLen+len+data},decode(tag,data){const{Err:E}=DER;let pos=0;if(tag<0||tag>256)throw new E("tlv.encode: wrong tag");if(data.length<2||data[pos++]!==tag)throw new E("tlv.decode: wrong tlv");const first=data[pos++];const isLong=!!(first&128);let length=0;if(!isLong)length=first;else{const lenLen=first&127;if(!lenLen)throw new E("tlv.decode(long): indefinite length not supported");if(lenLen>4)throw new E("tlv.decode(long): byte length is too big");const lengthBytes=data.subarray(pos,pos+lenLen);if(lengthBytes.length!==lenLen)throw new E("tlv.decode: length bytes not complete");if(lengthBytes[0]===0)throw new E("tlv.decode(long): zero leftmost byte");for(const b of lengthBytes)length=length<<8|b;pos+=lenLen;if(length<128)throw new E("tlv.decode(long): not minimal encoding")}const v=data.subarray(pos,pos+length);if(v.length!==length)throw new E("tlv.decode: wrong value length");return{v:v,l:data.subarray(pos+length)}}},_int:{encode(num){const{Err:E}=DER;if(num<_0n)throw new E("integer: negative integers are not allowed");let hex=numberToHexUnpadded(num);if(Number.parseInt(hex[0],16)&8)hex="00"+hex;if(hex.length&1)throw new E("unexpected DER parsing assertion: unpadded hex");return hex},decode(data){const{Err:E}=DER;if(data[0]&128)throw new E("invalid signature integer: negative");if(data[0]===0&&!(data[1]&128))throw new E("invalid signature integer: unnecessary leading zero");return bytesToNumberBE(data)}},toSig(hex){const{Err:E,_int:int,_tlv:tlv}=DER;const data=ensureBytes("signature",hex);const{v:seqBytes,l:seqLeftBytes}=tlv.decode(48,data);if(seqLeftBytes.length)throw new E("invalid signature: left bytes after parsing");const{v:rBytes,l:rLeftBytes}=tlv.decode(2,seqBytes);const{v:sBytes,l:sLeftBytes}=tlv.decode(2,rLeftBytes);if(sLeftBytes.length)throw new E("invalid signature: left bytes after parsing");return{r:int.decode(rBytes),s:int.decode(sBytes)}},hexFromSig(sig){const{_tlv:tlv,_int:int}=DER;const rs=tlv.encode(2,int.encode(sig.r));const ss=tlv.encode(2,int.encode(sig.s));const seq=rs+ss;return tlv.encode(48,seq)}};const _0n=BigInt(0),_1n=BigInt(1),_2n$1=BigInt(2),_3n=BigInt(3),_4n=BigInt(4);function _normFnElement(Fn,key){const{BYTES:expected}=Fn;let num;if(typeof key==="bigint"){num=key}else{let bytes=ensureBytes("private key",key);try{num=Fn.fromBytes(bytes)}catch(error){throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`)}}if(!Fn.isValidNot0(num))throw new Error("invalid private key: out of range [1..N-1]");return num}function weierstrassN(params,extraOpts={}){const validated=_createCurveFields("weierstrass",params,extraOpts);const{Fp:Fp,Fn:Fn}=validated;let CURVE=validated.CURVE;const{h:cofactor,n:CURVE_ORDER}=CURVE;_validateObject(extraOpts,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});const{endo:endo}=extraOpts;if(endo){if(!Fp.is0(CURVE.a)||typeof endo.beta!=="bigint"||!Array.isArray(endo.basises)){throw new Error('invalid endo: expected "beta": bigint and "basises": array')}}const lengths=getWLengths(Fp,Fn);function assertCompressionIsSupported(){if(!Fp.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function pointToBytes(_c,point,isCompressed){const{x:x,y:y}=point.toAffine();const bx=Fp.toBytes(x);_abool2(isCompressed,"isCompressed");if(isCompressed){assertCompressionIsSupported();const hasEvenY=!Fp.isOdd(y);return concatBytes(pprefix(hasEvenY),bx)}else{return concatBytes(Uint8Array.of(4),bx,Fp.toBytes(y))}}function pointFromBytes(bytes){_abytes2(bytes,undefined,"Point");const{publicKey:comp,publicKeyUncompressed:uncomp}=lengths;const length=bytes.length;const head=bytes[0];const tail=bytes.subarray(1);if(length===comp&&(head===2||head===3)){const x=Fp.fromBytes(tail);if(!Fp.isValid(x))throw new Error("bad point: is not on curve, wrong x");const y2=weierstrassEquation(x);let y;try{y=Fp.sqrt(y2)}catch(sqrtError){const err=sqrtError instanceof Error?": "+sqrtError.message:"";throw new Error("bad point: is not on curve, sqrt error"+err)}assertCompressionIsSupported();const isYOdd=Fp.isOdd(y);const isHeadOdd=(head&1)===1;if(isHeadOdd!==isYOdd)y=Fp.neg(y);return{x:x,y:y}}else if(length===uncomp&&head===4){const L=Fp.BYTES;const x=Fp.fromBytes(tail.subarray(0,L));const y=Fp.fromBytes(tail.subarray(L,L*2));if(!isValidXY(x,y))throw new Error("bad point: is not on curve");return{x:x,y:y}}else{throw new Error(`bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`)}}const encodePoint=extraOpts.toBytes||pointToBytes;const decodePoint=extraOpts.fromBytes||pointFromBytes;function weierstrassEquation(x){const x2=Fp.sqr(x);const x3=Fp.mul(x2,x);return Fp.add(Fp.add(x3,Fp.mul(x,CURVE.a)),CURVE.b)}function isValidXY(x,y){const left=Fp.sqr(y);const right=weierstrassEquation(x);return Fp.eql(left,right)}if(!isValidXY(CURVE.Gx,CURVE.Gy))throw new Error("bad curve params: generator point");const _4a3=Fp.mul(Fp.pow(CURVE.a,_3n),_4n);const _27b2=Fp.mul(Fp.sqr(CURVE.b),BigInt(27));if(Fp.is0(Fp.add(_4a3,_27b2)))throw new Error("bad curve params: a or b");function acoord(title,n,banZero=false){if(!Fp.isValid(n)||banZero&&Fp.is0(n))throw new Error(`bad point coordinate ${title}`);return n}function aprjpoint(other){if(!(other instanceof Point))throw new Error("ProjectivePoint expected")}function splitEndoScalarN(k){if(!endo||!endo.basises)throw new Error("no endo");return _splitEndoScalar(k,endo.basises,Fn.ORDER)}const toAffineMemo=memoized((p,iz)=>{const{X:X,Y:Y,Z:Z}=p;if(Fp.eql(Z,Fp.ONE))return{x:X,y:Y};const is0=p.is0();if(iz==null)iz=is0?Fp.ONE:Fp.inv(Z);const x=Fp.mul(X,iz);const y=Fp.mul(Y,iz);const zz=Fp.mul(Z,iz);if(is0)return{x:Fp.ZERO,y:Fp.ZERO};if(!Fp.eql(zz,Fp.ONE))throw new Error("invZ was invalid");return{x:x,y:y}});const assertValidMemo=memoized(p=>{if(p.is0()){if(extraOpts.allowInfinityPoint&&!Fp.is0(p.Y))return;throw new Error("bad point: ZERO")}const{x:x,y:y}=p.toAffine();if(!Fp.isValid(x)||!Fp.isValid(y))throw new Error("bad point: x or y not field elements");if(!isValidXY(x,y))throw new Error("bad point: equation left != right");if(!p.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return true});function finishEndo(endoBeta,k1p,k2p,k1neg,k2neg){k2p=new Point(Fp.mul(k2p.X,endoBeta),k2p.Y,k2p.Z);k1p=negateCt(k1neg,k1p);k2p=negateCt(k2neg,k2p);return k1p.add(k2p)}class Point{constructor(X,Y,Z){this.X=acoord("x",X);this.Y=acoord("y",Y,true);this.Z=acoord("z",Z);Object.freeze(this)}static CURVE(){return CURVE}static fromAffine(p){const{x:x,y:y}=p||{};if(!p||!Fp.isValid(x)||!Fp.isValid(y))throw new Error("invalid affine point");if(p instanceof Point)throw new Error("projective point not allowed");if(Fp.is0(x)&&Fp.is0(y))return Point.ZERO;return new Point(x,y,Fp.ONE)}static fromBytes(bytes){const P=Point.fromAffine(decodePoint(_abytes2(bytes,undefined,"point")));P.assertValidity();return P}static fromHex(hex){return Point.fromBytes(ensureBytes("pointHex",hex))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(windowSize=8,isLazy=true){wnaf.createCache(this,windowSize);if(!isLazy)this.multiply(_3n);return this}assertValidity(){assertValidMemo(this)}hasEvenY(){const{y:y}=this.toAffine();if(!Fp.isOdd)throw new Error("Field doesn't support isOdd");return!Fp.isOdd(y)}equals(other){aprjpoint(other);const{X:X1,Y:Y1,Z:Z1}=this;const{X:X2,Y:Y2,Z:Z2}=other;const U1=Fp.eql(Fp.mul(X1,Z2),Fp.mul(X2,Z1));const U2=Fp.eql(Fp.mul(Y1,Z2),Fp.mul(Y2,Z1));return U1&&U2}negate(){return new Point(this.X,Fp.neg(this.Y),this.Z)}double(){const{a:a,b:b}=CURVE;const b3=Fp.mul(b,_3n);const{X:X1,Y:Y1,Z:Z1}=this;let X3=Fp.ZERO,Y3=Fp.ZERO,Z3=Fp.ZERO;let t0=Fp.mul(X1,X1);let t1=Fp.mul(Y1,Y1);let t2=Fp.mul(Z1,Z1);let t3=Fp.mul(X1,Y1);t3=Fp.add(t3,t3);Z3=Fp.mul(X1,Z1);Z3=Fp.add(Z3,Z3);X3=Fp.mul(a,Z3);Y3=Fp.mul(b3,t2);Y3=Fp.add(X3,Y3);X3=Fp.sub(t1,Y3);Y3=Fp.add(t1,Y3);Y3=Fp.mul(X3,Y3);X3=Fp.mul(t3,X3);Z3=Fp.mul(b3,Z3);t2=Fp.mul(a,t2);t3=Fp.sub(t0,t2);t3=Fp.mul(a,t3);t3=Fp.add(t3,Z3);Z3=Fp.add(t0,t0);t0=Fp.add(Z3,t0);t0=Fp.add(t0,t2);t0=Fp.mul(t0,t3);Y3=Fp.add(Y3,t0);t2=Fp.mul(Y1,Z1);t2=Fp.add(t2,t2);t0=Fp.mul(t2,t3);X3=Fp.sub(X3,t0);Z3=Fp.mul(t2,t1);Z3=Fp.add(Z3,Z3);Z3=Fp.add(Z3,Z3);return new Point(X3,Y3,Z3)}add(other){aprjpoint(other);const{X:X1,Y:Y1,Z:Z1}=this;const{X:X2,Y:Y2,Z:Z2}=other;let X3=Fp.ZERO,Y3=Fp.ZERO,Z3=Fp.ZERO;const a=CURVE.a;const b3=Fp.mul(CURVE.b,_3n);let t0=Fp.mul(X1,X2);let t1=Fp.mul(Y1,Y2);let t2=Fp.mul(Z1,Z2);let t3=Fp.add(X1,Y1);let t4=Fp.add(X2,Y2);t3=Fp.mul(t3,t4);t4=Fp.add(t0,t1);t3=Fp.sub(t3,t4);t4=Fp.add(X1,Z1);let t5=Fp.add(X2,Z2);t4=Fp.mul(t4,t5);t5=Fp.add(t0,t2);t4=Fp.sub(t4,t5);t5=Fp.add(Y1,Z1);X3=Fp.add(Y2,Z2);t5=Fp.mul(t5,X3);X3=Fp.add(t1,t2);t5=Fp.sub(t5,X3);Z3=Fp.mul(a,t4);X3=Fp.mul(b3,t2);Z3=Fp.add(X3,Z3);X3=Fp.sub(t1,Z3);Z3=Fp.add(t1,Z3);Y3=Fp.mul(X3,Z3);t1=Fp.add(t0,t0);t1=Fp.add(t1,t0);t2=Fp.mul(a,t2);t4=Fp.mul(b3,t4);t1=Fp.add(t1,t2);t2=Fp.sub(t0,t2);t2=Fp.mul(a,t2);t4=Fp.add(t4,t2);t0=Fp.mul(t1,t4);Y3=Fp.add(Y3,t0);t0=Fp.mul(t5,t4);X3=Fp.mul(t3,X3);X3=Fp.sub(X3,t0);t0=Fp.mul(t3,t1);Z3=Fp.mul(t5,Z3);Z3=Fp.add(Z3,t0);return new Point(X3,Y3,Z3)}subtract(other){return this.add(other.negate())}is0(){return this.equals(Point.ZERO)}multiply(scalar){const{endo:endo}=extraOpts;if(!Fn.isValidNot0(scalar))throw new Error("invalid scalar: out of range");let point,fake;const mul=n=>wnaf.cached(this,n,p=>normalizeZ(Point,p));if(endo){const{k1neg:k1neg,k1:k1,k2neg:k2neg,k2:k2}=splitEndoScalarN(scalar);const{p:k1p,f:k1f}=mul(k1);const{p:k2p,f:k2f}=mul(k2);fake=k1f.add(k2f);point=finishEndo(endo.beta,k1p,k2p,k1neg,k2neg)}else{const{p:p,f:f}=mul(scalar);point=p;fake=f}return normalizeZ(Point,[point,fake])[0]}multiplyUnsafe(sc){const{endo:endo}=extraOpts;const p=this;if(!Fn.isValid(sc))throw new Error("invalid scalar: out of range");if(sc===_0n||p.is0())return Point.ZERO;if(sc===_1n)return p;if(wnaf.hasCache(this))return this.multiply(sc);if(endo){const{k1neg:k1neg,k1:k1,k2neg:k2neg,k2:k2}=splitEndoScalarN(sc);const{p1:p1,p2:p2}=mulEndoUnsafe(Point,p,k1,k2);return finishEndo(endo.beta,p1,p2,k1neg,k2neg)}else{return wnaf.unsafe(p,sc)}}multiplyAndAddUnsafe(Q,a,b){const sum=this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));return sum.is0()?undefined:sum}toAffine(invertedZ){return toAffineMemo(this,invertedZ)}isTorsionFree(){const{isTorsionFree:isTorsionFree}=extraOpts;if(cofactor===_1n)return true;if(isTorsionFree)return isTorsionFree(Point,this);return wnaf.unsafe(this,CURVE_ORDER).is0()}clearCofactor(){const{clearCofactor:clearCofactor}=extraOpts;if(cofactor===_1n)return this;if(clearCofactor)return clearCofactor(Point,this);return this.multiplyUnsafe(cofactor)}isSmallOrder(){return this.multiplyUnsafe(cofactor).is0()}toBytes(isCompressed=true){_abool2(isCompressed,"isCompressed");this.assertValidity();return encodePoint(Point,this,isCompressed)}toHex(isCompressed=true){return bytesToHex(this.toBytes(isCompressed))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(isCompressed=true){return this.toBytes(isCompressed)}_setWindowSize(windowSize){this.precompute(windowSize)}static normalizeZ(points){return normalizeZ(Point,points)}static msm(points,scalars){return pippenger(Point,Fn,points,scalars)}static fromPrivateKey(privateKey){return Point.BASE.multiply(_normFnElement(Fn,privateKey))}}Point.BASE=new Point(CURVE.Gx,CURVE.Gy,Fp.ONE);Point.ZERO=new Point(Fp.ZERO,Fp.ONE,Fp.ZERO);Point.Fp=Fp;Point.Fn=Fn;const bits=Fn.BITS;const wnaf=new wNAF(Point,extraOpts.endo?Math.ceil(bits/2):bits);Point.BASE.precompute(8);return Point}function pprefix(hasEvenY){return Uint8Array.of(hasEvenY?2:3)}function getWLengths(Fp,Fn){return{secretKey:Fn.BYTES,publicKey:1+Fp.BYTES,publicKeyUncompressed:1+2*Fp.BYTES,publicKeyHasPrefix:true,signature:2*Fn.BYTES}}function ecdh(Point,ecdhOpts={}){const{Fn:Fn}=Point;const randomBytes_=ecdhOpts.randomBytes||randomBytes;const lengths=Object.assign(getWLengths(Point.Fp,Fn),{seed:getMinHashLength(Fn.ORDER)});function isValidSecretKey(secretKey){try{return!!_normFnElement(Fn,secretKey)}catch(error){return false}}function isValidPublicKey(publicKey,isCompressed){const{publicKey:comp,publicKeyUncompressed:publicKeyUncompressed}=lengths;try{const l=publicKey.length;if(isCompressed===true&&l!==comp)return false;if(isCompressed===false&&l!==publicKeyUncompressed)return false;return!!Point.fromBytes(publicKey)}catch(error){return false}}function randomSecretKey(seed=randomBytes_(lengths.seed)){return mapHashToField(_abytes2(seed,lengths.seed,"seed"),Fn.ORDER)}function getPublicKey(secretKey,isCompressed=true){return Point.BASE.multiply(_normFnElement(Fn,secretKey)).toBytes(isCompressed)}function keygen(seed){const secretKey=randomSecretKey(seed);return{secretKey:secretKey,publicKey:getPublicKey(secretKey)}}function isProbPub(item){if(typeof item==="bigint")return false;if(item instanceof Point)return true;const{secretKey:secretKey,publicKey:publicKey,publicKeyUncompressed:publicKeyUncompressed}=lengths;if(Fn.allowedLengths||secretKey===publicKey)return undefined;const l=ensureBytes("key",item).length;return l===publicKey||l===publicKeyUncompressed}function getSharedSecret(secretKeyA,publicKeyB,isCompressed=true){if(isProbPub(secretKeyA)===true)throw new Error("first arg must be private key");if(isProbPub(publicKeyB)===false)throw new Error("second arg must be public key");const s=_normFnElement(Fn,secretKeyA);const b=Point.fromHex(publicKeyB);return b.multiply(s).toBytes(isCompressed)}const utils={isValidSecretKey:isValidSecretKey,isValidPublicKey:isValidPublicKey,randomSecretKey:randomSecretKey,isValidPrivateKey:isValidSecretKey,randomPrivateKey:randomSecretKey,normPrivateKeyToScalar:key=>_normFnElement(Fn,key),precompute(windowSize=8,point=Point.BASE){return point.precompute(windowSize,false)}};return Object.freeze({getPublicKey:getPublicKey,getSharedSecret:getSharedSecret,keygen:keygen,Point:Point,utils:utils,lengths:lengths})}function ecdsa(Point,hash,ecdsaOpts={}){ahash(hash);_validateObject(ecdsaOpts,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});const randomBytes$1=ecdsaOpts.randomBytes||randomBytes;const hmac$1=ecdsaOpts.hmac||((key,...msgs)=>hmac(hash,key,concatBytes(...msgs)));const{Fp:Fp,Fn:Fn}=Point;const{ORDER:CURVE_ORDER,BITS:fnBits}=Fn;const{keygen:keygen,getPublicKey:getPublicKey,getSharedSecret:getSharedSecret,utils:utils,lengths:lengths}=ecdh(Point,ecdsaOpts);const defaultSigOpts={prehash:false,lowS:typeof ecdsaOpts.lowS==="boolean"?ecdsaOpts.lowS:false,format:undefined,extraEntropy:false};const defaultSigOpts_format="compact";function isBiggerThanHalfOrder(number){const HALF=CURVE_ORDER>>_1n;return number>HALF}function validateRS(title,num){if(!Fn.isValidNot0(num))throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);return num}function validateSigLength(bytes,format){validateSigFormat(format);const size=lengths.signature;const sizer=format==="compact"?size:format==="recovered"?size+1:undefined;return _abytes2(bytes,sizer,`${format} signature`)}class Signature{constructor(r,s,recovery){this.r=validateRS("r",r);this.s=validateRS("s",s);if(recovery!=null)this.recovery=recovery;Object.freeze(this)}static fromBytes(bytes,format=defaultSigOpts_format){validateSigLength(bytes,format);let recid;if(format==="der"){const{r:r,s:s}=DER.toSig(_abytes2(bytes));return new Signature(r,s)}if(format==="recovered"){recid=bytes[0];format="compact";bytes=bytes.subarray(1)}const L=Fn.BYTES;const r=bytes.subarray(0,L);const s=bytes.subarray(L,L*2);return new Signature(Fn.fromBytes(r),Fn.fromBytes(s),recid)}static fromHex(hex,format){return this.fromBytes(hexToBytes(hex),format)}addRecoveryBit(recovery){return new Signature(this.r,this.s,recovery)}recoverPublicKey(messageHash){const FIELD_ORDER=Fp.ORDER;const{r:r,s:s,recovery:rec}=this;if(rec==null||![0,1,2,3].includes(rec))throw new Error("recovery id invalid");const hasCofactor=CURVE_ORDER*_2n$1<FIELD_ORDER;if(hasCofactor&&rec>1)throw new Error("recovery id is ambiguous for h>1 curve");const radj=rec===2||rec===3?r+CURVE_ORDER:r;if(!Fp.isValid(radj))throw new Error("recovery id 2 or 3 invalid");const x=Fp.toBytes(radj);const R=Point.fromBytes(concatBytes(pprefix((rec&1)===0),x));const ir=Fn.inv(radj);const h=bits2int_modN(ensureBytes("msgHash",messageHash));const u1=Fn.create(-h*ir);const u2=Fn.create(s*ir);const Q=Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));if(Q.is0())throw new Error("point at infinify");Q.assertValidity();return Q}hasHighS(){return isBiggerThanHalfOrder(this.s)}toBytes(format=defaultSigOpts_format){validateSigFormat(format);if(format==="der")return hexToBytes(DER.hexFromSig(this));const r=Fn.toBytes(this.r);const s=Fn.toBytes(this.s);if(format==="recovered"){if(this.recovery==null)throw new Error("recovery bit must be present");return concatBytes(Uint8Array.of(this.recovery),r,s)}return concatBytes(r,s)}toHex(format){return bytesToHex(this.toBytes(format))}assertValidity(){}static fromCompact(hex){return Signature.fromBytes(ensureBytes("sig",hex),"compact")}static fromDER(hex){return Signature.fromBytes(ensureBytes("sig",hex),"der")}normalizeS(){return this.hasHighS()?new Signature(this.r,Fn.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return bytesToHex(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return bytesToHex(this.toBytes("compact"))}}const bits2int=ecdsaOpts.bits2int||function bits2int_def(bytes){if(bytes.length>8192)throw new Error("input is too large");const num=bytesToNumberBE(bytes);const delta=bytes.length*8-fnBits;return delta>0?num>>BigInt(delta):num};const bits2int_modN=ecdsaOpts.bits2int_modN||function bits2int_modN_def(bytes){return Fn.create(bits2int(bytes))};const ORDER_MASK=bitMask(fnBits);function int2octets(num){aInRange("num < 2^"+fnBits,num,_0n,ORDER_MASK);return Fn.toBytes(num)}function validateMsgAndHash(message,prehash){_abytes2(message,undefined,"message");return prehash?_abytes2(hash(message),undefined,"prehashed message"):message}function prepSig(message,privateKey,opts){if(["recovered","canonical"].some(k=>k in opts))throw new Error("sign() legacy options not supported");const{lowS:lowS,prehash:prehash,extraEntropy:extraEntropy}=validateSigOpts(opts,defaultSigOpts);message=validateMsgAndHash(message,prehash);const h1int=bits2int_modN(message);const d=_normFnElement(Fn,privateKey);const seedArgs=[int2octets(d),int2octets(h1int)];if(extraEntropy!=null&&extraEntropy!==false){const e=extraEntropy===true?randomBytes$1(lengths.secretKey):extraEntropy;seedArgs.push(ensureBytes("extraEntropy",e))}const seed=concatBytes(...seedArgs);const m=h1int;function k2sig(kBytes){const k=bits2int(kBytes);if(!Fn.isValidNot0(k))return;const ik=Fn.inv(k);const q=Point.BASE.multiply(k).toAffine();const r=Fn.create(q.x);if(r===_0n)return;const s=Fn.create(ik*Fn.create(m+r*d));if(s===_0n)return;let recovery=(q.x===r?0:2)|Number(q.y&_1n);let normS=s;if(lowS&&isBiggerThanHalfOrder(s)){normS=Fn.neg(s);recovery^=1}return new Signature(r,normS,recovery)}return{seed:seed,k2sig:k2sig}}function sign(message,secretKey,opts={}){message=ensureBytes("message",message);const{seed:seed,k2sig:k2sig}=prepSig(message,secretKey,opts);const drbg=createHmacDrbg(hash.outputLen,Fn.BYTES,hmac$1);const sig=drbg(seed,k2sig);return sig}function tryParsingSig(sg){let sig=undefined;const isHex=typeof sg==="string"||isBytes(sg);const isObj=!isHex&&sg!==null&&typeof sg==="object"&&typeof sg.r==="bigint"&&typeof sg.s==="bigint";if(!isHex&&!isObj)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(isObj){sig=new Signature(sg.r,sg.s)}else if(isHex){try{sig=Signature.fromBytes(ensureBytes("sig",sg),"der")}catch(derError){if(!(derError instanceof DER.Err))throw derError}if(!sig){try{sig=Signature.fromBytes(ensureBytes("sig",sg),"compact")}catch(error){return false}}}if(!sig)return false;return sig}function verify(signature,message,publicKey,opts={}){const{lowS:lowS,prehash:prehash,format:format}=validateSigOpts(opts,defaultSigOpts);publicKey=ensureBytes("publicKey",publicKey);message=validateMsgAndHash(ensureBytes("message",message),prehash);if("strict"in opts)throw new Error("options.strict was renamed to lowS");const sig=format===undefined?tryParsingSig(signature):Signature.fromBytes(ensureBytes("sig",signature),format);if(sig===false)return false;try{const P=Point.fromBytes(publicKey);if(lowS&&sig.hasHighS())return false;const{r:r,s:s}=sig;const h=bits2int_modN(message);const is=Fn.inv(s);const u1=Fn.create(h*is);const u2=Fn.create(r*is);const R=Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2));if(R.is0())return false;const v=Fn.create(R.x);return v===r}catch(e){return false}}function recoverPublicKey(signature,message,opts={}){const{prehash:prehash}=validateSigOpts(opts,defaultSigOpts);message=validateMsgAndHash(message,prehash);return Signature.fromBytes(signature,"recovered").recoverPublicKey(message).toBytes()}return Object.freeze({keygen:keygen,getPublicKey:getPublicKey,getSharedSecret:getSharedSecret,utils:utils,lengths:lengths,Point:Point,sign:sign,verify:verify,recoverPublicKey:recoverPublicKey,Signature:Signature,hash:hash})}function _weierstrass_legacy_opts_to_new(c){const CURVE={a:c.a,b:c.b,p:c.Fp.ORDER,n:c.n,h:c.h,Gx:c.Gx,Gy:c.Gy};const Fp=c.Fp;let allowedLengths=c.allowedPrivateKeyLengths?Array.from(new Set(c.allowedPrivateKeyLengths.map(l=>Math.ceil(l/2)))):undefined;const Fn=Field(CURVE.n,{BITS:c.nBitLength,allowedLengths:allowedLengths,modFromBytes:c.wrapPrivateKey});const curveOpts={Fp:Fp,Fn:Fn,allowInfinityPoint:c.allowInfinityPoint,endo:c.endo,isTorsionFree:c.isTorsionFree,clearCofactor:c.clearCofactor,fromBytes:c.fromBytes,toBytes:c.toBytes};return{CURVE:CURVE,curveOpts:curveOpts}}function _ecdsa_legacy_opts_to_new(c){const{CURVE:CURVE,curveOpts:curveOpts}=_weierstrass_legacy_opts_to_new(c);const ecdsaOpts={hmac:c.hmac,randomBytes:c.randomBytes,lowS:c.lowS,bits2int:c.bits2int,bits2int_modN:c.bits2int_modN};return{CURVE:CURVE,curveOpts:curveOpts,hash:c.hash,ecdsaOpts:ecdsaOpts}}function _ecdsa_new_output_to_legacy(c,_ecdsa){const Point=_ecdsa.Point;return Object.assign({},_ecdsa,{ProjectivePoint:Point,CURVE:Object.assign({},c,nLength(Point.Fn.ORDER,Point.Fn.BITS))})}function weierstrass(c){const{CURVE:CURVE,curveOpts:curveOpts,hash:hash,ecdsaOpts:ecdsaOpts}=_ecdsa_legacy_opts_to_new(c);const Point=weierstrassN(CURVE,curveOpts);const signs=ecdsa(Point,hash,ecdsaOpts);return _ecdsa_new_output_to_legacy(c,signs)}
17
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function createCurve(curveDef,defHash){const create=hash=>weierstrass({...curveDef,hash:hash});return{...create(defHash),create:create}}
18
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const secp256k1_CURVE={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")};const secp256k1_ENDO={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};const _2n=BigInt(2);function sqrtMod(y){const P=secp256k1_CURVE.p;const _3n=BigInt(3),_6n=BigInt(6),_11n=BigInt(11),_22n=BigInt(22);const _23n=BigInt(23),_44n=BigInt(44),_88n=BigInt(88);const b2=y*y*y%P;const b3=b2*b2*y%P;const b6=pow2(b3,_3n,P)*b3%P;const b9=pow2(b6,_3n,P)*b3%P;const b11=pow2(b9,_2n,P)*b2%P;const b22=pow2(b11,_11n,P)*b11%P;const b44=pow2(b22,_22n,P)*b22%P;const b88=pow2(b44,_44n,P)*b44%P;const b176=pow2(b88,_88n,P)*b88%P;const b220=pow2(b176,_44n,P)*b44%P;const b223=pow2(b220,_3n,P)*b3%P;const t1=pow2(b223,_23n,P)*b22%P;const t2=pow2(t1,_6n,P)*b2%P;const root=pow2(t2,_2n,P);if(!Fpk1.eql(Fpk1.sqr(root),y))throw new Error("Cannot find square root");return root}const Fpk1=Field(secp256k1_CURVE.p,{sqrt:sqrtMod});const secp256k1=createCurve({...secp256k1_CURVE,Fp:Fpk1,lowS:true,endo:secp256k1_ENDO},sha256$1);ed25519.utils.randomPrivateKey;const generateKeypair=()=>{const privateScalar=ed25519.utils.randomPrivateKey();const publicKey=getPublicKey(privateScalar);const secretKey=new Uint8Array(64);secretKey.set(privateScalar);secretKey.set(publicKey,32);return{publicKey:publicKey,secretKey:secretKey}};const getPublicKey=ed25519.getPublicKey;function isOnCurve(publicKey){try{ed25519.ExtendedPoint.fromHex(publicKey);return true}catch{return false}}const sign=(message,secretKey)=>ed25519.sign(message,secretKey.slice(0,32));const verify=ed25519.verify;const toBuffer=arr=>{if(bufferExports.Buffer.isBuffer(arr)){return arr}else if(arr instanceof Uint8Array){return bufferExports.Buffer.from(arr.buffer,arr.byteOffset,arr.byteLength)}else{return bufferExports.Buffer.from(arr)}};class Struct{constructor(properties){Object.assign(this,properties)}encode(){return bufferExports.Buffer.from(libExports.serialize(SOLANA_SCHEMA,this))}static decode(data){return libExports.deserialize(SOLANA_SCHEMA,this,data)}static decodeUnchecked(data){return libExports.deserializeUnchecked(SOLANA_SCHEMA,this,data)}}const SOLANA_SCHEMA=new Map;var _PublicKey;const MAX_SEED_LENGTH=32;const PUBLIC_KEY_LENGTH=32;function isPublicKeyData(value){return value._bn!==undefined}let uniquePublicKeyCounter=1;class PublicKey extends Struct{constructor(value){super({});this._bn=void 0;if(isPublicKeyData(value)){this._bn=value._bn}else{if(typeof value==="string"){const decoded=bs58.decode(value);if(decoded.length!=PUBLIC_KEY_LENGTH){throw new Error(`Invalid public key input`)}this._bn=new BN(decoded)}else{this._bn=new BN(value)}if(this._bn.byteLength()>PUBLIC_KEY_LENGTH){throw new Error(`Invalid public key input`)}}}static unique(){const key=new PublicKey(uniquePublicKeyCounter);uniquePublicKeyCounter+=1;return new PublicKey(key.toBuffer())}equals(publicKey){return this._bn.eq(publicKey._bn)}toBase58(){return bs58.encode(this.toBytes())}toJSON(){return this.toBase58()}toBytes(){const buf=this.toBuffer();return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}toBuffer(){const b=this._bn.toArrayLike(bufferExports.Buffer);if(b.length===PUBLIC_KEY_LENGTH){return b}const zeroPad=bufferExports.Buffer.alloc(32);b.copy(zeroPad,32-b.length);return zeroPad}get[Symbol.toStringTag](){return`PublicKey(${this.toString()})`}toString(){return this.toBase58()}static async createWithSeed(fromPublicKey,seed,programId){const buffer=bufferExports.Buffer.concat([fromPublicKey.toBuffer(),bufferExports.Buffer.from(seed),programId.toBuffer()]);const publicKeyBytes=sha256(buffer);return new PublicKey(publicKeyBytes)}static createProgramAddressSync(seeds,programId){let buffer=bufferExports.Buffer.alloc(0);seeds.forEach(function(seed){if(seed.length>MAX_SEED_LENGTH){throw new TypeError(`Max seed length exceeded`)}buffer=bufferExports.Buffer.concat([buffer,toBuffer(seed)])});buffer=bufferExports.Buffer.concat([buffer,programId.toBuffer(),bufferExports.Buffer.from("ProgramDerivedAddress")]);const publicKeyBytes=sha256(buffer);if(isOnCurve(publicKeyBytes)){throw new Error(`Invalid seeds, address must fall off the curve`)}return new PublicKey(publicKeyBytes)}static async createProgramAddress(seeds,programId){return this.createProgramAddressSync(seeds,programId)}static findProgramAddressSync(seeds,programId){let nonce=255;let address;while(nonce!=0){try{const seedsWithNonce=seeds.concat(bufferExports.Buffer.from([nonce]));address=this.createProgramAddressSync(seedsWithNonce,programId)}catch(err){if(err instanceof TypeError){throw err}nonce--;continue}return[address,nonce]}throw new Error(`Unable to find a viable program address nonce`)}static async findProgramAddress(seeds,programId){return this.findProgramAddressSync(seeds,programId)}static isOnCurve(pubkeyData){const pubkey=new PublicKey(pubkeyData);return isOnCurve(pubkey.toBytes())}}_PublicKey=PublicKey;PublicKey.default=new _PublicKey("11111111111111111111111111111111");SOLANA_SCHEMA.set(PublicKey,{kind:"struct",fields:[["_bn","u256"]]});new PublicKey("BPFLoader1111111111111111111111111111111111");const PACKET_DATA_SIZE=1280-40-8;const VERSION_PREFIX_MASK=127;const SIGNATURE_LENGTH_IN_BYTES=64;class MessageAccountKeys{constructor(staticAccountKeys,accountKeysFromLookups){this.staticAccountKeys=void 0;this.accountKeysFromLookups=void 0;this.staticAccountKeys=staticAccountKeys;this.accountKeysFromLookups=accountKeysFromLookups}keySegments(){const keySegments=[this.staticAccountKeys];if(this.accountKeysFromLookups){keySegments.push(this.accountKeysFromLookups.writable);keySegments.push(this.accountKeysFromLookups.readonly)}return keySegments}get(index){for(const keySegment of this.keySegments()){if(index<keySegment.length){return keySegment[index]}else{index-=keySegment.length}}return}get length(){return this.keySegments().flat().length}compileInstructions(instructions){const U8_MAX=255;if(this.length>U8_MAX+1){throw new Error("Account index overflow encountered during compilation")}const keyIndexMap=new Map;this.keySegments().flat().forEach((key,index)=>{keyIndexMap.set(key.toBase58(),index)});const findKeyIndex=key=>{const keyIndex=keyIndexMap.get(key.toBase58());if(keyIndex===undefined)throw new Error("Encountered an unknown instruction account key during compilation");return keyIndex};return instructions.map(instruction=>({programIdIndex:findKeyIndex(instruction.programId),accountKeyIndexes:instruction.keys.map(meta=>findKeyIndex(meta.pubkey)),data:instruction.data}))}}const publicKey$2=(property="publicKey")=>LayoutExports$1.blob(32,property);const rustString=(property="string")=>{const rsl=LayoutExports$1.struct([LayoutExports$1.u32("length"),LayoutExports$1.u32("lengthPadding"),LayoutExports$1.blob(LayoutExports$1.offset(LayoutExports$1.u32(),-8),"chars")],property);const _decode=rsl.decode.bind(rsl);const _encode=rsl.encode.bind(rsl);const rslShim=rsl;rslShim.decode=(b,offset)=>{const data=_decode(b,offset);return data["chars"].toString()};rslShim.encode=(str,b,offset)=>{const data={chars:bufferExports.Buffer.from(str,"utf8")};return _encode(data,b,offset)};rslShim.alloc=str=>LayoutExports$1.u32().span+LayoutExports$1.u32().span+bufferExports.Buffer.from(str,"utf8").length;return rslShim};const authorized=(property="authorized")=>LayoutExports$1.struct([publicKey$2("staker"),publicKey$2("withdrawer")],property);const lockup=(property="lockup")=>LayoutExports$1.struct([LayoutExports$1.ns64("unixTimestamp"),LayoutExports$1.ns64("epoch"),publicKey$2("custodian")],property);const voteInit=(property="voteInit")=>LayoutExports$1.struct([publicKey$2("nodePubkey"),publicKey$2("authorizedVoter"),publicKey$2("authorizedWithdrawer"),LayoutExports$1.u8("commission")],property);const voteAuthorizeWithSeedArgs=(property="voteAuthorizeWithSeedArgs")=>LayoutExports$1.struct([LayoutExports$1.u32("voteAuthorizationType"),publicKey$2("currentAuthorityDerivedKeyOwnerPubkey"),rustString("currentAuthorityDerivedKeySeed"),publicKey$2("newAuthorized")],property);function getAlloc(type,fields){const getItemAlloc=item=>{if(item.span>=0){return item.span}else if(typeof item.alloc==="function"){return item.alloc(fields[item.property])}else if("count"in item&&"elementLayout"in item){const field=fields[item.property];if(Array.isArray(field)){return field.length*getItemAlloc(item.elementLayout)}}else if("fields"in item){return getAlloc({layout:item},fields[item.property])}return 0};let alloc=0;type.layout.fields.forEach(item=>{alloc+=getItemAlloc(item)});return alloc}function decodeLength(bytes){let len=0;let size=0;for(;;){let elem=bytes.shift();len|=(elem&127)<<size*7;size+=1;if((elem&128)===0){break}}return len}function encodeLength(bytes,len){let rem_len=len;for(;;){let elem=rem_len&127;rem_len>>=7;if(rem_len==0){bytes.push(elem);break}else{elem|=128;bytes.push(elem)}}}function assert(condition,message){if(!condition){throw new Error(message||"Assertion failed")}}class CompiledKeys{constructor(payer,keyMetaMap){this.payer=void 0;this.keyMetaMap=void 0;this.payer=payer;this.keyMetaMap=keyMetaMap}static compile(instructions,payer){const keyMetaMap=new Map;const getOrInsertDefault=pubkey=>{const address=pubkey.toBase58();let keyMeta=keyMetaMap.get(address);if(keyMeta===undefined){keyMeta={isSigner:false,isWritable:false,isInvoked:false};keyMetaMap.set(address,keyMeta)}return keyMeta};const payerKeyMeta=getOrInsertDefault(payer);payerKeyMeta.isSigner=true;payerKeyMeta.isWritable=true;for(const ix of instructions){getOrInsertDefault(ix.programId).isInvoked=true;for(const accountMeta of ix.keys){const keyMeta=getOrInsertDefault(accountMeta.pubkey);keyMeta.isSigner||=accountMeta.isSigner;keyMeta.isWritable||=accountMeta.isWritable}}return new CompiledKeys(payer,keyMetaMap)}getMessageComponents(){const mapEntries=[...this.keyMetaMap.entries()];assert(mapEntries.length<=256,"Max static account keys length exceeded");const writableSigners=mapEntries.filter(([,meta])=>meta.isSigner&&meta.isWritable);const readonlySigners=mapEntries.filter(([,meta])=>meta.isSigner&&!meta.isWritable);const writableNonSigners=mapEntries.filter(([,meta])=>!meta.isSigner&&meta.isWritable);const readonlyNonSigners=mapEntries.filter(([,meta])=>!meta.isSigner&&!meta.isWritable);const header={numRequiredSignatures:writableSigners.length+readonlySigners.length,numReadonlySignedAccounts:readonlySigners.length,numReadonlyUnsignedAccounts:readonlyNonSigners.length};{assert(writableSigners.length>0,"Expected at least one writable signer key");const[payerAddress]=writableSigners[0];assert(payerAddress===this.payer.toBase58(),"Expected first writable signer key to be the fee payer")}const staticAccountKeys=[...writableSigners.map(([address])=>new PublicKey(address)),...readonlySigners.map(([address])=>new PublicKey(address)),...writableNonSigners.map(([address])=>new PublicKey(address)),...readonlyNonSigners.map(([address])=>new PublicKey(address))];return[header,staticAccountKeys]}extractTableLookup(lookupTable){const[writableIndexes,drainedWritableKeys]=this.drainKeysFoundInLookupTable(lookupTable.state.addresses,keyMeta=>!keyMeta.isSigner&&!keyMeta.isInvoked&&keyMeta.isWritable);const[readonlyIndexes,drainedReadonlyKeys]=this.drainKeysFoundInLookupTable(lookupTable.state.addresses,keyMeta=>!keyMeta.isSigner&&!keyMeta.isInvoked&&!keyMeta.isWritable);if(writableIndexes.length===0&&readonlyIndexes.length===0){return}return[{accountKey:lookupTable.key,writableIndexes:writableIndexes,readonlyIndexes:readonlyIndexes},{writable:drainedWritableKeys,readonly:drainedReadonlyKeys}]}drainKeysFoundInLookupTable(lookupTableEntries,keyMetaFilter){const lookupTableIndexes=new Array;const drainedKeys=new Array;for(const[address,keyMeta]of this.keyMetaMap.entries()){if(keyMetaFilter(keyMeta)){const key=new PublicKey(address);const lookupTableIndex=lookupTableEntries.findIndex(entry=>entry.equals(key));if(lookupTableIndex>=0){assert(lookupTableIndex<256,"Max lookup table index exceeded");lookupTableIndexes.push(lookupTableIndex);drainedKeys.push(key);this.keyMetaMap.delete(address)}}}return[lookupTableIndexes,drainedKeys]}}const END_OF_BUFFER_ERROR_MESSAGE="Reached end of buffer unexpectedly";function guardedShift(byteArray){if(byteArray.length===0){throw new Error(END_OF_BUFFER_ERROR_MESSAGE)}return byteArray.shift()}function guardedSplice(byteArray,...args){const[start]=args;if(args.length===2?start+(args[1]??0)>byteArray.length:start>=byteArray.length){throw new Error(END_OF_BUFFER_ERROR_MESSAGE)}return byteArray.splice(...args)}class Message{constructor(args){this.header=void 0;this.accountKeys=void 0;this.recentBlockhash=void 0;this.instructions=void 0;this.indexToProgramIds=new Map;this.header=args.header;this.accountKeys=args.accountKeys.map(account=>new PublicKey(account));this.recentBlockhash=args.recentBlockhash;this.instructions=args.instructions;this.instructions.forEach(ix=>this.indexToProgramIds.set(ix.programIdIndex,this.accountKeys[ix.programIdIndex]))}get version(){return"legacy"}get staticAccountKeys(){return this.accountKeys}get compiledInstructions(){return this.instructions.map(ix=>({programIdIndex:ix.programIdIndex,accountKeyIndexes:ix.accounts,data:bs58.decode(ix.data)}))}get addressTableLookups(){return[]}getAccountKeys(){return new MessageAccountKeys(this.staticAccountKeys)}static compile(args){const compiledKeys=CompiledKeys.compile(args.instructions,args.payerKey);const[header,staticAccountKeys]=compiledKeys.getMessageComponents();const accountKeys=new MessageAccountKeys(staticAccountKeys);const instructions=accountKeys.compileInstructions(args.instructions).map(ix=>({programIdIndex:ix.programIdIndex,accounts:ix.accountKeyIndexes,data:bs58.encode(ix.data)}));return new Message({header:header,accountKeys:staticAccountKeys,recentBlockhash:args.recentBlockhash,instructions:instructions})}isAccountSigner(index){return index<this.header.numRequiredSignatures}isAccountWritable(index){const numSignedAccounts=this.header.numRequiredSignatures;if(index>=this.header.numRequiredSignatures){const unsignedAccountIndex=index-numSignedAccounts;const numUnsignedAccounts=this.accountKeys.length-numSignedAccounts;const numWritableUnsignedAccounts=numUnsignedAccounts-this.header.numReadonlyUnsignedAccounts;return unsignedAccountIndex<numWritableUnsignedAccounts}else{const numWritableSignedAccounts=numSignedAccounts-this.header.numReadonlySignedAccounts;return index<numWritableSignedAccounts}}isProgramId(index){return this.indexToProgramIds.has(index)}programIds(){return[...this.indexToProgramIds.values()]}nonProgramIds(){return this.accountKeys.filter((_,index)=>!this.isProgramId(index))}serialize(){const numKeys=this.accountKeys.length;let keyCount=[];encodeLength(keyCount,numKeys);const instructions=this.instructions.map(instruction=>{const{accounts:accounts,programIdIndex:programIdIndex}=instruction;const data=Array.from(bs58.decode(instruction.data));let keyIndicesCount=[];encodeLength(keyIndicesCount,accounts.length);let dataCount=[];encodeLength(dataCount,data.length);return{programIdIndex:programIdIndex,keyIndicesCount:bufferExports.Buffer.from(keyIndicesCount),keyIndices:accounts,dataLength:bufferExports.Buffer.from(dataCount),data:data}});let instructionCount=[];encodeLength(instructionCount,instructions.length);let instructionBuffer=bufferExports.Buffer.alloc(PACKET_DATA_SIZE);bufferExports.Buffer.from(instructionCount).copy(instructionBuffer);let instructionBufferLength=instructionCount.length;instructions.forEach(instruction=>{const instructionLayout=LayoutExports$1.struct([LayoutExports$1.u8("programIdIndex"),LayoutExports$1.blob(instruction.keyIndicesCount.length,"keyIndicesCount"),LayoutExports$1.seq(LayoutExports$1.u8("keyIndex"),instruction.keyIndices.length,"keyIndices"),LayoutExports$1.blob(instruction.dataLength.length,"dataLength"),LayoutExports$1.seq(LayoutExports$1.u8("userdatum"),instruction.data.length,"data")]);const length=instructionLayout.encode(instruction,instructionBuffer,instructionBufferLength);instructionBufferLength+=length});instructionBuffer=instructionBuffer.slice(0,instructionBufferLength);const signDataLayout=LayoutExports$1.struct([LayoutExports$1.blob(1,"numRequiredSignatures"),LayoutExports$1.blob(1,"numReadonlySignedAccounts"),LayoutExports$1.blob(1,"numReadonlyUnsignedAccounts"),LayoutExports$1.blob(keyCount.length,"keyCount"),LayoutExports$1.seq(publicKey$2("key"),numKeys,"keys"),publicKey$2("recentBlockhash")]);const transaction={numRequiredSignatures:bufferExports.Buffer.from([this.header.numRequiredSignatures]),numReadonlySignedAccounts:bufferExports.Buffer.from([this.header.numReadonlySignedAccounts]),numReadonlyUnsignedAccounts:bufferExports.Buffer.from([this.header.numReadonlyUnsignedAccounts]),keyCount:bufferExports.Buffer.from(keyCount),keys:this.accountKeys.map(key=>toBuffer(key.toBytes())),recentBlockhash:bs58.decode(this.recentBlockhash)};let signData=bufferExports.Buffer.alloc(2048);const length=signDataLayout.encode(transaction,signData);instructionBuffer.copy(signData,length);return signData.slice(0,length+instructionBuffer.length)}static from(buffer){let byteArray=[...buffer];const numRequiredSignatures=guardedShift(byteArray);if(numRequiredSignatures!==(numRequiredSignatures&VERSION_PREFIX_MASK)){throw new Error("Versioned messages must be deserialized with VersionedMessage.deserialize()")}const numReadonlySignedAccounts=guardedShift(byteArray);const numReadonlyUnsignedAccounts=guardedShift(byteArray);const accountCount=decodeLength(byteArray);let accountKeys=[];for(let i=0;i<accountCount;i++){const account=guardedSplice(byteArray,0,PUBLIC_KEY_LENGTH);accountKeys.push(new PublicKey(bufferExports.Buffer.from(account)))}const recentBlockhash=guardedSplice(byteArray,0,PUBLIC_KEY_LENGTH);const instructionCount=decodeLength(byteArray);let instructions=[];for(let i=0;i<instructionCount;i++){const programIdIndex=guardedShift(byteArray);const accountCount=decodeLength(byteArray);const accounts=guardedSplice(byteArray,0,accountCount);const dataLength=decodeLength(byteArray);const dataSlice=guardedSplice(byteArray,0,dataLength);const data=bs58.encode(bufferExports.Buffer.from(dataSlice));instructions.push({programIdIndex:programIdIndex,accounts:accounts,data:data})}const messageArgs={header:{numRequiredSignatures:numRequiredSignatures,numReadonlySignedAccounts:numReadonlySignedAccounts,numReadonlyUnsignedAccounts:numReadonlyUnsignedAccounts},recentBlockhash:bs58.encode(bufferExports.Buffer.from(recentBlockhash)),accountKeys:accountKeys,instructions:instructions};return new Message(messageArgs)}}const DEFAULT_SIGNATURE=bufferExports.Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);class TransactionInstruction{constructor(opts){this.keys=void 0;this.programId=void 0;this.data=bufferExports.Buffer.alloc(0);this.programId=opts.programId;this.keys=opts.keys;if(opts.data){this.data=opts.data}}toJSON(){return{keys:this.keys.map(({pubkey:pubkey,isSigner:isSigner,isWritable:isWritable})=>({pubkey:pubkey.toJSON(),isSigner:isSigner,isWritable:isWritable})),programId:this.programId.toJSON(),data:[...this.data]}}}class Transaction{get signature(){if(this.signatures.length>0){return this.signatures[0].signature}return null}constructor(opts){this.signatures=[];this.feePayer=void 0;this.instructions=[];this.recentBlockhash=void 0;this.lastValidBlockHeight=void 0;this.nonceInfo=void 0;this.minNonceContextSlot=void 0;this._message=void 0;this._json=void 0;if(!opts){return}if(opts.feePayer){this.feePayer=opts.feePayer}if(opts.signatures){this.signatures=opts.signatures}if(Object.prototype.hasOwnProperty.call(opts,"nonceInfo")){const{minContextSlot:minContextSlot,nonceInfo:nonceInfo}=opts;this.minNonceContextSlot=minContextSlot;this.nonceInfo=nonceInfo}else if(Object.prototype.hasOwnProperty.call(opts,"lastValidBlockHeight")){const{blockhash:blockhash,lastValidBlockHeight:lastValidBlockHeight}=opts;this.recentBlockhash=blockhash;this.lastValidBlockHeight=lastValidBlockHeight}else{const{recentBlockhash:recentBlockhash,nonceInfo:nonceInfo}=opts;if(nonceInfo){this.nonceInfo=nonceInfo}this.recentBlockhash=recentBlockhash}}toJSON(){return{recentBlockhash:this.recentBlockhash||null,feePayer:this.feePayer?this.feePayer.toJSON():null,nonceInfo:this.nonceInfo?{nonce:this.nonceInfo.nonce,nonceInstruction:this.nonceInfo.nonceInstruction.toJSON()}:null,instructions:this.instructions.map(instruction=>instruction.toJSON()),signers:this.signatures.map(({publicKey:publicKey})=>publicKey.toJSON())}}add(...items){if(items.length===0){throw new Error("No instructions")}items.forEach(item=>{if("instructions"in item){this.instructions=this.instructions.concat(item.instructions)}else if("data"in item&&"programId"in item&&"keys"in item){this.instructions.push(item)}else{this.instructions.push(new TransactionInstruction(item))}});return this}compileMessage(){if(this._message&&JSON.stringify(this.toJSON())===JSON.stringify(this._json)){return this._message}let recentBlockhash;let instructions;if(this.nonceInfo){recentBlockhash=this.nonceInfo.nonce;if(this.instructions[0]!=this.nonceInfo.nonceInstruction){instructions=[this.nonceInfo.nonceInstruction,...this.instructions]}else{instructions=this.instructions}}else{recentBlockhash=this.recentBlockhash;instructions=this.instructions}if(!recentBlockhash){throw new Error("Transaction recentBlockhash required")}if(instructions.length<1){console.warn("No instructions provided")}let feePayer;if(this.feePayer){feePayer=this.feePayer}else if(this.signatures.length>0&&this.signatures[0].publicKey){feePayer=this.signatures[0].publicKey}else{throw new Error("Transaction fee payer required")}for(let i=0;i<instructions.length;i++){if(instructions[i].programId===undefined){throw new Error(`Transaction instruction index ${i} has undefined program id`)}}const programIds=[];const accountMetas=[];instructions.forEach(instruction=>{instruction.keys.forEach(accountMeta=>{accountMetas.push({...accountMeta})});const programId=instruction.programId.toString();if(!programIds.includes(programId)){programIds.push(programId)}});programIds.forEach(programId=>{accountMetas.push({pubkey:new PublicKey(programId),isSigner:false,isWritable:false})});const uniqueMetas=[];accountMetas.forEach(accountMeta=>{const pubkeyString=accountMeta.pubkey.toString();const uniqueIndex=uniqueMetas.findIndex(x=>x.pubkey.toString()===pubkeyString);if(uniqueIndex>-1){uniqueMetas[uniqueIndex].isWritable=uniqueMetas[uniqueIndex].isWritable||accountMeta.isWritable;uniqueMetas[uniqueIndex].isSigner=uniqueMetas[uniqueIndex].isSigner||accountMeta.isSigner}else{uniqueMetas.push(accountMeta)}});uniqueMetas.sort(function(x,y){if(x.isSigner!==y.isSigner){return x.isSigner?-1:1}if(x.isWritable!==y.isWritable){return x.isWritable?-1:1}const options={localeMatcher:"best fit",usage:"sort",sensitivity:"variant",ignorePunctuation:false,numeric:false,caseFirst:"lower"};return x.pubkey.toBase58().localeCompare(y.pubkey.toBase58(),"en",options)});const feePayerIndex=uniqueMetas.findIndex(x=>x.pubkey.equals(feePayer));if(feePayerIndex>-1){const[payerMeta]=uniqueMetas.splice(feePayerIndex,1);payerMeta.isSigner=true;payerMeta.isWritable=true;uniqueMetas.unshift(payerMeta)}else{uniqueMetas.unshift({pubkey:feePayer,isSigner:true,isWritable:true})}for(const signature of this.signatures){const uniqueIndex=uniqueMetas.findIndex(x=>x.pubkey.equals(signature.publicKey));if(uniqueIndex>-1){if(!uniqueMetas[uniqueIndex].isSigner){uniqueMetas[uniqueIndex].isSigner=true;console.warn("Transaction references a signature that is unnecessary, "+"only the fee payer and instruction signer accounts should sign a transaction. "+"This behavior is deprecated and will throw an error in the next major version release.")}}else{throw new Error(`unknown signer: ${signature.publicKey.toString()}`)}}let numRequiredSignatures=0;let numReadonlySignedAccounts=0;let numReadonlyUnsignedAccounts=0;const signedKeys=[];const unsignedKeys=[];uniqueMetas.forEach(({pubkey:pubkey,isSigner:isSigner,isWritable:isWritable})=>{if(isSigner){signedKeys.push(pubkey.toString());numRequiredSignatures+=1;if(!isWritable){numReadonlySignedAccounts+=1}}else{unsignedKeys.push(pubkey.toString());if(!isWritable){numReadonlyUnsignedAccounts+=1}}});const accountKeys=signedKeys.concat(unsignedKeys);const compiledInstructions=instructions.map(instruction=>{const{data:data,programId:programId}=instruction;return{programIdIndex:accountKeys.indexOf(programId.toString()),accounts:instruction.keys.map(meta=>accountKeys.indexOf(meta.pubkey.toString())),data:bs58.encode(data)}});compiledInstructions.forEach(instruction=>{assert(instruction.programIdIndex>=0);instruction.accounts.forEach(keyIndex=>assert(keyIndex>=0))});return new Message({header:{numRequiredSignatures:numRequiredSignatures,numReadonlySignedAccounts:numReadonlySignedAccounts,numReadonlyUnsignedAccounts:numReadonlyUnsignedAccounts},accountKeys:accountKeys,recentBlockhash:recentBlockhash,instructions:compiledInstructions})}_compile(){const message=this.compileMessage();const signedKeys=message.accountKeys.slice(0,message.header.numRequiredSignatures);if(this.signatures.length===signedKeys.length){const valid=this.signatures.every((pair,index)=>signedKeys[index].equals(pair.publicKey));if(valid)return message}this.signatures=signedKeys.map(publicKey=>({signature:null,publicKey:publicKey}));return message}serializeMessage(){return this._compile().serialize()}async getEstimatedFee(connection){return(await connection.getFeeForMessage(this.compileMessage())).value}setSigners(...signers){if(signers.length===0){throw new Error("No signers")}const seen=new Set;this.signatures=signers.filter(publicKey=>{const key=publicKey.toString();if(seen.has(key)){return false}else{seen.add(key);return true}}).map(publicKey=>({signature:null,publicKey:publicKey}))}sign(...signers){if(signers.length===0){throw new Error("No signers")}const seen=new Set;const uniqueSigners=[];for(const signer of signers){const key=signer.publicKey.toString();if(seen.has(key)){continue}else{seen.add(key);uniqueSigners.push(signer)}}this.signatures=uniqueSigners.map(signer=>({signature:null,publicKey:signer.publicKey}));const message=this._compile();this._partialSign(message,...uniqueSigners)}partialSign(...signers){if(signers.length===0){throw new Error("No signers")}const seen=new Set;const uniqueSigners=[];for(const signer of signers){const key=signer.publicKey.toString();if(seen.has(key)){continue}else{seen.add(key);uniqueSigners.push(signer)}}const message=this._compile();this._partialSign(message,...uniqueSigners)}_partialSign(message,...signers){const signData=message.serialize();signers.forEach(signer=>{const signature=sign(signData,signer.secretKey);this._addSignature(signer.publicKey,toBuffer(signature))})}addSignature(pubkey,signature){this._compile();this._addSignature(pubkey,signature)}_addSignature(pubkey,signature){assert(signature.length===64);const index=this.signatures.findIndex(sigpair=>pubkey.equals(sigpair.publicKey));if(index<0){throw new Error(`unknown signer: ${pubkey.toString()}`)}this.signatures[index].signature=bufferExports.Buffer.from(signature)}verifySignatures(requireAllSignatures=true){const signatureErrors=this._getMessageSignednessErrors(this.serializeMessage(),requireAllSignatures);return!signatureErrors}_getMessageSignednessErrors(message,requireAllSignatures){const errors={};for(const{signature:signature,publicKey:publicKey}of this.signatures){if(signature===null){if(requireAllSignatures){(errors.missing||=[]).push(publicKey)}}else{if(!verify(signature,message,publicKey.toBytes())){(errors.invalid||=[]).push(publicKey)}}}return errors.invalid||errors.missing?errors:undefined}serialize(config){const{requireAllSignatures:requireAllSignatures,verifySignatures:verifySignatures}=Object.assign({requireAllSignatures:true,verifySignatures:true},config);const signData=this.serializeMessage();if(verifySignatures){const sigErrors=this._getMessageSignednessErrors(signData,requireAllSignatures);if(sigErrors){let errorMessage="Signature verification failed.";if(sigErrors.invalid){errorMessage+=`\nInvalid signature for public key${sigErrors.invalid.length===1?"":"(s)"} [\`${sigErrors.invalid.map(p=>p.toBase58()).join("`, `")}\`].`}if(sigErrors.missing){errorMessage+=`\nMissing signature for public key${sigErrors.missing.length===1?"":"(s)"} [\`${sigErrors.missing.map(p=>p.toBase58()).join("`, `")}\`].`}throw new Error(errorMessage)}}return this._serialize(signData)}_serialize(signData){const{signatures:signatures}=this;const signatureCount=[];encodeLength(signatureCount,signatures.length);const transactionLength=signatureCount.length+signatures.length*64+signData.length;const wireTransaction=bufferExports.Buffer.alloc(transactionLength);assert(signatures.length<256);bufferExports.Buffer.from(signatureCount).copy(wireTransaction,0);signatures.forEach(({signature:signature},index)=>{if(signature!==null){assert(signature.length===64,`signature has invalid length`);bufferExports.Buffer.from(signature).copy(wireTransaction,signatureCount.length+index*64)}});signData.copy(wireTransaction,signatureCount.length+signatures.length*64);assert(wireTransaction.length<=PACKET_DATA_SIZE,`Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`);return wireTransaction}get keys(){assert(this.instructions.length===1);return this.instructions[0].keys.map(keyObj=>keyObj.pubkey)}get programId(){assert(this.instructions.length===1);return this.instructions[0].programId}get data(){assert(this.instructions.length===1);return this.instructions[0].data}static from(buffer){let byteArray=[...buffer];const signatureCount=decodeLength(byteArray);let signatures=[];for(let i=0;i<signatureCount;i++){const signature=guardedSplice(byteArray,0,SIGNATURE_LENGTH_IN_BYTES);signatures.push(bs58.encode(bufferExports.Buffer.from(signature)))}return Transaction.populate(Message.from(byteArray),signatures)}static populate(message,signatures=[]){const transaction=new Transaction;transaction.recentBlockhash=message.recentBlockhash;if(message.header.numRequiredSignatures>0){transaction.feePayer=message.accountKeys[0]}signatures.forEach((signature,index)=>{const sigPubkeyPair={signature:signature==bs58.encode(DEFAULT_SIGNATURE)?null:bs58.decode(signature),publicKey:message.accountKeys[index]};transaction.signatures.push(sigPubkeyPair)});message.instructions.forEach(instruction=>{const keys=instruction.accounts.map(account=>{const pubkey=message.accountKeys[account];return{pubkey:pubkey,isSigner:transaction.signatures.some(keyObj=>keyObj.publicKey.toString()===pubkey.toString())||message.isAccountSigner(account),isWritable:message.isAccountWritable(account)}});transaction.instructions.push(new TransactionInstruction({keys:keys,programId:message.accountKeys[instruction.programIdIndex],data:bs58.decode(instruction.data)}))});transaction._message=message;transaction._json=transaction.toJSON();return transaction}}const SYSVAR_CLOCK_PUBKEY=new PublicKey("SysvarC1ock11111111111111111111111111111111");new PublicKey("SysvarEpochSchedu1e111111111111111111111111");new PublicKey("Sysvar1nstructions1111111111111111111111111");const SYSVAR_RECENT_BLOCKHASHES_PUBKEY=new PublicKey("SysvarRecentB1ockHashes11111111111111111111");const SYSVAR_RENT_PUBKEY=new PublicKey("SysvarRent111111111111111111111111111111111");new PublicKey("SysvarRewards111111111111111111111111111111");new PublicKey("SysvarS1otHashes111111111111111111111111111");new PublicKey("SysvarS1otHistory11111111111111111111111111");const SYSVAR_STAKE_HISTORY_PUBKEY=new PublicKey("SysvarStakeHistory1111111111111111111111111");function encodeData$1(type,fields){const allocLength=type.layout.span>=0?type.layout.span:getAlloc(type,fields);const data=bufferExports.Buffer.alloc(allocLength);const layoutFields=Object.assign({instruction:type.index},fields);type.layout.encode(layoutFields,data);return data}const FeeCalculatorLayout=LayoutExports$1.nu64("lamportsPerSignature");const NonceAccountLayout=LayoutExports$1.struct([LayoutExports$1.u32("version"),LayoutExports$1.u32("state"),publicKey$2("authorizedPubkey"),publicKey$2("nonce"),LayoutExports$1.struct([FeeCalculatorLayout],"feeCalculator")]);const NONCE_ACCOUNT_LENGTH=NonceAccountLayout.span;function u64$2(property){const layout=LayoutExports$1.blob(8,property);const decode=layout.decode.bind(layout);const encode=layout.encode.bind(layout);const bigIntLayout=layout;const codec=getU64Codec();bigIntLayout.decode=(buffer,offset)=>{const src=decode(buffer,offset);return codec.decode(src)};bigIntLayout.encode=(bigInt,buffer,offset)=>{const src=codec.encode(bigInt);return encode(src,buffer,offset)};return bigIntLayout}const SYSTEM_INSTRUCTION_LAYOUTS=Object.freeze({Create:{index:0,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("lamports"),LayoutExports$1.ns64("space"),publicKey$2("programId")])},Assign:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("programId")])},Transfer:{index:2,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),u64$2("lamports")])},CreateWithSeed:{index:3,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("base"),rustString("seed"),LayoutExports$1.ns64("lamports"),LayoutExports$1.ns64("space"),publicKey$2("programId")])},AdvanceNonceAccount:{index:4,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},WithdrawNonceAccount:{index:5,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("lamports")])},InitializeNonceAccount:{index:6,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("authorized")])},AuthorizeNonceAccount:{index:7,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("authorized")])},Allocate:{index:8,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("space")])},AllocateWithSeed:{index:9,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("base"),rustString("seed"),LayoutExports$1.ns64("space"),publicKey$2("programId")])},AssignWithSeed:{index:10,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("base"),rustString("seed"),publicKey$2("programId")])},TransferWithSeed:{index:11,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),u64$2("lamports"),rustString("seed"),publicKey$2("programId")])},UpgradeNonceAccount:{index:12,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])}});class SystemProgram{constructor(){}static createAccount(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.Create;const data=encodeData$1(type,{lamports:params.lamports,space:params.space,programId:toBuffer(params.programId.toBuffer())});return new TransactionInstruction({keys:[{pubkey:params.fromPubkey,isSigner:true,isWritable:true},{pubkey:params.newAccountPubkey,isSigner:true,isWritable:true}],programId:this.programId,data:data})}static transfer(params){let data;let keys;if("basePubkey"in params){const type=SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;data=encodeData$1(type,{lamports:BigInt(params.lamports),seed:params.seed,programId:toBuffer(params.programId.toBuffer())});keys=[{pubkey:params.fromPubkey,isSigner:false,isWritable:true},{pubkey:params.basePubkey,isSigner:true,isWritable:false},{pubkey:params.toPubkey,isSigner:false,isWritable:true}]}else{const type=SYSTEM_INSTRUCTION_LAYOUTS.Transfer;data=encodeData$1(type,{lamports:BigInt(params.lamports)});keys=[{pubkey:params.fromPubkey,isSigner:true,isWritable:true},{pubkey:params.toPubkey,isSigner:false,isWritable:true}]}return new TransactionInstruction({keys:keys,programId:this.programId,data:data})}static assign(params){let data;let keys;if("basePubkey"in params){const type=SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;data=encodeData$1(type,{base:toBuffer(params.basePubkey.toBuffer()),seed:params.seed,programId:toBuffer(params.programId.toBuffer())});keys=[{pubkey:params.accountPubkey,isSigner:false,isWritable:true},{pubkey:params.basePubkey,isSigner:true,isWritable:false}]}else{const type=SYSTEM_INSTRUCTION_LAYOUTS.Assign;data=encodeData$1(type,{programId:toBuffer(params.programId.toBuffer())});keys=[{pubkey:params.accountPubkey,isSigner:true,isWritable:true}]}return new TransactionInstruction({keys:keys,programId:this.programId,data:data})}static createAccountWithSeed(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;const data=encodeData$1(type,{base:toBuffer(params.basePubkey.toBuffer()),seed:params.seed,lamports:params.lamports,space:params.space,programId:toBuffer(params.programId.toBuffer())});let keys=[{pubkey:params.fromPubkey,isSigner:true,isWritable:true},{pubkey:params.newAccountPubkey,isSigner:false,isWritable:true}];if(!params.basePubkey.equals(params.fromPubkey)){keys.push({pubkey:params.basePubkey,isSigner:true,isWritable:false})}return new TransactionInstruction({keys:keys,programId:this.programId,data:data})}static createNonceAccount(params){const transaction=new Transaction;if("basePubkey"in params&&"seed"in params){transaction.add(SystemProgram.createAccountWithSeed({fromPubkey:params.fromPubkey,newAccountPubkey:params.noncePubkey,basePubkey:params.basePubkey,seed:params.seed,lamports:params.lamports,space:NONCE_ACCOUNT_LENGTH,programId:this.programId}))}else{transaction.add(SystemProgram.createAccount({fromPubkey:params.fromPubkey,newAccountPubkey:params.noncePubkey,lamports:params.lamports,space:NONCE_ACCOUNT_LENGTH,programId:this.programId}))}const initParams={noncePubkey:params.noncePubkey,authorizedPubkey:params.authorizedPubkey};transaction.add(this.nonceInitialize(initParams));return transaction}static nonceInitialize(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;const data=encodeData$1(type,{authorized:toBuffer(params.authorizedPubkey.toBuffer())});const instructionData={keys:[{pubkey:params.noncePubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false}],programId:this.programId,data:data};return new TransactionInstruction(instructionData)}static nonceAdvance(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;const data=encodeData$1(type);const instructionData={keys:[{pubkey:params.noncePubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:false,isWritable:false},{pubkey:params.authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data};return new TransactionInstruction(instructionData)}static nonceWithdraw(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;const data=encodeData$1(type,{lamports:params.lamports});return new TransactionInstruction({keys:[{pubkey:params.noncePubkey,isSigner:false,isWritable:true},{pubkey:params.toPubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_RECENT_BLOCKHASHES_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false},{pubkey:params.authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}static nonceAuthorize(params){const type=SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;const data=encodeData$1(type,{authorized:toBuffer(params.newAuthorizedPubkey.toBuffer())});return new TransactionInstruction({keys:[{pubkey:params.noncePubkey,isSigner:false,isWritable:true},{pubkey:params.authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}static allocate(params){let data;let keys;if("basePubkey"in params){const type=SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;data=encodeData$1(type,{base:toBuffer(params.basePubkey.toBuffer()),seed:params.seed,space:params.space,programId:toBuffer(params.programId.toBuffer())});keys=[{pubkey:params.accountPubkey,isSigner:false,isWritable:true},{pubkey:params.basePubkey,isSigner:true,isWritable:false}]}else{const type=SYSTEM_INSTRUCTION_LAYOUTS.Allocate;data=encodeData$1(type,{space:params.space});keys=[{pubkey:params.accountPubkey,isSigner:true,isWritable:true}]}return new TransactionInstruction({keys:keys,programId:this.programId,data:data})}}SystemProgram.programId=new PublicKey("11111111111111111111111111111111");new PublicKey("BPFLoader2111111111111111111111111111111111");({layout:LayoutExports$1.struct([LayoutExports$1.u32("typeIndex"),u64$2("deactivationSlot"),LayoutExports$1.nu64("lastExtendedSlot"),LayoutExports$1.u8("lastExtendedStartIndex"),LayoutExports$1.u8(),LayoutExports$1.seq(publicKey$2(),LayoutExports$1.offset(LayoutExports$1.u8(),-1),"authority")])});const PublicKeyFromString$1=coerce(instance(PublicKey),string(),value=>new PublicKey(value));const RawAccountDataResult=tuple([string(),literal("base64")]);const BufferFromRawAccountData=coerce(instance(bufferExports.Buffer),RawAccountDataResult,value=>bufferExports.Buffer.from(value[0],"base64"));function createRpcResult(result){return union([type({jsonrpc:literal("2.0"),id:string(),result:result}),type({jsonrpc:literal("2.0"),id:string(),error:type({code:unknown(),message:string(),data:optional(any())})})])}const UnknownRpcResult=createRpcResult(unknown());function jsonRpcResult(schema){return coerce(createRpcResult(schema),UnknownRpcResult,value=>{if("error"in value){return value}else{return{...value,result:create(value.result,schema)}}})}function jsonRpcResultAndContext(value){return jsonRpcResult(type({context:type({slot:number()}),value:value}))}function notificationResultAndContext(value){return type({context:type({slot:number()}),value:value})}const GetInflationGovernorResult=type({foundation:number(),foundationTerm:number(),initial:number(),taper:number(),terminal:number()});jsonRpcResult(array(nullable(type({epoch:number(),effectiveSlot:number(),amount:number(),postBalance:number(),commission:optional(nullable(number()))}))));const GetRecentPrioritizationFeesResult=array(type({slot:number(),prioritizationFee:number()}));const GetInflationRateResult=type({total:number(),validator:number(),foundation:number(),epoch:number()});const GetEpochInfoResult=type({epoch:number(),slotIndex:number(),slotsInEpoch:number(),absoluteSlot:number(),blockHeight:optional(number()),transactionCount:optional(number())});const GetEpochScheduleResult=type({slotsPerEpoch:number(),leaderScheduleSlotOffset:number(),warmup:boolean(),firstNormalEpoch:number(),firstNormalSlot:number()});const GetLeaderScheduleResult=record(string(),array(number()));const TransactionErrorResult=nullable(union([type({}),string()]));const SignatureStatusResult=type({err:TransactionErrorResult});const SignatureReceivedResult=literal("receivedSignature");type({"solana-core":string(),"feature-set":optional(number())});const ParsedInstructionStruct=type({program:string(),programId:PublicKeyFromString$1,parsed:unknown()});const PartiallyDecodedInstructionStruct=type({programId:PublicKeyFromString$1,accounts:array(PublicKeyFromString$1),data:string()});jsonRpcResultAndContext(type({err:nullable(union([type({}),string()])),logs:nullable(array(string())),accounts:optional(nullable(array(nullable(type({executable:boolean(),owner:string(),lamports:number(),data:array(string()),rentEpoch:optional(number())}))))),unitsConsumed:optional(number()),returnData:optional(nullable(type({programId:string(),data:tuple([string(),literal("base64")])}))),innerInstructions:optional(nullable(array(type({index:number(),instructions:array(union([ParsedInstructionStruct,PartiallyDecodedInstructionStruct]))}))))}));jsonRpcResultAndContext(type({byIdentity:record(string(),array(number())),range:type({firstSlot:number(),lastSlot:number()})}));jsonRpcResult(GetInflationGovernorResult);jsonRpcResult(GetInflationRateResult);jsonRpcResult(GetRecentPrioritizationFeesResult);jsonRpcResult(GetEpochInfoResult);jsonRpcResult(GetEpochScheduleResult);jsonRpcResult(GetLeaderScheduleResult);jsonRpcResult(number());jsonRpcResultAndContext(type({total:number(),circulating:number(),nonCirculating:number(),nonCirculatingAccounts:array(PublicKeyFromString$1)}));const TokenAmountResult=type({amount:string(),uiAmount:nullable(number()),decimals:number(),uiAmountString:optional(string())});jsonRpcResultAndContext(array(type({address:PublicKeyFromString$1,amount:string(),uiAmount:nullable(number()),decimals:number(),uiAmountString:optional(string())})));jsonRpcResultAndContext(array(type({pubkey:PublicKeyFromString$1,account:type({executable:boolean(),owner:PublicKeyFromString$1,lamports:number(),data:BufferFromRawAccountData,rentEpoch:number()})})));const ParsedAccountDataResult=type({program:string(),parsed:unknown(),space:number()});jsonRpcResultAndContext(array(type({pubkey:PublicKeyFromString$1,account:type({executable:boolean(),owner:PublicKeyFromString$1,lamports:number(),data:ParsedAccountDataResult,rentEpoch:number()})})));jsonRpcResultAndContext(array(type({lamports:number(),address:PublicKeyFromString$1})));const AccountInfoResult=type({executable:boolean(),owner:PublicKeyFromString$1,lamports:number(),data:BufferFromRawAccountData,rentEpoch:number()});type({pubkey:PublicKeyFromString$1,account:AccountInfoResult});const ParsedOrRawAccountData=coerce(union([instance(bufferExports.Buffer),ParsedAccountDataResult]),union([RawAccountDataResult,ParsedAccountDataResult]),value=>{if(Array.isArray(value)){return create(value,BufferFromRawAccountData)}else{return value}});const ParsedAccountInfoResult=type({executable:boolean(),owner:PublicKeyFromString$1,lamports:number(),data:ParsedOrRawAccountData,rentEpoch:number()});type({pubkey:PublicKeyFromString$1,account:ParsedAccountInfoResult});type({state:union([literal("active"),literal("inactive"),literal("activating"),literal("deactivating")]),active:number(),inactive:number()});jsonRpcResult(array(type({signature:string(),slot:number(),err:TransactionErrorResult,memo:nullable(string()),blockTime:optional(nullable(number()))})));jsonRpcResult(array(type({signature:string(),slot:number(),err:TransactionErrorResult,memo:nullable(string()),blockTime:optional(nullable(number()))})));type({subscription:number(),result:notificationResultAndContext(AccountInfoResult)});const ProgramAccountInfoResult=type({pubkey:PublicKeyFromString$1,account:AccountInfoResult});type({subscription:number(),result:notificationResultAndContext(ProgramAccountInfoResult)});const SlotInfoResult=type({parent:number(),slot:number(),root:number()});type({subscription:number(),result:SlotInfoResult});const SlotUpdateResult=union([type({type:union([literal("firstShredReceived"),literal("completed"),literal("optimisticConfirmation"),literal("root")]),slot:number(),timestamp:number()}),type({type:literal("createdBank"),parent:number(),slot:number(),timestamp:number()}),type({type:literal("frozen"),slot:number(),timestamp:number(),stats:type({numTransactionEntries:number(),numSuccessfulTransactions:number(),numFailedTransactions:number(),maxTransactionsPerEntry:number()})}),type({type:literal("dead"),slot:number(),timestamp:number(),err:string()})]);type({subscription:number(),result:SlotUpdateResult});type({subscription:number(),result:notificationResultAndContext(union([SignatureStatusResult,SignatureReceivedResult]))});type({subscription:number(),result:number()});type({pubkey:string(),gossip:nullable(string()),tpu:nullable(string()),rpc:nullable(string()),version:nullable(string())});const VoteAccountInfoResult=type({votePubkey:string(),nodePubkey:string(),activatedStake:number(),epochVoteAccount:boolean(),epochCredits:array(tuple([number(),number(),number()])),commission:number(),lastVote:number(),rootSlot:nullable(number())});jsonRpcResult(type({current:array(VoteAccountInfoResult),delinquent:array(VoteAccountInfoResult)}));const ConfirmationStatus=union([literal("processed"),literal("confirmed"),literal("finalized")]);const SignatureStatusResponse=type({slot:number(),confirmations:nullable(number()),err:TransactionErrorResult,confirmationStatus:optional(ConfirmationStatus)});jsonRpcResultAndContext(array(nullable(SignatureStatusResponse)));jsonRpcResult(number());const AddressTableLookupStruct=type({accountKey:PublicKeyFromString$1,writableIndexes:array(number()),readonlyIndexes:array(number())});const ConfirmedTransactionResult=type({signatures:array(string()),message:type({accountKeys:array(string()),header:type({numRequiredSignatures:number(),numReadonlySignedAccounts:number(),numReadonlyUnsignedAccounts:number()}),instructions:array(type({accounts:array(number()),data:string(),programIdIndex:number()})),recentBlockhash:string(),addressTableLookups:optional(array(AddressTableLookupStruct))})});const AnnotatedAccountKey=type({pubkey:PublicKeyFromString$1,signer:boolean(),writable:boolean(),source:optional(union([literal("transaction"),literal("lookupTable")]))});const ConfirmedTransactionAccountsModeResult=type({accountKeys:array(AnnotatedAccountKey),signatures:array(string())});const ParsedInstructionResult=type({parsed:unknown(),program:string(),programId:PublicKeyFromString$1});const RawInstructionResult=type({accounts:array(PublicKeyFromString$1),data:string(),programId:PublicKeyFromString$1});const InstructionResult=union([RawInstructionResult,ParsedInstructionResult]);const UnknownInstructionResult=union([type({parsed:unknown(),program:string(),programId:string()}),type({accounts:array(string()),data:string(),programId:string()})]);const ParsedOrRawInstruction=coerce(InstructionResult,UnknownInstructionResult,value=>{if("accounts"in value){return create(value,RawInstructionResult)}else{return create(value,ParsedInstructionResult)}});const ParsedConfirmedTransactionResult=type({signatures:array(string()),message:type({accountKeys:array(AnnotatedAccountKey),instructions:array(ParsedOrRawInstruction),recentBlockhash:string(),addressTableLookups:optional(nullable(array(AddressTableLookupStruct)))})});const TokenBalanceResult=type({accountIndex:number(),mint:string(),owner:optional(string()),programId:optional(string()),uiTokenAmount:TokenAmountResult});const LoadedAddressesResult=type({writable:array(PublicKeyFromString$1),readonly:array(PublicKeyFromString$1)});const ConfirmedTransactionMetaResult=type({err:TransactionErrorResult,fee:number(),innerInstructions:optional(nullable(array(type({index:number(),instructions:array(type({accounts:array(number()),data:string(),programIdIndex:number()}))})))),preBalances:array(number()),postBalances:array(number()),logMessages:optional(nullable(array(string()))),preTokenBalances:optional(nullable(array(TokenBalanceResult))),postTokenBalances:optional(nullable(array(TokenBalanceResult))),loadedAddresses:optional(LoadedAddressesResult),computeUnitsConsumed:optional(number()),costUnits:optional(number())});const ParsedConfirmedTransactionMetaResult=type({err:TransactionErrorResult,fee:number(),innerInstructions:optional(nullable(array(type({index:number(),instructions:array(ParsedOrRawInstruction)})))),preBalances:array(number()),postBalances:array(number()),logMessages:optional(nullable(array(string()))),preTokenBalances:optional(nullable(array(TokenBalanceResult))),postTokenBalances:optional(nullable(array(TokenBalanceResult))),loadedAddresses:optional(LoadedAddressesResult),computeUnitsConsumed:optional(number()),costUnits:optional(number())});const TransactionVersionStruct=union([literal(0),literal("legacy")]);const RewardsResult=type({pubkey:string(),lamports:number(),postBalance:nullable(number()),rewardType:nullable(string()),commission:optional(nullable(number()))});jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),transactions:array(type({transaction:ConfirmedTransactionResult,meta:nullable(ConfirmedTransactionMetaResult),version:optional(TransactionVersionStruct)})),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),transactions:array(type({transaction:ConfirmedTransactionAccountsModeResult,meta:nullable(ConfirmedTransactionMetaResult),version:optional(TransactionVersionStruct)})),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),transactions:array(type({transaction:ParsedConfirmedTransactionResult,meta:nullable(ParsedConfirmedTransactionMetaResult),version:optional(TransactionVersionStruct)})),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),transactions:array(type({transaction:ConfirmedTransactionAccountsModeResult,meta:nullable(ParsedConfirmedTransactionMetaResult),version:optional(TransactionVersionStruct)})),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),rewards:optional(array(RewardsResult)),blockTime:nullable(number()),blockHeight:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),transactions:array(type({transaction:ConfirmedTransactionResult,meta:nullable(ConfirmedTransactionMetaResult)})),rewards:optional(array(RewardsResult)),blockTime:nullable(number())})));jsonRpcResult(nullable(type({blockhash:string(),previousBlockhash:string(),parentSlot:number(),signatures:array(string()),blockTime:nullable(number())})));jsonRpcResult(nullable(type({slot:number(),meta:nullable(ConfirmedTransactionMetaResult),blockTime:optional(nullable(number())),transaction:ConfirmedTransactionResult,version:optional(TransactionVersionStruct)})));jsonRpcResult(nullable(type({slot:number(),transaction:ParsedConfirmedTransactionResult,meta:nullable(ParsedConfirmedTransactionMetaResult),blockTime:optional(nullable(number())),version:optional(TransactionVersionStruct)})));jsonRpcResultAndContext(type({blockhash:string(),lastValidBlockHeight:number()}));jsonRpcResultAndContext(boolean());const PerfSampleResult=type({slot:number(),numTransactions:number(),numSlots:number(),samplePeriodSecs:number()});jsonRpcResult(array(PerfSampleResult));jsonRpcResultAndContext(nullable(type({feeCalculator:type({lamportsPerSignature:number()})})));jsonRpcResult(string());jsonRpcResult(string());const LogsResult=type({err:TransactionErrorResult,logs:array(string()),signature:string()});type({result:notificationResultAndContext(LogsResult),subscription:number()});class Keypair{constructor(keypair){this._keypair=void 0;this._keypair=keypair??generateKeypair()}static generate(){return new Keypair(generateKeypair())}static fromSecretKey(secretKey,options){if(secretKey.byteLength!==64){throw new Error("bad secret key size")}const publicKey=secretKey.slice(32,64);if(!options||!options.skipValidation){const privateScalar=secretKey.slice(0,32);const computedPublicKey=getPublicKey(privateScalar);for(let ii=0;ii<32;ii++){if(publicKey[ii]!==computedPublicKey[ii]){throw new Error("provided secretKey is invalid")}}}return new Keypair({publicKey:publicKey,secretKey:secretKey})}static fromSeed(seed){const publicKey=getPublicKey(seed);const secretKey=new Uint8Array(64);secretKey.set(seed);secretKey.set(publicKey,32);return new Keypair({publicKey:publicKey,secretKey:secretKey})}get publicKey(){return new PublicKey(this._keypair.publicKey)}get secretKey(){return new Uint8Array(this._keypair.secretKey)}}Object.freeze({CreateLookupTable:{index:0,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),u64$2("recentSlot"),LayoutExports$1.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},ExtendLookupTable:{index:2,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),u64$2(),LayoutExports$1.seq(publicKey$2(),LayoutExports$1.offset(LayoutExports$1.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},CloseLookupTable:{index:4,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])}});new PublicKey("AddressLookupTab1e1111111111111111111111111");Object.freeze({RequestUnits:{index:0,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("units"),LayoutExports$1.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("units")])},SetComputeUnitPrice:{index:3,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),u64$2("microLamports")])}});new PublicKey("ComputeBudget111111111111111111111111111111");LayoutExports$1.struct([LayoutExports$1.u8("numSignatures"),LayoutExports$1.u8("padding"),LayoutExports$1.u16("signatureOffset"),LayoutExports$1.u16("signatureInstructionIndex"),LayoutExports$1.u16("publicKeyOffset"),LayoutExports$1.u16("publicKeyInstructionIndex"),LayoutExports$1.u16("messageDataOffset"),LayoutExports$1.u16("messageDataSize"),LayoutExports$1.u16("messageInstructionIndex")]);new PublicKey("Ed25519SigVerify111111111111111111111111111");secp256k1.utils.isValidPrivateKey;LayoutExports$1.struct([LayoutExports$1.u8("numSignatures"),LayoutExports$1.u16("signatureOffset"),LayoutExports$1.u8("signatureInstructionIndex"),LayoutExports$1.u16("ethAddressOffset"),LayoutExports$1.u8("ethAddressInstructionIndex"),LayoutExports$1.u16("messageDataOffset"),LayoutExports$1.u16("messageDataSize"),LayoutExports$1.u8("messageInstructionIndex"),LayoutExports$1.blob(20,"ethAddress"),LayoutExports$1.blob(64,"signature"),LayoutExports$1.u8("recoveryId")]);new PublicKey("KeccakSecp256k11111111111111111111111111111");var _Lockup;const STAKE_CONFIG_ID=new PublicKey("StakeConfig11111111111111111111111111111111");class Lockup{constructor(unixTimestamp,epoch,custodian){this.unixTimestamp=void 0;this.epoch=void 0;this.custodian=void 0;this.unixTimestamp=unixTimestamp;this.epoch=epoch;this.custodian=custodian}}_Lockup=Lockup;Lockup.default=new _Lockup(0,0,PublicKey.default);const STAKE_INSTRUCTION_LAYOUTS=Object.freeze({Initialize:{index:0,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),authorized(),lockup()])},Authorize:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("newAuthorized"),LayoutExports$1.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},Split:{index:3,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("lamports")])},Withdraw:{index:4,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("lamports")])},Deactivate:{index:5,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},Merge:{index:7,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("newAuthorized"),LayoutExports$1.u32("stakeAuthorizationType"),rustString("authoritySeed"),publicKey$2("authorityOwner")])}});const StakeAuthorizationLayout=Object.freeze({Staker:{index:0},Withdrawer:{index:1}});class StakeProgram{constructor(){}static initialize(params){const{stakePubkey:stakePubkey,authorized:authorized,lockup:maybeLockup}=params;const lockup=maybeLockup||Lockup.default;const type=STAKE_INSTRUCTION_LAYOUTS.Initialize;const data=encodeData$1(type,{authorized:{staker:toBuffer(authorized.staker.toBuffer()),withdrawer:toBuffer(authorized.withdrawer.toBuffer())},lockup:{unixTimestamp:lockup.unixTimestamp,epoch:lockup.epoch,custodian:toBuffer(lockup.custodian.toBuffer())}});const instructionData={keys:[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false}],programId:this.programId,data:data};return new TransactionInstruction(instructionData)}static createAccountWithSeed(params){const transaction=new Transaction;transaction.add(SystemProgram.createAccountWithSeed({fromPubkey:params.fromPubkey,newAccountPubkey:params.stakePubkey,basePubkey:params.basePubkey,seed:params.seed,lamports:params.lamports,space:this.space,programId:this.programId}));const{stakePubkey:stakePubkey,authorized:authorized,lockup:lockup}=params;return transaction.add(this.initialize({stakePubkey:stakePubkey,authorized:authorized,lockup:lockup}))}static createAccount(params){const transaction=new Transaction;transaction.add(SystemProgram.createAccount({fromPubkey:params.fromPubkey,newAccountPubkey:params.stakePubkey,lamports:params.lamports,space:this.space,programId:this.programId}));const{stakePubkey:stakePubkey,authorized:authorized,lockup:lockup}=params;return transaction.add(this.initialize({stakePubkey:stakePubkey,authorized:authorized,lockup:lockup}))}static delegate(params){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,votePubkey:votePubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Delegate;const data=encodeData$1(type);return(new Transaction).add({keys:[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:votePubkey,isSigner:false,isWritable:false},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:STAKE_CONFIG_ID,isSigner:false,isWritable:false},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}static authorize(params){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,newAuthorizedPubkey:newAuthorizedPubkey,stakeAuthorizationType:stakeAuthorizationType,custodianPubkey:custodianPubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Authorize;const data=encodeData$1(type,{newAuthorized:toBuffer(newAuthorizedPubkey.toBuffer()),stakeAuthorizationType:stakeAuthorizationType.index});const keys=[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:true},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}];if(custodianPubkey){keys.push({pubkey:custodianPubkey,isSigner:true,isWritable:false})}return(new Transaction).add({keys:keys,programId:this.programId,data:data})}static authorizeWithSeed(params){const{stakePubkey:stakePubkey,authorityBase:authorityBase,authoritySeed:authoritySeed,authorityOwner:authorityOwner,newAuthorizedPubkey:newAuthorizedPubkey,stakeAuthorizationType:stakeAuthorizationType,custodianPubkey:custodianPubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;const data=encodeData$1(type,{newAuthorized:toBuffer(newAuthorizedPubkey.toBuffer()),stakeAuthorizationType:stakeAuthorizationType.index,authoritySeed:authoritySeed,authorityOwner:toBuffer(authorityOwner.toBuffer())});const keys=[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:authorityBase,isSigner:true,isWritable:false},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false}];if(custodianPubkey){keys.push({pubkey:custodianPubkey,isSigner:true,isWritable:false})}return(new Transaction).add({keys:keys,programId:this.programId,data:data})}static splitInstruction(params){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,splitStakePubkey:splitStakePubkey,lamports:lamports}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Split;const data=encodeData$1(type,{lamports:lamports});return new TransactionInstruction({keys:[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:splitStakePubkey,isSigner:false,isWritable:true},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}static split(params,rentExemptReserve){const transaction=new Transaction;transaction.add(SystemProgram.createAccount({fromPubkey:params.authorizedPubkey,newAccountPubkey:params.splitStakePubkey,lamports:rentExemptReserve,space:this.space,programId:this.programId}));return transaction.add(this.splitInstruction(params))}static splitWithSeed(params,rentExemptReserve){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,splitStakePubkey:splitStakePubkey,basePubkey:basePubkey,seed:seed,lamports:lamports}=params;const transaction=new Transaction;transaction.add(SystemProgram.allocate({accountPubkey:splitStakePubkey,basePubkey:basePubkey,seed:seed,space:this.space,programId:this.programId}));if(rentExemptReserve&&rentExemptReserve>0){transaction.add(SystemProgram.transfer({fromPubkey:params.authorizedPubkey,toPubkey:splitStakePubkey,lamports:rentExemptReserve}))}return transaction.add(this.splitInstruction({stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,splitStakePubkey:splitStakePubkey,lamports:lamports}))}static merge(params){const{stakePubkey:stakePubkey,sourceStakePubKey:sourceStakePubKey,authorizedPubkey:authorizedPubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Merge;const data=encodeData$1(type);return(new Transaction).add({keys:[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:sourceStakePubKey,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}static withdraw(params){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey,toPubkey:toPubkey,lamports:lamports,custodianPubkey:custodianPubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Withdraw;const data=encodeData$1(type,{lamports:lamports});const keys=[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:toPubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}];if(custodianPubkey){keys.push({pubkey:custodianPubkey,isSigner:true,isWritable:false})}return(new Transaction).add({keys:keys,programId:this.programId,data:data})}static deactivate(params){const{stakePubkey:stakePubkey,authorizedPubkey:authorizedPubkey}=params;const type=STAKE_INSTRUCTION_LAYOUTS.Deactivate;const data=encodeData$1(type);return(new Transaction).add({keys:[{pubkey:stakePubkey,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:authorizedPubkey,isSigner:true,isWritable:false}],programId:this.programId,data:data})}}StakeProgram.programId=new PublicKey("Stake11111111111111111111111111111111111111");StakeProgram.space=200;Object.freeze({InitializeAccount:{index:0,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),voteInit()])},Authorize:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),publicKey$2("newAuthorized"),LayoutExports$1.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),LayoutExports$1.ns64("lamports")])},UpdateValidatorIdentity:{index:4,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction")])},AuthorizeWithSeed:{index:10,layout:LayoutExports$1.struct([LayoutExports$1.u32("instruction"),voteAuthorizeWithSeedArgs()])}});new PublicKey("Vote111111111111111111111111111111111111111");new PublicKey("Va1idator1nfo111111111111111111111111111111");type({name:string(),website:optional(string()),details:optional(string()),iconUrl:optional(string()),keybaseUsername:optional(string())});new PublicKey("Vote111111111111111111111111111111111111111");LayoutExports$1.struct([publicKey$2("nodePubkey"),publicKey$2("authorizedWithdrawer"),LayoutExports$1.u8("commission"),LayoutExports$1.nu64(),LayoutExports$1.seq(LayoutExports$1.struct([LayoutExports$1.nu64("slot"),LayoutExports$1.u32("confirmationCount")]),LayoutExports$1.offset(LayoutExports$1.u32(),-8),"votes"),LayoutExports$1.u8("rootSlotValid"),LayoutExports$1.nu64("rootSlot"),LayoutExports$1.nu64(),LayoutExports$1.seq(LayoutExports$1.struct([LayoutExports$1.nu64("epoch"),publicKey$2("authorizedVoter")]),LayoutExports$1.offset(LayoutExports$1.u32(),-8),"authorizedVoters"),LayoutExports$1.struct([LayoutExports$1.seq(LayoutExports$1.struct([publicKey$2("authorizedPubkey"),LayoutExports$1.nu64("epochOfLastAuthorizedSwitch"),LayoutExports$1.nu64("targetEpoch")]),32,"buf"),LayoutExports$1.nu64("idx"),LayoutExports$1.u8("isEmpty")],"priorVoters"),LayoutExports$1.nu64(),LayoutExports$1.seq(LayoutExports$1.struct([LayoutExports$1.nu64("epoch"),LayoutExports$1.nu64("credits"),LayoutExports$1.nu64("prevCredits")]),LayoutExports$1.offset(LayoutExports$1.u32(),-8),"epochCredits"),LayoutExports$1.struct([LayoutExports$1.nu64("slot"),LayoutExports$1.nu64("timestamp")],"lastTimestamp")]);const LAMPORTS_PER_SOL=1e9;const TOKEN_PROGRAM_ID=new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const ASSOCIATED_TOKEN_PROGRAM_ID=new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");const NATIVE_MINT=new PublicKey("So11111111111111111111111111111111111111112");new PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");const encodeDecode=layout=>{const decode=layout.decode.bind(layout);const encode=layout.encode.bind(layout);return{decode:decode,encode:encode}};var browser={};var hasRequiredBrowser;function requireBrowser(){if(hasRequiredBrowser)return browser;hasRequiredBrowser=1;Object.defineProperty(browser,"__esModule",{value:true});function toBigIntLE(buf){{const reversed=Buffer.from(buf);reversed.reverse();const hex=reversed.toString("hex");if(hex.length===0){return BigInt(0)}return BigInt(`0x${hex}`)}}browser.toBigIntLE=toBigIntLE;function toBigIntBE(buf){{const hex=buf.toString("hex");if(hex.length===0){return BigInt(0)}return BigInt(`0x${hex}`)}}browser.toBigIntBE=toBigIntBE;function toBufferLE(num,width){{const hex=num.toString(16);const buffer=Buffer.from(hex.padStart(width*2,"0").slice(0,width*2),"hex");buffer.reverse();return buffer}}browser.toBufferLE=toBufferLE;function toBufferBE(num,width){{const hex=num.toString(16);return Buffer.from(hex.padStart(width*2,"0").slice(0,width*2),"hex")}}browser.toBufferBE=toBufferBE;return browser}var browserExports=requireBrowser();const bigInt=length=>property=>{const layout=LayoutExports$1.blob(length,property);const{encode:encode,decode:decode}=encodeDecode(layout);const bigIntLayout=layout;bigIntLayout.decode=(buffer,offset)=>{const src=decode(buffer,offset);return browserExports.toBigIntLE(Buffer.from(src))};bigIntLayout.encode=(bigInt,buffer,offset)=>{const src=browserExports.toBufferLE(bigInt,length);return encode(src,buffer,offset)};return bigIntLayout};const u64$1=bigInt(8);const bool=property=>{const layout=LayoutExports$1.u8(property);const{encode:encode,decode:decode}=encodeDecode(layout);const boolLayout=layout;boolLayout.decode=(buffer,offset)=>{const src=decode(buffer,offset);return!!src};boolLayout.encode=(bool,buffer,offset)=>{const src=Number(bool);return encode(src,buffer,offset)};return boolLayout};const publicKey$1=property=>{const layout=LayoutExports$1.blob(32,property);const{encode:encode,decode:decode}=encodeDecode(layout);const publicKeyLayout=layout;publicKeyLayout.decode=(buffer,offset)=>{const src=decode(buffer,offset);return new PublicKey(src)};publicKeyLayout.encode=(publicKey,buffer,offset)=>{const src=publicKey.toBuffer();return encode(src,buffer,offset)};return publicKeyLayout};class TokenError extends Error{constructor(message){super(message)}}class TokenAccountNotFoundError extends TokenError{constructor(){super(...arguments);this.name="TokenAccountNotFoundError"}}class TokenInvalidAccountError extends TokenError{constructor(){super(...arguments);this.name="TokenInvalidAccountError"}}class TokenInvalidAccountOwnerError extends TokenError{constructor(){super(...arguments);this.name="TokenInvalidAccountOwnerError"}}class TokenInvalidAccountSizeError extends TokenError{constructor(){super(...arguments);this.name="TokenInvalidAccountSizeError"}}class TokenOwnerOffCurveError extends TokenError{constructor(){super(...arguments);this.name="TokenOwnerOffCurveError"}}var TokenInstruction;(function(TokenInstruction){TokenInstruction[TokenInstruction["InitializeMint"]=0]="InitializeMint";TokenInstruction[TokenInstruction["InitializeAccount"]=1]="InitializeAccount";TokenInstruction[TokenInstruction["InitializeMultisig"]=2]="InitializeMultisig";TokenInstruction[TokenInstruction["Transfer"]=3]="Transfer";TokenInstruction[TokenInstruction["Approve"]=4]="Approve";TokenInstruction[TokenInstruction["Revoke"]=5]="Revoke";TokenInstruction[TokenInstruction["SetAuthority"]=6]="SetAuthority";TokenInstruction[TokenInstruction["MintTo"]=7]="MintTo";TokenInstruction[TokenInstruction["Burn"]=8]="Burn";TokenInstruction[TokenInstruction["CloseAccount"]=9]="CloseAccount";TokenInstruction[TokenInstruction["FreezeAccount"]=10]="FreezeAccount";TokenInstruction[TokenInstruction["ThawAccount"]=11]="ThawAccount";TokenInstruction[TokenInstruction["TransferChecked"]=12]="TransferChecked";TokenInstruction[TokenInstruction["ApproveChecked"]=13]="ApproveChecked";TokenInstruction[TokenInstruction["MintToChecked"]=14]="MintToChecked";TokenInstruction[TokenInstruction["BurnChecked"]=15]="BurnChecked";TokenInstruction[TokenInstruction["InitializeAccount2"]=16]="InitializeAccount2";TokenInstruction[TokenInstruction["SyncNative"]=17]="SyncNative";TokenInstruction[TokenInstruction["InitializeAccount3"]=18]="InitializeAccount3";TokenInstruction[TokenInstruction["InitializeMultisig2"]=19]="InitializeMultisig2";TokenInstruction[TokenInstruction["InitializeMint2"]=20]="InitializeMint2";TokenInstruction[TokenInstruction["GetAccountDataSize"]=21]="GetAccountDataSize";TokenInstruction[TokenInstruction["InitializeImmutableOwner"]=22]="InitializeImmutableOwner";TokenInstruction[TokenInstruction["AmountToUiAmount"]=23]="AmountToUiAmount";TokenInstruction[TokenInstruction["UiAmountToAmount"]=24]="UiAmountToAmount";TokenInstruction[TokenInstruction["InitializeMintCloseAuthority"]=25]="InitializeMintCloseAuthority";TokenInstruction[TokenInstruction["TransferFeeExtension"]=26]="TransferFeeExtension";TokenInstruction[TokenInstruction["ConfidentialTransferExtension"]=27]="ConfidentialTransferExtension";TokenInstruction[TokenInstruction["DefaultAccountStateExtension"]=28]="DefaultAccountStateExtension";TokenInstruction[TokenInstruction["Reallocate"]=29]="Reallocate";TokenInstruction[TokenInstruction["MemoTransferExtension"]=30]="MemoTransferExtension";TokenInstruction[TokenInstruction["CreateNativeMint"]=31]="CreateNativeMint";TokenInstruction[TokenInstruction["InitializeNonTransferableMint"]=32]="InitializeNonTransferableMint";TokenInstruction[TokenInstruction["InterestBearingMintExtension"]=33]="InterestBearingMintExtension";TokenInstruction[TokenInstruction["CpiGuardExtension"]=34]="CpiGuardExtension";TokenInstruction[TokenInstruction["InitializePermanentDelegate"]=35]="InitializePermanentDelegate";TokenInstruction[TokenInstruction["TransferHookExtension"]=36]="TransferHookExtension";TokenInstruction[TokenInstruction["MetadataPointerExtension"]=39]="MetadataPointerExtension";TokenInstruction[TokenInstruction["GroupPointerExtension"]=40]="GroupPointerExtension";TokenInstruction[TokenInstruction["GroupMemberPointerExtension"]=41]="GroupMemberPointerExtension";TokenInstruction[TokenInstruction["ScaledUiAmountExtension"]=43]="ScaledUiAmountExtension";TokenInstruction[TokenInstruction["PausableExtension"]=44]="PausableExtension"})(TokenInstruction||(TokenInstruction={}));var AccountType$1;(function(AccountType){AccountType[AccountType["Uninitialized"]=0]="Uninitialized";AccountType[AccountType["Mint"]=1]="Mint";AccountType[AccountType["Account"]=2]="Account"})(AccountType$1||(AccountType$1={}));const ACCOUNT_TYPE_SIZE=1;const MultisigLayout=LayoutExports$1.struct([LayoutExports$1.u8("m"),LayoutExports$1.u8("n"),bool("isInitialized"),publicKey$1("signer1"),publicKey$1("signer2"),publicKey$1("signer3"),publicKey$1("signer4"),publicKey$1("signer5"),publicKey$1("signer6"),publicKey$1("signer7"),publicKey$1("signer8"),publicKey$1("signer9"),publicKey$1("signer10"),publicKey$1("signer11")]);const MULTISIG_SIZE=MultisigLayout.span;var AccountState;(function(AccountState){AccountState[AccountState["Uninitialized"]=0]="Uninitialized";AccountState[AccountState["Initialized"]=1]="Initialized";AccountState[AccountState["Frozen"]=2]="Frozen"})(AccountState||(AccountState={}));const AccountLayout=LayoutExports$1.struct([publicKey$1("mint"),publicKey$1("owner"),u64$1("amount"),LayoutExports$1.u32("delegateOption"),publicKey$1("delegate"),LayoutExports$1.u8("state"),LayoutExports$1.u32("isNativeOption"),u64$1("isNative"),u64$1("delegatedAmount"),LayoutExports$1.u32("closeAuthorityOption"),publicKey$1("closeAuthority")]);const ACCOUNT_SIZE=AccountLayout.span;async function getAccount(connection,address,commitment,programId=TOKEN_PROGRAM_ID){const info=await connection.getAccountInfo(address,commitment);return unpackAccount(address,info,programId)}function unpackAccount(address,info,programId=TOKEN_PROGRAM_ID){if(!info)throw new TokenAccountNotFoundError;if(!info.owner.equals(programId))throw new TokenInvalidAccountOwnerError;if(info.data.length<ACCOUNT_SIZE)throw new TokenInvalidAccountSizeError;const rawAccount=AccountLayout.decode(info.data.slice(0,ACCOUNT_SIZE));let tlvData=Buffer.alloc(0);if(info.data.length>ACCOUNT_SIZE){if(info.data.length===MULTISIG_SIZE)throw new TokenInvalidAccountSizeError;if(info.data[ACCOUNT_SIZE]!=AccountType$1.Account)throw new TokenInvalidAccountError;tlvData=info.data.slice(ACCOUNT_SIZE+ACCOUNT_TYPE_SIZE)}return{address:address,mint:rawAccount.mint,owner:rawAccount.owner,amount:rawAccount.amount,delegate:rawAccount.delegateOption?rawAccount.delegate:null,delegatedAmount:rawAccount.delegatedAmount,isInitialized:rawAccount.state!==AccountState.Uninitialized,isFrozen:rawAccount.state===AccountState.Frozen,isNative:!!rawAccount.isNativeOption,rentExemptReserve:rawAccount.isNativeOption?rawAccount.isNative:null,closeAuthority:rawAccount.closeAuthorityOption?rawAccount.closeAuthority:null,tlvData:tlvData}}function addSigners(keys,ownerOrAuthority,multiSigners){if(multiSigners.length){keys.push({pubkey:ownerOrAuthority,isSigner:false,isWritable:false});for(const signer of multiSigners){keys.push({pubkey:signer instanceof PublicKey?signer:signer.publicKey,isSigner:true,isWritable:false})}}else{keys.push({pubkey:ownerOrAuthority,isSigner:true,isWritable:false})}return keys}const MintLayout=LayoutExports$1.struct([LayoutExports$1.u32("mintAuthorityOption"),publicKey$1("mintAuthority"),u64$1("supply"),LayoutExports$1.u8("decimals"),bool("isInitialized"),LayoutExports$1.u32("freezeAuthorityOption"),publicKey$1("freezeAuthority")]);MintLayout.span;function getAssociatedTokenAddressSync(mint,owner,allowOwnerOffCurve=false,programId=TOKEN_PROGRAM_ID,associatedTokenProgramId=ASSOCIATED_TOKEN_PROGRAM_ID){if(!allowOwnerOffCurve&&!PublicKey.isOnCurve(owner.toBuffer()))throw new TokenOwnerOffCurveError;const[address]=PublicKey.findProgramAddressSync([owner.toBuffer(),programId.toBuffer(),mint.toBuffer()],associatedTokenProgramId);return address}const approveInstructionData=LayoutExports$1.struct([LayoutExports$1.u8("instruction"),u64$1("amount")]);function createApproveInstruction(account,delegate,owner,amount,multiSigners=[],programId=TOKEN_PROGRAM_ID){const keys=addSigners([{pubkey:account,isSigner:false,isWritable:true},{pubkey:delegate,isSigner:false,isWritable:false}],owner,multiSigners);const data=Buffer.alloc(approveInstructionData.span);approveInstructionData.encode({instruction:TokenInstruction.Approve,amount:BigInt(amount)},data);return new TransactionInstruction({keys:keys,programId:programId,data:data})}function createAssociatedTokenAccountIdempotentInstruction(payer,associatedToken,owner,mint,programId=TOKEN_PROGRAM_ID,associatedTokenProgramId=ASSOCIATED_TOKEN_PROGRAM_ID){return buildAssociatedTokenAccountInstruction(payer,associatedToken,owner,mint,Buffer.from([1]),programId,associatedTokenProgramId)}function buildAssociatedTokenAccountInstruction(payer,associatedToken,owner,mint,instructionData,programId=TOKEN_PROGRAM_ID,associatedTokenProgramId=ASSOCIATED_TOKEN_PROGRAM_ID){const keys=[{pubkey:payer,isSigner:true,isWritable:true},{pubkey:associatedToken,isSigner:false,isWritable:true},{pubkey:owner,isSigner:false,isWritable:false},{pubkey:mint,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:programId,isSigner:false,isWritable:false}];return new TransactionInstruction({keys:keys,programId:associatedTokenProgramId,data:instructionData})}const METADATA_PROGRAM_ID=new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");const METADATA_MAX_NAME_LENGTH=32;const METADATA_MAX_SYMBOL_LENGTH=10;const METADATA_MAX_URI_LENGTH=200;const STAKE_POOL_PROGRAM_ID=new PublicKey("SP1s4uFeTAX9jsXXmwyDs1gxYYf7cdDZ8qHUHVxE1yr");const DEVNET_STAKE_POOL_PROGRAM_ID=new PublicKey("DPoo15wWDqpPJJtS2MUZ49aRxqz5ZaaJCJP4z8bLuib");const MAX_VALIDATORS_TO_UPDATE=4;const EPHEMERAL_STAKE_SEED_PREFIX=node_buffer.Buffer.from("ephemeral");const TRANSIENT_STAKE_SEED_PREFIX=node_buffer.Buffer.from("transient");const MINIMUM_ACTIVE_STAKE=LAMPORTS_PER_SOL;function encodeData(type,fields){const allocLength=type.layout.span;const data=node_buffer.Buffer.alloc(allocLength);const layoutFields=Object.assign({instruction:type.index},fields);type.layout.encode(layoutFields,data);return data}function decodeData(type,buffer){let data;try{data=type.layout.decode(buffer)}catch(err){throw new Error(`invalid instruction; ${err}`)}if(data.instruction!==type.index){throw new Error(`invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`)}return data}function solToLamports(amount){if(isNaN(amount)){return Number(0)}return Number(amount*LAMPORTS_PER_SOL)}function lamportsToSol(lamports){if(typeof lamports==="number"){return Math.abs(lamports)/LAMPORTS_PER_SOL}if(typeof lamports==="bigint"){return Math.abs(Number(lamports))/LAMPORTS_PER_SOL}let signMultiplier=1;if(lamports.isNeg()){signMultiplier=-1}const absLamports=lamports.abs();const lamportsString=absLamports.toString(10).padStart(10,"0");const splitIndex=lamportsString.length-9;const solString=`${lamportsString.slice(0,splitIndex)}.${lamportsString.slice(splitIndex)}`;return signMultiplier*Number.parseFloat(solString)}function findWsolTransientProgramAddress(programId,userPubkey){const[publicKey]=PublicKey.findProgramAddressSync([node_buffer.Buffer.from("transient_wsol"),userPubkey.toBuffer()],programId);return publicKey}async function findWithdrawAuthorityProgramAddress(programId,stakePoolAddress){const[publicKey]=PublicKey.findProgramAddressSync([stakePoolAddress.toBuffer(),node_buffer.Buffer.from("withdraw")],programId);return publicKey}async function findStakeProgramAddress(programId,voteAccountAddress,stakePoolAddress,seed){const[publicKey]=PublicKey.findProgramAddressSync([voteAccountAddress.toBuffer(),stakePoolAddress.toBuffer(),seed?new BN(seed).toArrayLike(node_buffer.Buffer,"le",4):node_buffer.Buffer.alloc(0)],programId);return publicKey}async function findTransientStakeProgramAddress(programId,voteAccountAddress,stakePoolAddress,seed){const[publicKey]=PublicKey.findProgramAddressSync([TRANSIENT_STAKE_SEED_PREFIX,voteAccountAddress.toBuffer(),stakePoolAddress.toBuffer(),seed.toArrayLike(node_buffer.Buffer,"le",8)],programId);return publicKey}async function findEphemeralStakeProgramAddress(programId,stakePoolAddress,seed){const[publicKey]=PublicKey.findProgramAddressSync([EPHEMERAL_STAKE_SEED_PREFIX,stakePoolAddress.toBuffer(),seed.toArrayLike(node_buffer.Buffer,"le",8)],programId);return publicKey}function findMetadataAddress(stakePoolMintAddress){const[publicKey]=PublicKey.findProgramAddressSync([node_buffer.Buffer.from("metadata"),METADATA_PROGRAM_ID.toBuffer(),stakePoolMintAddress.toBuffer()],METADATA_PROGRAM_ID);return publicKey}var Layout={};var hasRequiredLayout;function requireLayout(){if(hasRequiredLayout)return Layout;hasRequiredLayout=1;let Layout$1=class Layout{constructor(span,property){if(!Number.isInteger(span)){throw new TypeError("span must be an integer")}this.span=span;this.property=property}makeDestinationObject(){return{}}decode(b,offset){throw new Error("Layout is abstract")}encode(src,b,offset){throw new Error("Layout is abstract")}getSpan(b,offset){if(0>this.span){throw new RangeError("indeterminate span")}return this.span}replicate(property){const rv=Object.create(this.constructor.prototype);Object.assign(rv,this);rv.property=property;return rv}fromArray(values){return undefined}};Layout.Layout=Layout$1;function nameWithProperty(name,lo){if(lo.property){return name+"["+lo.property+"]"}return name}Layout.nameWithProperty=nameWithProperty;function bindConstructorLayout(Class,layout){if("function"!==typeof Class){throw new TypeError("Class must be constructor")}if(Class.hasOwnProperty("layout_")){throw new Error("Class is already bound to a layout")}if(!(layout&&layout instanceof Layout$1)){throw new TypeError("layout must be a Layout")}if(layout.hasOwnProperty("boundConstructor_")){throw new Error("layout is already bound to a constructor")}Class.layout_=layout;layout.boundConstructor_=Class;layout.makeDestinationObject=()=>new Class;Object.defineProperty(Class.prototype,"encode",{value:function(b,offset){return layout.encode(this,b,offset)},writable:true});Object.defineProperty(Class,"decode",{value:function(b,offset){return layout.decode(b,offset)},writable:true})}Layout.bindConstructorLayout=bindConstructorLayout;class ExternalLayout extends Layout$1{isCount(){throw new Error("ExternalLayout is abstract")}}class GreedyCount extends ExternalLayout{constructor(elementSpan,property){if(undefined===elementSpan){elementSpan=1}if(!Number.isInteger(elementSpan)||0>=elementSpan){throw new TypeError("elementSpan must be a (positive) integer")}super(-1,property);this.elementSpan=elementSpan}isCount(){return true}decode(b,offset){if(undefined===offset){offset=0}const rem=b.length-offset;return Math.floor(rem/this.elementSpan)}encode(src,b,offset){return 0}}class OffsetLayout extends ExternalLayout{constructor(layout,offset,property){if(!(layout instanceof Layout$1)){throw new TypeError("layout must be a Layout")}if(undefined===offset){offset=0}else if(!Number.isInteger(offset)){throw new TypeError("offset must be integer or undefined")}super(layout.span,property||layout.property);this.layout=layout;this.offset=offset}isCount(){return this.layout instanceof UInt||this.layout instanceof UIntBE}decode(b,offset){if(undefined===offset){offset=0}return this.layout.decode(b,offset+this.offset)}encode(src,b,offset){if(undefined===offset){offset=0}return this.layout.encode(src,b,offset+this.offset)}}class UInt extends Layout$1{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset){if(undefined===offset){offset=0}return b.readUIntLE(offset,this.span)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeUIntLE(src,offset,this.span);return this.span}}class UIntBE extends Layout$1{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset){if(undefined===offset){offset=0}return b.readUIntBE(offset,this.span)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeUIntBE(src,offset,this.span);return this.span}}class Int extends Layout$1{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset){if(undefined===offset){offset=0}return b.readIntLE(offset,this.span)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeIntLE(src,offset,this.span);return this.span}}class IntBE extends Layout$1{constructor(span,property){super(span,property);if(6<this.span){throw new RangeError("span must not exceed 6 bytes")}}decode(b,offset){if(undefined===offset){offset=0}return b.readIntBE(offset,this.span)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeIntBE(src,offset,this.span);return this.span}}const V2E32=Math.pow(2,32);function divmodInt64(src){const hi32=Math.floor(src/V2E32);const lo32=src-hi32*V2E32;return{hi32:hi32,lo32:lo32}}function roundedInt64(hi32,lo32){return hi32*V2E32+lo32}class NearUInt64 extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}const lo32=b.readUInt32LE(offset);const hi32=b.readUInt32LE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset){if(undefined===offset){offset=0}const split=divmodInt64(src);b.writeUInt32LE(split.lo32,offset);b.writeUInt32LE(split.hi32,offset+4);return 8}}class NearUInt64BE extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}const hi32=b.readUInt32BE(offset);const lo32=b.readUInt32BE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset){if(undefined===offset){offset=0}const split=divmodInt64(src);b.writeUInt32BE(split.hi32,offset);b.writeUInt32BE(split.lo32,offset+4);return 8}}class NearInt64 extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}const lo32=b.readUInt32LE(offset);const hi32=b.readInt32LE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset){if(undefined===offset){offset=0}const split=divmodInt64(src);b.writeUInt32LE(split.lo32,offset);b.writeInt32LE(split.hi32,offset+4);return 8}}class NearInt64BE extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}const hi32=b.readInt32BE(offset);const lo32=b.readUInt32BE(offset+4);return roundedInt64(hi32,lo32)}encode(src,b,offset){if(undefined===offset){offset=0}const split=divmodInt64(src);b.writeInt32BE(split.hi32,offset);b.writeUInt32BE(split.lo32,offset+4);return 8}}class Float extends Layout$1{constructor(property){super(4,property)}decode(b,offset){if(undefined===offset){offset=0}return b.readFloatLE(offset)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeFloatLE(src,offset);return 4}}class FloatBE extends Layout$1{constructor(property){super(4,property)}decode(b,offset){if(undefined===offset){offset=0}return b.readFloatBE(offset)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeFloatBE(src,offset);return 4}}class Double extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}return b.readDoubleLE(offset)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeDoubleLE(src,offset);return 8}}class DoubleBE extends Layout$1{constructor(property){super(8,property)}decode(b,offset){if(undefined===offset){offset=0}return b.readDoubleBE(offset)}encode(src,b,offset){if(undefined===offset){offset=0}b.writeDoubleBE(src,offset);return 8}}class Sequence extends Layout$1{constructor(elementLayout,count,property){if(!(elementLayout instanceof Layout$1)){throw new TypeError("elementLayout must be a Layout")}if(!(count instanceof ExternalLayout&&count.isCount()||Number.isInteger(count)&&0<=count)){throw new TypeError("count must be non-negative integer "+"or an unsigned integer ExternalLayout")}let span=-1;if(!(count instanceof ExternalLayout)&&0<elementLayout.span){span=count*elementLayout.span}super(span,property);this.elementLayout=elementLayout;this.count=count}getSpan(b,offset){if(0<=this.span){return this.span}if(undefined===offset){offset=0}let span=0;let count=this.count;if(count instanceof ExternalLayout){count=count.decode(b,offset)}if(0<this.elementLayout.span){span=count*this.elementLayout.span}else{let idx=0;while(idx<count){span+=this.elementLayout.getSpan(b,offset+span);++idx}}return span}decode(b,offset){if(undefined===offset){offset=0}const rv=[];let i=0;let count=this.count;if(count instanceof ExternalLayout){count=count.decode(b,offset)}while(i<count){rv.push(this.elementLayout.decode(b,offset));offset+=this.elementLayout.getSpan(b,offset);i+=1}return rv}encode(src,b,offset){if(undefined===offset){offset=0}const elo=this.elementLayout;const span=src.reduce((span,v)=>span+elo.encode(v,b,offset+span),0);if(this.count instanceof ExternalLayout){this.count.encode(src.length,b,offset)}return span}}class Structure extends Layout$1{constructor(fields,property,decodePrefixes){if(!(Array.isArray(fields)&&fields.reduce((acc,v)=>acc&&v instanceof Layout$1,true))){throw new TypeError("fields must be array of Layout instances")}if("boolean"===typeof property&&undefined===decodePrefixes){decodePrefixes=property;property=undefined}for(const fd of fields){if(0>fd.span&&undefined===fd.property){throw new Error("fields cannot contain unnamed variable-length layout")}}let span=-1;try{span=fields.reduce((span,fd)=>span+fd.getSpan(),0)}catch(e){}super(span,property);this.fields=fields;this.decodePrefixes=!!decodePrefixes}getSpan(b,offset){if(0<=this.span){return this.span}if(undefined===offset){offset=0}let span=0;try{span=this.fields.reduce((span,fd)=>{const fsp=fd.getSpan(b,offset);offset+=fsp;return span+fsp},0)}catch(e){throw new RangeError("indeterminate span")}return span}decode(b,offset){if(undefined===offset){offset=0}const dest=this.makeDestinationObject();for(const fd of this.fields){if(undefined!==fd.property){dest[fd.property]=fd.decode(b,offset)}offset+=fd.getSpan(b,offset);if(this.decodePrefixes&&b.length===offset){break}}return dest}encode(src,b,offset){if(undefined===offset){offset=0}const firstOffset=offset;let lastOffset=0;let lastWrote=0;for(const fd of this.fields){let span=fd.span;lastWrote=0<span?span:0;if(undefined!==fd.property){const fv=src[fd.property];if(undefined!==fv){lastWrote=fd.encode(fv,b,offset);if(0>span){span=fd.getSpan(b,offset)}}}lastOffset=offset;offset+=span}return lastOffset+lastWrote-firstOffset}fromArray(values){const dest=this.makeDestinationObject();for(const fd of this.fields){if(undefined!==fd.property&&0<values.length){dest[fd.property]=values.shift()}}return dest}layoutFor(property){if("string"!==typeof property){throw new TypeError("property must be string")}for(const fd of this.fields){if(fd.property===property){return fd}}}offsetOf(property){if("string"!==typeof property){throw new TypeError("property must be string")}let offset=0;for(const fd of this.fields){if(fd.property===property){return offset}if(0>fd.span){offset=-1}else if(0<=offset){offset+=fd.span}}}}class UnionDiscriminator{constructor(property){this.property=property}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class UnionLayoutDiscriminator extends UnionDiscriminator{constructor(layout,property){if(!(layout instanceof ExternalLayout&&layout.isCount())){throw new TypeError("layout must be an unsigned integer ExternalLayout")}super(property||layout.property||"variant");this.layout=layout}decode(b,offset){return this.layout.decode(b,offset)}encode(src,b,offset){return this.layout.encode(src,b,offset)}}class Union extends Layout$1{constructor(discr,defaultLayout,property){const upv=discr instanceof UInt||discr instanceof UIntBE;if(upv){discr=new UnionLayoutDiscriminator(new OffsetLayout(discr))}else if(discr instanceof ExternalLayout&&discr.isCount()){discr=new UnionLayoutDiscriminator(discr)}else if(!(discr instanceof UnionDiscriminator)){throw new TypeError("discr must be a UnionDiscriminator "+"or an unsigned integer layout")}if(undefined===defaultLayout){defaultLayout=null}if(!(null===defaultLayout||defaultLayout instanceof Layout$1)){throw new TypeError("defaultLayout must be null or a Layout")}if(null!==defaultLayout){if(0>defaultLayout.span){throw new Error("defaultLayout must have constant span")}if(undefined===defaultLayout.property){defaultLayout=defaultLayout.replicate("content")}}let span=-1;if(defaultLayout){span=defaultLayout.span;if(0<=span&&upv){span+=discr.layout.span}}super(span,property);this.discriminator=discr;this.usesPrefixDiscriminator=upv;this.defaultLayout=defaultLayout;this.registry={};let boundGetSourceVariant=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(src){return boundGetSourceVariant(src)};this.configGetSourceVariant=function(gsv){boundGetSourceVariant=gsv.bind(this)}}getSpan(b,offset){if(0<=this.span){return this.span}if(undefined===offset){offset=0}const vlo=this.getVariant(b,offset);if(!vlo){throw new Error("unable to determine span for unrecognized variant")}return vlo.getSpan(b,offset)}defaultGetSourceVariant(src){if(src.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&src.hasOwnProperty(this.defaultLayout.property)){return undefined}const vlo=this.registry[src[this.discriminator.property]];if(vlo&&(!vlo.layout||src.hasOwnProperty(vlo.property))){return vlo}}else{for(const tag in this.registry){const vlo=this.registry[tag];if(src.hasOwnProperty(vlo.property)){return vlo}}}throw new Error("unable to infer src variant")}decode(b,offset){if(undefined===offset){offset=0}let dest;const dlo=this.discriminator;const discr=dlo.decode(b,offset);let clo=this.registry[discr];if(undefined===clo){let contentOffset=0;clo=this.defaultLayout;if(this.usesPrefixDiscriminator){contentOffset=dlo.layout.span}dest=this.makeDestinationObject();dest[dlo.property]=discr;dest[clo.property]=this.defaultLayout.decode(b,offset+contentOffset)}else{dest=clo.decode(b,offset)}return dest}encode(src,b,offset){if(undefined===offset){offset=0}const vlo=this.getSourceVariant(src);if(undefined===vlo){const dlo=this.discriminator;const clo=this.defaultLayout;let contentOffset=0;if(this.usesPrefixDiscriminator){contentOffset=dlo.layout.span}dlo.encode(src[dlo.property],b,offset);return contentOffset+clo.encode(src[clo.property],b,offset+contentOffset)}return vlo.encode(src,b,offset)}addVariant(variant,layout,property){const rv=new VariantLayout(this,variant,layout,property);this.registry[variant]=rv;return rv}getVariant(vb,offset){let variant=vb;if(Buffer.isBuffer(vb)){if(undefined===offset){offset=0}variant=this.discriminator.decode(vb,offset)}return this.registry[variant]}}class VariantLayout extends Layout$1{constructor(union,variant,layout,property){if(!(union instanceof Union)){throw new TypeError("union must be a Union")}if(!Number.isInteger(variant)||0>variant){throw new TypeError("variant must be a (non-negative) integer")}if("string"===typeof layout&&undefined===property){property=layout;layout=null}if(layout){if(!(layout instanceof Layout$1)){throw new TypeError("layout must be a Layout")}if(null!==union.defaultLayout&&0<=layout.span&&layout.span>union.defaultLayout.span){throw new Error("variant span exceeds span of containing union")}if("string"!==typeof property){throw new TypeError("variant must have a String property")}}let span=union.span;if(0>union.span){span=layout?layout.span:0;if(0<=span&&union.usesPrefixDiscriminator){span+=union.discriminator.layout.span}}super(span,property);this.union=union;this.variant=variant;this.layout=layout||null}getSpan(b,offset){if(0<=this.span){return this.span}if(undefined===offset){offset=0}let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}return contentOffset+this.layout.getSpan(b,offset+contentOffset)}decode(b,offset){const dest=this.makeDestinationObject();if(undefined===offset){offset=0}if(this!==this.union.getVariant(b,offset)){throw new Error("variant mismatch")}let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}if(this.layout){dest[this.property]=this.layout.decode(b,offset+contentOffset)}else if(this.property){dest[this.property]=true}else if(this.union.usesPrefixDiscriminator){dest[this.union.discriminator.property]=this.variant}return dest}encode(src,b,offset){if(undefined===offset){offset=0}let contentOffset=0;if(this.union.usesPrefixDiscriminator){contentOffset=this.union.discriminator.layout.span}if(this.layout&&!src.hasOwnProperty(this.property)){throw new TypeError("variant lacks property "+this.property)}this.union.discriminator.encode(this.variant,b,offset);let span=contentOffset;if(this.layout){this.layout.encode(src[this.property],b,offset+contentOffset);span+=this.layout.getSpan(b,offset+contentOffset);if(0<=this.union.span&&span>this.union.span){throw new Error("encoded variant overruns containing union")}}return span}fromArray(values){if(this.layout){return this.layout.fromArray(values)}}}function fixBitwiseResult(v){if(0>v){v+=4294967296}return v}class BitStructure extends Layout$1{constructor(word,msb,property){if(!(word instanceof UInt||word instanceof UIntBE)){throw new TypeError("word must be a UInt or UIntBE layout")}if("string"===typeof msb&&undefined===property){property=msb;msb=undefined}if(4<word.span){throw new RangeError("word cannot exceed 32 bits")}super(word.span,property);this.word=word;this.msb=!!msb;this.fields=[];let value=0;this._packedSetValue=function(v){value=fixBitwiseResult(v);return this};this._packedGetValue=function(){return value}}decode(b,offset){const dest=this.makeDestinationObject();if(undefined===offset){offset=0}const value=this.word.decode(b,offset);this._packedSetValue(value);for(const fd of this.fields){if(undefined!==fd.property){dest[fd.property]=fd.decode(value)}}return dest}encode(src,b,offset){if(undefined===offset){offset=0}const value=this.word.decode(b,offset);this._packedSetValue(value);for(const fd of this.fields){if(undefined!==fd.property){const fv=src[fd.property];if(undefined!==fv){fd.encode(fv)}}}return this.word.encode(this._packedGetValue(),b,offset)}addField(bits,property){const bf=new BitField(this,bits,property);this.fields.push(bf);return bf}addBoolean(property){const bf=new Boolean(this,property);this.fields.push(bf);return bf}fieldFor(property){if("string"!==typeof property){throw new TypeError("property must be string")}for(const fd of this.fields){if(fd.property===property){return fd}}}}class BitField{constructor(container,bits,property){if(!(container instanceof BitStructure)){throw new TypeError("container must be a BitStructure")}if(!Number.isInteger(bits)||0>=bits){throw new TypeError("bits must be positive integer")}const totalBits=8*container.span;const usedBits=container.fields.reduce((sum,fd)=>sum+fd.bits,0);if(bits+usedBits>totalBits){throw new Error("bits too long for span remainder ("+(totalBits-usedBits)+" of "+totalBits+" remain)")}this.container=container;this.bits=bits;this.valueMask=(1<<bits)-1;if(32===bits){this.valueMask=4294967295}this.start=usedBits;if(this.container.msb){this.start=totalBits-usedBits-bits}this.wordMask=fixBitwiseResult(this.valueMask<<this.start);this.property=property}decode(){const word=this.container._packedGetValue();const wordValue=fixBitwiseResult(word&this.wordMask);const value=wordValue>>>this.start;return value}encode(value){if(!Number.isInteger(value)||value!==fixBitwiseResult(value&this.valueMask)){throw new TypeError(nameWithProperty("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask)}const word=this.container._packedGetValue();const wordValue=fixBitwiseResult(value<<this.start);this.container._packedSetValue(fixBitwiseResult(word&~this.wordMask)|wordValue)}}class Boolean extends BitField{constructor(container,property){super(container,1,property)}decode(b,offset){return!!BitField.prototype.decode.call(this,b,offset)}encode(value){if("boolean"===typeof value){value=+value}return BitField.prototype.encode.call(this,value)}}class Blob extends Layout$1{constructor(length,property){if(!(length instanceof ExternalLayout&&length.isCount()||Number.isInteger(length)&&0<=length)){throw new TypeError("length must be positive integer "+"or an unsigned integer ExternalLayout")}let span=-1;if(!(length instanceof ExternalLayout)){span=length}super(span,property);this.length=length}getSpan(b,offset){let span=this.span;if(0>span){span=this.length.decode(b,offset)}return span}decode(b,offset){if(undefined===offset){offset=0}let span=this.span;if(0>span){span=this.length.decode(b,offset)}return b.slice(offset,offset+span)}encode(src,b,offset){let span=this.length;if(this.length instanceof ExternalLayout){span=src.length}if(!(Buffer.isBuffer(src)&&span===src.length)){throw new TypeError(nameWithProperty("Blob.encode",this)+" requires (length "+span+") Buffer as src")}if(offset+span>b.length){throw new RangeError("encoding overruns Buffer")}b.write(src.toString("hex"),offset,span,"hex");if(this.length instanceof ExternalLayout){this.length.encode(span,b,offset)}return span}}class CString extends Layout$1{constructor(property){super(-1,property)}getSpan(b,offset){if(!Buffer.isBuffer(b)){throw new TypeError("b must be a Buffer")}if(undefined===offset){offset=0}let idx=offset;while(idx<b.length&&0!==b[idx]){idx+=1}return 1+idx-offset}decode(b,offset,dest){if(undefined===offset){offset=0}let span=this.getSpan(b,offset);return b.slice(offset,offset+span-1).toString("utf-8")}encode(src,b,offset){if(undefined===offset){offset=0}if("string"!==typeof src){src=src.toString()}const srcb=new Buffer(src,"utf8");const span=srcb.length;if(offset+span>b.length){throw new RangeError("encoding overruns Buffer")}srcb.copy(b,offset);b[offset+span]=0;return span+1}}class UTF8 extends Layout$1{constructor(maxSpan,property){if("string"===typeof maxSpan&&undefined===property){property=maxSpan;maxSpan=undefined}if(undefined===maxSpan){maxSpan=-1}else if(!Number.isInteger(maxSpan)){throw new TypeError("maxSpan must be an integer")}super(-1,property);this.maxSpan=maxSpan}getSpan(b,offset){if(!Buffer.isBuffer(b)){throw new TypeError("b must be a Buffer")}if(undefined===offset){offset=0}return b.length-offset}decode(b,offset,dest){if(undefined===offset){offset=0}let span=this.getSpan(b,offset);if(0<=this.maxSpan&&this.maxSpan<span){throw new RangeError("text length exceeds maxSpan")}return b.slice(offset,offset+span).toString("utf-8")}encode(src,b,offset){if(undefined===offset){offset=0}if("string"!==typeof src){src=src.toString()}const srcb=new Buffer(src,"utf8");const span=srcb.length;if(0<=this.maxSpan&&this.maxSpan<span){throw new RangeError("text length exceeds maxSpan")}if(offset+span>b.length){throw new RangeError("encoding overruns Buffer")}srcb.copy(b,offset);return span}}class Constant extends Layout$1{constructor(value,property){super(0,property);this.value=value}decode(b,offset,dest){return this.value}encode(src,b,offset){return 0}}Layout.ExternalLayout=ExternalLayout;Layout.GreedyCount=GreedyCount;Layout.OffsetLayout=OffsetLayout;Layout.UInt=UInt;Layout.UIntBE=UIntBE;Layout.Int=Int;Layout.IntBE=IntBE;Layout.Float=Float;Layout.FloatBE=FloatBE;Layout.Double=Double;Layout.DoubleBE=DoubleBE;Layout.Sequence=Sequence;Layout.Structure=Structure;Layout.UnionDiscriminator=UnionDiscriminator;Layout.UnionLayoutDiscriminator=UnionLayoutDiscriminator;Layout.Union=Union;Layout.VariantLayout=VariantLayout;Layout.BitStructure=BitStructure;Layout.BitField=BitField;Layout.Boolean=Boolean;Layout.Blob=Blob;Layout.CString=CString;Layout.UTF8=UTF8;Layout.Constant=Constant;Layout.greedy=(elementSpan,property)=>new GreedyCount(elementSpan,property);Layout.offset=(layout,offset,property)=>new OffsetLayout(layout,offset,property);Layout.u8=property=>new UInt(1,property);Layout.u16=property=>new UInt(2,property);Layout.u24=property=>new UInt(3,property);Layout.u32=property=>new UInt(4,property);Layout.u40=property=>new UInt(5,property);Layout.u48=property=>new UInt(6,property);Layout.nu64=property=>new NearUInt64(property);Layout.u16be=property=>new UIntBE(2,property);Layout.u24be=property=>new UIntBE(3,property);Layout.u32be=property=>new UIntBE(4,property);Layout.u40be=property=>new UIntBE(5,property);Layout.u48be=property=>new UIntBE(6,property);Layout.nu64be=property=>new NearUInt64BE(property);Layout.s8=property=>new Int(1,property);Layout.s16=property=>new Int(2,property);Layout.s24=property=>new Int(3,property);Layout.s32=property=>new Int(4,property);Layout.s40=property=>new Int(5,property);Layout.s48=property=>new Int(6,property);Layout.ns64=property=>new NearInt64(property);Layout.s16be=property=>new IntBE(2,property);Layout.s24be=property=>new IntBE(3,property);Layout.s32be=property=>new IntBE(4,property);Layout.s40be=property=>new IntBE(5,property);Layout.s48be=property=>new IntBE(6,property);Layout.ns64be=property=>new NearInt64BE(property);Layout.f32=property=>new Float(property);Layout.f32be=property=>new FloatBE(property);Layout.f64=property=>new Double(property);Layout.f64be=property=>new DoubleBE(property);Layout.struct=(fields,property,decodePrefixes)=>new Structure(fields,property,decodePrefixes);Layout.bits=(word,msb,property)=>new BitStructure(word,msb,property);Layout.seq=(elementLayout,count,property)=>new Sequence(elementLayout,count,property);Layout.union=(discr,defaultLayout,property)=>new Union(discr,defaultLayout,property);Layout.unionLayoutDiscriminator=(layout,property)=>new UnionLayoutDiscriminator(layout,property);Layout.blob=(length,property)=>new Blob(length,property);Layout.cstr=property=>new CString(property);Layout.utf8=(maxSpan,property)=>new UTF8(maxSpan,property);Layout.const=(value,property)=>new Constant(value,property);return Layout}var LayoutExports=requireLayout();class BNLayout extends LayoutExports.Layout{constructor(span,signed,property){super(span,property);this.blob=LayoutExports.blob(span);this.signed=signed}decode(b,offset=0){const num=new BN(this.blob.decode(b,offset),10,"le");if(this.signed){return num.fromTwos(this.span*8).clone()}return num}encode(src,b,offset=0){if(this.signed){src=src.toTwos(this.span*8)}return this.blob.encode(src.toArrayLike(Buffer,"le",this.span),b,offset)}}function u64(property){return new BNLayout(8,false,property)}class WrappedLayout extends LayoutExports.Layout{constructor(layout,decoder,encoder,property){super(layout.span,property);this.layout=layout;this.decoder=decoder;this.encoder=encoder}decode(b,offset){return this.decoder(this.layout.decode(b,offset))}encode(src,b,offset){return this.layout.encode(this.encoder(src),b,offset)}getSpan(b,offset){return this.layout.getSpan(b,offset)}}function publicKey(property){return new WrappedLayout(LayoutExports.blob(32),b=>new PublicKey(b),key=>key.toBuffer(),property)}class OptionLayout extends LayoutExports.Layout{constructor(layout,property){super(-1,property);this.layout=layout;this.discriminator=LayoutExports.u8()}encode(src,b,offset=0){if(src===null||src===undefined){return this.discriminator.encode(0,b,offset)}this.discriminator.encode(1,b,offset);return this.layout.encode(src,b,offset+1)+1}decode(b,offset=0){const discriminator=this.discriminator.decode(b,offset);if(discriminator===0){return null}else if(discriminator===1){return this.layout.decode(b,offset+1)}throw new Error(`Invalid option ${this.property}`)}getSpan(b,offset=0){const discriminator=this.discriminator.decode(b,offset);if(discriminator===0){return 1}else if(discriminator===1){return this.layout.getSpan(b,offset+1)+1}throw new Error(`Invalid option ${this.property}`)}}function option(layout,property){return new OptionLayout(layout,property)}function vec(elementLayout,property){const length=LayoutExports.u32("length");const layout=LayoutExports.struct([length,LayoutExports.seq(elementLayout,LayoutExports.offset(length,-length.span),"values")]);return new WrappedLayout(layout,({values:values})=>values,values=>({values:values}),property)}const feeFields=[u64("denominator"),u64("numerator")];var AccountType;(function(AccountType){AccountType[AccountType["Uninitialized"]=0]="Uninitialized";AccountType[AccountType["StakePool"]=1]="StakePool";AccountType[AccountType["ValidatorList"]=2]="ValidatorList"})(AccountType||(AccountType={}));const BigNumFromString=coerce(instance(BN),string(),value=>{if(typeof value==="string"){return new BN(value,10)}throw new Error("invalid big num")});const PublicKeyFromString=coerce(instance(PublicKey),string(),value=>new PublicKey(value));class FutureEpochLayout extends LayoutExports.Layout{constructor(layout,property){super(-1,property);this.layout=layout;this.discriminator=LayoutExports.u8()}encode(src,b,offset=0){if(src===null||src===undefined){return this.discriminator.encode(0,b,offset)}this.discriminator.encode(2,b,offset);return this.layout.encode(src,b,offset+1)+1}decode(b,offset=0){const discriminator=this.discriminator.decode(b,offset);if(discriminator===0){return null}else if(discriminator===1||discriminator===2){return this.layout.decode(b,offset+1)}throw new Error(`Invalid future epoch ${this.property}`)}getSpan(b,offset=0){const discriminator=this.discriminator.decode(b,offset);if(discriminator===0){return 1}else if(discriminator===1||discriminator===2){return this.layout.getSpan(b,offset+1)+1}throw new Error(`Invalid future epoch ${this.property}`)}}function futureEpoch(layout,property){return new FutureEpochLayout(layout,property)}const StakeAccountType=enums(["uninitialized","initialized","delegated","rewardsPool"]);const StakeMeta=type({rentExemptReserve:BigNumFromString,authorized:type({staker:PublicKeyFromString,withdrawer:PublicKeyFromString}),lockup:type({unixTimestamp:number(),epoch:number(),custodian:PublicKeyFromString})});const StakeAccountInfo=type({meta:StakeMeta,stake:nullable(type({delegation:type({voter:PublicKeyFromString,stake:BigNumFromString,activationEpoch:BigNumFromString,deactivationEpoch:BigNumFromString,warmupCooldownRate:number()}),creditsObserved:number()}))});const StakeAccount=type({type:StakeAccountType,info:optional(StakeAccountInfo)});const StakePoolLayout=LayoutExports.struct([LayoutExports.u8("accountType"),publicKey("manager"),publicKey("staker"),publicKey("stakeDepositAuthority"),LayoutExports.u8("stakeWithdrawBumpSeed"),publicKey("validatorList"),publicKey("reserveStake"),publicKey("poolMint"),publicKey("managerFeeAccount"),publicKey("tokenProgramId"),u64("totalLamports"),u64("poolTokenSupply"),u64("lastUpdateEpoch"),LayoutExports.struct([u64("unixTimestamp"),u64("epoch"),publicKey("custodian")],"lockup"),LayoutExports.struct(feeFields,"epochFee"),futureEpoch(LayoutExports.struct(feeFields),"nextEpochFee"),option(publicKey(),"preferredDepositValidatorVoteAddress"),option(publicKey(),"preferredWithdrawValidatorVoteAddress"),LayoutExports.struct(feeFields,"stakeDepositFee"),LayoutExports.struct(feeFields,"stakeWithdrawalFee"),futureEpoch(LayoutExports.struct(feeFields),"nextStakeWithdrawalFee"),LayoutExports.u8("stakeReferralFee"),option(publicKey(),"solDepositAuthority"),LayoutExports.struct(feeFields,"solDepositFee"),LayoutExports.u8("solReferralFee"),option(publicKey(),"solWithdrawAuthority"),LayoutExports.struct(feeFields,"solWithdrawalFee"),futureEpoch(LayoutExports.struct(feeFields),"nextSolWithdrawalFee"),u64("lastEpochPoolTokenSupply"),u64("lastEpochTotalLamports")]);var ValidatorStakeInfoStatus;(function(ValidatorStakeInfoStatus){ValidatorStakeInfoStatus[ValidatorStakeInfoStatus["Active"]=0]="Active";ValidatorStakeInfoStatus[ValidatorStakeInfoStatus["DeactivatingTransient"]=1]="DeactivatingTransient";ValidatorStakeInfoStatus[ValidatorStakeInfoStatus["ReadyForRemoval"]=2]="ReadyForRemoval"})(ValidatorStakeInfoStatus||(ValidatorStakeInfoStatus={}));const ValidatorStakeInfoLayout=LayoutExports.struct([u64("activeStakeLamports"),u64("transientStakeLamports"),u64("lastUpdateEpoch"),u64("transientSeedSuffixStart"),u64("transientSeedSuffixEnd"),LayoutExports.u8("status"),publicKey("voteAccountAddress")]);const ValidatorListLayout=LayoutExports.struct([LayoutExports.u8("accountType"),LayoutExports.u32("maxValidators"),vec(ValidatorStakeInfoLayout,"validators")]);async function getValidatorListAccount(connection,pubkey){const account=await connection.getAccountInfo(pubkey);if(!account){throw new Error("Invalid validator list account")}return{pubkey:pubkey,account:{data:ValidatorListLayout.decode(account===null||account===void 0?void 0:account.data),executable:account.executable,lamports:account.lamports,owner:account.owner}}}async function prepareWithdrawAccounts(connection,stakePool,stakePoolAddress,amount,compareFn,skipFee){var _a,_b;const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const validatorListAcc=await connection.getAccountInfo(stakePool.validatorList);const validatorList=ValidatorListLayout.decode(validatorListAcc===null||validatorListAcc===void 0?void 0:validatorListAcc.data);if(!(validatorList===null||validatorList===void 0?void 0:validatorList.validators)||(validatorList===null||validatorList===void 0?void 0:validatorList.validators.length)==0){throw new Error("No accounts found")}const minBalanceForRentExemption=await connection.getMinimumBalanceForRentExemption(StakeProgram.space);const minBalance=new BN(minBalanceForRentExemption+MINIMUM_ACTIVE_STAKE);let accounts=[];for(const validator of validatorList.validators){if(validator.status!==ValidatorStakeInfoStatus.Active){continue}const stakeAccountAddress=await findStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress);if(!validator.activeStakeLamports.isZero()){const isPreferred=(_a=stakePool===null||stakePool===void 0?void 0:stakePool.preferredWithdrawValidatorVoteAddress)===null||_a===void 0?void 0:_a.equals(validator.voteAccountAddress);accounts.push({type:isPreferred?"preferred":"active",voteAddress:validator.voteAccountAddress,stakeAddress:stakeAccountAddress,lamports:validator.activeStakeLamports})}const transientStakeLamports=validator.transientStakeLamports.sub(minBalance);if(transientStakeLamports.gt(new BN(0))){const transientStakeAccountAddress=await findTransientStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress,validator.transientSeedSuffixStart);accounts.push({type:"transient",voteAddress:validator.voteAccountAddress,stakeAddress:transientStakeAccountAddress,lamports:transientStakeLamports})}}accounts=accounts.sort(compareFn||((a,b)=>b.lamports.sub(a.lamports).toNumber()));const reserveStake=await connection.getAccountInfo(stakePool.reserveStake);const reserveStakeBalance=new BN(((_b=reserveStake===null||reserveStake===void 0?void 0:reserveStake.lamports)!==null&&_b!==void 0?_b:0)-minBalanceForRentExemption);if(reserveStakeBalance.gt(new BN(0))){accounts.push({type:"reserve",stakeAddress:stakePool.reserveStake,lamports:reserveStakeBalance})}const withdrawFrom=[];let remainingAmount=new BN(amount);const fee=stakePool.stakeWithdrawalFee;const inverseFee={numerator:fee.denominator.sub(fee.numerator),denominator:fee.denominator};for(const type of["preferred","active","transient","reserve"]){const filteredAccounts=accounts.filter(a=>a.type==type);for(const{stakeAddress:stakeAddress,voteAddress:voteAddress,lamports:lamports}of filteredAccounts){if(lamports.lte(minBalance)&&type=="transient"){continue}let availableForWithdrawal=calcPoolTokensForDeposit(stakePool,lamports);if(!skipFee&&!inverseFee.numerator.isZero()){availableForWithdrawal=availableForWithdrawal.mul(inverseFee.denominator).div(inverseFee.numerator)}const poolAmount=BN.min(availableForWithdrawal,remainingAmount);if(poolAmount.lte(new BN(0))){continue}withdrawFrom.push({stakeAddress:stakeAddress,voteAddress:voteAddress,poolAmount:poolAmount});remainingAmount=remainingAmount.sub(poolAmount);if(remainingAmount.isZero()){break}}if(remainingAmount.isZero()){break}}if(remainingAmount.gt(new BN(0))){throw new Error(`No stake accounts found in this pool with enough balance to withdraw ${lamportsToSol(amount)} pool tokens.`)}return withdrawFrom}function calcPoolTokensForDeposit(stakePool,stakeLamports){if(stakePool.poolTokenSupply.isZero()||stakePool.totalLamports.isZero()){return stakeLamports}const numerator=stakeLamports.mul(stakePool.poolTokenSupply);return numerator.div(stakePool.totalLamports)}function calcLamportsWithdrawAmount(stakePool,poolTokens){const numerator=poolTokens.mul(stakePool.totalLamports);const denominator=stakePool.poolTokenSupply;if(numerator.lt(denominator)){return new BN(0)}return numerator.div(denominator)}function newStakeAccount(feePayer,instructions,lamports){const stakeReceiverKeypair=Keypair.generate();console.log(`Creating account to receive stake ${stakeReceiverKeypair.publicKey}`);instructions.push(SystemProgram.createAccount({fromPubkey:feePayer,newAccountPubkey:stakeReceiverKeypair.publicKey,lamports:lamports,space:StakeProgram.space,programId:StakeProgram.programId}));return stakeReceiverKeypair}function arrayChunk(array,size){const result=[];for(let i=0;i<array.length;i+=size){result.push(array.slice(i,i+size))}return result}const MOVE_STAKE_LAYOUT=LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports"),LayoutExports$1.ns64("transientStakeSeed")]);const UPDATE_VALIDATOR_LIST_BALANCE_LAYOUT=LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("startIndex"),LayoutExports$1.u8("noMerge")]);function tokenMetadataLayout(instruction,nameLength,symbolLength,uriLength){if(nameLength>METADATA_MAX_NAME_LENGTH){throw"maximum token name length is 32 characters"}if(symbolLength>METADATA_MAX_SYMBOL_LENGTH){throw"maximum token symbol length is 10 characters"}if(uriLength>METADATA_MAX_URI_LENGTH){throw"maximum token uri length is 200 characters"}return{index:instruction,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("nameLen"),LayoutExports$1.blob(nameLength,"name"),LayoutExports$1.u32("symbolLen"),LayoutExports$1.blob(symbolLength,"symbol"),LayoutExports$1.u32("uriLen"),LayoutExports$1.blob(uriLength,"uri")])}}const STAKE_POOL_INSTRUCTION_LAYOUTS=Object.freeze({AddValidatorToPool:{index:1,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.u32("seed")])},RemoveValidatorFromPool:{index:2,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction")])},DecreaseValidatorStake:{index:3,layout:MOVE_STAKE_LAYOUT},IncreaseValidatorStake:{index:4,layout:MOVE_STAKE_LAYOUT},UpdateValidatorListBalance:{index:6,layout:UPDATE_VALIDATOR_LIST_BALANCE_LAYOUT},UpdateStakePoolBalance:{index:7,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction")])},CleanupRemovedValidatorEntries:{index:8,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction")])},DepositStake:{index:9,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction")])},WithdrawStake:{index:10,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("poolTokens")])},DepositSol:{index:14,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},WithdrawSol:{index:16,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("poolTokens")])},IncreaseAdditionalValidatorStake:{index:19,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports"),LayoutExports$1.ns64("transientStakeSeed"),LayoutExports$1.ns64("ephemeralStakeSeed")])},DecreaseAdditionalValidatorStake:{index:20,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports"),LayoutExports$1.ns64("transientStakeSeed"),LayoutExports$1.ns64("ephemeralStakeSeed")])},DecreaseValidatorStakeWithReserve:{index:21,layout:MOVE_STAKE_LAYOUT},Redelegate:{index:22,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction")])},DepositStakeWithSlippage:{index:23,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},WithdrawStakeWithSlippage:{index:24,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},DepositSolWithSlippage:{index:25,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},WithdrawSolWithSlippage:{index:26,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},DepositWsolWithSession:{index:27,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("lamports")])},WithdrawWsolWithSession:{index:28,layout:LayoutExports$1.struct([LayoutExports$1.u8("instruction"),LayoutExports$1.ns64("poolTokens")])}});class StakePoolInstruction{static addValidatorToPool(params){const{programId:programId,stakePool:stakePool,staker:staker,reserveStake:reserveStake,withdrawAuthority:withdrawAuthority,validatorList:validatorList,validatorStake:validatorStake,validatorVote:validatorVote,seed:seed}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.AddValidatorToPool;const data=encodeData(type,{seed:seed!==null&&seed!==void 0?seed:0});const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:validatorVote,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:STAKE_CONFIG_ID,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static removeValidatorFromPool(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,validatorStake:validatorStake,transientStake:transientStake}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.RemoveValidatorFromPool;const data=encodeData(type);const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static updateValidatorListBalance(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,startIndex:startIndex,noMerge:noMerge,validatorAndTransientStakePairs:validatorAndTransientStakePairs}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.UpdateValidatorListBalance;const data=encodeData(type,{startIndex:startIndex,noMerge:noMerge?1:0});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false},...validatorAndTransientStakePairs.map(pubkey=>({pubkey:pubkey,isSigner:false,isWritable:true}))];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static updateStakePoolBalance(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,managerFeeAccount:managerFeeAccount,poolMint:poolMint}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.UpdateStakePoolBalance;const data=encodeData(type);const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:false},{pubkey:managerFeeAccount,isSigner:false,isWritable:true},{pubkey:poolMint,isSigner:false,isWritable:true},{pubkey:TOKEN_PROGRAM_ID,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static cleanupRemovedValidatorEntries(params){const{programId:programId,stakePool:stakePool,validatorList:validatorList}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.CleanupRemovedValidatorEntries;const data=encodeData(type);const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static increaseValidatorStake(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,transientStake:transientStake,validatorStake:validatorStake,validatorVote:validatorVote,lamports:lamports,transientStakeSeed:transientStakeSeed}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.IncreaseValidatorStake;const data=encodeData(type,{lamports:lamports,transientStakeSeed:transientStakeSeed});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:false},{pubkey:validatorVote,isSigner:false,isWritable:false},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:STAKE_CONFIG_ID,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static increaseAdditionalValidatorStake(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,transientStake:transientStake,validatorStake:validatorStake,validatorVote:validatorVote,lamports:lamports,transientStakeSeed:transientStakeSeed,ephemeralStake:ephemeralStake,ephemeralStakeSeed:ephemeralStakeSeed}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.IncreaseAdditionalValidatorStake;const data=encodeData(type,{lamports:lamports,transientStakeSeed:transientStakeSeed,ephemeralStakeSeed:ephemeralStakeSeed});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:ephemeralStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:false},{pubkey:validatorVote,isSigner:false,isWritable:false},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:STAKE_CONFIG_ID,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static decreaseValidatorStake(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,validatorStake:validatorStake,transientStake:transientStake,lamports:lamports,transientStakeSeed:transientStakeSeed}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DecreaseValidatorStake;const data=encodeData(type,{lamports:lamports,transientStakeSeed:transientStakeSeed});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static decreaseValidatorStakeWithReserve(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,validatorStake:validatorStake,transientStake:transientStake,lamports:lamports,transientStakeSeed:transientStakeSeed}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DecreaseValidatorStakeWithReserve;const data=encodeData(type,{lamports:lamports,transientStakeSeed:transientStakeSeed});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static decreaseAdditionalValidatorStake(params){const{programId:programId,stakePool:stakePool,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,reserveStake:reserveStake,validatorStake:validatorStake,transientStake:transientStake,lamports:lamports,transientStakeSeed:transientStakeSeed,ephemeralStakeSeed:ephemeralStakeSeed,ephemeralStake:ephemeralStake}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DecreaseAdditionalValidatorStake;const data=encodeData(type,{lamports:lamports,transientStakeSeed:transientStakeSeed,ephemeralStakeSeed:ephemeralStakeSeed});const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:staker,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:ephemeralStake,isSigner:false,isWritable:true},{pubkey:transientStake,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static depositStake(params){const{programId:programId,stakePool:stakePool,validatorList:validatorList,depositAuthority:depositAuthority,withdrawAuthority:withdrawAuthority,depositStake:depositStake,validatorStake:validatorStake,reserveStake:reserveStake,destinationPoolAccount:destinationPoolAccount,managerFeeAccount:managerFeeAccount,referralPoolAccount:referralPoolAccount,poolMint:poolMint}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DepositStake;const data=encodeData(type);const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:depositAuthority,isSigner:false,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:depositStake,isSigner:false,isWritable:true},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:destinationPoolAccount,isSigner:false,isWritable:true},{pubkey:managerFeeAccount,isSigner:false,isWritable:true},{pubkey:referralPoolAccount,isSigner:false,isWritable:true},{pubkey:poolMint,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:TOKEN_PROGRAM_ID,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static depositSol(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,depositAuthority:depositAuthority,reserveStake:reserveStake,fundingAccount:fundingAccount,destinationPoolAccount:destinationPoolAccount,managerFeeAccount:managerFeeAccount,referralPoolAccount:referralPoolAccount,poolMint:poolMint,lamports:lamports}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DepositSol;const data=encodeData(type,{lamports:lamports});const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:fundingAccount,isSigner:true,isWritable:true},{pubkey:destinationPoolAccount,isSigner:false,isWritable:true},{pubkey:managerFeeAccount,isSigner:false,isWritable:true},{pubkey:referralPoolAccount,isSigner:false,isWritable:true},{pubkey:poolMint,isSigner:false,isWritable:true},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:TOKEN_PROGRAM_ID,isSigner:false,isWritable:false}];if(depositAuthority){keys.push({pubkey:depositAuthority,isSigner:true,isWritable:false})}return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static depositWsolWithSession(params){var _a;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.DepositWsolWithSession;const data=encodeData(type,{lamports:params.lamports});const keys=[{pubkey:params.stakePool,isSigner:false,isWritable:true},{pubkey:params.withdrawAuthority,isSigner:false,isWritable:false},{pubkey:params.reserveStake,isSigner:false,isWritable:true},{pubkey:params.fundingAccount,isSigner:true,isWritable:true},{pubkey:params.destinationPoolAccount,isSigner:false,isWritable:true},{pubkey:params.managerFeeAccount,isSigner:false,isWritable:true},{pubkey:params.referralPoolAccount,isSigner:false,isWritable:true},{pubkey:params.poolMint,isSigner:false,isWritable:true},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:params.tokenProgramId,isSigner:false,isWritable:false},{pubkey:params.wsolMint,isSigner:false,isWritable:false},{pubkey:params.wsolTokenAccount,isSigner:false,isWritable:true},{pubkey:params.wsolTransientAccount,isSigner:false,isWritable:true},{pubkey:params.programSigner,isSigner:false,isWritable:true},{pubkey:(_a=params.payer)!==null&&_a!==void 0?_a:params.fundingAccount,isSigner:true,isWritable:true}];if(params.depositAuthority){keys.push({pubkey:params.depositAuthority,isSigner:true,isWritable:false})}return new TransactionInstruction({programId:params.programId,keys:keys,data:data})}static withdrawStake(params){const{programId:programId,stakePool:stakePool,validatorList:validatorList,withdrawAuthority:withdrawAuthority,validatorStake:validatorStake,destinationStake:destinationStake,destinationStakeAuthority:destinationStakeAuthority,sourceTransferAuthority:sourceTransferAuthority,sourcePoolAccount:sourcePoolAccount,managerFeeAccount:managerFeeAccount,poolMint:poolMint,poolTokens:poolTokens}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.WithdrawStake;const data=encodeData(type,{poolTokens:poolTokens});const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:validatorList,isSigner:false,isWritable:true},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:validatorStake,isSigner:false,isWritable:true},{pubkey:destinationStake,isSigner:false,isWritable:true},{pubkey:destinationStakeAuthority,isSigner:false,isWritable:false},{pubkey:sourceTransferAuthority,isSigner:true,isWritable:false},{pubkey:sourcePoolAccount,isSigner:false,isWritable:true},{pubkey:managerFeeAccount,isSigner:false,isWritable:true},{pubkey:poolMint,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:TOKEN_PROGRAM_ID,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false}];return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static withdrawSol(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,sourceTransferAuthority:sourceTransferAuthority,sourcePoolAccount:sourcePoolAccount,reserveStake:reserveStake,destinationSystemAccount:destinationSystemAccount,managerFeeAccount:managerFeeAccount,solWithdrawAuthority:solWithdrawAuthority,poolMint:poolMint,poolTokens:poolTokens}=params;const type=STAKE_POOL_INSTRUCTION_LAYOUTS.WithdrawSol;const data=encodeData(type,{poolTokens:poolTokens});const keys=[{pubkey:stakePool,isSigner:false,isWritable:true},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:sourceTransferAuthority,isSigner:true,isWritable:false},{pubkey:sourcePoolAccount,isSigner:false,isWritable:true},{pubkey:reserveStake,isSigner:false,isWritable:true},{pubkey:destinationSystemAccount,isSigner:false,isWritable:true},{pubkey:managerFeeAccount,isSigner:false,isWritable:true},{pubkey:poolMint,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false},{pubkey:TOKEN_PROGRAM_ID,isSigner:false,isWritable:false}];if(solWithdrawAuthority){keys.push({pubkey:solWithdrawAuthority,isSigner:true,isWritable:false})}return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static withdrawWsolWithSession(params){const type=STAKE_POOL_INSTRUCTION_LAYOUTS.WithdrawWsolWithSession;const data=encodeData(type,{poolTokens:params.poolTokens});const keys=[{pubkey:params.stakePool,isSigner:false,isWritable:true},{pubkey:params.withdrawAuthority,isSigner:false,isWritable:false},{pubkey:params.userTransferAuthority,isSigner:true,isWritable:true},{pubkey:params.poolTokensFrom,isSigner:false,isWritable:true},{pubkey:params.reserveStake,isSigner:false,isWritable:true},{pubkey:params.userWsolAccount,isSigner:false,isWritable:true},{pubkey:params.managerFeeAccount,isSigner:false,isWritable:true},{pubkey:params.poolMint,isSigner:false,isWritable:true},{pubkey:SYSVAR_CLOCK_PUBKEY,isSigner:false,isWritable:false},{pubkey:SYSVAR_STAKE_HISTORY_PUBKEY,isSigner:false,isWritable:false},{pubkey:StakeProgram.programId,isSigner:false,isWritable:false},{pubkey:params.tokenProgramId,isSigner:false,isWritable:false},{pubkey:params.wsolMint,isSigner:false,isWritable:false},{pubkey:params.programSigner,isSigner:false,isWritable:true}];if(params.solWithdrawAuthority){keys.push({pubkey:params.solWithdrawAuthority,isSigner:true,isWritable:false})}return new TransactionInstruction({programId:params.programId,keys:keys,data:data})}static createTokenMetadata(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,tokenMetadata:tokenMetadata,manager:manager,payer:payer,poolMint:poolMint,name:name,symbol:symbol,uri:uri}=params;const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:manager,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:poolMint,isSigner:false,isWritable:false},{pubkey:payer,isSigner:true,isWritable:true},{pubkey:tokenMetadata,isSigner:false,isWritable:true},{pubkey:METADATA_PROGRAM_ID,isSigner:false,isWritable:false},{pubkey:SystemProgram.programId,isSigner:false,isWritable:false},{pubkey:SYSVAR_RENT_PUBKEY,isSigner:false,isWritable:false}];const type=tokenMetadataLayout(17,name.length,symbol.length,uri.length);const data=encodeData(type,{nameLen:name.length,name:Buffer.from(name),symbolLen:symbol.length,symbol:Buffer.from(symbol),uriLen:uri.length,uri:Buffer.from(uri)});return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static updateTokenMetadata(params){const{programId:programId,stakePool:stakePool,withdrawAuthority:withdrawAuthority,tokenMetadata:tokenMetadata,manager:manager,name:name,symbol:symbol,uri:uri}=params;const keys=[{pubkey:stakePool,isSigner:false,isWritable:false},{pubkey:manager,isSigner:true,isWritable:false},{pubkey:withdrawAuthority,isSigner:false,isWritable:false},{pubkey:tokenMetadata,isSigner:false,isWritable:true},{pubkey:METADATA_PROGRAM_ID,isSigner:false,isWritable:false}];const type=tokenMetadataLayout(18,name.length,symbol.length,uri.length);const data=encodeData(type,{nameLen:name.length,name:Buffer.from(name),symbolLen:symbol.length,symbol:Buffer.from(symbol),uriLen:uri.length,uri:Buffer.from(uri)});return new TransactionInstruction({programId:programId!==null&&programId!==void 0?programId:STAKE_POOL_PROGRAM_ID,keys:keys,data:data})}static decodeDepositStake(instruction){this.checkProgramId(instruction.programId);this.checkKeyLength(instruction.keys,11);decodeData(STAKE_POOL_INSTRUCTION_LAYOUTS.DepositStake,instruction.data);return{programId:instruction.programId,stakePool:instruction.keys[0].pubkey,validatorList:instruction.keys[1].pubkey,depositAuthority:instruction.keys[2].pubkey,withdrawAuthority:instruction.keys[3].pubkey,depositStake:instruction.keys[4].pubkey,validatorStake:instruction.keys[5].pubkey,reserveStake:instruction.keys[6].pubkey,destinationPoolAccount:instruction.keys[7].pubkey,managerFeeAccount:instruction.keys[8].pubkey,referralPoolAccount:instruction.keys[9].pubkey,poolMint:instruction.keys[10].pubkey}}static decodeDepositSol(instruction){this.checkProgramId(instruction.programId);this.checkKeyLength(instruction.keys,9);const{amount:amount}=decodeData(STAKE_POOL_INSTRUCTION_LAYOUTS.DepositSol,instruction.data);return{programId:instruction.programId,stakePool:instruction.keys[0].pubkey,depositAuthority:instruction.keys[1].pubkey,withdrawAuthority:instruction.keys[2].pubkey,reserveStake:instruction.keys[3].pubkey,fundingAccount:instruction.keys[4].pubkey,destinationPoolAccount:instruction.keys[5].pubkey,managerFeeAccount:instruction.keys[6].pubkey,referralPoolAccount:instruction.keys[7].pubkey,poolMint:instruction.keys[8].pubkey,lamports:amount}}static checkProgramId(programId){if(!programId.equals(STAKE_POOL_PROGRAM_ID)&&!programId.equals(DEVNET_STAKE_POOL_PROGRAM_ID)){throw new Error("Invalid instruction; programId is not the stake pool program")}}static checkKeyLength(keys,expectedLength){if(keys.length<expectedLength){throw new Error(`Invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`)}}}function getStakePoolProgramId(rpcEndpoint){if(rpcEndpoint.includes("devnet")){return DEVNET_STAKE_POOL_PROGRAM_ID}else{return STAKE_POOL_PROGRAM_ID}}async function getStakePoolAccount(connection,stakePoolAddress){const account=await connection.getAccountInfo(stakePoolAddress);if(!account){throw new Error("Invalid stake pool account")}return{pubkey:stakePoolAddress,account:{data:StakePoolLayout.decode(account.data),executable:account.executable,lamports:account.lamports,owner:account.owner}}}async function getStakeAccount(connection,stakeAccount){const result=(await connection.getParsedAccountInfo(stakeAccount)).value;if(!result||!("parsed"in result.data)){throw new Error("Invalid stake account")}const program=result.data.program;if(program!=="stake"){throw new Error("Not a stake account")}return create(result.data.parsed,StakeAccount)}async function getStakePoolAccounts(connection,stakePoolProgramAddress){const response=await connection.getProgramAccounts(stakePoolProgramAddress);return response.map(a=>{try{if(a.account.data.readUInt8()===1){const data=StakePoolLayout.decode(a.account.data);return{pubkey:a.pubkey,account:{data:data,executable:a.account.executable,lamports:a.account.lamports,owner:a.account.owner}}}else if(a.account.data.readUInt8()===2){const data=ValidatorListLayout.decode(a.account.data);return{pubkey:a.pubkey,account:{data:data,executable:a.account.executable,lamports:a.account.lamports,owner:a.account.owner}}}else{console.error(`Could not decode. StakePoolAccount Enum is ${a.account.data.readUInt8()}, expected 1 or 2!`);return undefined}}catch(error){console.error("Could not decode account. Error:",error);return undefined}}).filter(a=>a!==undefined)}async function depositStake(connection,stakePoolAddress,authorizedPubkey,validatorVote,depositStake,poolTokenReceiverAccount){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validatorVote,stakePoolAddress);const instructions=[];const signers=[];const poolMint=stakePool.account.data.poolMint;if(!poolTokenReceiverAccount){const associatedAddress=getAssociatedTokenAddressSync(poolMint,authorizedPubkey);instructions.push(createAssociatedTokenAccountIdempotentInstruction(authorizedPubkey,associatedAddress,authorizedPubkey,poolMint));poolTokenReceiverAccount=associatedAddress}instructions.push(...StakeProgram.authorize({stakePubkey:depositStake,authorizedPubkey:authorizedPubkey,newAuthorizedPubkey:stakePool.account.data.stakeDepositAuthority,stakeAuthorizationType:StakeAuthorizationLayout.Staker}).instructions);instructions.push(...StakeProgram.authorize({stakePubkey:depositStake,authorizedPubkey:authorizedPubkey,newAuthorizedPubkey:stakePool.account.data.stakeDepositAuthority,stakeAuthorizationType:StakeAuthorizationLayout.Withdrawer}).instructions);instructions.push(StakePoolInstruction.depositStake({programId:stakePoolProgramId,stakePool:stakePoolAddress,validatorList:stakePool.account.data.validatorList,depositAuthority:stakePool.account.data.stakeDepositAuthority,reserveStake:stakePool.account.data.reserveStake,managerFeeAccount:stakePool.account.data.managerFeeAccount,referralPoolAccount:poolTokenReceiverAccount,destinationPoolAccount:poolTokenReceiverAccount,withdrawAuthority:withdrawAuthority,depositStake:depositStake,validatorStake:validatorStake,poolMint:poolMint}));return{instructions:instructions,signers:signers}}async function depositWsolWithSession(connection,stakePoolAddress,signerOrSession,userPubkey,lamports,destinationTokenAccount,referrerTokenAccount,depositAuthority,payer){const wsolTokenAccount=getAssociatedTokenAddressSync(NATIVE_MINT,userPubkey);const tokenAccountInfo=await connection.getTokenAccountBalance(wsolTokenAccount,"confirmed");const wsolBalance=tokenAccountInfo?parseInt(tokenAccountInfo.value.amount):0;if(wsolBalance<lamports){throw new Error(`Not enough WSOL to deposit into pool. Maximum deposit amount is ${lamportsToSol(wsolBalance)} WSOL.`)}const stakePoolAccount=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const stakePool=stakePoolAccount.account.data;const instructions=[];if(!destinationTokenAccount){const associatedAddress=getAssociatedTokenAddressSync(stakePool.poolMint,userPubkey);instructions.push(createAssociatedTokenAccountIdempotentInstruction(payer!==null&&payer!==void 0?payer:signerOrSession,associatedAddress,userPubkey,stakePool.poolMint));destinationTokenAccount=associatedAddress}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const[programSigner]=PublicKey.findProgramAddressSync([Buffer.from("fogo_session_program_signer")],stakePoolProgramId);const wsolTransientAccount=findWsolTransientProgramAddress(stakePoolProgramId,userPubkey);instructions.push(StakePoolInstruction.depositWsolWithSession({programId:stakePoolProgramId,stakePool:stakePoolAddress,reserveStake:stakePool.reserveStake,fundingAccount:signerOrSession,destinationPoolAccount:destinationTokenAccount,managerFeeAccount:stakePool.managerFeeAccount,referralPoolAccount:referrerTokenAccount!==null&&referrerTokenAccount!==void 0?referrerTokenAccount:destinationTokenAccount,poolMint:stakePool.poolMint,lamports:lamports,withdrawAuthority:withdrawAuthority,depositAuthority:depositAuthority,wsolMint:NATIVE_MINT,wsolTokenAccount:wsolTokenAccount,wsolTransientAccount:wsolTransientAccount,tokenProgramId:stakePool.tokenProgramId,programSigner:programSigner,payer:payer}));return{instructions:instructions,signers:[]}}async function depositSol(connection,stakePoolAddress,from,lamports,destinationTokenAccount,referrerTokenAccount,depositAuthority){const fromBalance=await connection.getBalance(from,"confirmed");if(fromBalance<lamports){throw new Error(`Not enough SOL to deposit into pool. Maximum deposit amount is ${lamportsToSol(fromBalance)} SOL.`)}const stakePoolAccount=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const stakePool=stakePoolAccount.account.data;const userSolTransfer=new Keypair;const signers=[userSolTransfer];const instructions=[];instructions.push(SystemProgram.transfer({fromPubkey:from,toPubkey:userSolTransfer.publicKey,lamports:lamports}));if(!destinationTokenAccount){const associatedAddress=getAssociatedTokenAddressSync(stakePool.poolMint,from);instructions.push(createAssociatedTokenAccountIdempotentInstruction(from,associatedAddress,from,stakePool.poolMint));destinationTokenAccount=associatedAddress}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);instructions.push(StakePoolInstruction.depositSol({programId:stakePoolProgramId,stakePool:stakePoolAddress,reserveStake:stakePool.reserveStake,fundingAccount:userSolTransfer.publicKey,destinationPoolAccount:destinationTokenAccount,managerFeeAccount:stakePool.managerFeeAccount,referralPoolAccount:referrerTokenAccount!==null&&referrerTokenAccount!==void 0?referrerTokenAccount:destinationTokenAccount,poolMint:stakePool.poolMint,lamports:lamports,withdrawAuthority:withdrawAuthority,depositAuthority:depositAuthority}));return{instructions:instructions,signers:signers}}async function withdrawStake(connection,stakePoolAddress,tokenOwner,amount,useReserve=false,voteAccountAddress,stakeReceiver,poolTokenAccount,validatorComparator){var _c,_d,_e,_f;const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const poolAmount=new BN(solToLamports(amount));if(!poolTokenAccount){poolTokenAccount=getAssociatedTokenAddressSync(stakePool.account.data.poolMint,tokenOwner)}const tokenAccount=await getAccount(connection,poolTokenAccount);if(tokenAccount.amount<poolAmount.toNumber()){throw new Error(`Not enough token balance to withdraw ${lamportsToSol(poolAmount)} pool tokens.\n Maximum withdraw amount is ${lamportsToSol(tokenAccount.amount)} pool tokens.`)}const stakeAccountRentExemption=await connection.getMinimumBalanceForRentExemption(StakeProgram.space);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);let stakeReceiverAccount=null;if(stakeReceiver){stakeReceiverAccount=await getStakeAccount(connection,stakeReceiver)}const withdrawAccounts=[];if(useReserve){withdrawAccounts.push({stakeAddress:stakePool.account.data.reserveStake,voteAddress:undefined,poolAmount:poolAmount})}else if(stakeReceiverAccount&&(stakeReceiverAccount===null||stakeReceiverAccount===void 0?void 0:stakeReceiverAccount.type)==="delegated"){const voteAccount=(_d=(_c=stakeReceiverAccount.info)===null||_c===void 0?void 0:_c.stake)===null||_d===void 0?void 0:_d.delegation.voter;if(!voteAccount){throw new Error(`Invalid stake receiver ${stakeReceiver} delegation`)}const validatorListAccount=await connection.getAccountInfo(stakePool.account.data.validatorList);const validatorList=ValidatorListLayout.decode(validatorListAccount===null||validatorListAccount===void 0?void 0:validatorListAccount.data);const isValidVoter=validatorList.validators.find(val=>val.voteAccountAddress.equals(voteAccount));if(voteAccountAddress&&voteAccountAddress!==voteAccount){throw new Error(`Provided withdrawal vote account ${voteAccountAddress} does not match delegation on stake receiver account ${voteAccount},\n remove this flag or provide a different stake account delegated to ${voteAccountAddress}`)}if(isValidVoter){const stakeAccountAddress=await findStakeProgramAddress(stakePoolProgramId,voteAccount,stakePoolAddress);const stakeAccount=await connection.getAccountInfo(stakeAccountAddress);if(!stakeAccount){throw new Error(`Preferred withdraw valdator's stake account is invalid`)}const availableForWithdrawal=calcLamportsWithdrawAmount(stakePool.account.data,new BN(stakeAccount.lamports-MINIMUM_ACTIVE_STAKE-stakeAccountRentExemption));if(availableForWithdrawal.lt(poolAmount)){throw new Error(`Not enough lamports available for withdrawal from ${stakeAccountAddress},\n ${poolAmount} asked, ${availableForWithdrawal} available.`)}withdrawAccounts.push({stakeAddress:stakeAccountAddress,voteAddress:voteAccount,poolAmount:poolAmount})}else{throw new Error(`Provided stake account is delegated to a vote account ${voteAccount} which does not exist in the stake pool`)}}else if(voteAccountAddress){const stakeAccountAddress=await findStakeProgramAddress(stakePoolProgramId,voteAccountAddress,stakePoolAddress);const stakeAccount=await connection.getAccountInfo(stakeAccountAddress);if(!stakeAccount){throw new Error("Invalid Stake Account")}const availableLamports=new BN(stakeAccount.lamports-MINIMUM_ACTIVE_STAKE-stakeAccountRentExemption);if(availableLamports.lt(new BN(0))){throw new Error("Invalid Stake Account")}const availableForWithdrawal=calcLamportsWithdrawAmount(stakePool.account.data,availableLamports);if(availableForWithdrawal.lt(poolAmount)){throw new Error(`Not enough lamports available for withdrawal from ${stakeAccountAddress},\n ${poolAmount} asked, ${availableForWithdrawal} available.`)}withdrawAccounts.push({stakeAddress:stakeAccountAddress,voteAddress:voteAccountAddress,poolAmount:poolAmount})}else{withdrawAccounts.push(...await prepareWithdrawAccounts(connection,stakePool.account.data,stakePoolAddress,poolAmount,validatorComparator,poolTokenAccount.equals(stakePool.account.data.managerFeeAccount)))}const instructions=[];const userTransferAuthority=Keypair.generate();const signers=[userTransferAuthority];instructions.push(createApproveInstruction(poolTokenAccount,userTransferAuthority.publicKey,tokenOwner,poolAmount.toNumber()));let totalRentFreeBalances=0;const maxWithdrawAccounts=5;let i=0;for(const withdrawAccount of withdrawAccounts){if(i>maxWithdrawAccounts){break}const solWithdrawAmount=calcLamportsWithdrawAmount(stakePool.account.data,withdrawAccount.poolAmount);let infoMsg=`Withdrawing ◎${solWithdrawAmount},\n from stake account ${(_e=withdrawAccount.stakeAddress)===null||_e===void 0?void 0:_e.toBase58()}`;if(withdrawAccount.voteAddress){infoMsg=`${infoMsg}, delegated to ${(_f=withdrawAccount.voteAddress)===null||_f===void 0?void 0:_f.toBase58()}`}console.info(infoMsg);let stakeToReceive;if(!stakeReceiver||stakeReceiverAccount&&stakeReceiverAccount.type==="delegated"){const stakeKeypair=newStakeAccount(tokenOwner,instructions,stakeAccountRentExemption);signers.push(stakeKeypair);totalRentFreeBalances+=stakeAccountRentExemption;stakeToReceive=stakeKeypair.publicKey}else{stakeToReceive=stakeReceiver}instructions.push(StakePoolInstruction.withdrawStake({programId:stakePoolProgramId,stakePool:stakePoolAddress,validatorList:stakePool.account.data.validatorList,validatorStake:withdrawAccount.stakeAddress,destinationStake:stakeToReceive,destinationStakeAuthority:tokenOwner,sourceTransferAuthority:userTransferAuthority.publicKey,sourcePoolAccount:poolTokenAccount,managerFeeAccount:stakePool.account.data.managerFeeAccount,poolMint:stakePool.account.data.poolMint,poolTokens:withdrawAccount.poolAmount.toNumber(),withdrawAuthority:withdrawAuthority}));i++}if(stakeReceiver&&stakeReceiverAccount&&stakeReceiverAccount.type==="delegated"){signers.forEach(newStakeKeypair=>{instructions.concat(StakeProgram.merge({stakePubkey:stakeReceiver,sourceStakePubKey:newStakeKeypair.publicKey,authorizedPubkey:tokenOwner}).instructions)})}return{instructions:instructions,signers:signers,stakeReceiver:stakeReceiver,totalRentFreeBalances:totalRentFreeBalances}}async function withdrawSol(connection,stakePoolAddress,tokenOwner,solReceiver,amount,solWithdrawAuthority){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const poolAmount=solToLamports(amount);const poolTokenAccount=getAssociatedTokenAddressSync(stakePool.account.data.poolMint,tokenOwner);const tokenAccount=await getAccount(connection,poolTokenAccount);if(tokenAccount.amount<poolAmount){throw new Error(`Not enough token balance to withdraw ${lamportsToSol(poolAmount)} pool tokens.\n Maximum withdraw amount is ${lamportsToSol(tokenAccount.amount)} pool tokens.`)}const instructions=[];const userTransferAuthority=Keypair.generate();const signers=[userTransferAuthority];instructions.push(createApproveInstruction(poolTokenAccount,userTransferAuthority.publicKey,tokenOwner,poolAmount));const poolWithdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);if(solWithdrawAuthority){const expectedSolWithdrawAuthority=stakePool.account.data.solWithdrawAuthority;if(!expectedSolWithdrawAuthority){throw new Error("SOL withdraw authority specified in arguments but stake pool has none")}if(solWithdrawAuthority.toBase58()!==expectedSolWithdrawAuthority.toBase58()){throw new Error(`Invalid deposit withdraw specified, expected ${expectedSolWithdrawAuthority.toBase58()}, received ${solWithdrawAuthority.toBase58()}`)}}const withdrawTransaction=StakePoolInstruction.withdrawSol({programId:stakePoolProgramId,stakePool:stakePoolAddress,withdrawAuthority:poolWithdrawAuthority,reserveStake:stakePool.account.data.reserveStake,sourcePoolAccount:poolTokenAccount,sourceTransferAuthority:userTransferAuthority.publicKey,destinationSystemAccount:solReceiver,managerFeeAccount:stakePool.account.data.managerFeeAccount,poolMint:stakePool.account.data.poolMint,poolTokens:poolAmount,solWithdrawAuthority:solWithdrawAuthority});instructions.push(withdrawTransaction);return{instructions:instructions,signers:signers}}async function withdrawWsolWithSession(connection,stakePoolAddress,signerOrSession,userPubkey,amount,solWithdrawAuthority){const stakePoolAccount=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const stakePool=stakePoolAccount.account.data;const poolTokens=solToLamports(amount);const poolTokenAccount=getAssociatedTokenAddressSync(stakePool.poolMint,userPubkey);const tokenAccount=await getAccount(connection,poolTokenAccount);if(tokenAccount.amount<poolTokens){throw new Error(`Not enough token balance to withdraw ${amount} pool tokens.\n Maximum withdraw amount is ${lamportsToSol(tokenAccount.amount)} pool tokens.`)}const userWsolAccount=getAssociatedTokenAddressSync(NATIVE_MINT,userPubkey);const instructions=[];const signers=[];instructions.push(createAssociatedTokenAccountIdempotentInstruction(signerOrSession,userWsolAccount,userPubkey,NATIVE_MINT));const[programSigner]=PublicKey.findProgramAddressSync([Buffer.from("fogo_session_program_signer")],stakePoolProgramId);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);instructions.push(StakePoolInstruction.withdrawWsolWithSession({programId:stakePoolProgramId,stakePool:stakePoolAddress,withdrawAuthority:withdrawAuthority,userTransferAuthority:signerOrSession,poolTokensFrom:poolTokenAccount,reserveStake:stakePool.reserveStake,userWsolAccount:userWsolAccount,managerFeeAccount:stakePool.managerFeeAccount,poolMint:stakePool.poolMint,tokenProgramId:stakePool.tokenProgramId,solWithdrawAuthority:solWithdrawAuthority,wsolMint:NATIVE_MINT,programSigner:programSigner,poolTokens:poolTokens}));return{instructions:instructions,signers:signers}}async function addValidatorToPool(connection,stakePoolAddress,validatorVote,seed){const stakePoolAccount=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const stakePool=stakePoolAccount.account.data;const{reserveStake:reserveStake,staker:staker,validatorList:validatorList}=stakePool;const validatorListAccount=await getValidatorListAccount(connection,validatorList);const validatorInfo=validatorListAccount.account.data.validators.find(v=>v.voteAccountAddress.toBase58()===validatorVote.toBase58());if(validatorInfo){throw new Error("Vote account is already in validator list")}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validatorVote,stakePoolAddress,seed);const instructions=[StakePoolInstruction.addValidatorToPool({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:staker,reserveStake:reserveStake,withdrawAuthority:withdrawAuthority,validatorList:validatorList,validatorStake:validatorStake,validatorVote:validatorVote})];return{instructions:instructions}}async function removeValidatorFromPool(connection,stakePoolAddress,validatorVote,seed){const stakePoolAccount=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const stakePool=stakePoolAccount.account.data;const{staker:staker,validatorList:validatorList}=stakePool;const validatorListAccount=await getValidatorListAccount(connection,validatorList);const validatorInfo=validatorListAccount.account.data.validators.find(v=>v.voteAccountAddress.toBase58()===validatorVote.toBase58());if(!validatorInfo){throw new Error("Vote account is not already in validator list")}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validatorVote,stakePoolAddress,seed);const transientStakeSeed=validatorInfo.transientSeedSuffixStart;const transientStake=await findTransientStakeProgramAddress(stakePoolProgramId,validatorInfo.voteAccountAddress,stakePoolAddress,transientStakeSeed);const instructions=[StakePoolInstruction.removeValidatorFromPool({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:staker,withdrawAuthority:withdrawAuthority,validatorList:validatorList,validatorStake:validatorStake,transientStake:transientStake})];return{instructions:instructions}}async function increaseValidatorStake(connection,stakePoolAddress,validatorVote,lamports,ephemeralStakeSeed){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const validatorList=await getValidatorListAccount(connection,stakePool.account.data.validatorList);const validatorInfo=validatorList.account.data.validators.find(v=>v.voteAccountAddress.toBase58()===validatorVote.toBase58());if(!validatorInfo){throw new Error("Vote account not found in validator list")}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const transientStakeSeed=ephemeralStakeSeed===undefined?validatorInfo.transientSeedSuffixStart.addn(1):validatorInfo.transientSeedSuffixStart;const transientStake=await findTransientStakeProgramAddress(stakePoolProgramId,validatorInfo.voteAccountAddress,stakePoolAddress,transientStakeSeed);const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validatorInfo.voteAccountAddress,stakePoolAddress);const instructions=[];if(ephemeralStakeSeed!==undefined){const ephemeralStake=await findEphemeralStakeProgramAddress(stakePoolProgramId,stakePoolAddress,new BN(ephemeralStakeSeed));instructions.push(StakePoolInstruction.increaseAdditionalValidatorStake({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:stakePool.account.data.staker,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,transientStakeSeed:transientStakeSeed.toNumber(),withdrawAuthority:withdrawAuthority,transientStake:transientStake,validatorStake:validatorStake,validatorVote:validatorVote,lamports:lamports,ephemeralStake:ephemeralStake,ephemeralStakeSeed:ephemeralStakeSeed}))}else{instructions.push(StakePoolInstruction.increaseValidatorStake({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:stakePool.account.data.staker,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,transientStakeSeed:transientStakeSeed.toNumber(),withdrawAuthority:withdrawAuthority,transientStake:transientStake,validatorStake:validatorStake,validatorVote:validatorVote,lamports:lamports}))}return{instructions:instructions}}async function decreaseValidatorStake(connection,stakePoolAddress,validatorVote,lamports,ephemeralStakeSeed){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const validatorList=await getValidatorListAccount(connection,stakePool.account.data.validatorList);const validatorInfo=validatorList.account.data.validators.find(v=>v.voteAccountAddress.toBase58()===validatorVote.toBase58());if(!validatorInfo){throw new Error("Vote account not found in validator list")}const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validatorInfo.voteAccountAddress,stakePoolAddress);const transientStakeSeed=ephemeralStakeSeed===undefined?validatorInfo.transientSeedSuffixStart.addn(1):validatorInfo.transientSeedSuffixStart;const transientStake=await findTransientStakeProgramAddress(stakePoolProgramId,validatorInfo.voteAccountAddress,stakePoolAddress,transientStakeSeed);const instructions=[];if(ephemeralStakeSeed!==undefined){const ephemeralStake=await findEphemeralStakeProgramAddress(stakePoolProgramId,stakePoolAddress,new BN(ephemeralStakeSeed));instructions.push(StakePoolInstruction.decreaseAdditionalValidatorStake({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:stakePool.account.data.staker,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,transientStakeSeed:transientStakeSeed.toNumber(),withdrawAuthority:withdrawAuthority,validatorStake:validatorStake,transientStake:transientStake,lamports:lamports,ephemeralStake:ephemeralStake,ephemeralStakeSeed:ephemeralStakeSeed}))}else{instructions.push(StakePoolInstruction.decreaseValidatorStakeWithReserve({programId:stakePoolProgramId,stakePool:stakePoolAddress,staker:stakePool.account.data.staker,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,transientStakeSeed:transientStakeSeed.toNumber(),withdrawAuthority:withdrawAuthority,validatorStake:validatorStake,transientStake:transientStake,lamports:lamports}))}return{instructions:instructions}}async function updateStakePool(connection,stakePool,noMerge=false){const stakePoolAddress=stakePool.pubkey;const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const validatorList=await getValidatorListAccount(connection,stakePool.account.data.validatorList);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const updateListInstructions=[];const instructions=[];let startIndex=0;const validatorChunks=arrayChunk(validatorList.account.data.validators,MAX_VALIDATORS_TO_UPDATE);for(const validatorChunk of validatorChunks){const validatorAndTransientStakePairs=[];for(const validator of validatorChunk){const validatorStake=await findStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress);validatorAndTransientStakePairs.push(validatorStake);const transientStake=await findTransientStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress,validator.transientSeedSuffixStart);validatorAndTransientStakePairs.push(transientStake)}updateListInstructions.push(StakePoolInstruction.updateValidatorListBalance({programId:stakePoolProgramId,stakePool:stakePoolAddress,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,validatorAndTransientStakePairs:validatorAndTransientStakePairs,withdrawAuthority:withdrawAuthority,startIndex:startIndex,noMerge:noMerge}));startIndex+=MAX_VALIDATORS_TO_UPDATE}instructions.push(StakePoolInstruction.updateStakePoolBalance({programId:stakePoolProgramId,stakePool:stakePoolAddress,validatorList:stakePool.account.data.validatorList,reserveStake:stakePool.account.data.reserveStake,managerFeeAccount:stakePool.account.data.managerFeeAccount,poolMint:stakePool.account.data.poolMint,withdrawAuthority:withdrawAuthority}));instructions.push(StakePoolInstruction.cleanupRemovedValidatorEntries({programId:stakePoolProgramId,stakePool:stakePoolAddress,validatorList:stakePool.account.data.validatorList}));return{updateListInstructions:updateListInstructions,finalInstructions:instructions}}async function stakePoolInfo(connection,stakePoolAddress){var _c,_d;const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const reserveAccountStakeAddress=stakePool.account.data.reserveStake;const totalLamports=stakePool.account.data.totalLamports;const lastUpdateEpoch=stakePool.account.data.lastUpdateEpoch;const validatorList=await getValidatorListAccount(connection,stakePool.account.data.validatorList);const maxNumberOfValidators=validatorList.account.data.maxValidators;const currentNumberOfValidators=validatorList.account.data.validators.length;const epochInfo=await connection.getEpochInfo();const reserveStake=await connection.getAccountInfo(reserveAccountStakeAddress);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const minimumReserveStakeBalance=await connection.getMinimumBalanceForRentExemption(StakeProgram.space);const stakeAccounts=await Promise.all(validatorList.account.data.validators.map(async validator=>{const stakeAccountAddress=await findStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress);const transientStakeAccountAddress=await findTransientStakeProgramAddress(stakePoolProgramId,validator.voteAccountAddress,stakePoolAddress,validator.transientSeedSuffixStart);const updateRequired=!validator.lastUpdateEpoch.eqn(epochInfo.epoch);return{voteAccountAddress:validator.voteAccountAddress.toBase58(),stakeAccountAddress:stakeAccountAddress.toBase58(),validatorActiveStakeLamports:validator.activeStakeLamports.toString(),validatorLastUpdateEpoch:validator.lastUpdateEpoch.toString(),validatorLamports:validator.activeStakeLamports.add(validator.transientStakeLamports).toString(),validatorTransientStakeAccountAddress:transientStakeAccountAddress.toBase58(),validatorTransientStakeLamports:validator.transientStakeLamports.toString(),updateRequired:updateRequired}}));const totalPoolTokens=lamportsToSol(stakePool.account.data.poolTokenSupply);const updateRequired=!lastUpdateEpoch.eqn(epochInfo.epoch);return{address:stakePoolAddress.toBase58(),poolWithdrawAuthority:withdrawAuthority.toBase58(),manager:stakePool.account.data.manager.toBase58(),staker:stakePool.account.data.staker.toBase58(),stakeDepositAuthority:stakePool.account.data.stakeDepositAuthority.toBase58(),stakeWithdrawBumpSeed:stakePool.account.data.stakeWithdrawBumpSeed,maxValidators:maxNumberOfValidators,validatorList:validatorList.account.data.validators.map(validator=>({activeStakeLamports:validator.activeStakeLamports.toString(),transientStakeLamports:validator.transientStakeLamports.toString(),lastUpdateEpoch:validator.lastUpdateEpoch.toString(),transientSeedSuffixStart:validator.transientSeedSuffixStart.toString(),transientSeedSuffixEnd:validator.transientSeedSuffixEnd.toString(),status:validator.status.toString(),voteAccountAddress:validator.voteAccountAddress.toString()})),validatorListStorageAccount:stakePool.account.data.validatorList.toBase58(),reserveStake:stakePool.account.data.reserveStake.toBase58(),poolMint:stakePool.account.data.poolMint.toBase58(),managerFeeAccount:stakePool.account.data.managerFeeAccount.toBase58(),tokenProgramId:stakePool.account.data.tokenProgramId.toBase58(),totalLamports:stakePool.account.data.totalLamports.toString(),poolTokenSupply:stakePool.account.data.poolTokenSupply.toString(),lastUpdateEpoch:stakePool.account.data.lastUpdateEpoch.toString(),lockup:stakePool.account.data.lockup,epochFee:stakePool.account.data.epochFee,nextEpochFee:stakePool.account.data.nextEpochFee,preferredDepositValidatorVoteAddress:stakePool.account.data.preferredDepositValidatorVoteAddress,preferredWithdrawValidatorVoteAddress:stakePool.account.data.preferredWithdrawValidatorVoteAddress,stakeDepositFee:stakePool.account.data.stakeDepositFee,stakeWithdrawalFee:stakePool.account.data.stakeWithdrawalFee,nextStakeWithdrawalFee:stakePool.account.data.nextStakeWithdrawalFee,stakeReferralFee:stakePool.account.data.stakeReferralFee,solDepositAuthority:(_c=stakePool.account.data.solDepositAuthority)===null||_c===void 0?void 0:_c.toBase58(),solDepositFee:stakePool.account.data.solDepositFee,solReferralFee:stakePool.account.data.solReferralFee,solWithdrawAuthority:(_d=stakePool.account.data.solWithdrawAuthority)===null||_d===void 0?void 0:_d.toBase58(),solWithdrawalFee:stakePool.account.data.solWithdrawalFee,nextSolWithdrawalFee:stakePool.account.data.nextSolWithdrawalFee,lastEpochPoolTokenSupply:stakePool.account.data.lastEpochPoolTokenSupply.toString(),lastEpochTotalLamports:stakePool.account.data.lastEpochTotalLamports.toString(),details:{reserveStakeLamports:reserveStake===null||reserveStake===void 0?void 0:reserveStake.lamports,reserveAccountStakeAddress:reserveAccountStakeAddress.toBase58(),minimumReserveStakeBalance:minimumReserveStakeBalance,stakeAccounts:stakeAccounts,totalLamports:totalLamports,totalPoolTokens:totalPoolTokens,currentNumberOfValidators:currentNumberOfValidators,maxNumberOfValidators:maxNumberOfValidators,updateRequired:updateRequired}}}async function createPoolTokenMetadata(connection,stakePoolAddress,payer,name,symbol,uri){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const tokenMetadata=findMetadataAddress(stakePool.account.data.poolMint);const manager=stakePool.account.data.manager;const instructions=[];instructions.push(StakePoolInstruction.createTokenMetadata({programId:stakePoolProgramId,stakePool:stakePoolAddress,poolMint:stakePool.account.data.poolMint,payer:payer,manager:manager,tokenMetadata:tokenMetadata,withdrawAuthority:withdrawAuthority,name:name,symbol:symbol,uri:uri}));return{instructions:instructions}}async function updatePoolTokenMetadata(connection,stakePoolAddress,name,symbol,uri){const stakePool=await getStakePoolAccount(connection,stakePoolAddress);const stakePoolProgramId=getStakePoolProgramId(connection.rpcEndpoint);const withdrawAuthority=await findWithdrawAuthorityProgramAddress(stakePoolProgramId,stakePoolAddress);const tokenMetadata=findMetadataAddress(stakePool.account.data.poolMint);const instructions=[];instructions.push(StakePoolInstruction.updateTokenMetadata({programId:stakePoolProgramId,stakePool:stakePoolAddress,manager:stakePool.account.data.manager,tokenMetadata:tokenMetadata,withdrawAuthority:withdrawAuthority,name:name,symbol:symbol,uri:uri}));return{instructions:instructions}}exports.DEVNET_STAKE_POOL_PROGRAM_ID=DEVNET_STAKE_POOL_PROGRAM_ID;exports.STAKE_POOL_INSTRUCTION_LAYOUTS=STAKE_POOL_INSTRUCTION_LAYOUTS;exports.STAKE_POOL_PROGRAM_ID=STAKE_POOL_PROGRAM_ID;exports.StakePoolInstruction=StakePoolInstruction;exports.StakePoolLayout=StakePoolLayout;exports.ValidatorListLayout=ValidatorListLayout;exports.ValidatorStakeInfoLayout=ValidatorStakeInfoLayout;exports.addValidatorToPool=addValidatorToPool;exports.createPoolTokenMetadata=createPoolTokenMetadata;exports.decreaseValidatorStake=decreaseValidatorStake;exports.depositSol=depositSol;exports.depositStake=depositStake;exports.depositWsolWithSession=depositWsolWithSession;exports.getStakeAccount=getStakeAccount;exports.getStakePoolAccount=getStakePoolAccount;exports.getStakePoolAccounts=getStakePoolAccounts;exports.getStakePoolProgramId=getStakePoolProgramId;exports.increaseValidatorStake=increaseValidatorStake;exports.removeValidatorFromPool=removeValidatorFromPool;exports.stakePoolInfo=stakePoolInfo;exports.tokenMetadataLayout=tokenMetadataLayout;exports.updatePoolTokenMetadata=updatePoolTokenMetadata;exports.updateStakePool=updateStakePool;exports.withdrawSol=withdrawSol;exports.withdrawStake=withdrawStake;exports.withdrawWsolWithSession=withdrawWsolWithSession;return exports}({},node_buffer);
19
+ //# sourceMappingURL=index.iife.min.js.map