UNPKG

revos-sdk-js-mainnet

Version:
1 lines 1.57 MB
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).nkn=e()}}(function(){var define,module,exports;return function(){return function e(t,r,n){function i(s,a){if(!r[s]){if(!t[s]){var A="function"==typeof require&&require;if(!a&&A)return A(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var g=r[s]={exports:{}};t[s][0].call(g.exports,function(e){return i(t[s][1][e]||e)},g,g.exports,e,t,r,n)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s<n.length;s++)i(n[s]);return i}}()({1:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=g(e("isomorphic-ws")),i=g(e("../wallet")),o=c(e("../common")),s=c(e("./consts")),a=c(e("./message"));function A(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(A=function(e){return e?r:t})(e)}function c(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=A(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function g(e){return e&&e.__esModule?e:{default:e}}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r.default=class{constructor(e={}){u(this,"options",void 0),u(this,"key",void 0),u(this,"identifier",void 0),u(this,"addr",void 0),u(this,"eventListeners",void 0),u(this,"sigChainBlockHash",void 0),u(this,"shouldReconnect",void 0),u(this,"reconnectInterval",void 0),u(this,"responseManager",void 0),u(this,"ws",void 0),u(this,"node",void 0),u(this,"isReady",void 0),u(this,"isClosed",void 0),u(this,"wallet",void 0),e=o.util.assignDefined({},s.defaultOptions,e);let t=new o.Key(e.seed,{worker:e.worker}),r=e.identifier||"",n=t.publicKey,a=(r?r+".":"")+n,A=new i.default(Object.assign({},e,{seed:t.seed,worker:!1,version:1}));delete e.seed,this.options=e,this.key=t,this.identifier=r,this.addr=a,this.eventListeners={connect:[],message:[]},this.sigChainBlockHash=null,this.shouldReconnect=!1,this.reconnectInterval=e.reconnectIntervalMin,this.responseManager=new l,this.ws=null,this.node=null,this.isReady=!1,this.isClosed=!1,this.wallet=A,this._connect()}getSeed(){return this.key.seed}getPublicKey(){return this.key.publicKey}async _connect(){let e,t,r=this._shouldUseTls()?o.rpc.getWssAddr:o.rpc.getWsAddr;for(let n=0;n<3;n++){try{e=await r(this.addr,this.options)}catch(e){t=e;continue}return void this._newWsAddr(e)}console.log("RPC call failed,",t),this.shouldReconnect&&this._reconnect()}_reconnect(){console.log("Reconnecting in "+this.reconnectInterval/1e3+"s..."),setTimeout(()=>this._connect(),this.reconnectInterval),this.reconnectInterval*=2,this.reconnectInterval>this.options.reconnectIntervalMax&&(this.reconnectInterval=this.options.reconnectIntervalMax)}on(e,t){this.eventListeners[e]||(this.eventListeners[e]=[]),this.eventListeners[e].push(t)}onConnect(e){this.eventListeners.connect.push(e)}onMessage(e){this.eventListeners.message.push(e)}_wsSend(e){if(!this.ws)throw new o.errors.ClientNotReadyError;this.ws.send(e)}async _processDest(e){if(0===e.length)throw new o.errors.InvalidDestinationError("destination is empty");let t=e.split(".");if(t[t.length-1].length<2*o.key.publicKeyLength){let r=await this.getRegistrant(t[t.length-1]);if(!(r.registrant&&r.registrant.length>0))throw new o.errors.InvalidDestinationError(e+" is neither a valid public key nor a registered name");t[t.length-1]=r.registrant}return t.join(".")}async _processDests(e){if(Array.isArray(e)){if(0===e.length)throw new o.errors.InvalidDestinationError("no destinations");if(0===(e=(e=await Promise.all(e.map(async e=>{try{return await this._processDest(e)}catch(e){return console.warn(e.message),""}}))).filter(e=>e.length>0)).length)throw new o.errors.InvalidDestinationError("all destinations are invalid")}else e=await this._processDest(e);return e}async _send(e,t,r=!0,n=0){if(Array.isArray(e)){if(0===e.length)return null;if(1===e.length)return await this._send(e[0],t,r,n)}e=await this._processDests(e);let i=await this._messageFromPayload(t,r,e),s=[],A=[],c=[];if((i=i.map(e=>e.serializeBinary())).length>1){let t=0,r=0;for(let g=0;g<i.length;g++){if((r=i[g].length+e[g].length+o.crypto.signatureLength)>a.maxClientMessageSize)throw new o.errors.DataSizeTooLargeError("encoded message is greater than "+a.maxClientMessageSize+" bytes");t+r>a.maxClientMessageSize&&(s.push(await a.newOutboundMessage(this,A,c,n)),A=[],c=[],t=0),A.push(e[g]),c.push(i[g]),t+=r}}else{let t=i[0].length;if(Array.isArray(e))for(let r=0;r<e.length;r++)t+=e[r].length+o.crypto.signatureLength;else t+=e.length+o.crypto.signatureLength;if(t>a.maxClientMessageSize)throw new o.errors.DataSizeTooLargeError("encoded message is greater than "+a.maxClientMessageSize+" bytes");A=e,c=i}return s.push(await a.newOutboundMessage(this,A,c,n)),s.length>1&&console.log(`Client message size is greater than ${a.maxClientMessageSize} bytes, split into ${s.length} batches.`),s.forEach(e=>{this._wsSend(e.serializeBinary())}),t.getMessageId()||null}async send(e,t,r={}){let n;r=o.util.assignDefined({},this.options,r),n="string"==typeof t?a.newTextPayload(t,r.replyToId,r.messageId):a.newBinaryPayload(t,r.replyToId,r.messageId);let i=await this._send(e,n,r.encrypt,r.msgHoldingSeconds);return null===i||r.noReply?null:await new Promise((e,t)=>{this.responseManager.add(new f(i,r.responseTimeout,e,t))})}async _sendACK(e,t,r){if(Array.isArray(e)){if(0===e.length)return;if(1===e.length)return await this._sendACK(e[0],t,r);if(e.length>1&&r){console.warn("Encrypted ACK with multicast is not supported, fallback to unicast.");for(let n=0;n<e.length;n++)await this._sendACK(e[n],t,r);return}}let n=a.newAckPayload(t),i=await this._messageFromPayload(n,r,e),o=await a.newOutboundMessage(this,e,i[0].serializeBinary(),0);this._wsSend(o.serializeBinary())}async publish(e,t,r={}){let n=(r=o.util.assignDefined({},s.defaultPublishOptions,r,{noReply:!0})).offset,i=await this.getSubscribers(e,{offset:n,limit:r.limit,txPool:r.txPool});if(!(i.subscribers instanceof Array))throw new o.errors.InvalidResponseError("subscribers should be an array");if(i.subscribersInTxPool&&!(i.subscribersInTxPool instanceof Array))throw new o.errors.InvalidResponseError("subscribersInTxPool should be an array");let a=i.subscribers,A=i.subscribersInTxPool;for(;i.subscribers&&i.subscribers.length>=r.limit;){if(n+=r.limit,!((i=await this.getSubscribers(e,{offset:n,limit:r.limit})).subscribers instanceof Array))throw new o.errors.InvalidResponseError("subscribers should be an array");a=a.concat(i.subscribers)}return r.txPool&&A&&(a=a.concat(A)),await this.send(a,t,r),null}close(){this.responseManager.stop(),this.shouldReconnect=!1;try{this.ws&&this.ws.close()}catch(e){}this.isClosed=!0}async _messageFromPayload(e,t,r){return t?await this._encryptPayload(e.serializeBinary(),r):[a.newMessage(e.serializeBinary(),!1)]}async _handleMsg(e){let t=o.pb.messages.ClientMessage.deserializeBinary(e);switch(t.getMessageType()){case o.pb.messages.ClientMessageType.INBOUND_MESSAGE:return await this._handleInboundMsg(t.getMessage());default:return!1}}async _handleInboundMsg(e){let t=o.pb.messages.InboundMessage.deserializeBinary(e),r=t.getPrevSignature();if(r.length>0){r=o.util.bytesToHex(r);let e=await a.newReceipt(this,r);this._wsSend(e.serializeBinary())}let n,i=o.pb.payloads.Message.deserializeBinary(t.getPayload());n=i.getEncrypted()?await this._decryptPayload(i,t.getSrc()):i.getPayload();let s=o.pb.payloads.Payload.deserializeBinary(n),A=s.getData();switch(s.getType()){case o.pb.payloads.PayloadType.TEXT:let e=o.pb.payloads.TextData.deserializeBinary(A);A=e.getText();break;case o.pb.payloads.PayloadType.ACK:return this.responseManager.respond(s.getReplyToId(),null,s.getType()),!0}if(s.getReplyToId().length)return this.responseManager.respond(s.getReplyToId(),A,s.getType()),!0;switch(s.getType()){case o.pb.payloads.PayloadType.TEXT:case o.pb.payloads.PayloadType.BINARY:case o.pb.payloads.PayloadType.SESSION:if(this.eventListeners.message.length>0){let e=await Promise.all(this.eventListeners.message.map(async e=>{try{return await e({src:t.getSrc(),payload:A,payloadType:s.getType(),isEncrypted:i.getEncrypted(),messageId:s.getMessageId(),noReply:s.getNoReply()})}catch(e){return console.log("Message handler error:",e),null}}));if(!s.getNoReply()){let r=!1;for(let n of e){if(!1===n)return!0;if(void 0!==n&&null!==n){this.send(t.getSrc(),n,{encrypt:i.getEncrypted(),msgHoldingSeconds:0,replyToId:s.getMessageId()}).catch(e=>{console.log("Send response error:",e)}),r=!0;break}}r||await this._sendACK(t.getSrc(),s.getMessageId(),i.getEncrypted())}}return!0;default:return!1}}_shouldUseTls(){return void 0!==this.options.tls?!!this.options.tls:"undefined"!=typeof window&&!(!window.location||"https:"!==window.location.protocol)}_newWsAddr(e){if(!e.addr)return console.log("No address in node info",e),void(this.shouldReconnect&&this._reconnect());let t,r=this._shouldUseTls();try{(t=new n.default((r?"wss":"ws")+"://"+e.addr)).binaryType="arraybuffer"}catch(e){return console.log("Create WebSocket failed,",e),void(this.shouldReconnect&&this._reconnect())}if(this.ws){this.ws.onclose=(()=>{});try{this.ws.close()}catch(e){}}if(this.isClosed)try{t.close()}catch(e){}else this.ws=t,this.node=e,e.rpcAddr?this.wallet.options.rpcServerAddr=(r?"https":"http")+"://"+e.rpcAddr:this.wallet.options.rpcServerAddr="",t.onopen=(()=>{t.send(JSON.stringify({Action:"setClient",Addr:this.addr})),this.shouldReconnect=!0,this.reconnectInterval=this.options.reconnectIntervalMin}),t.onmessage=(async e=>{if(e.data instanceof ArrayBuffer){try{await this._handleMsg(e.data)||console.warn("Unhandled msg.")}catch(e){console.log(e)}return}let t=JSON.parse(e.data);if(void 0===t.Error||t.Error===o.errors.rpcRespErrCodes.success)switch(t.Action){case"setClient":this.sigChainBlockHash=t.Result.sigChainBlockHash,this.isReady||(this.isReady=!0,this.eventListeners.connect.length>0&&this.eventListeners.connect.forEach(async e=>{try{await e(t.Result)}catch(e){console.log("Connect handler error:",e)}}));break;case"updateSigChainBlockHash":this.sigChainBlockHash=t.Result;break;default:console.warn("Unknown msg type:",t.Action)}else if(console.log(t),t.Error===o.errors.rpcRespErrCodes.wrongNode)this._newWsAddr(t.Result);else if("setClient"===t.Action)try{this.ws&&this.ws.close()}catch(e){}}),t.onclose=(()=>{this.shouldReconnect&&(console.warn("WebSocket unexpectedly closed."),this._reconnect())}),t.onerror=(e=>{console.log(e.message)})}async _encryptPayload(e,t){if(Array.isArray(t)){let r=o.util.randomBytes(o.crypto.nonceLength),n=o.util.randomBytes(o.crypto.keyLength),i=await o.crypto.encryptSymmetric(e,r,n),s=[];for(let e=0;e<t.length;e++){let A=a.addrToPubkey(t[e]),c=await this.key.encrypt(n,A),g=o.util.mergeTypedArrays(c.nonce,r),u=a.newMessage(i,!0,g,c.message);s.push(u)}return s}{let r=a.addrToPubkey(t),n=await this.key.encrypt(e,r);return[a.newMessage(n.message,!0,n.nonce)]}}async _decryptPayload(e,t){let r,n=e.getPayload(),i=a.addrToPubkey(t),s=e.getNonce(),A=e.getEncryptedKey();if(A&&A.length>0){if(s.length!=2*o.crypto.nonceLength)throw new o.errors.DecryptionError("invalid nonce length");let e=await this.key.decrypt(A,s.slice(0,o.crypto.nonceLength),i);if(null===e)throw new o.errors.DecryptionError("decrypt shared key failed");if(null===(r=await o.crypto.decryptSymmetric(n,s.slice(o.crypto.nonceLength),e)))throw new o.errors.DecryptionError("decrypt message failed")}else{if(s.length!=o.crypto.nonceLength)throw new o.errors.DecryptionError("invalid nonce length");if(null===(r=await this.key.decrypt(n,s,i)))throw new o.errors.DecryptionError("decrypt message failed")}return r}async getLatestBlock(){if(this.wallet.options.rpcServerAddr)try{return await i.default.getLatestBlock(this.options)}catch(e){}return await i.default.getLatestBlock(this.options)}async getRegistrant(e){if(this.wallet.options.rpcServerAddr)try{return await i.default.getRegistrant(e,this.wallet.options)}catch(e){}return await i.default.getRegistrant(e,this.options)}async getSubscribers(e,t={}){if(this.wallet.options.rpcServerAddr)try{return await i.default.getSubscribers(e,Object.assign({},this.wallet.options,t))}catch(e){}return await i.default.getSubscribers(e,Object.assign({},this.options,t))}async getSubscribersCount(e){if(this.wallet.options.rpcServerAddr)try{return await i.default.getSubscribersCount(e,this.wallet.options)}catch(e){}return await i.default.getSubscribersCount(e,this.options)}async getSubscription(e,t){if(this.wallet.options.rpcServerAddr)try{return await i.default.getSubscription(e,t,this.wallet.options)}catch(e){}return await i.default.getSubscription(e,t,this.options)}async getBalance(e){if(this.wallet.options.rpcServerAddr)try{return await i.default.getBalance(e||this.wallet.address,this.wallet.options)}catch(e){}return await i.default.getBalance(e||this.wallet.address,this.options)}async getNonce(e,t={}){if(this.wallet.options.rpcServerAddr)try{return await i.default.getNonce(e||this.wallet.address,Object.assign({},this.wallet.options,t))}catch(e){}return await i.default.getNonce(e||this.wallet.address,Object.assign({},this.options,t))}async sendTransaction(e){if(this.wallet.options.rpcServerAddr)try{return await i.default.sendTransaction(e,this.wallet.options)}catch(e){}return await i.default.sendTransaction(e,this.options)}transferTo(e,t,r={}){return o.rpc.transferTo.call(this,e,t,r)}transferRDCTo(e,t,r={}){return o.rpc.transferRDCTo.call(this,e,t,r)}swap(e,t,r={}){return o.rpc.swap.call(this,e,t,r)}swapRDC(e,t,r={}){return o.rpc.swapRDC.call(this,e,t,r)}registerName(e,t={}){return o.rpc.registerName.call(this,e,t)}transferName(e,t,r={}){return o.rpc.transferName.call(this,e,t,r)}deleteName(e,t={}){return o.rpc.deleteName.call(this,e,t)}subscribe(e,t,r="",n="",i={}){return o.rpc.subscribe.call(this,e,t,r,n,i)}unsubscribe(e,t="",r={}){return o.rpc.unsubscribe.call(this,e,t,r)}createTransaction(e,t,r={}){return this.wallet.createTransaction(e,t,r)}};class f{constructor(e,t,r,n){u(this,"messageId",void 0),u(this,"deadline",void 0),u(this,"responseHandler",void 0),u(this,"timeoutHandler",void 0),e instanceof Uint8Array&&(e=o.util.bytesToHex(e)),this.messageId=e,t&&(this.deadline=Date.now()+t),this.responseHandler=r,this.timeoutHandler=n}checkTimeout(e){return!!this.deadline&&(e||(e=Date.now()),e>this.deadline)}handleResponse(e){this.responseHandler&&this.responseHandler(e)}handleTimeout(){this.timeoutHandler&&this.timeoutHandler(new Error("Message timeout"))}}class l{constructor(){u(this,"responseProcessors",void 0),u(this,"timer",void 0),this.responseProcessors=new Map,this.timer=null,this.checkTimeout()}add(e){this.responseProcessors.set(e.messageId,e)}clear(){for(let e of this.responseProcessors.values())e.handleTimeout();this.responseProcessors=new Map}stop(){clearTimeout(this.timer),this.clear()}respond(e,t,r){e instanceof Uint8Array&&(e=o.util.bytesToHex(e));let n=this.responseProcessors.get(e);n&&(n.handleResponse(t),this.responseProcessors.delete(e))}checkTimeout(){let e=[],t=Date.now();for(let r of this.responseProcessors.values())r.checkTimeout(t)&&e.push(r);e.forEach(e=>{e.handleTimeout(),this.responseProcessors.delete(e.messageId)}),this.timer=setTimeout(this.checkTimeout.bind(this),s.checkTimeoutInterval)}}},{"../common":10,"../wallet":28,"./consts":2,"./message":4,"isomorphic-ws":308}],2:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.defaultPublishOptions=r.defaultOptions=r.checkTimeoutInterval=void 0;r.defaultOptions={reconnectIntervalMin:1e3,reconnectIntervalMax:64e3,responseTimeout:5e3,msgHoldingSeconds:0,encrypt:!0,rpcServerAddr:"https://mainnet-seed001.revos.net",worker:!1};r.defaultPublishOptions={txPool:!1,offset:0,limit:1e3};r.checkTimeoutInterval=250},{}],3:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i.default}});var n,i=(n=e("./client"))&&n.__esModule?n:{default:n}},{"./client":1}],4:[function(e,t,r){(function(t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.addrToID=f,r.addrToPubkey=l,r.messageIdSize=r.maxClientMessageSize=void 0,r.newAckPayload=function(e,t){return A(o.pb.payloads.PayloadType.ACK,e,null,t)},r.newBinaryPayload=function(e,t,r){return A(o.pb.payloads.PayloadType.BINARY,t,e,r)},r.newClientMessage=c,r.newMessage=function(e,t,r,n){let i=new o.pb.payloads.Message;i.setPayload(e),i.setEncrypted(t),r&&i.setNonce(r);n&&i.setEncryptedKey(n);return i},r.newOutboundMessage=async function(e,r,n,i){Array.isArray(r)||(r=[r]);if(0===r.length)throw new o.errors.InvalidArgumentError("no destination");Array.isArray(n)||(n=[n]);if(0===n.length)throw new o.errors.InvalidArgumentError("no payloads");if(n.length>1&&n.length!==r.length)throw new o.errors.InvalidArgumentError("invalid payload array length");let s=new o.pb.sigchain.SigChainElem;s.setNextPubkey(t.from(e.node.pubkey,"hex"));let a=u(s),A=new o.pb.sigchain.SigChain;A.setNonce(o.util.randomInt32()),e.sigChainBlockHash&&A.setBlockHash(t.from(e.sigChainBlockHash,"hex"));A.setSrcId(t.from(f(e.addr),"hex")),A.setSrcPubkey(t.from(e.key.publicKey,"hex"));let h,d,p,y=[];for(let i=0;i<r.length;i++)A.setDestId(t.from(f(r[i]),"hex")),A.setDestPubkey(t.from(l(r[i]),"hex")),n.length>1?A.setDataSize(n[i].length):A.setDataSize(n[0].length),h=g(A),d=o.hash.sha256Hex(h),d=o.hash.sha256Hex(d+a),p=await e.key.sign(d),y.push(t.from(p,"hex"));let I,b=new o.pb.messages.OutboundMessage;b.setDestsList(r),b.setPayloadsList(n),b.setMaxHoldingSeconds(i),b.setNonce(A.getNonce()),b.setBlockHash(A.getBlockHash()),b.setSignaturesList(y),I=n.length>1?o.pb.messages.CompressionType.COMPRESSION_ZLIB:o.pb.messages.CompressionType.COMPRESSION_NONE;return c(o.pb.messages.ClientMessageType.OUTBOUND_MESSAGE,b.serializeBinary(),I)},r.newPayload=A,r.newReceipt=async function(e,r){let n=u(new o.pb.sigchain.SigChainElem),i=o.hash.sha256Hex(r);i=o.hash.sha256Hex(i+n);let s=await e.key.sign(i),a=new o.pb.messages.Receipt;return a.setPrevSignature(t.from(r,"hex")),a.setSignature(t.from(s,"hex")),c(o.pb.messages.ClientMessageType.RECEIPT,a.serializeBinary(),o.pb.messages.CompressionType.COMPRESSION_NONE)},r.newSessionPayload=function(e,t){return A(o.pb.payloads.PayloadType.SESSION,null,e,t)},r.newTextPayload=function(e,t,r){let n=new o.pb.payloads.TextData;return n.setText(e),A(o.pb.payloads.PayloadType.TEXT,t,n.serializeBinary(),r)},r.serializeSigChainElem=u,r.serializeSigChainMetadata=g;var n,i=(n=e("pako"))&&n.__esModule?n:{default:n},o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,r&&r.set(e,n);return n}(e("../common"));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}const a=8;r.messageIdSize=a;function A(e,t,r,n){let i=new o.pb.payloads.Payload;return i.setType(e),t?i.setReplyToId(t):n?i.setMessageId(n):i.setMessageId(o.util.randomBytes(a)),i.setData(r),i}function c(e,t,r){let n=new o.pb.messages.ClientMessage;switch(n.setMessageType(e),n.setCompressionType(r),r){case o.pb.messages.CompressionType.COMPRESSION_NONE:break;case o.pb.messages.CompressionType.COMPRESSION_ZLIB:t=i.default.deflate(t);break;default:throw new o.errors.InvalidArgumentError("unknown compression type "+r)}return n.setMessage(t),n}function g(e){let t="";return t+=o.serialize.encodeUint32(e.getNonce()),t+=o.serialize.encodeUint32(e.getDataSize()),t+=o.serialize.encodeBytes(e.getBlockHash()),t+=o.serialize.encodeBytes(e.getSrcId()),t+=o.serialize.encodeBytes(e.getSrcPubkey()),t+=o.serialize.encodeBytes(e.getDestId()),t+=o.serialize.encodeBytes(e.getDestPubkey())}function u(e){let t="";return t+=o.serialize.encodeBytes(e.getId()),t+=o.serialize.encodeBytes(e.getNextPubkey()),t+=o.serialize.encodeBool(e.getMining())}function f(e){return o.hash.sha256(e)}function l(e){let t=e.split(".");return t[t.length-1]}r.maxClientMessageSize=4e6}).call(this,e("buffer").Buffer)},{"../common":10,buffer:118,pako:316}],5:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.decrypt=function(e,t,r){return i.default.AES.decrypt(i.default.enc.Hex.parse(e).toString(i.default.enc.Base64),i.default.enc.Hex.parse(t),{iv:i.default.enc.Hex.parse(r),mode:i.default.mode.CBC,padding:i.default.pad.NoPadding}).toString()},r.encrypt=function(e,t,r){return i.default.AES.encrypt(i.default.enc.Hex.parse(e),i.default.enc.Hex.parse(t),{iv:i.default.enc.Hex.parse(r),mode:i.default.mode.CBC,padding:i.default.pad.NoPadding}).ciphertext.toString(i.default.enc.Hex)};var n,i=(n=e("crypto-js"))&&n.__esModule?n:{default:n};!function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var a=i?Object.getOwnPropertyDescriptor(e,s):null;a&&(a.get||a.set)?Object.defineProperty(n,s,a):n[s]=e[s]}n.default=e,r&&r.set(e,n)}(e("./hash"));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}},{"./hash":9,"crypto-js":231}],6:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n,i,o,s=e("decimal.js");s.Decimal.set({minE:-8});class a extends s.Decimal{value(){return this.times(a.unit).floor()}}r.default=a,n=a,i="unit",o=new s.Decimal("100000000"),i in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o},{"decimal.js":257}],7:[function(e,t,r){(function(t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.computeSharedKey=async function(e,r){let n,a=await u(t.from(r,"hex"));try{n=i.default.crypto_box_beforenm(a,e)}catch(t){console.warn(t),n=o.default.box.before(a,e)}return s.bytesToHex(n)},r.decryptSymmetric=async function(e,t,r){try{return c||(await i.default.ready,c=!0),i.default.crypto_box_open_easy_afternm(e,t,r)}catch(n){return console.warn(n),o.default.secretbox.open(e,t,r)}},r.ed25519PkToCurve25519=u,r.ed25519SkToCurve25519=g,r.encryptSymmetric=async function(e,t,r){try{return c||(await i.default.ready,c=!0),i.default.crypto_box_easy_afternm(e,t,r)}catch(n){return console.warn(n),o.default.secretbox(e,t,r)}},r.keyLength=void 0,r.keyPair=function(e){let t=s.hexToBytes(e);try{let r=i.default.crypto_sign_seed_keypair(t);return{seed:e,publicKey:r.publicKey,privateKey:r.privateKey,curvePrivateKey:g(r.privateKey)}}catch(r){let i=o.default.sign.keyPair.fromSeed(t);return{seed:e,publicKey:i.publicKey,privateKey:i.secretKey,curvePrivateKey:n.default.convertSecretKey(i.secretKey)}}},r.seedLength=r.publicKeyLength=r.nonceLength=void 0,r.sign=async function(e,r){let n;try{c||(await i.default.ready,c=!0),n=i.default.crypto_sign_detached(t.from(r,"hex"),e)}catch(i){console.warn(i),n=o.default.sign.detached(t.from(r,"hex"),e)}return s.bytesToHex(n)},r.signatureLength=void 0;var n=A(e("ed2curve")),i=A(e("libsodium-wrappers")),o=A(e("tweetnacl")),s=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}n.default=e,r&&r.set(e,n);return n}(e("./util"));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function A(e){return e&&e.__esModule?e:{default:e}}r.keyLength=32;r.nonceLength=24;r.publicKeyLength=32;r.seedLength=32;r.signatureLength=64;let c=!1;function g(e){try{return i.default.crypto_sign_ed25519_sk_to_curve25519(e)}catch(t){return n.default.convertSecretKey(e)}}async function u(e){try{return c||(await i.default.ready,c=!0),i.default.crypto_sign_ed25519_pk_to_curve25519(e)}catch(t){return console.warn(t),n.default.convertPublicKey(e)}}}).call(this,e("buffer").Buffer)},{"./util":19,buffer:118,ed2curve:268,"libsodium-wrappers":309,tweetnacl:383}],8:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.rpcRespErrCodes=r.WrongPasswordError=r.UnknownError=r.ServerError=r.RpcTimeoutError=r.RpcError=r.NotEnoughBalanceError=r.InvalidWalletVersionError=r.InvalidWalletFormatError=r.InvalidResponseError=r.InvalidDestinationError=r.InvalidArgumentError=r.InvalidAddressError=r.DecryptionError=r.DataSizeTooLargeError=r.ClientNotReadyError=r.AddrNotAllowedError=void 0;r.rpcRespErrCodes={success:0,wrongNode:48001,appendTxnPool:45021};class n extends Error{constructor(e="address not allowed",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,n),this.name="AddrNotAllowedError"}}r.AddrNotAllowedError=n;class i extends Error{constructor(e="client not ready",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,i),this.name="ClientNotReadyError"}}r.ClientNotReadyError=i;class o extends Error{constructor(e="data size too large",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,o),this.name="DataSizeTooLargeError"}}r.DataSizeTooLargeError=o;class s extends Error{constructor(e="decrypt message error",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,s),this.name="DecryptionError"}}r.DecryptionError=s;class a extends Error{constructor(e="unknown error",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,a),this.name="UnknownError"}}r.UnknownError=a;class A extends Error{constructor(e="not enough balance",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,A),this.name="NotEnoughBalanceError"}}r.NotEnoughBalanceError=A;class c extends Error{constructor(e="wrong password",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,c),this.name="WrongPasswordError"}}r.WrongPasswordError=c;class g extends Error{constructor(e="invalid wallet address",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,g),this.name="InvalidAddressError"}}r.InvalidAddressError=g;class u extends Error{constructor(e="invalid wallet format",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,u),this.name="InvalidWalletFormatError"}}r.InvalidWalletFormatError=u;class f extends Error{constructor(e="invalid wallet version",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,f),this.name="InvalidWalletVersionError"}}r.InvalidWalletVersionError=f;class l extends Error{constructor(e="invalid argument",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,l),this.name="InvalidArgumentError"}}r.InvalidArgumentError=l;class h extends Error{constructor(e="invalid response from RPC server",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,h),this.name="InvalidResponseError"}}r.InvalidResponseError=h;class d extends Error{constructor(e="error from RPC server",...t){let r;super(r="object"==typeof e?e.message+": "+e.data:e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,d),this.name="ServerError",e.code&&(this.code=-e.code)}}r.ServerError=d;class p extends Error{constructor(e="invalid destination",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,p),this.name="InvalidDestinationError"}}r.InvalidDestinationError=p;class y extends Error{constructor(e="rpc timeout",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,y),this.name="RpcTimeoutError"}}r.RpcTimeoutError=y;class I extends Error{constructor(e="rpc error",...t){super(e,...t),Error.captureStackTrace&&Error.captureStackTrace(this,I),this.name="RpcError"}}r.RpcError=I},{}],9:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.cryptoHexStringParse=o,r.doubleSha256=a,r.doubleSha256Hex=function(e){return a(o(e))},r.ripemd160=A,r.ripemd160Hex=function(e){return A(o(e))},r.sha256=s,r.sha256Hex=function(e){return s(o(e))};var n,i=(n=e("crypto-js"))&&n.__esModule?n:{default:n};function o(e){return i.default.enc.Hex.parse(e)}function s(e){return i.default.SHA256(e).toString()}function a(e){return i.default.SHA256(i.default.SHA256(e)).toString()}function A(e){return i.default.RIPEMD160(e).toString()}},{"crypto-js":231}],10:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Amount",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(r,"Key",{enumerable:!0,get:function(){return o.default}}),r.util=r.serialize=r.rpc=r.pb=r.key=r.hash=r.errors=r.crypto=r.aes=void 0;var n,i=(n=e("./amount"))&&n.__esModule?n:{default:n},o=d(e("./key"));r.key=o;var s=d(e("./aes"));r.aes=s;var a=d(e("./crypto"));r.crypto=a;var A=d(e("./errors"));r.errors=A;var c=d(e("./hash"));r.hash=c;var g=d(e("./pb"));r.pb=g;var u=d(e("./rpc"));r.rpc=u;var f=d(e("./serialize"));r.serialize=f;var l=d(e("./util"));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(h=function(e){return e?r:t})(e)}function d(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=h(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}r.util=l},{"./aes":5,"./amount":6,"./crypto":7,"./errors":8,"./hash":9,"./key":11,"./pb":12,"./rpc":17,"./serialize":18,"./util":19}],11:[function(e,t,r){(function(t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n,i=(n=e("webworkify"))&&n.__esModule?n:{default:n},o=A(e("./crypto")),s=(A(e("./errors")),A(e("./util")));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function A(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r.default=class{constructor(t,r={}){c(this,"seed",void 0),c(this,"publicKey",void 0),c(this,"privateKey",void 0),c(this,"curvePrivateKey",void 0),c(this,"sharedKeyCache",void 0),c(this,"useWorker",void 0),c(this,"worker",void 0),c(this,"workerMsgID",void 0),c(this,"workerMsgCache",void 0),t||(t=s.randomBytesHex(o.seedLength));let n=o.keyPair(t);this.seed=t,this.publicKey=s.bytesToHex(n.publicKey),this.privateKey=n.privateKey,this.curvePrivateKey=n.curvePrivateKey,this.sharedKeyCache=new Map,this.useWorker=this._shouldUseWorker(r.worker),this.worker=null,this.workerMsgID=0,this.workerMsgCache=new Map,this.useWorker&&(async()=>{try{if("function"==typeof r.worker)this.worker=await r.worker();else try{this.worker=(0,i.default)(e("../worker/worker.js"))}catch(t){try{let t=e("../worker/webpack.worker.js");this.worker=new t}catch(e){throw"neither browserify nor webpack worker-loader is detected"}}this.worker.onmessage=(e=>{if(void 0!==e.data.id&&this.workerMsgCache.has(e.data.id)){let t=this.workerMsgCache.get(e.data.id);e.data.error?t.reject(e.data.error):t.resolve(e.data.result),this.workerMsgCache.delete(e.data.id)}}),await this._sendToWorker({action:"setSeed",seed:this.seed})}catch(e){console.warn("Launch web worker failed:",e),this.useWorker=!1}})()}_shouldUseWorker(e){return!!e&&"undefined"!=typeof window&&!!window.Worker}_sendToWorker(e){return new Promise((t,r)=>{let n=this.workerMsgID;this.workerMsgID++,this.workerMsgCache.set(n,{resolve:t,reject:r}),this.worker.postMessage(Object.assign({id:n},e))})}async computeSharedKey(e){if(this.useWorker)try{return await this._sendToWorker({action:"computeSharedKey",otherPubkey:e})}catch(e){console.warn("worker computeSharedKey failed, fallback to main thread:",e)}return await o.computeSharedKey(this.curvePrivateKey,e)}async getOrComputeSharedKey(e){let t=this.sharedKeyCache.get(e);return t||(t=await this.computeSharedKey(e),this.sharedKeyCache.set(e,t)),t}async encrypt(e,r,n={}){let i=await this.getOrComputeSharedKey(r);i=t.from(i,"hex");let a=n.nonce||s.randomBytes(o.nonceLength);return{message:await o.encryptSymmetric(e,a,i),nonce:a}}async decrypt(e,r,n,i={}){let s=await this.getOrComputeSharedKey(n);return s=t.from(s,"hex"),await o.decryptSymmetric(e,r,s)}async sign(e){if(this.useWorker)try{return await this._sendToWorker({action:"sign",message:e})}catch(e){console.warn("worker sign failed, fallback to main thread:",e)}return await o.sign(this.privateKey,e)}}}).call(this,e("buffer").Buffer)},{"../worker/webpack.worker.js":31,"../worker/worker.js":32,"./crypto":7,"./errors":8,"./util":19,buffer:118,webworkify:386}],12:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.transaction=r.sigchain=r.payloads=r.messages=void 0;var n=A(e("./messages_pb"));r.messages=n;var i=A(e("./payloads_pb"));r.payloads=i;var o=A(e("./sigchain_pb"));r.sigchain=o;var s=A(e("./transaction_pb"));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function A(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}r.transaction=s},{"./messages_pb":13,"./payloads_pb":14,"./sigchain_pb":15,"./transaction_pb":16}],13:[function(e,t,r){"use strict";var n=e("google-protobuf"),i=n,o=Function("return this")();i.exportSymbol("proto.messages.ClientMessage",null,o),i.exportSymbol("proto.messages.ClientMessageType",null,o),i.exportSymbol("proto.messages.CompressionType",null,o),i.exportSymbol("proto.messages.InboundMessage",null,o),i.exportSymbol("proto.messages.OutboundMessage",null,o),i.exportSymbol("proto.messages.Receipt",null,o),proto.messages.ClientMessage=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.messages.ClientMessage,n.Message),i.DEBUG&&!COMPILED&&(proto.messages.ClientMessage.displayName="proto.messages.ClientMessage"),proto.messages.OutboundMessage=function(e){n.Message.initialize(this,e,0,-1,proto.messages.OutboundMessage.repeatedFields_,null)},i.inherits(proto.messages.OutboundMessage,n.Message),i.DEBUG&&!COMPILED&&(proto.messages.OutboundMessage.displayName="proto.messages.OutboundMessage"),proto.messages.InboundMessage=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.messages.InboundMessage,n.Message),i.DEBUG&&!COMPILED&&(proto.messages.InboundMessage.displayName="proto.messages.InboundMessage"),proto.messages.Receipt=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.messages.Receipt,n.Message),i.DEBUG&&!COMPILED&&(proto.messages.Receipt.displayName="proto.messages.Receipt"),n.Message.GENERATE_TO_OBJECT&&(proto.messages.ClientMessage.prototype.toObject=function(e){return proto.messages.ClientMessage.toObject(e,this)},proto.messages.ClientMessage.toObject=function(e,t){var r={messageType:n.Message.getFieldWithDefault(t,1,0),message:t.getMessage_asB64(),compressionType:n.Message.getFieldWithDefault(t,3,0)};return e&&(r.$jspbMessageInstance=t),r}),proto.messages.ClientMessage.deserializeBinary=function(e){var t=new n.BinaryReader(e),r=new proto.messages.ClientMessage;return proto.messages.ClientMessage.deserializeBinaryFromReader(r,t)},proto.messages.ClientMessage.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();){switch(t.getFieldNumber()){case 1:var r=t.readEnum();e.setMessageType(r);break;case 2:r=t.readBytes();e.setMessage(r);break;case 3:r=t.readEnum();e.setCompressionType(r);break;default:t.skipField()}}return e},proto.messages.ClientMessage.prototype.serializeBinary=function(){var e=new n.BinaryWriter;return proto.messages.ClientMessage.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.messages.ClientMessage.serializeBinaryToWriter=function(e,t){var r=void 0;0!==(r=e.getMessageType())&&t.writeEnum(1,r),(r=e.getMessage_asU8()).length>0&&t.writeBytes(2,r),0!==(r=e.getCompressionType())&&t.writeEnum(3,r)},proto.messages.ClientMessage.prototype.getMessageType=function(){return n.Message.getFieldWithDefault(this,1,0)},proto.messages.ClientMessage.prototype.setMessageType=function(e){return n.Message.setProto3EnumField(this,1,e)},proto.messages.ClientMessage.prototype.getMessage=function(){return n.Message.getFieldWithDefault(this,2,"")},proto.messages.ClientMessage.prototype.getMessage_asB64=function(){return n.Message.bytesAsB64(this.getMessage())},proto.messages.ClientMessage.prototype.getMessage_asU8=function(){return n.Message.bytesAsU8(this.getMessage())},proto.messages.ClientMessage.prototype.setMessage=function(e){return n.Message.setProto3BytesField(this,2,e)},proto.messages.ClientMessage.prototype.getCompressionType=function(){return n.Message.getFieldWithDefault(this,3,0)},proto.messages.ClientMessage.prototype.setCompressionType=function(e){return n.Message.setProto3EnumField(this,3,e)},proto.messages.OutboundMessage.repeatedFields_=[3,7,8],n.Message.GENERATE_TO_OBJECT&&(proto.messages.OutboundMessage.prototype.toObject=function(e){return proto.messages.OutboundMessage.toObject(e,this)},proto.messages.OutboundMessage.toObject=function(e,t){var r,i={dest:n.Message.getFieldWithDefault(t,1,""),payload:t.getPayload_asB64(),destsList:null==(r=n.Message.getRepeatedField(t,3))?void 0:r,maxHoldingSeconds:n.Message.getFieldWithDefault(t,4,0),nonce:n.Message.getFieldWithDefault(t,5,0),blockHash:t.getBlockHash_asB64(),signaturesList:t.getSignaturesList_asB64(),payloadsList:t.getPayloadsList_asB64()};return e&&(i.$jspbMessageInstance=t),i}),proto.messages.OutboundMessage.deserializeBinary=function(e){var t=new n.BinaryReader(e),r=new proto.messages.OutboundMessage;return proto.messages.OutboundMessage.deserializeBinaryFromReader(r,t)},proto.messages.OutboundMessage.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();){switch(t.getFieldNumber()){case 1:var r=t.readString();e.setDest(r);break;case 2:r=t.readBytes();e.setPayload(r);break;case 3:r=t.readString();e.addDests(r);break;case 4:r=t.readUint32();e.setMaxHoldingSeconds(r);break;case 5:r=t.readUint32();e.setNonce(r);break;case 6:r=t.readBytes();e.setBlockHash(r);break;case 7:r=t.readBytes();e.addSignatures(r);break;case 8:r=t.readBytes();e.addPayloads(r);break;default:t.skipField()}}return e},proto.messages.OutboundMessage.prototype.serializeBinary=function(){var e=new n.BinaryWriter;return proto.messages.OutboundMessage.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.messages.OutboundMessage.serializeBinaryToWriter=function(e,t){var r=void 0;(r=e.getDest()).length>0&&t.writeString(1,r),(r=e.getPayload_asU8()).length>0&&t.writeBytes(2,r),(r=e.getDestsList()).length>0&&t.writeRepeatedString(3,r),0!==(r=e.getMaxHoldingSeconds())&&t.writeUint32(4,r),0!==(r=e.getNonce())&&t.writeUint32(5,r),(r=e.getBlockHash_asU8()).length>0&&t.writeBytes(6,r),(r=e.getSignaturesList_asU8()).length>0&&t.writeRepeatedBytes(7,r),(r=e.getPayloadsList_asU8()).length>0&&t.writeRepeatedBytes(8,r)},proto.messages.OutboundMessage.prototype.getDest=function(){return n.Message.getFieldWithDefault(this,1,"")},proto.messages.OutboundMessage.prototype.setDest=function(e){return n.Message.setProto3StringField(this,1,e)},proto.messages.OutboundMessage.prototype.getPayload=function(){return n.Message.getFieldWithDefault(this,2,"")},proto.messages.OutboundMessage.prototype.getPayload_asB64=function(){return n.Message.bytesAsB64(this.getPayload())},proto.messages.OutboundMessage.prototype.getPayload_asU8=function(){return n.Message.bytesAsU8(this.getPayload())},proto.messages.OutboundMessage.prototype.setPayload=function(e){return n.Message.setProto3BytesField(this,2,e)},proto.messages.OutboundMessage.prototype.getDestsList=function(){return n.Message.getRepeatedField(this,3)},proto.messages.OutboundMessage.prototype.setDestsList=function(e){return n.Message.setField(this,3,e||[])},proto.messages.OutboundMessage.prototype.addDests=function(e,t){return n.Message.addToRepeatedField(this,3,e,t)},proto.messages.OutboundMessage.prototype.clearDestsList=function(){return this.setDestsList([])},proto.messages.OutboundMessage.prototype.getMaxHoldingSeconds=function(){return n.Message.getFieldWithDefault(this,4,0)},proto.messages.OutboundMessage.prototype.setMaxHoldingSeconds=function(e){return n.Message.setProto3IntField(this,4,e)},proto.messages.OutboundMessage.prototype.getNonce=function(){return n.Message.getFieldWithDefault(this,5,0)},proto.messages.OutboundMessage.prototype.setNonce=function(e){return n.Message.setProto3IntField(this,5,e)},proto.messages.OutboundMessage.prototype.getBlockHash=function(){return n.Message.getFieldWithDefault(this,6,"")},proto.messages.OutboundMessage.prototype.getBlockHash_asB64=function(){return n.Message.bytesAsB64(this.getBlockHash())},proto.messages.OutboundMessage.prototype.getBlockHash_asU8=function(){return n.Message.bytesAsU8(this.getBlockHash())},proto.messages.OutboundMessage.prototype.setBlockHash=function(e){return n.Message.setProto3BytesField(this,6,e)},proto.messages.OutboundMessage.prototype.getSignaturesList=function(){return n.Message.getRepeatedField(this,7)},proto.messages.OutboundMessage.prototype.getSignaturesList_asB64=function(){return n.Message.bytesListAsB64(this.getSignaturesList())},proto.messages.OutboundMessage.prototype.getSignaturesList_asU8=function(){return n.Message.bytesListAsU8(this.getSignaturesList())},proto.messages.OutboundMessage.prototype.setSignaturesList=function(e){return n.Message.setField(this,7,e||[])},proto.messages.OutboundMessage.prototype.addSignatures=function(e,t){return n.Message.addToRepeatedField(this,7,e,t)},proto.messages.OutboundMessage.prototype.clearSignaturesList=function(){return this.setSignaturesList([])},proto.messages.OutboundMessage.prototype.getPayloadsList=function(){return n.Message.getRepeatedField(this,8)},proto.messages.OutboundMessage.prototype.getPayloadsList_asB64=function(){return n.Message.bytesListAsB64(this.getPayloadsList())},proto.messages.OutboundMessage.prototype.getPayloadsList_asU8=function(){return n.Message.bytesListAsU8(this.getPayloadsList())},proto.messages.OutboundMessage.prototype.setPayloadsList=function(e){return n.Message.setField(this,8,e||[])},proto.messages.OutboundMessage.prototype.addPayloads=function(e,t){return n.Message.addToRepeatedField(this,8,e,t)},proto.messages.OutboundMessage.prototype.clearPayloadsList=function(){return this.setPayloadsList([])},n.Message.GENERATE_TO_OBJECT&&(proto.messages.InboundMessage.prototype.toObject=function(e){return proto.messages.InboundMessage.toObject(e,this)},proto.messages.InboundMessage.toObject=function(e,t){var r={src:n.Message.getFieldWithDefault(t,1,""),payload:t.getPayload_asB64(),prevSignature:t.getPrevSignature_asB64()};return e&&(r.$jspbMessageInstance=t),r}),proto.messages.InboundMessage.deserializeBinary=function(e){var t=new n.BinaryReader(e),r=new proto.messages.InboundMessage;return proto.messages.InboundMessage.deserializeBinaryFromReader(r,t)},proto.messages.InboundMessage.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();){switch(t.getFieldNumber()){case 1:var r=t.readString();e.setSrc(r);break;case 2:r=t.readBytes();e.setPayload(r);break;case 3:r=t.readBytes();e.setPrevSignature(r);break;default:t.skipField()}}return e},proto.messages.InboundMessage.prototype.serializeBinary=function(){var e=new n.BinaryWriter;return proto.messages.InboundMessage.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.messages.InboundMessage.serializeBinaryToWriter=function(e,t){var r=void 0;(r=e.getSrc()).length>0&&t.writeString(1,r),(r=e.getPayload_asU8()).length>0&&t.writeBytes(2,r),(r=e.getPrevSignature_asU8()).length>0&&t.writeBytes(3,r)},proto.messages.InboundMessage.prototype.getSrc=function(){return n.Message.getFieldWithDefault(this,1,"")},proto.messages.InboundMessage.prototype.setSrc=function(e){return n.Message.setProto3StringField(this,1,e)},proto.messages.InboundMessage.prototype.getPayload=function(){return n.Message.getFieldWithDefault(this,2,"")},proto.messages.InboundMessage.prototype.getPayload_asB64=function(){return n.Message.bytesAsB64(this.getPayload())},proto.messages.InboundMessage.prototype.getPayload_asU8=function(){return n.Message.bytesAsU8(this.getPayload())},proto.messages.InboundMessage.prototype.setPayload=function(e){return n.Message.setProto3BytesField(this,2,e)},proto.messages.InboundMessage.prototype.getPrevSignature=function(){return n.Message.getFieldWithDefault(this,3,"")},proto.messages.InboundMessage.prototype.getPrevSignature_asB64=function(){return n.Message.bytesAsB64(this.getPrevSignature())},proto.messages.InboundMessage.prototype.getPrevSignature_asU8=function(){return n.Message.bytesAsU8(this.getPrevSignature())},proto.messages.InboundMessage.prototype.setPrevSignature=function(e){return n.Message.setProto3BytesField(this,3,e)},n.Message.GENERATE_TO_OBJECT&&(proto.messages.Receipt.prototype.toObject=function(e){return proto.messages.Receipt.toObject(e,this)},proto.messages.Receipt.toObject=function(e,t){var r={prevSignature:t.getPrevSignature_asB64(),signature:t.getSignature_asB64()};return e&&(r.$jspbMessageInstance=t),r}),proto.messages.Receipt.deserializeBinary=function(e){var t=new n.BinaryReader(e),r=new proto.messages.Receipt;return proto.messages.Receipt.deserializeBinaryFromReader(r,t)},proto.messages.Receipt.deserializeBinaryFromReader=function(e,t){for(;t.nextField()&&!t.isEndGroup();){switch(t.getFieldNumber()){case 1:var r=t.readBytes();e.setPrevSignature(r);break;case 2:r=t.readBytes();e.setSignature(r);break;default:t.skipField()}}return e},proto.messages.Receipt.prototype.serializeBinary=function(){var e=new n.BinaryWriter;return proto.messages.Receipt.serializeBinaryToWriter(this,e),e.getResultBuffer()},proto.messages.Receipt.serializeBinaryToWriter=function(e,t){var r=void 0;(r=e.getPrevSignature_asU8()).length>0&&t.writeBytes(1,r),(r=e.getSignature_asU8()).length>0&&t.writeBytes(2,r)},proto.messages.Receipt.prototype.getPrevSignature=function(){return n.Message.getFieldWithDefault(this,1,"")},proto.messages.Receipt.prototype.getPrevSignature_asB64=function(){return n.Message.bytesAsB64(this.getPrevSignature())},proto.messages.Receipt.prototype.getPrevSignature_asU8=function(){return n.Message.bytesAsU8(this.getPrevSignature())},proto.messages.Receipt.prototype.setPrevSignature=function(e){return n.Message.setProto3BytesField(this,1,e)},proto.messages.Receipt.prototype.getSignature=function(){return n.Message.getFieldWithDefault(this,2,"")},proto.messages.Receipt.prototype.getSignature_asB64=function(){return n.Message.bytesAsB64(this.getSignature())},proto.messages.Receipt.prototype.getSignature_asU8=function(){return n.Message.bytesAsU8(this.getSignature())},proto.messages.Receipt.prototype.setSignature=function(e){return n.Message.setProto3BytesField(this,2,e)},proto.messages.ClientMessageType={OUTBOUND_MESSAGE:0,INBOUND_MESSAGE:1,RECEIPT:2},proto.messages.CompressionType={COMPRESSION_NONE:0,COMPRESSION_ZLIB:1},i.object.extend(r,proto.messages)},{"google-protobuf":287}],14:[function(e,t,r){"use strict";var n=e("google-protobuf"),i=n,o=Function("return this")();i.exportSymbol("proto.payloads.Message",null,o),i.exportSymbol("proto.payloads.Payload",null,o),i.exportSymbol("proto.payloads.PayloadType",null,o),i.exportSymbol("proto.payloads.TextData",null,o),proto.payloads.Message=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.payloads.Message,n.Message),i.DEBUG&&!COMPILED&&(proto.payloads.Message.displayName="proto.payloads.Message"),proto.payloads.Payload=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.payloads.Payload,n.Message),i.DEBUG&&!COMPILED&&(proto.payloads.Payload.displayName="proto.payloads.Payload"),proto.payloads.TextData=function(e){n.Message.initialize(this,e,0,-1,null,null)},i.inherits(proto.payloads.TextData,n.Message),i.DEBUG&&!COMPILED&&(proto.payloads.TextData.displayName="proto.payloads.TextData"),n.Message.GENERATE_TO_OBJECT&&(proto.payloads.Message.prototype.toObject=function(e){return proto.payloads.Message.toObject(e,this)},proto.payloads.Message.toObject=function(e,t){var r={payload:t.getPayload_asB64(),en