@voidly/agent-sdk 3.5.1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -12
- package/dist/chunk-N5DC4FFG.mjs +2 -0
- package/dist/chunk-VSAIXAMI.mjs +2 -0
- package/dist/index.d.ts +341 -9
- package/dist/index.js +4 -4
- package/dist/index.mjs +5 -5
- package/dist/marketplace-YNZRHYXA.mjs +3 -0
- package/dist/x402-L336FBTU.mjs +1 -0
- package/examples/batch-send.mjs +48 -0
- package/examples/find-and-invoke.mjs +44 -0
- package/examples/marketplace-list-and-hire.mjs +87 -0
- package/examples/x402-pay-and-fetch.mjs +59 -0
- package/package.json +3 -2
- package/examples/post-quantum.mjs +0 -99
- package/examples/sse-streaming.mjs +0 -52
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use strict';var hn=Object.create;var gr=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var un=Object.getOwnPropertyNames;var pn=Object.getPrototypeOf,gn=Object.prototype.hasOwnProperty;var Yt=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var mr=(a,e)=>()=>(e||a((e={exports:{}}).exports,e),e.exports);var mn=(a,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of un(e))!gn.call(a,i)&&i!==t&&gr(a,i,{get:()=>e[i],enumerable:!(n=yn(e,i))||n.enumerable});return a};var br=(a,e,t)=>(t=a!=null?hn(pn(a)):{},mn(!a||!a.__esModule?gr(t,"default",{value:a,enumerable:true}):t,a));var xr=mr((es,Kt)=>{(function(a){var e=function(s){var c,o=new Float64Array(16);if(s)for(c=0;c<s.length;c++)o[c]=s[c];return o},t=function(){throw new Error("no PRNG")},n=new Uint8Array(16),i=new Uint8Array(32);i[0]=9;var f=e(),d=e([1]),y=e([56129,1]),_=e([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),K=e([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),m=e([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),F=e([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),q=e([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function M(s,c,o,r){s[c]=o>>24&255,s[c+1]=o>>16&255,s[c+2]=o>>8&255,s[c+3]=o&255,s[c+4]=r>>24&255,s[c+5]=r>>16&255,s[c+6]=r>>8&255,s[c+7]=r&255;}function J(s,c,o,r,l){var u,p=0;for(u=0;u<l;u++)p|=s[c+u]^o[r+u];return (1&p-1>>>8)-1}function H(s,c,o,r){return J(s,c,o,r,16)}function xe(s,c,o,r){return J(s,c,o,r,32)}function Le(s,c,o,r){for(var l=r[0]&255|(r[1]&255)<<8|(r[2]&255)<<16|(r[3]&255)<<24,u=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,p=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,v=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,T=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,L=r[4]&255|(r[5]&255)<<8|(r[6]&255)<<16|(r[7]&255)<<24,C=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,fe=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,Y=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24,Q=r[8]&255|(r[9]&255)<<8|(r[10]&255)<<16|(r[11]&255)<<24,te=o[16]&255|(o[17]&255)<<8|(o[18]&255)<<16|(o[19]&255)<<24,ee=o[20]&255|(o[21]&255)<<8|(o[22]&255)<<16|(o[23]&255)<<24,G=o[24]&255|(o[25]&255)<<8|(o[26]&255)<<16|(o[27]&255)<<24,W=o[28]&255|(o[29]&255)<<8|(o[30]&255)<<16|(o[31]&255)<<24,Z=r[12]&255|(r[13]&255)<<8|(r[14]&255)<<16|(r[15]&255)<<24,I=l,D=u,$=p,O=v,B=T,R=L,b=C,x=fe,S=j,w=Y,k=Q,A=te,X=ee,re=G,se=W,ne=Z,h,ae=0;ae<20;ae+=2)h=I+X|0,B^=h<<7|h>>>25,h=B+I|0,S^=h<<9|h>>>23,h=S+B|0,X^=h<<13|h>>>19,h=X+S|0,I^=h<<18|h>>>14,h=R+D|0,w^=h<<7|h>>>25,h=w+R|0,re^=h<<9|h>>>23,h=re+w|0,D^=h<<13|h>>>19,h=D+re|0,R^=h<<18|h>>>14,h=k+b|0,se^=h<<7|h>>>25,h=se+k|0,$^=h<<9|h>>>23,h=$+se|0,b^=h<<13|h>>>19,h=b+$|0,k^=h<<18|h>>>14,h=ne+A|0,O^=h<<7|h>>>25,h=O+ne|0,x^=h<<9|h>>>23,h=x+O|0,A^=h<<13|h>>>19,h=A+x|0,ne^=h<<18|h>>>14,h=I+O|0,D^=h<<7|h>>>25,h=D+I|0,$^=h<<9|h>>>23,h=$+D|0,O^=h<<13|h>>>19,h=O+$|0,I^=h<<18|h>>>14,h=R+B|0,b^=h<<7|h>>>25,h=b+R|0,x^=h<<9|h>>>23,h=x+b|0,B^=h<<13|h>>>19,h=B+x|0,R^=h<<18|h>>>14,h=k+w|0,A^=h<<7|h>>>25,h=A+k|0,S^=h<<9|h>>>23,h=S+A|0,w^=h<<13|h>>>19,h=w+S|0,k^=h<<18|h>>>14,h=ne+se|0,X^=h<<7|h>>>25,h=X+ne|0,re^=h<<9|h>>>23,h=re+X|0,se^=h<<13|h>>>19,h=se+re|0,ne^=h<<18|h>>>14;I=I+l|0,D=D+u|0,$=$+p|0,O=O+v|0,B=B+T|0,R=R+L|0,b=b+C|0,x=x+fe|0,S=S+j|0,w=w+Y|0,k=k+Q|0,A=A+te|0,X=X+ee|0,re=re+G|0,se=se+W|0,ne=ne+Z|0,s[0]=I>>>0&255,s[1]=I>>>8&255,s[2]=I>>>16&255,s[3]=I>>>24&255,s[4]=D>>>0&255,s[5]=D>>>8&255,s[6]=D>>>16&255,s[7]=D>>>24&255,s[8]=$>>>0&255,s[9]=$>>>8&255,s[10]=$>>>16&255,s[11]=$>>>24&255,s[12]=O>>>0&255,s[13]=O>>>8&255,s[14]=O>>>16&255,s[15]=O>>>24&255,s[16]=B>>>0&255,s[17]=B>>>8&255,s[18]=B>>>16&255,s[19]=B>>>24&255,s[20]=R>>>0&255,s[21]=R>>>8&255,s[22]=R>>>16&255,s[23]=R>>>24&255,s[24]=b>>>0&255,s[25]=b>>>8&255,s[26]=b>>>16&255,s[27]=b>>>24&255,s[28]=x>>>0&255,s[29]=x>>>8&255,s[30]=x>>>16&255,s[31]=x>>>24&255,s[32]=S>>>0&255,s[33]=S>>>8&255,s[34]=S>>>16&255,s[35]=S>>>24&255,s[36]=w>>>0&255,s[37]=w>>>8&255,s[38]=w>>>16&255,s[39]=w>>>24&255,s[40]=k>>>0&255,s[41]=k>>>8&255,s[42]=k>>>16&255,s[43]=k>>>24&255,s[44]=A>>>0&255,s[45]=A>>>8&255,s[46]=A>>>16&255,s[47]=A>>>24&255,s[48]=X>>>0&255,s[49]=X>>>8&255,s[50]=X>>>16&255,s[51]=X>>>24&255,s[52]=re>>>0&255,s[53]=re>>>8&255,s[54]=re>>>16&255,s[55]=re>>>24&255,s[56]=se>>>0&255,s[57]=se>>>8&255,s[58]=se>>>16&255,s[59]=se>>>24&255,s[60]=ne>>>0&255,s[61]=ne>>>8&255,s[62]=ne>>>16&255,s[63]=ne>>>24&255;}function Re(s,c,o,r){for(var l=r[0]&255|(r[1]&255)<<8|(r[2]&255)<<16|(r[3]&255)<<24,u=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,p=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,v=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,T=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,L=r[4]&255|(r[5]&255)<<8|(r[6]&255)<<16|(r[7]&255)<<24,C=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,fe=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,j=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,Y=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24,Q=r[8]&255|(r[9]&255)<<8|(r[10]&255)<<16|(r[11]&255)<<24,te=o[16]&255|(o[17]&255)<<8|(o[18]&255)<<16|(o[19]&255)<<24,ee=o[20]&255|(o[21]&255)<<8|(o[22]&255)<<16|(o[23]&255)<<24,G=o[24]&255|(o[25]&255)<<8|(o[26]&255)<<16|(o[27]&255)<<24,W=o[28]&255|(o[29]&255)<<8|(o[30]&255)<<16|(o[31]&255)<<24,Z=r[12]&255|(r[13]&255)<<8|(r[14]&255)<<16|(r[15]&255)<<24,I=l,D=u,$=p,O=v,B=T,R=L,b=C,x=fe,S=j,w=Y,k=Q,A=te,X=ee,re=G,se=W,ne=Z,h,ae=0;ae<20;ae+=2)h=I+X|0,B^=h<<7|h>>>25,h=B+I|0,S^=h<<9|h>>>23,h=S+B|0,X^=h<<13|h>>>19,h=X+S|0,I^=h<<18|h>>>14,h=R+D|0,w^=h<<7|h>>>25,h=w+R|0,re^=h<<9|h>>>23,h=re+w|0,D^=h<<13|h>>>19,h=D+re|0,R^=h<<18|h>>>14,h=k+b|0,se^=h<<7|h>>>25,h=se+k|0,$^=h<<9|h>>>23,h=$+se|0,b^=h<<13|h>>>19,h=b+$|0,k^=h<<18|h>>>14,h=ne+A|0,O^=h<<7|h>>>25,h=O+ne|0,x^=h<<9|h>>>23,h=x+O|0,A^=h<<13|h>>>19,h=A+x|0,ne^=h<<18|h>>>14,h=I+O|0,D^=h<<7|h>>>25,h=D+I|0,$^=h<<9|h>>>23,h=$+D|0,O^=h<<13|h>>>19,h=O+$|0,I^=h<<18|h>>>14,h=R+B|0,b^=h<<7|h>>>25,h=b+R|0,x^=h<<9|h>>>23,h=x+b|0,B^=h<<13|h>>>19,h=B+x|0,R^=h<<18|h>>>14,h=k+w|0,A^=h<<7|h>>>25,h=A+k|0,S^=h<<9|h>>>23,h=S+A|0,w^=h<<13|h>>>19,h=w+S|0,k^=h<<18|h>>>14,h=ne+se|0,X^=h<<7|h>>>25,h=X+ne|0,re^=h<<9|h>>>23,h=re+X|0,se^=h<<13|h>>>19,h=se+re|0,ne^=h<<18|h>>>14;s[0]=I>>>0&255,s[1]=I>>>8&255,s[2]=I>>>16&255,s[3]=I>>>24&255,s[4]=R>>>0&255,s[5]=R>>>8&255,s[6]=R>>>16&255,s[7]=R>>>24&255,s[8]=k>>>0&255,s[9]=k>>>8&255,s[10]=k>>>16&255,s[11]=k>>>24&255,s[12]=ne>>>0&255,s[13]=ne>>>8&255,s[14]=ne>>>16&255,s[15]=ne>>>24&255,s[16]=b>>>0&255,s[17]=b>>>8&255,s[18]=b>>>16&255,s[19]=b>>>24&255,s[20]=x>>>0&255,s[21]=x>>>8&255,s[22]=x>>>16&255,s[23]=x>>>24&255,s[24]=S>>>0&255,s[25]=S>>>8&255,s[26]=S>>>16&255,s[27]=S>>>24&255,s[28]=w>>>0&255,s[29]=w>>>8&255,s[30]=w>>>16&255,s[31]=w>>>24&255;}function je(s,c,o,r){Le(s,c,o,r);}function Ce(s,c,o,r){Re(s,c,o,r);}var Me=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ve(s,c,o,r,l,u,p){var v=new Uint8Array(16),T=new Uint8Array(64),L,C;for(C=0;C<16;C++)v[C]=0;for(C=0;C<8;C++)v[C]=u[C];for(;l>=64;){for(je(T,v,p,Me),C=0;C<64;C++)s[c+C]=o[r+C]^T[C];for(L=1,C=8;C<16;C++)L=L+(v[C]&255)|0,v[C]=L&255,L>>>=8;l-=64,c+=64,r+=64;}if(l>0)for(je(T,v,p,Me),C=0;C<l;C++)s[c+C]=o[r+C]^T[C];return 0}function He(s,c,o,r,l){var u=new Uint8Array(16),p=new Uint8Array(64),v,T;for(T=0;T<16;T++)u[T]=0;for(T=0;T<8;T++)u[T]=r[T];for(;o>=64;){for(je(p,u,l,Me),T=0;T<64;T++)s[c+T]=p[T];for(v=1,T=8;T<16;T++)v=v+(u[T]&255)|0,u[T]=v&255,v>>>=8;o-=64,c+=64;}if(o>0)for(je(p,u,l,Me),T=0;T<o;T++)s[c+T]=p[T];return 0}function ze(s,c,o,r,l){var u=new Uint8Array(32);Ce(u,r,l,Me);for(var p=new Uint8Array(8),v=0;v<8;v++)p[v]=r[v+16];return He(s,c,o,p,u)}function De(s,c,o,r,l,u,p){var v=new Uint8Array(32);Ce(v,u,p,Me);for(var T=new Uint8Array(8),L=0;L<8;L++)T[L]=u[L+16];return Ve(s,c,o,r,l,T,v)}var E=function(s){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var c,o,r,l,u,p,v,T;c=s[0]&255|(s[1]&255)<<8,this.r[0]=c&8191,o=s[2]&255|(s[3]&255)<<8,this.r[1]=(c>>>13|o<<3)&8191,r=s[4]&255|(s[5]&255)<<8,this.r[2]=(o>>>10|r<<6)&7939,l=s[6]&255|(s[7]&255)<<8,this.r[3]=(r>>>7|l<<9)&8191,u=s[8]&255|(s[9]&255)<<8,this.r[4]=(l>>>4|u<<12)&255,this.r[5]=u>>>1&8190,p=s[10]&255|(s[11]&255)<<8,this.r[6]=(u>>>14|p<<2)&8191,v=s[12]&255|(s[13]&255)<<8,this.r[7]=(p>>>11|v<<5)&8065,T=s[14]&255|(s[15]&255)<<8,this.r[8]=(v>>>8|T<<8)&8191,this.r[9]=T>>>5&127,this.pad[0]=s[16]&255|(s[17]&255)<<8,this.pad[1]=s[18]&255|(s[19]&255)<<8,this.pad[2]=s[20]&255|(s[21]&255)<<8,this.pad[3]=s[22]&255|(s[23]&255)<<8,this.pad[4]=s[24]&255|(s[25]&255)<<8,this.pad[5]=s[26]&255|(s[27]&255)<<8,this.pad[6]=s[28]&255|(s[29]&255)<<8,this.pad[7]=s[30]&255|(s[31]&255)<<8;};E.prototype.blocks=function(s,c,o){for(var r=this.fin?0:2048,l,u,p,v,T,L,C,fe,j,Y,Q,te,ee,G,W,Z,I,D,$,O=this.h[0],B=this.h[1],R=this.h[2],b=this.h[3],x=this.h[4],S=this.h[5],w=this.h[6],k=this.h[7],A=this.h[8],X=this.h[9],re=this.r[0],se=this.r[1],ne=this.r[2],h=this.r[3],ae=this.r[4],le=this.r[5],de=this.r[6],ie=this.r[7],oe=this.r[8],ce=this.r[9];o>=16;)l=s[c+0]&255|(s[c+1]&255)<<8,O+=l&8191,u=s[c+2]&255|(s[c+3]&255)<<8,B+=(l>>>13|u<<3)&8191,p=s[c+4]&255|(s[c+5]&255)<<8,R+=(u>>>10|p<<6)&8191,v=s[c+6]&255|(s[c+7]&255)<<8,b+=(p>>>7|v<<9)&8191,T=s[c+8]&255|(s[c+9]&255)<<8,x+=(v>>>4|T<<12)&8191,S+=T>>>1&8191,L=s[c+10]&255|(s[c+11]&255)<<8,w+=(T>>>14|L<<2)&8191,C=s[c+12]&255|(s[c+13]&255)<<8,k+=(L>>>11|C<<5)&8191,fe=s[c+14]&255|(s[c+15]&255)<<8,A+=(C>>>8|fe<<8)&8191,X+=fe>>>5|r,j=0,Y=j,Y+=O*re,Y+=B*(5*ce),Y+=R*(5*oe),Y+=b*(5*ie),Y+=x*(5*de),j=Y>>>13,Y&=8191,Y+=S*(5*le),Y+=w*(5*ae),Y+=k*(5*h),Y+=A*(5*ne),Y+=X*(5*se),j+=Y>>>13,Y&=8191,Q=j,Q+=O*se,Q+=B*re,Q+=R*(5*ce),Q+=b*(5*oe),Q+=x*(5*ie),j=Q>>>13,Q&=8191,Q+=S*(5*de),Q+=w*(5*le),Q+=k*(5*ae),Q+=A*(5*h),Q+=X*(5*ne),j+=Q>>>13,Q&=8191,te=j,te+=O*ne,te+=B*se,te+=R*re,te+=b*(5*ce),te+=x*(5*oe),j=te>>>13,te&=8191,te+=S*(5*ie),te+=w*(5*de),te+=k*(5*le),te+=A*(5*ae),te+=X*(5*h),j+=te>>>13,te&=8191,ee=j,ee+=O*h,ee+=B*ne,ee+=R*se,ee+=b*re,ee+=x*(5*ce),j=ee>>>13,ee&=8191,ee+=S*(5*oe),ee+=w*(5*ie),ee+=k*(5*de),ee+=A*(5*le),ee+=X*(5*ae),j+=ee>>>13,ee&=8191,G=j,G+=O*ae,G+=B*h,G+=R*ne,G+=b*se,G+=x*re,j=G>>>13,G&=8191,G+=S*(5*ce),G+=w*(5*oe),G+=k*(5*ie),G+=A*(5*de),G+=X*(5*le),j+=G>>>13,G&=8191,W=j,W+=O*le,W+=B*ae,W+=R*h,W+=b*ne,W+=x*se,j=W>>>13,W&=8191,W+=S*re,W+=w*(5*ce),W+=k*(5*oe),W+=A*(5*ie),W+=X*(5*de),j+=W>>>13,W&=8191,Z=j,Z+=O*de,Z+=B*le,Z+=R*ae,Z+=b*h,Z+=x*ne,j=Z>>>13,Z&=8191,Z+=S*se,Z+=w*re,Z+=k*(5*ce),Z+=A*(5*oe),Z+=X*(5*ie),j+=Z>>>13,Z&=8191,I=j,I+=O*ie,I+=B*de,I+=R*le,I+=b*ae,I+=x*h,j=I>>>13,I&=8191,I+=S*ne,I+=w*se,I+=k*re,I+=A*(5*ce),I+=X*(5*oe),j+=I>>>13,I&=8191,D=j,D+=O*oe,D+=B*ie,D+=R*de,D+=b*le,D+=x*ae,j=D>>>13,D&=8191,D+=S*h,D+=w*ne,D+=k*se,D+=A*re,D+=X*(5*ce),j+=D>>>13,D&=8191,$=j,$+=O*ce,$+=B*oe,$+=R*ie,$+=b*de,$+=x*le,j=$>>>13,$&=8191,$+=S*ae,$+=w*h,$+=k*ne,$+=A*se,$+=X*re,j+=$>>>13,$&=8191,j=(j<<2)+j|0,j=j+Y|0,Y=j&8191,j=j>>>13,Q+=j,O=Y,B=Q,R=te,b=ee,x=G,S=W,w=Z,k=I,A=D,X=$,c+=16,o-=16;this.h[0]=O,this.h[1]=B,this.h[2]=R,this.h[3]=b,this.h[4]=x,this.h[5]=S,this.h[6]=w,this.h[7]=k,this.h[8]=A,this.h[9]=X;},E.prototype.finish=function(s,c){var o=new Uint16Array(10),r,l,u,p;if(this.leftover){for(p=this.leftover,this.buffer[p++]=1;p<16;p++)this.buffer[p]=0;this.fin=1,this.blocks(this.buffer,0,16);}for(r=this.h[1]>>>13,this.h[1]&=8191,p=2;p<10;p++)this.h[p]+=r,r=this.h[p]>>>13,this.h[p]&=8191;for(this.h[0]+=r*5,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,o[0]=this.h[0]+5,r=o[0]>>>13,o[0]&=8191,p=1;p<10;p++)o[p]=this.h[p]+r,r=o[p]>>>13,o[p]&=8191;for(o[9]-=8192,l=(r^1)-1,p=0;p<10;p++)o[p]&=l;for(l=~l,p=0;p<10;p++)this.h[p]=this.h[p]&l|o[p];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,u=this.h[0]+this.pad[0],this.h[0]=u&65535,p=1;p<8;p++)u=(this.h[p]+this.pad[p]|0)+(u>>>16)|0,this.h[p]=u&65535;s[c+0]=this.h[0]>>>0&255,s[c+1]=this.h[0]>>>8&255,s[c+2]=this.h[1]>>>0&255,s[c+3]=this.h[1]>>>8&255,s[c+4]=this.h[2]>>>0&255,s[c+5]=this.h[2]>>>8&255,s[c+6]=this.h[3]>>>0&255,s[c+7]=this.h[3]>>>8&255,s[c+8]=this.h[4]>>>0&255,s[c+9]=this.h[4]>>>8&255,s[c+10]=this.h[5]>>>0&255,s[c+11]=this.h[5]>>>8&255,s[c+12]=this.h[6]>>>0&255,s[c+13]=this.h[6]>>>8&255,s[c+14]=this.h[7]>>>0&255,s[c+15]=this.h[7]>>>8&255;},E.prototype.update=function(s,c,o){var r,l;if(this.leftover){for(l=16-this.leftover,l>o&&(l=o),r=0;r<l;r++)this.buffer[this.leftover+r]=s[c+r];if(o-=l,c+=l,this.leftover+=l,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0;}if(o>=16&&(l=o-o%16,this.blocks(s,c,l),c+=l,o-=l),o){for(r=0;r<o;r++)this.buffer[this.leftover+r]=s[c+r];this.leftover+=o;}};function P(s,c,o,r,l,u){var p=new E(u);return p.update(o,r,l),p.finish(s,c),0}function he(s,c,o,r,l,u){var p=new Uint8Array(16);return P(p,0,o,r,l,u),H(s,c,p,0)}function pe(s,c,o,r,l){var u;if(o<32)return -1;for(De(s,0,c,0,o,r,l),P(s,16,s,32,o-32,s),u=0;u<16;u++)s[u]=0;return 0}function N(s,c,o,r,l){var u,p=new Uint8Array(32);if(o<32||(ze(p,0,32,r,l),he(c,16,c,32,o-32,p)!==0))return -1;for(De(s,0,c,0,o,r,l),u=0;u<32;u++)s[u]=0;return 0}function z(s,c){var o;for(o=0;o<16;o++)s[o]=c[o]|0;}function we(s){var c,o,r=1;for(c=0;c<16;c++)o=s[c]+r+65535,r=Math.floor(o/65536),s[c]=o-r*65536;s[0]+=r-1+37*(r-1);}function ke(s,c,o){for(var r,l=~(o-1),u=0;u<16;u++)r=l&(s[u]^c[u]),s[u]^=r,c[u]^=r;}function ge(s,c){var o,r,l,u=e(),p=e();for(o=0;o<16;o++)p[o]=c[o];for(we(p),we(p),we(p),r=0;r<2;r++){for(u[0]=p[0]-65517,o=1;o<15;o++)u[o]=p[o]-65535-(u[o-1]>>16&1),u[o-1]&=65535;u[15]=p[15]-32767-(u[14]>>16&1),l=u[15]>>16&1,u[14]&=65535,ke(p,u,1-l);}for(o=0;o<16;o++)s[2*o]=p[o]&255,s[2*o+1]=p[o]>>8;}function _e(s,c){var o=new Uint8Array(32),r=new Uint8Array(32);return ge(o,s),ge(r,c),xe(o,0,r,0)}function ve(s){var c=new Uint8Array(32);return ge(c,s),c[0]&1}function Ie(s,c){var o;for(o=0;o<16;o++)s[o]=c[2*o]+(c[2*o+1]<<8);s[15]&=32767;}function Te(s,c,o){for(var r=0;r<16;r++)s[r]=c[r]+o[r];}function $e(s,c,o){for(var r=0;r<16;r++)s[r]=c[r]-o[r];}function V(s,c,o){var r,l,u=0,p=0,v=0,T=0,L=0,C=0,fe=0,j=0,Y=0,Q=0,te=0,ee=0,G=0,W=0,Z=0,I=0,D=0,$=0,O=0,B=0,R=0,b=0,x=0,S=0,w=0,k=0,A=0,X=0,re=0,se=0,ne=0,h=o[0],ae=o[1],le=o[2],de=o[3],ie=o[4],oe=o[5],ce=o[6],Ae=o[7],ye=o[8],Se=o[9],Ke=o[10],Pe=o[11],Ue=o[12],Fe=o[13],Oe=o[14],Be=o[15];r=c[0],u+=r*h,p+=r*ae,v+=r*le,T+=r*de,L+=r*ie,C+=r*oe,fe+=r*ce,j+=r*Ae,Y+=r*ye,Q+=r*Se,te+=r*Ke,ee+=r*Pe,G+=r*Ue,W+=r*Fe,Z+=r*Oe,I+=r*Be,r=c[1],p+=r*h,v+=r*ae,T+=r*le,L+=r*de,C+=r*ie,fe+=r*oe,j+=r*ce,Y+=r*Ae,Q+=r*ye,te+=r*Se,ee+=r*Ke,G+=r*Pe,W+=r*Ue,Z+=r*Fe,I+=r*Oe,D+=r*Be,r=c[2],v+=r*h,T+=r*ae,L+=r*le,C+=r*de,fe+=r*ie,j+=r*oe,Y+=r*ce,Q+=r*Ae,te+=r*ye,ee+=r*Se,G+=r*Ke,W+=r*Pe,Z+=r*Ue,I+=r*Fe,D+=r*Oe,$+=r*Be,r=c[3],T+=r*h,L+=r*ae,C+=r*le,fe+=r*de,j+=r*ie,Y+=r*oe,Q+=r*ce,te+=r*Ae,ee+=r*ye,G+=r*Se,W+=r*Ke,Z+=r*Pe,I+=r*Ue,D+=r*Fe,$+=r*Oe,O+=r*Be,r=c[4],L+=r*h,C+=r*ae,fe+=r*le,j+=r*de,Y+=r*ie,Q+=r*oe,te+=r*ce,ee+=r*Ae,G+=r*ye,W+=r*Se,Z+=r*Ke,I+=r*Pe,D+=r*Ue,$+=r*Fe,O+=r*Oe,B+=r*Be,r=c[5],C+=r*h,fe+=r*ae,j+=r*le,Y+=r*de,Q+=r*ie,te+=r*oe,ee+=r*ce,G+=r*Ae,W+=r*ye,Z+=r*Se,I+=r*Ke,D+=r*Pe,$+=r*Ue,O+=r*Fe,B+=r*Oe,R+=r*Be,r=c[6],fe+=r*h,j+=r*ae,Y+=r*le,Q+=r*de,te+=r*ie,ee+=r*oe,G+=r*ce,W+=r*Ae,Z+=r*ye,I+=r*Se,D+=r*Ke,$+=r*Pe,O+=r*Ue,B+=r*Fe,R+=r*Oe,b+=r*Be,r=c[7],j+=r*h,Y+=r*ae,Q+=r*le,te+=r*de,ee+=r*ie,G+=r*oe,W+=r*ce,Z+=r*Ae,I+=r*ye,D+=r*Se,$+=r*Ke,O+=r*Pe,B+=r*Ue,R+=r*Fe,b+=r*Oe,x+=r*Be,r=c[8],Y+=r*h,Q+=r*ae,te+=r*le,ee+=r*de,G+=r*ie,W+=r*oe,Z+=r*ce,I+=r*Ae,D+=r*ye,$+=r*Se,O+=r*Ke,B+=r*Pe,R+=r*Ue,b+=r*Fe,x+=r*Oe,S+=r*Be,r=c[9],Q+=r*h,te+=r*ae,ee+=r*le,G+=r*de,W+=r*ie,Z+=r*oe,I+=r*ce,D+=r*Ae,$+=r*ye,O+=r*Se,B+=r*Ke,R+=r*Pe,b+=r*Ue,x+=r*Fe,S+=r*Oe,w+=r*Be,r=c[10],te+=r*h,ee+=r*ae,G+=r*le,W+=r*de,Z+=r*ie,I+=r*oe,D+=r*ce,$+=r*Ae,O+=r*ye,B+=r*Se,R+=r*Ke,b+=r*Pe,x+=r*Ue,S+=r*Fe,w+=r*Oe,k+=r*Be,r=c[11],ee+=r*h,G+=r*ae,W+=r*le,Z+=r*de,I+=r*ie,D+=r*oe,$+=r*ce,O+=r*Ae,B+=r*ye,R+=r*Se,b+=r*Ke,x+=r*Pe,S+=r*Ue,w+=r*Fe,k+=r*Oe,A+=r*Be,r=c[12],G+=r*h,W+=r*ae,Z+=r*le,I+=r*de,D+=r*ie,$+=r*oe,O+=r*ce,B+=r*Ae,R+=r*ye,b+=r*Se,x+=r*Ke,S+=r*Pe,w+=r*Ue,k+=r*Fe,A+=r*Oe,X+=r*Be,r=c[13],W+=r*h,Z+=r*ae,I+=r*le,D+=r*de,$+=r*ie,O+=r*oe,B+=r*ce,R+=r*Ae,b+=r*ye,x+=r*Se,S+=r*Ke,w+=r*Pe,k+=r*Ue,A+=r*Fe,X+=r*Oe,re+=r*Be,r=c[14],Z+=r*h,I+=r*ae,D+=r*le,$+=r*de,O+=r*ie,B+=r*oe,R+=r*ce,b+=r*Ae,x+=r*ye,S+=r*Se,w+=r*Ke,k+=r*Pe,A+=r*Ue,X+=r*Fe,re+=r*Oe,se+=r*Be,r=c[15],I+=r*h,D+=r*ae,$+=r*le,O+=r*de,B+=r*ie,R+=r*oe,b+=r*ce,x+=r*Ae,S+=r*ye,w+=r*Se,k+=r*Ke,A+=r*Pe,X+=r*Ue,re+=r*Fe,se+=r*Oe,ne+=r*Be,u+=38*D,p+=38*$,v+=38*O,T+=38*B,L+=38*R,C+=38*b,fe+=38*x,j+=38*S,Y+=38*w,Q+=38*k,te+=38*A,ee+=38*X,G+=38*re,W+=38*se,Z+=38*ne,l=1,r=u+l+65535,l=Math.floor(r/65536),u=r-l*65536,r=p+l+65535,l=Math.floor(r/65536),p=r-l*65536,r=v+l+65535,l=Math.floor(r/65536),v=r-l*65536,r=T+l+65535,l=Math.floor(r/65536),T=r-l*65536,r=L+l+65535,l=Math.floor(r/65536),L=r-l*65536,r=C+l+65535,l=Math.floor(r/65536),C=r-l*65536,r=fe+l+65535,l=Math.floor(r/65536),fe=r-l*65536,r=j+l+65535,l=Math.floor(r/65536),j=r-l*65536,r=Y+l+65535,l=Math.floor(r/65536),Y=r-l*65536,r=Q+l+65535,l=Math.floor(r/65536),Q=r-l*65536,r=te+l+65535,l=Math.floor(r/65536),te=r-l*65536,r=ee+l+65535,l=Math.floor(r/65536),ee=r-l*65536,r=G+l+65535,l=Math.floor(r/65536),G=r-l*65536,r=W+l+65535,l=Math.floor(r/65536),W=r-l*65536,r=Z+l+65535,l=Math.floor(r/65536),Z=r-l*65536,r=I+l+65535,l=Math.floor(r/65536),I=r-l*65536,u+=l-1+37*(l-1),l=1,r=u+l+65535,l=Math.floor(r/65536),u=r-l*65536,r=p+l+65535,l=Math.floor(r/65536),p=r-l*65536,r=v+l+65535,l=Math.floor(r/65536),v=r-l*65536,r=T+l+65535,l=Math.floor(r/65536),T=r-l*65536,r=L+l+65535,l=Math.floor(r/65536),L=r-l*65536,r=C+l+65535,l=Math.floor(r/65536),C=r-l*65536,r=fe+l+65535,l=Math.floor(r/65536),fe=r-l*65536,r=j+l+65535,l=Math.floor(r/65536),j=r-l*65536,r=Y+l+65535,l=Math.floor(r/65536),Y=r-l*65536,r=Q+l+65535,l=Math.floor(r/65536),Q=r-l*65536,r=te+l+65535,l=Math.floor(r/65536),te=r-l*65536,r=ee+l+65535,l=Math.floor(r/65536),ee=r-l*65536,r=G+l+65535,l=Math.floor(r/65536),G=r-l*65536,r=W+l+65535,l=Math.floor(r/65536),W=r-l*65536,r=Z+l+65535,l=Math.floor(r/65536),Z=r-l*65536,r=I+l+65535,l=Math.floor(r/65536),I=r-l*65536,u+=l-1+37*(l-1),s[0]=u,s[1]=p,s[2]=v,s[3]=T,s[4]=L,s[5]=C,s[6]=fe,s[7]=j,s[8]=Y,s[9]=Q,s[10]=te,s[11]=ee,s[12]=G,s[13]=W,s[14]=Z,s[15]=I;}function ue(s,c){V(s,c,c);}function Je(s,c){var o=e(),r;for(r=0;r<16;r++)o[r]=c[r];for(r=253;r>=0;r--)ue(o,o),r!==2&&r!==4&&V(o,o,c);for(r=0;r<16;r++)s[r]=o[r];}function Ye(s,c){var o=e(),r;for(r=0;r<16;r++)o[r]=c[r];for(r=250;r>=0;r--)ue(o,o),r!==1&&V(o,o,c);for(r=0;r<16;r++)s[r]=o[r];}function st(s,c,o){var r=new Uint8Array(32),l=new Float64Array(80),u,p,v=e(),T=e(),L=e(),C=e(),fe=e(),j=e();for(p=0;p<31;p++)r[p]=c[p];for(r[31]=c[31]&127|64,r[0]&=248,Ie(l,o),p=0;p<16;p++)T[p]=l[p],C[p]=v[p]=L[p]=0;for(v[0]=C[0]=1,p=254;p>=0;--p)u=r[p>>>3]>>>(p&7)&1,ke(v,T,u),ke(L,C,u),Te(fe,v,L),$e(v,v,L),Te(L,T,C),$e(T,T,C),ue(C,fe),ue(j,v),V(v,L,v),V(L,T,fe),Te(fe,v,L),$e(v,v,L),ue(T,v),$e(L,C,j),V(v,L,y),Te(v,v,C),V(L,L,v),V(v,C,j),V(C,T,l),ue(T,fe),ke(v,T,u),ke(L,C,u);for(p=0;p<16;p++)l[p+16]=v[p],l[p+32]=L[p],l[p+48]=T[p],l[p+64]=C[p];var Y=l.subarray(32),Q=l.subarray(16);return Je(Y,Y),V(Q,Q,Y),ge(s,Q),0}function it(s,c){return st(s,c,i)}function or(s,c){return t(c,32),it(s,c)}function xt(s,c,o){var r=new Uint8Array(32);return st(r,o,c),Ce(s,n,r,Me)}var cr=pe,sn=N;function an(s,c,o,r,l,u){var p=new Uint8Array(32);return xt(p,l,u),cr(s,c,o,r,p)}function on(s,c,o,r,l,u){var p=new Uint8Array(32);return xt(p,l,u),sn(s,c,o,r,p)}var fr=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function lr(s,c,o,r){for(var l=new Int32Array(16),u=new Int32Array(16),p,v,T,L,C,fe,j,Y,Q,te,ee,G,W,Z,I,D,$,O,B,R,b,x,S,w,k,A,X=s[0],re=s[1],se=s[2],ne=s[3],h=s[4],ae=s[5],le=s[6],de=s[7],ie=c[0],oe=c[1],ce=c[2],Ae=c[3],ye=c[4],Se=c[5],Ke=c[6],Pe=c[7],Ue=0;r>=128;){for(B=0;B<16;B++)R=8*B+Ue,l[B]=o[R+0]<<24|o[R+1]<<16|o[R+2]<<8|o[R+3],u[B]=o[R+4]<<24|o[R+5]<<16|o[R+6]<<8|o[R+7];for(B=0;B<80;B++)if(p=X,v=re,T=se,L=ne,C=h,fe=ae,j=le,Y=de,Q=ie,te=oe,ee=ce,G=Ae,W=ye,Z=Se,I=Ke,D=Pe,b=de,x=Pe,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=(h>>>14|ye<<18)^(h>>>18|ye<<14)^(ye>>>9|h<<23),x=(ye>>>14|h<<18)^(ye>>>18|h<<14)^(h>>>9|ye<<23),S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,b=h&ae^~h&le,x=ye&Se^~ye&Ke,S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,b=fr[B*2],x=fr[B*2+1],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,b=l[B%16],x=u[B%16],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,$=k&65535|A<<16,O=S&65535|w<<16,b=$,x=O,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=(X>>>28|ie<<4)^(ie>>>2|X<<30)^(ie>>>7|X<<25),x=(ie>>>28|X<<4)^(X>>>2|ie<<30)^(X>>>7|ie<<25),S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,b=X&re^X&se^re&se,x=ie&oe^ie&ce^oe&ce,S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,Y=k&65535|A<<16,D=S&65535|w<<16,b=L,x=G,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=$,x=O,S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,L=k&65535|A<<16,G=S&65535|w<<16,re=p,se=v,ne=T,h=L,ae=C,le=fe,de=j,X=Y,oe=Q,ce=te,Ae=ee,ye=G,Se=W,Ke=Z,Pe=I,ie=D,B%16===15)for(R=0;R<16;R++)b=l[R],x=u[R],S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=l[(R+9)%16],x=u[(R+9)%16],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,$=l[(R+1)%16],O=u[(R+1)%16],b=($>>>1|O<<31)^($>>>8|O<<24)^$>>>7,x=(O>>>1|$<<31)^(O>>>8|$<<24)^(O>>>7|$<<25),S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,$=l[(R+14)%16],O=u[(R+14)%16],b=($>>>19|O<<13)^(O>>>29|$<<3)^$>>>6,x=(O>>>19|$<<13)^($>>>29|O<<3)^(O>>>6|$<<26),S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,l[R]=k&65535|A<<16,u[R]=S&65535|w<<16;b=X,x=ie,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[0],x=c[0],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[0]=X=k&65535|A<<16,c[0]=ie=S&65535|w<<16,b=re,x=oe,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[1],x=c[1],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[1]=re=k&65535|A<<16,c[1]=oe=S&65535|w<<16,b=se,x=ce,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[2],x=c[2],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[2]=se=k&65535|A<<16,c[2]=ce=S&65535|w<<16,b=ne,x=Ae,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[3],x=c[3],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[3]=ne=k&65535|A<<16,c[3]=Ae=S&65535|w<<16,b=h,x=ye,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[4],x=c[4],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[4]=h=k&65535|A<<16,c[4]=ye=S&65535|w<<16,b=ae,x=Se,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[5],x=c[5],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[5]=ae=k&65535|A<<16,c[5]=Se=S&65535|w<<16,b=le,x=Ke,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[6],x=c[6],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[6]=le=k&65535|A<<16,c[6]=Ke=S&65535|w<<16,b=de,x=Pe,S=x&65535,w=x>>>16,k=b&65535,A=b>>>16,b=s[7],x=c[7],S+=x&65535,w+=x>>>16,k+=b&65535,A+=b>>>16,w+=S>>>16,k+=w>>>16,A+=k>>>16,s[7]=de=k&65535|A<<16,c[7]=Pe=S&65535|w<<16,Ue+=128,r-=128;}return r}function tt(s,c,o){var r=new Int32Array(8),l=new Int32Array(8),u=new Uint8Array(256),p,v=o;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,l[0]=4089235720,l[1]=2227873595,l[2]=4271175723,l[3]=1595750129,l[4]=2917565137,l[5]=725511199,l[6]=4215389547,l[7]=327033209,lr(r,l,c,o),o%=128,p=0;p<o;p++)u[p]=c[v-o+p];for(u[o]=128,o=256-128*(o<112?1:0),u[o-9]=0,M(u,o-8,v/536870912|0,v<<3),lr(r,l,u,o),p=0;p<8;p++)M(s,8*p,r[p],l[p]);return 0}function _t(s,c){var o=e(),r=e(),l=e(),u=e(),p=e(),v=e(),T=e(),L=e(),C=e();$e(o,s[1],s[0]),$e(C,c[1],c[0]),V(o,o,C),Te(r,s[0],s[1]),Te(C,c[0],c[1]),V(r,r,C),V(l,s[3],c[3]),V(l,l,K),V(u,s[2],c[2]),Te(u,u,u),$e(p,r,o),$e(v,u,l),Te(T,u,l),Te(L,r,o),V(s[0],p,v),V(s[1],L,T),V(s[2],T,v),V(s[3],p,L);}function dr(s,c,o){var r;for(r=0;r<4;r++)ke(s[r],c[r],o);}function Bt(s,c){var o=e(),r=e(),l=e();Je(l,c[2]),V(o,c[0],l),V(r,c[1],l),ge(s,r),s[31]^=ve(o)<<7;}function Lt(s,c,o){var r,l;for(z(s[0],f),z(s[1],d),z(s[2],d),z(s[3],f),l=255;l>=0;--l)r=o[l/8|0]>>(l&7)&1,dr(s,c,r),_t(c,s),_t(s,s),dr(s,c,r);}function wt(s,c){var o=[e(),e(),e(),e()];z(o[0],m),z(o[1],F),z(o[2],d),V(o[3],m,F),Lt(s,o,c);}function Dt(s,c,o){var r=new Uint8Array(64),l=[e(),e(),e(),e()],u;for(o||t(c,32),tt(r,c,32),r[0]&=248,r[31]&=127,r[31]|=64,wt(l,r),Bt(s,l),u=0;u<32;u++)c[u+32]=s[u];return 0}var vt=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 Nt(s,c){var o,r,l,u;for(r=63;r>=32;--r){for(o=0,l=r-32,u=r-12;l<u;++l)c[l]+=o-16*c[r]*vt[l-(r-32)],o=Math.floor((c[l]+128)/256),c[l]-=o*256;c[l]+=o,c[r]=0;}for(o=0,l=0;l<32;l++)c[l]+=o-(c[31]>>4)*vt[l],o=c[l]>>8,c[l]&=255;for(l=0;l<32;l++)c[l]-=o*vt[l];for(r=0;r<32;r++)c[r+1]+=c[r]>>8,s[r]=c[r]&255;}function Ht(s){var c=new Float64Array(64),o;for(o=0;o<64;o++)c[o]=s[o];for(o=0;o<64;o++)s[o]=0;Nt(s,c);}function hr(s,c,o,r){var l=new Uint8Array(64),u=new Uint8Array(64),p=new Uint8Array(64),v,T,L=new Float64Array(64),C=[e(),e(),e(),e()];tt(l,r,32),l[0]&=248,l[31]&=127,l[31]|=64;var fe=o+64;for(v=0;v<o;v++)s[64+v]=c[v];for(v=0;v<32;v++)s[32+v]=l[32+v];for(tt(p,s.subarray(32),o+32),Ht(p),wt(C,p),Bt(s,C),v=32;v<64;v++)s[v]=r[v];for(tt(u,s,o+64),Ht(u),v=0;v<64;v++)L[v]=0;for(v=0;v<32;v++)L[v]=p[v];for(v=0;v<32;v++)for(T=0;T<32;T++)L[v+T]+=u[v]*l[T];return Nt(s.subarray(32),L),fe}function cn(s,c){var o=e(),r=e(),l=e(),u=e(),p=e(),v=e(),T=e();return z(s[2],d),Ie(s[1],c),ue(l,s[1]),V(u,l,_),$e(l,l,s[2]),Te(u,s[2],u),ue(p,u),ue(v,p),V(T,v,p),V(o,T,l),V(o,o,u),Ye(o,o),V(o,o,l),V(o,o,u),V(o,o,u),V(s[0],o,u),ue(r,s[0]),V(r,r,u),_e(r,l)&&V(s[0],s[0],q),ue(r,s[0]),V(r,r,u),_e(r,l)?-1:(ve(s[0])===c[31]>>7&&$e(s[0],f,s[0]),V(s[3],s[0],s[1]),0)}function zt(s,c,o,r){var l,u=new Uint8Array(32),p=new Uint8Array(64),v=[e(),e(),e(),e()],T=[e(),e(),e(),e()];if(o<64||cn(T,r))return -1;for(l=0;l<o;l++)s[l]=c[l];for(l=0;l<32;l++)s[l+32]=r[l];if(tt(p,s,o),Ht(p),Lt(v,T,p),wt(T,c.subarray(32)),_t(v,T),Bt(u,v),o-=64,xe(c,0,u,0)){for(l=0;l<o;l++)s[l]=0;return -1}for(l=0;l<o;l++)s[l]=c[l+64];return o}var Xt=32,kt=24,ht=32,at=16,yt=32,St=32,ut=32,pt=32,qt=32,yr=kt,fn=ht,ln=at,Qe=64,rt=32,ot=64,Jt=32,Vt=64;a.lowlevel={crypto_core_hsalsa20:Ce,crypto_stream_xor:De,crypto_stream:ze,crypto_stream_salsa20_xor:Ve,crypto_stream_salsa20:He,crypto_onetimeauth:P,crypto_onetimeauth_verify:he,crypto_verify_16:H,crypto_verify_32:xe,crypto_secretbox:pe,crypto_secretbox_open:N,crypto_scalarmult:st,crypto_scalarmult_base:it,crypto_box_beforenm:xt,crypto_box_afternm:cr,crypto_box:an,crypto_box_open:on,crypto_box_keypair:or,crypto_hash:tt,crypto_sign:hr,crypto_sign_keypair:Dt,crypto_sign_open:zt,crypto_secretbox_KEYBYTES:Xt,crypto_secretbox_NONCEBYTES:kt,crypto_secretbox_ZEROBYTES:ht,crypto_secretbox_BOXZEROBYTES:at,crypto_scalarmult_BYTES:yt,crypto_scalarmult_SCALARBYTES:St,crypto_box_PUBLICKEYBYTES:ut,crypto_box_SECRETKEYBYTES:pt,crypto_box_BEFORENMBYTES:qt,crypto_box_NONCEBYTES:yr,crypto_box_ZEROBYTES:fn,crypto_box_BOXZEROBYTES:ln,crypto_sign_BYTES:Qe,crypto_sign_PUBLICKEYBYTES:rt,crypto_sign_SECRETKEYBYTES:ot,crypto_sign_SEEDBYTES:Jt,crypto_hash_BYTES:Vt,gf:e,D:_,L:vt,pack25519:ge,unpack25519:Ie,M:V,A:Te,S:ue,Z:$e,pow2523:Ye,add:_t,set25519:z,modL:Nt,scalarmult:Lt,scalarbase:wt};function ur(s,c){if(s.length!==Xt)throw new Error("bad key size");if(c.length!==kt)throw new Error("bad nonce size")}function dn(s,c){if(s.length!==ut)throw new Error("bad public key size");if(c.length!==pt)throw new Error("bad secret key size")}function Xe(){for(var s=0;s<arguments.length;s++)if(!(arguments[s]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function pr(s){for(var c=0;c<s.length;c++)s[c]=0;}a.randomBytes=function(s){var c=new Uint8Array(s);return t(c,s),c},a.secretbox=function(s,c,o){Xe(s,c,o),ur(o,c);for(var r=new Uint8Array(ht+s.length),l=new Uint8Array(r.length),u=0;u<s.length;u++)r[u+ht]=s[u];return pe(l,r,r.length,c,o),l.subarray(at)},a.secretbox.open=function(s,c,o){Xe(s,c,o),ur(o,c);for(var r=new Uint8Array(at+s.length),l=new Uint8Array(r.length),u=0;u<s.length;u++)r[u+at]=s[u];return r.length<32||N(l,r,r.length,c,o)!==0?null:l.subarray(ht)},a.secretbox.keyLength=Xt,a.secretbox.nonceLength=kt,a.secretbox.overheadLength=at,a.scalarMult=function(s,c){if(Xe(s,c),s.length!==St)throw new Error("bad n size");if(c.length!==yt)throw new Error("bad p size");var o=new Uint8Array(yt);return st(o,s,c),o},a.scalarMult.base=function(s){if(Xe(s),s.length!==St)throw new Error("bad n size");var c=new Uint8Array(yt);return it(c,s),c},a.scalarMult.scalarLength=St,a.scalarMult.groupElementLength=yt,a.box=function(s,c,o,r){var l=a.box.before(o,r);return a.secretbox(s,c,l)},a.box.before=function(s,c){Xe(s,c),dn(s,c);var o=new Uint8Array(qt);return xt(o,s,c),o},a.box.after=a.secretbox,a.box.open=function(s,c,o,r){var l=a.box.before(o,r);return a.secretbox.open(s,c,l)},a.box.open.after=a.secretbox.open,a.box.keyPair=function(){var s=new Uint8Array(ut),c=new Uint8Array(pt);return or(s,c),{publicKey:s,secretKey:c}},a.box.keyPair.fromSecretKey=function(s){if(Xe(s),s.length!==pt)throw new Error("bad secret key size");var c=new Uint8Array(ut);return it(c,s),{publicKey:c,secretKey:new Uint8Array(s)}},a.box.publicKeyLength=ut,a.box.secretKeyLength=pt,a.box.sharedKeyLength=qt,a.box.nonceLength=yr,a.box.overheadLength=a.secretbox.overheadLength,a.sign=function(s,c){if(Xe(s,c),c.length!==ot)throw new Error("bad secret key size");var o=new Uint8Array(Qe+s.length);return hr(o,s,s.length,c),o},a.sign.open=function(s,c){if(Xe(s,c),c.length!==rt)throw new Error("bad public key size");var o=new Uint8Array(s.length),r=zt(o,s,s.length,c);if(r<0)return null;for(var l=new Uint8Array(r),u=0;u<l.length;u++)l[u]=o[u];return l},a.sign.detached=function(s,c){for(var o=a.sign(s,c),r=new Uint8Array(Qe),l=0;l<r.length;l++)r[l]=o[l];return r},a.sign.detached.verify=function(s,c,o){if(Xe(s,c,o),c.length!==Qe)throw new Error("bad signature size");if(o.length!==rt)throw new Error("bad public key size");var r=new Uint8Array(Qe+s.length),l=new Uint8Array(Qe+s.length),u;for(u=0;u<Qe;u++)r[u]=c[u];for(u=0;u<s.length;u++)r[u+Qe]=s[u];return zt(l,r,r.length,o)>=0},a.sign.keyPair=function(){var s=new Uint8Array(rt),c=new Uint8Array(ot);return Dt(s,c),{publicKey:s,secretKey:c}},a.sign.keyPair.fromSecretKey=function(s){if(Xe(s),s.length!==ot)throw new Error("bad secret key size");for(var c=new Uint8Array(rt),o=0;o<c.length;o++)c[o]=s[32+o];return {publicKey:c,secretKey:new Uint8Array(s)}},a.sign.keyPair.fromSeed=function(s){if(Xe(s),s.length!==Jt)throw new Error("bad seed size");for(var c=new Uint8Array(rt),o=new Uint8Array(ot),r=0;r<32;r++)o[r]=s[r];return Dt(c,o,true),{publicKey:c,secretKey:o}},a.sign.publicKeyLength=rt,a.sign.secretKeyLength=ot,a.sign.seedLength=Jt,a.sign.signatureLength=Qe,a.hash=function(s){Xe(s);var c=new Uint8Array(Vt);return tt(c,s,s.length),c},a.hash.hashLength=Vt,a.verify=function(s,c){return Xe(s,c),s.length===0||c.length===0||s.length!==c.length?false:J(s,0,c,0,s.length)===0},a.setPRNG=function(s){t=s;},(function(){var s=typeof self<"u"?self.crypto||self.msCrypto:null;if(s&&s.getRandomValues){var c=65536;a.setPRNG(function(o,r){var l,u=new Uint8Array(r);for(l=0;l<r;l+=c)s.getRandomValues(u.subarray(l,l+Math.min(r-l,c)));for(l=0;l<r;l++)o[l]=u[l];pr(u);});}else typeof Yt<"u"&&(s=Yt("crypto"),s&&s.randomBytes&&a.setPRNG(function(o,r){var l,u=s.randomBytes(r);for(l=0;l<r;l++)o[l]=u[l];pr(u);}));})();})(typeof Kt<"u"&&Kt.exports?Kt.exports:self.nacl=self.nacl||{});});var wr=mr((_r,Pt)=>{(function(a,e){typeof Pt<"u"&&Pt.exports?Pt.exports=e():(a.nacl||(a.nacl={}),a.nacl.util=e());})(_r,function(){var a={};function e(t){if(!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t))throw new TypeError("invalid encoding")}return a.decodeUTF8=function(t){if(typeof t!="string")throw new TypeError("expected string");var n,i=unescape(encodeURIComponent(t)),f=new Uint8Array(i.length);for(n=0;n<i.length;n++)f[n]=i.charCodeAt(n);return f},a.encodeUTF8=function(t){var n,i=[];for(n=0;n<t.length;n++)i.push(String.fromCharCode(t[n]));return decodeURIComponent(escape(i.join("")))},typeof atob>"u"?typeof Buffer.from<"u"?(a.encodeBase64=function(t){return Buffer.from(t).toString("base64")},a.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(Buffer.from(t,"base64"),0))}):(a.encodeBase64=function(t){return new Buffer(t).toString("base64")},a.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(new Buffer(t,"base64"),0))}):(a.encodeBase64=function(t){var n,i=[],f=t.length;for(n=0;n<f;n++)i.push(String.fromCharCode(t[n]));return btoa(i.join(""))},a.decodeBase64=function(t){e(t);var n,i=atob(t),f=new Uint8Array(i.length);for(n=0;n<i.length;n++)f[n]=i.charCodeAt(n);return f}),a});});var U=br(xr()),g=br(wr());var We=class extends Error{constructor(e){let t;e instanceof Error?t=e.message:typeof e=="string"?t=e:t="",super(t),this.name=this.constructor.name;}};var At=[2285,2571,2970,1812,1493,1422,287,202,3158,622,1577,182,962,2127,1855,1468,573,2004,264,383,2500,1458,1727,3199,2648,1017,732,608,1787,411,3124,1758,1223,652,2777,1015,2036,1491,3047,1785,516,3321,3009,2663,1711,2167,126,1469,2476,3239,3058,830,107,1908,3082,2378,2931,961,1821,2604,448,2264,677,2054,2226,430,555,843,2078,871,1550,105,422,587,177,3094,3038,2869,1574,1653,3083,778,1159,3182,2552,1483,2727,1119,1739,644,2457,349,418,329,3173,3254,817,1097,603,610,1322,2044,1864,384,2114,3193,1218,1994,2455,220,2142,1670,2144,1799,2051,794,1819,2475,2459,478,3221,3021,996,991,958,1869,1522,1628],Qt=[1701,1807,1460,2371,2338,2333,308,108,2851,870,854,1510,2535,1278,1530,1185,1659,1187,3109,874,1335,2111,136,1215,2945,1465,1285,2007,2719,2726,2232,2512,75,156,3e3,2911,2980,872,2685,1590,2210,602,1846,777,147,2170,2551,246,1676,1755,460,291,235,3152,2742,2907,3224,1779,2458,1251,2486,2774,2899,1103,1275,2652,1065,2881,725,1508,2368,398,951,247,1421,3222,2499,271,90,853,1860,3203,1162,1618,666,320,8,2813,1544,282,1838,1293,2314,552,2677,2106,1571,205,2918,1542,2721,2597,2312,681,130,1602,1871,829,2946,3065,1325,2756,1861,1474,1202,2367,3147,1752,2707,171,3127,3042,1907,1836,1517,359,758,1441];var Tt=BigInt(4294967295),vr=BigInt(32);function bn(a,e=false){return e?{h:Number(a&Tt),l:Number(a>>vr&Tt)}:{h:Number(a>>vr&Tt)|0,l:Number(a&Tt)|0}}function kr(a,e=false){let t=a.length,n=new Uint32Array(t),i=new Uint32Array(t);for(let f=0;f<t;f++){let{h:d,l:y}=bn(a[f],e);[n[f],i[f]]=[d,y];}return [n,i]}var Sr=(a,e,t)=>a<<t|e>>>32-t,Kr=(a,e,t)=>e<<t|a>>>32-t,Pr=(a,e,t)=>e<<t-32|a>>>64-t,Ar=(a,e,t)=>a<<t-32|e>>>64-t;function xn(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function Gt(a,e=""){if(!Number.isSafeInteger(a)||a<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >0, got ${a}`)}}function Ut(a,e,t=""){let n=xn(a),i=a?.length,f=e!==void 0;if(!n||f){let d=t&&`"${t}" `,y="",_=n?`length=${i}`:`type=${typeof a}`;throw new Error(d+"expected Uint8Array"+y+", got "+_)}return a}function Zt(a,e=true){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(e&&a.finished)throw new Error("Hash#digest() has already been called")}function Tr(a,e){Ut(a,void 0,"digestInto() output");let t=e.outputLen;if(a.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Ur(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}function Wt(...a){for(let e=0;e<a.length;e++)a[e].fill(0);}var _n=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function wn(a){return a<<24&4278190080|a<<8&16711680|a>>>8&65280|a>>>24&255}function vn(a){for(let e=0;e<a.length;e++)a[e]=wn(a[e]);return a}var er=_n?a=>a:vn;function tr(a,e={}){let t=(i,f)=>a(f).update(i).digest(),n=a(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=i=>a(i),Object.assign(t,e),Object.freeze(t)}var gt=a=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,a])});var kn=BigInt(0),mt=BigInt(1),Sn=BigInt(2),Kn=BigInt(7),Pn=BigInt(256),An=BigInt(113),Cr=[],$r=[],jr=[];for(let a=0,e=mt,t=1,n=0;a<24;a++){[t,n]=[n,(2*t+3*n)%5],Cr.push(2*(5*n+t)),$r.push((a+1)*(a+2)/2%64);let i=kn;for(let f=0;f<7;f++)e=(e<<mt^(e>>Kn)*An)%Pn,e&Sn&&(i^=mt<<(mt<<BigInt(f))-mt);jr.push(i);}var Mr=kr(jr,true),Tn=Mr[0],Un=Mr[1],Er=(a,e,t)=>t>32?Pr(a,e,t):Sr(a,e,t),Rr=(a,e,t)=>t>32?Ar(a,e,t):Kr(a,e,t);function En(a,e=24){let t=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let d=0;d<10;d++)t[d]=a[d]^a[d+10]^a[d+20]^a[d+30]^a[d+40];for(let d=0;d<10;d+=2){let y=(d+8)%10,_=(d+2)%10,K=t[_],m=t[_+1],F=Er(K,m,1)^t[y],q=Rr(K,m,1)^t[y+1];for(let M=0;M<50;M+=10)a[d+M]^=F,a[d+M+1]^=q;}let i=a[2],f=a[3];for(let d=0;d<24;d++){let y=$r[d],_=Er(i,f,y),K=Rr(i,f,y),m=Cr[d];i=a[m],f=a[m+1],a[m]=_,a[m+1]=K;}for(let d=0;d<50;d+=10){for(let y=0;y<10;y++)t[y]=a[d+y];for(let y=0;y<10;y++)a[d+y]^=~t[(y+2)%10]&t[(y+4)%10];}a[0]^=Tn[n],a[1]^=Un[n];}Wt(t);}var Et=class a{constructor(e,t,n,i=false,f=24){if(Object.defineProperty(this,"state",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"pos",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"posOut",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"finished",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"state32",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"destroyed",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"blockLen",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"suffix",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"outputLen",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"enableXOF",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"rounds",{enumerable:true,configurable:true,writable:true,value:void 0}),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=i,this.rounds=f,Gt(n,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ur(this.state);}clone(){return this._cloneInto()}keccak(){er(this.state32),En(this.state32,this.rounds),er(this.state32),this.posOut=0,this.pos=0;}update(e){Zt(this),Ut(e);let{blockLen:t,state:n}=this,i=e.length;for(let f=0;f<i;){let d=Math.min(t-this.pos,i-f);for(let y=0;y<d;y++)n[this.pos++]^=e[f++];this.pos===t&&this.keccak();}return this}finish(){if(this.finished)return;this.finished=true;let{state:e,suffix:t,pos:n,blockLen:i}=this;e[n]^=t,(t&128)!==0&&n===i-1&&this.keccak(),e[i-1]^=128,this.keccak();}writeInto(e){Zt(this,false),Ut(e),this.finish();let t=this.state,{blockLen:n}=this;for(let i=0,f=e.length;i<f;){this.posOut>=n&&this.keccak();let d=Math.min(n-this.posOut,f-i);e.set(t.subarray(this.posOut,this.posOut+d),i),this.posOut+=d,i+=d;}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Gt(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Tr(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true,Wt(this.state);}_cloneInto(e){let{blockLen:t,suffix:n,outputLen:i,rounds:f,enableXOF:d}=this;return e||(e=new a(t,n,i,d,f)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=f,e.suffix=n,e.outputLen=i,e.enableXOF=d,e.destroyed=this.destroyed,e}},Ir=(a,e,t,n={})=>tr(()=>new Et(e,a,t),n),Rt=Ir(6,136,32,gt(8)),Ct=Ir(6,72,64,gt(10));var Fr=(a,e,t,n={})=>tr((i={})=>new Et(e,a,i.dkLen===void 0?t:i.dkLen,true),n),$t=Fr(31,168,16,gt(11)),ct=Fr(31,136,32,gt(12));var Rn={},Or=Cn(globalThis,Rn);function Cn(a,e){return new Proxy(a,{get(t,n,i){return n in e?e[n]:a[n]},set(t,n,i){return n in e&&delete e[n],a[n]=i,true},deleteProperty(t,n){let i=false;return n in e&&(delete e[n],i=true),n in a&&(delete a[n],i=true),i},ownKeys(t){let n=Reflect.ownKeys(a),i=Reflect.ownKeys(e),f=new Set(i);return [...n.filter(d=>!f.has(d)),...i]},defineProperty(t,n,i){return n in e&&delete e[n],Reflect.defineProperty(a,n,i),true},getOwnPropertyDescriptor(t,n){return n in e?Reflect.getOwnPropertyDescriptor(e,n):Reflect.getOwnPropertyDescriptor(a,n)},has(t,n){return n in e||n in a}})}function qe(a){return a%256}function Ne(a){return a>=-32768&&a<=32767?a:a<-32768?(a=a+32769,a=a%65536,32767+a):(a=a-32768,a=a%65536,-32768+a)}function me(a){return a%65536}function jt(a){return a>=-2147483648&&a<=2147483647?a:a<-2147483648?(a=a+2147483649,a=a%4294967296,2147483647+a):(a=a-2147483648,a=a%4294967296,-2147483648+a)}function Ge(a){return a%4294967296}function Br(a,e){if(a.length!=e.length)return 0;let t=new Uint8Array([0]);for(let i=0;i<a.length;i++)t[0]|=a[i]^e[i];let n=new Uint8Array([0]);return n[0]=~(t[0]^n[0]),n[0]&=n[0]>>4,n[0]&=n[0]>>2,n[0]&=n[0]>>1,n[0]}function Lr(a,e){if(a.length!=e.length)return false;for(let t=0;t<a.length;t++)if(a[t]!==e[t])return false;return true}async function Dr(){if(typeof Or<"u"&&globalThis.crypto!==void 0)return globalThis.crypto;try{let{webcrypto:a}=await import('crypto');return a}catch{throw new Error("failed to load Crypto")}}function Mt(a,e,t){return ct.create({dkLen:a}).update(e).update(new Uint8Array([t])).digest()}function Nr(a){let e=Ge(a[0]);return e|=Ge(a[1])<<8,e|=Ge(a[2])<<16,e|=Ge(a[3])<<24,Ge(e)}var ft=class{constructor(){Object.defineProperty(this,"_api",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_k",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_du",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_dv",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_eta1",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_eta2",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_skSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_pkSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_compressedUSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_compressedVSize",{enumerable:true,configurable:true,writable:true,value:0});}async generateKeyPair(){await this._setup();try{let e=new Uint8Array(64);return this._api.getRandomValues(e),this._deriveKeyPair(e)}catch(e){throw new We(e)}}async deriveKeyPair(e){await this._setup();try{if(e.byteLength!==64)throw new Error("seed must be 64 bytes in length");return this._deriveKeyPair(e)}catch(t){throw new We(t)}}async encap(e,t){await this._setup();try{if(e.length!==384*this._k+32)throw new Error("invalid encapsulation key");let n=this._getSeed(t),[i,f]=rr(n,Hr(e));return [this._encap(e,n,f),i]}catch(n){throw new We(n)}}async decap(e,t){await this._setup();try{if(e.byteLength!==this._compressedUSize+this._compressedVSize)throw new Error("Invalid ct size");if(t.length!==768*this._k+96)throw new Error("Invalid decapsulation key");let n=t.subarray(0,this._skSize),i=t.subarray(this._skSize,this._skSize+this._pkSize),f=t.subarray(this._skSize+this._pkSize,this._skSize+this._pkSize+32),d=t.subarray(this._skSize+this._pkSize+32,this._skSize+this._pkSize+64),y=this._decap(e,n),[_,K]=rr(y,f),m=Mn(d,e),F=this._encap(i,y,K);return Br(e,F)===1?_:m}catch(n){throw new We(n)}}async _setup(){this._api===void 0&&(this._api=await Dr());}_getSeed(e){if(e==null){let t=new Uint8Array(32);return this._api.getRandomValues(t),t}if(e.byteLength!==32)throw new Error("seed must be 32 bytes in length");return e}_deriveKeyPair(e){let t=e.subarray(0,32),n=e.subarray(32,64),[i,f]=this._deriveCpaKeyPair(t),d=Hr(i),y=new Uint8Array(this._skSize+this._pkSize+64);return y.set(f,0),y.set(i,this._skSize),y.set(d,this._skSize+this._pkSize),y.set(n,this._skSize+this._pkSize+32),[i,y]}_deriveCpaKeyPair(e){let[t,n]=rr(e,new Uint8Array([this._k])),i=this._sampleMatrix(t,false),f=this._sampleNoise1(n,0,this._k),d=this._sampleNoise1(n,this._k,this._k);for(let m=0;m<this._k;m++)f[m]=It(f[m]),f[m]=nt(f[m]),d[m]=It(d[m]);let y=new Array(this._k);for(let m=0;m<this._k;m++)y[m]=Bn(Ft(i[m],f)),y[m]=bt(y[m],d[m]),y[m]=nt(y[m]);let _=new Uint8Array(this._pkSize);for(let m=0;m<this._k;m++)_.set(nr(y[m]),m*384);_.set(t,this._skSize);let K=new Uint8Array(this._skSize);for(let m=0;m<this._k;m++)K.set(nr(f[m]),m*384);return [_,K]}_encap(e,t,n){let i=new Array(this._k),f=new Uint8Array(384*this._k);for(let H=0;H<this._k;H++)i[H]=zr(e.subarray(H*384,(H+1)*384)),f.set(nr(i[H]),H*384);if(!Lr(e.subarray(0,f.length),f))throw new Error("invalid encapsulation key");let d=e.subarray(this._skSize),y=this._sampleMatrix(d,true),_=this._sampleNoise1(n,0,this._k),K=this._sampleNoise2(n,this._k,this._k),m=this._sampleNoise2(n,this._k*2,1)[0];for(let H=0;H<this._k;H++)_[H]=It(_[H]),_[H]=nt(_[H]);let F=new Array(this._k);for(let H=0;H<this._k;H++)F[H]=Ft(y[H],_),F[H]=sr(F[H]),F[H]=bt(F[H],K[H]),F[H]=nt(F[H]);let q=On(t),M=Ft(i,_);M=sr(M),M=bt(M,m),M=bt(M,q),M=nt(M);let J=new Uint8Array(this._compressedUSize+this._compressedVSize);return this._compressU(J.subarray(0,this._compressedUSize),F),this._compressV(J.subarray(this._compressedUSize),M),J}_decap(e,t){let n=this._decompressU(e.subarray(0,this._compressedUSize)),i=this._decompressV(e.subarray(this._compressedUSize)),f=this._polyvecFromBytes(t);for(let y=0;y<this._k;y++)n[y]=It(n[y]);let d=Ft(f,n);return d=sr(d),d=Ln(i,d),d=nt(d),Fn(d)}_sampleMatrix(e,t){let n=new Array(this._k),i=new Uint8Array(2);for(let f=0,d=0;d<this._k;d++){n[d]=new Array(this._k);for(let y=0;y<this._k;y++){t?(i[0]=d,i[1]=y):(i[0]=y,i[1]=d);let _=In(e,i),K=Xr(_.subarray(0,504),504,256);for(n[d][y]=K[0],f=K[1];f<256;){let m=_.subarray(504,672),F=Xr(m,168,256-f),q=F[0],M=F[1];for(let J=f;J<256;J++)n[d][y][J]=q[J-f];f=f+M;}}}return n}_sampleNoise1(e,t,n){let i=new Array(n);for(let f=0;f<n;f++)i[f]=qr(Mt(this._eta1*256/4,e,t),this._eta1),t++;return i}_sampleNoise2(e,t,n){let i=new Array(n);for(let f=0;f<n;f++)i[f]=qr(Mt(this._eta2*256/4,e,t),this._eta2),t++;return i}_polyvecFromBytes(e){let t=new Array(this._k);for(let n=0;n<this._k;n++)t[n]=zr(e.subarray(n*384,(n+1)*384));return t}_compressU(e,t){let n=new Array(4);for(let i=0,f=0;f<this._k;f++)for(let d=0;d<256/4;d++){for(let y=0;y<4;y++)n[y]=((t[f][4*d+y]<<10)+3329/2)/3329&1023;e[i++]=qe(n[0]>>0),e[i++]=qe(n[0]>>8|n[1]<<2),e[i++]=qe(n[1]>>6|n[2]<<4),e[i++]=qe(n[2]>>4|n[3]<<6),e[i++]=qe(n[3]>>2);}return e}_compressV(e,t){let n=new Uint8Array(8);for(let i=0,f=0;f<256/8;f++){for(let d=0;d<8;d++)n[d]=qe(((t[8*f+d]<<4)+3329/2)/3329)&15;e[i++]=n[0]|n[1]<<4,e[i++]=n[2]|n[3]<<4,e[i++]=n[4]|n[5]<<4,e[i++]=n[6]|n[7]<<4;}return e}_decompressU(e){let t=new Array(this._k);for(let i=0;i<this._k;i++)t[i]=new Array(384);let n=new Array(4);for(let i=0,f=0;f<this._k;f++)for(let d=0;d<256/4;d++){n[0]=me(e[i+0])>>0|me(e[i+1])<<8,n[1]=me(e[i+1])>>2|me(e[i+2])<<6,n[2]=me(e[i+2])>>4|me(e[i+3])<<4,n[3]=me(e[i+3])>>6|me(e[i+4])<<2,i=i+5;for(let y=0;y<4;y++)t[f][4*d+y]=Ne(Ge(n[y]&1023)*Ge(3329)+512>>10);}return t}_decompressV(e){let t=new Array(384);for(let n=0,i=0;i<256/2;i++,n++)t[2*i+0]=Ne(me(e[n]&15)*me(3329)+8>>4),t[2*i+1]=Ne(me(e[n]>>4)*me(3329)+8>>4);return t}};function rr(a,e){let t=Ct.create().update(a);e!==void 0&&t.update(e);let n=t.digest();return [n.subarray(0,32),n.subarray(32,64)]}function Hr(a){return Rt.create().update(a).digest()}function Mn(a,e){let t=ct.create({dkLen:32}).update(a);return e!==void 0&&t.update(e),t.digest()}function In(a,e){return $t.create({dkLen:672}).update(a).update(e).digest()}function nr(a){let e=0,t=0,n=new Uint8Array(384),i=Gr(a);for(let f=0;f<256/2;f++)e=me(i[2*f]),t=me(i[2*f+1]),n[3*f+0]=qe(e>>0),n[3*f+1]=qe(e>>8)|qe(t<<4),n[3*f+2]=qe(t>>4);return n}function zr(a){let e=new Array(384).fill(0);for(let t=0;t<256/2;t++)e[2*t]=Ne((me(a[3*t+0])>>0|me(a[3*t+1])<<8)&4095),e[2*t+1]=Ne((me(a[3*t+1])>>4|me(a[3*t+2])<<4)&4095);return e}function Fn(a){let e=new Uint8Array(32),t,n=Gr(a);for(let i=0;i<256/8;i++){e[i]=0;for(let f=0;f<8;f++)t=((me(n[8*i+f])<<1)+me(3329/2))/me(3329)&1,e[i]|=qe(t<<f);}return e}function On(a){let e=new Array(384).fill(0),t;for(let n=0;n<256/8;n++)for(let i=0;i<8;i++)t=-1*Ne(a[n]>>i&1),e[8*n+i]=t&Ne(3330/2);return e}function Xr(a,e,t){let n=new Array(384).fill(0),i=0,f,d;for(let y=0;i<t&&y+3<=e;)f=(me(a[y]>>0)|me(a[y+1])<<8)&4095,d=(me(a[y+1]>>4)|me(a[y+2])<<4)&4095,y=y+3,f<3329&&(n[i]=f,i=i+1),i<t&&d<3329&&(n[i]=d,i=i+1);return [n,i]}function qr(a,e){let t,n,i,f,d=new Array(384).fill(0);for(let y=0;y<256/8;y++){t=Nr(a.subarray(4*y,a.length)),n=t&1431655765,n=n+(t>>1&1431655765);for(let _=0;_<8;_++)i=Ne(n>>4*_+0&3),f=Ne(n>>4*_+e&3),d[8*y+_]=i-f;}return d}function It(a){for(let e=0,t=1,n=128;n>=2;n>>=1)for(let i=0;i<256;i=e+n){let f=At[t];for(t=t+1,e=i;e<i+n;e++){let d=et(f,a[e+n]);a[e+n]=a[e]-d,a[e]=a[e]+d;}}return a}function et(a,e){return Qr(a*e)}function nt(a){for(let e=0;e<256;e++)a[e]=Yr(a[e]);return a}function Yr(a){let t=(16777216+3329/2)/3329*a>>24;return t=t*3329,a-t}function Qr(a){let t=Ne(jt(a)*62209)*3329;return t=a-t,t>>=16,Ne(t)}function Bn(a){for(let t=0;t<256;t++)a[t]=Qr(jt(a[t])*jt(1353));return a}function Ft(a,e){let t=Jr(a[0],e[0]),n;for(let i=1;i<a.length;i++)n=Jr(a[i],e[i]),t=bt(t,n);return nt(t)}function Jr(a,e){let t,n;for(let i=0;i<256/4;i++)t=Vr(a[4*i+0],a[4*i+1],e[4*i+0],e[4*i+1],At[64+i]),n=Vr(a[4*i+2],a[4*i+3],e[4*i+2],e[4*i+3],-At[64+i]),a[4*i+0]=t[0],a[4*i+1]=t[1],a[4*i+2]=n[0],a[4*i+3]=n[1];return a}function Vr(a,e,t,n,i){let f=new Array(2);return f[0]=et(e,n),f[0]=et(f[0],i),f[0]+=et(a,t),f[1]=et(a,n),f[1]+=et(e,t),f}function bt(a,e){let t=new Array(384);for(let n=0;n<256;n++)t[n]=a[n]+e[n];return t}function Ln(a,e){for(let t=0;t<256;t++)a[t]-=e[t];return a}function sr(a){let e=0;for(let t=0,n=2;n<=128;n<<=1)for(let i=0;i<256;i=e+n){let f=Qt[t];for(t=t+1,e=i;e<i+n;e++){let d=a[e];a[e]=Yr(d+a[e+n]),a[e+n]=d-a[e+n],a[e+n]=et(f,a[e+n]);}}for(e=0;e<256;e++)a[e]=et(a[e],Qt[127]);return a}function Gr(a){for(let e=0;e<256;e++)a[e]-=3329,a[e]+=a[e]>>31&3329;return a}var Ze=class extends ft{constructor(){super(),Object.defineProperty(this,"_k",{enumerable:true,configurable:true,writable:true,value:3}),Object.defineProperty(this,"_du",{enumerable:true,configurable:true,writable:true,value:10}),Object.defineProperty(this,"_dv",{enumerable:true,configurable:true,writable:true,value:4}),Object.defineProperty(this,"_eta1",{enumerable:true,configurable:true,writable:true,value:2}),Object.defineProperty(this,"_eta2",{enumerable:true,configurable:true,writable:true,value:2}),this._skSize=12*this._k*256/8,this._pkSize=this._skSize+32,this._compressedUSize=this._k*this._du*256/8,this._compressedVSize=this._dv*256/8;}};async function ir(a){if(typeof globalThis.crypto?.subtle<"u"){let t=new TextEncoder,n=await globalThis.crypto.subtle.digest("SHA-256",t.encode(a));return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}let{createHash:e}=await import('crypto');return e("sha256").update(a).digest("hex")}function Dn(a){let e=a.length,t=Math.max(256,Nn(e+2)),n=new Uint8Array(t);n[0]=e>>8&255,n[1]=e&255,n.set(a,2);let i=U.default.randomBytes(t-e-2);return n.set(i,e+2),n}function Zr(a){if(a.length<2)return a;let e=a[0]<<8|a[1];return e+2>a.length?a:a.slice(2,2+e)}function Nn(a){let e=1;for(;e<a;)e<<=1;return e}async function lt(a){new TextEncoder;if(typeof globalThis.crypto?.subtle<"u"){let f=new Uint8Array([...a,1]),d=new Uint8Array([...a,2]),y=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",f)),_=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",d));return {nextChainKey:y,messageKey:_}}let{createHash:t}=await import('crypto'),n=new Uint8Array(t("sha256").update(Buffer.from([...a,1])).digest()),i=new Uint8Array(t("sha256").update(Buffer.from([...a,2])).digest());return {nextChainKey:n,messageKey:i}}function Hn(a,e,t){let n={v:3,from:a,msg:e,ts:new Date().toISOString()};return t?.contentType&&t.contentType!=="text/plain"&&(n.ct=t.contentType),t?.messageType&&t.messageType!=="text"&&(n.mt=t.messageType),t?.threadId&&(n.tid=t.threadId),t?.replyTo&&(n.rto=t.replyTo),JSON.stringify(n)}function zn(a){try{let e=JSON.parse(a);if((e.v===2||e.v===3)&&e.from&&e.msg!==void 0){let t={from:e.from,msg:e.msg,ts:e.ts};return e.ct&&(t.contentType=e.ct),e.mt&&(t.messageType=e.mt),e.tid&&(t.threadId=e.tid),e.rto&&(t.replyTo=e.rto),t}return null}catch{return null}}var nn=86,Wr=1,en=2,Xn=4,qn=8,Jn=16,Vn=32;function Yn(a,e){return new Uint8Array([nn,a,e>>8&255,e&255])}function Qn(a){return a.length<4||a[0]!==nn?null:{flags:a[1],ratchetStep:a[2]<<8|a[3],content:a.slice(4)}}async function dt(a,e){let t=new Uint8Array(a.length+e.length);if(t.set(a,0),t.set(e,a.length),typeof globalThis.crypto?.subtle<"u"){let y=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",t.buffer)),_=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",new Uint8Array([...y,1]).buffer)),K=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",new Uint8Array([...y,2]).buffer));return {newRootKey:_,newChainKey:K}}let{createHash:n}=await import('crypto'),i=new Uint8Array(n("sha256").update(Buffer.from(t)).digest()),f=new Uint8Array(n("sha256").update(Buffer.from([...i,1])).digest()),d=new Uint8Array(n("sha256").update(Buffer.from([...i,2])).digest());return {newRootKey:f,newChainKey:d}}async function tn(a,e){if(typeof globalThis.crypto?.subtle<"u"){let n=await globalThis.crypto.subtle.importKey("raw",a.buffer,{name:"HMAC",hash:"SHA-256"},false,["sign"]);return new Uint8Array(await globalThis.crypto.subtle.sign("HMAC",n,e.buffer))}let{createHmac:t}=await import('crypto');return new Uint8Array(t("sha256",Buffer.from(a)).update(Buffer.from(e)).digest())}var Ot=1e3,Gn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Zn(a){if(a.length===0)return "1";let e="",t=BigInt("0x"+Array.from(a).map(n=>n.toString(16).padStart(2,"0")).join(""));for(;t>0n;){let n=t%58n;t=t/58n,e=Gn[Number(n)]+e;}for(let n of a)if(n===0)e="1"+e;else break;return e||"1"}var rn=class a{constructor(e,t){this._signedPrekey=null;this._signedPrekeyId=0;this._pinnedDids=new Set;this._listeners=new Set;this._conversations=new Map;this._offlineQueue=[];this._ratchetStates=new Map;this._identityCache=new Map;this._seenMessageIds=new Set;this._decryptFailCount=0;this._peerDecryptFails=new Map;this._autoResetThreshold=10;this._rpcHandlers=new Map;this._rpcPending=new Map;this._coverTrafficTimer=null;this._rpcListener=null;this._persistMode="memory";this._persistKey=null;this._sendLocks=new Map;this._decryptLock=null;this.did=e.did,this.apiKey=e.apiKey,this.signingKeyPair=e.signingKeyPair,this.encryptionKeyPair=e.encryptionKeyPair,this.baseUrl=t?.baseUrl||"https://api.voidly.ai",this.autoPin=t?.autoPin!==false,this.defaultRetries=t?.retries??3,this.fallbackRelays=t?.fallbackRelays||[],this.paddingEnabled=t?.padding!==false,this.sealedSender=t?.sealedSender||false,this.requireSignatures=t?.requireSignatures||false,this.timeout=t?.timeout??3e4,this.postQuantum=t?.postQuantum!==false,this.deniable=t?.deniable||false,this.doubleRatchet=t?.doubleRatchet!==false,this.jitterMs=t?.jitterMs||0,this.longPoll=t?.longPoll!==false,this.mlkemPublicKey=e.mlkemPublicKey||null,this.mlkemSecretKey=e.mlkemSecretKey||null,this._persistMode=t?.persist||"memory",this._onPersist=t?.onPersist,this._onLoad=t?.onLoad,this._persistPath=t?.persistPath,this._transportPrefs=t?.transport||["sse","long-poll"],this._autoResetThreshold=t?.autoResetThreshold??10,this._onRatchetReset=t?.onRatchetReset;}static async register(e={},t){let n=t?.baseUrl||"https://api.voidly.ai",i=U.default.sign.keyPair(),f=U.default.box.keyPair(),d=t?.postQuantum!==false,y,_;d&&([y,_]=await new Ze().generateKeyPair());let K=U.default.box.keyPair(),m=1,F=U.default.sign.detached(K.publicKey,i.secretKey),q={name:e.name,capabilities:e.capabilities,signing_public_key:(0, g.encodeBase64)(i.publicKey),encryption_public_key:(0, g.encodeBase64)(f.publicKey),signed_prekey_public:(0, g.encodeBase64)(K.publicKey),signed_prekey_signature:(0, g.encodeBase64)(F),signed_prekey_id:m};y&&(q.mlkem_public_key=(0, g.encodeBase64)(y));let M=await fetch(`${n}/v1/agent/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(q)});if(!M.ok){let xe=await M.json().catch(()=>({})),Le=xe.error?.message||xe.error||M.statusText;throw new Error(`Registration failed: ${Le}`)}let J=await M.json(),H=new a({did:J.did,apiKey:J.api_key,signingKeyPair:i,encryptionKeyPair:f,mlkemPublicKey:y,mlkemSecretKey:_},t);return H._signedPrekey=K,H._signedPrekeyId=m,H}static fromCredentials(e,t){if(!e.did||!e.did.startsWith("did:"))throw new Error('Invalid credentials: did must start with "did:"');if(!e.apiKey||e.apiKey.length<8)throw new Error("Invalid credentials: apiKey is missing or too short");if(!e.signingSecretKey||!e.encryptionSecretKey)throw new Error("Invalid credentials: secret keys are required");let n,i;try{n=(0,g.decodeBase64)(e.signingSecretKey),i=(0,g.decodeBase64)(e.encryptionSecretKey);}catch{throw new Error("Invalid credentials: secret keys must be valid base64")}if(n.length!==64)throw new Error(`Invalid credentials: signing key must be 64 bytes, got ${n.length}`);if(i.length!==32)throw new Error(`Invalid credentials: encryption key must be 32 bytes, got ${i.length}`);let f,d;if(e.mlkemPublicKey&&e.mlkemSecretKey)try{f=(0,g.decodeBase64)(e.mlkemPublicKey),d=(0,g.decodeBase64)(e.mlkemSecretKey),(f.length!==1184||d.length!==2400)&&(f=void 0,d=void 0);}catch{}let y=!d&&t?.postQuantum!==false?{...t,postQuantum:false}:t,_=new a({did:e.did,apiKey:e.apiKey,signingKeyPair:U.default.sign.keyPair.fromSecretKey(n),encryptionKeyPair:{publicKey:U.default.box.keyPair.fromSecretKey(i).publicKey,secretKey:i},mlkemPublicKey:f,mlkemSecretKey:d},y);if(e.ratchetStates)for(let[K,m]of Object.entries(e.ratchetStates))try{let F=(0,g.decodeBase64)(m.sendChainKey),q=(0,g.decodeBase64)(m.recvChainKey);if(F.length!==32||q.length!==32)continue;let M={sendChainKey:F,sendStep:m.sendStep||0,recvChainKey:q,recvStep:m.recvStep||0,skippedKeys:new Map};if(m.rootKey)try{M.rootKey=(0,g.decodeBase64)(m.rootKey),M.rootKey.length!==32&&(M.rootKey=void 0);}catch{}if(m.dhSendSecretKey&&m.dhSendPublicKey)try{let J=(0,g.decodeBase64)(m.dhSendSecretKey),H=(0,g.decodeBase64)(m.dhSendPublicKey);J.length===32&&H.length===32&&(M.dhSendKeyPair={publicKey:H,secretKey:J});}catch{}if(m.dhRecvPubKey)try{let J=(0,g.decodeBase64)(m.dhRecvPubKey);J.length===32&&(M.dhRecvPubKey=J);}catch{}if(m.prevSendStep!==void 0&&(M.prevSendStep=m.prevSendStep),M.dhSkippedKeys=new Map,m.skippedKeys&&typeof m.skippedKeys=="object")for(let[J,H]of Object.entries(m.skippedKeys))try{let xe=(0,g.decodeBase64)(H);xe.length===32&&M.skippedKeys.set(Number(J),xe);}catch{}if(m.dhSkippedKeys&&typeof m.dhSkippedKeys=="object")for(let[J,H]of Object.entries(m.dhSkippedKeys))try{let xe=(0,g.decodeBase64)(H);xe.length===32&&M.dhSkippedKeys.set(J,xe);}catch{}_._ratchetStates.set(K,M);}catch{}if(e.peerDecryptFails&&typeof e.peerDecryptFails=="object")for(let[K,m]of Object.entries(e.peerDecryptFails))typeof m=="number"&&m>0&&_._peerDecryptFails.set(K,m);if(e.signedPrekeySecret&&e.signedPrekeyPublic)try{let K=(0,g.decodeBase64)(e.signedPrekeySecret),m=(0,g.decodeBase64)(e.signedPrekeyPublic);K.length===32&&m.length===32&&(_._signedPrekey={publicKey:m,secretKey:K},_._signedPrekeyId=e.signedPrekeyId||0);}catch{}return _}exportCredentials(){let e={};for(let[t,n]of this._ratchetStates){let i={sendChainKey:(0, g.encodeBase64)(n.sendChainKey),sendStep:n.sendStep,recvChainKey:(0, g.encodeBase64)(n.recvChainKey),recvStep:n.recvStep};n.rootKey&&(i.rootKey=(0, g.encodeBase64)(n.rootKey)),n.dhSendKeyPair&&(i.dhSendSecretKey=(0, g.encodeBase64)(n.dhSendKeyPair.secretKey),i.dhSendPublicKey=(0, g.encodeBase64)(n.dhSendKeyPair.publicKey)),n.dhRecvPubKey&&(i.dhRecvPubKey=(0, g.encodeBase64)(n.dhRecvPubKey)),n.prevSendStep!==void 0&&(i.prevSendStep=n.prevSendStep),n.skippedKeys?.size&&(i.skippedKeys=Object.fromEntries([...n.skippedKeys].map(([f,d])=>[String(f),(0, g.encodeBase64)(d)]))),n.dhSkippedKeys?.size&&(i.dhSkippedKeys=Object.fromEntries([...n.dhSkippedKeys].map(([f,d])=>[f,(0, g.encodeBase64)(d)]))),e[t]=i;}return {did:this.did,apiKey:this.apiKey,signingSecretKey:(0, g.encodeBase64)(this.signingKeyPair.secretKey),encryptionSecretKey:(0, g.encodeBase64)(this.encryptionKeyPair.secretKey),signingPublicKey:(0, g.encodeBase64)(this.signingKeyPair.publicKey),encryptionPublicKey:(0, g.encodeBase64)(this.encryptionKeyPair.publicKey),...Object.keys(e).length>0?{ratchetStates:e}:{},...this.mlkemPublicKey?{mlkemPublicKey:(0, g.encodeBase64)(this.mlkemPublicKey)}:{},...this.mlkemSecretKey?{mlkemSecretKey:(0, g.encodeBase64)(this.mlkemSecretKey)}:{},...this._signedPrekey?{signedPrekeySecret:(0, g.encodeBase64)(this._signedPrekey.secretKey),signedPrekeyPublic:(0, g.encodeBase64)(this._signedPrekey.publicKey),signedPrekeyId:this._signedPrekeyId}:{},...this._peerDecryptFails.size>0?{peerDecryptFails:Object.fromEntries(this._peerDecryptFails)}:{}}}_derivePersistKey(){if(this._persistKey)return this._persistKey;let e=(0, g.decodeUTF8)("voidly-persist-v1"),t=new Uint8Array(this.signingKeyPair.secretKey.length+e.length);return t.set(this.signingKeyPair.secretKey,0),t.set(e,this.signingKeyPair.secretKey.length),this._persistKey=U.default.hash(t).slice(0,32),this._persistKey}async _persistRatchetState(){if(this._persistMode!=="memory")try{let e=this.exportCredentials(),t=JSON.stringify(e.ratchetStates||{}),n=this._derivePersistKey(),i=U.default.randomBytes(24),f=U.default.secretbox((0,g.decodeUTF8)(t),i,n),d=JSON.stringify({n:(0,g.encodeBase64)(i),c:(0,g.encodeBase64)(f),v:1});switch(this._persistMode){case "localStorage":typeof localStorage<"u"&&localStorage.setItem(`voidly-ratchet-${this.did}`,d);break;case "indexedDB":await this._idbPut(d);break;case "file":this._persistPath&&await(await import('fs/promises')).writeFile(this._persistPath,d,"utf-8");break;case "relay":await this._timedFetch(`${this.baseUrl}/v1/agent/memory/ratchet/state`,{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({value:d})}).catch(y=>{console.warn(`[voidly] \u26A0 Relay ratchet persist failed: ${y instanceof Error?y.message:y}`);});break;case "custom":this._onPersist&&await this._onPersist(d);break}}catch(e){console.warn(`[voidly] \u26A0 Ratchet state persistence failed (${this._persistMode}): ${e instanceof Error?e.message:e}`);}}async _loadPersistedRatchetState(){if(this._persistMode==="memory")return;let e=null;try{switch(this._persistMode){case "localStorage":typeof localStorage<"u"&&(e=localStorage.getItem(`voidly-ratchet-${this.did}`));break;case "indexedDB":e=await this._idbGet();break;case "file":if(this._persistPath)try{e=await(await import('fs/promises')).readFile(this._persistPath,"utf-8");}catch{}break;case "relay":try{let t=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/ratchet/state`,{headers:{"X-Agent-Key":this.apiKey}});t.ok&&(e=(await t.json()).value);}catch(t){console.warn(`[voidly] \u26A0 Relay ratchet load failed: ${t instanceof Error?t.message:t}`);}break;case "custom":this._onLoad&&(e=await this._onLoad());break}}catch(t){console.warn(`[voidly] \u26A0 Ratchet state load failed (${this._persistMode}): ${t instanceof Error?t.message:t}`);return}if(e)try{let{n:t,c:n}=JSON.parse(e),i=this._derivePersistKey(),f=U.default.secretbox.open((0,g.decodeBase64)(n),(0,g.decodeBase64)(t),i);if(!f)return;let d=JSON.parse((0,g.encodeUTF8)(f));for(let[y,_]of Object.entries(d)){if(!_||typeof _.sendStep!="number"||typeof _.recvStep!="number"||typeof _.sendChainKey!="string"||typeof _.recvChainKey!="string"||_.sendStep<0||_.recvStep<0||_.sendStep>4294967295||_.recvStep>4294967295)continue;if(this._ratchetStates.has(y)){let m=this._ratchetStates.get(y),F=m.sendStep+m.recvStep;if((_.sendStep||0)+(_.recvStep||0)<=F)continue}let K={sendChainKey:(0,g.decodeBase64)(_.sendChainKey),sendStep:_.sendStep,recvChainKey:(0,g.decodeBase64)(_.recvChainKey),recvStep:_.recvStep,skippedKeys:new Map};_.rootKey&&typeof _.rootKey=="string"&&(K.rootKey=(0,g.decodeBase64)(_.rootKey)),typeof _.dhSendSecretKey=="string"&&typeof _.dhSendPublicKey=="string"&&(K.dhSendKeyPair={secretKey:(0,g.decodeBase64)(_.dhSendSecretKey),publicKey:(0,g.decodeBase64)(_.dhSendPublicKey)}),typeof _.dhRecvPubKey=="string"&&(K.dhRecvPubKey=(0,g.decodeBase64)(_.dhRecvPubKey)),typeof _.prevSendStep=="number"&&_.prevSendStep>=0&&(K.prevSendStep=_.prevSendStep),K.sendChainKey.length===32&&K.recvChainKey.length===32&&this._ratchetStates.set(y,K);}}catch(t){console.warn(`[voidly] \u26A0 Ratchet state restore failed (corrupt data, starting fresh): ${t instanceof Error?t.message:t}`);}}async _idbPut(e){if(!(typeof indexedDB>"u"))return new Promise((t,n)=>{let i=indexedDB.open("voidly-agent",1);i.onupgradeneeded=()=>{let f=i.result;f.objectStoreNames.contains("ratchet")||f.createObjectStore("ratchet");},i.onsuccess=()=>{let f=i.result.transaction("ratchet","readwrite");f.objectStore("ratchet").put(e,this.did),f.oncomplete=()=>t(),f.onerror=()=>n(f.error);},i.onerror=()=>n(i.error);})}async _idbGet(){return typeof indexedDB>"u"?null:new Promise((e,t)=>{let n=indexedDB.open("voidly-agent",1);n.onupgradeneeded=()=>{let i=n.result;i.objectStoreNames.contains("ratchet")||i.createObjectStore("ratchet");},n.onsuccess=()=>{let f=n.result.transaction("ratchet","readonly").objectStore("ratchet").get(this.did);f.onsuccess=()=>e(f.result||null),f.onerror=()=>t(f.error);},n.onerror=()=>t(n.error);})}async flushRatchetState(){let e=this._persistMode;e==="memory"&&(this._persistMode="file"),await this._persistRatchetState(),this._persistMode=e;}static async fromCredentialsAsync(e,t){let n=a.fromCredentials(e,t);return await n._loadPersistedRatchetState(),n}get decryptFailCount(){return this._decryptFailCount}get peerDecryptFails(){return Object.fromEntries(this._peerDecryptFails)}resetRatchet(e){let t=`${this.did}:${e}`,n=`${e}:${this.did}`,i=this._ratchetStates.delete(t),f=this._ratchetStates.delete(n);return this._peerDecryptFails.delete(e),(i||f)&&this._persistRatchetState().catch(()=>{}),i||f}get didKey(){let e=new Uint8Array(2+this.signingKeyPair.publicKey.length);return e[0]=237,e[1]=1,e.set(this.signingKeyPair.publicKey,2),`did:key:z${Zn(e)}`}async send(e,t,n={}){let i=`send:${e}`;for(;this._sendLocks.has(i);)await this._sendLocks.get(i);let f;this._sendLocks.set(i,new Promise(d=>{f=d;}));try{return await this._sendInner(e,t,n)}finally{this._sendLocks.delete(i),f();}}async _sendInner(e,t,n={}){let i=n.retries??this.defaultRetries,f=!n.noPadding&&this.paddingEnabled,d=n.sealedSender??this.sealedSender,y=await this.getIdentity(e);if(!y)throw new Error(`Recipient ${e} not found`);this.autoPin&&!n.skipPin&&await this._autoPinKeys(e);let _=(0, g.decodeBase64)(y.encryption_public_key),K=t;d&&(K=Hn(this.did,t,{contentType:n.contentType,messageType:n.messageType,threadId:n.threadId,replyTo:n.replyTo}));let m;f?m=Dn((0, g.decodeUTF8)(K)):m=(0, g.decodeUTF8)(K);let F=`${this.did}:${e}`,q=this._ratchetStates.get(F),M=null,J=null;if(q)q.rootKey&&q.dhSendKeyPair&&(J=q.dhSendKeyPair.publicKey);else {let pe=U.default.box.before(_,this.encryptionKeyPair.secretKey),N;if(this.postQuantum&&y.mlkem_public_key)try{let z=(0,g.decodeBase64)(y.mlkem_public_key),we=new Ze,[ke,ge]=await we.encap(z);M=ke;let _e=new Uint8Array(pe.length+ge.length);_e.set(pe,0),_e.set(ge,pe.length),N=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",_e));}catch{N=pe;}else N=pe;if(this.doubleRatchet){let z=U.default.box.keyPair(),we=U.default.box.before(_,z.secretKey),{newRootKey:ke,newChainKey:ge}=await dt(N,we);J=z.publicKey,q={sendChainKey:ge,sendStep:0,recvChainKey:N,recvStep:0,skippedKeys:new Map,rootKey:ke,dhSendKeyPair:z,dhRecvPubKey:void 0,prevSendStep:0,dhSkippedKeys:new Map};}else q={sendChainKey:N,sendStep:0,recvChainKey:N,recvStep:0,skippedKeys:new Map};this._ratchetStates.set(F,q);}let{nextChainKey:H,messageKey:xe}=await lt(q.sendChainKey);q.sendChainKey=H,q.sendStep++;let Le=q.sendStep,Re=Xn;f&&(Re|=Wr),d&&(Re|=en),M&&(Re|=qn),J&&(Re|=Jn),this.deniable&&(Re|=Vn);let je=Yn(Re,Le),Ce=new Uint8Array(je.length+m.length);Ce.set(je,0),Ce.set(m,je.length);let Me=U.default.randomBytes(U.default.secretbox.nonceLength),Ve=U.default.secretbox(Ce,Me,xe);if(!Ve)throw new Error("Encryption failed");if(this.jitterMs>0){let pe=Math.random()*this.jitterMs;await new Promise(N=>setTimeout(N,pe));}let He={from:this.did,to:e,timestamp:new Date().toISOString(),nonce:(0, g.encodeBase64)(Me),ciphertext_hash:await ir((0, g.encodeBase64)(Ve)),ratchet_step:Le};M&&(He.pq_ciphertext=(0, g.encodeBase64)(M)),J&&(He.dh_ratchet_key=(0, g.encodeBase64)(J),He.pn=q.prevSendStep||0);let ze=JSON.stringify(He),De;if(this.deniable){let pe=U.default.box.before(_,this.encryptionKeyPair.secretKey);De=await tn(pe,(0, g.decodeUTF8)(ze));}else De=U.default.sign.detached((0, g.decodeUTF8)(ze),this.signingKeyPair.secretKey);let E={to:e,ciphertext:(0, g.encodeBase64)(Ve),nonce:(0, g.encodeBase64)(Me),signature:(0, g.encodeBase64)(De),envelope:ze,ttl:n.ttl};d||(E.content_type=n.contentType||"text/plain",E.message_type=n.messageType||"text",E.thread_id=n.threadId,E.reply_to=n.replyTo);try{await this._persistRatchetState();}catch{}let P=[this.baseUrl,...this.fallbackRelays],he=null;for(let pe of P)try{let N=await this._fetchWithRetry(`${pe}/v1/agent/send/encrypted`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(E)},{maxRetries:i,baseDelay:500,maxDelay:1e4});return {id:N.id,from:N.from,to:N.to,timestamp:N.timestamp,expiresAt:N.expires_at||N.expiresAt,encrypted:N.encrypted,clientSide:N.client_side||N.clientSide}}catch(N){if(he=N instanceof Error?N:new Error(String(N)),he.message.includes("(4"))break}throw he&&!he.message.includes("(4")&&this._offlineQueue.push({recipientDid:e,message:t,options:n,timestamp:Date.now()}),he||new Error("Send failed")}async receive(e={}){let t=new URLSearchParams;e.since&&t.set("since",e.since),e.limit&&t.set("limit",String(e.limit)),e.from&&t.set("from",e.from),e.threadId&&t.set("thread_id",e.threadId),e.contentType&&t.set("content_type",e.contentType),e.messageType&&t.set("message_type",e.messageType),e.unreadOnly&&t.set("unread","true");let n=await this._resilientFetch(`/v1/agent/receive/raw?${t}`,{headers:{"X-Agent-Key":this.apiKey}});if(!n.ok){let y=await n.json().catch(()=>({}));throw new Error(`Receive failed: ${y.error?.message||y.error||n.statusText}`)}let i=await n.json(),{decrypted:f,failedIds:d}=await this._decryptMessages(i.messages);if(d.length>0)try{await this.markReadBatch(d);}catch{for(let y of d)try{await this.markRead(y);}catch{}}return f}async _decryptMessages(e){for(;this._decryptLock;)await this._decryptLock;let t;this._decryptLock=new Promise(n=>{t=n;});try{return await this._decryptMessagesInner(e)}finally{this._decryptLock=null,t();}}async _decryptMessagesInner(e){let t=[],n=[],i=new Set;for(let f of e)try{if(this._seenMessageIds.has(f.id)){n.push(f.id);continue}let d,y=null;if(f.sender_encryption_key)d=(0,g.decodeBase64)(f.sender_encryption_key),f.sender_signing_key&&(y=(0,g.decodeBase64)(f.sender_signing_key));else if(f.envelope){let E=JSON.parse(f.envelope),P=await this.getIdentity(E.from);if(!P){n.push(f.id);continue}d=(0,g.decodeBase64)(P.encryption_public_key),P.signing_public_key&&(y=(0,g.decodeBase64)(P.signing_public_key));}else {n.push(f.id);continue}let _=(0,g.decodeBase64)(f.ciphertext),K=(0,g.decodeBase64)(f.nonce),m=null,F=0,q=null,M=null,J=0;if(f.envelope)try{let E=JSON.parse(f.envelope);typeof E.ratchet_step=="number"&&Number.isInteger(E.ratchet_step)&&E.ratchet_step>=0&&E.ratchet_step<=4294967295&&(F=E.ratchet_step),typeof E.pq_ciphertext=="string"&&E.pq_ciphertext.length<=65536&&(q=E.pq_ciphertext),typeof E.dh_ratchet_key=="string"&&E.dh_ratchet_key.length<=256&&(M=E.dh_ratchet_key),typeof E.pn=="number"&&Number.isInteger(E.pn)&&E.pn>=0&&E.pn<=4294967295&&(J=E.pn);}catch{}if(F>0){let E=`${f.from}:${this.did}`,P=this._ratchetStates.get(E);if(P){if(M&&P.rootKey){let N=(0,g.decodeBase64)(M),z=P.dhRecvPubKey;if(!z||(0,g.encodeBase64)(N)!==(0,g.encodeBase64)(z)){if(J>P.recvStep){let Ie=P.recvChainKey;for(let Te=P.recvStep+1;Te<=J&&Te-P.recvStep<=Ot;Te++){let{nextChainKey:$e,messageKey:V}=await lt(Ie),ue=`${z?(0,g.encodeBase64)(z):"init"}:${Te}`;for(P.dhSkippedKeys||(P.dhSkippedKeys=new Map),P.dhSkippedKeys.set(ue,V),Ie=$e;P.dhSkippedKeys.size>Ot;){let Je=P.dhSkippedKeys.keys().next().value;if(Je!==void 0)P.dhSkippedKeys.delete(Je);else break}}}P.dhRecvPubKey=N;let we=P.dhSendKeyPair||this.encryptionKeyPair,ke=U.default.box.before(N,we.secretKey),ge=await dt(P.rootKey,ke);P.rootKey=ge.newRootKey,P.recvChainKey=ge.newChainKey,P.recvStep=0,P.prevSendStep=P.sendStep,P.dhSendKeyPair=U.default.box.keyPair(),P.sendStep=0;let _e=U.default.box.before(N,P.dhSendKeyPair.secretKey),ve=await dt(P.rootKey,_e);P.rootKey=ve.newRootKey,P.sendChainKey=ve.newChainKey;}}}else {let N=U.default.box.before(d,this.encryptionKeyPair.secretKey),z;if(q&&this.mlkemSecretKey)try{let ke=(0,g.decodeBase64)(q),_e=await new Ze().decap(ke,this.mlkemSecretKey),ve=new Uint8Array(N.length+_e.length);ve.set(N,0),ve.set(_e,N.length),z=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",ve));}catch{z=N;}else z=N;if(M&&this.doubleRatchet){let ke=(0,g.decodeBase64)(M),ge=U.default.box.before(ke,this.encryptionKeyPair.secretKey),{newRootKey:_e,newChainKey:ve}=await dt(z,ge);P={sendChainKey:z,sendStep:0,recvChainKey:ve,recvStep:0,skippedKeys:new Map,rootKey:_e,dhSendKeyPair:void 0,dhRecvPubKey:ke,prevSendStep:0,dhSkippedKeys:new Map};}else P={sendChainKey:z,sendStep:0,recvChainKey:z,recvStep:0,skippedKeys:new Map};this._ratchetStates.set(E,P);let we=`${this.did}:${f.from}`;this._ratchetStates.delete(we);}let he=F,pe=M?`${M}:${he}`:`init:${he}`;if(P.dhSkippedKeys?.has(pe)){let N=P.dhSkippedKeys.get(pe);m=U.default.secretbox.open(_,K,N),P.dhSkippedKeys.delete(pe);}else if(P.skippedKeys.has(he)){let N=P.skippedKeys.get(he);m=U.default.secretbox.open(_,K,N),P.skippedKeys.delete(he);}else if(he>P.recvStep)if(he-P.recvStep>Ot){this._decryptFailCount++,n.push(f.id);let z=f.from||"unknown",we=this._peerDecryptFails.get(z)||0;this._peerDecryptFails.set(z,we+1),this._autoResetThreshold>0&&we+1>=this._autoResetThreshold&&(this.resetRatchet(z),i.add(z),this._onRatchetReset?.(z,we+1));continue}else {let z=P.recvChainKey;for(let ge=P.recvStep+1;ge<he;ge++){let{nextChainKey:_e,messageKey:ve}=await lt(z);for(P.skippedKeys.set(ge,ve),z=_e;P.skippedKeys.size>Ot;){let Ie=P.skippedKeys.keys().next().value;if(Ie!==void 0)P.skippedKeys.delete(Ie);else break}}let{nextChainKey:we,messageKey:ke}=await lt(z);P.recvChainKey=we,P.recvStep=he,m=U.default.secretbox.open(_,K,ke);}if(!m&&M&&this.doubleRatchet&&P)try{let N=U.default.box.before(d,this.encryptionKeyPair.secretKey),z;if(q&&this.mlkemSecretKey)try{let V=(0,g.decodeBase64)(q),Je=await new Ze().decap(V,this.mlkemSecretKey),Ye=new Uint8Array(N.length+Je.length);Ye.set(N,0),Ye.set(Je,N.length),z=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",Ye));}catch{z=N;}else z=N;let we=(0,g.decodeBase64)(M),ke=U.default.box.before(we,this.encryptionKeyPair.secretKey),{newRootKey:ge,newChainKey:_e}=await dt(z,ke),ve=_e;for(let V=1;V<F;V++){let{nextChainKey:ue}=await lt(ve);ve=ue;}let{nextChainKey:Ie,messageKey:Te}=await lt(ve),$e=U.default.secretbox.open(_,K,Te);if($e){m=$e,P.recvChainKey=Ie,P.recvStep=F,P.rootKey=ge,P.dhRecvPubKey=we,P.prevSendStep=P.sendStep,P.dhSendKeyPair=U.default.box.keyPair(),P.sendStep=0;let V=U.default.box.before(we,P.dhSendKeyPair.secretKey),ue=await dt(P.rootKey,V);P.rootKey=ue.newRootKey,P.sendChainKey=ue.newChainKey,P.dhSkippedKeys&&P.dhSkippedKeys.clear(),P.skippedKeys&&P.skippedKeys.clear();let Je=`${this.did}:${f.from}`;this._ratchetStates.delete(Je);}}catch{}if(!m&&P){this.resetRatchet(f.from),i.add(f.from),this._onRatchetReset?.(f.from,1),n.push(f.id);continue}m||(m=U.default.box.open(_,K,d,this.encryptionKeyPair.secretKey));}else m=U.default.box.open(_,K,d,this.encryptionKeyPair.secretKey);if(!m){this._decryptFailCount++,n.push(f.id);let E=f.from||"unknown",P=this._peerDecryptFails.get(E)||0;this._peerDecryptFails.set(E,P+1),this._autoResetThreshold>0&&P+1>=this._autoResetThreshold&&(this.resetRatchet(E),i.add(E),this._onRatchetReset?.(E,P+1));continue}{let E=f.from||"unknown";this._peerDecryptFails.has(E)&&this._peerDecryptFails.delete(E);}let H=m,xe=!1,Le=!1,Re=Qn(m);if(Re&&(xe=!!(Re.flags&Wr),Le=!!(Re.flags&en),H=Re.content),xe)H=Zr(H);else if(!Re&&m.length>=256&&(m.length&m.length-1)===0){let E=Zr(m);E.length<m.length&&(H=E);}let je=(0,g.encodeUTF8)(H),Ce=f.from,Me,Ve,He,ze;if(Le||!Re){let E=zn(je);E&&(je=E.msg,Ce=E.from,Me=E.contentType,Ve=E.messageType,He=E.threadId,ze=E.replyTo);}let De=!1;try{let E=(0,g.decodeBase64)(f.signature),P=f.envelope||JSON.stringify({from:Ce,to:f.to,timestamp:f.timestamp,nonce:f.nonce,ciphertext_hash:await ir(f.ciphertext)});if(E.length===32){let he=U.default.box.before(d,this.encryptionKeyPair.secretKey),pe=await tn(he,(0,g.decodeUTF8)(P));if(pe.length===E.length){let N=0;for(let z=0;z<pe.length;z++)N|=pe[z]^E[z];De=N===0;}}else y&&(De=U.default.sign.detached.verify((0,g.decodeUTF8)(P),E,y));}catch{De=!1;}if(this.requireSignatures&&!De){this._decryptFailCount++,n.push(f.id);let E=f.from||"unknown",P=this._peerDecryptFails.get(E)||0;this._peerDecryptFails.set(E,P+1);continue}if(this._seenMessageIds.add(f.id),this._seenMessageIds.size>1e4){let E=this._seenMessageIds.values();for(let P=0;P<1e3;P++){let he=E.next().value;he!==void 0&&this._seenMessageIds.delete(he);}}t.push({id:f.id,from:Ce,to:f.to,content:je,contentType:Me||f.content_type||"text/plain",messageType:Ve||f.message_type||"text",threadId:He||f.thread_id||null,replyTo:ze||f.reply_to||null,signatureValid:De,timestamp:f.timestamp,expiresAt:f.expires_at});}catch{this._decryptFailCount++,n.push(f.id);let d=f.from||"unknown",y=this._peerDecryptFails.get(d)||0;this._peerDecryptFails.set(d,y+1),this._autoResetThreshold>0&&y+1>=this._autoResetThreshold&&(this.resetRatchet(d),i.add(d),this._onRatchetReset?.(d,y+1));}return (t.length>0||this._peerDecryptFails.size>0)&&this._persistRatchetState().catch(()=>{}),{decrypted:t,failedIds:n}}async deleteMessage(e){return (await this._timedFetch(`${this.baseUrl}/v1/agent/messages/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}})).ok}async getProfile(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/profile`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error("Failed to fetch profile");return await e.json()}async updateProfile(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/profile`,{method:"PATCH",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Profile update failed: ${n.error||t.statusText}`)}}async getIdentity(e){let t=this._identityCache.get(e);if(t&&Date.now()-t.cachedAt<3e5)return t.profile;let n=await this._resilientFetch(`/v1/agent/identity/${e}`);if(!n.ok)return null;let i=await n.json();if(this._identityCache.set(e,{profile:i,cachedAt:Date.now()}),this._identityCache.size>500){let f=this._identityCache.size-400,d=this._identityCache.keys();for(let y=0;y<f;y++){let _=d.next().value;_!==void 0&&this._identityCache.delete(_);}}return i}async discover(e={}){let t=new URLSearchParams;e.query&&t.set("query",e.query),e.capability&&t.set("capability",e.capability),e.limit&&t.set("limit",String(e.limit));let n=await this._resilientFetch(`/v1/agent/discover?${t}`);return n.ok?(await n.json()).agents:[]}async stats(){return await(await this._timedFetch(`${this.baseUrl}/v1/agent/stats`)).json()}async registerWebhook(e,t={}){let n=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({webhook_url:e,events:t.events})});if(!n.ok){let i=await n.json().catch(()=>({}));throw new Error(`Webhook registration failed: ${i.error?.message||i.error||n.statusText}`)}return await n.json()}async listWebhooks(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks`,{headers:{"X-Agent-Key":this.apiKey}});return e.ok?(await e.json()).webhooks:[]}async deleteWebhook(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Webhook delete failed: ${n.error||t.statusText}`)}}static async verifyWebhookSignature(e,t,n){let i=new TextEncoder;if(typeof globalThis.crypto?.subtle<"u"){let _=await globalThis.crypto.subtle.importKey("raw",i.encode(n),{name:"HMAC",hash:"SHA-256"},false,["sign"]),K=await globalThis.crypto.subtle.sign("HMAC",_,i.encode(e)),m=`sha256=${Array.from(new Uint8Array(K)).map(J=>J.toString(16).padStart(2,"0")).join("")}`;if(t.length!==m.length)return false;let F=i.encode(t),q=i.encode(m),M=0;for(let J=0;J<F.length;J++)M|=F[J]^q[J];return M===0}let{createHmac:f,timingSafeEqual:d}=await import('crypto'),y=`sha256=${f("sha256",n).update(e).digest("hex")}`;return t.length!==y.length?false:d(Buffer.from(t),Buffer.from(y))}async rotateKeys(){let e=U.default.sign.keyPair(),t=U.default.box.keyPair(),n=U.default.box.keyPair(),i=(this._signedPrekeyId||0)+1,f=U.default.sign.detached(n.publicKey,e.secretKey),d={signing_public_key:(0, g.encodeBase64)(e.publicKey),encryption_public_key:(0, g.encodeBase64)(t.publicKey),signed_prekey_public:(0, g.encodeBase64)(n.publicKey),signed_prekey_signature:(0, g.encodeBase64)(f),signed_prekey_id:i},y=null;if(this.postQuantum&&this.mlkemPublicKey){let K=new Ze,[m,F]=await K.generateKeyPair();d.mlkem_public_key=(0, g.encodeBase64)(m),y=F;}if(!(await this._timedFetch(`${this.baseUrl}/v1/agent/rotate-keys`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(d)})).ok)throw new Error("Key rotation failed");this.signingKeyPair=e,this.encryptionKeyPair=t,this._signedPrekey=n,this._signedPrekeyId=i,y&&(this.mlkemSecretKey=y,this.mlkemPublicKey=(0, g.decodeBase64)(d.mlkem_public_key)),this._identityCache.clear(),this._pinnedDids.clear(),await this.uploadPrekeys(10);}async claimUsername(e){let t=await this._resilientFetch("/v1/agent/username",{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({username:e})}),n=await t.json();if(!t.ok)throw new Error(n.error||`Claim failed (${t.status})`);return n}async changeUsername(e){let t=await this._resilientFetch("/v1/agent/username",{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({username:e})}),n=await t.json();if(!t.ok)throw new Error(n.error||`Change failed (${t.status})`);return n}async releaseUsername(){let e=await this._resilientFetch("/v1/agent/username",{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok){let t=await e.json();throw new Error(t.error||`Release failed (${e.status})`)}}async getMyUsername(){let e=await this._resilientFetch("/v1/agent/username",{method:"GET",headers:{"X-Agent-Key":this.apiKey}}),t=await e.json();return e.ok&&t.username||null}static async resolveUsername(e,t="https://api.voidly.ai"){let n=e.toLowerCase().replace(/^@/,""),i=new AbortController,f=setTimeout(()=>i.abort(),3e4);try{let d=await fetch(`${t}/v1/agent/username/${encodeURIComponent(n)}`,{signal:i.signal});return d.ok?await d.json():null}catch{return null}finally{clearTimeout(f);}}async createChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Channel creation failed: ${n.error||t.statusText}`)}return await t.json()}async listChannels(e={}){let t=new URLSearchParams;e.topic&&t.set("topic",e.topic),e.query&&t.set("q",e.query),e.mine&&t.set("mine","true"),e.limit&&t.set("limit",String(e.limit));let n=await this._timedFetch(`${this.baseUrl}/v1/agent/channels?${t}`,{headers:e.mine?{"X-Agent-Key":this.apiKey}:{}});if(!n.ok){let f=await n.text().catch(()=>"");throw new Error(`listChannels failed: ${n.status} ${f.slice(0,200)}`)}return (await n.json()).channels}async joinChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/join`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Join failed: ${n.error||t.statusText}`)}return await t.json()}async leaveChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/leave`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Leave failed: ${n.error||t.statusText}`)}}async postToChannel(e,t,n){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message:t,reply_to:n})});if(!i.ok){let f=await i.json().catch(()=>({}));throw new Error(`Post failed: ${f.error||i.statusText}`)}return await i.json()}async readChannel(e,t={}){let n=new URLSearchParams;t.since&&n.set("since",t.since),t.before&&n.set("before",t.before),t.limit&&n.set("limit",String(t.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages?${n}`,{headers:{"X-Agent-Key":this.apiKey}});if(!i.ok){let f=await i.json().catch(()=>({}));throw new Error(`Read failed: ${f.error||i.statusText}`)}return await i.json()}async deactivate(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/deactivate`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok){let t=await e.json().catch(()=>({}));throw new Error(`Deactivate failed: ${t.error||e.statusText}`)}}async registerCapability(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({name:e.name,description:e.description,input_schema:e.inputSchema,output_schema:e.outputSchema,version:e.version})});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Capability registration failed: ${n.error||t.statusText}`)}return await t.json()}async listCapabilities(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities`,{headers:{"X-Agent-Key":this.apiKey}});return e.ok?(await e.json()).capabilities:[]}async searchCapabilities(e={}){let t=new URLSearchParams;e.query&&t.set("q",e.query),e.name&&t.set("name",e.name),e.limit&&t.set("limit",String(e.limit));let n=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities/search?${t}`);return n.ok?(await n.json()).results:[]}async deleteCapability(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Delete failed: ${n.error||t.statusText}`)}}async createTask(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${e.to}`);if(!t.ok)throw new Error("Recipient agent not found");let n=await t.json(),i=(0, g.decodeBase64)(n.encryption_public_key),f=(0, g.decodeUTF8)(JSON.stringify(e.input)),d=U.default.randomBytes(U.default.box.nonceLength),y=U.default.box(f,d,i,this.encryptionKeyPair.secretKey),_=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({to:e.to,capability:e.capability,encrypted_input:(0, g.encodeBase64)(y),input_nonce:(0, g.encodeBase64)(d),priority:e.priority||"normal",expires_in:e.expiresIn})});if(!_.ok){let K=await _.json().catch(()=>({}));throw new Error(`Task creation failed: ${K.error||_.statusText}`)}return await _.json()}async listTasks(e={}){let t=new URLSearchParams;e.role&&t.set("role",e.role),e.status&&t.set("status",e.status),e.capability&&t.set("capability",e.capability),e.limit&&t.set("limit",String(e.limit));let n=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks?${t}`,{headers:{"X-Agent-Key":this.apiKey}});return n.ok?(await n.json()).tasks:[]}async getTask(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/${e}`,{headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Get task failed: ${n.error||t.statusText}`)}return await t.json()}async updateTask(e,t){let n={};if(t.status&&(n.status=t.status),t.rating!==void 0&&(n.rating=t.rating),t.ratingComment&&(n.rating_comment=t.ratingComment),t.output&&(t.status==="completed"||t.status==="failed")){let d=(await this.getTask(e)).from,y=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${d}`);if(y.ok){let _=await y.json(),K=(0, g.decodeBase64)(_.encryption_public_key),m=(0, g.decodeUTF8)(JSON.stringify(t.output)),F=U.default.randomBytes(U.default.box.nonceLength),q=U.default.box(m,F,K,this.encryptionKeyPair.secretKey),M=U.default.sign.detached(m,this.signingKeyPair.secretKey);n.encrypted_output=(0, g.encodeBase64)(q),n.output_nonce=(0, g.encodeBase64)(F),n.output_signature=(0, g.encodeBase64)(M);}}let i=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(n)});if(!i.ok){let f=await i.json().catch(()=>({}));throw new Error(`Task update failed: ${f.error||i.statusText}`)}return await i.json()}decryptTaskInput(e,t){try{let n=(0,g.decodeBase64)(e.encrypted_input),i=(0,g.decodeBase64)(e.input_nonce),f=U.default.box.open(n,i,t,this.encryptionKeyPair.secretKey);return f?JSON.parse((0,g.encodeUTF8)(f)):null}catch{return null}}decryptTaskOutput(e,t){try{let n=(0,g.decodeBase64)(e.encrypted_output),i=(0,g.decodeBase64)(e.output_nonce),f=U.default.box.open(n,i,t,this.encryptionKeyPair.secretKey);return f?JSON.parse((0,g.encodeUTF8)(f)):null}catch{return null}}async attest(e){let t=e.timestamp||new Date().toISOString(),n=e.claimType+JSON.stringify(e.claimData)+t,i=(0, g.decodeUTF8)(n),f=U.default.sign.detached(i,this.signingKeyPair.secretKey),d=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({claim_type:e.claimType,claim_data:e.claimData,signature:(0, g.encodeBase64)(f),timestamp:t,country:e.country,domain:e.domain,confidence:e.confidence,expires_in:e.expiresIn})});if(!d.ok){let y=await d.json().catch(()=>({}));throw new Error(`Attestation failed: ${y.error||d.statusText}`)}return await d.json()}async corroborate(e,t,n){let i=e+t,f=(0, g.decodeUTF8)(i),d=U.default.sign.detached(f,this.signingKeyPair.secretKey),y=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/${e}/corroborate`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({vote:t,signature:(0, g.encodeBase64)(d),comment:n})});if(!y.ok){let _=await y.json().catch(()=>({}));throw new Error(`Corroboration failed: ${_.error||y.statusText}`)}return await y.json()}async queryAttestations(e={}){let t=new URLSearchParams;e.country&&t.set("country",e.country),e.domain&&t.set("domain",e.domain),e.type&&t.set("type",e.type),e.agent&&t.set("agent",e.agent),e.minConsensus!==void 0&&t.set("min_consensus",String(e.minConsensus)),e.since&&t.set("since",e.since),e.limit&&t.set("limit",String(e.limit));let n=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations?${t}`);return n.ok?(await n.json()).attestations:[]}async getAttestation(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/${e}`);if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Get attestation failed: ${n.error||t.statusText}`)}return await t.json()}async getConsensus(e){let t=new URLSearchParams;e.country&&t.set("country",e.country),e.domain&&t.set("domain",e.domain),e.type&&t.set("type",e.type);let n=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/consensus?${t}`);return n.ok?(await n.json()).consensus:[]}async inviteToChannel(e,t,n){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/invite`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({did:t,message:n?.message,expires_hours:n?.expiresHours})});if(!i.ok){let f=await i.json().catch(()=>({}));throw new Error(`Invite failed: ${f.error||i.statusText}`)}return await i.json()}async listInvites(e="pending"){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/invites?status=${e}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.text().catch(()=>"");throw new Error(`listInvites failed: ${t.status} ${i.slice(0,200)}`)}return (await t.json()).invites}async respondToInvite(e,t){let n=await this._timedFetch(`${this.baseUrl}/v1/agent/invites/${e}/respond`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({action:t})});if(!n.ok){let i=await n.json().catch(()=>({}));throw new Error(`Invite response failed: ${i.error||n.statusText}`)}return await n.json()}async getTrustScore(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/trust/${e}`);if(!t.ok){let n=await t.json().catch(()=>({}));throw new Error(`Trust score failed: ${n.error||t.statusText}`)}return await t.json()}async getTrustLeaderboard(e){let t=new URLSearchParams;e?.limit&&t.set("limit",e.limit.toString()),e?.minLevel&&t.set("min_level",e.minLevel);let n=await this._timedFetch(`${this.baseUrl}/v1/agent/trust/leaderboard?${t}`);return n.ok?(await n.json()).leaderboard:[]}async markRead(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/${e}/read`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Failed to mark message as read: ${t.status}`);return await t.json()}async markReadBatch(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/read-batch`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message_ids:e})});if(!t.ok)throw new Error(`Failed to batch mark messages as read: ${t.status}`);return await t.json()}async getUnreadCount(e){let t=new URLSearchParams;e&&t.set("from",e);let n=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/unread-count?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!n.ok)throw new Error(`Failed to get unread count: ${n.status}`);return await n.json()}async broadcastTask(e){let t=(0, g.decodeUTF8)(e.input),n=U.default.randomBytes(U.default.secretbox.nonceLength),i=U.default.secretbox(t,n,U.default.box.before(this.encryptionKeyPair.publicKey,this.encryptionKeyPair.secretKey)),f=U.default.sign.detached(t,this.signingKeyPair.secretKey),d=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcast`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({capability:e.capability,encrypted_input:(0, g.encodeBase64)(i),input_nonce:(0, g.encodeBase64)(n),input_signature:(0, g.encodeBase64)(f),priority:e.priority,max_agents:e.maxAgents,min_trust_level:e.minTrustLevel,expires_in:e.expiresIn})});if(!d.ok){let y=await d.json().catch(()=>({}));throw new Error(y.error||`Broadcast failed: ${d.status}`)}return await d.json()}async listBroadcasts(e){let t=new URLSearchParams;e&&t.set("status",e);let n=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcasts?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});return n.ok?(await n.json()).broadcasts:[]}async getBroadcast(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcasts/${e}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Failed to get broadcast: ${t.status}`);return await t.json()}async getAnalytics(e){let t=new URLSearchParams;e&&t.set("period",e);let n=await this._timedFetch(`${this.baseUrl}/v1/agent/analytics?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!n.ok)throw new Error(`Failed to get analytics: ${n.status}`);return await n.json()}static verifyAttestation(e,t){try{let n=e.claim_type+JSON.stringify(e.claim_data)+e.timestamp,i=(0,g.decodeUTF8)(n),f=(0,g.decodeBase64)(e.signature),d=(0,g.decodeBase64)(t);return U.default.sign.detached.verify(i,f,d)}catch{return false}}async memorySet(e,t,n,i){let f=JSON.stringify(n),d=(0, g.decodeUTF8)(f),y=U.default.randomBytes(U.default.secretbox.nonceLength),_=new Uint8Array([...this.encryptionKeyPair.secretKey,77,69,77]),K;if(typeof globalThis.crypto?.subtle<"u")K=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",_));else {let{createHash:q}=await import('crypto');K=new Uint8Array(q("sha256").update(Buffer.from(_)).digest());}let m=U.default.secretbox(d,y,K),F=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({value:(0, g.encodeBase64)(m),value_type:`encrypted:${i?.valueType||(typeof n=="object"?"json":typeof n)}`,ttl:i?.ttl,client_nonce:(0, g.encodeBase64)(y)})});if(!F.ok)throw new Error(`Memory set failed: ${F.status} ${await F.text()}`);return F.json()}async memoryGet(e,t){let n=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:{"X-Agent-Key":this.apiKey}});if(n.status===404)return null;if(!n.ok)throw new Error(`Memory get failed: ${n.status} ${await n.text()}`);let i=await n.json();if(i.value_type?.startsWith("encrypted:")&&i.client_nonce)try{let f=new Uint8Array([...this.encryptionKeyPair.secretKey,77,69,77]),d;if(typeof globalThis.crypto?.subtle<"u")d=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",f));else {let{createHash:m}=await import('crypto');d=new Uint8Array(m("sha256").update(Buffer.from(f)).digest());}let y=(0,g.decodeBase64)(i.value),_=(0,g.decodeBase64)(i.client_nonce),K=U.default.secretbox.open(y,_,d);K&&(i.value=JSON.parse((0,g.encodeUTF8)(K)),i.value_type=i.value_type.replace("encrypted:",""));}catch{}return i}async memoryDelete(e,t){let n=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!n.ok)throw new Error(`Memory delete failed: ${n.status} ${await n.text()}`);return n.json()}async memoryList(e,t){let n=e||"default",i=new URLSearchParams;t?.prefix&&i.set("prefix",t.prefix),t?.limit&&i.set("limit",String(t.limit));let f=i.toString()?`?${i.toString()}`:"",d=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(n)}${f}`,{headers:{"X-Agent-Key":this.apiKey}});if(!d.ok)throw new Error(`Memory list failed: ${d.status} ${await d.text()}`);return d.json()}async memoryNamespaces(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/memory`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`Memory namespaces failed: ${e.status} ${await e.text()}`);return e.json()}async exportData(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/export`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({include_messages:e?.includeMessages,include_channels:e?.includeChannels,include_tasks:e?.includeTasks,include_attestations:e?.includeAttestations,include_memory:e?.includeMemory,include_trust:e?.includeTrust})});if(!t.ok)throw new Error(`Export failed: ${t.status} ${await t.text()}`);return t.json()}async listExports(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/exports`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`List exports failed: ${e.status} ${await e.text()}`);return e.json()}async getRelayInfo(){let e=await this._timedFetch(`${this.baseUrl}/v1/relay/info`);if(!e.ok)throw new Error(`Relay info failed: ${e.status} ${await e.text()}`);return e.json()}async getRelayPeers(){let e=await this._timedFetch(`${this.baseUrl}/v1/relay/peers`);if(!e.ok)throw new Error(`Relay peers failed: ${e.status} ${await e.text()}`);return e.json()}async routeMessage(e,t,n){let i=await this.getIdentity(e);if(!i)throw new Error(`Recipient ${e} not found`);let f=(0, g.decodeBase64)(i.encryption_public_key),d=U.default.randomBytes(U.default.box.nonceLength),y=U.default.box((0, g.decodeUTF8)(t),d,f,this.encryptionKeyPair.secretKey);if(!y)throw new Error("Encryption failed");let _=(0, g.decodeUTF8)(JSON.stringify({from:this.did,to:e,nonce:(0, g.encodeBase64)(d),ciphertext_hash:await ir((0, g.encodeBase64)(y))})),K=U.default.sign.detached(_,this.signingKeyPair.secretKey),m=await this._timedFetch(`${this.baseUrl}/v1/relay/route`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({to:e,ciphertext:(0, g.encodeBase64)(y),nonce:(0, g.encodeBase64)(d),signature:(0, g.encodeBase64)(K),content_type:n?.contentType||"text/plain",thread_id:n?.threadId})});if(!m.ok)throw new Error(`Route failed: ${m.status} ${await m.text()}`);return m.json()}async ping(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/ping`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`Ping failed: ${e.status}`);return e.json()}async checkOnline(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/ping/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Ping check failed: ${t.status}`);return t.json()}async pinKeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/pin`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({did:e})});if(!t.ok)throw new Error(`Key pin failed: ${t.status}`);return t.json()}async listPinnedKeys(e){let t=new URLSearchParams;e?.status&&t.set("status",e.status);let n=t.toString()?`?${t.toString()}`:"",i=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/pins${n}`,{headers:{"X-Agent-Key":this.apiKey}});if(!i.ok)throw new Error(`List pins failed: ${i.status}`);return i.json()}async verifyKeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/verify/${encodeURIComponent(e)}`,{headers:{"X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Key verify failed: ${t.status}`);return t.json()}async uploadPrekeys(e=20){let t=[];for(let d=0;d<e;d++){let y=U.default.box.keyPair();t.push({id:Date.now()+d,public_key:(0, g.encodeBase64)(y.publicKey),secretKey:y.secretKey});}let n=U.default.box.keyPair();this._signedPrekeyId++;let i=U.default.sign.detached(n.publicKey,this.signingKeyPair.secretKey);this._signedPrekey=n;let f=await this._timedFetch(`${this.baseUrl}/v1/agent/prekeys`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({prekeys:t.map(d=>({id:d.id,public_key:d.public_key})),signed_prekey:{public_key:(0, g.encodeBase64)(n.publicKey),signature:(0, g.encodeBase64)(i),id:this._signedPrekeyId}})});if(!f.ok)throw new Error(`Prekey upload failed: ${f.status}`);return await f.json()}async fetchPrekeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/prekeys/${encodeURIComponent(e)}`);return t.ok?await t.json():null}async createEncryptedChannel(e){let t=U.default.randomBytes(32),n=await this._timedFetch(`${this.baseUrl}/v1/agent/channels`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!n.ok){let y=await n.json().catch(()=>({}));throw new Error(`Channel creation failed: ${y.error||n.statusText}`)}let i=await n.json(),f=U.default.randomBytes(U.default.box.nonceLength);U.default.box(t,f,this.encryptionKeyPair.publicKey,this.encryptionKeyPair.secretKey);return await this.memorySet("channel-keys",i.id,{key:(0, g.encodeBase64)(t),nonce:(0, g.encodeBase64)(f)}),{...i,channelKey:t}}async postEncrypted(e,t,n){let i=U.default.randomBytes(U.default.secretbox.nonceLength),f=U.default.secretbox((0, g.decodeUTF8)(t),i,n),d=new Uint8Array([...f,...i]),y=U.default.sign.detached(d,this.signingKeyPair.secretKey),_=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message:JSON.stringify({v:3,ct:(0, g.encodeBase64)(f),n:(0, g.encodeBase64)(i),sig:(0, g.encodeBase64)(y),from:this.did})})});if(!_.ok)throw new Error(`Post failed: ${_.status}`);return await _.json()}async readEncrypted(e,t,n){let i=await this.readChannel(e,n),f=[];for(let d of i.messages)try{let y=JSON.parse(typeof d.content=="string"?d.content:d.message||"");if(y.v===3&&y.ct&&y.n){let _=(0,g.decodeBase64)(y.ct),K=(0,g.decodeBase64)(y.n),m=U.default.secretbox.open(_,K,t);if(m){let F=!1;if(y.sig&&y.from)try{let q=await this.getIdentity(y.from);if(q){let M=new Uint8Array([..._,...K]);F=U.default.sign.detached.verify(M,(0,g.decodeBase64)(y.sig),(0,g.decodeBase64)(q.signing_public_key));}}catch{}f.push({id:d.id,from:y.from||d.author||"unknown",content:(0,g.encodeUTF8)(m),timestamp:d.created_at||d.timestamp,signatureValid:F});}}}catch{}return {messages:f,count:f.length}}listen(e,t={},n){let i=Math.max(t.interval||2e3,500),f=t.adaptive!==false,d=t.autoMarkRead!==false,y=t.unreadOnly!==false,_=t.heartbeat!==false,K=t.heartbeatInterval||6e4,m=true,F=i,q=0,M,J=null,H=null,xe=null,Le={stop:()=>{m=false,J&&clearTimeout(J),H&&clearInterval(H),xe&&(xe.abort(),xe=null),this._listeners.delete(Le);},get active(){return m}};this._listeners.add(Le),_&&(H=setInterval(async()=>{if(m)try{await this.ping();}catch{}},K),this.ping().catch(()=>{}));let Re=async E=>{for(let P of E)try{await e(P),d&&await this.markRead(P.id).catch(()=>{});}catch(he){n&&n(he instanceof Error?he:new Error(String(he)));}E.length>0&&(M=E[E.length-1].timestamp);},je="",Ce=0,Me=async()=>{try{let E=new URLSearchParams;M&&E.set("since",M),t.from&&E.set("from",t.from);let P=`${this.baseUrl}/v1/agent/receive/sse?${E}`,he={"X-Agent-Key":this.apiKey};je&&(he["Last-Event-ID"]=je);let pe=new AbortController;xe=pe;let N=setTimeout(()=>pe.abort(),6e4),z;try{z=await fetch(P,{headers:he,signal:pe.signal});}catch(_e){throw clearTimeout(N),_e}if(!z.ok||!z.body)return clearTimeout(N),!1;let we=z.body.getReader(),ke=new TextDecoder,ge="";try{let _e="",ve="",Ie="";for(;m&&!t.signal?.aborted;){let{done:Te,value:$e}=await we.read();if(Te)break;ge+=ke.decode($e,{stream:!0});let V=ge.split(`
|
|
2
|
-
`);
|
|
3
|
-
`:"")+ue.slice(6);else if(ue.startsWith("id: "))Ie=ue.slice(4).trim();else if(ue===""&&(ve||_e)){if(Ie&&(je=Ie),_e==="message"&&ve)try{let Je=JSON.parse(ve),{decrypted:Ye,failedIds:st}=await this._decryptMessages([Je]);for(let it of st)try{await this.markRead(it);}catch{}Ye.length>0&&(q=0,Ce=0,await Re(Ye));}catch{}else if(_e==="reconnect")break;_e="",ve="",Ie="";}}}finally{we.releaseLock(),clearTimeout(N);}return Ce=0,!0}catch{return Ce++,false}},Ve=async()=>{for(;m&&!t.signal?.aborted;){let E=await Me();if(!m||t.signal?.aborted)break;if(!E){if(Ce>=3){ze();return}let P=Math.min(1e3*Math.pow(2,Ce-1),4e3);await new Promise(he=>setTimeout(he,P));continue}await new Promise(P=>setTimeout(P,500));}},He=this.longPoll,ze=async()=>{if(!m||t.signal?.aborted){Le.stop();return}try{let E=await this.receive({since:M,from:t.from,threadId:t.threadId,messageType:t.messageType,unreadOnly:y,limit:50});E.length>0?(q=0,f&&(F=Math.max(i/2,500)),await Re(E)):(q++,f&&q>3&&!He&&(F=Math.min(F*1.5,i*4)));}catch(E){n&&n(E instanceof Error?E:new Error(String(E))),F=Math.min(F*2,i*8);}m&&!t.signal?.aborted&&(J=setTimeout(ze,He?100:F));};return this._transportPrefs.includes("sse")?Ve():ze(),Le}async*messages(e={}){let t=[],n=null,i=false,f=this.listen(d=>{t.push(d),n&&(n(),n=null);},{...e,autoMarkRead:e.autoMarkRead!==false});e.signal?.addEventListener("abort",()=>{i=true,f.stop(),n&&(n(),n=null);});try{for(;!i&&!e.signal?.aborted;)t.length>0?yield t.shift():await new Promise(d=>{n=d;});}finally{f.stop();}}stopAll(){for(let e of this._listeners)e.stop();this._listeners.clear(),this._rpcListener&&(this._rpcListener.stop(),this._rpcListener=null);for(let[e,t]of this._rpcPending)clearTimeout(t.timer),t.reject(new Error("Agent stopped"));this._rpcPending.clear(),this.disableCoverTraffic();}async invoke(e,t,n={},i=3e4){let f=`rpc-${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return new Promise(async(d,y)=>{let _=setTimeout(()=>{this._rpcPending.delete(f),y(new Error(`RPC timeout: ${t}@${e} after ${i}ms`));},i);this._rpcPending.set(f,{resolve:d,reject:y,timer:_});try{await this.send(e,JSON.stringify({jsonrpc:"2.0",method:t,params:n,id:f}),{messageType:"rpc-request",threadId:f});}catch(K){clearTimeout(_),this._rpcPending.delete(f),y(K);}})}onInvoke(e,t){this._rpcHandlers.set(e,t),this._ensureRpcListener();}offInvoke(e){this._rpcHandlers.delete(e),this._rpcHandlers.size===0&&this._rpcListener&&(this._rpcListener.stop(),this._rpcListener=null);}_ensureRpcListener(){this._rpcListener||(this._rpcListener=this.listen(async e=>{try{let t=JSON.parse(e.content);if(t.jsonrpc!=="2.0")return;if(t.id&&(t.result!==void 0||t.error)){let n=this._rpcPending.get(t.id);n&&(clearTimeout(n.timer),this._rpcPending.delete(t.id),t.error?n.reject(new Error(t.error.message||"RPC error")):n.resolve(t.result));return}if(t.method&&t.id){let n=this._rpcHandlers.get(t.method);if(!n){await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,error:{code:-32601,message:`Method not found: ${t.method}`}}),{messageType:"rpc-response",threadId:t.id});return}try{let i=await n(t.params||{},e.from);await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,result:i}),{messageType:"rpc-response",threadId:t.id});}catch(i){await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,error:{code:-32e3,message:i.message||"Handler error"}}),{messageType:"rpc-response",threadId:t.id});}}}catch{}},{interval:500,adaptive:false,heartbeat:false}));}async sendDirect(e,t,n={}){try{let f=await this.getIdentity(e);if(f){let d=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${e}`,{headers:{"X-Agent-Key":this.apiKey}});if(d.ok){let _=(await d.json()).webhook_url;if(_){let K=U.default.randomBytes(U.default.box.nonceLength),m=(0,g.decodeBase64)(f.encryption_public_key),F=(0,g.decodeUTF8)(t),q=U.default.box(F,K,m,this.encryptionKeyPair.secretKey),M=JSON.stringify({from:this.did,to:e,ciphertext:(0,g.encodeBase64)(q),nonce:(0,g.encodeBase64)(K),timestamp:new Date().toISOString(),message_type:n.messageType||"text",thread_id:n.threadId}),J=U.default.sign.detached((0,g.decodeUTF8)(M),this.signingKeyPair.secretKey);if((await this._timedFetch(_,{method:"POST",headers:{"Content-Type":"application/json","X-Voidly-Signature":`sha256=${(0,g.encodeBase64)(J)}`,"X-Voidly-Sender":this.did},body:M})).ok){let xe=new Date;return {id:`direct-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,from:this.did,to:e,timestamp:xe.toISOString(),expiresAt:new Date(xe.getTime()+864e5).toISOString(),encrypted:!0,clientSide:!0,direct:!0}}}}}}catch{}return {...await this.send(e,t,n),direct:false}}enableCoverTraffic(e={}){this.disableCoverTraffic();let t=e.intervalMs||3e4,n=async()=>{try{let f=U.default.randomBytes(128+Math.floor(Math.random()*384));await this.send(this.did,(0,g.encodeBase64)(f),{messageType:"ping",ttl:60});}catch{}},i=()=>{let f=t*(.5+Math.random());this._coverTrafficTimer=setTimeout(async()=>{await n(),this._coverTrafficTimer!==null&&i();},f);};i();}disableCoverTraffic(){this._coverTrafficTimer!==null&&(clearTimeout(this._coverTrafficTimer),this._coverTrafficTimer=null);}async _resilientFetch(e,t){let n=[this.baseUrl,...this.fallbackRelays],i=null;for(let f of n)try{let d=await this._timedFetch(`${f}${e}`,t);if(d.ok||d.status>=400&&d.status<500&&d.status!==429)return d;if(d.status===429){let y=d.headers.get("Retry-After"),_=y?Math.min(parseInt(y,10)*1e3,5e3):1e3;await new Promise(K=>setTimeout(K,_));}}catch(d){i=d instanceof Error?d:new Error(String(d));}throw i||new Error("All relays failed")}conversation(e,t){let n=t||`conv-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=`${e}:${n}`;if(this._conversations.has(i))return this._conversations.get(i);let f=new ar(this,e,n);return this._conversations.set(i,f),f}async _timedFetch(e,t){let n=new AbortController,i=setTimeout(()=>n.abort(),this.timeout);try{return await fetch(e,{...t,signal:n.signal})}catch(f){throw f instanceof Error&&f.name==="AbortError"?new Error(`Request timed out after ${this.timeout}ms: ${e.replace(this.baseUrl,"")}`):f}finally{clearTimeout(i);}}async _autoPinKeys(e){if(!this._pinnedDids.has(e)){this._pinnedDids.add(e);try{let t=await this.pinKeys(e);t.key_changed&&t.warning&&console.warn(`[voidly] \u26A0 Key change detected for ${e}: ${t.warning}`);}catch{}}}async _fetchWithRetry(e,t,n={}){let i=n.maxRetries??3,f=n.baseDelay??500,d=n.maxDelay??1e4,y=null;for(let _=0;_<=i;_++){try{let K=await this._timedFetch(e,t);if(K.ok)return await K.json();let m=await K.json().catch(()=>({})),F=m.error?.message||m.error||K.statusText;if(K.status>=400&&K.status<500)throw new Error(`Send failed (${K.status}): ${F}`);y=new Error(`Send failed (${K.status}): ${F}`);}catch(K){if(K instanceof Error&&K.message.startsWith("Send failed (4"))throw K;y=K instanceof Error?K:new Error(String(K));}if(_<i){let m=Math.min(f*Math.pow(2,_),d)*(.5+Math.random()*.5);await new Promise(F=>setTimeout(F,m));}}throw y||new Error("Send failed after retries")}async drainQueue(){let e=0,t=0,n=[];for(let i of this._offlineQueue){if(Date.now()-i.timestamp>864e5){t++;continue}try{await this.send(i.recipientDid,i.message,i.options),e++;}catch{n.push(i),t++;}}return this._offlineQueue=n,{sent:e,failed:t,remaining:n.length}}get queueLength(){return this._offlineQueue.length}threatModel(){return {relayCanSee:["Your DID (public identifier)","Recipient DIDs (relay needs them for routing)",...this.jitterMs>0?["Approximate timing (jittered timestamps)"]:["When you message (timestamps)"],...this.sealedSender?[]:["Message types, thread IDs, content types (sent in cleartext without sealed sender)"],"Channel membership (but NOT channel message content with client-side encryption)","Capability registrations","Approximate message size (even with padding, bounded to power-of-2)"],relayCannotSee:["Message content (E2E encrypted \u2014 nacl.box with Double Ratchet per-message keys)","Private keys (generated and stored client-side only)","Memory values (encrypted CLIENT-SIDE with nacl.secretbox before relay storage)","Past message keys (forward secrecy \u2014 hash ratchet + DH ratchet, old keys deleted)","Future message keys (post-compromise recovery via DH ratchet \u2014 compromise heals after one round-trip)","Channel message content (client-side nacl.secretbox encryption \u2014 relay stores only ciphertext)",...this.sealedSender?['Sender identity (sealed inside ciphertext \u2014 relay stores "sealed" not your DID)',"Message types, thread IDs, reply chains (packed inside ciphertext in v3)","Message count (not incremented for sealed senders)"]:[],...this.deniable?["Who authored a message (HMAC is symmetric \u2014 either party could have produced it)"]:[]],protections:[...this.doubleRatchet?["Double Ratchet (Signal Protocol) \u2014 DH ratchet for post-compromise recovery + hash ratchet for forward secrecy"]:["Hash ratchet forward secrecy \u2014 per-message key derivation, old keys deleted"],...this.postQuantum&&this.mlkemPublicKey?["ML-KEM-768 + X25519 hybrid key exchange (NIST FIPS 203 post-quantum, harvest-now-decrypt-later resistant)"]:[],"X3DH async key agreement (signed prekeys + one-time prekeys for offline session establishment)","X25519 key exchange + XSalsa20-Poly1305 authenticated encryption",...this.deniable?["Deniable authentication (HMAC-SHA256 with shared DH secret \u2014 both parties can produce the MAC)"]:["Ed25519 signatures on every message (envelope + ciphertext hash)"],"TOFU key pinning (MitM detection on key change)","Client-side memory encryption (relay never sees plaintext values)","Client-side channel encryption (nacl.secretbox \u2014 relay never sees channel plaintext)","Protocol version header (deterministic padding/sealing/ratchet detection, no heuristics)","Identity cache (reduced key lookups, 5-min TTL)","Message deduplication (track seen message IDs)","Request timeouts (AbortController on all HTTP, configurable)","Request validation (fromCredentials validates key sizes and format)",...this.paddingEnabled?["Message padding to power-of-2 boundary (traffic analysis resistance)"]:[],...this.sealedSender?["Sealed sender (relay cannot see who sent a message)","Metadata privacy (v3 \u2014 thread_id, message_type, reply_to packed inside ciphertext, stripped from relay storage)"]:[],...this.requireSignatures?["Strict signature enforcement (reject unsigned/invalid messages)"]:[],...this.fallbackRelays.length>0?[`Multi-relay fallback (${this.fallbackRelays.length} backup relays \u2014 receive, discover, identity all use fallbacks)`]:[],...this.jitterMs>0?[`Timing jitter (random ${this.jitterMs}ms delay \u2014 metadata timing protection)`]:[],...this._transportPrefs.includes("sse")?["SSE streaming transport (real-time push delivery from relay)"]:[],...this.longPoll?["Long-poll transport (25s server-held connection \u2014 near-real-time delivery)"]:[],...this._persistMode!=="memory"?[`Ratchet state auto-persistence (${this._persistMode} backend \u2014 survives process restart)`]:[],...this._coverTrafficTimer!==null?["Cover traffic (encrypted noise at random intervals \u2014 traffic analysis resistance)"]:[],"Agent RPC (invoke/onInvoke \u2014 synchronous function calls between agents)","P2P direct send (bypass relay via webhook \u2014 true peer-to-peer when possible)","Resilient operations (receive, discover, identity \u2014 all try fallback relays)","Auto-retry with exponential backoff","Offline message queue","did:key interoperability (W3C standard DID format)"],gaps:[...!this.postQuantum||!this.mlkemPublicKey?["No post-quantum protection \u2014 enable postQuantum option and re-register"]:[],...this.sealedSender?["Relay sees to_did (needed for routing) but NOT from_did, thread_id, or message_type"]:["Relay sees from_did, to_did, thread_id, message_type in cleartext \u2014 enable sealedSender to strip metadata"],"Relay sees channel membership, task delegation, trust scores (social graph)",...this.fallbackRelays.length===0?["Single relay with no fallbacks \u2014 configure fallbackRelays for resilience"]:[],...this._persistMode==="memory"?["Ratchet state is in-memory (lost on process restart \u2014 use persist option or exportCredentials)"]:[],...this.deniable?[]:["Ed25519 signatures are non-repudiable \u2014 enable deniable option for HMAC auth"],...this.doubleRatchet?[]:["Hash ratchet only \u2014 enable doubleRatchet option for post-compromise recovery"],...this.jitterMs===0?["No timing jitter \u2014 enable jitterMs option for metadata protection"]:[],...this._coverTrafficTimer===null?["No cover traffic \u2014 call enableCoverTraffic() to resist traffic analysis"]:[]]}}},ar=class{constructor(e,t,n){this._lastMessageId=null;this._messageHistory=[];this._listener=null;this._replyHandlers=[];this.agent=e,this.peerDid=t,this.threadId=n;}async say(e,t){let n=await this.agent.send(this.peerDid,e,{...t,threadId:this.threadId,replyTo:this._lastMessageId||void 0});return this._lastMessageId=n.id,this._messageHistory.length>=1e3&&this._messageHistory.splice(0,this._messageHistory.length-999),this._messageHistory.push({id:n.id,from:this.agent.did,content:e,timestamp:n.timestamp,signatureValid:true,messageType:t?.messageType||"text"}),n}async history(e){let t=await this.agent.receive({threadId:this.threadId,from:this.peerDid,limit:e?.limit||100}),n=[...this._messageHistory,...t.map(f=>({id:f.id,from:f.from,content:f.content,timestamp:f.timestamp,signatureValid:f.signatureValid,messageType:f.messageType}))],i=new Set;return n.filter(f=>i.has(f.id)?false:(i.add(f.id),true)).sort((f,d)=>new Date(f.timestamp).getTime()-new Date(d.timestamp).getTime())}onReply(e){this._replyHandlers.push(e),this._listener||(this._listener=this.agent.listen(async t=>{this._messageHistory.push({id:t.id,from:t.from,content:t.content,timestamp:t.timestamp,signatureValid:t.signatureValid,messageType:t.messageType}),this._lastMessageId=t.id;for(let n of this._replyHandlers)try{await n(t);}catch{}},{from:this.peerDid,threadId:this.threadId,autoMarkRead:true}));}async waitForReply(e=3e4){return new Promise((t,n)=>{let i=false,f=null,d=()=>{i=true,f&&(clearTimeout(f),f=null);},y=setTimeout(()=>{i||(d(),n(new Error(`No reply received within ${e}ms`)));},e),_=async()=>{if(!i){try{let K=await this.agent.receive({from:this.peerDid,threadId:this.threadId,unreadOnly:!0,limit:1});if(K.length>0&&!i){clearTimeout(y),d();let m=K[0];this._messageHistory.length>=1e3&&this._messageHistory.splice(0,this._messageHistory.length-999),this._messageHistory.push({id:m.id,from:m.from,content:m.content,timestamp:m.timestamp,signatureValid:m.signatureValid,messageType:m.messageType}),this._lastMessageId=m.id,await this.agent.markRead(m.id).catch(()=>{}),t(m);return}}catch(K){if(!i){clearTimeout(y),d(),n(K instanceof Error?K:new Error(String(K)));return}}i||(f=setTimeout(_,1500));}};_();})}close(){this._listener&&(this._listener.stop(),this._listener=null),this._replyHandlers=[];}get length(){return this._messageHistory.length}get lastMessage(){return this._messageHistory.length>0?this._messageHistory[this._messageHistory.length-1]:null}};var export_decodeBase64=g.decodeBase64;var export_decodeUTF8=g.decodeUTF8;var export_encodeBase64=g.encodeBase64;var export_encodeUTF8=g.encodeUTF8;var export_nacl=U.default;/*! Bundled license information:
|
|
1
|
+
'use strict';var An=Object.create;var rr=Object.defineProperty;var Tn=Object.getOwnPropertyDescriptor;var Un=Object.getOwnPropertyNames;var En=Object.getPrototypeOf,Cn=Object.prototype.hasOwnProperty;var nr=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var $r=(n,e)=>()=>(n&&(e=n(n=0)),e);var Mr=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),Fr=(n,e)=>{for(var t in e)rr(n,t,{get:e[t],enumerable:true});},Rn=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Un(e))!Cn.call(n,s)&&s!==t&&rr(n,s,{get:()=>e[s],enumerable:!(i=Tn(e,s))||i.enumerable});return n};var gt=(n,e,t)=>(t=n!=null?An(En(n)):{},Rn(!n||!n.__esModule?rr(t,"default",{value:n,enumerable:true}):t,n));var $t=Mr((Ni,It)=>{(function(n){var e=function(a){var f,c=new Float64Array(16);if(a)for(f=0;f<a.length;f++)c[f]=a[f];return c},t=function(){throw new Error("no PRNG")},i=new Uint8Array(16),s=new Uint8Array(32);s[0]=9;var o=e(),d=e([1]),h=e([56129,1]),y=e([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),w=e([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),b=e([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),O=e([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),N=e([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function D(a,f,c,r){a[f]=c>>24&255,a[f+1]=c>>16&255,a[f+2]=c>>8&255,a[f+3]=c&255,a[f+4]=r>>24&255,a[f+5]=r>>16&255,a[f+6]=r>>8&255,a[f+7]=r&255;}function I(a,f,c,r,l){var p,m=0;for(p=0;p<l;p++)m|=a[f+p]^c[r+p];return (1&m-1>>>8)-1}function pe(a,f,c,r){return I(a,f,c,r,16)}function oe(a,f,c,r){return I(a,f,c,r,32)}function $e(a,f,c,r){for(var l=r[0]&255|(r[1]&255)<<8|(r[2]&255)<<16|(r[3]&255)<<24,p=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,m=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,k=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,T=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24,H=r[4]&255|(r[5]&255)<<8|(r[6]&255)<<16|(r[7]&255)<<24,R=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,de=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,$=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,V=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,J=r[8]&255|(r[9]&255)<<8|(r[10]&255)<<16|(r[11]&255)<<24,ee=c[16]&255|(c[17]&255)<<8|(c[18]&255)<<16|(c[19]&255)<<24,Z=c[20]&255|(c[21]&255)<<8|(c[22]&255)<<16|(c[23]&255)<<24,Y=c[24]&255|(c[25]&255)<<8|(c[26]&255)<<16|(c[27]&255)<<24,W=c[28]&255|(c[29]&255)<<8|(c[30]&255)<<16|(c[31]&255)<<24,G=r[12]&255|(r[13]&255)<<8|(r[14]&255)<<16|(r[15]&255)<<24,M=l,B=p,j=m,F=k,L=T,C=H,_=R,x=de,P=$,v=V,S=J,K=ee,q=Z,te=Y,ne=W,re=G,u,se=0;se<20;se+=2)u=M+q|0,L^=u<<7|u>>>25,u=L+M|0,P^=u<<9|u>>>23,u=P+L|0,q^=u<<13|u>>>19,u=q+P|0,M^=u<<18|u>>>14,u=C+B|0,v^=u<<7|u>>>25,u=v+C|0,te^=u<<9|u>>>23,u=te+v|0,B^=u<<13|u>>>19,u=B+te|0,C^=u<<18|u>>>14,u=S+_|0,ne^=u<<7|u>>>25,u=ne+S|0,j^=u<<9|u>>>23,u=j+ne|0,_^=u<<13|u>>>19,u=_+j|0,S^=u<<18|u>>>14,u=re+K|0,F^=u<<7|u>>>25,u=F+re|0,x^=u<<9|u>>>23,u=x+F|0,K^=u<<13|u>>>19,u=K+x|0,re^=u<<18|u>>>14,u=M+F|0,B^=u<<7|u>>>25,u=B+M|0,j^=u<<9|u>>>23,u=j+B|0,F^=u<<13|u>>>19,u=F+j|0,M^=u<<18|u>>>14,u=C+L|0,_^=u<<7|u>>>25,u=_+C|0,x^=u<<9|u>>>23,u=x+_|0,L^=u<<13|u>>>19,u=L+x|0,C^=u<<18|u>>>14,u=S+v|0,K^=u<<7|u>>>25,u=K+S|0,P^=u<<9|u>>>23,u=P+K|0,v^=u<<13|u>>>19,u=v+P|0,S^=u<<18|u>>>14,u=re+ne|0,q^=u<<7|u>>>25,u=q+re|0,te^=u<<9|u>>>23,u=te+q|0,ne^=u<<13|u>>>19,u=ne+te|0,re^=u<<18|u>>>14;M=M+l|0,B=B+p|0,j=j+m|0,F=F+k|0,L=L+T|0,C=C+H|0,_=_+R|0,x=x+de|0,P=P+$|0,v=v+V|0,S=S+J|0,K=K+ee|0,q=q+Z|0,te=te+Y|0,ne=ne+W|0,re=re+G|0,a[0]=M>>>0&255,a[1]=M>>>8&255,a[2]=M>>>16&255,a[3]=M>>>24&255,a[4]=B>>>0&255,a[5]=B>>>8&255,a[6]=B>>>16&255,a[7]=B>>>24&255,a[8]=j>>>0&255,a[9]=j>>>8&255,a[10]=j>>>16&255,a[11]=j>>>24&255,a[12]=F>>>0&255,a[13]=F>>>8&255,a[14]=F>>>16&255,a[15]=F>>>24&255,a[16]=L>>>0&255,a[17]=L>>>8&255,a[18]=L>>>16&255,a[19]=L>>>24&255,a[20]=C>>>0&255,a[21]=C>>>8&255,a[22]=C>>>16&255,a[23]=C>>>24&255,a[24]=_>>>0&255,a[25]=_>>>8&255,a[26]=_>>>16&255,a[27]=_>>>24&255,a[28]=x>>>0&255,a[29]=x>>>8&255,a[30]=x>>>16&255,a[31]=x>>>24&255,a[32]=P>>>0&255,a[33]=P>>>8&255,a[34]=P>>>16&255,a[35]=P>>>24&255,a[36]=v>>>0&255,a[37]=v>>>8&255,a[38]=v>>>16&255,a[39]=v>>>24&255,a[40]=S>>>0&255,a[41]=S>>>8&255,a[42]=S>>>16&255,a[43]=S>>>24&255,a[44]=K>>>0&255,a[45]=K>>>8&255,a[46]=K>>>16&255,a[47]=K>>>24&255,a[48]=q>>>0&255,a[49]=q>>>8&255,a[50]=q>>>16&255,a[51]=q>>>24&255,a[52]=te>>>0&255,a[53]=te>>>8&255,a[54]=te>>>16&255,a[55]=te>>>24&255,a[56]=ne>>>0&255,a[57]=ne>>>8&255,a[58]=ne>>>16&255,a[59]=ne>>>24&255,a[60]=re>>>0&255,a[61]=re>>>8&255,a[62]=re>>>16&255,a[63]=re>>>24&255;}function rt(a,f,c,r){for(var l=r[0]&255|(r[1]&255)<<8|(r[2]&255)<<16|(r[3]&255)<<24,p=c[0]&255|(c[1]&255)<<8|(c[2]&255)<<16|(c[3]&255)<<24,m=c[4]&255|(c[5]&255)<<8|(c[6]&255)<<16|(c[7]&255)<<24,k=c[8]&255|(c[9]&255)<<8|(c[10]&255)<<16|(c[11]&255)<<24,T=c[12]&255|(c[13]&255)<<8|(c[14]&255)<<16|(c[15]&255)<<24,H=r[4]&255|(r[5]&255)<<8|(r[6]&255)<<16|(r[7]&255)<<24,R=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,de=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,$=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,V=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,J=r[8]&255|(r[9]&255)<<8|(r[10]&255)<<16|(r[11]&255)<<24,ee=c[16]&255|(c[17]&255)<<8|(c[18]&255)<<16|(c[19]&255)<<24,Z=c[20]&255|(c[21]&255)<<8|(c[22]&255)<<16|(c[23]&255)<<24,Y=c[24]&255|(c[25]&255)<<8|(c[26]&255)<<16|(c[27]&255)<<24,W=c[28]&255|(c[29]&255)<<8|(c[30]&255)<<16|(c[31]&255)<<24,G=r[12]&255|(r[13]&255)<<8|(r[14]&255)<<16|(r[15]&255)<<24,M=l,B=p,j=m,F=k,L=T,C=H,_=R,x=de,P=$,v=V,S=J,K=ee,q=Z,te=Y,ne=W,re=G,u,se=0;se<20;se+=2)u=M+q|0,L^=u<<7|u>>>25,u=L+M|0,P^=u<<9|u>>>23,u=P+L|0,q^=u<<13|u>>>19,u=q+P|0,M^=u<<18|u>>>14,u=C+B|0,v^=u<<7|u>>>25,u=v+C|0,te^=u<<9|u>>>23,u=te+v|0,B^=u<<13|u>>>19,u=B+te|0,C^=u<<18|u>>>14,u=S+_|0,ne^=u<<7|u>>>25,u=ne+S|0,j^=u<<9|u>>>23,u=j+ne|0,_^=u<<13|u>>>19,u=_+j|0,S^=u<<18|u>>>14,u=re+K|0,F^=u<<7|u>>>25,u=F+re|0,x^=u<<9|u>>>23,u=x+F|0,K^=u<<13|u>>>19,u=K+x|0,re^=u<<18|u>>>14,u=M+F|0,B^=u<<7|u>>>25,u=B+M|0,j^=u<<9|u>>>23,u=j+B|0,F^=u<<13|u>>>19,u=F+j|0,M^=u<<18|u>>>14,u=C+L|0,_^=u<<7|u>>>25,u=_+C|0,x^=u<<9|u>>>23,u=x+_|0,L^=u<<13|u>>>19,u=L+x|0,C^=u<<18|u>>>14,u=S+v|0,K^=u<<7|u>>>25,u=K+S|0,P^=u<<9|u>>>23,u=P+K|0,v^=u<<13|u>>>19,u=v+P|0,S^=u<<18|u>>>14,u=re+ne|0,q^=u<<7|u>>>25,u=q+re|0,te^=u<<9|u>>>23,u=te+q|0,ne^=u<<13|u>>>19,u=ne+te|0,re^=u<<18|u>>>14;a[0]=M>>>0&255,a[1]=M>>>8&255,a[2]=M>>>16&255,a[3]=M>>>24&255,a[4]=C>>>0&255,a[5]=C>>>8&255,a[6]=C>>>16&255,a[7]=C>>>24&255,a[8]=S>>>0&255,a[9]=S>>>8&255,a[10]=S>>>16&255,a[11]=S>>>24&255,a[12]=re>>>0&255,a[13]=re>>>8&255,a[14]=re>>>16&255,a[15]=re>>>24&255,a[16]=_>>>0&255,a[17]=_>>>8&255,a[18]=_>>>16&255,a[19]=_>>>24&255,a[20]=x>>>0&255,a[21]=x>>>8&255,a[22]=x>>>16&255,a[23]=x>>>24&255,a[24]=P>>>0&255,a[25]=P>>>8&255,a[26]=P>>>16&255,a[27]=P>>>24&255,a[28]=v>>>0&255,a[29]=v>>>8&255,a[30]=v>>>16&255,a[31]=v>>>24&255;}function De(a,f,c,r){$e(a,f,c,r);}function ke(a,f,c,r){rt(a,f,c,r);}var Ie=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Je(a,f,c,r,l,p,m){var k=new Uint8Array(16),T=new Uint8Array(64),H,R;for(R=0;R<16;R++)k[R]=0;for(R=0;R<8;R++)k[R]=p[R];for(;l>=64;){for(De(T,k,m,Ie),R=0;R<64;R++)a[f+R]=c[r+R]^T[R];for(H=1,R=8;R<16;R++)H=H+(k[R]&255)|0,k[R]=H&255,H>>>=8;l-=64,f+=64,r+=64;}if(l>0)for(De(T,k,m,Ie),R=0;R<l;R++)a[f+R]=c[r+R]^T[R];return 0}function Ye(a,f,c,r,l){var p=new Uint8Array(16),m=new Uint8Array(64),k,T;for(T=0;T<16;T++)p[T]=0;for(T=0;T<8;T++)p[T]=r[T];for(;c>=64;){for(De(m,p,l,Ie),T=0;T<64;T++)a[f+T]=m[T];for(k=1,T=8;T<16;T++)k=k+(p[T]&255)|0,p[T]=k&255,k>>>=8;c-=64,f+=64;}if(c>0)for(De(m,p,l,Ie),T=0;T<c;T++)a[f+T]=m[T];return 0}function Be(a,f,c,r,l){var p=new Uint8Array(32);ke(p,r,l,Ie);for(var m=new Uint8Array(8),k=0;k<8;k++)m[k]=r[k+16];return Ye(a,f,c,m,p)}function Ne(a,f,c,r,l,p,m){var k=new Uint8Array(32);ke(k,p,m,Ie);for(var T=new Uint8Array(8),H=0;H<8;H++)T[H]=p[H+16];return Je(a,f,c,r,l,T,k)}var ge=function(a){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var f,c,r,l,p,m,k,T;f=a[0]&255|(a[1]&255)<<8,this.r[0]=f&8191,c=a[2]&255|(a[3]&255)<<8,this.r[1]=(f>>>13|c<<3)&8191,r=a[4]&255|(a[5]&255)<<8,this.r[2]=(c>>>10|r<<6)&7939,l=a[6]&255|(a[7]&255)<<8,this.r[3]=(r>>>7|l<<9)&8191,p=a[8]&255|(a[9]&255)<<8,this.r[4]=(l>>>4|p<<12)&255,this.r[5]=p>>>1&8190,m=a[10]&255|(a[11]&255)<<8,this.r[6]=(p>>>14|m<<2)&8191,k=a[12]&255|(a[13]&255)<<8,this.r[7]=(m>>>11|k<<5)&8065,T=a[14]&255|(a[15]&255)<<8,this.r[8]=(k>>>8|T<<8)&8191,this.r[9]=T>>>5&127,this.pad[0]=a[16]&255|(a[17]&255)<<8,this.pad[1]=a[18]&255|(a[19]&255)<<8,this.pad[2]=a[20]&255|(a[21]&255)<<8,this.pad[3]=a[22]&255|(a[23]&255)<<8,this.pad[4]=a[24]&255|(a[25]&255)<<8,this.pad[5]=a[26]&255|(a[27]&255)<<8,this.pad[6]=a[28]&255|(a[29]&255)<<8,this.pad[7]=a[30]&255|(a[31]&255)<<8;};ge.prototype.blocks=function(a,f,c){for(var r=this.fin?0:2048,l,p,m,k,T,H,R,de,$,V,J,ee,Z,Y,W,G,M,B,j,F=this.h[0],L=this.h[1],C=this.h[2],_=this.h[3],x=this.h[4],P=this.h[5],v=this.h[6],S=this.h[7],K=this.h[8],q=this.h[9],te=this.r[0],ne=this.r[1],re=this.r[2],u=this.r[3],se=this.r[4],he=this.r[5],ue=this.r[6],ie=this.r[7],fe=this.r[8],le=this.r[9];c>=16;)l=a[f+0]&255|(a[f+1]&255)<<8,F+=l&8191,p=a[f+2]&255|(a[f+3]&255)<<8,L+=(l>>>13|p<<3)&8191,m=a[f+4]&255|(a[f+5]&255)<<8,C+=(p>>>10|m<<6)&8191,k=a[f+6]&255|(a[f+7]&255)<<8,_+=(m>>>7|k<<9)&8191,T=a[f+8]&255|(a[f+9]&255)<<8,x+=(k>>>4|T<<12)&8191,P+=T>>>1&8191,H=a[f+10]&255|(a[f+11]&255)<<8,v+=(T>>>14|H<<2)&8191,R=a[f+12]&255|(a[f+13]&255)<<8,S+=(H>>>11|R<<5)&8191,de=a[f+14]&255|(a[f+15]&255)<<8,K+=(R>>>8|de<<8)&8191,q+=de>>>5|r,$=0,V=$,V+=F*te,V+=L*(5*le),V+=C*(5*fe),V+=_*(5*ie),V+=x*(5*ue),$=V>>>13,V&=8191,V+=P*(5*he),V+=v*(5*se),V+=S*(5*u),V+=K*(5*re),V+=q*(5*ne),$+=V>>>13,V&=8191,J=$,J+=F*ne,J+=L*te,J+=C*(5*le),J+=_*(5*fe),J+=x*(5*ie),$=J>>>13,J&=8191,J+=P*(5*ue),J+=v*(5*he),J+=S*(5*se),J+=K*(5*u),J+=q*(5*re),$+=J>>>13,J&=8191,ee=$,ee+=F*re,ee+=L*ne,ee+=C*te,ee+=_*(5*le),ee+=x*(5*fe),$=ee>>>13,ee&=8191,ee+=P*(5*ie),ee+=v*(5*ue),ee+=S*(5*he),ee+=K*(5*se),ee+=q*(5*u),$+=ee>>>13,ee&=8191,Z=$,Z+=F*u,Z+=L*re,Z+=C*ne,Z+=_*te,Z+=x*(5*le),$=Z>>>13,Z&=8191,Z+=P*(5*fe),Z+=v*(5*ie),Z+=S*(5*ue),Z+=K*(5*he),Z+=q*(5*se),$+=Z>>>13,Z&=8191,Y=$,Y+=F*se,Y+=L*u,Y+=C*re,Y+=_*ne,Y+=x*te,$=Y>>>13,Y&=8191,Y+=P*(5*le),Y+=v*(5*fe),Y+=S*(5*ie),Y+=K*(5*ue),Y+=q*(5*he),$+=Y>>>13,Y&=8191,W=$,W+=F*he,W+=L*se,W+=C*u,W+=_*re,W+=x*ne,$=W>>>13,W&=8191,W+=P*te,W+=v*(5*le),W+=S*(5*fe),W+=K*(5*ie),W+=q*(5*ue),$+=W>>>13,W&=8191,G=$,G+=F*ue,G+=L*he,G+=C*se,G+=_*u,G+=x*re,$=G>>>13,G&=8191,G+=P*ne,G+=v*te,G+=S*(5*le),G+=K*(5*fe),G+=q*(5*ie),$+=G>>>13,G&=8191,M=$,M+=F*ie,M+=L*ue,M+=C*he,M+=_*se,M+=x*u,$=M>>>13,M&=8191,M+=P*re,M+=v*ne,M+=S*te,M+=K*(5*le),M+=q*(5*fe),$+=M>>>13,M&=8191,B=$,B+=F*fe,B+=L*ie,B+=C*ue,B+=_*he,B+=x*se,$=B>>>13,B&=8191,B+=P*u,B+=v*re,B+=S*ne,B+=K*te,B+=q*(5*le),$+=B>>>13,B&=8191,j=$,j+=F*le,j+=L*fe,j+=C*ie,j+=_*ue,j+=x*he,$=j>>>13,j&=8191,j+=P*se,j+=v*u,j+=S*re,j+=K*ne,j+=q*te,$+=j>>>13,j&=8191,$=($<<2)+$|0,$=$+V|0,V=$&8191,$=$>>>13,J+=$,F=V,L=J,C=ee,_=Z,x=Y,P=W,v=G,S=M,K=B,q=j,f+=16,c-=16;this.h[0]=F,this.h[1]=L,this.h[2]=C,this.h[3]=_,this.h[4]=x,this.h[5]=P,this.h[6]=v,this.h[7]=S,this.h[8]=K,this.h[9]=q;},ge.prototype.finish=function(a,f){var c=new Uint16Array(10),r,l,p,m;if(this.leftover){for(m=this.leftover,this.buffer[m++]=1;m<16;m++)this.buffer[m]=0;this.fin=1,this.blocks(this.buffer,0,16);}for(r=this.h[1]>>>13,this.h[1]&=8191,m=2;m<10;m++)this.h[m]+=r,r=this.h[m]>>>13,this.h[m]&=8191;for(this.h[0]+=r*5,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,c[0]=this.h[0]+5,r=c[0]>>>13,c[0]&=8191,m=1;m<10;m++)c[m]=this.h[m]+r,r=c[m]>>>13,c[m]&=8191;for(c[9]-=8192,l=(r^1)-1,m=0;m<10;m++)c[m]&=l;for(l=~l,m=0;m<10;m++)this.h[m]=this.h[m]&l|c[m];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,p=this.h[0]+this.pad[0],this.h[0]=p&65535,m=1;m<8;m++)p=(this.h[m]+this.pad[m]|0)+(p>>>16)|0,this.h[m]=p&65535;a[f+0]=this.h[0]>>>0&255,a[f+1]=this.h[0]>>>8&255,a[f+2]=this.h[1]>>>0&255,a[f+3]=this.h[1]>>>8&255,a[f+4]=this.h[2]>>>0&255,a[f+5]=this.h[2]>>>8&255,a[f+6]=this.h[3]>>>0&255,a[f+7]=this.h[3]>>>8&255,a[f+8]=this.h[4]>>>0&255,a[f+9]=this.h[4]>>>8&255,a[f+10]=this.h[5]>>>0&255,a[f+11]=this.h[5]>>>8&255,a[f+12]=this.h[6]>>>0&255,a[f+13]=this.h[6]>>>8&255,a[f+14]=this.h[7]>>>0&255,a[f+15]=this.h[7]>>>8&255;},ge.prototype.update=function(a,f,c){var r,l;if(this.leftover){for(l=16-this.leftover,l>c&&(l=c),r=0;r<l;r++)this.buffer[this.leftover+r]=a[f+r];if(c-=l,f+=l,this.leftover+=l,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0;}if(c>=16&&(l=c-c%16,this.blocks(a,f,l),f+=l,c-=l),c){for(r=0;r<c;r++)this.buffer[this.leftover+r]=a[f+r];this.leftover+=c;}};function Pe(a,f,c,r,l,p){var m=new ge(p);return m.update(c,r,l),m.finish(a,f),0}function U(a,f,c,r,l,p){var m=new Uint8Array(16);return Pe(m,0,c,r,l,p),pe(a,f,m,0)}function E(a,f,c,r,l){var p;if(c<32)return -1;for(Ne(a,0,f,0,c,r,l),Pe(a,16,a,32,c-32,a),p=0;p<16;p++)a[p]=0;return 0}function be(a,f,c,r,l){var p,m=new Uint8Array(32);if(c<32||(Be(m,0,32,r,l),U(f,16,f,32,c-32,m)!==0))return -1;for(Ne(a,0,f,0,c,r,l),p=0;p<32;p++)a[p]=0;return 0}function ae(a,f){var c;for(c=0;c<16;c++)a[c]=f[c]|0;}function z(a){var f,c,r=1;for(f=0;f<16;f++)c=a[f]+r+65535,r=Math.floor(c/65536),a[f]=c-r*65536;a[0]+=r-1+37*(r-1);}function X(a,f,c){for(var r,l=~(c-1),p=0;p<16;p++)r=l&(a[p]^f[p]),a[p]^=r,f[p]^=r;}function ce(a,f){var c,r,l,p=e(),m=e();for(c=0;c<16;c++)m[c]=f[c];for(z(m),z(m),z(m),r=0;r<2;r++){for(p[0]=m[0]-65517,c=1;c<15;c++)p[c]=m[c]-65535-(p[c-1]>>16&1),p[c-1]&=65535;p[15]=m[15]-32767-(p[14]>>16&1),l=p[15]>>16&1,p[14]&=65535,X(m,p,1-l);}for(c=0;c<16;c++)a[2*c]=m[c]&255,a[2*c+1]=m[c]>>8;}function _e(a,f){var c=new Uint8Array(32),r=new Uint8Array(32);return ce(c,a),ce(r,f),oe(c,0,r,0)}function xe(a){var f=new Uint8Array(32);return ce(f,a),f[0]&1}function ve(a,f){var c;for(c=0;c<16;c++)a[c]=f[2*c]+(f[2*c+1]<<8);a[15]&=32767;}function we(a,f,c){for(var r=0;r<16;r++)a[r]=f[r]+c[r];}function Ee(a,f,c){for(var r=0;r<16;r++)a[r]=f[r]-c[r];}function Q(a,f,c){var r,l,p=0,m=0,k=0,T=0,H=0,R=0,de=0,$=0,V=0,J=0,ee=0,Z=0,Y=0,W=0,G=0,M=0,B=0,j=0,F=0,L=0,C=0,_=0,x=0,P=0,v=0,S=0,K=0,q=0,te=0,ne=0,re=0,u=c[0],se=c[1],he=c[2],ue=c[3],ie=c[4],fe=c[5],le=c[6],Ce=c[7],me=c[8],Ae=c[9],Te=c[10],Ue=c[11],je=c[12],Me=c[13],Fe=c[14],Oe=c[15];r=f[0],p+=r*u,m+=r*se,k+=r*he,T+=r*ue,H+=r*ie,R+=r*fe,de+=r*le,$+=r*Ce,V+=r*me,J+=r*Ae,ee+=r*Te,Z+=r*Ue,Y+=r*je,W+=r*Me,G+=r*Fe,M+=r*Oe,r=f[1],m+=r*u,k+=r*se,T+=r*he,H+=r*ue,R+=r*ie,de+=r*fe,$+=r*le,V+=r*Ce,J+=r*me,ee+=r*Ae,Z+=r*Te,Y+=r*Ue,W+=r*je,G+=r*Me,M+=r*Fe,B+=r*Oe,r=f[2],k+=r*u,T+=r*se,H+=r*he,R+=r*ue,de+=r*ie,$+=r*fe,V+=r*le,J+=r*Ce,ee+=r*me,Z+=r*Ae,Y+=r*Te,W+=r*Ue,G+=r*je,M+=r*Me,B+=r*Fe,j+=r*Oe,r=f[3],T+=r*u,H+=r*se,R+=r*he,de+=r*ue,$+=r*ie,V+=r*fe,J+=r*le,ee+=r*Ce,Z+=r*me,Y+=r*Ae,W+=r*Te,G+=r*Ue,M+=r*je,B+=r*Me,j+=r*Fe,F+=r*Oe,r=f[4],H+=r*u,R+=r*se,de+=r*he,$+=r*ue,V+=r*ie,J+=r*fe,ee+=r*le,Z+=r*Ce,Y+=r*me,W+=r*Ae,G+=r*Te,M+=r*Ue,B+=r*je,j+=r*Me,F+=r*Fe,L+=r*Oe,r=f[5],R+=r*u,de+=r*se,$+=r*he,V+=r*ue,J+=r*ie,ee+=r*fe,Z+=r*le,Y+=r*Ce,W+=r*me,G+=r*Ae,M+=r*Te,B+=r*Ue,j+=r*je,F+=r*Me,L+=r*Fe,C+=r*Oe,r=f[6],de+=r*u,$+=r*se,V+=r*he,J+=r*ue,ee+=r*ie,Z+=r*fe,Y+=r*le,W+=r*Ce,G+=r*me,M+=r*Ae,B+=r*Te,j+=r*Ue,F+=r*je,L+=r*Me,C+=r*Fe,_+=r*Oe,r=f[7],$+=r*u,V+=r*se,J+=r*he,ee+=r*ue,Z+=r*ie,Y+=r*fe,W+=r*le,G+=r*Ce,M+=r*me,B+=r*Ae,j+=r*Te,F+=r*Ue,L+=r*je,C+=r*Me,_+=r*Fe,x+=r*Oe,r=f[8],V+=r*u,J+=r*se,ee+=r*he,Z+=r*ue,Y+=r*ie,W+=r*fe,G+=r*le,M+=r*Ce,B+=r*me,j+=r*Ae,F+=r*Te,L+=r*Ue,C+=r*je,_+=r*Me,x+=r*Fe,P+=r*Oe,r=f[9],J+=r*u,ee+=r*se,Z+=r*he,Y+=r*ue,W+=r*ie,G+=r*fe,M+=r*le,B+=r*Ce,j+=r*me,F+=r*Ae,L+=r*Te,C+=r*Ue,_+=r*je,x+=r*Me,P+=r*Fe,v+=r*Oe,r=f[10],ee+=r*u,Z+=r*se,Y+=r*he,W+=r*ue,G+=r*ie,M+=r*fe,B+=r*le,j+=r*Ce,F+=r*me,L+=r*Ae,C+=r*Te,_+=r*Ue,x+=r*je,P+=r*Me,v+=r*Fe,S+=r*Oe,r=f[11],Z+=r*u,Y+=r*se,W+=r*he,G+=r*ue,M+=r*ie,B+=r*fe,j+=r*le,F+=r*Ce,L+=r*me,C+=r*Ae,_+=r*Te,x+=r*Ue,P+=r*je,v+=r*Me,S+=r*Fe,K+=r*Oe,r=f[12],Y+=r*u,W+=r*se,G+=r*he,M+=r*ue,B+=r*ie,j+=r*fe,F+=r*le,L+=r*Ce,C+=r*me,_+=r*Ae,x+=r*Te,P+=r*Ue,v+=r*je,S+=r*Me,K+=r*Fe,q+=r*Oe,r=f[13],W+=r*u,G+=r*se,M+=r*he,B+=r*ue,j+=r*ie,F+=r*fe,L+=r*le,C+=r*Ce,_+=r*me,x+=r*Ae,P+=r*Te,v+=r*Ue,S+=r*je,K+=r*Me,q+=r*Fe,te+=r*Oe,r=f[14],G+=r*u,M+=r*se,B+=r*he,j+=r*ue,F+=r*ie,L+=r*fe,C+=r*le,_+=r*Ce,x+=r*me,P+=r*Ae,v+=r*Te,S+=r*Ue,K+=r*je,q+=r*Me,te+=r*Fe,ne+=r*Oe,r=f[15],M+=r*u,B+=r*se,j+=r*he,F+=r*ue,L+=r*ie,C+=r*fe,_+=r*le,x+=r*Ce,P+=r*me,v+=r*Ae,S+=r*Te,K+=r*Ue,q+=r*je,te+=r*Me,ne+=r*Fe,re+=r*Oe,p+=38*B,m+=38*j,k+=38*F,T+=38*L,H+=38*C,R+=38*_,de+=38*x,$+=38*P,V+=38*v,J+=38*S,ee+=38*K,Z+=38*q,Y+=38*te,W+=38*ne,G+=38*re,l=1,r=p+l+65535,l=Math.floor(r/65536),p=r-l*65536,r=m+l+65535,l=Math.floor(r/65536),m=r-l*65536,r=k+l+65535,l=Math.floor(r/65536),k=r-l*65536,r=T+l+65535,l=Math.floor(r/65536),T=r-l*65536,r=H+l+65535,l=Math.floor(r/65536),H=r-l*65536,r=R+l+65535,l=Math.floor(r/65536),R=r-l*65536,r=de+l+65535,l=Math.floor(r/65536),de=r-l*65536,r=$+l+65535,l=Math.floor(r/65536),$=r-l*65536,r=V+l+65535,l=Math.floor(r/65536),V=r-l*65536,r=J+l+65535,l=Math.floor(r/65536),J=r-l*65536,r=ee+l+65535,l=Math.floor(r/65536),ee=r-l*65536,r=Z+l+65535,l=Math.floor(r/65536),Z=r-l*65536,r=Y+l+65535,l=Math.floor(r/65536),Y=r-l*65536,r=W+l+65535,l=Math.floor(r/65536),W=r-l*65536,r=G+l+65535,l=Math.floor(r/65536),G=r-l*65536,r=M+l+65535,l=Math.floor(r/65536),M=r-l*65536,p+=l-1+37*(l-1),l=1,r=p+l+65535,l=Math.floor(r/65536),p=r-l*65536,r=m+l+65535,l=Math.floor(r/65536),m=r-l*65536,r=k+l+65535,l=Math.floor(r/65536),k=r-l*65536,r=T+l+65535,l=Math.floor(r/65536),T=r-l*65536,r=H+l+65535,l=Math.floor(r/65536),H=r-l*65536,r=R+l+65535,l=Math.floor(r/65536),R=r-l*65536,r=de+l+65535,l=Math.floor(r/65536),de=r-l*65536,r=$+l+65535,l=Math.floor(r/65536),$=r-l*65536,r=V+l+65535,l=Math.floor(r/65536),V=r-l*65536,r=J+l+65535,l=Math.floor(r/65536),J=r-l*65536,r=ee+l+65535,l=Math.floor(r/65536),ee=r-l*65536,r=Z+l+65535,l=Math.floor(r/65536),Z=r-l*65536,r=Y+l+65535,l=Math.floor(r/65536),Y=r-l*65536,r=W+l+65535,l=Math.floor(r/65536),W=r-l*65536,r=G+l+65535,l=Math.floor(r/65536),G=r-l*65536,r=M+l+65535,l=Math.floor(r/65536),M=r-l*65536,p+=l-1+37*(l-1),a[0]=p,a[1]=m,a[2]=k,a[3]=T,a[4]=H,a[5]=R,a[6]=de,a[7]=$,a[8]=V,a[9]=J,a[10]=ee,a[11]=Z,a[12]=Y,a[13]=W,a[14]=G,a[15]=M;}function Ke(a,f){Q(a,f,f);}function ht(a,f){var c=e(),r;for(r=0;r<16;r++)c[r]=f[r];for(r=253;r>=0;r--)Ke(c,c),r!==2&&r!==4&&Q(c,c,f);for(r=0;r<16;r++)a[r]=c[r];}function at(a,f){var c=e(),r;for(r=0;r<16;r++)c[r]=f[r];for(r=250;r>=0;r--)Ke(c,c),r!==1&&Q(c,c,f);for(r=0;r<16;r++)a[r]=c[r];}function nt(a,f,c){var r=new Uint8Array(32),l=new Float64Array(80),p,m,k=e(),T=e(),H=e(),R=e(),de=e(),$=e();for(m=0;m<31;m++)r[m]=f[m];for(r[31]=f[31]&127|64,r[0]&=248,ve(l,c),m=0;m<16;m++)T[m]=l[m],R[m]=k[m]=H[m]=0;for(k[0]=R[0]=1,m=254;m>=0;--m)p=r[m>>>3]>>>(m&7)&1,X(k,T,p),X(H,R,p),we(de,k,H),Ee(k,k,H),we(H,T,R),Ee(T,T,R),Ke(R,de),Ke($,k),Q(k,H,k),Q(H,T,de),we(de,k,H),Ee(k,k,H),Ke(T,k),Ee(H,R,$),Q(k,H,h),we(k,k,R),Q(H,H,k),Q(k,R,$),Q(R,T,l),Ke(T,de),X(k,T,p),X(H,R,p);for(m=0;m<16;m++)l[m+16]=k[m],l[m+32]=H[m],l[m+48]=T[m],l[m+64]=R[m];var V=l.subarray(32),J=l.subarray(16);return ht(V,V),Q(J,J,V),ce(a,J),0}function ut(a,f){return nt(a,f,s)}function Kr(a,f){return t(f,32),ut(a,f)}function Tt(a,f,c){var r=new Uint8Array(32);return nt(r,c,f),ke(a,i,r,Ie)}var Ar=E,xn=be;function wn(a,f,c,r,l,p){var m=new Uint8Array(32);return Tt(m,l,p),Ar(a,f,c,r,m)}function vn(a,f,c,r,l,p){var m=new Uint8Array(32);return Tt(m,l,p),xn(a,f,c,r,m)}var Tr=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Ur(a,f,c,r){for(var l=new Int32Array(16),p=new Int32Array(16),m,k,T,H,R,de,$,V,J,ee,Z,Y,W,G,M,B,j,F,L,C,_,x,P,v,S,K,q=a[0],te=a[1],ne=a[2],re=a[3],u=a[4],se=a[5],he=a[6],ue=a[7],ie=f[0],fe=f[1],le=f[2],Ce=f[3],me=f[4],Ae=f[5],Te=f[6],Ue=f[7],je=0;r>=128;){for(L=0;L<16;L++)C=8*L+je,l[L]=c[C+0]<<24|c[C+1]<<16|c[C+2]<<8|c[C+3],p[L]=c[C+4]<<24|c[C+5]<<16|c[C+6]<<8|c[C+7];for(L=0;L<80;L++)if(m=q,k=te,T=ne,H=re,R=u,de=se,$=he,V=ue,J=ie,ee=fe,Z=le,Y=Ce,W=me,G=Ae,M=Te,B=Ue,_=ue,x=Ue,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=(u>>>14|me<<18)^(u>>>18|me<<14)^(me>>>9|u<<23),x=(me>>>14|u<<18)^(me>>>18|u<<14)^(u>>>9|me<<23),P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,_=u&se^~u&he,x=me&Ae^~me&Te,P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,_=Tr[L*2],x=Tr[L*2+1],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,_=l[L%16],x=p[L%16],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,j=S&65535|K<<16,F=P&65535|v<<16,_=j,x=F,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=(q>>>28|ie<<4)^(ie>>>2|q<<30)^(ie>>>7|q<<25),x=(ie>>>28|q<<4)^(q>>>2|ie<<30)^(q>>>7|ie<<25),P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,_=q&te^q&ne^te&ne,x=ie&fe^ie&le^fe&le,P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,V=S&65535|K<<16,B=P&65535|v<<16,_=H,x=Y,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=j,x=F,P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,H=S&65535|K<<16,Y=P&65535|v<<16,te=m,ne=k,re=T,u=H,se=R,he=de,ue=$,q=V,fe=J,le=ee,Ce=Z,me=Y,Ae=W,Te=G,Ue=M,ie=B,L%16===15)for(C=0;C<16;C++)_=l[C],x=p[C],P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=l[(C+9)%16],x=p[(C+9)%16],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,j=l[(C+1)%16],F=p[(C+1)%16],_=(j>>>1|F<<31)^(j>>>8|F<<24)^j>>>7,x=(F>>>1|j<<31)^(F>>>8|j<<24)^(F>>>7|j<<25),P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,j=l[(C+14)%16],F=p[(C+14)%16],_=(j>>>19|F<<13)^(F>>>29|j<<3)^j>>>6,x=(F>>>19|j<<13)^(j>>>29|F<<3)^(F>>>6|j<<26),P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,l[C]=S&65535|K<<16,p[C]=P&65535|v<<16;_=q,x=ie,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[0],x=f[0],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[0]=q=S&65535|K<<16,f[0]=ie=P&65535|v<<16,_=te,x=fe,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[1],x=f[1],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[1]=te=S&65535|K<<16,f[1]=fe=P&65535|v<<16,_=ne,x=le,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[2],x=f[2],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[2]=ne=S&65535|K<<16,f[2]=le=P&65535|v<<16,_=re,x=Ce,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[3],x=f[3],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[3]=re=S&65535|K<<16,f[3]=Ce=P&65535|v<<16,_=u,x=me,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[4],x=f[4],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[4]=u=S&65535|K<<16,f[4]=me=P&65535|v<<16,_=se,x=Ae,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[5],x=f[5],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[5]=se=S&65535|K<<16,f[5]=Ae=P&65535|v<<16,_=he,x=Te,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[6],x=f[6],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[6]=he=S&65535|K<<16,f[6]=Te=P&65535|v<<16,_=ue,x=Ue,P=x&65535,v=x>>>16,S=_&65535,K=_>>>16,_=a[7],x=f[7],P+=x&65535,v+=x>>>16,S+=_&65535,K+=_>>>16,v+=P>>>16,S+=v>>>16,K+=S>>>16,a[7]=ue=S&65535|K<<16,f[7]=Ue=P&65535|v<<16,je+=128,r-=128;}return r}function ot(a,f,c){var r=new Int32Array(8),l=new Int32Array(8),p=new Uint8Array(256),m,k=c;for(r[0]=1779033703,r[1]=3144134277,r[2]=1013904242,r[3]=2773480762,r[4]=1359893119,r[5]=2600822924,r[6]=528734635,r[7]=1541459225,l[0]=4089235720,l[1]=2227873595,l[2]=4271175723,l[3]=1595750129,l[4]=2917565137,l[5]=725511199,l[6]=4215389547,l[7]=327033209,Ur(r,l,f,c),c%=128,m=0;m<c;m++)p[m]=f[k-c+m];for(p[c]=128,c=256-128*(c<112?1:0),p[c-9]=0,D(p,c-8,k/536870912|0,k<<3),Ur(r,l,p,c),m=0;m<8;m++)D(a,8*m,r[m],l[m]);return 0}function Ut(a,f){var c=e(),r=e(),l=e(),p=e(),m=e(),k=e(),T=e(),H=e(),R=e();Ee(c,a[1],a[0]),Ee(R,f[1],f[0]),Q(c,c,R),we(r,a[0],a[1]),we(R,f[0],f[1]),Q(r,r,R),Q(l,a[3],f[3]),Q(l,l,w),Q(p,a[2],f[2]),we(p,p,p),Ee(m,r,c),Ee(k,p,l),we(T,p,l),we(H,r,c),Q(a[0],m,k),Q(a[1],H,T),Q(a[2],T,k),Q(a[3],m,H);}function Er(a,f,c){var r;for(r=0;r<4;r++)X(a[r],f[r],c);}function Xt(a,f){var c=e(),r=e(),l=e();ht(l,f[2]),Q(c,f[0],l),Q(r,f[1],l),ce(a,r),a[31]^=xe(c)<<7;}function Vt(a,f,c){var r,l;for(ae(a[0],o),ae(a[1],d),ae(a[2],d),ae(a[3],o),l=255;l>=0;--l)r=c[l/8|0]>>(l&7)&1,Er(a,f,r),Ut(f,a),Ut(a,a),Er(a,f,r);}function Et(a,f){var c=[e(),e(),e(),e()];ae(c[0],b),ae(c[1],O),ae(c[2],d),Q(c[3],b,O),Vt(a,c,f);}function Jt(a,f,c){var r=new Uint8Array(64),l=[e(),e(),e(),e()],p;for(c||t(f,32),ot(r,f,32),r[0]&=248,r[31]&=127,r[31]|=64,Et(l,r),Xt(a,l),p=0;p<32;p++)f[p+32]=a[p];return 0}var Ct=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 Yt(a,f){var c,r,l,p;for(r=63;r>=32;--r){for(c=0,l=r-32,p=r-12;l<p;++l)f[l]+=c-16*f[r]*Ct[l-(r-32)],c=Math.floor((f[l]+128)/256),f[l]-=c*256;f[l]+=c,f[r]=0;}for(c=0,l=0;l<32;l++)f[l]+=c-(f[31]>>4)*Ct[l],c=f[l]>>8,f[l]&=255;for(l=0;l<32;l++)f[l]-=c*Ct[l];for(r=0;r<32;r++)f[r+1]+=f[r]>>8,a[r]=f[r]&255;}function Gt(a){var f=new Float64Array(64),c;for(c=0;c<64;c++)f[c]=a[c];for(c=0;c<64;c++)a[c]=0;Yt(a,f);}function Cr(a,f,c,r){var l=new Uint8Array(64),p=new Uint8Array(64),m=new Uint8Array(64),k,T,H=new Float64Array(64),R=[e(),e(),e(),e()];ot(l,r,32),l[0]&=248,l[31]&=127,l[31]|=64;var de=c+64;for(k=0;k<c;k++)a[64+k]=f[k];for(k=0;k<32;k++)a[32+k]=l[32+k];for(ot(m,a.subarray(32),c+32),Gt(m),Et(R,m),Xt(a,R),k=32;k<64;k++)a[k]=r[k];for(ot(p,a,c+64),Gt(p),k=0;k<64;k++)H[k]=0;for(k=0;k<32;k++)H[k]=m[k];for(k=0;k<32;k++)for(T=0;T<32;T++)H[k+T]+=p[k]*l[T];return Yt(a.subarray(32),H),de}function kn(a,f){var c=e(),r=e(),l=e(),p=e(),m=e(),k=e(),T=e();return ae(a[2],d),ve(a[1],f),Ke(l,a[1]),Q(p,l,y),Ee(l,l,a[2]),we(p,a[2],p),Ke(m,p),Ke(k,m),Q(T,k,m),Q(c,T,l),Q(c,c,p),at(c,c),Q(c,c,l),Q(c,c,p),Q(c,c,p),Q(a[0],c,p),Ke(r,a[0]),Q(r,r,p),_e(r,l)&&Q(a[0],a[0],N),Ke(r,a[0]),Q(r,r,p),_e(r,l)?-1:(xe(a[0])===f[31]>>7&&Ee(a[0],o,a[0]),Q(a[3],a[0],a[1]),0)}function Qt(a,f,c,r){var l,p=new Uint8Array(32),m=new Uint8Array(64),k=[e(),e(),e(),e()],T=[e(),e(),e(),e()];if(c<64||kn(T,r))return -1;for(l=0;l<c;l++)a[l]=f[l];for(l=0;l<32;l++)a[l+32]=r[l];if(ot(m,a,c),Gt(m),Vt(k,T,m),Et(T,f.subarray(32)),Ut(k,T),Xt(p,k),c-=64,oe(f,0,p,0)){for(l=0;l<c;l++)a[l]=0;return -1}for(l=0;l<c;l++)a[l]=f[l+64];return c}var Wt=32,Rt=24,_t=32,yt=16,xt=32,jt=32,wt=32,vt=32,Zt=32,Rr=Rt,Sn=_t,Pn=yt,it=64,ct=32,pt=64,er=32,tr=64;n.lowlevel={crypto_core_hsalsa20:ke,crypto_stream_xor:Ne,crypto_stream:Be,crypto_stream_salsa20_xor:Je,crypto_stream_salsa20:Ye,crypto_onetimeauth:Pe,crypto_onetimeauth_verify:U,crypto_verify_16:pe,crypto_verify_32:oe,crypto_secretbox:E,crypto_secretbox_open:be,crypto_scalarmult:nt,crypto_scalarmult_base:ut,crypto_box_beforenm:Tt,crypto_box_afternm:Ar,crypto_box:wn,crypto_box_open:vn,crypto_box_keypair:Kr,crypto_hash:ot,crypto_sign:Cr,crypto_sign_keypair:Jt,crypto_sign_open:Qt,crypto_secretbox_KEYBYTES:Wt,crypto_secretbox_NONCEBYTES:Rt,crypto_secretbox_ZEROBYTES:_t,crypto_secretbox_BOXZEROBYTES:yt,crypto_scalarmult_BYTES:xt,crypto_scalarmult_SCALARBYTES:jt,crypto_box_PUBLICKEYBYTES:wt,crypto_box_SECRETKEYBYTES:vt,crypto_box_BEFORENMBYTES:Zt,crypto_box_NONCEBYTES:Rr,crypto_box_ZEROBYTES:Sn,crypto_box_BOXZEROBYTES:Pn,crypto_sign_BYTES:it,crypto_sign_PUBLICKEYBYTES:ct,crypto_sign_SECRETKEYBYTES:pt,crypto_sign_SEEDBYTES:er,crypto_hash_BYTES:tr,gf:e,D:y,L:Ct,pack25519:ce,unpack25519:ve,M:Q,A:we,S:Ke,Z:Ee,pow2523:at,add:Ut,set25519:ae,modL:Yt,scalarmult:Vt,scalarbase:Et};function jr(a,f){if(a.length!==Wt)throw new Error("bad key size");if(f.length!==Rt)throw new Error("bad nonce size")}function Kn(a,f){if(a.length!==wt)throw new Error("bad public key size");if(f.length!==vt)throw new Error("bad secret key size")}function ze(){for(var a=0;a<arguments.length;a++)if(!(arguments[a]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function Ir(a){for(var f=0;f<a.length;f++)a[f]=0;}n.randomBytes=function(a){var f=new Uint8Array(a);return t(f,a),f},n.secretbox=function(a,f,c){ze(a,f,c),jr(c,f);for(var r=new Uint8Array(_t+a.length),l=new Uint8Array(r.length),p=0;p<a.length;p++)r[p+_t]=a[p];return E(l,r,r.length,f,c),l.subarray(yt)},n.secretbox.open=function(a,f,c){ze(a,f,c),jr(c,f);for(var r=new Uint8Array(yt+a.length),l=new Uint8Array(r.length),p=0;p<a.length;p++)r[p+yt]=a[p];return r.length<32||be(l,r,r.length,f,c)!==0?null:l.subarray(_t)},n.secretbox.keyLength=Wt,n.secretbox.nonceLength=Rt,n.secretbox.overheadLength=yt,n.scalarMult=function(a,f){if(ze(a,f),a.length!==jt)throw new Error("bad n size");if(f.length!==xt)throw new Error("bad p size");var c=new Uint8Array(xt);return nt(c,a,f),c},n.scalarMult.base=function(a){if(ze(a),a.length!==jt)throw new Error("bad n size");var f=new Uint8Array(xt);return ut(f,a),f},n.scalarMult.scalarLength=jt,n.scalarMult.groupElementLength=xt,n.box=function(a,f,c,r){var l=n.box.before(c,r);return n.secretbox(a,f,l)},n.box.before=function(a,f){ze(a,f),Kn(a,f);var c=new Uint8Array(Zt);return Tt(c,a,f),c},n.box.after=n.secretbox,n.box.open=function(a,f,c,r){var l=n.box.before(c,r);return n.secretbox.open(a,f,l)},n.box.open.after=n.secretbox.open,n.box.keyPair=function(){var a=new Uint8Array(wt),f=new Uint8Array(vt);return Kr(a,f),{publicKey:a,secretKey:f}},n.box.keyPair.fromSecretKey=function(a){if(ze(a),a.length!==vt)throw new Error("bad secret key size");var f=new Uint8Array(wt);return ut(f,a),{publicKey:f,secretKey:new Uint8Array(a)}},n.box.publicKeyLength=wt,n.box.secretKeyLength=vt,n.box.sharedKeyLength=Zt,n.box.nonceLength=Rr,n.box.overheadLength=n.secretbox.overheadLength,n.sign=function(a,f){if(ze(a,f),f.length!==pt)throw new Error("bad secret key size");var c=new Uint8Array(it+a.length);return Cr(c,a,a.length,f),c},n.sign.open=function(a,f){if(ze(a,f),f.length!==ct)throw new Error("bad public key size");var c=new Uint8Array(a.length),r=Qt(c,a,a.length,f);if(r<0)return null;for(var l=new Uint8Array(r),p=0;p<l.length;p++)l[p]=c[p];return l},n.sign.detached=function(a,f){for(var c=n.sign(a,f),r=new Uint8Array(it),l=0;l<r.length;l++)r[l]=c[l];return r},n.sign.detached.verify=function(a,f,c){if(ze(a,f,c),f.length!==it)throw new Error("bad signature size");if(c.length!==ct)throw new Error("bad public key size");var r=new Uint8Array(it+a.length),l=new Uint8Array(it+a.length),p;for(p=0;p<it;p++)r[p]=f[p];for(p=0;p<a.length;p++)r[p+it]=a[p];return Qt(l,r,r.length,c)>=0},n.sign.keyPair=function(){var a=new Uint8Array(ct),f=new Uint8Array(pt);return Jt(a,f),{publicKey:a,secretKey:f}},n.sign.keyPair.fromSecretKey=function(a){if(ze(a),a.length!==pt)throw new Error("bad secret key size");for(var f=new Uint8Array(ct),c=0;c<f.length;c++)f[c]=a[32+c];return {publicKey:f,secretKey:new Uint8Array(a)}},n.sign.keyPair.fromSeed=function(a){if(ze(a),a.length!==er)throw new Error("bad seed size");for(var f=new Uint8Array(ct),c=new Uint8Array(pt),r=0;r<32;r++)c[r]=a[r];return Jt(f,c,true),{publicKey:f,secretKey:c}},n.sign.publicKeyLength=ct,n.sign.secretKeyLength=pt,n.sign.seedLength=er,n.sign.signatureLength=it,n.hash=function(a){ze(a);var f=new Uint8Array(tr);return ot(f,a,a.length),f},n.hash.hashLength=tr,n.verify=function(a,f){return ze(a,f),a.length===0||f.length===0||a.length!==f.length?false:I(a,0,f,0,a.length)===0},n.setPRNG=function(a){t=a;},(function(){var a=typeof self<"u"?self.crypto||self.msCrypto:null;if(a&&a.getRandomValues){var f=65536;n.setPRNG(function(c,r){var l,p=new Uint8Array(r);for(l=0;l<r;l+=f)a.getRandomValues(p.subarray(l,l+Math.min(r-l,f)));for(l=0;l<r;l++)c[l]=p[l];Ir(p);});}else typeof nr<"u"&&(a=nr("crypto"),a&&a.randomBytes&&n.setPRNG(function(c,r){var l,p=a.randomBytes(r);for(l=0;l<r;l++)c[l]=p[l];Ir(p);}));})();})(typeof It<"u"&&It.exports?It.exports:self.nacl=self.nacl||{});});var Ft=Mr((Or,Mt)=>{(function(n,e){typeof Mt<"u"&&Mt.exports?Mt.exports=e():(n.nacl||(n.nacl={}),n.nacl.util=e());})(Or,function(){var n={};function e(t){if(!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t))throw new TypeError("invalid encoding")}return n.decodeUTF8=function(t){if(typeof t!="string")throw new TypeError("expected string");var i,s=unescape(encodeURIComponent(t)),o=new Uint8Array(s.length);for(i=0;i<s.length;i++)o[i]=s.charCodeAt(i);return o},n.encodeUTF8=function(t){var i,s=[];for(i=0;i<t.length;i++)s.push(String.fromCharCode(t[i]));return decodeURIComponent(escape(s.join("")))},typeof atob>"u"?typeof Buffer.from<"u"?(n.encodeBase64=function(t){return Buffer.from(t).toString("base64")},n.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(Buffer.from(t,"base64"),0))}):(n.encodeBase64=function(t){return new Buffer(t).toString("base64")},n.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(new Buffer(t,"base64"),0))}):(n.encodeBase64=function(t){var i,s=[],o=t.length;for(i=0;i<o;i++)s.push(String.fromCharCode(t[i]));return btoa(s.join(""))},n.decodeBase64=function(t){e(t);var i,s=atob(t),o=new Uint8Array(s.length);for(i=0;i<s.length;i++)o[i]=s.charCodeAt(i);return o}),n});});var yr={};Fr(yr,{ENVELOPE_SCHEMA:()=>sn,MICRO_PER_CREDIT:()=>oi,VOIDLY_ASSET:()=>ur,VOIDLY_NETWORK:()=>hr,VOIDLY_SCHEME:()=>dr,X402_VERSION:()=>nn,buildPaymentPayload:()=>on,canonicalize:()=>mt,decodeB64:()=>di,parsePaymentRequired:()=>cn,parseSettlementResponse:()=>li,payAndFetch:()=>fi,pickVoidlyAccept:()=>fn,signEnvelope:()=>an});function mt(n){if(n==null)return "null";if(typeof n=="boolean")return n?"true":"false";if(typeof n=="number"){if(!Number.isFinite(n)||!Number.isInteger(n))throw new Error("canonicalize: only finite integers supported");return n.toString(10)}if(typeof n=="bigint")return n.toString(10);if(typeof n=="string")return JSON.stringify(n);if(Array.isArray(n))return "["+n.map(mt).join(",")+"]";if(typeof n=="object"){let e=n;return "{"+Object.keys(e).filter(i=>e[i]!==null&&e[i]!==void 0).sort().map(i=>JSON.stringify(i)+":"+mt(e[i])).join(",")+"}"}throw new Error(`canonicalize: unsupported type ${typeof n}`)}function ci(n){return (0, dt.decodeUTF8)(mt(n))}function an(n,e){if(e.length!==64)throw new Error("signingSecretKey must be 64 bytes (nacl.sign.SecretKeyLength)");let t=ci(n),i=lr.default.sign.detached(t,e);return (0, dt.encodeBase64)(i)}function on(n){let e=Math.min(Math.max(n.ttlSeconds||60,5),3600),t=Date.now(),i={schema:sn,from_did:n.fromDid,to_did:n.payTo,amount_micro:n.amountMicro,nonce:(0, dt.encodeBase64)(lr.default.randomBytes(16)),issued_at:new Date(t).toISOString(),expires_at:new Date(t+e*1e3).toISOString()};n.memo&&(i.memo=n.memo.slice(0,280));let s=an(i,n.signingSecretKey),o={x402Version:nn,resource:n.resourceUrl?{url:n.resourceUrl}:void 0,accepted:{scheme:dr,network:hr,amount:String(n.amountMicro),asset:ur,payTo:n.payTo,maxTimeoutSeconds:60,extra:{name:"Voidly Credit",version:"1"}},payload:{envelope:i,signature:s},extensions:{}},d=JSON.parse(JSON.stringify(o));return {json:d,base64Header:btoa(JSON.stringify(d))}}async function cn(n){if(n.status!==402)return null;let e=n.headers.get("PAYMENT-REQUIRED")||n.headers.get("X-Payment-Required");if(e)try{return JSON.parse(atob(e))}catch{}try{return await n.json()}catch{return null}}function fn(n){return n.accepts?.find(e=>e.scheme===dr&&e.network===hr&&e.asset===ur)||null}async function fi(n,e,t,i){let s=await n(e,t);if(s.status!==402)return s;let o=await cn(s);if(!o)throw new Error("x402: 402 response did not contain a parseable PaymentRequired body");let d=fn(o);if(!d)throw new Error(`x402: no voidly-pay-v1 accept entry in ${JSON.stringify(o.accepts.map(b=>b.scheme))}`);let h=Number(d.amount);if(!Number.isFinite(h)||h<=0)throw new Error(`x402: invalid amount in PaymentRequirements: ${d.amount}`);if(i.maxAmountMicro!=null&&h>i.maxAmountMicro)throw new Error(`x402: server requires ${h} > maxAmountMicro ${i.maxAmountMicro}`);let y=on({fromDid:i.fromDid,payTo:d.payTo,amountMicro:h,signingSecretKey:i.signingSecretKey,resourceUrl:o.resource?.url||e,memo:i.memo,ttlSeconds:d.maxTimeoutSeconds}),w=new Headers(t.headers||{});return w.set("PAYMENT-SIGNATURE",y.base64Header),w.set("X-Payment-Signature",y.base64Header),await n(e,{...t,headers:w})}function li(n){let e=n.headers.get("PAYMENT-RESPONSE")||n.headers.get("X-Payment-Response");if(!e)return null;try{return JSON.parse(atob(e))}catch{return null}}function di(n){return (0, dt.decodeBase64)(n.replace(/-/g,"+").replace(/_/g,"/"))}var lr,dt,nn,dr,hr,ur,sn,oi,Nt=$r(()=>{lr=gt($t()),dt=gt(Ft()),nn=2,dr="voidly-pay-v1",hr="voidly:stage1",ur="credit",sn="voidly-credit-transfer/v1",oi=1e6;});var Ze={};Fr(Ze,{CAPABILITY_LIST_SCHEMA:()=>ln,FAUCET_AMOUNT_MICRO:()=>hi,FAUCET_SCHEMA:()=>hn,HIRE_REQUEST_SCHEMA:()=>dn,MAX_CAPABILITY_DESC_LENGTH:()=>mr,MAX_CAPABILITY_NAME_LENGTH:()=>gr,MAX_PRICE_MICRO:()=>pr,MAX_SLA_HOURS:()=>_r,MIN_SLA_HOURS:()=>br,buildFaucetEnvelope:()=>Si,buildHireEnvelope:()=>pi,buildListingEnvelope:()=>yi,claimFaucet:()=>Pi,getCapability:()=>bi,getHire:()=>wi,getWalletBalance:()=>Ki,hire:()=>xi,listCapabilitiesByDid:()=>_i,listCapability:()=>gi,listHiresIncoming:()=>vi,listHiresOutgoing:()=>ki,searchCapabilities:()=>mi});function wr(n,e){if(e.length!==64)throw new Error("signingSecretKey must be 64 bytes");let t=(0, At.decodeUTF8)(mt(n));return (0, At.encodeBase64)(xr.default.sign.detached(t,e))}function bt(n=0){return new Date(Date.now()+n*1e3).toISOString()}function vr(){return (0, At.encodeBase64)(xr.default.randomBytes(16))}function ui(n){if(!/^[a-z0-9._:-]+$/.test(n.capability))throw new Error("capability must be a slug [a-z0-9._:-]+");if(n.name.length<1||n.name.length>gr)throw new Error(`name must be 1..${gr} chars`);if(n.description.length<1||n.description.length>mr)throw new Error(`description must be 1..${mr} chars`);if(!Number.isInteger(n.price_per_call_micro)||n.price_per_call_micro<0||n.price_per_call_micro>pr)throw new Error(`price_per_call_micro must be integer in [0, ${pr}]`);if(!Number.isInteger(n.sla_deadline_hours)||n.sla_deadline_hours<br||n.sla_deadline_hours>_r)throw new Error(`sla_deadline_hours must be integer in [${br}, ${_r}]`)}function yi(n){ui({capability:n.capability,name:n.name,description:n.description,price_per_call_micro:n.pricePerCallMicro,sla_deadline_hours:n.slaDeadlineHours??24});let e=Math.min(Math.max(n.ttlSeconds??60,5),3600),t={schema:ln,provider_did:n.providerDid,capability:n.capability,name:n.name,description:n.description,price_per_call_micro:n.pricePerCallMicro,unit:n.unit||"call",sla_deadline_hours:n.slaDeadlineHours??24,active:n.active!==false,nonce:vr(),issued_at:bt(0),expires_at:bt(e)};return n.inputSchema&&(t.input_schema=JSON.stringify(n.inputSchema)),n.outputSchema&&(t.output_schema=JSON.stringify(n.outputSchema)),n.tags&&n.tags.length&&(t.tags=JSON.stringify(n.tags)),{envelope:t,signature:wr(t,n.signingSecretKey)}}function pi(n){if(n.input&&n.input.length>2048)throw new Error("input must be <= 2048 chars");let e=Math.min(Math.max(n.ttlSeconds??60,5),900),t={schema:dn,capability_id:n.capabilityId,capability:n.capability,requester_did:n.requesterDid,provider_did:n.providerDid,price_micro:n.pricePerCallMicro,task_id:n.taskId||crypto.randomUUID(),delivery_deadline_hours:n.deliveryDeadlineHours??24,nonce:vr(),issued_at:bt(0),expires_at:bt(e)};return n.input&&(t.input_json=n.input),{envelope:t,signature:wr(t,n.signingSecretKey)}}async function gi(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/capability/list`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({envelope:n.envelope,signature:n.signature})});if(!t.ok)throw new Error(`listCapability failed: ${t.status} ${await t.text()}`);return t.json()}async function mi(n={}){let e=n.baseUrl||"https://api.voidly.ai",t=new URLSearchParams;n.q&&t.set("q",n.q),n.capability&&t.set("capability",n.capability),n.maxPriceCredits!=null&&t.set("max_price_micro",String(Math.floor(n.maxPriceCredits*1e6))),n.providerDid&&t.set("provider_did",n.providerDid),n.limit&&t.set("limit",String(Math.min(n.limit,100)));let i=await fetch(`${e}/v1/pay/capability/search?${t.toString()}`);if(!i.ok)throw new Error(`searchCapabilities failed: ${i.status} ${await i.text()}`);return i.json()}async function bi(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/capability/${n.id}`);if(t.status===404)return null;if(!t.ok)throw new Error(`getCapability failed: ${t.status}`);return (await t.json()).capability}async function _i(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/capability/did/${encodeURIComponent(n.did)}`);if(!t.ok)throw new Error(`listCapabilitiesByDid failed: ${t.status}`);return (await t.json()).capabilities||[]}async function xi(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/hire`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({envelope:n.envelope,signature:n.signature})});if(!t.ok)throw new Error(`hire failed: ${t.status} ${await t.text()}`);return t.json()}async function wi(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/hire/${n.id}`);if(t.status===404)return null;if(!t.ok)throw new Error(`getHire failed: ${t.status}`);return (await t.json()).hire}async function vi(n){let e=n.baseUrl||"https://api.voidly.ai",t=new URLSearchParams;n.state&&t.set("state",n.state),n.limit&&t.set("limit",String(Math.min(n.limit,200)));let i=`${e}/v1/pay/hire/incoming/${encodeURIComponent(n.did)}${t.toString()?"?"+t.toString():""}`,s=await fetch(i);if(!s.ok)throw new Error(`listHiresIncoming failed: ${s.status}`);return (await s.json()).hires||[]}async function ki(n){let e=n.baseUrl||"https://api.voidly.ai",t=new URLSearchParams;n.state&&t.set("state",n.state),n.limit&&t.set("limit",String(Math.min(n.limit,200)));let i=`${e}/v1/pay/hire/outgoing/${encodeURIComponent(n.did)}${t.toString()?"?"+t.toString():""}`,s=await fetch(i);if(!s.ok)throw new Error(`listHiresOutgoing failed: ${s.status}`);return (await s.json()).hires||[]}function Si(n){let e=Math.min(Math.max(n.ttlSeconds??60,5),3600),t={schema:hn,did:n.did,nonce:vr(),issued_at:bt(0),expires_at:bt(e)};return {envelope:t,signature:wr(t,n.signingSecretKey)}}async function Pi(n){let e=n.baseUrl||"https://api.voidly.ai";return (await fetch(`${e}/v1/pay/faucet`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({envelope:n.envelope,signature:n.signature})})).json()}async function Ki(n){let e=n.baseUrl||"https://api.voidly.ai",t=await fetch(`${e}/v1/pay/wallet/${encodeURIComponent(n.did)}`);if(t.status===404)return null;if(!t.ok)throw new Error(`getWalletBalance failed: ${t.status}`);return (await t.json()).wallet}var xr,At,ln,dn,hn,hi,pr,gr,mr,br,_r,et=$r(()=>{xr=gt($t()),At=gt(Ft());Nt();ln="voidly-capability-list/v1",dn="voidly-hire-request/v1",hn="voidly-pay-faucet/v1",hi=1e7,pr=1e11,gr=80,mr=560,br=1,_r=168;});var A=gt($t()),g=gt(Ft());var qe=class extends Error{constructor(e){let t;e instanceof Error?t=e.message:typeof e=="string"?t=e:t="",super(t),this.name=this.constructor.name;}};var ir=[2285,2571,2970,1812,1493,1422,287,202,3158,622,1577,182,962,2127,1855,1468,573,2004,264,383,2500,1458,1727,3199,2648,1017,732,608,1787,411,3124,1758,1223,652,2777,1015,2036,1491,3047,1785,516,3321,3009,2663,1711,2167,126,1469,2476,3239,3058,830,107,1908,3082,2378,2931,961,1821,2604,448,2264,677,2054,2226,430,555,843,2078,871,1550,105,422,587,177,3094,3038,2869,1574,1653,3083,778,1159,3182,2552,1483,2727,1119,1739,644,2457,349,418,329,3173,3254,817,1097,603,610,1322,2044,1864,384,2114,3193,1218,1994,2455,220,2142,1670,2144,1799,2051,794,1819,2475,2459,478,3221,3021,996,991,958,1869,1522,1628],sr=[1701,1807,1460,2371,2338,2333,308,108,2851,870,854,1510,2535,1278,1530,1185,1659,1187,3109,874,1335,2111,136,1215,2945,1465,1285,2007,2719,2726,2232,2512,75,156,3e3,2911,2980,872,2685,1590,2210,602,1846,777,147,2170,2551,246,1676,1755,460,291,235,3152,2742,2907,3224,1779,2458,1251,2486,2774,2899,1103,1275,2652,1065,2881,725,1508,2368,398,951,247,1421,3222,2499,271,90,853,1860,3203,1162,1618,666,320,8,2813,1544,282,1838,1293,2314,552,2677,2106,1571,205,2918,1542,2721,2597,2312,681,130,1602,1871,829,2946,3065,1325,2756,1861,1474,1202,2367,3147,1752,2707,171,3127,3042,1907,1836,1517,359,758,1441];var Ot=0xffffffffn,Lr=32n;function jn(n,e=false){return e?{h:Number(n&Ot),l:Number(n>>Lr&Ot)}:{h:Number(n>>Lr&Ot)|0,l:Number(n&Ot)|0}}function Hr(n,e=false){let t=n.length,i=new Uint32Array(t),s=new Uint32Array(t);for(let o=0;o<t;o++){let{h:d,l:h}=jn(n[o],e);[i[o],s[o]]=[d,h];}return [i,s]}var Le=(n,e,t)=>n<<t|e>>>32-t,He=(n,e,t)=>e<<t|n>>>32-t,Ge=(n,e,t)=>e<<t-32|n>>>64-t,Qe=(n,e,t)=>n<<t-32|e>>>64-t;function In(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&n.constructor.name==="Uint8Array"}function ar(n,e=""){if(!Number.isSafeInteger(n)||n<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >0, got ${n}`)}}function Lt(n,e,t=""){let i=In(n),s=n?.length,o=e!==void 0;if(!i||o){let d=t&&`"${t}" `,h="",y=i?`length=${s}`:`type=${typeof n}`;throw new Error(d+"expected Uint8Array"+h+", got "+y)}return n}function or(n,e=true){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(e&&n.finished)throw new Error("Hash#digest() has already been called")}function Dr(n,e){Lt(n,void 0,"digestInto() output");let t=e.outputLen;if(n.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Nr(n){return new Uint32Array(n.buffer,n.byteOffset,Math.floor(n.byteLength/4))}function Br(...n){for(let e=0;e<n.length;e++)n[e].fill(0);}var $n=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Mn(n){return n<<24&4278190080|n<<8&16711680|n>>>8&65280|n>>>24&255}function Fn(n){for(let e=0;e<n.length;e++)n[e]=Mn(n[e]);return n}var cr=$n?n=>n:Fn;var On=0n,kt=1n,Ln=2n,Hn=7n,Dn=256n,Nn=0x71n,zr=[];for(let n=0,e=kt,t=1,i=0;n<24;n++){[t,i]=[i,(2*t+3*i)%5];let s=On;for(let o=0;o<7;o++)e=(e<<kt^(e>>Hn)*Nn)%Dn,e&Ln&&(s^=kt<<(kt<<BigInt(o))-kt);zr.push(s);}var qr=Hr(zr,true),qn=qr[0],Xn=qr[1],St=(n,e,t)=>Le(n,e,t),Pt=(n,e,t)=>He(n,e,t);function Vn(n,e=24,t){t||(t=new Uint32Array(10));for(let i=24-e;i<24;i++){for(let y=0;y<10;y++)t[y]=n[y]^n[y+10]^n[y+20]^n[y+30]^n[y+40];{let y=St(t[2],t[3],1)^t[8],w=Pt(t[2],t[3],1)^t[9];n[0]^=y,n[1]^=w,n[10]^=y,n[11]^=w,n[20]^=y,n[21]^=w,n[30]^=y,n[31]^=w,n[40]^=y,n[41]^=w;}{let y=St(t[4],t[5],1)^t[0],w=Pt(t[4],t[5],1)^t[1];n[2]^=y,n[3]^=w,n[12]^=y,n[13]^=w,n[22]^=y,n[23]^=w,n[32]^=y,n[33]^=w,n[42]^=y,n[43]^=w;}{let y=St(t[6],t[7],1)^t[2],w=Pt(t[6],t[7],1)^t[3];n[4]^=y,n[5]^=w,n[14]^=y,n[15]^=w,n[24]^=y,n[25]^=w,n[34]^=y,n[35]^=w,n[44]^=y,n[45]^=w;}{let y=St(t[8],t[9],1)^t[4],w=Pt(t[8],t[9],1)^t[5];n[6]^=y,n[7]^=w,n[16]^=y,n[17]^=w,n[26]^=y,n[27]^=w,n[36]^=y,n[37]^=w,n[46]^=y,n[47]^=w;}{let y=St(t[0],t[1],1)^t[6],w=Pt(t[0],t[1],1)^t[7];n[8]^=y,n[9]^=w,n[18]^=y,n[19]^=w,n[28]^=y,n[29]^=w,n[38]^=y,n[39]^=w,n[48]^=y,n[49]^=w;}let s=n[2],o=n[3],d,h;d=Le(s,o,1),h=He(s,o,1),s=n[20],o=n[21],n[20]=d,n[21]=h,d=Le(s,o,3),h=He(s,o,3),s=n[14],o=n[15],n[14]=d,n[15]=h,d=Le(s,o,6),h=He(s,o,6),s=n[22],o=n[23],n[22]=d,n[23]=h,d=Le(s,o,10),h=He(s,o,10),s=n[34],o=n[35],n[34]=d,n[35]=h,d=Le(s,o,15),h=He(s,o,15),s=n[36],o=n[37],n[36]=d,n[37]=h,d=Le(s,o,21),h=He(s,o,21),s=n[6],o=n[7],n[6]=d,n[7]=h,d=Le(s,o,28),h=He(s,o,28),s=n[10],o=n[11],n[10]=d,n[11]=h,d=Ge(s,o,36),h=Qe(s,o,36),s=n[32],o=n[33],n[32]=d,n[33]=h,d=Ge(s,o,45),h=Qe(s,o,45),s=n[16],o=n[17],n[16]=d,n[17]=h,d=Ge(s,o,55),h=Qe(s,o,55),s=n[42],o=n[43],n[42]=d,n[43]=h,d=Le(s,o,2),h=He(s,o,2),s=n[48],o=n[49],n[48]=d,n[49]=h,d=Le(s,o,14),h=He(s,o,14),s=n[8],o=n[9],n[8]=d,n[9]=h,d=Le(s,o,27),h=He(s,o,27),s=n[30],o=n[31],n[30]=d,n[31]=h,d=Ge(s,o,41),h=Qe(s,o,41),s=n[46],o=n[47],n[46]=d,n[47]=h,d=Ge(s,o,56),h=Qe(s,o,56),s=n[38],o=n[39],n[38]=d,n[39]=h,d=Le(s,o,8),h=He(s,o,8),s=n[26],o=n[27],n[26]=d,n[27]=h,d=Le(s,o,25),h=He(s,o,25),s=n[24],o=n[25],n[24]=d,n[25]=h,d=Ge(s,o,43),h=Qe(s,o,43),s=n[4],o=n[5],n[4]=d,n[5]=h,d=Ge(s,o,62),h=Qe(s,o,62),s=n[40],o=n[41],n[40]=d,n[41]=h,d=Le(s,o,18),h=He(s,o,18),s=n[28],o=n[29],n[28]=d,n[29]=h,d=Ge(s,o,39),h=Qe(s,o,39),s=n[44],o=n[45],n[44]=d,n[45]=h,d=Ge(s,o,61),h=Qe(s,o,61),s=n[18],o=n[19],n[18]=d,n[19]=h,d=Le(s,o,20),h=He(s,o,20),s=n[12],o=n[13],n[12]=d,n[13]=h,d=Ge(s,o,44),h=Qe(s,o,44),n[2]=d,n[3]=h;for(let y=0;y<50;y+=10)t[0]=n[y],t[1]=n[y+1],t[2]=n[y+2],t[3]=n[y+3],t[4]=n[y+4],t[5]=n[y+5],t[6]=n[y+6],t[7]=n[y+7],t[8]=n[y+8],t[9]=n[y+9],n[y+0]^=~t[2]&t[4],n[y+1]^=~t[3]&t[5],n[y+2]^=~t[4]&t[6],n[y+3]^=~t[5]&t[7],n[y+4]^=~t[6]&t[8],n[y+5]^=~t[7]&t[9],n[y+6]^=~t[8]&t[0],n[y+7]^=~t[9]&t[1],n[y+8]^=~t[0]&t[2],n[y+9]^=~t[1]&t[3];n[0]^=qn[i],n[1]^=Xn[i];}}var tt=class n{constructor(e,t,i,s=false,o=24){if(Object.defineProperty(this,"state",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"pos",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"posOut",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"finished",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"state32",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"destroyed",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"_B",{enumerable:true,configurable:true,writable:true,value:new Uint32Array(10)}),Object.defineProperty(this,"blockLen",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"suffix",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"outputLen",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"enableXOF",{enumerable:true,configurable:true,writable:true,value:false}),Object.defineProperty(this,"rounds",{enumerable:true,configurable:true,writable:true,value:void 0}),this.blockLen=e,this.suffix=t,this.outputLen=i,this.enableXOF=s,this.rounds=o,ar(i,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Nr(this.state);}clone(){return this._cloneInto()}reset(){this.state.fill(0),this.pos=0,this.posOut=0,this.finished=false,this.destroyed=false;}keccak(){cr(this.state32),Vn(this.state32,this.rounds,this._B),cr(this.state32),this.posOut=0,this.pos=0;}update(e){return or(this),Lt(e),this.updateUnsafe(e)}updateUnsafe(e){let{blockLen:t,state:i}=this,s=e.length;for(let o=0;o<s;){let d=Math.min(t-this.pos,s-o);for(let h=0;h<d;h++)i[this.pos++]^=e[o++];this.pos===t&&this.keccak();}return this}finish(){if(this.finished)return;this.finished=true;let{state:e,suffix:t,pos:i,blockLen:s}=this;e[i]^=t,(t&128)!==0&&i===s-1&&this.keccak(),e[s-1]^=128,this.keccak();}writeInto(e){return or(this,false),Lt(e),this.writeIntoUnsafe(e)}writeIntoUnsafe(e){this.finish();let t=this.state,{blockLen:i}=this;for(let s=0,o=e.length;s<o;){this.posOut>=i&&this.keccak();let d=Math.min(i-this.posOut,o-s);e.set(t.subarray(this.posOut,this.posOut+d),s),this.posOut+=d,s+=d;}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return ar(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Dr(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=true,Br(this.state);}_cloneInto(e){let{blockLen:t,suffix:i,outputLen:s,rounds:o,enableXOF:d}=this;return e||(e=new n(t,i,s,d,o)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=o,e.suffix=i,e.outputLen=s,e.enableXOF=d,e.destroyed=this.destroyed,e}};var Qn={},Vr=Wn(globalThis,Qn);function Wn(n,e){return new Proxy(n,{get(t,i,s){return i in e?e[i]:n[i]},set(t,i,s){return i in e&&delete e[i],n[i]=s,true},deleteProperty(t,i){let s=false;return i in e&&(delete e[i],s=true),i in n&&(delete n[i],s=true),s},ownKeys(t){let i=Reflect.ownKeys(n),s=Reflect.ownKeys(e),o=new Set(s);return [...i.filter(d=>!o.has(d)),...s]},defineProperty(t,i,s){return i in e&&delete e[i],Reflect.defineProperty(n,i,s),true},getOwnPropertyDescriptor(t,i){return i in e?Reflect.getOwnPropertyDescriptor(e,i):Reflect.getOwnPropertyDescriptor(n,i)},has(t,i){return i in e||i in n}})}function Xe(n){return n&255}function We(n){return n<<16>>16}function Re(n){return n&65535}function Jr(n,e){if(n.length!=e.length)return 0;let t=0;for(let s=0;s<n.length;s++)t|=n[s]^e[s];let i=~t&255;return i&=i>>4,i&=i>>2,i&=i>>1,i&1}function Yr(n,e){if(n.length!=e.length)return false;for(let t=0;t<n.length;t++)if(n[t]!==e[t])return false;return true}async function Gr(){if(typeof Vr<"u"&&globalThis.crypto!==void 0)return globalThis.crypto;try{let{webcrypto:n}=await import('crypto');return n}catch{throw new Error("failed to load Crypto")}}function Qr(n,e=0){return (n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24)>>>0}var lt=class{constructor(){Object.defineProperty(this,"_api",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_k",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_du",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_dv",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_eta1",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_eta2",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_skSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_pkSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_compressedUSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_compressedVSize",{enumerable:true,configurable:true,writable:true,value:0}),Object.defineProperty(this,"_poolG",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_poolH",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_poolKdf",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_poolXof",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_poolPrf1",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_poolPrf2",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_bufG",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(64)}),Object.defineProperty(this,"_bufH",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(32)}),Object.defineProperty(this,"_bufKdf",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(32)}),Object.defineProperty(this,"_bufXof",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(672)}),Object.defineProperty(this,"_bufPrf1",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_bufPrf2",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_nonceBuf",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(1)}),Object.defineProperty(this,"_xofSeed",{enumerable:true,configurable:true,writable:true,value:new Uint8Array(34)}),Object.defineProperty(this,"_kBuf",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_matrixA",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_noiseVecs",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_polyVec",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_bufPkCheck",{enumerable:true,configurable:true,writable:true,value:void 0}),Object.defineProperty(this,"_bufCt",{enumerable:true,configurable:true,writable:true,value:void 0});}_initPool(){this._poolG=new tt(72,6,64),this._poolH=new tt(136,6,32),this._poolKdf=new tt(136,31,32,true),this._poolXof=new tt(168,31,672,true);let e=this._eta1*256/4;this._poolPrf1=new tt(136,31,e,true),this._bufPrf1=new Uint8Array(e);let t=this._eta2*256/4;this._poolPrf2=new tt(136,31,t,true),this._bufPrf2=new Uint8Array(t),this._kBuf=new Uint8Array([this._k]),this._matrixA=new Array(this._k);for(let s=0;s<this._k;s++){this._matrixA[s]=new Array(this._k);for(let o=0;o<this._k;o++)this._matrixA[s][o]=new Int16Array(256);}let i=2*this._k+1;this._noiseVecs=new Array(i);for(let s=0;s<i;s++)this._noiseVecs[s]=new Int16Array(256);this._polyVec=new Array(this._k);for(let s=0;s<this._k;s++)this._polyVec[s]=new Int16Array(256);this._bufPkCheck=new Uint8Array(384*this._k),this._bufCt=new Uint8Array(this._compressedUSize+this._compressedVSize);}_zeroPool(){this._bufG.fill(0),this._bufH.fill(0),this._bufKdf.fill(0),this._bufXof.fill(0),this._bufPrf1.fill(0),this._bufPrf2.fill(0),this._nonceBuf[0]=0,this._xofSeed.fill(0);for(let e=0;e<this._k;e++)for(let t=0;t<this._k;t++)this._matrixA[e][t].fill(0);for(let e=0;e<this._noiseVecs.length;e++)this._noiseVecs[e].fill(0);for(let e=0;e<this._k;e++)this._polyVec[e].fill(0);this._bufPkCheck.fill(0),this._bufCt.fill(0),this._poolG.reset(),this._poolH.reset(),this._poolKdf.reset(),this._poolXof.reset(),this._poolPrf1.reset(),this._poolPrf2.reset();}_polyToBytes(e,t,i){let s,o;for(let d=0;d<256/2;d++)s=i[2*d]-3329,s+=s>>31&3329,o=i[2*d+1]-3329,o+=o>>31&3329,e[t+3*d+0]=Xe(s),e[t+3*d+1]=Xe(s>>8)|Xe(o<<4),e[t+3*d+2]=Xe(o>>4);}_polyFromBytes(e,t,i){for(let s=0;s<256/2;s++)e[2*s]=We((Re(t[i+3*s+0])>>0|Re(t[i+3*s+1])<<8)&4095),e[2*s+1]=We((Re(t[i+3*s+1])>>4|Re(t[i+3*s+2])<<4)&4095);}_g(e,t){return this._poolG.reset(),this._poolG.updateUnsafe(e),t!==void 0&&this._poolG.updateUnsafe(t),this._poolG.writeIntoUnsafe(this._bufG),[this._bufG.subarray(0,32),this._bufG.subarray(32,64)]}_h(e){return this._poolH.reset(),this._poolH.updateUnsafe(e).writeIntoUnsafe(this._bufH),this._bufH}_kdf(e,t){return this._poolKdf.reset(),this._poolKdf.updateUnsafe(e),t!==void 0&&this._poolKdf.updateUnsafe(t),this._poolKdf.writeIntoUnsafe(this._bufKdf),this._bufKdf}_xof(e){return this._poolXof.reset(),this._poolXof.updateUnsafe(e).writeIntoUnsafe(this._bufXof),this._bufXof}_prf1(e,t){return this._nonceBuf[0]=t,this._poolPrf1.reset(),this._poolPrf1.updateUnsafe(e).updateUnsafe(this._nonceBuf).writeIntoUnsafe(this._bufPrf1),this._bufPrf1}_prf2(e,t){return this._nonceBuf[0]=t,this._poolPrf2.reset(),this._poolPrf2.updateUnsafe(e).updateUnsafe(this._nonceBuf).writeIntoUnsafe(this._bufPrf2),this._bufPrf2}_generateKeyPairCore(){try{let e=new Uint8Array(64);return this._api.getRandomValues(e),this._deriveKeyPair(e)}finally{this._zeroPool();}}_deriveKeyPairCore(e){try{if(e.byteLength!==64)throw new Error("seed must be 64 bytes in length");return this._deriveKeyPair(e)}finally{this._zeroPool();}}_encapCore(e,t){try{if(e.length!==384*this._k+32)throw new Error("invalid encapsulation key");let i=this._getSeed(t),[s,o]=this._g(i,this._h(e));return this._encap(e,i,o),[this._bufCt.slice(),s.slice()]}finally{this._zeroPool();}}_decapCore(e,t){try{if(e.byteLength!==this._compressedUSize+this._compressedVSize)throw new Error("Invalid ct size");if(t.length!==768*this._k+96)throw new Error("Invalid decapsulation key");let i=t.subarray(0,this._skSize),s=t.subarray(this._skSize,this._skSize+this._pkSize),o=t.subarray(this._skSize+this._pkSize,this._skSize+this._pkSize+32),d=t.subarray(this._skSize+this._pkSize+32,this._skSize+this._pkSize+64),h=this._decap(e,i),[y,w]=this._g(h,o),b=this._kdf(d,e);return this._encap(s,h,w),Jr(e,this._bufCt)===1?y.slice():b.slice()}finally{this._zeroPool();}}async _setup(){this._api===void 0&&(this._api=await Gr());}_getSeed(e){if(e==null){let t=new Uint8Array(32);return this._api.getRandomValues(t),t}if(e.byteLength!==32)throw new Error("seed must be 32 bytes in length");return e}_deriveKeyPair(e){let t=e.subarray(0,32),i=e.subarray(32,64),[s,o]=this._deriveCpaKeyPair(t),d=this._h(s),h=new Uint8Array(this._skSize+this._pkSize+64);return h.set(o,0),h.set(s,this._skSize),h.set(d,this._skSize+this._pkSize),h.set(i,this._skSize+this._pkSize+32),[s,h]}_deriveCpaKeyPair(e){let[t,i]=this._g(e,this._kBuf),s=this._sampleMatrix(t,false),o=this._sampleNoise1(i,0,this._k),d=this._sampleNoise1(i,this._k,this._k);for(let b=0;b<this._k;b++)o[b]=Ht(o[b]),o[b]=ft(o[b]),d[b]=Ht(d[b]);let h=new Array(this._k);for(let b=0;b<this._k;b++)h[b]=ni(Dt(s[b],o)),h[b]=Kt(h[b],d[b]),h[b]=ft(h[b]);let y=new Uint8Array(this._pkSize);for(let b=0;b<this._k;b++)this._polyToBytes(y,b*384,h[b]);y.set(t,this._skSize);let w=new Uint8Array(this._skSize);for(let b=0;b<this._k;b++)this._polyToBytes(w,b*384,o[b]);return [y,w]}_encap(e,t,i){let s=this._polyVec,o=this._bufPkCheck;for(let I=0;I<this._k;I++)this._polyFromBytes(s[I],e,I*384),this._polyToBytes(o,I*384,s[I]);if(!Yr(e.subarray(0,o.length),o))throw new Error("invalid encapsulation key");let d=e.subarray(this._skSize),h=this._sampleMatrix(d,true),y=this._sampleNoise1(i,0,this._k),w=this._sampleNoise2(i,this._k,this._k),b=this._sampleNoise2(i,this._k*2,1)[0];for(let I=0;I<this._k;I++)y[I]=Ht(y[I]),y[I]=ft(y[I]);let O=new Array(this._k);for(let I=0;I<this._k;I++)O[I]=Dt(h[I],y),O[I]=fr(O[I]),O[I]=Kt(O[I],w[I]),O[I]=ft(O[I]);let N=ti(t),D=Dt(s,y);return D=fr(D),D=Kt(D,b),D=Kt(D,N),D=ft(D),this._compressU(this._bufCt.subarray(0,this._compressedUSize),O),this._compressV(this._bufCt.subarray(this._compressedUSize),D),this._bufCt}_decap(e,t){let i=this._decompressU(e.subarray(0,this._compressedUSize)),s=this._decompressV(e.subarray(this._compressedUSize)),o=this._polyvecFromBytes(t);for(let h=0;h<this._k;h++)i[h]=Ht(i[h]);let d=Dt(o,i);return d=fr(d),d=ii(s,d),d=ft(d),ei(d)}_sampleMatrix(e,t){let i=this._matrixA;this._xofSeed.set(e);for(let s=0,o=0;o<this._k;o++)for(let d=0;d<this._k;d++){t?(this._xofSeed[e.length]=o,this._xofSeed[e.length+1]=d):(this._xofSeed[e.length]=d,this._xofSeed[e.length+1]=o);let h=this._xof(this._xofSeed);for(s=Wr(i[o][d],0,h.subarray(0,504),504,256);s<256;){let y=h.subarray(504,672);s+=Wr(i[o][d],s,y,168,256-s);}}return i}_sampleNoise1(e,t,i){let s=new Array(i);for(let o=0;o<i;o++)s[o]=this._noiseVecs[t+o],Zr(s[o],this._prf1(e,t+o),this._eta1);return s}_sampleNoise2(e,t,i){let s=new Array(i);for(let o=0;o<i;o++)s[o]=this._noiseVecs[t+o],Zr(s[o],this._prf2(e,t+o),this._eta2);return s}_polyvecFromBytes(e){let t=this._polyVec;for(let i=0;i<this._k;i++)this._polyFromBytes(t[i],e,i*384);return t}_compressU(e,t){let i=new Array(4);for(let s=0,o=0;o<this._k;o++)for(let d=0;d<256/4;d++){for(let h=0;h<4;h++)i[h]=((t[o][4*d+h]<<10)+3329/2)/3329&1023;e[s++]=Xe(i[0]>>0),e[s++]=Xe(i[0]>>8|i[1]<<2),e[s++]=Xe(i[1]>>6|i[2]<<4),e[s++]=Xe(i[2]>>4|i[3]<<6),e[s++]=Xe(i[3]>>2);}return e}_compressV(e,t){let i=new Uint8Array(8);for(let s=0,o=0;o<256/8;o++){for(let d=0;d<8;d++)i[d]=Xe(((t[8*o+d]<<4)+3329/2)/3329)&15;e[s++]=i[0]|i[1]<<4,e[s++]=i[2]|i[3]<<4,e[s++]=i[4]|i[5]<<4,e[s++]=i[6]|i[7]<<4;}return e}_decompressU(e){let t=new Array(this._k);for(let s=0;s<this._k;s++)t[s]=new Int16Array(256);let i=new Array(4);for(let s=0,o=0;o<this._k;o++)for(let d=0;d<256/4;d++){i[0]=Re(e[s+0])>>0|Re(e[s+1])<<8,i[1]=Re(e[s+1])>>2|Re(e[s+2])<<6,i[2]=Re(e[s+2])>>4|Re(e[s+3])<<4,i[3]=Re(e[s+3])>>6|Re(e[s+4])<<2,s=s+5;for(let h=0;h<4;h++)t[o][4*d+h]=We((i[h]&1023)*3329+512>>10);}return t}_decompressV(e){let t=new Int16Array(256);for(let i=0,s=0;s<256/2;s++,i++)t[2*s+0]=We((e[i]&15)*3329+8>>4),t[2*s+1]=We((e[i]>>4)*3329+8>>4);return t}};function ei(n){let e=new Uint8Array(32),t,i;for(let s=0;s<256/8;s++)for(let o=0;o<8;o++)i=n[8*s+o]-3329,i+=i>>31&3329,t=((Re(i)<<1)+Re(3329/2))/Re(3329)&1,e[s]|=Xe(t<<o);return e}function ti(n){let e=new Int16Array(256),t;for(let i=0;i<256/8;i++)for(let s=0;s<8;s++)t=-1*We(n[i]>>s&1),e[8*i+s]=t&We(3330/2);return e}function Wr(n,e,t,i,s){let o=0,d,h;for(let y=0;o<s&&y+3<=i;)d=(Re(t[y]>>0)|Re(t[y+1])<<8)&4095,h=(Re(t[y+1]>>4)|Re(t[y+2])<<4)&4095,y=y+3,d<3329&&(n[e+o]=d,o=o+1),o<s&&h<3329&&(n[e+o]=h,o=o+1);return o}function Zr(n,e,t){let i,s,o,d;for(let h=0;h<256/8;h++){i=Qr(e,4*h),s=i&1431655765,s=s+(i>>1&1431655765);for(let y=0;y<8;y++)o=We(s>>4*y+0&3),d=We(s>>4*y+t&3),n[8*h+y]=o-d;}}function Ht(n){for(let e=0,t=1,i=128;i>=2;i>>=1)for(let s=0;s<256;s=e+i){let o=ir[t];for(t=t+1,e=s;e<s+i;e++){let d=Ve(o,n[e+i]);n[e+i]=n[e]-d,n[e]=n[e]+d;}}return n}function Ve(n,e){let t=n*e,i=Math.imul(t,62209)<<16>>16;return t-i*3329>>16}function ft(n){for(let e=0;e<256;e++)n[e]=rn(n[e]);return n}var ri=((1<<24)+3329/2)/3329;function rn(n){let e=ri*n>>24;return e=e*3329,n-e}function ni(n){for(let t=0;t<256;t++){let i=n[t]*1353,s=Math.imul(i,62209)<<16>>16;n[t]=i-s*3329>>16;}return n}function Dt(n,e){let t=en(n[0],e[0]),i;for(let s=1;s<n.length;s++)i=en(n[s],e[s]),t=Kt(t,i);return ft(t)}function en(n,e){for(let t=0;t<256/4;t++){let i=4*t,s=n[i],o=n[i+1],d=n[i+2],h=n[i+3],y=e[i],w=e[i+1],b=e[i+2],O=e[i+3],N=ir[64+t];n[i]=Ve(Ve(o,w),N)+Ve(s,y),n[i+1]=Ve(s,w)+Ve(o,y),n[i+2]=Ve(Ve(h,O),-N)+Ve(d,b),n[i+3]=Ve(d,O)+Ve(h,b);}return n}function Kt(n,e){for(let t=0;t<256;t++)n[t]+=e[t];return n}function ii(n,e){for(let t=0;t<256;t++)n[t]-=e[t];return n}function fr(n){let e=0;for(let t=0,i=2;i<=128;i<<=1)for(let s=0;s<256;s=e+i){let o=sr[t];for(t=t+1,e=s;e<s+i;e++){let d=n[e];n[e]=rn(d+n[e+i]),n[e+i]=d-n[e+i],n[e+i]=Ve(o,n[e+i]);}}for(e=0;e<256;e++)n[e]=Ve(n[e],sr[127]);return n}var st=class extends lt{constructor(){super(),Object.defineProperty(this,"_k",{enumerable:true,configurable:true,writable:true,value:3}),Object.defineProperty(this,"_du",{enumerable:true,configurable:true,writable:true,value:10}),Object.defineProperty(this,"_dv",{enumerable:true,configurable:true,writable:true,value:4}),Object.defineProperty(this,"_eta1",{enumerable:true,configurable:true,writable:true,value:2}),Object.defineProperty(this,"_eta2",{enumerable:true,configurable:true,writable:true,value:2}),this._skSize=12*this._k*256/8,this._pkSize=this._skSize+32,this._compressedUSize=this._k*this._du*256/8,this._compressedVSize=this._dv*256/8,this._initPool();}async generateKeyPair(){await this._setup();try{return this._generateKeyPairCore()}catch(e){throw new qe(e)}}async deriveKeyPair(e){await this._setup();try{return this._deriveKeyPairCore(e)}catch(t){throw new qe(t)}}async encap(e,t){await this._setup();try{return this._encapCore(e,t)}catch(i){throw new qe(i)}}async decap(e,t){await this._setup();try{return this._decapCore(e,t)}catch(i){throw new qe(i)}}};async function kr(n){if(typeof globalThis.crypto?.subtle<"u"){let t=new TextEncoder,i=await globalThis.crypto.subtle.digest("SHA-256",t.encode(n));return Array.from(new Uint8Array(i)).map(s=>s.toString(16).padStart(2,"0")).join("")}let{createHash:e}=await import('crypto');return e("sha256").update(n).digest("hex")}function Ai(n){let e=n.length,t=Math.max(256,Ti(e+2)),i=new Uint8Array(t);i[0]=e>>8&255,i[1]=e&255,i.set(n,2);let s=A.default.randomBytes(t-e-2);return i.set(s,e+2),i}function un(n){if(n.length<2)return n;let e=n[0]<<8|n[1];return e+2>n.length?n:n.slice(2,2+e)}function Ti(n){let e=1;for(;e<n;)e<<=1;return e}async function Bt(n){new TextEncoder;if(typeof globalThis.crypto?.subtle<"u"){let o=new Uint8Array([...n,1]),d=new Uint8Array([...n,2]),h=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",o)),y=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",d));return {nextChainKey:h,messageKey:y}}let{createHash:t}=await import('crypto'),i=new Uint8Array(t("sha256").update(Buffer.from([...n,1])).digest()),s=new Uint8Array(t("sha256").update(Buffer.from([...n,2])).digest());return {nextChainKey:i,messageKey:s}}function Ui(n,e,t){let i={v:3,from:n,msg:e,ts:new Date().toISOString()};return t?.contentType&&t.contentType!=="text/plain"&&(i.ct=t.contentType),t?.messageType&&t.messageType!=="text"&&(i.mt=t.messageType),t?.threadId&&(i.tid=t.threadId),t?.replyTo&&(i.rto=t.replyTo),JSON.stringify(i)}function Ei(n){try{let e=JSON.parse(n);if((e.v===2||e.v===3)&&e.from&&e.msg!==void 0){let t={from:e.from,msg:e.msg,ts:e.ts};return e.ct&&(t.contentType=e.ct),e.mt&&(t.messageType=e.mt),e.tid&&(t.threadId=e.tid),e.rto&&(t.replyTo=e.rto),t}return null}catch{return null}}var _n=86,yn=1,pn=2,Ci=4,Ri=8,ji=16,Ii=32,$i=64;function Mi(n,e){return new Uint8Array([_n,n,e>>8&255,e&255])}function Fi(n){return n.length<4||n[0]!==_n?null:{flags:n[1],ratchetStep:n[2]<<8|n[3],content:n.slice(4)}}async function zt(n,e){let t=new Uint8Array(n.length+e.length);if(t.set(n,0),t.set(e,n.length),typeof globalThis.crypto?.subtle<"u"){let h=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",t.buffer)),y=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",new Uint8Array([...h,1]).buffer)),w=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",new Uint8Array([...h,2]).buffer));return {newRootKey:y,newChainKey:w}}let{createHash:i}=await import('crypto'),s=new Uint8Array(i("sha256").update(Buffer.from(t)).digest()),o=new Uint8Array(i("sha256").update(Buffer.from([...s,1])).digest()),d=new Uint8Array(i("sha256").update(Buffer.from([...s,2])).digest());return {newRootKey:o,newChainKey:d}}var Sr=(0, g.decodeUTF8)("voidly-x3dh-v1");async function gn(n){let e=Sr.length;for(let o of n)e+=o.length;let t=new Uint8Array(e);t.set(Sr,0);let i=Sr.length;for(let o of n)t.set(o,i),i+=o.length;if(typeof globalThis.crypto?.subtle<"u")return new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",t.buffer));let{createHash:s}=await import('crypto');return new Uint8Array(s("sha256").update(Buffer.from(t)).digest())}async function mn(n,e){if(typeof globalThis.crypto?.subtle<"u"){let i=await globalThis.crypto.subtle.importKey("raw",n.buffer,{name:"HMAC",hash:"SHA-256"},false,["sign"]);return new Uint8Array(await globalThis.crypto.subtle.sign("HMAC",i,e.buffer))}let{createHmac:t}=await import('crypto');return new Uint8Array(t("sha256",Buffer.from(n)).update(Buffer.from(e)).digest())}var qt=1e3,Oi=5,Li="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Hi(n){if(n.length===0)return "1";let e="",t=BigInt("0x"+Array.from(n).map(i=>i.toString(16).padStart(2,"0")).join(""));for(;t>0n;){let i=t%58n;t=t/58n,e=Li[Number(i)]+e;}for(let i of n)if(i===0)e="1"+e;else break;return e||"1"}var bn=class n{constructor(e,t){this._signedPrekey=null;this._signedPrekeyId=0;this._signedPrekeyHistory=new Map;this._pinnedDids=new Set;this._listeners=new Set;this._conversations=new Map;this._offlineQueue=[];this._ratchetStates=new Map;this._identityCache=new Map;this._seenMessageIds=new Set;this._decryptFailCount=0;this._peerDecryptFails=new Map;this._autoResetThreshold=10;this._rpcHandlers=new Map;this._rpcPending=new Map;this._coverTrafficTimer=null;this._rpcListener=null;this._persistMode="memory";this._persistKey=null;this._sendLocks=new Map;this._decryptLock=null;this.did=e.did,this.apiKey=e.apiKey,this.signingKeyPair=e.signingKeyPair,this.encryptionKeyPair=e.encryptionKeyPair,this.baseUrl=t?.baseUrl||"https://api.voidly.ai",this.autoPin=t?.autoPin!==false,this.defaultRetries=t?.retries??3,this.fallbackRelays=t?.fallbackRelays||[],this.paddingEnabled=t?.padding!==false,this.sealedSender=t?.sealedSender||false,this.requireSignatures=t?.requireSignatures||false,this.timeout=t?.timeout??3e4,this.postQuantum=t?.postQuantum!==false,this.deniable=t?.deniable||false,this.doubleRatchet=t?.doubleRatchet!==false,this.jitterMs=t?.jitterMs||0,this.longPoll=t?.longPoll!==false,this.mlkemPublicKey=e.mlkemPublicKey||null,this.mlkemSecretKey=e.mlkemSecretKey||null,this._persistMode=t?.persist||"memory",this._onPersist=t?.onPersist,this._onLoad=t?.onLoad,this._persistPath=t?.persistPath,this._transportPrefs=t?.transport||["sse","long-poll"],this._autoResetThreshold=t?.autoResetThreshold??10,this._onRatchetReset=t?.onRatchetReset;}static async register(e={},t){let i=t?.baseUrl||"https://api.voidly.ai",s=A.default.sign.keyPair(),o=A.default.box.keyPair(),d=t?.postQuantum!==false,h,y;d&&([h,y]=await new st().generateKeyPair());let w=A.default.box.keyPair(),b=1,O=A.default.sign.detached(w.publicKey,s.secretKey),N={name:e.name,capabilities:e.capabilities,signing_public_key:(0, g.encodeBase64)(s.publicKey),encryption_public_key:(0, g.encodeBase64)(o.publicKey),signed_prekey_public:(0, g.encodeBase64)(w.publicKey),signed_prekey_signature:(0, g.encodeBase64)(O),signed_prekey_id:b};h&&(N.mlkem_public_key=(0, g.encodeBase64)(h));let D=await fetch(`${i}/v1/agent/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)});if(!D.ok){let oe=await D.json().catch(()=>({})),$e=oe.error?.message||oe.error||D.statusText;throw new Error(`Registration failed: ${$e}`)}let I=await D.json(),pe=new n({did:I.did,apiKey:I.api_key,signingKeyPair:s,encryptionKeyPair:o,mlkemPublicKey:h,mlkemSecretKey:y},t);return pe._signedPrekey=w,pe._signedPrekeyId=b,pe}static fromCredentials(e,t){if(!e.did||!e.did.startsWith("did:"))throw new Error('Invalid credentials: did must start with "did:"');if(!e.apiKey||e.apiKey.length<8)throw new Error("Invalid credentials: apiKey is missing or too short");if(!e.signingSecretKey||!e.encryptionSecretKey)throw new Error("Invalid credentials: secret keys are required");let i,s;try{i=(0,g.decodeBase64)(e.signingSecretKey),s=(0,g.decodeBase64)(e.encryptionSecretKey);}catch{throw new Error("Invalid credentials: secret keys must be valid base64")}if(i.length!==64)throw new Error(`Invalid credentials: signing key must be 64 bytes, got ${i.length}`);if(s.length!==32)throw new Error(`Invalid credentials: encryption key must be 32 bytes, got ${s.length}`);let o,d;if(e.mlkemPublicKey&&e.mlkemSecretKey)try{o=(0,g.decodeBase64)(e.mlkemPublicKey),d=(0,g.decodeBase64)(e.mlkemSecretKey),(o.length!==1184||d.length!==2400)&&(o=void 0,d=void 0);}catch{}let h=!d&&t?.postQuantum!==false?{...t,postQuantum:false}:t,y=new n({did:e.did,apiKey:e.apiKey,signingKeyPair:A.default.sign.keyPair.fromSecretKey(i),encryptionKeyPair:{publicKey:A.default.box.keyPair.fromSecretKey(s).publicKey,secretKey:s},mlkemPublicKey:o,mlkemSecretKey:d},h);if(e.ratchetStates)for(let[w,b]of Object.entries(e.ratchetStates))try{let O=(0,g.decodeBase64)(b.sendChainKey),N=(0,g.decodeBase64)(b.recvChainKey);if(O.length!==32||N.length!==32)continue;let D={sendChainKey:O,sendStep:b.sendStep||0,recvChainKey:N,recvStep:b.recvStep||0,skippedKeys:new Map};if(b.rootKey)try{D.rootKey=(0,g.decodeBase64)(b.rootKey),D.rootKey.length!==32&&(D.rootKey=void 0);}catch{}if(b.dhSendSecretKey&&b.dhSendPublicKey)try{let I=(0,g.decodeBase64)(b.dhSendSecretKey),pe=(0,g.decodeBase64)(b.dhSendPublicKey);I.length===32&&pe.length===32&&(D.dhSendKeyPair={publicKey:pe,secretKey:I});}catch{}if(b.dhRecvPubKey)try{let I=(0,g.decodeBase64)(b.dhRecvPubKey);I.length===32&&(D.dhRecvPubKey=I);}catch{}if(b.prevSendStep!==void 0&&(D.prevSendStep=b.prevSendStep),b.x3dhEkPub&&typeof b.x3dhSpkId=="number")try{let I=(0,g.decodeBase64)(b.x3dhEkPub);if(I.length===32&&(D.x3dhInit={ekPub:I,spkId:b.x3dhSpkId},b.x3dhPqCt))try{D.x3dhInit.pqCt=(0,g.decodeBase64)(b.x3dhPqCt);}catch{}}catch{}if(D.dhSkippedKeys=new Map,b.skippedKeys&&typeof b.skippedKeys=="object")for(let[I,pe]of Object.entries(b.skippedKeys))try{let oe=(0,g.decodeBase64)(pe);oe.length===32&&D.skippedKeys.set(Number(I),oe);}catch{}if(b.dhSkippedKeys&&typeof b.dhSkippedKeys=="object")for(let[I,pe]of Object.entries(b.dhSkippedKeys))try{let oe=(0,g.decodeBase64)(pe);oe.length===32&&D.dhSkippedKeys.set(I,oe);}catch{}y._ratchetStates.set(w,D);}catch{}if(e.peerDecryptFails&&typeof e.peerDecryptFails=="object")for(let[w,b]of Object.entries(e.peerDecryptFails))typeof b=="number"&&b>0&&y._peerDecryptFails.set(w,b);if(e.signedPrekeySecret&&e.signedPrekeyPublic)try{let w=(0,g.decodeBase64)(e.signedPrekeySecret),b=(0,g.decodeBase64)(e.signedPrekeyPublic);w.length===32&&b.length===32&&(y._signedPrekey={publicKey:b,secretKey:w},y._signedPrekeyId=e.signedPrekeyId||0);}catch{}if(e.signedPrekeyHistory&&typeof e.signedPrekeyHistory=="object")for(let[w,b]of Object.entries(e.signedPrekeyHistory))try{let O=(0,g.decodeBase64)(b.s),N=(0,g.decodeBase64)(b.p);O.length===32&&N.length===32&&y._signedPrekeyHistory.set(Number(w),{publicKey:N,secretKey:O});}catch{}return y}exportCredentials(){let e={};for(let[t,i]of this._ratchetStates){let s={sendChainKey:(0, g.encodeBase64)(i.sendChainKey),sendStep:i.sendStep,recvChainKey:(0, g.encodeBase64)(i.recvChainKey),recvStep:i.recvStep};i.rootKey&&(s.rootKey=(0, g.encodeBase64)(i.rootKey)),i.dhSendKeyPair&&(s.dhSendSecretKey=(0, g.encodeBase64)(i.dhSendKeyPair.secretKey),s.dhSendPublicKey=(0, g.encodeBase64)(i.dhSendKeyPair.publicKey)),i.dhRecvPubKey&&(s.dhRecvPubKey=(0, g.encodeBase64)(i.dhRecvPubKey)),i.prevSendStep!==void 0&&(s.prevSendStep=i.prevSendStep),i.x3dhInit&&(s.x3dhEkPub=(0, g.encodeBase64)(i.x3dhInit.ekPub),s.x3dhSpkId=i.x3dhInit.spkId,i.x3dhInit.pqCt&&(s.x3dhPqCt=(0, g.encodeBase64)(i.x3dhInit.pqCt))),i.skippedKeys?.size&&(s.skippedKeys=Object.fromEntries([...i.skippedKeys].map(([o,d])=>[String(o),(0, g.encodeBase64)(d)]))),i.dhSkippedKeys?.size&&(s.dhSkippedKeys=Object.fromEntries([...i.dhSkippedKeys].map(([o,d])=>[o,(0, g.encodeBase64)(d)]))),e[t]=s;}return {did:this.did,apiKey:this.apiKey,signingSecretKey:(0, g.encodeBase64)(this.signingKeyPair.secretKey),encryptionSecretKey:(0, g.encodeBase64)(this.encryptionKeyPair.secretKey),signingPublicKey:(0, g.encodeBase64)(this.signingKeyPair.publicKey),encryptionPublicKey:(0, g.encodeBase64)(this.encryptionKeyPair.publicKey),...Object.keys(e).length>0?{ratchetStates:e}:{},...this.mlkemPublicKey?{mlkemPublicKey:(0, g.encodeBase64)(this.mlkemPublicKey)}:{},...this.mlkemSecretKey?{mlkemSecretKey:(0, g.encodeBase64)(this.mlkemSecretKey)}:{},...this._signedPrekey?{signedPrekeySecret:(0, g.encodeBase64)(this._signedPrekey.secretKey),signedPrekeyPublic:(0, g.encodeBase64)(this._signedPrekey.publicKey),signedPrekeyId:this._signedPrekeyId}:{},...this._signedPrekeyHistory.size>0?{signedPrekeyHistory:Object.fromEntries([...this._signedPrekeyHistory].map(([t,i])=>[String(t),{p:(0, g.encodeBase64)(i.publicKey),s:(0, g.encodeBase64)(i.secretKey)}]))}:{},...this._peerDecryptFails.size>0?{peerDecryptFails:Object.fromEntries(this._peerDecryptFails)}:{}}}_derivePersistKey(){if(this._persistKey)return this._persistKey;let e=(0, g.decodeUTF8)("voidly-persist-v1"),t=new Uint8Array(this.signingKeyPair.secretKey.length+e.length);return t.set(this.signingKeyPair.secretKey,0),t.set(e,this.signingKeyPair.secretKey.length),this._persistKey=A.default.hash(t).slice(0,32),this._persistKey}async _persistRatchetState(){if(this._persistMode!=="memory")try{let e=this.exportCredentials(),t=JSON.stringify(e.ratchetStates||{}),i=this._derivePersistKey(),s=A.default.randomBytes(24),o=A.default.secretbox((0,g.decodeUTF8)(t),s,i),d=JSON.stringify({n:(0,g.encodeBase64)(s),c:(0,g.encodeBase64)(o),v:1});switch(this._persistMode){case "localStorage":typeof localStorage<"u"&&localStorage.setItem(`voidly-ratchet-${this.did}`,d);break;case "indexedDB":await this._idbPut(d);break;case "file":this._persistPath&&await(await import('fs/promises')).writeFile(this._persistPath,d,"utf-8");break;case "relay":await this._timedFetch(`${this.baseUrl}/v1/agent/memory/ratchet/state`,{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({value:d})}).catch(h=>{console.warn(`[voidly] \u26A0 Relay ratchet persist failed: ${h instanceof Error?h.message:h}`);});break;case "custom":this._onPersist&&await this._onPersist(d);break}}catch(e){console.warn(`[voidly] \u26A0 Ratchet state persistence failed (${this._persistMode}): ${e instanceof Error?e.message:e}`);}}async _loadPersistedRatchetState(){if(this._persistMode==="memory")return;let e=null;try{switch(this._persistMode){case "localStorage":typeof localStorage<"u"&&(e=localStorage.getItem(`voidly-ratchet-${this.did}`));break;case "indexedDB":e=await this._idbGet();break;case "file":if(this._persistPath)try{e=await(await import('fs/promises')).readFile(this._persistPath,"utf-8");}catch{}break;case "relay":try{let t=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/ratchet/state`,{headers:{"X-Agent-Key":this.apiKey}});t.ok&&(e=(await t.json()).value);}catch(t){console.warn(`[voidly] \u26A0 Relay ratchet load failed: ${t instanceof Error?t.message:t}`);}break;case "custom":this._onLoad&&(e=await this._onLoad());break}}catch(t){console.warn(`[voidly] \u26A0 Ratchet state load failed (${this._persistMode}): ${t instanceof Error?t.message:t}`);return}if(e)try{let{n:t,c:i}=JSON.parse(e),s=this._derivePersistKey(),o=A.default.secretbox.open((0,g.decodeBase64)(i),(0,g.decodeBase64)(t),s);if(!o)return;let d=JSON.parse((0,g.encodeUTF8)(o));for(let[h,y]of Object.entries(d)){if(!y||typeof y.sendStep!="number"||typeof y.recvStep!="number"||typeof y.sendChainKey!="string"||typeof y.recvChainKey!="string"||y.sendStep<0||y.recvStep<0||y.sendStep>4294967295||y.recvStep>4294967295)continue;if(this._ratchetStates.has(h)){let b=this._ratchetStates.get(h),O=b.sendStep+b.recvStep;if((y.sendStep||0)+(y.recvStep||0)<=O)continue}let w={sendChainKey:(0,g.decodeBase64)(y.sendChainKey),sendStep:y.sendStep,recvChainKey:(0,g.decodeBase64)(y.recvChainKey),recvStep:y.recvStep,skippedKeys:new Map};y.rootKey&&typeof y.rootKey=="string"&&(w.rootKey=(0,g.decodeBase64)(y.rootKey)),typeof y.dhSendSecretKey=="string"&&typeof y.dhSendPublicKey=="string"&&(w.dhSendKeyPair={secretKey:(0,g.decodeBase64)(y.dhSendSecretKey),publicKey:(0,g.decodeBase64)(y.dhSendPublicKey)}),typeof y.dhRecvPubKey=="string"&&(w.dhRecvPubKey=(0,g.decodeBase64)(y.dhRecvPubKey)),typeof y.prevSendStep=="number"&&y.prevSendStep>=0&&(w.prevSendStep=y.prevSendStep),w.sendChainKey.length===32&&w.recvChainKey.length===32&&this._ratchetStates.set(h,w);}}catch(t){console.warn(`[voidly] \u26A0 Ratchet state restore failed (corrupt data, starting fresh): ${t instanceof Error?t.message:t}`);}}async _idbPut(e){if(!(typeof indexedDB>"u"))return new Promise((t,i)=>{let s=indexedDB.open("voidly-agent",1);s.onupgradeneeded=()=>{let o=s.result;o.objectStoreNames.contains("ratchet")||o.createObjectStore("ratchet");},s.onsuccess=()=>{let o=s.result.transaction("ratchet","readwrite");o.objectStore("ratchet").put(e,this.did),o.oncomplete=()=>t(),o.onerror=()=>i(o.error);},s.onerror=()=>i(s.error);})}async _idbGet(){return typeof indexedDB>"u"?null:new Promise((e,t)=>{let i=indexedDB.open("voidly-agent",1);i.onupgradeneeded=()=>{let s=i.result;s.objectStoreNames.contains("ratchet")||s.createObjectStore("ratchet");},i.onsuccess=()=>{let o=i.result.transaction("ratchet","readonly").objectStore("ratchet").get(this.did);o.onsuccess=()=>e(o.result||null),o.onerror=()=>t(o.error);},i.onerror=()=>t(i.error);})}async flushRatchetState(){let e=this._persistMode;e==="memory"&&(this._persistMode="file"),await this._persistRatchetState(),this._persistMode=e;}static async fromCredentialsAsync(e,t){let i=n.fromCredentials(e,t);return await i._loadPersistedRatchetState(),i}get decryptFailCount(){return this._decryptFailCount}get peerDecryptFails(){return Object.fromEntries(this._peerDecryptFails)}resetRatchet(e){let t=`${this.did}:${e}`,i=`${e}:${this.did}`,s=this._ratchetStates.delete(t),o=this._ratchetStates.delete(i);return this._peerDecryptFails.delete(e),(s||o)&&this._persistRatchetState().catch(()=>{}),s||o}get didKey(){let e=new Uint8Array(2+this.signingKeyPair.publicKey.length);return e[0]=237,e[1]=1,e.set(this.signingKeyPair.publicKey,2),`did:key:z${Hi(e)}`}async send(e,t,i={}){let s=`send:${e}`;for(;this._sendLocks.has(s);)await this._sendLocks.get(s);let o;this._sendLocks.set(s,new Promise(d=>{o=d;}));try{return await this._sendInner(e,t,i)}finally{this._sendLocks.delete(s),o();}}async _sendInner(e,t,i={}){let s=i.retries??this.defaultRetries,o=!i.noPadding&&this.paddingEnabled,d=i.sealedSender??this.sealedSender,h=await this.getIdentity(e);if(!h)throw new Error(`Recipient ${e} not found`);this.autoPin&&!i.skipPin&&await this._autoPinKeys(e);let y=(0, g.decodeBase64)(h.encryption_public_key),w=t;d&&(w=Ui(this.did,t,{contentType:i.contentType,messageType:i.messageType,threadId:i.threadId,replyTo:i.replyTo}));let b;o?b=Ai((0, g.decodeUTF8)(w)):b=(0, g.decodeUTF8)(w);let O=`${this.did}:${e}`,N=this._ratchetStates.get(O),D=null,I=null,pe=null,oe=null;if(N)N.rootKey&&N.dhSendKeyPair&&(I=N.dhSendKeyPair.publicKey,N.x3dhInit&&(pe=N.x3dhInit.ekPub,oe=N.x3dhInit.spkId,N.x3dhInit.pqCt&&(D=N.x3dhInit.pqCt)));else {let ae=null;if(this.doubleRatchet)try{let X=await this.fetchPrekeys(e);if(X&&X.signed_prekey){let ce=(0,g.decodeBase64)(X.signed_prekey.public_key),_e=(0,g.decodeBase64)(X.signed_prekey.signature),xe=(0,g.decodeBase64)(X.signing_key);if(!A.default.sign.detached.verify(ce,_e,xe))throw new Error("X3DH signed-prekey signature verification failed \u2014 possible MITM, aborting send");let ve=A.default.box.keyPair(),we=A.default.box.before(ce,this.encryptionKeyPair.secretKey),Ee=A.default.box.before(y,ve.secretKey),Q=A.default.box.before(ce,ve.secretKey);ae=await gn([we,Ee,Q]),pe=ve.publicKey,oe=X.signed_prekey.id;}}catch(X){if(X instanceof Error&&X.message.includes("signature verification failed"))throw X;ae=null,pe=null,oe=null;}ae||(ae=A.default.box.before(y,this.encryptionKeyPair.secretKey));let z;if(this.postQuantum&&h.mlkem_public_key)try{let X=(0,g.decodeBase64)(h.mlkem_public_key),ce=new st,[_e,xe]=await ce.encap(X);D=_e;let ve=new Uint8Array(ae.length+xe.length);ve.set(ae,0),ve.set(xe,ae.length),z=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",ve));}catch{z=ae;}else z=ae;if(this.doubleRatchet){let X=A.default.box.keyPair(),ce=A.default.box.before(y,X.secretKey),{newRootKey:_e,newChainKey:xe}=await zt(z,ce);I=X.publicKey,N={sendChainKey:xe,sendStep:0,recvChainKey:z,recvStep:0,skippedKeys:new Map,rootKey:_e,dhSendKeyPair:X,dhRecvPubKey:void 0,prevSendStep:0,dhSkippedKeys:new Map};}else N={sendChainKey:z,sendStep:0,recvChainKey:z,recvStep:0,skippedKeys:new Map};this._ratchetStates.set(O,N),pe&&oe!==null&&(N.x3dhInit={ekPub:pe,spkId:oe,pqCt:D||void 0});}let{nextChainKey:$e,messageKey:rt}=await Bt(N.sendChainKey);N.sendChainKey=$e,N.sendStep++;let De=N.sendStep,ke=Ci;o&&(ke|=yn),d&&(ke|=pn),D&&(ke|=Ri),I&&(ke|=ji),pe&&(ke|=$i),this.deniable&&(ke|=Ii);let Ie=Mi(ke,De),Je=new Uint8Array(Ie.length+b.length);Je.set(Ie,0),Je.set(b,Ie.length);let Ye=A.default.randomBytes(A.default.secretbox.nonceLength),Be=A.default.secretbox(Je,Ye,rt);if(!Be)throw new Error("Encryption failed");if(this.jitterMs>0){let ae=Math.random()*this.jitterMs;await new Promise(z=>setTimeout(z,ae));}let Ne={from:this.did,to:e,timestamp:new Date().toISOString(),nonce:(0, g.encodeBase64)(Ye),ciphertext_hash:await kr((0, g.encodeBase64)(Be)),ratchet_step:De};D&&(Ne.pq_ciphertext=(0, g.encodeBase64)(D)),I&&(Ne.dh_ratchet_key=(0, g.encodeBase64)(I),Ne.pn=N.prevSendStep||0),pe&&oe!==null&&(Ne.x3dh_ek=(0, g.encodeBase64)(pe),Ne.x3dh_spk_id=oe);let ge=JSON.stringify(Ne),Pe;if(this.deniable){let ae=A.default.box.before(y,this.encryptionKeyPair.secretKey);Pe=await mn(ae,(0, g.decodeUTF8)(ge));}else Pe=A.default.sign.detached((0, g.decodeUTF8)(ge),this.signingKeyPair.secretKey);let U={to:e,ciphertext:(0, g.encodeBase64)(Be),nonce:(0, g.encodeBase64)(Ye),signature:(0, g.encodeBase64)(Pe),envelope:ge,ttl:i.ttl};d||(U.content_type=i.contentType||"text/plain",U.message_type=i.messageType||"text",U.thread_id=i.threadId,U.reply_to=i.replyTo);try{await this._persistRatchetState();}catch{}let E=[this.baseUrl,...this.fallbackRelays],be=null;for(let ae of E)try{let z=await this._fetchWithRetry(`${ae}/v1/agent/send/encrypted`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(U)},{maxRetries:s,baseDelay:500,maxDelay:1e4});return {id:z.id,from:z.from,to:z.to,timestamp:z.timestamp,expiresAt:z.expires_at||z.expiresAt,encrypted:z.encrypted,clientSide:z.client_side||z.clientSide}}catch(z){if(be=z instanceof Error?z:new Error(String(z)),be.message.includes("(4"))break}throw be&&!be.message.includes("(4")&&this._offlineQueue.push({recipientDid:e,message:t,options:i,timestamp:Date.now()}),be||new Error("Send failed")}async receive(e={}){let t=new URLSearchParams;e.since&&t.set("since",e.since),e.limit&&t.set("limit",String(e.limit)),e.from&&t.set("from",e.from),e.threadId&&t.set("thread_id",e.threadId),e.contentType&&t.set("content_type",e.contentType),e.messageType&&t.set("message_type",e.messageType),e.unreadOnly&&t.set("unread","true");let i=await this._resilientFetch(`/v1/agent/receive/raw?${t}`,{headers:{"X-Agent-Key":this.apiKey}});if(!i.ok){let h=await i.json().catch(()=>({}));throw new Error(`Receive failed: ${h.error?.message||h.error||i.statusText}`)}let s=await i.json(),{decrypted:o,failedIds:d}=await this._decryptMessages(s.messages);if(d.length>0)try{await this.markReadBatch(d);}catch{for(let h of d)try{await this.markRead(h);}catch{}}return o}async _decryptMessages(e){for(;this._decryptLock;)await this._decryptLock;let t;this._decryptLock=new Promise(i=>{t=i;});try{return await this._decryptMessagesInner(e)}finally{this._decryptLock=null,t();}}async _decryptMessagesInner(e){let t=[],i=[],s=new Set;for(let o of e)try{if(this._seenMessageIds.has(o.id)){i.push(o.id);continue}let d,h=null;if(o.sender_encryption_key)d=(0,g.decodeBase64)(o.sender_encryption_key),o.sender_signing_key&&(h=(0,g.decodeBase64)(o.sender_signing_key));else if(o.envelope){let U=JSON.parse(o.envelope),E=await this.getIdentity(U.from);if(!E){i.push(o.id);continue}d=(0,g.decodeBase64)(E.encryption_public_key),E.signing_public_key&&(h=(0,g.decodeBase64)(E.signing_public_key));}else {i.push(o.id);continue}let y=(0,g.decodeBase64)(o.ciphertext),w=(0,g.decodeBase64)(o.nonce),b=null,O=0,N=null,D=null,I=0,pe=null,oe=null;if(o.envelope)try{let U=JSON.parse(o.envelope);typeof U.ratchet_step=="number"&&Number.isInteger(U.ratchet_step)&&U.ratchet_step>=0&&U.ratchet_step<=4294967295&&(O=U.ratchet_step),typeof U.pq_ciphertext=="string"&&U.pq_ciphertext.length<=65536&&(N=U.pq_ciphertext),typeof U.dh_ratchet_key=="string"&&U.dh_ratchet_key.length<=256&&(D=U.dh_ratchet_key),typeof U.pn=="number"&&Number.isInteger(U.pn)&&U.pn>=0&&U.pn<=4294967295&&(I=U.pn),typeof U.x3dh_ek=="string"&&U.x3dh_ek.length<=256&&(pe=U.x3dh_ek),typeof U.x3dh_spk_id=="number"&&Number.isInteger(U.x3dh_spk_id)&&U.x3dh_spk_id>=0&&U.x3dh_spk_id<=4294967295&&(oe=U.x3dh_spk_id);}catch{}if(O>0){let U=`${o.from}:${this.did}`,E=this._ratchetStates.get(U);if(E){if(D&&E.rootKey){let z=(0,g.decodeBase64)(D),X=E.dhRecvPubKey;if(!X||(0,g.encodeBase64)(z)!==(0,g.encodeBase64)(X)){if(I>E.recvStep){let Ee=E.recvChainKey;for(let Q=E.recvStep+1;Q<=I&&Q-E.recvStep<=qt;Q++){let{nextChainKey:Ke,messageKey:ht}=await Bt(Ee),at=`${X?(0,g.encodeBase64)(X):"init"}:${Q}`;for(E.dhSkippedKeys||(E.dhSkippedKeys=new Map),E.dhSkippedKeys.set(at,ht),Ee=Ke;E.dhSkippedKeys.size>qt;){let nt=E.dhSkippedKeys.keys().next().value;if(nt!==void 0)E.dhSkippedKeys.delete(nt);else break}}}E.dhRecvPubKey=z;let ce=E.dhSendKeyPair||this.encryptionKeyPair,_e=A.default.box.before(z,ce.secretKey),xe=await zt(E.rootKey,_e);E.rootKey=xe.newRootKey,E.recvChainKey=xe.newChainKey,E.recvStep=0,E.prevSendStep=E.sendStep,E.dhSendKeyPair=A.default.box.keyPair(),E.sendStep=0;let ve=A.default.box.before(z,E.dhSendKeyPair.secretKey),we=await zt(E.rootKey,ve);E.rootKey=we.newRootKey,E.sendChainKey=we.newChainKey;}}}else {let z=null,X=null;if(oe!==null&&(X=this._signedPrekey&&oe===this._signedPrekeyId?this._signedPrekey:this._signedPrekeyHistory.get(oe)||null),pe&&this.doubleRatchet&&X)try{let _e=(0,g.decodeBase64)(pe),xe=A.default.box.before(d,X.secretKey),ve=A.default.box.before(_e,this.encryptionKeyPair.secretKey),we=A.default.box.before(_e,X.secretKey);z=await gn([xe,ve,we]);}catch{z=null;}z||(z=A.default.box.before(d,this.encryptionKeyPair.secretKey));let ce;if(N&&this.mlkemSecretKey)try{let _e=(0,g.decodeBase64)(N),ve=await new st().decap(_e,this.mlkemSecretKey),we=new Uint8Array(z.length+ve.length);we.set(z,0),we.set(ve,z.length),ce=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",we));}catch{ce=z;}else ce=z;if(D&&this.doubleRatchet){let _e=(0,g.decodeBase64)(D),xe=A.default.box.before(_e,this.encryptionKeyPair.secretKey),{newRootKey:ve,newChainKey:we}=await zt(ce,xe);E={sendChainKey:ce,sendStep:0,recvChainKey:we,recvStep:0,skippedKeys:new Map,rootKey:ve,dhSendKeyPair:void 0,dhRecvPubKey:_e,prevSendStep:0,dhSkippedKeys:new Map};}else E={sendChainKey:ce,sendStep:0,recvChainKey:ce,recvStep:0,skippedKeys:new Map};this._ratchetStates.set(U,E);}let be=O,ae=D?`${D}:${be}`:`init:${be}`;if(E.dhSkippedKeys?.has(ae)){let z=E.dhSkippedKeys.get(ae);b=A.default.secretbox.open(y,w,z),E.dhSkippedKeys.delete(ae);}else if(E.skippedKeys.has(be)){let z=E.skippedKeys.get(be);b=A.default.secretbox.open(y,w,z),E.skippedKeys.delete(be);}else if(be>E.recvStep)if(be-E.recvStep>qt){this._decryptFailCount++,i.push(o.id);let X=o.from||"unknown",ce=this._peerDecryptFails.get(X)||0;this._peerDecryptFails.set(X,ce+1),this._autoResetThreshold>0&&ce+1>=this._autoResetThreshold&&(this.resetRatchet(X),s.add(X),this._onRatchetReset?.(X,ce+1));continue}else {let X=E.recvChainKey;for(let xe=E.recvStep+1;xe<be;xe++){let{nextChainKey:ve,messageKey:we}=await Bt(X);for(E.skippedKeys.set(xe,we),X=ve;E.skippedKeys.size>qt;){let Ee=E.skippedKeys.keys().next().value;if(Ee!==void 0)E.skippedKeys.delete(Ee);else break}}let{nextChainKey:ce,messageKey:_e}=await Bt(X);E.recvChainKey=ce,E.recvStep=be,b=A.default.secretbox.open(y,w,_e);}if(!b&&E){this.resetRatchet(o.from),s.add(o.from),this._onRatchetReset?.(o.from,1),i.push(o.id);continue}b||(b=A.default.box.open(y,w,d,this.encryptionKeyPair.secretKey));}else b=A.default.box.open(y,w,d,this.encryptionKeyPair.secretKey);if(!b){this._decryptFailCount++,i.push(o.id);let U=o.from||"unknown",E=this._peerDecryptFails.get(U)||0;this._peerDecryptFails.set(U,E+1),this._autoResetThreshold>0&&E+1>=this._autoResetThreshold&&(this.resetRatchet(U),s.add(U),this._onRatchetReset?.(U,E+1));continue}{let U=o.from||"unknown";this._peerDecryptFails.has(U)&&this._peerDecryptFails.delete(U);}let $e=b,rt=!1,De=!1,ke=Fi(b);if(ke&&(rt=!!(ke.flags&yn),De=!!(ke.flags&pn),$e=ke.content),rt)$e=un($e);else if(!ke&&b.length>=256&&(b.length&b.length-1)===0){let U=un(b);U.length<b.length&&($e=U);}let Ie=(0,g.encodeUTF8)($e),Je=o.from,Ye,Be,Ne,ge;if(De||!ke){let U=Ei(Ie);U&&(Ie=U.msg,Je=U.from,Ye=U.contentType,Be=U.messageType,Ne=U.threadId,ge=U.replyTo);}let Pe=!1;try{let U=(0,g.decodeBase64)(o.signature),E=o.envelope||JSON.stringify({from:Je,to:o.to,timestamp:o.timestamp,nonce:o.nonce,ciphertext_hash:await kr(o.ciphertext)});if(U.length===32){let be=A.default.box.before(d,this.encryptionKeyPair.secretKey),ae=await mn(be,(0,g.decodeUTF8)(E));if(ae.length===U.length){let z=0;for(let X=0;X<ae.length;X++)z|=ae[X]^U[X];Pe=z===0;}}else h&&(Pe=A.default.sign.detached.verify((0,g.decodeUTF8)(E),U,h));}catch{Pe=!1;}if(this.requireSignatures&&!Pe){this._decryptFailCount++,i.push(o.id);let U=o.from||"unknown",E=this._peerDecryptFails.get(U)||0;this._peerDecryptFails.set(U,E+1);continue}if(this._seenMessageIds.add(o.id),this._seenMessageIds.size>1e4){let U=this._seenMessageIds.values();for(let E=0;E<1e3;E++){let be=U.next().value;be!==void 0&&this._seenMessageIds.delete(be);}}t.push({id:o.id,from:Je,to:o.to,content:Ie,contentType:Ye||o.content_type||"text/plain",messageType:Be||o.message_type||"text",threadId:Ne||o.thread_id||null,replyTo:ge||o.reply_to||null,signatureValid:Pe,timestamp:o.timestamp,expiresAt:o.expires_at});}catch{this._decryptFailCount++,i.push(o.id);let d=o.from||"unknown",h=this._peerDecryptFails.get(d)||0;this._peerDecryptFails.set(d,h+1),this._autoResetThreshold>0&&h+1>=this._autoResetThreshold&&(this.resetRatchet(d),s.add(d),this._onRatchetReset?.(d,h+1));}return (t.length>0||this._peerDecryptFails.size>0)&&this._persistRatchetState().catch(()=>{}),{decrypted:t,failedIds:i}}async deleteMessage(e){return (await this._timedFetch(`${this.baseUrl}/v1/agent/messages/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}})).ok}async getProfile(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/profile`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error("Failed to fetch profile");return await e.json()}async updateProfile(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/profile`,{method:"PATCH",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Profile update failed: ${i.error||t.statusText}`)}}async getIdentity(e){let t=this._identityCache.get(e);if(t&&Date.now()-t.cachedAt<3e5)return t.profile;let i=await this._resilientFetch(`/v1/agent/identity/${e}`);if(!i.ok)return null;let s=await i.json();if(this._identityCache.set(e,{profile:s,cachedAt:Date.now()}),this._identityCache.size>500){let o=this._identityCache.size-400,d=this._identityCache.keys();for(let h=0;h<o;h++){let y=d.next().value;y!==void 0&&this._identityCache.delete(y);}}return s}async discover(e={}){let t=new URLSearchParams;e.query&&t.set("query",e.query),e.capability&&t.set("capability",e.capability),e.limit&&t.set("limit",String(e.limit));let i=await this._resilientFetch(`/v1/agent/discover?${t}`);return i.ok?(await i.json()).agents:[]}async stats(){return await(await this._timedFetch(`${this.baseUrl}/v1/agent/stats`)).json()}async registerWebhook(e,t={}){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({webhook_url:e,events:t.events})});if(!i.ok){let s=await i.json().catch(()=>({}));throw new Error(`Webhook registration failed: ${s.error?.message||s.error||i.statusText}`)}return await i.json()}async listWebhooks(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks`,{headers:{"X-Agent-Key":this.apiKey}});return e.ok?(await e.json()).webhooks:[]}async deleteWebhook(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/webhooks/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Webhook delete failed: ${i.error||t.statusText}`)}}static async verifyWebhookSignature(e,t,i){let s=new TextEncoder;if(typeof globalThis.crypto?.subtle<"u"){let y=await globalThis.crypto.subtle.importKey("raw",s.encode(i),{name:"HMAC",hash:"SHA-256"},false,["sign"]),w=await globalThis.crypto.subtle.sign("HMAC",y,s.encode(e)),b=`sha256=${Array.from(new Uint8Array(w)).map(I=>I.toString(16).padStart(2,"0")).join("")}`;if(t.length!==b.length)return false;let O=s.encode(t),N=s.encode(b),D=0;for(let I=0;I<O.length;I++)D|=O[I]^N[I];return D===0}let{createHmac:o,timingSafeEqual:d}=await import('crypto'),h=`sha256=${o("sha256",i).update(e).digest("hex")}`;return t.length!==h.length?false:d(Buffer.from(t),Buffer.from(h))}async rotateKeys(){let e=A.default.sign.keyPair(),t=A.default.box.keyPair(),i=A.default.box.keyPair(),s=(this._signedPrekeyId||0)+1,o=A.default.sign.detached(i.publicKey,e.secretKey),d={signing_public_key:(0, g.encodeBase64)(e.publicKey),encryption_public_key:(0, g.encodeBase64)(t.publicKey),signed_prekey_public:(0, g.encodeBase64)(i.publicKey),signed_prekey_signature:(0, g.encodeBase64)(o),signed_prekey_id:s},h=null;if(this.postQuantum&&this.mlkemPublicKey){let w=new st,[b,O]=await w.generateKeyPair();d.mlkem_public_key=(0, g.encodeBase64)(b),h=O;}if(!(await this._timedFetch(`${this.baseUrl}/v1/agent/rotate-keys`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(d)})).ok)throw new Error("Key rotation failed");this.signingKeyPair=e,this.encryptionKeyPair=t,this._signedPrekey=i,this._signedPrekeyId=s,h&&(this.mlkemSecretKey=h,this.mlkemPublicKey=(0, g.decodeBase64)(d.mlkem_public_key)),this._identityCache.clear(),this._pinnedDids.clear(),await this.uploadPrekeys(10);}async claimUsername(e){let t=await this._resilientFetch("/v1/agent/username",{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({username:e})}),i=await t.json();if(!t.ok)throw new Error(i.error||`Claim failed (${t.status})`);return i}async changeUsername(e){let t=await this._resilientFetch("/v1/agent/username",{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({username:e})}),i=await t.json();if(!t.ok)throw new Error(i.error||`Change failed (${t.status})`);return i}async releaseUsername(){let e=await this._resilientFetch("/v1/agent/username",{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok){let t=await e.json();throw new Error(t.error||`Release failed (${e.status})`)}}async getMyUsername(){let e=await this._resilientFetch("/v1/agent/username",{method:"GET",headers:{"X-Agent-Key":this.apiKey}}),t=await e.json();return e.ok&&t.username||null}static async resolveUsername(e,t="https://api.voidly.ai"){let i=e.toLowerCase().replace(/^@/,""),s=new AbortController,o=setTimeout(()=>s.abort(),3e4);try{let d=await fetch(`${t}/v1/agent/username/${encodeURIComponent(i)}`,{signal:s.signal});return d.ok?await d.json():null}catch{return null}finally{clearTimeout(o);}}async createChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Channel creation failed: ${i.error||t.statusText}`)}return await t.json()}async listChannels(e={}){let t=new URLSearchParams;e.topic&&t.set("topic",e.topic),e.query&&t.set("q",e.query),e.mine&&t.set("mine","true"),e.limit&&t.set("limit",String(e.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/channels?${t}`,{headers:e.mine?{"X-Agent-Key":this.apiKey}:{}});if(!i.ok){let o=await i.text().catch(()=>"");throw new Error(`listChannels failed: ${i.status} ${o.slice(0,200)}`)}return (await i.json()).channels}async joinChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/join`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Join failed: ${i.error||t.statusText}`)}return await t.json()}async leaveChannel(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/leave`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Leave failed: ${i.error||t.statusText}`)}}async postToChannel(e,t,i){let s=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message:t,reply_to:i})});if(!s.ok){let o=await s.json().catch(()=>({}));throw new Error(`Post failed: ${o.error||s.statusText}`)}return await s.json()}async readChannel(e,t={}){let i=new URLSearchParams;t.since&&i.set("since",t.since),t.before&&i.set("before",t.before),t.limit&&i.set("limit",String(t.limit));let s=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages?${i}`,{headers:{"X-Agent-Key":this.apiKey}});if(!s.ok){let o=await s.json().catch(()=>({}));throw new Error(`Read failed: ${o.error||s.statusText}`)}return await s.json()}async deactivate(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/deactivate`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok){let t=await e.json().catch(()=>({}));throw new Error(`Deactivate failed: ${t.error||e.statusText}`)}}async registerCapability(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({name:e.name,description:e.description,input_schema:e.inputSchema,output_schema:e.outputSchema,version:e.version})});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Capability registration failed: ${i.error||t.statusText}`)}return await t.json()}async listCapabilities(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities`,{headers:{"X-Agent-Key":this.apiKey}});return e.ok?(await e.json()).capabilities:[]}async searchCapabilities(e={}){let t=new URLSearchParams;e.query&&t.set("q",e.query),e.name&&t.set("name",e.name),e.limit&&t.set("limit",String(e.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities/search?${t}`);return i.ok?(await i.json()).results:[]}async deleteCapability(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/capabilities/${e}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Delete failed: ${i.error||t.statusText}`)}}async createTask(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${e.to}`);if(!t.ok)throw new Error("Recipient agent not found");let i=await t.json(),s=(0, g.decodeBase64)(i.encryption_public_key),o=(0, g.decodeUTF8)(JSON.stringify(e.input)),d=A.default.randomBytes(A.default.box.nonceLength),h=A.default.box(o,d,s,this.encryptionKeyPair.secretKey),y=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({to:e.to,capability:e.capability,encrypted_input:(0, g.encodeBase64)(h),input_nonce:(0, g.encodeBase64)(d),priority:e.priority||"normal",expires_in:e.expiresIn})});if(!y.ok){let w=await y.json().catch(()=>({}));throw new Error(`Task creation failed: ${w.error||y.statusText}`)}return await y.json()}async listTasks(e={}){let t=new URLSearchParams;e.role&&t.set("role",e.role),e.status&&t.set("status",e.status),e.capability&&t.set("capability",e.capability),e.limit&&t.set("limit",String(e.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks?${t}`,{headers:{"X-Agent-Key":this.apiKey}});return i.ok?(await i.json()).tasks:[]}async getTask(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/${e}`,{headers:{"X-Agent-Key":this.apiKey}});if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Get task failed: ${i.error||t.statusText}`)}return await t.json()}async updateTask(e,t){let i={};if(t.status&&(i.status=t.status),t.rating!==void 0&&(i.rating=t.rating),t.ratingComment&&(i.rating_comment=t.ratingComment),t.output&&(t.status==="completed"||t.status==="failed")){let d=(await this.getTask(e)).from,h=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${d}`);if(h.ok){let y=await h.json(),w=(0, g.decodeBase64)(y.encryption_public_key),b=(0, g.decodeUTF8)(JSON.stringify(t.output)),O=A.default.randomBytes(A.default.box.nonceLength),N=A.default.box(b,O,w,this.encryptionKeyPair.secretKey),D=A.default.sign.detached(b,this.signingKeyPair.secretKey);i.encrypted_output=(0, g.encodeBase64)(N),i.output_nonce=(0, g.encodeBase64)(O),i.output_signature=(0, g.encodeBase64)(D);}}let s=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(i)});if(!s.ok){let o=await s.json().catch(()=>({}));throw new Error(`Task update failed: ${o.error||s.statusText}`)}return await s.json()}decryptTaskInput(e,t){try{let i=(0,g.decodeBase64)(e.encrypted_input),s=(0,g.decodeBase64)(e.input_nonce),o=A.default.box.open(i,s,t,this.encryptionKeyPair.secretKey);return o?JSON.parse((0,g.encodeUTF8)(o)):null}catch{return null}}decryptTaskOutput(e,t){try{let i=(0,g.decodeBase64)(e.encrypted_output),s=(0,g.decodeBase64)(e.output_nonce),o=A.default.box.open(i,s,t,this.encryptionKeyPair.secretKey);return o?JSON.parse((0,g.encodeUTF8)(o)):null}catch{return null}}async attest(e){let t=e.timestamp||new Date().toISOString(),i=e.claimType+JSON.stringify(e.claimData)+t,s=(0, g.decodeUTF8)(i),o=A.default.sign.detached(s,this.signingKeyPair.secretKey),d=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({claim_type:e.claimType,claim_data:e.claimData,signature:(0, g.encodeBase64)(o),timestamp:t,country:e.country,domain:e.domain,confidence:e.confidence,expires_in:e.expiresIn})});if(!d.ok){let h=await d.json().catch(()=>({}));throw new Error(`Attestation failed: ${h.error||d.statusText}`)}return await d.json()}async corroborate(e,t,i){let s=e+t,o=(0, g.decodeUTF8)(s),d=A.default.sign.detached(o,this.signingKeyPair.secretKey),h=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/${e}/corroborate`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({vote:t,signature:(0, g.encodeBase64)(d),comment:i})});if(!h.ok){let y=await h.json().catch(()=>({}));throw new Error(`Corroboration failed: ${y.error||h.statusText}`)}return await h.json()}async queryAttestations(e={}){let t=new URLSearchParams;e.country&&t.set("country",e.country),e.domain&&t.set("domain",e.domain),e.type&&t.set("type",e.type),e.agent&&t.set("agent",e.agent),e.minConsensus!==void 0&&t.set("min_consensus",String(e.minConsensus)),e.since&&t.set("since",e.since),e.limit&&t.set("limit",String(e.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations?${t}`);return i.ok?(await i.json()).attestations:[]}async getAttestation(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/${e}`);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Get attestation failed: ${i.error||t.statusText}`)}return await t.json()}async getConsensus(e){let t=new URLSearchParams;e.country&&t.set("country",e.country),e.domain&&t.set("domain",e.domain),e.type&&t.set("type",e.type);let i=await this._timedFetch(`${this.baseUrl}/v1/agent/attestations/consensus?${t}`);return i.ok?(await i.json()).consensus:[]}async inviteToChannel(e,t,i){let s=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/invite`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({did:t,message:i?.message,expires_hours:i?.expiresHours})});if(!s.ok){let o=await s.json().catch(()=>({}));throw new Error(`Invite failed: ${o.error||s.statusText}`)}return await s.json()}async listInvites(e="pending"){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/invites?status=${e}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok){let s=await t.text().catch(()=>"");throw new Error(`listInvites failed: ${t.status} ${s.slice(0,200)}`)}return (await t.json()).invites}async respondToInvite(e,t){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/invites/${e}/respond`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({action:t})});if(!i.ok){let s=await i.json().catch(()=>({}));throw new Error(`Invite response failed: ${s.error||i.statusText}`)}return await i.json()}async getTrustScore(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/trust/${e}`);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(`Trust score failed: ${i.error||t.statusText}`)}return await t.json()}async getTrustLeaderboard(e){let t=new URLSearchParams;e?.limit&&t.set("limit",e.limit.toString()),e?.minLevel&&t.set("min_level",e.minLevel);let i=await this._timedFetch(`${this.baseUrl}/v1/agent/trust/leaderboard?${t}`);return i.ok?(await i.json()).leaderboard:[]}async markRead(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/${e}/read`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Failed to mark message as read: ${t.status}`);return await t.json()}async markReadBatch(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/read-batch`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message_ids:e})});if(!t.ok)throw new Error(`Failed to batch mark messages as read: ${t.status}`);return await t.json()}async getUnreadCount(e){let t=new URLSearchParams;e&&t.set("from",e);let i=await this._timedFetch(`${this.baseUrl}/v1/agent/messages/unread-count?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!i.ok)throw new Error(`Failed to get unread count: ${i.status}`);return await i.json()}async broadcastTask(e){let t=(0, g.decodeUTF8)(e.input),i=A.default.randomBytes(A.default.secretbox.nonceLength),s=A.default.secretbox(t,i,A.default.box.before(this.encryptionKeyPair.publicKey,this.encryptionKeyPair.secretKey)),o=A.default.sign.detached(t,this.signingKeyPair.secretKey),d=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcast`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({capability:e.capability,encrypted_input:(0, g.encodeBase64)(s),input_nonce:(0, g.encodeBase64)(i),input_signature:(0, g.encodeBase64)(o),priority:e.priority,max_agents:e.maxAgents,min_trust_level:e.minTrustLevel,expires_in:e.expiresIn})});if(!d.ok){let h=await d.json().catch(()=>({}));throw new Error(h.error||`Broadcast failed: ${d.status}`)}return await d.json()}async listBroadcasts(e){let t=new URLSearchParams;e&&t.set("status",e);let i=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcasts?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});return i.ok?(await i.json()).broadcasts:[]}async getBroadcast(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/tasks/broadcasts/${e}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Failed to get broadcast: ${t.status}`);return await t.json()}async getAnalytics(e){let t=new URLSearchParams;e&&t.set("period",e);let i=await this._timedFetch(`${this.baseUrl}/v1/agent/analytics?${t}`,{headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey}});if(!i.ok)throw new Error(`Failed to get analytics: ${i.status}`);return await i.json()}static verifyAttestation(e,t){try{let i=e.claim_type+JSON.stringify(e.claim_data)+e.timestamp,s=(0,g.decodeUTF8)(i),o=(0,g.decodeBase64)(e.signature),d=(0,g.decodeBase64)(t);return A.default.sign.detached.verify(s,o,d)}catch{return false}}async memorySet(e,t,i,s){let o=JSON.stringify(i),d=(0, g.decodeUTF8)(o),h=A.default.randomBytes(A.default.secretbox.nonceLength),y=new Uint8Array([...this.encryptionKeyPair.secretKey,77,69,77]),w;if(typeof globalThis.crypto?.subtle<"u")w=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",y));else {let{createHash:N}=await import('crypto');w=new Uint8Array(N("sha256").update(Buffer.from(y)).digest());}let b=A.default.secretbox(d,h,w),O=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"PUT",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({value:(0, g.encodeBase64)(b),value_type:`encrypted:${s?.valueType||(typeof i=="object"?"json":typeof i)}`,ttl:s?.ttl,client_nonce:(0, g.encodeBase64)(h)})});if(!O.ok)throw new Error(`Memory set failed: ${O.status} ${await O.text()}`);return O.json()}async memoryGet(e,t){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:{"X-Agent-Key":this.apiKey}});if(i.status===404)return null;if(!i.ok)throw new Error(`Memory get failed: ${i.status} ${await i.text()}`);let s=await i.json();if(s.value_type?.startsWith("encrypted:")&&s.client_nonce)try{let o=new Uint8Array([...this.encryptionKeyPair.secretKey,77,69,77]),d;if(typeof globalThis.crypto?.subtle<"u")d=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",o));else {let{createHash:b}=await import('crypto');d=new Uint8Array(b("sha256").update(Buffer.from(o)).digest());}let h=(0,g.decodeBase64)(s.value),y=(0,g.decodeBase64)(s.client_nonce),w=A.default.secretbox.open(h,y,d);w&&(s.value=JSON.parse((0,g.encodeUTF8)(w)),s.value_type=s.value_type.replace("encrypted:",""));}catch{}return s}async memoryDelete(e,t){let i=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:"DELETE",headers:{"X-Agent-Key":this.apiKey}});if(!i.ok)throw new Error(`Memory delete failed: ${i.status} ${await i.text()}`);return i.json()}async memoryList(e,t){let i=e||"default",s=new URLSearchParams;t?.prefix&&s.set("prefix",t.prefix),t?.limit&&s.set("limit",String(t.limit));let o=s.toString()?`?${s.toString()}`:"",d=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/${encodeURIComponent(i)}${o}`,{headers:{"X-Agent-Key":this.apiKey}});if(!d.ok)throw new Error(`Memory list failed: ${d.status} ${await d.text()}`);return d.json()}async memoryNamespaces(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/memory`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`Memory namespaces failed: ${e.status} ${await e.text()}`);return e.json()}async memoryBatch(e){if(!Array.isArray(e)||e.length===0)throw new Error("ops array required (1-50)");if(e.length>50)throw new Error("Maximum 50 ops per batch");let t=new Uint8Array([...this.encryptionKeyPair.secretKey,77,69,77]),i;if(typeof globalThis.crypto?.subtle<"u")i=new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256",t));else {let{createHash:h}=await import('crypto');i=new Uint8Array(h("sha256").update(Buffer.from(t)).digest());}let s=e.map(h=>{if(h.op==="set"){let y=JSON.stringify(h.value),w=(0, g.decodeUTF8)(y),b=A.default.randomBytes(A.default.secretbox.nonceLength),O=A.default.secretbox(w,b,i),N=h.ttl?new Date(Date.now()+h.ttl*1e3).toISOString():void 0;return {op:"set",namespace:h.namespace,key:h.key,value:(0, g.encodeBase64)(O),client_nonce:(0, g.encodeBase64)(b),expires_at:N}}return {op:h.op,namespace:h.namespace,key:h.key}}),o=await this._timedFetch(`${this.baseUrl}/v1/agent/memory/batch`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({ops:s})});if(!o.ok)throw new Error(`Memory batch failed: ${o.status} ${await o.text()}`);return ((await o.json()).results||[]).map(h=>{if(h.op==="get"&&h.found&&h.value&&h.client_nonce)try{let y=(0,g.decodeBase64)(h.value),w=(0,g.decodeBase64)(h.client_nonce),b=A.default.secretbox.open(y,w,i);if(b)return {index:h.index,op:"get",namespace:h.namespace,key:h.key,found:!0,value:JSON.parse((0,g.encodeUTF8)(b)),expiresAt:h.expires_at||null}}catch{}return {index:h.index,op:h.op,namespace:h.namespace,key:h.key,found:h.found,value:h.value,expiresAt:h.expires_at||null,ok:h.ok,error:h.error}})}async onlineAgents(e={}){let t=new URLSearchParams;e.withinMinutes!=null&&t.set("within_minutes",String(e.withinMinutes)),e.capability&&t.set("capability",e.capability),e.limit!=null&&t.set("limit",String(e.limit));let i=await this._timedFetch(`${this.baseUrl}/v1/agent/online?${t.toString()}`);if(!i.ok)throw new Error(`onlineAgents failed: ${i.status} ${await i.text()}`);return (await i.json()).agents||[]}subscribe(e={}){return this.messages(e)}async findBest(e){let t=new URLSearchParams({query:e.query});e.maxPriceCredits!=null&&t.set("max_price_credits",String(e.maxPriceCredits)),e.minTrust!=null&&t.set("min_trust",String(e.minTrust)),e.limit!=null&&t.set("limit",String(e.limit)),e.includeFree===false&&t.set("free","false"),e.includePriced===false&&t.set("priced","false");let i=await this._timedFetch(`${this.baseUrl}/v1/agent/find?${t.toString()}`);if(!i.ok)throw new Error(`findBest failed: ${i.status} ${await i.text()}`);return (await i.json()).matches||[]}async marketplaceList(e){let t=await Promise.resolve().then(()=>(et(),Ze)),{envelope:i,signature:s}=t.buildListingEnvelope({providerDid:this.did,signingSecretKey:this.signingKeyPair.secretKey,...e});return t.listCapability({baseUrl:this.baseUrl,envelope:i,signature:s})}async marketplaceSearch(e={}){return (await(await Promise.resolve().then(()=>(et(),Ze))).searchCapabilities({baseUrl:this.baseUrl,...e})).capabilities}async marketplaceGet(e){return (await Promise.resolve().then(()=>(et(),Ze))).getCapability({baseUrl:this.baseUrl,id:e})}async marketplaceListByProvider(e){return (await Promise.resolve().then(()=>(et(),Ze))).listCapabilitiesByDid({baseUrl:this.baseUrl,did:e})}async marketplaceHire(e){let t=await Promise.resolve().then(()=>(et(),Ze)),{envelope:i,signature:s}=t.buildHireEnvelope({requesterDid:this.did,signingSecretKey:this.signingKeyPair.secretKey,...e});return t.hire({baseUrl:this.baseUrl,envelope:i,signature:s})}async marketplaceIncoming(e={}){return (await Promise.resolve().then(()=>(et(),Ze))).listHiresIncoming({baseUrl:this.baseUrl,did:this.did,...e})}async marketplaceOutgoing(e={}){return (await Promise.resolve().then(()=>(et(),Ze))).listHiresOutgoing({baseUrl:this.baseUrl,did:this.did,...e})}async marketplaceGetHire(e){return (await Promise.resolve().then(()=>(et(),Ze))).getHire({baseUrl:this.baseUrl,id:e})}async claimFaucet(){let e=await Promise.resolve().then(()=>(et(),Ze)),{envelope:t,signature:i}=e.buildFaucetEnvelope({did:this.did,signingSecretKey:this.signingKeyPair.secretKey});return e.claimFaucet({baseUrl:this.baseUrl,envelope:t,signature:i})}async walletBalance(e){return (await Promise.resolve().then(()=>(et(),Ze))).getWalletBalance({baseUrl:this.baseUrl,did:e||this.did})}async ensureCredits(e){let t=await this.walletBalance(),i=t?.balance_credits??0;if(i>=e)return {sufficient:true,balance_micro:i,faucet_claimed:false};let s=await this.claimFaucet();if(s.ok&&typeof s.new_balance_micro=="number")return {sufficient:s.new_balance_micro>=e,balance_micro:s.new_balance_micro,faucet_claimed:true};t=await this.walletBalance();let o=t?.balance_credits??0;if(o<e)throw new Error(`ensureCredits: need ${e} micro, have ${o}, faucet ${s.reason||"failed"}`);return {sufficient:true,balance_micro:o,faucet_claimed:false}}async payAndFetch(e,t={},i={}){let{payAndFetch:s}=await Promise.resolve().then(()=>(Nt(),yr));return s(fetch,e,t,{fromDid:this.did,signingSecretKey:this.signingKeyPair.secretKey,maxAmountMicro:i.maxAmountMicro,memo:i.memo})}async buildPayment(e){let{buildPaymentPayload:t}=await Promise.resolve().then(()=>(Nt(),yr));return t({fromDid:this.did,payTo:e.payTo,amountMicro:e.amountMicro,signingSecretKey:this.signingKeyPair.secretKey,resourceUrl:e.resourceUrl,memo:e.memo,ttlSeconds:e.ttlSeconds})}async sendMany(e){if(!Array.isArray(e)||e.length===0)throw new Error("messages required (1-50)");if(e.length>50)throw new Error("Maximum 50 messages per batch");return (await Promise.allSettled(e.map(i=>this.send(i.to,i.body,i.options||{})))).map((i,s)=>({index:s,to:e[s].to,ok:i.status==="fulfilled",result:i.status==="fulfilled"?i.value:void 0,error:i.status==="rejected"?String(i.reason?.message||i.reason):void 0}))}async exportData(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/export`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({include_messages:e?.includeMessages,include_channels:e?.includeChannels,include_tasks:e?.includeTasks,include_attestations:e?.includeAttestations,include_memory:e?.includeMemory,include_trust:e?.includeTrust})});if(!t.ok)throw new Error(`Export failed: ${t.status} ${await t.text()}`);return t.json()}async listExports(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/exports`,{headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`List exports failed: ${e.status} ${await e.text()}`);return e.json()}async getRelayInfo(){let e=await this._timedFetch(`${this.baseUrl}/v1/relay/info`);if(!e.ok)throw new Error(`Relay info failed: ${e.status} ${await e.text()}`);return e.json()}async getRelayPeers(){let e=await this._timedFetch(`${this.baseUrl}/v1/relay/peers`);if(!e.ok)throw new Error(`Relay peers failed: ${e.status} ${await e.text()}`);return e.json()}async routeMessage(e,t,i){let s=await this.getIdentity(e);if(!s)throw new Error(`Recipient ${e} not found`);let o=(0, g.decodeBase64)(s.encryption_public_key),d=A.default.randomBytes(A.default.box.nonceLength),h=A.default.box((0, g.decodeUTF8)(t),d,o,this.encryptionKeyPair.secretKey);if(!h)throw new Error("Encryption failed");let y=(0, g.decodeUTF8)(JSON.stringify({from:this.did,to:e,nonce:(0, g.encodeBase64)(d),ciphertext_hash:await kr((0, g.encodeBase64)(h))})),w=A.default.sign.detached(y,this.signingKeyPair.secretKey),b=await this._timedFetch(`${this.baseUrl}/v1/relay/route`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({to:e,ciphertext:(0, g.encodeBase64)(h),nonce:(0, g.encodeBase64)(d),signature:(0, g.encodeBase64)(w),content_type:i?.contentType||"text/plain",thread_id:i?.threadId})});if(!b.ok)throw new Error(`Route failed: ${b.status} ${await b.text()}`);return b.json()}async ping(){let e=await this._timedFetch(`${this.baseUrl}/v1/agent/ping`,{method:"POST",headers:{"X-Agent-Key":this.apiKey}});if(!e.ok)throw new Error(`Ping failed: ${e.status}`);return e.json()}async checkOnline(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/ping/${encodeURIComponent(e)}`);if(!t.ok)throw new Error(`Ping check failed: ${t.status}`);return t.json()}async pinKeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/pin`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({did:e})});if(!t.ok)throw new Error(`Key pin failed: ${t.status}`);return t.json()}async listPinnedKeys(e){let t=new URLSearchParams;e?.status&&t.set("status",e.status);let i=t.toString()?`?${t.toString()}`:"",s=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/pins${i}`,{headers:{"X-Agent-Key":this.apiKey}});if(!s.ok)throw new Error(`List pins failed: ${s.status}`);return s.json()}async verifyKeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/keys/verify/${encodeURIComponent(e)}`,{headers:{"X-Agent-Key":this.apiKey}});if(!t.ok)throw new Error(`Key verify failed: ${t.status}`);return t.json()}_archiveSignedPrekey(){if(this._signedPrekey&&this._signedPrekeyId)for(this._signedPrekeyHistory.set(this._signedPrekeyId,this._signedPrekey);this._signedPrekeyHistory.size>Oi;){let e=this._signedPrekeyHistory.keys().next().value;if(e===void 0)break;this._signedPrekeyHistory.delete(e);}}async uploadPrekeys(e=20){let t=[];for(let d=0;d<e;d++){let h=A.default.box.keyPair();t.push({id:Date.now()+d,public_key:(0, g.encodeBase64)(h.publicKey),secretKey:h.secretKey});}this._archiveSignedPrekey();let i=A.default.box.keyPair();this._signedPrekeyId++;let s=A.default.sign.detached(i.publicKey,this.signingKeyPair.secretKey);this._signedPrekey=i;let o=await this._timedFetch(`${this.baseUrl}/v1/agent/prekeys`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({prekeys:t.map(d=>({id:d.id,public_key:d.public_key})),signed_prekey:{public_key:(0, g.encodeBase64)(i.publicKey),signature:(0, g.encodeBase64)(s),id:this._signedPrekeyId}})});if(!o.ok)throw new Error(`Prekey upload failed: ${o.status}`);return await o.json()}async fetchPrekeys(e){let t=await this._timedFetch(`${this.baseUrl}/v1/agent/prekeys/${encodeURIComponent(e)}`);return t.ok?await t.json():null}async createEncryptedChannel(e){let t=A.default.randomBytes(32),i=await this._timedFetch(`${this.baseUrl}/v1/agent/channels`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify(e)});if(!i.ok){let h=await i.json().catch(()=>({}));throw new Error(`Channel creation failed: ${h.error||i.statusText}`)}let s=await i.json(),o=A.default.randomBytes(A.default.box.nonceLength);A.default.box(t,o,this.encryptionKeyPair.publicKey,this.encryptionKeyPair.secretKey);return await this.memorySet("channel-keys",s.id,{key:(0, g.encodeBase64)(t),nonce:(0, g.encodeBase64)(o)}),{...s,channelKey:t}}async postEncrypted(e,t,i){let s=A.default.randomBytes(A.default.secretbox.nonceLength),o=A.default.secretbox((0, g.decodeUTF8)(t),s,i),d=new Uint8Array([...o,...s]),h=A.default.sign.detached(d,this.signingKeyPair.secretKey),y=await this._timedFetch(`${this.baseUrl}/v1/agent/channels/${e}/messages`,{method:"POST",headers:{"Content-Type":"application/json","X-Agent-Key":this.apiKey},body:JSON.stringify({message:JSON.stringify({v:3,ct:(0, g.encodeBase64)(o),n:(0, g.encodeBase64)(s),sig:(0, g.encodeBase64)(h),from:this.did})})});if(!y.ok)throw new Error(`Post failed: ${y.status}`);return await y.json()}async readEncrypted(e,t,i){let s=await this.readChannel(e,i),o=[];for(let d of s.messages)try{let h=JSON.parse(typeof d.content=="string"?d.content:d.message||"");if(h.v===3&&h.ct&&h.n){let y=(0,g.decodeBase64)(h.ct),w=(0,g.decodeBase64)(h.n),b=A.default.secretbox.open(y,w,t);if(b){let O=!1;if(h.sig&&h.from)try{let N=await this.getIdentity(h.from);if(N){let D=new Uint8Array([...y,...w]);O=A.default.sign.detached.verify(D,(0,g.decodeBase64)(h.sig),(0,g.decodeBase64)(N.signing_public_key));}}catch{}o.push({id:d.id,from:h.from||d.author||"unknown",content:(0,g.encodeUTF8)(b),timestamp:d.created_at||d.timestamp,signatureValid:O});}}}catch{}return {messages:o,count:o.length}}listen(e,t={},i){let s=Math.max(t.interval||2e3,500),o=t.adaptive!==false,d=t.autoMarkRead!==false,h=t.unreadOnly!==false,y=t.heartbeat!==false,w=t.heartbeatInterval||6e4,b=true,O=s,N=0,D,I=null,pe=null,oe=null,$e={stop:()=>{b=false,I&&clearTimeout(I),pe&&clearInterval(pe),oe&&(oe.abort(),oe=null),this._listeners.delete($e);},get active(){return b}};this._listeners.add($e),y&&(pe=setInterval(async()=>{if(b)try{await this.ping();}catch{}},w),this.ping().catch(()=>{}));let rt=async ge=>{for(let Pe of ge)try{await e(Pe),d&&await this.markRead(Pe.id).catch(()=>{});}catch(U){i&&i(U instanceof Error?U:new Error(String(U)));}ge.length>0&&(D=ge[ge.length-1].timestamp);},De="",ke=0,Ie=async()=>{try{let ge=new URLSearchParams;D&&ge.set("since",D),t.from&&ge.set("from",t.from);let Pe=`${this.baseUrl}/v1/agent/receive/sse?${ge}`,U={"X-Agent-Key":this.apiKey};De&&(U["Last-Event-ID"]=De);let E=new AbortController;oe=E;let be=setTimeout(()=>E.abort(),6e4),ae;try{ae=await fetch(Pe,{headers:U,signal:E.signal});}catch(_e){throw clearTimeout(be),_e}if(!ae.ok||!ae.body)return clearTimeout(be),!1;let z=ae.body.getReader(),X=new TextDecoder,ce="";try{let _e="",xe="",ve="";for(;b&&!t.signal?.aborted;){let{done:we,value:Ee}=await z.read();if(we)break;ce+=X.decode(Ee,{stream:!0});let Q=ce.split(`
|
|
2
|
+
`);ce=Q.pop()||"";for(let Ke of Q)if(Ke.startsWith("event: "))_e=Ke.slice(7).trim();else if(Ke.startsWith("data: "))xe+=(xe?`
|
|
3
|
+
`:"")+Ke.slice(6);else if(Ke.startsWith("id: "))ve=Ke.slice(4).trim();else if(Ke===""&&(xe||_e)){if(ve&&(De=ve),_e==="message"&&xe)try{let ht=JSON.parse(xe),{decrypted:at,failedIds:nt}=await this._decryptMessages([ht]);for(let ut of nt)try{await this.markRead(ut);}catch{}at.length>0&&(N=0,ke=0,await rt(at));}catch{}else if(_e==="reconnect")break;_e="",xe="",ve="";}}}finally{z.releaseLock(),clearTimeout(be);}return ke=0,!0}catch{return ke++,false}},Je=async()=>{for(;b&&!t.signal?.aborted;){let ge=await Ie();if(!b||t.signal?.aborted)break;if(!ge){if(ke>=3){Be();return}let Pe=Math.min(1e3*Math.pow(2,ke-1),4e3);await new Promise(U=>setTimeout(U,Pe));continue}await new Promise(Pe=>setTimeout(Pe,500));}},Ye=this.longPoll,Be=async()=>{if(!b||t.signal?.aborted){$e.stop();return}try{let ge=await this.receive({since:D,from:t.from,threadId:t.threadId,messageType:t.messageType,unreadOnly:h,limit:50});ge.length>0?(N=0,o&&(O=Math.max(s/2,500)),await rt(ge)):(N++,o&&N>3&&!Ye&&(O=Math.min(O*1.5,s*4)));}catch(ge){i&&i(ge instanceof Error?ge:new Error(String(ge))),O=Math.min(O*2,s*8);}b&&!t.signal?.aborted&&(I=setTimeout(Be,Ye?100:O));};return this._transportPrefs.includes("sse")?Je():Be(),$e}async*messages(e={}){let t=[],i=null,s=false,o=this.listen(d=>{t.push(d),i&&(i(),i=null);},{...e,autoMarkRead:e.autoMarkRead!==false});e.signal?.addEventListener("abort",()=>{s=true,o.stop(),i&&(i(),i=null);});try{for(;!s&&!e.signal?.aborted;)t.length>0?yield t.shift():await new Promise(d=>{i=d;});}finally{o.stop();}}stopAll(){for(let e of this._listeners)e.stop();this._listeners.clear(),this._rpcListener&&(this._rpcListener.stop(),this._rpcListener=null);for(let[e,t]of this._rpcPending)clearTimeout(t.timer),t.reject(new Error("Agent stopped"));this._rpcPending.clear(),this.disableCoverTraffic();}async invoke(e,t,i={},s=3e4){let o=`rpc-${Date.now()}-${Math.random().toString(36).slice(2,10)}`;return new Promise(async(d,h)=>{let y=setTimeout(()=>{this._rpcPending.delete(o),h(new Error(`RPC timeout: ${t}@${e} after ${s}ms`));},s);this._rpcPending.set(o,{resolve:d,reject:h,timer:y});try{await this.send(e,JSON.stringify({jsonrpc:"2.0",method:t,params:i,id:o}),{messageType:"rpc-request",threadId:o});}catch(w){clearTimeout(y),this._rpcPending.delete(o),h(w);}})}onInvoke(e,t){this._rpcHandlers.set(e,t),this._ensureRpcListener();}offInvoke(e){this._rpcHandlers.delete(e),this._rpcHandlers.size===0&&this._rpcListener&&(this._rpcListener.stop(),this._rpcListener=null);}_ensureRpcListener(){this._rpcListener||(this._rpcListener=this.listen(async e=>{try{let t=JSON.parse(e.content);if(t.jsonrpc!=="2.0")return;if(t.id&&(t.result!==void 0||t.error)){let i=this._rpcPending.get(t.id);i&&(clearTimeout(i.timer),this._rpcPending.delete(t.id),t.error?i.reject(new Error(t.error.message||"RPC error")):i.resolve(t.result));return}if(t.method&&t.id){let i=this._rpcHandlers.get(t.method);if(!i){await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,error:{code:-32601,message:`Method not found: ${t.method}`}}),{messageType:"rpc-response",threadId:t.id});return}try{let s=await i(t.params||{},e.from);await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,result:s}),{messageType:"rpc-response",threadId:t.id});}catch(s){await this.send(e.from,JSON.stringify({jsonrpc:"2.0",id:t.id,error:{code:-32e3,message:s.message||"Handler error"}}),{messageType:"rpc-response",threadId:t.id});}}}catch{}},{interval:500,adaptive:false,heartbeat:false}));}async sendDirect(e,t,i={}){try{let o=await this.getIdentity(e);if(o){let d=await this._timedFetch(`${this.baseUrl}/v1/agent/identity/${e}`,{headers:{"X-Agent-Key":this.apiKey}});if(d.ok){let y=(await d.json()).webhook_url;if(y){let w=A.default.randomBytes(A.default.box.nonceLength),b=(0,g.decodeBase64)(o.encryption_public_key),O=(0,g.decodeUTF8)(t),N=A.default.box(O,w,b,this.encryptionKeyPair.secretKey),D=JSON.stringify({from:this.did,to:e,ciphertext:(0,g.encodeBase64)(N),nonce:(0,g.encodeBase64)(w),timestamp:new Date().toISOString(),message_type:i.messageType||"text",thread_id:i.threadId}),I=A.default.sign.detached((0,g.decodeUTF8)(D),this.signingKeyPair.secretKey);if((await this._timedFetch(y,{method:"POST",headers:{"Content-Type":"application/json","X-Voidly-Signature":`sha256=${(0,g.encodeBase64)(I)}`,"X-Voidly-Sender":this.did},body:D})).ok){let oe=new Date;return {id:`direct-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,from:this.did,to:e,timestamp:oe.toISOString(),expiresAt:new Date(oe.getTime()+864e5).toISOString(),encrypted:!0,clientSide:!0,direct:!0}}}}}}catch{}return {...await this.send(e,t,i),direct:false}}enableCoverTraffic(e={}){this.disableCoverTraffic();let t=e.intervalMs||3e4,i=async()=>{try{let o=A.default.randomBytes(128+Math.floor(Math.random()*384));await this.send(this.did,(0,g.encodeBase64)(o),{messageType:"ping",ttl:60});}catch{}},s=()=>{let o=t*(.5+Math.random());this._coverTrafficTimer=setTimeout(async()=>{await i(),this._coverTrafficTimer!==null&&s();},o);};s();}disableCoverTraffic(){this._coverTrafficTimer!==null&&(clearTimeout(this._coverTrafficTimer),this._coverTrafficTimer=null);}async _resilientFetch(e,t){let i=[this.baseUrl,...this.fallbackRelays],s=null;for(let o of i)try{let d=await this._timedFetch(`${o}${e}`,t);if(d.ok||d.status>=400&&d.status<500&&d.status!==429)return d;if(d.status===429){let h=d.headers.get("Retry-After"),y=h?Math.min(parseInt(h,10)*1e3,5e3):1e3;await new Promise(w=>setTimeout(w,y));}}catch(d){s=d instanceof Error?d:new Error(String(d));}throw s||new Error("All relays failed")}conversation(e,t){let i=t||`conv-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,s=`${e}:${i}`;if(this._conversations.has(s))return this._conversations.get(s);let o=new Pr(this,e,i);return this._conversations.set(s,o),o}async _timedFetch(e,t){let i=new AbortController,s=setTimeout(()=>i.abort(),this.timeout);try{return await fetch(e,{...t,signal:i.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?new Error(`Request timed out after ${this.timeout}ms: ${e.replace(this.baseUrl,"")}`):o}finally{clearTimeout(s);}}async _autoPinKeys(e){if(!this._pinnedDids.has(e)){this._pinnedDids.add(e);try{let t=await this.pinKeys(e);t.key_changed&&t.warning&&console.warn(`[voidly] \u26A0 Key change detected for ${e}: ${t.warning}`);}catch{}}}async _fetchWithRetry(e,t,i={}){let s=i.maxRetries??3,o=i.baseDelay??500,d=i.maxDelay??1e4,h=null;for(let y=0;y<=s;y++){try{let w=await this._timedFetch(e,t);if(w.ok)return await w.json();let b=await w.json().catch(()=>({})),O=b.error?.message||b.error||w.statusText;if(w.status>=400&&w.status<500)throw new Error(`Send failed (${w.status}): ${O}`);h=new Error(`Send failed (${w.status}): ${O}`);}catch(w){if(w instanceof Error&&w.message.startsWith("Send failed (4"))throw w;h=w instanceof Error?w:new Error(String(w));}if(y<s){let b=Math.min(o*Math.pow(2,y),d)*(.5+Math.random()*.5);await new Promise(O=>setTimeout(O,b));}}throw h||new Error("Send failed after retries")}async drainQueue(){let e=0,t=0,i=[];for(let s of this._offlineQueue){if(Date.now()-s.timestamp>864e5){t++;continue}try{await this.send(s.recipientDid,s.message,s.options),e++;}catch{i.push(s),t++;}}return this._offlineQueue=i,{sent:e,failed:t,remaining:i.length}}get queueLength(){return this._offlineQueue.length}threatModel(){return {relayCanSee:["Your DID (public identifier)","Recipient DIDs (relay needs them for routing)",...this.jitterMs>0?["Approximate timing (jittered timestamps)"]:["When you message (timestamps)"],...this.sealedSender?[]:["Message types, thread IDs, content types (sent in cleartext without sealed sender)"],"Channel membership (but NOT channel message content with client-side encryption)","Capability registrations","Approximate message size (even with padding, bounded to power-of-2)"],relayCannotSee:["Message content (E2E encrypted \u2014 nacl.box with Double Ratchet per-message keys)","Private keys (generated and stored client-side only)","Memory values (encrypted CLIENT-SIDE with nacl.secretbox before relay storage)","Past message keys (forward secrecy \u2014 hash ratchet + DH ratchet, old keys deleted)","Future message keys (post-compromise recovery via DH ratchet \u2014 compromise heals after one round-trip)","Channel message content (client-side nacl.secretbox encryption \u2014 relay stores only ciphertext)",...this.sealedSender?['Sender identity (sealed inside ciphertext \u2014 relay stores "sealed" not your DID)',"Message types, thread IDs, reply chains (packed inside ciphertext in v3)","Message count (not incremented for sealed senders)"]:[],...this.deniable?["Who authored a message (HMAC is symmetric \u2014 either party could have produced it)"]:[]],protections:[...this.doubleRatchet?["Double Ratchet (Signal Protocol) \u2014 DH ratchet for post-compromise recovery + hash ratchet for forward secrecy"]:["Hash ratchet forward secrecy \u2014 per-message key derivation, old keys deleted"],...this.postQuantum&&this.mlkemPublicKey?["ML-KEM-768 + X25519 hybrid key exchange (NIST FIPS 203 post-quantum, harvest-now-decrypt-later resistant)"]:[],"X3DH async key agreement (signed prekeys + one-time prekeys for offline session establishment)","X25519 key exchange + XSalsa20-Poly1305 authenticated encryption",...this.deniable?["Deniable authentication (HMAC-SHA256 with shared DH secret \u2014 both parties can produce the MAC)"]:["Ed25519 signatures on every message (envelope + ciphertext hash)"],"TOFU key pinning (MitM detection on key change)","Client-side memory encryption (relay never sees plaintext values)","Client-side channel encryption (nacl.secretbox \u2014 relay never sees channel plaintext)","Protocol version header (deterministic padding/sealing/ratchet detection, no heuristics)","Identity cache (reduced key lookups, 5-min TTL)","Message deduplication (track seen message IDs)","Request timeouts (AbortController on all HTTP, configurable)","Request validation (fromCredentials validates key sizes and format)",...this.paddingEnabled?["Message padding to power-of-2 boundary (traffic analysis resistance)"]:[],...this.sealedSender?["Sealed sender (relay cannot see who sent a message)","Metadata privacy (v3 \u2014 thread_id, message_type, reply_to packed inside ciphertext, stripped from relay storage)"]:[],...this.requireSignatures?["Strict signature enforcement (reject unsigned/invalid messages)"]:[],...this.fallbackRelays.length>0?[`Multi-relay fallback (${this.fallbackRelays.length} backup relays \u2014 receive, discover, identity all use fallbacks)`]:[],...this.jitterMs>0?[`Timing jitter (random ${this.jitterMs}ms delay \u2014 metadata timing protection)`]:[],...this._transportPrefs.includes("sse")?["SSE streaming transport (real-time push delivery from relay)"]:[],...this.longPoll?["Long-poll transport (25s server-held connection \u2014 near-real-time delivery)"]:[],...this._persistMode!=="memory"?[`Ratchet state auto-persistence (${this._persistMode} backend \u2014 survives process restart)`]:[],...this._coverTrafficTimer!==null?["Cover traffic (encrypted noise at random intervals \u2014 traffic analysis resistance)"]:[],"Agent RPC (invoke/onInvoke \u2014 synchronous function calls between agents)","P2P direct send (bypass relay via webhook \u2014 true peer-to-peer when possible)","Resilient operations (receive, discover, identity \u2014 all try fallback relays)","Auto-retry with exponential backoff","Offline message queue","did:key interoperability (W3C standard DID format)"],gaps:[...!this.postQuantum||!this.mlkemPublicKey?["No post-quantum protection \u2014 enable postQuantum option and re-register"]:[],...this.sealedSender?["Relay sees to_did (needed for routing) but NOT from_did, thread_id, or message_type"]:["Relay sees from_did, to_did, thread_id, message_type in cleartext \u2014 enable sealedSender to strip metadata"],"Relay sees channel membership, task delegation, trust scores (social graph)",...this.fallbackRelays.length===0?["Single relay with no fallbacks \u2014 configure fallbackRelays for resilience"]:[],...this._persistMode==="memory"?["Ratchet state is in-memory (lost on process restart \u2014 use persist option or exportCredentials)"]:[],...this.deniable?[]:["Ed25519 signatures are non-repudiable \u2014 enable deniable option for HMAC auth"],...this.doubleRatchet?[]:["Hash ratchet only \u2014 enable doubleRatchet option for post-compromise recovery"],...this.jitterMs===0?["No timing jitter \u2014 enable jitterMs option for metadata protection"]:[],...this._coverTrafficTimer===null?["No cover traffic \u2014 call enableCoverTraffic() to resist traffic analysis"]:[]]}}},Pr=class{constructor(e,t,i){this._lastMessageId=null;this._messageHistory=[];this._listener=null;this._replyHandlers=[];this.agent=e,this.peerDid=t,this.threadId=i;}async say(e,t){let i=await this.agent.send(this.peerDid,e,{...t,threadId:this.threadId,replyTo:this._lastMessageId||void 0});return this._lastMessageId=i.id,this._messageHistory.length>=1e3&&this._messageHistory.splice(0,this._messageHistory.length-999),this._messageHistory.push({id:i.id,from:this.agent.did,content:e,timestamp:i.timestamp,signatureValid:true,messageType:t?.messageType||"text"}),i}async history(e){let t=await this.agent.receive({threadId:this.threadId,from:this.peerDid,limit:e?.limit||100}),i=[...this._messageHistory,...t.map(o=>({id:o.id,from:o.from,content:o.content,timestamp:o.timestamp,signatureValid:o.signatureValid,messageType:o.messageType}))],s=new Set;return i.filter(o=>s.has(o.id)?false:(s.add(o.id),true)).sort((o,d)=>new Date(o.timestamp).getTime()-new Date(d.timestamp).getTime())}onReply(e){this._replyHandlers.push(e),this._listener||(this._listener=this.agent.listen(async t=>{this._messageHistory.push({id:t.id,from:t.from,content:t.content,timestamp:t.timestamp,signatureValid:t.signatureValid,messageType:t.messageType}),this._lastMessageId=t.id;for(let i of this._replyHandlers)try{await i(t);}catch{}},{from:this.peerDid,threadId:this.threadId,autoMarkRead:true}));}async waitForReply(e=3e4){return new Promise((t,i)=>{let s=false,o=null,d=()=>{s=true,o&&(clearTimeout(o),o=null);},h=setTimeout(()=>{s||(d(),i(new Error(`No reply received within ${e}ms`)));},e),y=async()=>{if(!s){try{let w=await this.agent.receive({from:this.peerDid,threadId:this.threadId,unreadOnly:!0,limit:1});if(w.length>0&&!s){clearTimeout(h),d();let b=w[0];this._messageHistory.length>=1e3&&this._messageHistory.splice(0,this._messageHistory.length-999),this._messageHistory.push({id:b.id,from:b.from,content:b.content,timestamp:b.timestamp,signatureValid:b.signatureValid,messageType:b.messageType}),this._lastMessageId=b.id,await this.agent.markRead(b.id).catch(()=>{}),t(b);return}}catch(w){if(!s){clearTimeout(h),d(),i(w instanceof Error?w:new Error(String(w)));return}}s||(o=setTimeout(y,1500));}};y();})}close(){this._listener&&(this._listener.stop(),this._listener=null),this._replyHandlers=[];}get length(){return this._messageHistory.length}get lastMessage(){return this._messageHistory.length>0?this._messageHistory[this._messageHistory.length-1]:null}};var export_decodeBase64=g.decodeBase64;var export_decodeUTF8=g.decodeUTF8;var export_encodeBase64=g.encodeBase64;var export_encodeUTF8=g.encodeUTF8;var export_nacl=A.default;/*! Bundled license information:
|
|
4
4
|
|
|
5
5
|
mlkem/esm/src/sha3/utils.js:
|
|
6
6
|
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
7
|
-
*/exports.Conversation=
|
|
7
|
+
*/exports.Conversation=Pr;exports.VoidlyAgent=bn;exports.decodeBase64=export_decodeBase64;exports.decodeUTF8=export_decodeUTF8;exports.encodeBase64=export_encodeBase64;exports.encodeUTF8=export_encodeUTF8;exports.nacl=export_nacl;
|