From 221af83c90742f8f567ce3b9fa3b4f9aef2834f9 Mon Sep 17 00:00:00 2001 From: stjet <49297268+stjet@users.noreply.github.com> Date: Sat, 7 Sep 2024 19:15:25 +0000 Subject: [PATCH] ipfs --- README.md | 8 +++ bns-browser.js | 2 +- bns_protocol.md | 19 +++++-- browser_test/index.html | 64 +++++++++++++++++------- docs/assets/highlight.css | 14 ++++++ docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/bns-browser.js | 2 +- docs/browser_test/index.html | 64 +++++++++++++++++------- docs/classes/DomainAccount.html | 4 +- docs/classes/DomainAccountManager.html | 4 +- docs/classes/Resolver.html | 4 +- docs/classes/TLDAccount.html | 4 +- docs/classes/TLDAccountManager.html | 4 +- docs/functions/address_to_cid_v0.html | 1 + docs/functions/base58_to_hex.html | 1 + docs/functions/bigint_to_uint8array.html | 1 + docs/functions/cid_v0_to_address.html | 1 + docs/functions/decode_domain_name.html | 2 +- docs/functions/encode_domain_name.html | 2 +- docs/functions/hex_to_base58.html | 1 + docs/index.html | 5 +- docs/interfaces/Domain.html | 4 +- docs/interfaces/DomainBlock.html | 4 +- docs/interfaces/DomainMetadata.html | 4 +- docs/interfaces/DomainReceive.html | 4 +- docs/interfaces/DomainResolver.html | 4 +- docs/interfaces/DomainTransfer.html | 4 +- docs/modules.html | 7 ++- docs/types/DomainBlocks.html | 2 +- docs/variables/LOG.html | 2 +- node_test/index.js | 3 ++ package-lock.json | 3 ++ package.json | 4 +- resolver.ts | 2 +- util.ts | 45 ++++++++++++++++- 36 files changed, 226 insertions(+), 77 deletions(-) create mode 100644 README.md create mode 100644 docs/functions/address_to_cid_v0.html create mode 100644 docs/functions/base58_to_hex.html create mode 100644 docs/functions/bigint_to_uint8array.html create mode 100644 docs/functions/cid_v0_to_address.html create mode 100644 docs/functions/hex_to_base58.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..9c5423d --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +See the [docs](https://bns.prussia.dev) or [demo](https://bns.prussia.dev/browser_test) + +## Installing + +```js +npm i banani-bns +``` + diff --git a/bns-browser.js b/bns-browser.js index 5c9a554..96e5d22 100644 --- a/bns-browser.js +++ b/bns-browser.js @@ -1,4 +1,4 @@ -(()=>{var On=Object.create;var je=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var Nn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,Rn=Object.prototype.hasOwnProperty;var I=(e,r)=>je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)je(e,t,{get:r[t],enumerable:!0})},jn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Nn(r))!Rn.call(e,s)&&s!==t&&je(e,s,{get:()=>r[s],enumerable:!(n=Gn(r,s))||n.enumerable});return e};var Je=(e,r,t)=>(t=e!=null?On(Tn(e)):{},jn(r||!e||!e.__esModule?je(t,"default",{value:e,enumerable:!0}):t,e));var mt=S((fo,dr)=>{dr.exports=wr;var Xe=class extends Error{static{I(this,"AssertionError")}};Xe.prototype.name="AssertionError";function wr(e,r){if(!e){var t=new Xe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,wr),t}}I(wr,"assert")});var xr=S((Co,Br)=>{function Er(e){return e.length}I(Er,"byteLength");function Jn(e){let r=e.byteLength,t="";for(let n=0;n{var fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function qn(e){let r=e.byteLength,t="";for(let n=0;n>2]+fe[(e[n]&3)<<4|e[n+1]>>4]+fe[(e[n+1]&15)<<2|e[n+2]>>6]+fe[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(qn,"toString");function Wn(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(d&15)<<4|B>>2,e[l++]=(B&3)<<6|Q&63}return s}I(Wn,"write");br.exports={byteLength:Qr,toString:qn,write:Wn}});var Ur=S((wo,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function zn(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=S((Bo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let d=0;for(;d>B,B-=6;B>=0;)r[_++]=128|d>>B&63,B-=6;l+=d>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=S((Qo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=d}return s}I(ei,"write");Yr.exports={byteLength:Kr,toString:$n,write:ei}});var Vr=S((Kt,Pr)=>{var ti=xr(),ri=pr(),ni=Ur(),ii=Fr(),oi=kr(),qe=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function me(e){switch(e){case"ascii":return ti;case"base64":return ri;case"hex":return ni;case"utf8":case"utf-8":case void 0:return ii;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return oi;default:throw new Error(`Unknown encoding: ${e}`)}}I(me,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function Ai(e){try{return me(e),!0}catch{return!1}}I(Ai,"isEncoding");function ai(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ai,"alloc");function si(e){return new Uint8Array(e)}I(si,"allocUnsafe");function Ii(e){return new Uint8Array(e)}I(Ii,"allocUnsafeSlow");function hi(e,r){return me(r).byteLength(e)}I(hi,"byteLength");function ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(gi,"concat");function fi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Li=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Mi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=d<<4|B>>2,s[l++]=B<<6|Q}return s}})(),Hi=Li({"wasm-binary:./blake2b.wat"(e,r){r.exports=Mi("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")}}),Pi=Hi(),Vi=WebAssembly.compile(Pi);Or.exports=async e=>(await WebAssembly.instantiate(await Vi,e)).exports});var Wr=S((vo,X)=>{var H=mt(),Oi=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,We=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,So=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Uo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),We.length||(We.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=We.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,We.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Oi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function Gi(){}I(Gi,"noop")});var Yt=S((ko,L)=>{var O=mt(),Ue=Wr();function ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function te(e,r,t,n,s,g){var l=Se[s],_=Se[s+1],d=Se[g],B=Se[g+1];ze(x,e,r),zr(x,e,l,_);var Q=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=Q,ze(x,t,n),Q=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=Q>>>24^m<<8,x[r+1]=m>>>24^Q<<8,ze(x,e,r),zr(x,e,d,B),Q=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=Q>>>16^m<<16,x[n+1]=m>>>16^Q<<16,ze(x,t,n),Q=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^Q<<1,x[r+1]=Q>>>31^m<<1}I(te,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ni=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ni.map(function(e){return e*2})),x=new Uint32Array(32),Se=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=An[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)Se[t]=on(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,F[t*16+0],F[t*16+1]),te(2,10,18,26,F[t*16+2],F[t*16+3]),te(4,12,20,28,F[t*16+4],F[t*16+5]),te(6,14,22,30,F[t*16+6],F[t*16+7]),te(0,10,20,30,F[t*16+8],F[t*16+9]),te(2,12,22,24,F[t*16+10],F[t*16+11]),te(4,14,16,26,F[t*16+12],F[t*16+13]),te(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(an,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function ue(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(re,s*4);r&&(sn(this,r),this.c=128)}I(ue,"Blake2b");ue.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};ue.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Ti(this,r),e==="hex"?Ri(r):r};ue.prototype.final=ue.prototype.digest;ue.ready=function(e){Ue.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Ti,"blake2bFinal");function Ri(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new Ji(r,t,n,s)},"createHash");L.exports.ready=function(e){Ue.ready(function(){e()})};L.exports.WASM_SUPPORTED=Ue.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Ko=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Yo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;Ue.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=Ue)})});var In=S((Mo,Ze)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function Ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(Ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,w,p;for(u=0;u<4;u++)C[5*u]=Ae(a,4*u),C[1+u]=Ae(o,4*u),C[6+u]=Ae(A,4*u),C[11+u]=Ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(w=0;w<4;w++){for(p=0;p<4;p++)f[p]=C[(5*w+4*p)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*w+(w+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-Ae(a,4*u)|0,C[6+u]=C[6+u]-Ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Le(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Le,"crypto_core_hsalsa20");var de=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,w;if(!h)return 0;for(w=0;w<16;w++)y[w]=0;for(w=0;w<8;w++)y[w]=c[w];for(;h>=64;){for($t(f,y,C,de),w=0;w<64;w++)i[A+w]=(o?o[a+w]:0)^f[w];for(u=1,w=8;w<16;w++)u=u+(y[w]&255)|0,y[w]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,de),w=0;w>>=8}I(ft,"add1305");var bn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,w=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),ge=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)ge[f]=D[f];for(ft(D,bn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(ge[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function Ee(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(Ee,"car25519");function ae(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ae,"sel25519");function se(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(Ee(C),Ee(C),Ee(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ae(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(se,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return se(o,i),se(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return se(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];Ee(i),Ee(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function Me(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),w=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],w[C]=y[C]=u[C]=0;for(y[0]=w[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ae(y,f,c),ae(u,w,c),N(p,y,u),T(y,y,u),N(u,f,w),T(f,f,w),V(w,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,w,D),b(y,u,B),N(y,y,w),b(u,u,y),b(y,w,D),b(w,f,h),V(f,p),ae(y,f,c),ae(u,w,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=w[C];var R=h.subarray(32),ge=h.subarray(16);return or(R,R),b(ge,ge,R),se(i,ge),0}I(Me,"crypto_scalarmult");function He(i,A){return Me(i,A,l)}I(He,"crypto_scalarmult_base");function ar(i,A){return s(A,32),He(i,A)}I(ar,"crypto_box_keypair");function Pe(i,A,o){var a=new Uint8Array(32);return Me(a,o,A),Le(i,g,a,de)}I(Pe,"crypto_box_beforenm");var sr=Ct,pn=lt;function Dn(i,A,o,a,h,c){var C=new Uint8Array(32);return Pe(C,h,c),sr(i,A,o,a,C)}I(Dn,"crypto_box");function mn(i,A,o,a,h,c){var C=new Uint8Array(32);return Pe(C,h,c),pn(i,A,o,a,C)}I(mn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Ve(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+w);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Fn(c[4]),Sn(c[4],c[5],c[6]),kn[f],C[f%16]),h[7]=Be(y,vn(c[0]),Un(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Kn(C[(u+1)%16]),Yn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];w+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let Ie=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Ln=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Ln[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Oe(A,i),Oe(i,i),gr(i,A,a)}I(_t,"scalarmult");function xe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],$),q(o[2],d),b(o[3],Y,$),_t(i,o,A)}I(xe,"scalarbase");function wt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=Ie(A,64),a[0]&=248,a[31]&=127,a[31]|=64,xe(h,a),Ge(i,h);return 0}I(wt,"crypto_sign_keypair");var Ne=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function dt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Ne[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Ne[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(dt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;dt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),w=[n(),n(),n(),n()];let p=yr(a);h=Ie(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(Mn,"unpackneg");function Bt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||Mn(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=Ie(i,64),A[0]&=248,A[31]&=127,A[31]|=64,xe(o,A),Ge(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ne),A=new Uint8Array(ce);return wt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ce)throw new Error("bad secret key size");var A=new Uint8Array(ne);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ne),o=new Uint8Array(ce),a=0;a<32;a++)o[a]=i[a];return wt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ne,e.sign.secretKeyLength=ce,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Xi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),qi=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),Wi=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Xi(r,e,t);return qi(r,e),r},zi=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=Wi(In()),et=zi(Yt()),Zi="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",ve=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Fe(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let d=5-_;l=(e[s]<>8-d&2**(8-d)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function $i(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I($i,"int_to_binary");function eo(e){let r=0;for(let t=0;t$i(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(to,"whole_to_raw");E.whole_to_raw=to;function ro(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.RPCWithBackup=Ce.RPC=void 0;var Ao=tt(),rt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,Ao.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};Ce.RPC=rt;var Vt=class extends rt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};Ce.RPCWithBackup=Vt});var En=S(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0})});var Bn=S(G=>{"use strict";var ao=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),so=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),Io=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&ao(r,e,t);return so(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=Io(tt()),nt=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),d=K.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),Q=B-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:d,link_as_account:r},Y=K.hash_block(m),$;n&&($=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),ee={...m,signature:we,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},d=K.hash_block(_),B;t&&(B=await this.work_function(d));let Q=K.sign_block_hash(this.private_key,d),m={..._,signature:Q,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let d=[];for(let B of Object.keys(s)){let Q=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:B},Y=K.hash_block(m),$;n&&($=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),ee={...m,signature:we,work:$};await this.send_process(ee,"receive"),d.push(Y),g=Y,_=BigInt(Q)}return d}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),d={...s,signature:_,work:l};return await this.send_process(d,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=nt;var Ot=class extends nt{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var xn=S(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};it.RPCWorkProvider=Gt});var Ye=S(j=>{"use strict";var ho=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ke=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&ho(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ke(tt(),j);Ke(wn(),j);Ke(En(),j);Ke(Bn(),j);Ke(xn(),j)});var Nt={};Dt(Nt,{LOG:()=>ke,decode_domain_name:()=>le,encode_domain_name:()=>At});var ot=Je(Ye());var ke=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,ot.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function le(e){return new TextDecoder().decode((0,ot.hex_to_uint8array)(e)).replaceAll("\0","")}I(le,"decode_domain_name");var Rt={};Dt(Rt,{DomainAccount:()=>_e,Resolver:()=>Tt,TLDAccount:()=>ye});var v=Je(Ye());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},ye=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),d=(0,v.whole_to_raw)("0.0012070301"),B=(0,v.whole_to_raw)("0.00120703011");if(_>=d&&_<=B){let Q=le((0,v.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,v.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),d=(0,v.whole_to_raw)("0.0012070301"),B=(0,v.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=d&&_<=B){let Q=le((0,v.get_public_key_from_address)(l.representative));if(s[Q]?ke&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,v.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},_e=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return ke&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,v.whole_to_raw)("0.0012070301"),d=(0,v.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return ke&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=d){let B=le((0,v.get_public_key_from_address)(g.representative));if(this.domain.name===B)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,v.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=g.representative,this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,v.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new ye(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new _e(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=le((0,v.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(B=>B.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Je(Ye());var jt=class extends ye{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends _e{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),d=BigInt(g.amount);if(d_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var Qn={};var co=Je(Ye());window.bns={...Nt,...Rt,...Xt,...Qn,banani:co};})(); +(()=>{var Rn=Object.create;var Je=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var Jn=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var I=(e,r)=>Je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)Je(e,t,{get:r[t],enumerable:!0})},Wn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Jn(r))!qn.call(e,s)&&s!==t&&Je(e,s,{get:()=>r[s],enumerable:!(n=jn(r,s))||n.enumerable});return e};var Xe=(e,r,t)=>(t=e!=null?Rn(Xn(e)):{},Wn(r||!e||!e.__esModule?Je(t,"default",{value:e,enumerable:!0}):t,e));var mt=U((wo,wr)=>{wr.exports=dr;var qe=class extends Error{static{I(this,"AssertionError")}};qe.prototype.name="AssertionError";function dr(e,r){if(!e){var t=new qe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,dr),t}}I(dr,"assert")});var Br=U((xo,xr)=>{function Er(e){return e.length}I(Er,"byteLength");function zn(e){let r=e.byteLength,t="";for(let n=0;n{var ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oe=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>2]+ue[(e[n]&3)<<4|e[n+1]>>4]+ue[(e[n+1]&15)<<2|e[n+2]>>6]+ue[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I($n,"toString");function ei(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|x>>2,e[l++]=(x&3)<<6|Q&63}return s}I(ei,"write");br.exports={byteLength:Qr,toString:$n,write:ei}});var Ur=U((po,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function ti(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=U((mo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>x,x-=6;x>=0;)r[_++]=128|w>>x&63,x-=6;l+=w>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=U((Uo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function ni(e){let r=e.byteLength,t="";for(let n=0;n>8,x=_%256;e[t+l*2]=x,e[t+l*2+1]=w}return s}I(ii,"write");Yr.exports={byteLength:Kr,toString:ni,write:ii}});var Vr=U((Kt,Pr)=>{var oi=Br(),Ai=pr(),ai=Ur(),si=Fr(),Ii=kr(),We=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Se(e){switch(e){case"ascii":return oi;case"base64":return Ai;case"hex":return ai;case"utf8":case"utf-8":case void 0:return si;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ii;default:throw new Error(`Unknown encoding: ${e}`)}}I(Se,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function hi(e){try{return Se(e),!0}catch{return!1}}I(hi,"isEncoding");function ci(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ci,"alloc");function gi(e){return new Uint8Array(e)}I(gi,"allocUnsafe");function fi(e){return new Uint8Array(e)}I(fi,"allocUnsafeSlow");function ui(e,r){return Se(r).byteLength(e)}I(ui,"byteLength");function Ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(li,"concat");function yi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Vi=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Oi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|x>>2,s[l++]=x<<6|Q}return s}})(),Gi=Vi({"wasm-binary:./blake2b.wat"(e,r){r.exports=Oi("AGFzbQEAAAABEANgAn9/AGADf39/AGABfwADBQQAAQICBQUBAQroBwdNBQZtZW1vcnkCAAxibGFrZTJiX2luaXQAAA5ibGFrZTJiX3VwZGF0ZQABDWJsYWtlMmJfZmluYWwAAhBibGFrZTJiX2NvbXByZXNzAAMKvz8EwAIAIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGCAAQgA3AyAgAEIANwMoIABCADcDMCAAQgA3AzggAEIANwNAIABCADcDSCAAQgA3A1AgAEIANwNYIABCADcDYCAAQgA3A2ggAEIANwNwIABCADcDeCAAQoiS853/zPmE6gBBACkDAIU3A4ABIABCu86qptjQ67O7f0EIKQMAhTcDiAEgAEKr8NP0r+68tzxBECkDAIU3A5ABIABC8e30+KWn/aelf0EYKQMAhTcDmAEgAELRhZrv+s+Uh9EAQSApAwCFNwOgASAAQp/Y+dnCkdqCm39BKCkDAIU3A6gBIABC6/qG2r+19sEfQTApAwCFNwOwASAAQvnC+JuRo7Pw2wBBOCkDAIU3A7gBIABCADcDwAEgAEIANwPIASAAQgA3A9ABC20BA38gAEHAAWohAyAAQcgBaiEEIAQpAwCnIQUCQANAIAEgAkYNASAFQYABRgRAIAMgAykDACAFrXw3AwBBACEFIAAQAwsgACAFaiABLQAAOgAAIAVBAWohBSABQQFqIQEMAAsLIAQgBa03AwALYQEDfyAAQcABaiEBIABByAFqIQIgASABKQMAIAIpAwB8NwMAIABCfzcD0AEgAikDAKchAwJAA0AgA0GAAUYNASAAIANqQQA6AAAgA0EBaiEDDAALCyACIAOtNwMAIAAQAwuqOwIgfgl/IABBgAFqISEgAEGIAWohIiAAQZABaiEjIABBmAFqISQgAEGgAWohJSAAQagBaiEmIABBsAFqIScgAEG4AWohKCAhKQMAIQEgIikDACECICMpAwAhAyAkKQMAIQQgJSkDACEFICYpAwAhBiAnKQMAIQcgKCkDACEIQoiS853/zPmE6gAhCUK7zqqm2NDrs7t/IQpCq/DT9K/uvLc8IQtC8e30+KWn/aelfyEMQtGFmu/6z5SH0QAhDUKf2PnZwpHagpt/IQ5C6/qG2r+19sEfIQ9C+cL4m5Gjs/DbACEQIAApAwAhESAAKQMIIRIgACkDECETIAApAxghFCAAKQMgIRUgACkDKCEWIAApAzAhFyAAKQM4IRggACkDQCEZIAApA0ghGiAAKQNQIRsgACkDWCEcIAApA2AhHSAAKQNoIR4gACkDcCEfIAApA3ghICANIAApA8ABhSENIA8gACkD0AGFIQ8gASAFIBF8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSASfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgE3x8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBR8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAVfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgFnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBd8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAYfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgGXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBp8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAbfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgHHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIB18fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAefHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgH3x8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFICB8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAffHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgG3x8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBV8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAZfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgGnx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHICB8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAefHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggF3x8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBJ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAdfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgEXx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBN8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAcfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGHx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBZ8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAUfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgHHx8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBl8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAdfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgEXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBZ8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByATfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggIHx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIB58fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAbfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgH3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBR8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAXfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggGHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBJ8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAafHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFXx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBh8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAafHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgFHx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBJ8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAefHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHXx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBx8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAffHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgE3x8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBd8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAWfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgG3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBV8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCARfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgIHx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBl8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAafHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEXx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBZ8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAYfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgE3x8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBV8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAbfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggIHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIB98fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiASfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgHHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIB18fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAXfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggGXx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBR8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAefHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgE3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIB18fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAXfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgG3x8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBF8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAcfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggGXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBR8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAVfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHnx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBh8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAWfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggIHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIB98fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSASfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgGnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIB18fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSAWfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgEnx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGICB8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAffHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgHnx8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBV8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAbfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgEXx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBh8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAXfHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgFHx8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBp8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCATfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgGXx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBx8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSAefHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgHHx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBh8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAffHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgHXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBJ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAUfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGnx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBZ8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiARfHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgIHx8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBV8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAZfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggF3x8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIBN8fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAbfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgF3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFICB8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAffHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGnx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBx8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAUfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggEXx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBl8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiAdfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgE3x8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIB58fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByAYfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggEnx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBV8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAbfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFnx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgASAFIBt8fCEBIA0gAYVCIIohDSAJIA18IQkgBSAJhUIYiiEFIAEgBSATfHwhASANIAGFQhCKIQ0gCSANfCEJIAUgCYVCP4ohBSACIAYgGXx8IQIgDiAChUIgiiEOIAogDnwhCiAGIAqFQhiKIQYgAiAGIBV8fCECIA4gAoVCEIohDiAKIA58IQogBiAKhUI/iiEGIAMgByAYfHwhAyAPIAOFQiCKIQ8gCyAPfCELIAcgC4VCGIohByADIAcgF3x8IQMgDyADhUIQiiEPIAsgD3whCyAHIAuFQj+KIQcgBCAIIBJ8fCEEIBAgBIVCIIohECAMIBB8IQwgCCAMhUIYiiEIIAQgCCAWfHwhBCAQIASFQhCKIRAgDCAQfCEMIAggDIVCP4ohCCABIAYgIHx8IQEgECABhUIgiiEQIAsgEHwhCyAGIAuFQhiKIQYgASAGIBx8fCEBIBAgAYVCEIohECALIBB8IQsgBiALhUI/iiEGIAIgByAafHwhAiANIAKFQiCKIQ0gDCANfCEMIAcgDIVCGIohByACIAcgH3x8IQIgDSAChUIQiiENIAwgDXwhDCAHIAyFQj+KIQcgAyAIIBR8fCEDIA4gA4VCIIohDiAJIA58IQkgCCAJhUIYiiEIIAMgCCAdfHwhAyAOIAOFQhCKIQ4gCSAOfCEJIAggCYVCP4ohCCAEIAUgHnx8IQQgDyAEhUIgiiEPIAogD3whCiAFIAqFQhiKIQUgBCAFIBF8fCEEIA8gBIVCEIohDyAKIA98IQogBSAKhUI/iiEFIAEgBSARfHwhASANIAGFQiCKIQ0gCSANfCEJIAUgCYVCGIohBSABIAUgEnx8IQEgDSABhUIQiiENIAkgDXwhCSAFIAmFQj+KIQUgAiAGIBN8fCECIA4gAoVCIIohDiAKIA58IQogBiAKhUIYiiEGIAIgBiAUfHwhAiAOIAKFQhCKIQ4gCiAOfCEKIAYgCoVCP4ohBiADIAcgFXx8IQMgDyADhUIgiiEPIAsgD3whCyAHIAuFQhiKIQcgAyAHIBZ8fCEDIA8gA4VCEIohDyALIA98IQsgByALhUI/iiEHIAQgCCAXfHwhBCAQIASFQiCKIRAgDCAQfCEMIAggDIVCGIohCCAEIAggGHx8IQQgECAEhUIQiiEQIAwgEHwhDCAIIAyFQj+KIQggASAGIBl8fCEBIBAgAYVCIIohECALIBB8IQsgBiALhUIYiiEGIAEgBiAafHwhASAQIAGFQhCKIRAgCyAQfCELIAYgC4VCP4ohBiACIAcgG3x8IQIgDSAChUIgiiENIAwgDXwhDCAHIAyFQhiKIQcgAiAHIBx8fCECIA0gAoVCEIohDSAMIA18IQwgByAMhUI/iiEHIAMgCCAdfHwhAyAOIAOFQiCKIQ4gCSAOfCEJIAggCYVCGIohCCADIAggHnx8IQMgDiADhUIQiiEOIAkgDnwhCSAIIAmFQj+KIQggBCAFIB98fCEEIA8gBIVCIIohDyAKIA98IQogBSAKhUIYiiEFIAQgBSAgfHwhBCAPIASFQhCKIQ8gCiAPfCEKIAUgCoVCP4ohBSABIAUgH3x8IQEgDSABhUIgiiENIAkgDXwhCSAFIAmFQhiKIQUgASAFIBt8fCEBIA0gAYVCEIohDSAJIA18IQkgBSAJhUI/iiEFIAIgBiAVfHwhAiAOIAKFQiCKIQ4gCiAOfCEKIAYgCoVCGIohBiACIAYgGXx8IQIgDiAChUIQiiEOIAogDnwhCiAGIAqFQj+KIQYgAyAHIBp8fCEDIA8gA4VCIIohDyALIA98IQsgByALhUIYiiEHIAMgByAgfHwhAyAPIAOFQhCKIQ8gCyAPfCELIAcgC4VCP4ohByAEIAggHnx8IQQgECAEhUIgiiEQIAwgEHwhDCAIIAyFQhiKIQggBCAIIBd8fCEEIBAgBIVCEIohECAMIBB8IQwgCCAMhUI/iiEIIAEgBiASfHwhASAQIAGFQiCKIRAgCyAQfCELIAYgC4VCGIohBiABIAYgHXx8IQEgECABhUIQiiEQIAsgEHwhCyAGIAuFQj+KIQYgAiAHIBF8fCECIA0gAoVCIIohDSAMIA18IQwgByAMhUIYiiEHIAIgByATfHwhAiANIAKFQhCKIQ0gDCANfCEMIAcgDIVCP4ohByADIAggHHx8IQMgDiADhUIgiiEOIAkgDnwhCSAIIAmFQhiKIQggAyAIIBh8fCEDIA4gA4VCEIohDiAJIA58IQkgCCAJhUI/iiEIIAQgBSAWfHwhBCAPIASFQiCKIQ8gCiAPfCEKIAUgCoVCGIohBSAEIAUgFHx8IQQgDyAEhUIQiiEPIAogD3whCiAFIAqFQj+KIQUgISAhKQMAIAEgCYWFNwMAICIgIikDACACIAqFhTcDACAjICMpAwAgAyALhYU3AwAgJCAkKQMAIAQgDIWFNwMAICUgJSkDACAFIA2FhTcDACAmICYpAwAgBiAOhYU3AwAgJyAnKQMAIAcgD4WFNwMAICggKCkDACAIIBCFhTcDAAs=")}}),Ni=Gi(),Ti=WebAssembly.compile(Ni);Or.exports=async e=>(await WebAssembly.instantiate(await Ti,e)).exports});var Wr=U((Mo,X)=>{var H=mt(),Ri=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,ze=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,ko=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Lo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),ze.length||(ze.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=ze.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,ze.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Ri.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function ji(){}I(ji,"noop")});var Yt=U((Oo,L)=>{var O=mt(),ve=Wr();function Ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(Ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function re(e,r,t,n,s,g){var l=Ue[s],_=Ue[s+1],w=Ue[g],x=Ue[g+1];Ze(B,e,r),zr(B,e,l,_);var Q=B[n]^B[e],m=B[n+1]^B[e+1];B[n]=m,B[n+1]=Q,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=Q>>>24^m<<8,B[r+1]=m>>>24^Q<<8,Ze(B,e,r),zr(B,e,w,x),Q=B[n]^B[e],m=B[n+1]^B[e+1],B[n]=Q>>>16^m<<16,B[n+1]=m>>>16^Q<<16,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=m>>>31^Q<<1,B[r+1]=Q>>>31^m<<1}I(re,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ji=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ji.map(function(e){return e*2})),B=new Uint32Array(32),Ue=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)B[t]=e.h[t],B[t+16]=An[t];for(B[24]=B[24]^e.t,B[25]=B[25]^e.t/4294967296,r&&(B[28]=~B[28],B[29]=~B[29]),t=0;t<32;t++)Ue[t]=on(e.b,4*t);for(t=0;t<12;t++)re(0,8,16,24,F[t*16+0],F[t*16+1]),re(2,10,18,26,F[t*16+2],F[t*16+3]),re(4,12,20,28,F[t*16+4],F[t*16+5]),re(6,14,22,30,F[t*16+6],F[t*16+7]),re(0,10,20,30,F[t*16+8],F[t*16+9]),re(2,12,22,24,F[t*16+10],F[t*16+11]),re(4,14,16,26,F[t*16+12],F[t*16+13]),re(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^B[t]^B[t+16]}I(an,"blake2bCompress");var ne=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ce(e,r,t,n){ne.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,ne[0]=e,r&&(ne[1]=r.length),ne[2]=1,ne[3]=1,t&&ne.set(t,32),n&&ne.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(ne,s*4);r&&(sn(this,r),this.c=128)}I(Ce,"Blake2b");Ce.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};Ce.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Xi(this,r),e==="hex"?qi(r):r};Ce.prototype.final=Ce.prototype.digest;Ce.ready=function(e){ve.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Xi,"blake2bFinal");function qi(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new zi(r,t,n,s)},"createHash");L.exports.ready=function(e){ve.ready(function(){e()})};L.exports.WASM_SUPPORTED=ve.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Po=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Vo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;ve.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=ve)})});var In=U((No,$e)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(te,"L32");function ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=ae(a,4*u),C[1+u]=ae(o,4*u),C[6+u]=ae(A,4*u),C[11+u]=ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=te(f[0]+f[3]|0,7),f[2]^=te(f[1]+f[0]|0,9),f[3]^=te(f[2]+f[1]|0,13),f[0]^=te(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-ae(a,4*u)|0,C[6+u]=C[6+u]-ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Me(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Me,"crypto_core_hsalsa20");var Ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for($t(f,y,C,Ee),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,Ee),d=0;d>>=8}I(ft,"add1305");var Sn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),fe=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)fe[f]=D[f];for(ft(D,Sn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(fe[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function xe(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(xe,"car25519");function se(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(se,"sel25519");function Ie(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(xe(C),xe(C),xe(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,se(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(Ie,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return Ie(o,i),Ie(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return Ie(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];xe(i),xe(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function He(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,se(y,f,c),se(u,d,c),N(p,y,u),T(y,y,u),N(u,f,d),T(f,f,d),V(d,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,d,D),b(y,u,x),N(y,y,d),b(u,u,y),b(y,d,D),b(d,f,h),V(f,p),se(y,f,c),se(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var R=h.subarray(32),fe=h.subarray(16);return or(R,R),b(fe,fe,R),Ie(i,fe),0}I(He,"crypto_scalarmult");function Pe(i,A){return He(i,A,l)}I(Pe,"crypto_scalarmult_base");function ar(i,A){return s(A,32),Pe(i,A)}I(ar,"crypto_box_keypair");function Ve(i,A,o){var a=new Uint8Array(32);return He(a,o,A),Me(i,g,a,Ee)}I(Ve,"crypto_box_beforenm");var sr=Ct,Un=lt;function vn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),sr(i,A,o,a,C)}I(vn,"crypto_box");function Fn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),Un(i,A,o,a,C)}I(Fn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Oe(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Ln(c[4]),Kn(c[4],c[5],c[6]),Pn[f],C[f%16]),h[7]=Be(y,kn(c[0]),Yn(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Mn(C[(u+1)%16]),Hn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let he=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Vn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Vn[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Ge(A,i),Ge(i,i),gr(i,A,a)}I(_t,"scalarmult");function Qe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],ee),q(o[2],w),b(o[3],Y,ee),_t(i,o,A)}I(Qe,"scalarbase");function dt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=he(A,64),a[0]&=248,a[31]&=127,a[31]|=64,Qe(h,a),Ne(i,h);return 0}I(dt,"crypto_sign_keypair");var Te=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function wt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Te[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Te[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(wt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;wt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=yr(a);h=he(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(On,"unpackneg");function xt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||On(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=he(i,64),A[0]&=248,A[31]&=127,A[31]|=64,Qe(o,A),Ne(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ie),A=new Uint8Array(ge);return dt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ge)throw new Error("bad secret key size");var A=new Uint8Array(ie);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ie),o=new Uint8Array(ge),a=0;a<32;a++)o[a]=i[a];return dt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ie,e.sign.secretKeyLength=ge,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Zi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),$i=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),eo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Zi(r,e,t);return $i(r,e),r},to=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=eo(In()),tt=to(Yt()),ro="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",Fe=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Ke(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function no(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(no,"int_to_binary");function io(e){let r=0;for(let t=0;tno(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(oo,"whole_to_raw");E.whole_to_raw=oo;function Ao(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.RPCWithBackup=le.RPC=void 0;var ho=rt(),nt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,ho.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};le.RPC=nt;var Vt=class extends nt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};le.RPCWithBackup=Vt});var En=U(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0})});var xn=U(G=>{"use strict";var co=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),go=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),fo=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&co(r,e,t);return go(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=fo(rt()),it=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=K.get_public_key_from_address(r);s||(s=_.representative);let x=BigInt(_.balance),Q=x-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${x}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:w,link_as_account:r},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};return await this.send_process(te,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=K.hash_block(_),x;t&&(x=await this.work_function(w));let Q=K.sign_block_hash(this.private_key,w),m={..._,signature:Q,work:x};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let x=await this.get_account_info(void 0,!0);g=x.frontier,l=x.representative,_=BigInt(x.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let x of Object.keys(s)){let Q=(_+BigInt(s[x].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:x},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};await this.send_process(te,"receive"),w.push(Y),g=Y,_=BigInt(Q)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=it;var Ot=class extends it{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var Bn=U(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};ot.RPCWorkProvider=Gt});var ke=U(j=>{"use strict";var uo=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ye=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&uo(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ye(rt(),j);Ye(dn(),j);Ye(En(),j);Ye(xn(),j);Ye(Bn(),j)});var Nt={};Dt(Nt,{LOG:()=>Le,address_to_cid_v0:()=>lo,base58_to_hex:()=>Dn,bigint_to_uint8array:()=>pn,cid_v0_to_address:()=>Co,decode_domain_name:()=>ye,encode_domain_name:()=>At,hex_to_base58:()=>bn});var $=Xe(ke());var Le=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,$.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function ye(e){return new TextDecoder().decode((0,$.hex_to_uint8array)(e)).replaceAll("\0","")}I(ye,"decode_domain_name");var Qn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function bn(e){let r=BigInt(`0x${e}`),t="";for(;t+=Qn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(bn,"hex_to_base58");function pn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(pn,"bigint_to_uint8array");function Dn(e){let r=0n;for(let t=0;tde,Resolver:()=>Tt,TLDAccount:()=>_e});var S=Xe(ke());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},_e=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(s[Q]?Le&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},de=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Le&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,S.whole_to_raw)("0.0012070301"),w=(0,S.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Le&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=w){let x=ye((0,S.get_public_key_from_address)(g.representative));if(this.domain.name===x)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,S.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=(0,S.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,S.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new _e(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new de(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=ye((0,S.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(x=>x.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Xe(ke());var jt=class extends _e{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends de{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),w=BigInt(g.amount);if(w_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var mn={};var yo=Xe(ke());window.bns={...Nt,...Rt,...Xt,...mn,banani:yo};})(); /*! Bundled license information: banani/tweetnacl_mod.js: diff --git a/bns_protocol.md b/bns_protocol.md index 439228f..a94dc95 100644 --- a/bns_protocol.md +++ b/bns_protocol.md @@ -77,7 +77,7 @@ To convey metadata associated with a block. Can only be sent by Domain Accounts - Subtype: change - Representative: Hash of the metadata -> Perhaps an encoded IPFS hash would be best? +> Currently, it is recommended that this metadata hash be a translated IPFS v0 Cid, so metadata files should be hosted on IPFS. IPFS is not mandated by the protocol, and it is perfectly acceptable to use something that is not IPFS to store metadata and use a regular SHA-256 hash of the file. However, clients will likely only support finding IPFS metadata. ## Domain Resolver block @@ -102,6 +102,7 @@ Domain metadata can be anything. However, in order for domain metadata to be eas { "domain": { //any arbitrary keys and values can be put here; the following are some examples + "description": "I love Banano?", "www": "https://example.com", "tor": "http://asdsadif23ifjskfjls9030dskfblahblah.onion", "eth": "0xbl8ahb8lah10blahblahblahblahblahblahblah5", @@ -132,9 +133,21 @@ A TLD operator can use whatever system it wants for issuing domain names. Some i Also, for the convenience of the user (so they can do a Domain Resovler and Domain Transfer without needing to deposit more), TLDs are recommended to send 0.00120703011 Banano instead of the minimum 0.0012070301. -## Domain owners +## Domain owners / BNS wallets -Domain owners will need some specialised software to manage domains. Generating/storing Domain Accounts, transferring domains, and setting/changing their resolved address are all simple. Changing domain metadata is a bit more complicated and probably involves IPFS. Possibly integrate into Bananostand? +Domain owners will need some specialised software to manage domains. Generating/storing Domain Accounts, transferring domains, and setting/changing their resolved address are all simple. Changing domain metadata is a bit more complicated and involves uploading the metadata file to IPFS. The demo client supports converting IPFS Cid v0 into metadata hashes, and then declaring that metadata hash. + +## Non-BNS wallets + +Non-BNS wallets are regular Banano wallets like Kalium, Dagchat, Bananostand, etc, that will likely not add support for minting and managing BNS domains. + +However, they can still integrate BNS by keeping a user-editable mapping of TLDs to addresses, and then supporting domain -> address translation for sending Banano or changing representatives. + +## Metadata displayers + +A browser extension or website could be made to fetch the metadata of a domain from IPFS, and then display it (hopefully nicely). + +More advanced browser extensions can do things like displaying decentralised websites in the domain's metadata (eg, websites hosted on IPFS or Reticulum) when someone types in that domain in the address bar. They might also redirect to a regular (clearnet) website or a tor hidden service if the metadata requests. ## Buying/selling domains diff --git a/browser_test/index.html b/browser_test/index.html index d17262d..56fa1c3 100644 --- a/browser_test/index.html +++ b/browser_test/index.html @@ -9,16 +9,21 @@ #main { grid-template-columns: auto auto; } + #main div { + max-width: 50vw; + } @media only screen and (max-width: 900px) { #main { grid-template-columns: auto; } + #main div { + max-width: 100vw; + } } -

Intended to be purely a demo. Tested only on firefox.

- +

Click 'Create TLD Account' if you want to issue domain names, and click 'Create Domain Account' if you want to own a domain.

@@ -33,7 +38,7 @@
  • In the second tab (TLD tab), click "Create TLD Account". Note down the seed and address.
  • Send a Banano to your TLD Account's address
  • On TLD tab, click "Receive"
  • -
  • On TLD tab, fill in the "Name (no '.', '"', max 32 chars [32 bytes])" field with "helloworld", fill in the Domain tab's address in the "Send to address:" field and click "Issue domain"
  • +
  • On TLD tab, fill in the "Name (no '.', '"', max 32 chars [32 bytes]):" field with "helloworld", fill in the Domain tab's address in the "Send to address:" field and click "Issue domain"
  • Wait until it sends, and open the block explorer link in a new tab, noting the block hash
  • Back to the Domain tab, fill in that block hash into the "Block hash of Domain Transfer:" input
  • Then, in the right hand "Domain Resolver" panel add the TLD tab's address to the "TLD Mapping". Call it "demo"
  • @@ -41,6 +46,7 @@
  • It should now say "Name: helloworld" right below "Domain Account Manager". Congratulations! You own a Banano domain name now
  • Fill in your actual main Banano address in "Resolve to address:", and click "Declare address to resolve to", and anyone using your TLD can now turn "helloworld.demo" (or whatever they name your TLD) into your address
  • +

    Special thanks to airtune and yusuf. Protocol Specification

    Domain Resolver

    - +

    @@ -189,20 +197,22 @@ const alt_seed = d.g("alt-seed").value; if (alt_seed) { wallet = new bns.banani.Wallet(rpc, alt_seed); - d.g("address").textContent = wallet.address; } d.g("seed-display").textContent = wallet.seed; if (type === "tld") { + document.title = "TLD Account - BNS demo"; tld_account = new bns.TLDAccountManager(rpc, wallet); mode = true; d.g("domain").style.display = "none"; } else { + document.title = "Domain Account - BNS demo"; domain_account = new bns.DomainAccountManager(rpc, wallet); d.g("tld").style.display = "none"; } d.g("start").style.display = "none"; d.g("start-2").style.display = "block"; d.g("address").textContent = wallet.address; + d.g("address").href = `https://creeper.banano.cc/account/${d.g("address").textContent}`; } function add_tld() { @@ -223,6 +233,10 @@ gen_tld_mapping_list(); } + function get_cid_v0_from_public_key(public_key) { + return bns.address_to_cid_v0(bns.banani.get_address_from_public_key(public_key)); + } + async function resolve() { let parts = d.g("resolve").value.split("."); if (parts.length !== 2) return; @@ -232,10 +246,12 @@ const resolver = new bns.Resolver(rpc2, tld_mapping); const resolved = await resolver.resolve(name, tld); d.g("r-name").textContent = resolved.name; + console.log(resolved.tld) d.g("r-tld").textContent = `${resolved.tld} (.${tld})`; d.g("r-burned").textContent = resolved.burned; d.g("r-addr").textContent = resolved.resolved_address; - d.g("r-meta").textContent = resolved.metadata_hash; + const cid_v0 = resolved.metadata_hash ? get_cid_v0_from_public_key(resolved.metadata_hash) : "none"; + d.g("r-meta").innerHTML = `${resolved.metadata_hash} (IPFS translation: ${cid_v0})`; d.g("r-hist").value = JSON.stringify(resolved.history, null, 2); } @@ -263,17 +279,27 @@ async function get_domain_account_domain() { const resolver = new bns.Resolver(rpc2, tld_mapping); - domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("r-tld").value); + domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); domain_account_domain = await domain_account_domain; const { name, resolved_address, metadata_hash } = domain_account_domain; console.log(domain_account_domain); d.g("found-name").textContent = name d.g("found-address").textContent = resolved_address; - d.g("found-metadata").textContent = metadata_hash; + const cid_v0 = metadata_hash ? get_cid_v0_from_public_key(metadata_hash) : "none"; + d.g("found-metadata").innerHTML = `${metadata_hash} (IPFS translation: ${cid_v0})`; d.g("domain-start").style.display = "none"; d.g("domain-actions").style.display = "block"; } + async function declare_metadata_hash() { + const cid_v0 = d.g('d-mh').value.trim(); + const cid_address = bns.cid_v0_to_address(cid_v0); + console.log(cid_v0, cid_address); + console.log(bns.address_to_cid_v0(cid_address)) + const metadata_hash = bns.banani.get_public_key_from_address(cid_address); + await domain_account.declare_domain_metadata(metadata_hash); + } + async function transfer() { if (!domain_account_domain) return; console.log(domain_account_domain.name, d.g("transfer-to").value.trim()) diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index 5674cf3..a2f1712 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -1,22 +1,36 @@ :root { + --light-hl-0: #001080; + --dark-hl-0: #9CDCFE; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } @media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); --code-background: var(--light-code-background); } } @media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); --code-background: var(--dark-code-background); } } :root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); --code-background: var(--light-code-background); } :root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); --code-background: var(--dark-code-background); } +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } pre, code { background: var(--code-background); } diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index a966a1d..102f494 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62ZXU/bMBSG/0uvYQwYjHHHhzbQYCBA4gKh6DQ5baymTmU7hWraf5/TtI1TO45r57I973mfY8c+qd23vwOBn2JwPhgCBUoGe4MZiFR+nuZJkSE/qL7/koppJoMTQpPB+be9QZwB51ImeLJP+L70QEahlMQpyRKGdHD+tjF/ZGQOAn/j4iKO84KKmrM0qjmaskk+PDprZ//b2wCfHq9aETLmbfpKRHoJ8aSY2exrlT8oZ5NHls9JgsyKUnR+sFfIMmx/IFXYz3r1CC8hAxpj45kQKuUjiGuQJm4yj05Od2HeEC5ytrjM8njiQFXlfXDdxlqLe2HCx47DXWf0RN9t0Et9EPmWjnI35koZRHvCGGVvGmaOC7mh74n8nBfMdSMZsnqq4iVlyNM8S3YtRE0MrGUmnZAKEGTuPB9bOUEVvCIZp8KNvNEGEfmqM3I3qCoP4zYnzhWvZ/lV0dnSAjrYMvVquTjsg2oIA1gOHUvVBZD+5M9kTEEUDDtpijaAyF0Hx8NH17UINyI/xjVmOAb5luIui0NXh1Kdgd4smXi79rWhVJ0nqdkHHmhGaFfHbsvpsQKn/m3P7KWa3SrwppqPEzqv/Tjh/NZI5OFPijYQsZgpb4cqumX99cf3w5OjXewfGY7Ipx1SafxRyyZykWUvpXcLqqEJRF0CJ3EnrFYF4m6ApzZQGQ9E3Mk2FS86h6TIAoHPcp/gVQp0jJ3UbW0ouhiWDCuxkviDXuVv5zbCMhZgLTf+z4LGguS0jaBI/EFD4Hh8FIk8KmT7OQPGYFEDRyv/DdQkb8JPLbdRCjeWpoIVsYimsjfAGKNh+UwioEmUNraCVkNXqlc9YxQRVI0qGrF8Gs2KYUbiaIK26bBkeVcxq67cSo/KkyMmHTUYc/wr2AyiMoPtd4i5BnNWb1UoY9yxEiXTq5pyUVVrzAKuRX4M/HTehJrWiyiznYma1ovI4KN0+Wi2TQ2myrw4XB6fVj2ho5VsKf1pq07UhVrJvDj15JezUzViC88k74Er154zVGr9iGJ05rw0dbEXc46MjBZuq0bThhDLdYGJwwIy6r3Iy51VzpncaRagKtuB866eofMpENr6J1MjrP2n0eZzL8sbm/6GMalsrk/I82xuclpHbNkvd9etA6tjbg6tQ9Ik3bNkPE9WIe0IqSW3X+8p8W6bexSQgACL01rSbVZdWJvvRRoKF6vtJ27wMj16k9kLA8pHVrO1xHHitQOSGjP+xld87h5+1elzYKS84ucH8utm5rGalGCcJxglS05EYWrsQLpqux8olkhdLHWVZvn+H/JqZiQOHwAA" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA62ZXU/bMBSG/0uv2RcbjHEHTNvQ2IYAiQuEolPntLGaOpXtFKpp/31O0zZO7TiuncvW73mf468TO3n6O5L4KkfnozEwYHR0NFqAzNTveZGWOYp39f9vMznPVeOMsnR0/uloRHIQQsmkSN9Q8UZ5IGdQSUhG85QjG50/7cxvOV2CxJ+4uiCkKJlsOGujhmMo2+QPx2fd7H9HO+Dd7VUnQrUFmz5SmV0CmZULl32jCgcVfHbLiyVNkTtRmi4M9gh5jt0TUjeHWW+m8BJyYARbc0KZkk+ANCBD3GYen5wewvxBhSz46jIvyMyDqsuH4Pr1tREPwoSXA7u7jRiIflin1/oo8jWbFH7MjTKKdocEVW0a554LuaUfiHxflNx3I1miBsriIeMosiJPD01ED4zMZaGckEmQdOk9HnsxURk8Ip1m0o+800YRxaYyCj+oLo/jtgfOF29GhWXRW9IiKtg69Gq9ONydagkjWB4VS9dFkH4X93TKQJYce2maNoIofDsn4nvXtwh3ojDGV8xxCuopJXwWh6mOpXoDg1kq8Hrr60LpukBSuw78YTllfRW7K2bADLzqtztykGwOyyCYar9OmLzu64T3UyNVlz8l2kHkaqE9HerWPev3Xz5/ODk+xP6W44S+uiG1Jhy1LiIXef5QeXegWppI1CUISnphjSoS9wNE5gJV7ZGIG1WmyKq3S5osEniv9gleZcCm2Evd18aiy3HFcBJrSTjoUZ2duwjrtghrtfG/lYxIWrAugiYJB41B4MfjRBZJqcrPGXAOqwY42fjvoDZ5G37qeBulcYkylbwkMpmr2gBTTMbVnCTA0iRrbQUjh77QoHymKBOoC1Uy4cU8WZTjnJJkhq7hcEQFZ7GoX7lVHrWnQEx7crDGhGew60RtBvvPEHsO9qjBstD6eGAmWmRQNtWiqteYA9yIwhj46r0JDW0QUUV7Ew1tEJHDS+Xy0i6bBkyXBXGEuj5takJPKdlThtM2lagPtZEFcZrBr0anLsQOnk0+AFetPW+o0oYR5eTMe2ma4iDmEjmdrPxWjaGNIVbrAlOPBWTVB5HXO6saM7XTHEBddgDnWb9DF3OgrPMjU6vZ+KbR5fNLpTe1fYaxqVyudyiKfGlz2ra4oh9uvnZ2rGnzc+jskiHpHyXrfbJuMq6QRnD36z2tvd/mF0pIQYLDaSvpN6tfWNvfi7QUPlb7M27xsk29zeyBAxMTp9lW4jnwxgVJb7Oe8TWfmz/fm/AlcFq94hfv1N/tyI960PbwqnY5oWmyfG+rB4Zovxrs3SdOzpxPCk3gMqJTvxOKReewrTtQyR2nWkPkMEyRFCkm6XqmEgZzaw03VQ5LZD6WpsphuTky1oNvc2sJDKPn/7j8/9qZIAAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 757f1df..2b8576d 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA61bW2/iyBL+L8wrm6Gvhrzt0UpHK+1qpdXqvEQRcrCTWEMMMs7MjqL899NtGrvKrsJt4AmB6/J1fVXVXbb5mFW7H4fZ/cPH7FtRZrN7q+ezMn3LZ/ezvNzssnyd7d7Solw3P85n79XWXXp+Lzd1sSsPX4dCd6/129ZJbrbp4ZA727PZ55wwn+UR5odCseZf83/X9W79lB5ysyQso+uxRp+Kl6Ksvd67+1ymVZX+JGxTYtEuGkBe1yGkbMPrsUY3Rbb+vvBKaZZV+eFAGB7IxBoP4l7zaIMwPpA5a1zJ1vgff/23Nfc9rYr0aZsfvrpfzxoQctla+OeP337dbHbvZd0aCjpfu0tnrRnR4dm41dTV+6beVWPmvmBZYHo+26dV7gAhdAD+QoLwbrfr4nB4z7NRh0h0gj+50F28XvJ6fdjnm+K52Ix67Alf43PCOgfil8a22o8v8SjTeagP2S/F4ZeifM2rom7cT2GzV38sla3cFZ4HMd7t83Kdltn6udqVdZGP5zCndUtUr8XBlchPb/6tcRaFitK6hiXQMn5rthuua6CrN2kcQ4tRvQPDZBLuuHXGuGwlp3lDdG6q9Mc2an1B8IqVUcVLeJpSv1F+uRImfE+t4qgYxxUygea6Wo7GNl7ODLbLK5rlDRT13/lht/1OROp04SaljIxFVXGLa0KaYy/9DJ9ivd5m67d0vy/KlxEvWDLaG0qP6nh9bD2t1FVe3Nl+8+1HWmUHd1B4jfM50ImPKnnk/DMt05ez22yQuPEBFFqdeA49QWYS5oc7eOXnjtLIdSs93SuitDnpkbPiCABK8UosVb7JCyKJGQSd+JWRjzogI9fMGTnubDQShcgxAeFhp4WbIZoeozOzxKWoJowYOFMumjTGsmZ04MApc/HcEcHOlPFjQNItppAIjFOGkQHGW8wkBJ/caMLtLpTQ7QeVyXsMiX3aNsMDGNlppviOGZmQ7ymTU9zmsp6MYaB4PZa6SsvDc15NBzPUvB5NljsbVbuXv+V1mqV1OoUm1sLN0Z2Ok/XucnzIxvUII0ZzXNGDCT16ArtgSzyT2JfO7xdujDySq6b5m2yPPLYbzvY32STPI73RpE8gNba3Vf5nu9t8a+EVZZ1Xz+mmRdhcPv8sAY3LP/d5jLEvQfBc2R6RMY6eYmF/OUlOcTUM0z+hY/MuTxK3ChayFxOvFiLnbhftbKyjjrkaYQd7GxI0nuAEgCFnf/cG0QGOIHArxqC5GMJO+C4LIvJ2SQyH7och/LN/ihjAOEncKojIXkwUW4iMu9MxZv2agrtcI377StcAGOERO76ESAIAVQy927tEQkXc551UDuj2aEw9jNzpPV7PBg/pR1wTetfAGK1L6PuywiTu364SYSS1d3dh8CFGG+D5VxSGOcIvakJObLMRM1+OIuco4IyjO5uM9bM3Mc+bD8euMQ+d2CVOnt6rMh+NUSt1iYv4QrmoQK7stNM77Ozzce7sZPm/s/uPmauMQ7Er3VV5p+5WTvy5yLeZf0vrlCCb3dubN/AYrv0v9zdevMRR5OtiNn9YzPXiTij9+Dh/OGk0F5ofGjHhvglKTCAx6b5JSkwiMeW+KUpMITHtvmlKTCMx474ZSswgMeu+WUrMIrHEfUsosQSJLd23JSW2RGKOlIfVXCZ3QgsktsLh9dEWi7kydwtpcIB7RDRMCFIScyF8zIUkJTEdwoddKAqmwIwIH3mh53LlJJdYEpMifPCFISUxL8LHX1hSElMjPAWCJEdgdsSSi7vA/AjPg1jOlbiztieJKZINRSsqnBJTJAUbTtkrF8mGU2KKpGLDKTFFUrPhlJgi6XmQZPFLTJG0XDglZkgm/NIxQ9LzIMmWIjFF0vMg6a6CKVKeB0k3FkyR8jxIsrcoTJGS3NJVr6d5GqSh8kNhhpSnQZKtSGGGVMMQmfAKM6Qs20AUpkglbANRmCK1ZBuIwhSpFUu7whTpBZvxGlOkBZvxGlOkJZvxGnOkG47Itq17W4/maNeYIm1Y2jWmSFu21WhMkfY8yBUJE1OkPQ+KLGGNKdKeB0XWm8YUGc+DIuvNYIqMYFuiwRQZySaIwRQZxSaIwRQZzSaI6R0QDJsgBnNkPBGK7CAGc2Q8EUqTK8IcmYYjQ0pijkzDEdkYDObILljvFnNkPRGKbCEWc2Qli9NijmxzfiPLyGKOrOZxYo6s4b33znENR2R1WMyR5TmymCPridBk+7SYI7vicWKOEk+EJisuwRwlgsWZYI4ST4QmW3KCOUoUizPBHCXNMZvM+QRzlBi2gyWYo8QTocn9Nekdtz0Rmjy+J5ijpOGIrI4Ec5R4IjR9iMccLRdsPJeYo6VgM2R55KiZzNxIVufZ78cJzc1Y7Rz5MVuHuU20c+LHzB2a7z8+5zN32ms+3R7YfLpW5z4/u/nNf/M+ib9QdJZtZ9hy+uAFFgBpASAFCIoz0fvfSWcFrEtzuuTfYjoTqjPBRSDcRwI6plNyDbUBb0M8Xes4fq6OnwlrNdxlAKtJOrPJilEj/i7TWYC4OH34MkSnueo0A3ARFiZtYOeUMFykw0NZwDEwKk9pJhht9gE4CLsAdHPxOfOgGliSIFAL3tLgT2BgcSB/OQPhxh5QWgKtEGcd4ptwjB3NpKc3/oE1kC9uGo3Qfju9lNMZkQCS5nL1aGRYB6B4DFe8QBflqgbKCZdTR2UyGUBy2fO+27ccgTZYtT2/6qq9eQ+wA/YTNn8a9bp9eAm8g7ZpuESm/uLYmQDtk/Pff3sQJA5IfxHKWi3PmCGeiQNrYDUiJLMMu4wO1g2X3My7AcA66Gki9FapgnURrHPpg1/qBEZh9QYjiqug3r81QemA9sbpnm5Xg9wB4Uq4oBOvBgO/wILilr7dvUAduLUwGr27wgAxSDYbdoUl1/T6YDXgL+FcExUqAWLFZU//xTKgDtqD5t2Gl/mBHiSVK03mhXxgBZ4quPoc3vkHUQMwklBDyxFDuK0DziQbvj2uCoBahBKToTpkEqok7FqGy/jmARNYCDiiJVybRn/fAGsAVSq5SnG6xNYI2vu4IrUrAtiKS/XemQIkrGVV+i8fAn3AmGZBN09ygRLAaQJFNhy1bOjBNvyecKBOr6eC5YOiVadmS2aRG0H2xT7fFqUTfnj8/Pw/kjWjAbY/AAA="; \ No newline at end of file diff --git a/docs/bns-browser.js b/docs/bns-browser.js index 5c9a554..96e5d22 100644 --- a/docs/bns-browser.js +++ b/docs/bns-browser.js @@ -1,4 +1,4 @@ -(()=>{var On=Object.create;var je=Object.defineProperty;var Gn=Object.getOwnPropertyDescriptor;var Nn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,Rn=Object.prototype.hasOwnProperty;var I=(e,r)=>je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)je(e,t,{get:r[t],enumerable:!0})},jn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Nn(r))!Rn.call(e,s)&&s!==t&&je(e,s,{get:()=>r[s],enumerable:!(n=Gn(r,s))||n.enumerable});return e};var Je=(e,r,t)=>(t=e!=null?On(Tn(e)):{},jn(r||!e||!e.__esModule?je(t,"default",{value:e,enumerable:!0}):t,e));var mt=S((fo,dr)=>{dr.exports=wr;var Xe=class extends Error{static{I(this,"AssertionError")}};Xe.prototype.name="AssertionError";function wr(e,r){if(!e){var t=new Xe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,wr),t}}I(wr,"assert")});var xr=S((Co,Br)=>{function Er(e){return e.length}I(Er,"byteLength");function Jn(e){let r=e.byteLength,t="";for(let n=0;n{var fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ie=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function qn(e){let r=e.byteLength,t="";for(let n=0;n>2]+fe[(e[n]&3)<<4|e[n+1]>>4]+fe[(e[n+1]&15)<<2|e[n+2]>>6]+fe[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(qn,"toString");function Wn(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(d&15)<<4|B>>2,e[l++]=(B&3)<<6|Q&63}return s}I(Wn,"write");br.exports={byteLength:Qr,toString:qn,write:Wn}});var Ur=S((wo,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function zn(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=S((Bo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let d=0;for(;d>B,B-=6;B>=0;)r[_++]=128|d>>B&63,B-=6;l+=d>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=S((Qo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=d}return s}I(ei,"write");Yr.exports={byteLength:Kr,toString:$n,write:ei}});var Vr=S((Kt,Pr)=>{var ti=xr(),ri=pr(),ni=Ur(),ii=Fr(),oi=kr(),qe=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function me(e){switch(e){case"ascii":return ti;case"base64":return ri;case"hex":return ni;case"utf8":case"utf-8":case void 0:return ii;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return oi;default:throw new Error(`Unknown encoding: ${e}`)}}I(me,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function Ai(e){try{return me(e),!0}catch{return!1}}I(Ai,"isEncoding");function ai(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ai,"alloc");function si(e){return new Uint8Array(e)}I(si,"allocUnsafe");function Ii(e){return new Uint8Array(e)}I(Ii,"allocUnsafeSlow");function hi(e,r){return me(r).byteLength(e)}I(hi,"byteLength");function ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(gi,"concat");function fi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Li=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Mi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=d<<4|B>>2,s[l++]=B<<6|Q}return s}})(),Hi=Li({"wasm-binary:./blake2b.wat"(e,r){r.exports=Mi("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")}}),Pi=Hi(),Vi=WebAssembly.compile(Pi);Or.exports=async e=>(await WebAssembly.instantiate(await Vi,e)).exports});var Wr=S((vo,X)=>{var H=mt(),Oi=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,We=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,So=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Uo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),We.length||(We.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=We.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,We.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Oi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function Gi(){}I(Gi,"noop")});var Yt=S((ko,L)=>{var O=mt(),Ue=Wr();function ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function te(e,r,t,n,s,g){var l=Se[s],_=Se[s+1],d=Se[g],B=Se[g+1];ze(x,e,r),zr(x,e,l,_);var Q=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=Q,ze(x,t,n),Q=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=Q>>>24^m<<8,x[r+1]=m>>>24^Q<<8,ze(x,e,r),zr(x,e,d,B),Q=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=Q>>>16^m<<16,x[n+1]=m>>>16^Q<<16,ze(x,t,n),Q=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^Q<<1,x[r+1]=Q>>>31^m<<1}I(te,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ni=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ni.map(function(e){return e*2})),x=new Uint32Array(32),Se=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=An[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)Se[t]=on(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,F[t*16+0],F[t*16+1]),te(2,10,18,26,F[t*16+2],F[t*16+3]),te(4,12,20,28,F[t*16+4],F[t*16+5]),te(6,14,22,30,F[t*16+6],F[t*16+7]),te(0,10,20,30,F[t*16+8],F[t*16+9]),te(2,12,22,24,F[t*16+10],F[t*16+11]),te(4,14,16,26,F[t*16+12],F[t*16+13]),te(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(an,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function ue(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(re,s*4);r&&(sn(this,r),this.c=128)}I(ue,"Blake2b");ue.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};ue.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Ti(this,r),e==="hex"?Ri(r):r};ue.prototype.final=ue.prototype.digest;ue.ready=function(e){Ue.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Ti,"blake2bFinal");function Ri(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new Ji(r,t,n,s)},"createHash");L.exports.ready=function(e){Ue.ready(function(){e()})};L.exports.WASM_SUPPORTED=Ue.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Ko=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Yo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;Ue.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=Ue)})});var In=S((Mo,Ze)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function Ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(Ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,w,p;for(u=0;u<4;u++)C[5*u]=Ae(a,4*u),C[1+u]=Ae(o,4*u),C[6+u]=Ae(A,4*u),C[11+u]=Ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(w=0;w<4;w++){for(p=0;p<4;p++)f[p]=C[(5*w+4*p)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*w+(w+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-Ae(a,4*u)|0,C[6+u]=C[6+u]-Ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Le(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Le,"crypto_core_hsalsa20");var de=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,w;if(!h)return 0;for(w=0;w<16;w++)y[w]=0;for(w=0;w<8;w++)y[w]=c[w];for(;h>=64;){for($t(f,y,C,de),w=0;w<64;w++)i[A+w]=(o?o[a+w]:0)^f[w];for(u=1,w=8;w<16;w++)u=u+(y[w]&255)|0,y[w]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,de),w=0;w>>=8}I(ft,"add1305");var bn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,w=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),ge=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)ge[f]=D[f];for(ft(D,bn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(ge[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function Ee(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(Ee,"car25519");function ae(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ae,"sel25519");function se(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(Ee(C),Ee(C),Ee(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ae(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(se,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return se(o,i),se(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return se(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];Ee(i),Ee(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function Me(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),w=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],w[C]=y[C]=u[C]=0;for(y[0]=w[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ae(y,f,c),ae(u,w,c),N(p,y,u),T(y,y,u),N(u,f,w),T(f,f,w),V(w,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,w,D),b(y,u,B),N(y,y,w),b(u,u,y),b(y,w,D),b(w,f,h),V(f,p),ae(y,f,c),ae(u,w,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=w[C];var R=h.subarray(32),ge=h.subarray(16);return or(R,R),b(ge,ge,R),se(i,ge),0}I(Me,"crypto_scalarmult");function He(i,A){return Me(i,A,l)}I(He,"crypto_scalarmult_base");function ar(i,A){return s(A,32),He(i,A)}I(ar,"crypto_box_keypair");function Pe(i,A,o){var a=new Uint8Array(32);return Me(a,o,A),Le(i,g,a,de)}I(Pe,"crypto_box_beforenm");var sr=Ct,pn=lt;function Dn(i,A,o,a,h,c){var C=new Uint8Array(32);return Pe(C,h,c),sr(i,A,o,a,C)}I(Dn,"crypto_box");function mn(i,A,o,a,h,c){var C=new Uint8Array(32);return Pe(C,h,c),pn(i,A,o,a,C)}I(mn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Ve(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+w);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Fn(c[4]),Sn(c[4],c[5],c[6]),kn[f],C[f%16]),h[7]=Be(y,vn(c[0]),Un(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Kn(C[(u+1)%16]),Yn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];w+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let Ie=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Ln=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Ln[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Oe(A,i),Oe(i,i),gr(i,A,a)}I(_t,"scalarmult");function xe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],$),q(o[2],d),b(o[3],Y,$),_t(i,o,A)}I(xe,"scalarbase");function wt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=Ie(A,64),a[0]&=248,a[31]&=127,a[31]|=64,xe(h,a),Ge(i,h);return 0}I(wt,"crypto_sign_keypair");var Ne=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function dt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Ne[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Ne[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(dt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;dt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),w=[n(),n(),n(),n()];let p=yr(a);h=Ie(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(Mn,"unpackneg");function Bt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||Mn(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=Ie(i,64),A[0]&=248,A[31]&=127,A[31]|=64,xe(o,A),Ge(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ne),A=new Uint8Array(ce);return wt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ce)throw new Error("bad secret key size");var A=new Uint8Array(ne);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ne),o=new Uint8Array(ce),a=0;a<32;a++)o[a]=i[a];return wt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ne,e.sign.secretKeyLength=ce,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Xi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),qi=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),Wi=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Xi(r,e,t);return qi(r,e),r},zi=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=Wi(In()),et=zi(Yt()),Zi="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",ve=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Fe(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let d=5-_;l=(e[s]<>8-d&2**(8-d)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function $i(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I($i,"int_to_binary");function eo(e){let r=0;for(let t=0;t$i(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(to,"whole_to_raw");E.whole_to_raw=to;function ro(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.RPCWithBackup=Ce.RPC=void 0;var Ao=tt(),rt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,Ao.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};Ce.RPC=rt;var Vt=class extends rt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};Ce.RPCWithBackup=Vt});var En=S(dn=>{"use strict";Object.defineProperty(dn,"__esModule",{value:!0})});var Bn=S(G=>{"use strict";var ao=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),so=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),Io=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&ao(r,e,t);return so(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=Io(tt()),nt=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),d=K.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),Q=B-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:d,link_as_account:r},Y=K.hash_block(m),$;n&&($=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),ee={...m,signature:we,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},d=K.hash_block(_),B;t&&(B=await this.work_function(d));let Q=K.sign_block_hash(this.private_key,d),m={..._,signature:Q,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let d=[];for(let B of Object.keys(s)){let Q=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:B},Y=K.hash_block(m),$;n&&($=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),ee={...m,signature:we,work:$};await this.send_process(ee,"receive"),d.push(Y),g=Y,_=BigInt(Q)}return d}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),d={...s,signature:_,work:l};return await this.send_process(d,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=nt;var Ot=class extends nt{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var xn=S(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};it.RPCWorkProvider=Gt});var Ye=S(j=>{"use strict";var ho=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ke=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&ho(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ke(tt(),j);Ke(wn(),j);Ke(En(),j);Ke(Bn(),j);Ke(xn(),j)});var Nt={};Dt(Nt,{LOG:()=>ke,decode_domain_name:()=>le,encode_domain_name:()=>At});var ot=Je(Ye());var ke=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,ot.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function le(e){return new TextDecoder().decode((0,ot.hex_to_uint8array)(e)).replaceAll("\0","")}I(le,"decode_domain_name");var Rt={};Dt(Rt,{DomainAccount:()=>_e,Resolver:()=>Tt,TLDAccount:()=>ye});var v=Je(Ye());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},ye=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),d=(0,v.whole_to_raw)("0.0012070301"),B=(0,v.whole_to_raw)("0.00120703011");if(_>=d&&_<=B){let Q=le((0,v.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,v.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),d=(0,v.whole_to_raw)("0.0012070301"),B=(0,v.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=d&&_<=B){let Q=le((0,v.get_public_key_from_address)(l.representative));if(s[Q]?ke&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,v.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},_e=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return ke&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,v.whole_to_raw)("0.0012070301"),d=(0,v.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return ke&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=d){let B=le((0,v.get_public_key_from_address)(g.representative));if(this.domain.name===B)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,v.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=g.representative,this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,v.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new ye(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new _e(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=le((0,v.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(B=>B.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Je(Ye());var jt=class extends ye{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends _e{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),d=BigInt(g.amount);if(d_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var Qn={};var co=Je(Ye());window.bns={...Nt,...Rt,...Xt,...Qn,banani:co};})(); +(()=>{var Rn=Object.create;var Je=Object.defineProperty;var jn=Object.getOwnPropertyDescriptor;var Jn=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,qn=Object.prototype.hasOwnProperty;var I=(e,r)=>Je(e,"name",{value:r,configurable:!0}),_r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var U=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Dt=(e,r)=>{for(var t in r)Je(e,t,{get:r[t],enumerable:!0})},Wn=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Jn(r))!qn.call(e,s)&&s!==t&&Je(e,s,{get:()=>r[s],enumerable:!(n=jn(r,s))||n.enumerable});return e};var Xe=(e,r,t)=>(t=e!=null?Rn(Xn(e)):{},Wn(r||!e||!e.__esModule?Je(t,"default",{value:e,enumerable:!0}):t,e));var mt=U((wo,wr)=>{wr.exports=dr;var qe=class extends Error{static{I(this,"AssertionError")}};qe.prototype.name="AssertionError";function dr(e,r){if(!e){var t=new qe(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,dr),t}}I(dr,"assert")});var Br=U((xo,xr)=>{function Er(e){return e.length}I(Er,"byteLength");function zn(e){let r=e.byteLength,t="";for(let n=0;n{var ue="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oe=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Qr,"byteLength");function $n(e){let r=e.byteLength,t="";for(let n=0;n>2]+ue[(e[n]&3)<<4|e[n+1]>>4]+ue[(e[n+1]&15)<<2|e[n+2]>>6]+ue[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I($n,"toString");function ei(e,r,t=0,n=Qr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|x>>2,e[l++]=(x&3)<<6|Q&63}return s}I(ei,"write");br.exports={byteLength:Qr,toString:$n,write:ei}});var Ur=U((po,Sr)=>{function mr(e){return e.length>>>1}I(mr,"byteLength");function ti(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Dr,"hexValue")});var Fr=U((mo,vr)=>{function St(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(St,"byteLength");var Ut;if(typeof TextDecoder<"u"){let e=new TextDecoder;Ut=I(function(t){return e.decode(t)},"toString")}else Ut=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>x,x-=6;x>=0;)r[_++]=128|w>>x&63,x-=6;l+=w>=65536?2:1}return g},"write");vr.exports={byteLength:St,toString:Ut,write:vt}});var kr=U((Uo,Yr)=>{function Kr(e){return e.length*2}I(Kr,"byteLength");function ni(e){let r=e.byteLength,t="";for(let n=0;n>8,x=_%256;e[t+l*2]=x,e[t+l*2+1]=w}return s}I(ii,"write");Yr.exports={byteLength:Kr,toString:ni,write:ii}});var Vr=U((Kt,Pr)=>{var oi=Br(),Ai=pr(),ai=Ur(),si=Fr(),Ii=kr(),We=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Se(e){switch(e){case"ascii":return oi;case"base64":return Ai;case"hex":return ai;case"utf8":case"utf-8":case void 0:return si;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ii;default:throw new Error(`Unknown encoding: ${e}`)}}I(Se,"codecFor");function Lr(e){return e instanceof Uint8Array}I(Lr,"isBuffer");function hi(e){try{return Se(e),!0}catch{return!1}}I(hi,"isEncoding");function ci(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Kt.fill(n,r,0,n.byteLength,t),n}I(ci,"alloc");function gi(e){return new Uint8Array(e)}I(gi,"allocUnsafe");function fi(e){return new Uint8Array(e)}I(fi,"allocUnsafeSlow");function ui(e,r){return Se(r).byteLength(e)}I(ui,"byteLength");function Ci(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(li,"concat");function yi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Ft(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Vi=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Oi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|x>>2,s[l++]=x<<6|Q}return s}})(),Gi=Vi({"wasm-binary:./blake2b.wat"(e,r){r.exports=Oi("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")}}),Ni=Gi(),Ti=WebAssembly.compile(Ni);Or.exports=async e=>(await WebAssembly.instantiate(await Ti,e)).exports});var Wr=U((Mo,X)=>{var H=mt(),Ri=Vr(),Z=null,Nr=typeof WebAssembly<"u"&&Gr()().then(e=>{Z=e}),z=64,ze=[];X.exports=k;var Tr=X.exports.BYTES_MIN=16,Rr=X.exports.BYTES_MAX=64,ko=X.exports.BYTES=32,jr=X.exports.KEYBYTES_MIN=16,Jr=X.exports.KEYBYTES_MAX=64,Lo=X.exports.KEYBYTES=32,Xr=X.exports.SALTBYTES=16,qr=X.exports.PERSONALBYTES=16;function k(e,r,t,n,s){if(!(this instanceof k))return new k(e,r,t,n,s);if(!Z)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(H(e>=Tr,"digestLength must be at least "+Tr+", was given "+e),H(e<=Rr,"digestLength must be at most "+Rr+", was given "+e),r!=null&&(H(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),H(r.length>=jr,"key must be at least "+jr+", was given "+r.length),H(r.length<=Jr,"key must be at least "+Jr+", was given "+r.length)),t!=null&&(H(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),H(t.length===Xr,"salt must be exactly "+Xr+", was given "+t.length)),n!=null&&(H(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),H(n.length===qr,"personal must be exactly "+qr+", was given "+n.length))),ze.length||(ze.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=ze.pop(),this._memory=new Uint8Array(Z.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),Z.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(k,"Blake2b");k.prototype._realloc=function(e){Z.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(Z.memory.buffer)};k.prototype.update=function(e){return H(this.finalized===!1,"Hash instance finalized"),H(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),Z.blake2b_update(this.pointer,z,z+e.length),this};k.prototype.digest=function(e){if(H(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,ze.push(this.pointer),Z.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Ri.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);H(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};k.prototype.ready=k.ready;k.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};k.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function ji(){}I(ji,"noop")});var Yt=U((Oo,L)=>{var O=mt(),ve=Wr();function Ze(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(Ze,"ADD64AA");function zr(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(zr,"ADD64AC");function on(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(on,"B2B_GET32");function re(e,r,t,n,s,g){var l=Ue[s],_=Ue[s+1],w=Ue[g],x=Ue[g+1];Ze(B,e,r),zr(B,e,l,_);var Q=B[n]^B[e],m=B[n+1]^B[e+1];B[n]=m,B[n+1]=Q,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=Q>>>24^m<<8,B[r+1]=m>>>24^Q<<8,Ze(B,e,r),zr(B,e,w,x),Q=B[n]^B[e],m=B[n+1]^B[e+1],B[n]=Q>>>16^m<<16,B[n+1]=m>>>16^Q<<16,Ze(B,t,n),Q=B[r]^B[t],m=B[r+1]^B[t+1],B[r]=m>>>31^Q<<1,B[r+1]=Q>>>31^m<<1}I(re,"B2B_G");var An=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ji=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],F=new Uint8Array(Ji.map(function(e){return e*2})),B=new Uint32Array(32),Ue=new Uint32Array(32);function an(e,r){var t=0;for(t=0;t<16;t++)B[t]=e.h[t],B[t+16]=An[t];for(B[24]=B[24]^e.t,B[25]=B[25]^e.t/4294967296,r&&(B[28]=~B[28],B[29]=~B[29]),t=0;t<32;t++)Ue[t]=on(e.b,4*t);for(t=0;t<12;t++)re(0,8,16,24,F[t*16+0],F[t*16+1]),re(2,10,18,26,F[t*16+2],F[t*16+3]),re(4,12,20,28,F[t*16+4],F[t*16+5]),re(6,14,22,30,F[t*16+6],F[t*16+7]),re(0,10,20,30,F[t*16+8],F[t*16+9]),re(2,12,22,24,F[t*16+10],F[t*16+11]),re(4,14,16,26,F[t*16+12],F[t*16+13]),re(6,8,18,28,F[t*16+14],F[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^B[t]^B[t+16]}I(an,"blake2bCompress");var ne=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function Ce(e,r,t,n){ne.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,ne[0]=e,r&&(ne[1]=r.length),ne[2]=1,ne[3]=1,t&&ne.set(t,32),n&&ne.set(n,48);for(var s=0;s<16;s++)this.h[s]=An[s]^on(ne,s*4);r&&(sn(this,r),this.c=128)}I(Ce,"Blake2b");Ce.prototype.update=function(e){return O(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),sn(this,e),this};Ce.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return O(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),O(r.length>=this.outlen,"out must have at least outlen bytes of space"),Xi(this,r),e==="hex"?qi(r):r};Ce.prototype.final=Ce.prototype.digest;Ce.ready=function(e){ve.ready(function(){e()})};function sn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(Xi,"blake2bFinal");function qi(e){for(var r="",t=0;t=Zr,"outlen must be at least "+Zr+", was given "+r),O(r<=$r,"outlen must be at most "+$r+", was given "+r),t!=null&&(O(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),O(t.length>=en,"key must be at least "+en+", was given "+t.length),O(t.length<=tn,"key must be at most "+tn+", was given "+t.length)),n!=null&&(O(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),O(n.length===rn,"salt must be exactly "+rn+", was given "+n.length)),s!=null&&(O(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),O(s.length===nn,"personal must be exactly "+nn+", was given "+s.length))),new zi(r,t,n,s)},"createHash");L.exports.ready=function(e){ve.ready(function(){e()})};L.exports.WASM_SUPPORTED=ve.SUPPORTED;L.exports.WASM_LOADED=!1;var Zr=L.exports.BYTES_MIN=16,$r=L.exports.BYTES_MAX=64,Po=L.exports.BYTES=32,en=L.exports.KEYBYTES_MIN=16,tn=L.exports.KEYBYTES_MAX=64,Vo=L.exports.KEYBYTES=32,rn=L.exports.SALTBYTES=16,nn=L.exports.PERSONALBYTES=16;ve.ready(function(e){e||(L.exports.WASM_LOADED=!0,L.exports=ve)})});var In=U((No,$e)=>{(function(e){"use strict";let r=Yt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(te,"L32");function ae(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(ae,"ld32");function qt(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(qt,"dl64");function st(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(st,"st32");function Wt(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(Wt,"ts64");function It(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(It,"vn");function zt(i,A,o,a){return It(i,A,o,a,16)}I(zt,"crypto_verify_16");function ht(i,A,o,a){return It(i,A,o,a,32)}I(ht,"crypto_verify_32");function Zt(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=ae(a,4*u),C[1+u]=ae(o,4*u),C[6+u]=ae(A,4*u),C[11+u]=ae(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=te(f[0]+f[3]|0,7),f[2]^=te(f[1]+f[0]|0,9),f[3]^=te(f[2]+f[1]|0,13),f[0]^=te(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-ae(a,4*u)|0,C[6+u]=C[6+u]-ae(A,4*u)|0;for(u=0;u<4;u++)st(i,4*u,C[5*u]),st(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)st(i,4*u,C[u]+y[u]|0)}I(Zt,"core");function $t(i,A,o,a){return Zt(i,A,o,a,!1),0}I($t,"crypto_core_salsa20");function Me(i,A,o,a){return Zt(i,A,o,a,!0),0}I(Me,"crypto_core_hsalsa20");var Ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for($t(f,y,C,Ee),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for($t(f,y,C,Ee),d=0;d>>=8}I(ft,"add1305");var Sn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function ut(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),fe=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)fe[f]=D[f];for(ft(D,Sn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(fe[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,ft(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(ut,"crypto_onetimeauth");function rr(i,A,o,a,h,c){var C=new Uint8Array(16);return ut(C,0,o,a,h,c),zt(i,A,C,0)}I(rr,"crypto_onetimeauth_verify");function Ct(i,A,o,a,h){var c;if(o<32)return-1;for(gt(i,0,A,0,o,a,h),ut(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(Ct,"crypto_secretbox");function lt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(tr(C,0,32,a,h),rr(A,16,A,32,o-32,C)!==0))return-1;for(gt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(lt,"crypto_secretbox_open");function q(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(q,"set25519");function xe(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(xe,"car25519");function se(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(se,"sel25519");function Ie(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(xe(C),xe(C),xe(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,se(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(Ie,"pack25519");function nr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return Ie(o,i),Ie(a,A),ht(o,0,a,0)}I(nr,"neq25519");function ir(i){var A=new Uint8Array(32);return Ie(A,i),A[0]&1}I(ir,"par25519");function yt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(yt,"unpack25519");function N(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(N,"A");function T(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(T,"Z");function b(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];xe(i),xe(i)}I(b,"M");function V(i,A){b(i,A,A)}I(V,"S");function or(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)V(o,o),a!==2&&a!==4&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(or,"inv25519");function Ar(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)V(o,o),a!==1&&b(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(Ar,"pow2523");function He(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,yt(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,se(y,f,c),se(u,d,c),N(p,y,u),T(y,y,u),N(u,f,d),T(f,f,d),V(d,p),V(D,y),b(y,u,y),b(u,f,p),N(p,y,u),T(y,y,u),V(f,y),T(u,d,D),b(y,u,x),N(y,y,d),b(u,u,y),b(y,d,D),b(d,f,h),V(f,p),se(y,f,c),se(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var R=h.subarray(32),fe=h.subarray(16);return or(R,R),b(fe,fe,R),Ie(i,fe),0}I(He,"crypto_scalarmult");function Pe(i,A){return He(i,A,l)}I(Pe,"crypto_scalarmult_base");function ar(i,A){return s(A,32),Pe(i,A)}I(ar,"crypto_box_keypair");function Ve(i,A,o){var a=new Uint8Array(32);return He(a,o,A),Me(i,g,a,Ee)}I(Ve,"crypto_box_beforenm");var sr=Ct,Un=lt;function vn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),sr(i,A,o,a,C)}I(vn,"crypto_box");function Fn(i,A,o,a,h,c){var C=new Uint8Array(32);return Ve(C,h,c),Un(i,A,o,a,C)}I(Fn,"crypto_box_open");function Be(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(Be,"add64");function Ir(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(Ir,"shr64");function Oe(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=qt(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=Be(c[7],Ln(c[4]),Kn(c[4],c[5],c[6]),Pn[f],C[f%16]),h[7]=Be(y,kn(c[0]),Yn(c[0],c[1],c[2])),h[3]=Be(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=Be(C[u],C[(u+9)%16],Mn(C[(u+1)%16]),Hn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=Be(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)Wt(i,8*f,a[f]);return o}I(hr,"crypto_hashblocks");let he=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Vn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function cr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Vn[c];for(hr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,gr(i,A,a),Ge(A,i),Ge(i,i),gr(i,A,a)}I(_t,"scalarmult");function Qe(i,A){var o=[n(),n(),n(),n()];q(o[0],Y),q(o[1],ee),q(o[2],w),b(o[3],Y,ee),_t(i,o,A)}I(Qe,"scalarbase");function dt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=he(A,64),a[0]&=248,a[31]&=127,a[31]|=64,Qe(h,a),Ne(i,h);return 0}I(dt,"crypto_sign_keypair");var Te=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function wt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*Te[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*Te[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(wt,"modL");function Et(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;wt(i,A)}I(Et,"reduce");function fr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=yr(a);h=he(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&T(i[0],_,i[0]),b(i[3],i[0],i[1]),0)}I(On,"unpackneg");function xt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||On(f,a))return-1;for(h=0;h=0};function yr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=he(i,64),A[0]&=248,A[31]&=127,A[31]|=64,Qe(o,A),Ne(h,o),h}I(yr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(ie),A=new Uint8Array(ge);return dt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(M(i),i.length!==ge)throw new Error("bad secret key size");var A=new Uint8Array(ie);return A=yr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(M(i),i.length!==bt)throw new Error("bad seed size");for(var A=new Uint8Array(ie),o=new Uint8Array(ge),a=0;a<32;a++)o[a]=i[a];return dt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=ie,e.sign.secretKeyLength=ge,e.sign.seedLength=bt,e.sign.signatureLength=W,e.hash=function(i){M(i);var A=new Uint8Array(pt);return cr(A,i,i.length),A},e.hash.hashLength=pt,e.verify=function(i,A){return M(i,A),i.length===0||A.length===0||i.length!==A.length?!1:It(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var Zi=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),$i=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),eo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&Zi(r,e,t);return $i(r,e),r},to=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Lt=eo(In()),tt=to(Yt()),ro="0000000000000000000000000000000000000000000000000000000000000006",Mt="62616E616E6F6D73672D",Fe=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function Ke(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(hn,"int_to_uint8array");E.int_to_uint8array=hn;var cn=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function kt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=cn[l]}return r}I(kt,"uint8array_to_base32");E.uint8array_to_base32=kt;function no(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(no,"int_to_binary");function io(e){let r=0;for(let t=0;tno(cn.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(oo,"whole_to_raw");E.whole_to_raw=oo;function Ao(e,r=un){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.RPCWithBackup=le.RPC=void 0;var ho=rt(),nt=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?"true":void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?"true":void 0,head:s,offset:g?`${g}`:void 0,reverse:l?"true":void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?"true":void 0,weight:s?"true":void 0,pending:g?"true":void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,ho.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?"true":void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};le.RPC=nt;var Vt=class extends nt{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};le.RPCWithBackup=Vt});var En=U(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0})});var xn=U(G=>{"use strict";var co=G&&G.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),go=G&&G.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),fo=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&co(r,e,t);return go(r,e),r};Object.defineProperty(G,"__esModule",{value:!0});G.PrivateKeyAccount=G.Wallet=void 0;var K=fo(rt()),it=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=K.uint8array_to_hex(t);return new e(r,n)}get private_key(){return K.get_private_key_from_seed(this.seed,this.index)}get public_key(){return K.get_public_key_from_private_key(this.private_key)}get address(){return K.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=K.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=K.get_public_key_from_address(r);s||(s=_.representative);let x=BigInt(_.balance),Q=x-l;if(Q<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${x}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:Q.toString(),link:w,link_as_account:r},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};return await this.send_process(te,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,K.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let Y=await this.get_account_info(void 0,!0);l=Y.frontier,n=Y.representative,g=BigInt(Y.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=K.hash_block(_),x;t&&(x=await this.work_function(w));let Q=K.sign_block_hash(this.private_key,w),m={..._,signature:Q,work:x};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let x=await this.get_account_info(void 0,!0);g=x.frontier,l=x.representative,_=BigInt(x.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let x of Object.keys(s)){let Q=(_+BigInt(s[x].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:Q,link:x},Y=K.hash_block(m),ee;n&&(ee=await this.work_function(Y));let we=K.sign_block_hash(this.private_key,Y),te={...m,signature:we,work:ee};await this.send_process(te,"receive"),w.push(Y),g=Y,_=BigInt(Q)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=K.hash_block(s),l;t&&(l=await this.work_function(g));let _=K.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return K.sign_message(this.private_key,r)}};G.Wallet=it;var Ot=class extends it{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};G.PrivateKeyAccount=Ot});var Bn=U(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.RPCWorkProvider=void 0;var Gt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};ot.RPCWorkProvider=Gt});var ke=U(j=>{"use strict";var uo=j&&j.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ye=j&&j.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&uo(r,e,t)};Object.defineProperty(j,"__esModule",{value:!0});Ye(rt(),j);Ye(dn(),j);Ye(En(),j);Ye(xn(),j);Ye(Bn(),j)});var Nt={};Dt(Nt,{LOG:()=>Le,address_to_cid_v0:()=>lo,base58_to_hex:()=>Dn,bigint_to_uint8array:()=>pn,cid_v0_to_address:()=>Co,decode_domain_name:()=>ye,encode_domain_name:()=>At,hex_to_base58:()=>bn});var $=Xe(ke());var Le=!0;function At(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,$.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(At,"encode_domain_name");function ye(e){return new TextDecoder().decode((0,$.hex_to_uint8array)(e)).replaceAll("\0","")}I(ye,"decode_domain_name");var Qn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function bn(e){let r=BigInt(`0x${e}`),t="";for(;t+=Qn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(bn,"hex_to_base58");function pn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(pn,"bigint_to_uint8array");function Dn(e){let r=0n;for(let t=0;tde,Resolver:()=>Tt,TLDAccount:()=>_e});var S=Xe(ke());var at=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},_e=class extends at{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(r===Q)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]}}if(l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0),w=(0,S.whole_to_raw)("0.0012070301"),x=(0,S.whole_to_raw)("0.00120703011");if(l.subtype==="send"&&_>=w&&_<=x){let Q=ye((0,S.get_public_key_from_address)(l.representative));if(s[Q]?Le&&console.log(`"${Q}" already issued but TLD tried to issue again. Invalid.`):s[Q]={tld:this.address,name:Q,history:[{type:"transfer",block:l,to:(0,S.get_address_from_public_key)(l.link)}]},l.hash===t)return this.all_issued=Object.values(s),this.all_issued}}n=g[g.length-1].hash}}},de=class extends at{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Le&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0),_=(0,S.whole_to_raw)("0.0012070301"),w=(0,S.whole_to_raw)("0.00120703011");if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Le&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=_&&l<=w){let x=ye((0,S.get_public_key_from_address)(g.representative));if(this.domain.name===x)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,S.get_address_from_public_key)(g.link)}),this.domain}else g.subtype==="change"?(this.domain.metadata_hash=(0,S.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,S.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}));if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Tt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new _e(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new de(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=ye((0,S.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if(_.history.reverse().find(x=>x.type==="transfer").to===r)return _}};var Xt={};Dt(Xt,{DomainAccountManager:()=>Jt,TLDAccountManager:()=>jt});var P=Xe(ke());var jt=class extends _e{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,P.get_address_from_public_key)(At(r)))}async receive(){await this.wallet.receive_all()}},Jt=class extends de{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t){let n=!1,{history:s}=await this.rpc.get_account_history(this.address,1);if(s.length>1&&!t)throw n=!0,new Error("`allow_burning` must be true in order to receive this domain");let g=await this.rpc.get_block_info(r),l=(0,P.whole_to_raw)("0.0012070301"),_=(0,P.whole_to_raw)("0.00120703011"),w=BigInt(g.amount);if(w_)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,P.whole_to_raw)("0.0012070301"),g=(0,P.whole_to_raw)("0.00120703011"),l=(0,P.raw_to_whole)(g);return g>BigInt(n)&&s<=BigInt(n)&&(l=(0,P.raw_to_whole)(BigInt(n))),await this.wallet.send(t,l,void 0,(0,P.get_address_from_public_key)(At(r)))}async declare_domain_metadata(r){await this.wallet.change_representative((0,P.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,P.raw_to_whole)(4224n))}};var mn={};var yo=Xe(ke());window.bns={...Nt,...Rt,...Xt,...mn,banani:yo};})(); /*! Bundled license information: banani/tweetnacl_mod.js: diff --git a/docs/browser_test/index.html b/docs/browser_test/index.html index d17262d..56fa1c3 100644 --- a/docs/browser_test/index.html +++ b/docs/browser_test/index.html @@ -9,16 +9,21 @@ #main { grid-template-columns: auto auto; } + #main div { + max-width: 50vw; + } @media only screen and (max-width: 900px) { #main { grid-template-columns: auto; } + #main div { + max-width: 100vw; + } } -

    Intended to be purely a demo. Tested only on firefox.

    - +

    Click 'Create TLD Account' if you want to issue domain names, and click 'Create Domain Account' if you want to own a domain.

    @@ -33,7 +38,7 @@
  • In the second tab (TLD tab), click "Create TLD Account". Note down the seed and address.
  • Send a Banano to your TLD Account's address
  • On TLD tab, click "Receive"
  • -
  • On TLD tab, fill in the "Name (no '.', '"', max 32 chars [32 bytes])" field with "helloworld", fill in the Domain tab's address in the "Send to address:" field and click "Issue domain"
  • +
  • On TLD tab, fill in the "Name (no '.', '"', max 32 chars [32 bytes]):" field with "helloworld", fill in the Domain tab's address in the "Send to address:" field and click "Issue domain"
  • Wait until it sends, and open the block explorer link in a new tab, noting the block hash
  • Back to the Domain tab, fill in that block hash into the "Block hash of Domain Transfer:" input
  • Then, in the right hand "Domain Resolver" panel add the TLD tab's address to the "TLD Mapping". Call it "demo"
  • @@ -41,6 +46,7 @@
  • It should now say "Name: helloworld" right below "Domain Account Manager". Congratulations! You own a Banano domain name now
  • Fill in your actual main Banano address in "Resolve to address:", and click "Declare address to resolve to", and anyone using your TLD can now turn "helloworld.demo" (or whatever they name your TLD) into your address
  • +

    Special thanks to airtune and yusuf. Protocol Specification

    Domain Resolver

    - +

    @@ -189,20 +197,22 @@ const alt_seed = d.g("alt-seed").value; if (alt_seed) { wallet = new bns.banani.Wallet(rpc, alt_seed); - d.g("address").textContent = wallet.address; } d.g("seed-display").textContent = wallet.seed; if (type === "tld") { + document.title = "TLD Account - BNS demo"; tld_account = new bns.TLDAccountManager(rpc, wallet); mode = true; d.g("domain").style.display = "none"; } else { + document.title = "Domain Account - BNS demo"; domain_account = new bns.DomainAccountManager(rpc, wallet); d.g("tld").style.display = "none"; } d.g("start").style.display = "none"; d.g("start-2").style.display = "block"; d.g("address").textContent = wallet.address; + d.g("address").href = `https://creeper.banano.cc/account/${d.g("address").textContent}`; } function add_tld() { @@ -223,6 +233,10 @@ gen_tld_mapping_list(); } + function get_cid_v0_from_public_key(public_key) { + return bns.address_to_cid_v0(bns.banani.get_address_from_public_key(public_key)); + } + async function resolve() { let parts = d.g("resolve").value.split("."); if (parts.length !== 2) return; @@ -232,10 +246,12 @@ const resolver = new bns.Resolver(rpc2, tld_mapping); const resolved = await resolver.resolve(name, tld); d.g("r-name").textContent = resolved.name; + console.log(resolved.tld) d.g("r-tld").textContent = `${resolved.tld} (.${tld})`; d.g("r-burned").textContent = resolved.burned; d.g("r-addr").textContent = resolved.resolved_address; - d.g("r-meta").textContent = resolved.metadata_hash; + const cid_v0 = resolved.metadata_hash ? get_cid_v0_from_public_key(resolved.metadata_hash) : "none"; + d.g("r-meta").innerHTML = `${resolved.metadata_hash} (IPFS translation: ${cid_v0})`; d.g("r-hist").value = JSON.stringify(resolved.history, null, 2); } @@ -263,17 +279,27 @@ async function get_domain_account_domain() { const resolver = new bns.Resolver(rpc2, tld_mapping); - domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("r-tld").value); + domain_account_domain = resolver.resolve_backwards_ish(wallet.address, d.g("rc-tld").value); domain_account_domain = await domain_account_domain; const { name, resolved_address, metadata_hash } = domain_account_domain; console.log(domain_account_domain); d.g("found-name").textContent = name d.g("found-address").textContent = resolved_address; - d.g("found-metadata").textContent = metadata_hash; + const cid_v0 = metadata_hash ? get_cid_v0_from_public_key(metadata_hash) : "none"; + d.g("found-metadata").innerHTML = `${metadata_hash} (IPFS translation: ${cid_v0})`; d.g("domain-start").style.display = "none"; d.g("domain-actions").style.display = "block"; } + async function declare_metadata_hash() { + const cid_v0 = d.g('d-mh').value.trim(); + const cid_address = bns.cid_v0_to_address(cid_v0); + console.log(cid_v0, cid_address); + console.log(bns.address_to_cid_v0(cid_address)) + const metadata_hash = bns.banani.get_public_key_from_address(cid_address); + await domain_account.declare_domain_metadata(metadata_hash); + } + async function transfer() { if (!domain_account_domain) return; console.log(domain_account_domain.name, d.g("transfer-to").value.trim()) diff --git a/docs/classes/DomainAccount.html b/docs/classes/DomainAccount.html index fa4453b..ab32303 100644 --- a/docs/classes/DomainAccount.html +++ b/docs/classes/DomainAccount.html @@ -1,8 +1,8 @@ -DomainAccount | bns

    Class DomainAccount

    Hierarchy (view full)

    Constructors

    constructor +DomainAccount | bns

    Class DomainAccount

    Hierarchy (view full)

    Constructors

    • Parameters

      • rpc: RPC
      • address: `ban_${string}` | `nano_${string}`
      • Optional domain: Domain

      Returns DomainAccount

    Properties

    address: `ban_${string}` | `nano_${string}`
    domain?: Domain
    rpc: RPC

    Methods

    • Returns Promise<Domain>

    • Parameters

      • head: string
      • count: number

      Returns Promise<AccountHistoryRawRPC>

    • Returns Promise<[string, string]>

    \ No newline at end of file +

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    domain?: Domain
    rpc: RPC

    Methods

    • Returns Promise<[string, string]>

    \ No newline at end of file diff --git a/docs/classes/DomainAccountManager.html b/docs/classes/DomainAccountManager.html index 0f6973a..121157f 100644 --- a/docs/classes/DomainAccountManager.html +++ b/docs/classes/DomainAccountManager.html @@ -1,4 +1,4 @@ -DomainAccountManager | bns

    Class DomainAccountManager

    Hierarchy (view full)

    Constructors

    constructor +DomainAccountManager | bns

    Class DomainAccountManager

    Hierarchy (view full)

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    domain?: Domain
    rpc: RPC
    wallet: Wallet

    Methods

    • Parameters

      • metadata_hash: string

      Returns Promise<void>

    • Parameters

      • address: `ban_${string}` | `nano_${string}`

      Returns Promise<void>

    • Parameters

      • receive_hash: string
      • Optional allow_burning: boolean

      Returns Promise<void>

    • Parameters

      • domain_name: string
      • to: `ban_${string}` | `nano_${string}`

      Returns Promise<string>

    \ No newline at end of file +

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    domain?: Domain
    rpc: RPC
    wallet: Wallet

    Methods

    • Parameters

      • metadata_hash: string

      Returns Promise<void>

    • Parameters

      • address: `ban_${string}` | `nano_${string}`

      Returns Promise<void>

    • Parameters

      • receive_hash: string
      • Optional allow_burning: boolean

      Returns Promise<void>

    • Parameters

      • domain_name: string
      • to: `ban_${string}` | `nano_${string}`

      Returns Promise<string>

    \ No newline at end of file diff --git a/docs/classes/Resolver.html b/docs/classes/Resolver.html index ea1109f..152f97a 100644 --- a/docs/classes/Resolver.html +++ b/docs/classes/Resolver.html @@ -1,6 +1,6 @@ -Resolver | bns

    Class Resolver

    Constructors

    constructor +Resolver | bns

    Class Resolver

    Constructors

    • Parameters

      • rpc: RPC
      • tld_mapping: Record<string, `ban_${string}` | `nano_${string}`>

      Returns Resolver

    Properties

    rpc: RPC
    tld_mapping: Record<string, `ban_${string}` | `nano_${string}`>

    Methods

    • Parameters

      • domain_name: string
      • tld: string

      Returns Promise<Domain>

    • Parameters

      • domain_account_address: `ban_${string}` | `nano_${string}`
      • tld: string

      Returns Promise<Domain>

    \ No newline at end of file +

    Constructors

    Properties

    rpc: RPC
    tld_mapping: Record<string, `ban_${string}` | `nano_${string}`>

    Methods

    • Parameters

      • domain_account_address: `ban_${string}` | `nano_${string}`
      • tld: string

      Returns Promise<Domain>

    \ No newline at end of file diff --git a/docs/classes/TLDAccount.html b/docs/classes/TLDAccount.html index 9f3123b..e2efb15 100644 --- a/docs/classes/TLDAccount.html +++ b/docs/classes/TLDAccount.html @@ -1,4 +1,4 @@ -TLDAccount | bns

    Class TLDAccount

    Hierarchy (view full)

    Constructors

    constructor +TLDAccount | bns

    Class TLDAccount

    Hierarchy (view full)

    Constructors

    • Parameters

      • rpc: RPC
      • address: `ban_${string}` | `nano_${string}`

      Returns TLDAccount

    Properties

    address: `ban_${string}` | `nano_${string}`
    all_issued: Domain[]
    rpc: RPC

    Methods

    • Returns Promise<Domain[]>

    • Parameters

      • head: string
      • count: number

      Returns Promise<AccountHistoryRawRPC>

    • Returns Promise<[string, string]>

    • Parameters

      • name: string

      Returns Promise<Domain>

    \ No newline at end of file +

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    all_issued: Domain[]
    rpc: RPC

    Methods

    • Returns Promise<[string, string]>

    \ No newline at end of file diff --git a/docs/classes/TLDAccountManager.html b/docs/classes/TLDAccountManager.html index 8a910a2..efed34a 100644 --- a/docs/classes/TLDAccountManager.html +++ b/docs/classes/TLDAccountManager.html @@ -1,4 +1,4 @@ -TLDAccountManager | bns

    Class TLDAccountManager

    Hierarchy (view full)

    Constructors

    constructor +TLDAccountManager | bns

    Class TLDAccountManager

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    all_issued: Domain[]
    rpc: RPC
    wallet: Wallet

    Methods

    • Returns Promise<[string, string]>

    • Parameters

      • domain_name: string
      • to: `ban_${string}` | `nano_${string}`

      Returns Promise<string>

    • Returns Promise<void>

    \ No newline at end of file +

    Constructors

    Properties

    address: `ban_${string}` | `nano_${string}`
    all_issued: Domain[]
    rpc: RPC
    wallet: Wallet

    Methods

    • Parameters

      • domain_name: string
      • to: `ban_${string}` | `nano_${string}`

      Returns Promise<string>

    • Returns Promise<void>

    \ No newline at end of file diff --git a/docs/functions/address_to_cid_v0.html b/docs/functions/address_to_cid_v0.html new file mode 100644 index 0000000..d92b3b0 --- /dev/null +++ b/docs/functions/address_to_cid_v0.html @@ -0,0 +1 @@ +address_to_cid_v0 | bns

    Function address_to_cid_v0

    • Parameters

      • address: `ban_${string}` | `nano_${string}`

      Returns string

    \ No newline at end of file diff --git a/docs/functions/base58_to_hex.html b/docs/functions/base58_to_hex.html new file mode 100644 index 0000000..a00f778 --- /dev/null +++ b/docs/functions/base58_to_hex.html @@ -0,0 +1 @@ +base58_to_hex | bns

    Function base58_to_hex

    • Parameters

      • base58: string

      Returns string

    \ No newline at end of file diff --git a/docs/functions/bigint_to_uint8array.html b/docs/functions/bigint_to_uint8array.html new file mode 100644 index 0000000..257a66c --- /dev/null +++ b/docs/functions/bigint_to_uint8array.html @@ -0,0 +1 @@ +bigint_to_uint8array | bns

    Function bigint_to_uint8array

    • Parameters

      • bint: bigint
      • len: number

      Returns Uint8Array

    \ No newline at end of file diff --git a/docs/functions/cid_v0_to_address.html b/docs/functions/cid_v0_to_address.html new file mode 100644 index 0000000..f9952c5 --- /dev/null +++ b/docs/functions/cid_v0_to_address.html @@ -0,0 +1 @@ +cid_v0_to_address | bns

    Function cid_v0_to_address

    \ No newline at end of file diff --git a/docs/functions/decode_domain_name.html b/docs/functions/decode_domain_name.html index 498278a..5dd2aaa 100644 --- a/docs/functions/decode_domain_name.html +++ b/docs/functions/decode_domain_name.html @@ -1 +1 @@ -decode_domain_name | bns

    Function decode_domain_name

    • Parameters

      • encoded_domain_name: string

      Returns string

    \ No newline at end of file +decode_domain_name | bns

    Function decode_domain_name

    • Parameters

      • encoded_domain_name: string

      Returns string

    \ No newline at end of file diff --git a/docs/functions/encode_domain_name.html b/docs/functions/encode_domain_name.html index 3984238..4990e44 100644 --- a/docs/functions/encode_domain_name.html +++ b/docs/functions/encode_domain_name.html @@ -1 +1 @@ -encode_domain_name | bns

    Function encode_domain_name

    • Parameters

      • domain_name: string

      Returns string

    \ No newline at end of file +encode_domain_name | bns

    Function encode_domain_name

    • Parameters

      • domain_name: string

      Returns string

    \ No newline at end of file diff --git a/docs/functions/hex_to_base58.html b/docs/functions/hex_to_base58.html new file mode 100644 index 0000000..1c5a18b --- /dev/null +++ b/docs/functions/hex_to_base58.html @@ -0,0 +1 @@ +hex_to_base58 | bns

    Function hex_to_base58

    • Parameters

      • hex: string

      Returns string

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index cfcdcf8..ea08394 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1,4 @@ -bns

    bns

    \ No newline at end of file +bns

    bns

    See the docs or demo

    +

    Installing

    npm i banani-bns
    +
    +
    \ No newline at end of file diff --git a/docs/interfaces/Domain.html b/docs/interfaces/Domain.html index c78b850..cc31704 100644 --- a/docs/interfaces/Domain.html +++ b/docs/interfaces/Domain.html @@ -1,7 +1,7 @@ -Domain | bns

    Interface Domain

    interface Domain {
        burned?: boolean;
        history: DomainBlocks[];
        metadata_hash?: string;
        name: string;
        resolved_address?: `ban_${string}` | `nano_${string}`;
        tld: `ban_${string}` | `nano_${string}`;
    }

    Properties

    burned? +Domain | bns

    Interface Domain

    interface Domain {
        burned?: boolean;
        history: DomainBlocks[];
        metadata_hash?: string;
        name: string;
        resolved_address?: `ban_${string}` | `nano_${string}`;
        tld: `ban_${string}` | `nano_${string}`;
    }

    Properties

    burned?: boolean
    history: DomainBlocks[]
    metadata_hash?: string
    name: string
    resolved_address?: `ban_${string}` | `nano_${string}`
    tld: `ban_${string}` | `nano_${string}`
    \ No newline at end of file +

    Properties

    burned?: boolean
    history: DomainBlocks[]
    metadata_hash?: string
    name: string
    resolved_address?: `ban_${string}` | `nano_${string}`
    tld: `ban_${string}` | `nano_${string}`
    \ No newline at end of file diff --git a/docs/interfaces/DomainBlock.html b/docs/interfaces/DomainBlock.html index 17509f5..7fe3c3e 100644 --- a/docs/interfaces/DomainBlock.html +++ b/docs/interfaces/DomainBlock.html @@ -1,3 +1,3 @@ -DomainBlock | bns

    Interface DomainBlock

    interface DomainBlock {
        block: AccountHistoryRawBlock;
        type: string;
    }

    Hierarchy (view full)

    Properties

    block +DomainBlock | bns

    Interface DomainBlock

    interface DomainBlock {
        block: AccountHistoryRawBlock;
        type: string;
    }

    Hierarchy (view full)

    Properties

    Properties

    type: string
    \ No newline at end of file +

    Properties

    type: string
    \ No newline at end of file diff --git a/docs/interfaces/DomainMetadata.html b/docs/interfaces/DomainMetadata.html index 6e0cd75..1ed0b96 100644 --- a/docs/interfaces/DomainMetadata.html +++ b/docs/interfaces/DomainMetadata.html @@ -1,4 +1,4 @@ -DomainMetadata | bns

    Interface DomainMetadata

    interface DomainMetadata {
        block: AccountHistoryRawBlock;
        metadata_hash: string;
        type: "metadata";
    }

    Hierarchy (view full)

    Properties

    block +DomainMetadata | bns

    Interface DomainMetadata

    interface DomainMetadata {
        block: AccountHistoryRawBlock;
        metadata_hash: string;
        type: "metadata";
    }

    Hierarchy (view full)

    Properties

    metadata_hash: string
    type: "metadata"
    \ No newline at end of file +

    Properties

    metadata_hash: string
    type: "metadata"
    \ No newline at end of file diff --git a/docs/interfaces/DomainReceive.html b/docs/interfaces/DomainReceive.html index 415d5a9..bf89ca9 100644 --- a/docs/interfaces/DomainReceive.html +++ b/docs/interfaces/DomainReceive.html @@ -1,3 +1,3 @@ -DomainReceive | bns

    Interface DomainReceive

    interface DomainReceive {
        block: AccountHistoryRawBlock;
        type: "receive";
    }

    Hierarchy (view full)

    Properties

    block +DomainReceive | bns

    Interface DomainReceive

    interface DomainReceive {
        block: AccountHistoryRawBlock;
        type: "receive";
    }

    Hierarchy (view full)

    Properties

    Properties

    type: "receive"
    \ No newline at end of file +

    Properties

    type: "receive"
    \ No newline at end of file diff --git a/docs/interfaces/DomainResolver.html b/docs/interfaces/DomainResolver.html index 26038e1..131314e 100644 --- a/docs/interfaces/DomainResolver.html +++ b/docs/interfaces/DomainResolver.html @@ -1,4 +1,4 @@ -DomainResolver | bns

    Interface DomainResolver

    interface DomainResolver {
        block: AccountHistoryRawBlock;
        resolved_address: `ban_${string}` | `nano_${string}`;
        type: "resolver";
    }

    Hierarchy (view full)

    Properties

    block +DomainResolver | bns

    Interface DomainResolver

    interface DomainResolver {
        block: AccountHistoryRawBlock;
        resolved_address: `ban_${string}` | `nano_${string}`;
        type: "resolver";
    }

    Hierarchy (view full)

    Properties

    resolved_address: `ban_${string}` | `nano_${string}`
    type: "resolver"
    \ No newline at end of file +

    Properties

    resolved_address: `ban_${string}` | `nano_${string}`
    type: "resolver"
    \ No newline at end of file diff --git a/docs/interfaces/DomainTransfer.html b/docs/interfaces/DomainTransfer.html index 12b5797..02531e8 100644 --- a/docs/interfaces/DomainTransfer.html +++ b/docs/interfaces/DomainTransfer.html @@ -1,4 +1,4 @@ -DomainTransfer | bns

    Interface DomainTransfer

    interface DomainTransfer {
        block: AccountHistoryRawBlock;
        to: `ban_${string}` | `nano_${string}`;
        type: "transfer";
    }

    Hierarchy (view full)

    Properties

    block +DomainTransfer | bns

    Interface DomainTransfer

    interface DomainTransfer {
        block: AccountHistoryRawBlock;
        to: `ban_${string}` | `nano_${string}`;
        type: "transfer";
    }

    Hierarchy (view full)

    Properties

    Properties

    to: `ban_${string}` | `nano_${string}`
    type: "transfer"
    \ No newline at end of file +

    Properties

    to: `ban_${string}` | `nano_${string}`
    type: "transfer"
    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index a663f8c..4660ab8 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -12,6 +12,11 @@ DomainTransfer

    Type Aliases

    Variables

    LOG -

    Functions

    Functions

    \ No newline at end of file diff --git a/docs/types/DomainBlocks.html b/docs/types/DomainBlocks.html index 424eb8c..ccfe82e 100644 --- a/docs/types/DomainBlocks.html +++ b/docs/types/DomainBlocks.html @@ -1 +1 @@ -DomainBlocks | bns

    Type alias DomainBlocks

    \ No newline at end of file +DomainBlocks | bns

    Type alias DomainBlocks

    \ No newline at end of file diff --git a/docs/variables/LOG.html b/docs/variables/LOG.html index 821e48e..f712a85 100644 --- a/docs/variables/LOG.html +++ b/docs/variables/LOG.html @@ -1 +1 @@ -LOG | bns

    Variable LOGConst

    LOG: boolean = true
    \ No newline at end of file +LOG | bns

    Variable LOGConst

    LOG: boolean = true
    \ No newline at end of file diff --git a/node_test/index.js b/node_test/index.js index c8c0a2e..9df5045 100644 --- a/node_test/index.js +++ b/node_test/index.js @@ -3,6 +3,9 @@ import * as fs from "fs"; import * as crypto from "crypto"; (async () => { + console.log("cid v0 to address", bns.cid_v0_to_address("QmbzTMo42KADUbLwc43KR9Se6aV3N6wfKqFbSr2qN1gJqR") === "ban_3kpq7d4kp9hd45jf8jh6zjztcewwfqaxafcr3b45whrxhce1sfinai3pk6w3"); + console.log("address to cidv0", bns.address_to_cid_v0("ban_3kpq7d4kp9hd45jf8jh6zjztcewwfqaxafcr3b45whrxhce1sfinai3pk6w3") === "QmbzTMo42KADUbLwc43KR9Se6aV3N6wfKqFbSr2qN1gJqR"); + const test_seed = fs.readFileSync("./.secret", "utf-8").trim(); let rpc = new bns.banani.RPC("https://kaliumapi.appditto.com/api"); //for sending cause it does work diff --git a/package-lock.json b/package-lock.json index 3473411..fe74578 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,12 @@ { "name": "bns", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { + "name": "bns", + "version": "0.0.1", "dependencies": { "banani": "^1.0.2" }, diff --git a/package.json b/package.json index 57cc6ee..775dff1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "bns", - "version": "0.0.1", + "name": "banani-bns", + "version": "0.0.2", "description": "JS/TS library for the Banano cryptocurrency's currently unofficial Banano Name System (BNS)", "main": "main.js", "scripts": { diff --git a/resolver.ts b/resolver.ts index b6122cc..92fe1ed 100644 --- a/resolver.ts +++ b/resolver.ts @@ -161,7 +161,7 @@ export class DomainAccount extends Account { return this.domain; } } else if (block.subtype === "change") { - this.domain.metadata_hash = block.representative; + this.domain.metadata_hash = get_public_key_from_address(block.representative); this.domain.history.push({ type: "metadata", block, diff --git a/util.ts b/util.ts index 0853890..4a15b9c 100644 --- a/util.ts +++ b/util.ts @@ -1,4 +1,5 @@ -import { uint8array_to_hex, hex_to_uint8array } from "banani"; +import type { Address } from "banani"; +import { uint8array_to_hex, hex_to_uint8array, get_address_from_public_key, get_public_key_from_address } from "banani"; export const LOG: boolean = true; @@ -17,3 +18,45 @@ export function decode_domain_name(encoded_domain_name: string): string { return (new TextDecoder()).decode(hex_to_uint8array(encoded_domain_name)).replaceAll("\u0000", ""); } +const BASE58_CHARS = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + +export function hex_to_base58(hex: string): string { + let num = BigInt(`0x${hex}`); + let base58 = ""; + while (true) { + base58 += BASE58_CHARS[Number(num % BigInt(58))]; + num = num / BigInt(58); //automatically rounds down + if (num === 0n) break; + } + //it's backwards, so reverse it. why? Idgaf right now. it works + return base58.split("").reverse().join(""); +} + +//lmao +export function bigint_to_uint8array(bint: bigint, len: number): Uint8Array { + let uint8array: Uint8Array = new Uint8Array(len); + let subbed_bint = bint; + for (let i = 1; i <= len; i++) { + uint8array[len - i] = Number(subbed_bint % 256n); + subbed_bint /= 256n; + } + return uint8array; +} + +//too lazy to bother doing anything proper +export function base58_to_hex(base58: string): string { + let bint = 0n; + for (let i = 0; i < base58.length; i++) { + bint += BigInt(BASE58_CHARS.indexOf(base58[base58.length - i - 1])) * (BigInt(58) ** BigInt(i)); + } + return uint8array_to_hex(bigint_to_uint8array(bint, 34)); +} + +export function cid_v0_to_address(cid_v0: string): Address { + return get_address_from_public_key(base58_to_hex(cid_v0).slice(4)); +} + +export function address_to_cid_v0(address: Address): string { + return hex_to_base58("1220" + get_public_key_from_address(address)); +} +