-
Notifications
You must be signed in to change notification settings - Fork 2
/
vendors~ledger.js.map
1 lines (1 loc) · 291 KB
/
vendors~ledger.js.map
1
{"version":3,"sources":["webpack:///./node_modules/@cosmic-plus/ledger-wallet/es5/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/errors/dist/index.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/@ledgerhq/hw-app-str/lib-es/Str.js","webpack:///./node_modules/@ledgerhq/hw-app-str/lib-es/utils.js","webpack:///./node_modules/base32.js/base32.js","webpack:///./node_modules/tweetnacl/nacl-fast.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/@ledgerhq/hw-transport-u2f/lib-es/TransportU2F.js","webpack:///./node_modules/u2f-api/index.js","webpack:///./node_modules/u2f-api/lib/u2f-api.js","webpack:///./node_modules/u2f-api/lib/google-u2f-api.js","webpack:///./node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/hw-transport/lib-es/Transport.js","webpack:///./node_modules/@ledgerhq/hw-transport-u2f/node_modules/@ledgerhq/logs/lib-es/index.js"],"names":["ledger","exports","isNode","nodeRequire","timeout","StellarApp","default","Transport","connection","disconnection","softReset","path","publicKey","version","multiOpsEnabled","transport","application","connect","async","account","startTime","console","log","Date","create","app","Object","assign","getPublicKey","replace","getAppConfiguration","onConnect","error","id","iframeSelector","iframe","document","querySelector","parentNode","removeChild","ellapsed","message","Error","concat","sign","transaction","signature","signTransaction","signatureBase","toString","addSignature","disconnect","libValues","forEach","key","close","closeTransport","then","onDisconnect","newAccount","horizon","accounts","scan","attempts","includeMerged","last","length","Server","miss","index","current","getPublicKeys","callBuilder","effects","forAccount","response","order","limit","call","catch","latest","records","state","type","push","start","keys","buffer","Buffer","copyProps","src","dst","SafeBuffer","arg","encodingOrOffset","from","alloc","allocUnsafe","allocUnsafeSlow","module","prototype","TypeError","size","fill","encoding","buf","undefined","SlowBuffer","ctor","superCtor","super_","constructor","value","enumerable","writable","configurable","TempCtor","Hash","blockSize","finalSize","this","_block","_finalSize","_blockSize","_len","update","data","enc","block","accum","offset","assigned","remainder","Math","min","i","_update","digest","rem","bits","writeUInt32BE","lowBits","highBits","hash","_hash","errorClasses","deserializers","addCustomErrorDeserializer","name","deserializer","createCustomErrorClass","C","fields","stack","TransportRaceCondition","TransportError","e","StatusCodes","PIN_REMAINING_ATTEMPTS","INCORRECT_LENGTH","MISSING_CRITICAL_PARAMETER","COMMAND_INCOMPATIBLE_FILE_STRUCTURE","SECURITY_STATUS_NOT_SATISFIED","CONDITIONS_OF_USE_NOT_SATISFIED","INCORRECT_DATA","NOT_ENOUGH_MEMORY_SPACE","REFERENCED_DATA_NOT_FOUND","FILE_ALREADY_EXISTS","INCORRECT_P1_P2","INS_NOT_SUPPORTED","CLA_NOT_SUPPORTED","TECHNICAL_PROBLEM","OK","MEMORY_PROBLEM","NO_EF_SELECTED","INVALID_OFFSET","FILE_NOT_FOUND","INCONSISTENT_FILE","ALGORITHM_NOT_SUPPORTED","INVALID_KCV","CODE_NOT_INITIALIZED","ACCESS_CONDITION_NOT_FULFILLED","CONTRADICTION_SECRET_CODE_STATUS","CONTRADICTION_INVALIDATION","CODE_BLOCKED","MAX_VALUE_REACHED","GP_AUTH_FAILED","LICENSING","HALTED","TransportStatusError","statusCode","statusText","find","k","smsg","code","getAltStatusMessage","statusCodeStr","ReflectOwnKeys","R","Reflect","ReflectApply","apply","target","receiver","args","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","Number","isNaN","EventEmitter","init","once","emitter","Promise","resolve","reject","eventListener","errorListener","removeListener","slice","arguments","err","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","m","events","existing","warning","newListener","emit","unshift","warned","w","String","count","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","Array","unwrapListeners","arrayClone","listenerCount","n","copy","defineProperty","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","handler","len","listeners","addListener","on","prependListener","prependOnceListener","list","position","originalListener","shift","pop","spliceOne","off","removeAllListeners","rawListeners","eventNames","inherits","K","W","Sha256","_w","ch","x","y","z","maj","sigma0","sigma1","gamma0","_a","_b","_c","_d","_e","_f","_g","_h","M","a","b","c","d","f","g","h","readInt32BE","j","T1","T2","H","writeInt32BE","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","ah","bh","dh","eh","fh","gh","hh","al","bl","cl","dl","el","fl","gl","hl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","l","Str","scrambleKey","decorateAppAPIMethods","send","boolValidate","boolDisplay","_this","apdus","pathElts","element","verifyMsg","keepAlive","apduResponse","readUInt16BE","rawPublicKey","raw","bufferSize","chunkSize","chunk","remaining","status","signHash_private","signHash","splitPath","result","split","number","parseInt","foreach","callback","iterate","array","res","encodeEd25519PublicKey","versionBuffer","payload","checksum","writeUInt16LE","previous","crc","crc16xmodem","unencoded","encode","verifyEd25519Signature","detached","verify","Uint8Array","toJSON","hasher","checkStellarBip32Path","endsWith","charmap","alphabet","mappings","rfc4648","0","1","crockford","O","I","L","base32hex","Decoder","options","carry","Encoder","lc","toLowerCase","write","str","toUpperCase","char","symbol","finalize","byte","decode","nacl","gf","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","ts64","vn","xi","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","out","inp","o","p","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","crypto_stream_salsa20","crypto_stream","s","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","v","floor","sel25519","q","t","pack25519","neq25519","par25519","unpack25519","A","Z","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","x32","subarray","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","bytes","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","pos","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","modL","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_secretbox_BOXZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","secretKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","signedMsg","tmp","mlen","sig","fromSeed","seed","seedLength","signatureLength","hashLength","setPRNG","fn","crypto","self","msCrypto","getRandomValues","algorithm","Algorithm","sha","sha1","sha224","sha256","sha384","sha512","Sha","rotl30","ft","Sha1","rotl5","Sha224","SHA512","Sha384","webSafe64","base64","attemptExchange","apdu","timeoutMillis","keyHandle","wrapApdu","challenge","signRequest","appId","location","origin","signatureData","substring","transportInstances","TransportU2F","_","_openTimeout","super","exchangeTimeout","metaData","originalError","wrapU2FTransportError","isSupported","supported","listen","observer","unsubscribed","next","descriptor","complete","unsubscribe","API","chromeApi","isBrowser","navigator","userAgent","isSafari","match","isEDGE","_backend","getBackend","notSupported","u2f","native","window","protocol","MessageChannel","ok","ensureSupport","register","ErrorCodes","ErrorNames","makeError","errorCode","deferPromise","promise","cancel","backend","_ensureSupport","registerRequests","signRequests","isArray","makeDefault","func","global","CANCELLED","OTHER_ERROR","BAD_REQUEST","CONFIGURATION_UNSUPPORTED","DEVICE_INELIGIBLE","TIMEOUT","EXTENSION_ID","MessageTypes","Request","Response","SignRequest","SignResponse","RegisterRequest","RegisterResponse","port_","getMessagePort","chrome","runtime","U2F_SIGN_REQUEST","sendMessage","lastError","getIframePort_","getChromeRuntimePort_","port","setTimeout","WrappedChromeRuntimePort_","postMessage","addEventListener","eventName","onMessage","iframeOrigin","createElement","setAttribute","body","appendChild","hasCalledBack","channel","ready","port1","removeEventListener","contentWindow","port2","EXTENSION_TIMEOUT_SEC","waitingForPort_","reqCounter_","callbackMap_","getPortSingleton_","responseHandler_","reqId","cb","opt_timeoutSeconds","req","timeoutSeconds","requestId","U2F_REGISTER_REQUEST","unresponsiveTimeout","deviceModel","cla","ins","p1","p2","statusList","exchange","sw","some","exchangeBusyPromise","exchangeAtomicImpl","resolveBusy","busyPromise","unresponsiveReached","clearTimeout","_appAPIlock","_apdu","_key","event","openTimeout","listenTimeout","found","sub","listenTimeoutId","ErrorMessage_NoDeviceFound","ErrorMessage_ListenTimeout","methods","methodName","decorateAppAPIMethod","ctx","setScrambleKey","subscribers","obj","date","dispatch","indexOf","__ledgerLogsListen"],"mappings":"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","file":"vendors~ledger.js","sourcesContent":["\"use strict\";\n/**\n * This library is a convenient wrapper around the official Ledger libraries for\n * Stellar:\n *\n * - [Stellar app API](https://www.npmjs.com/package/@ledgerhq/hw-app-str)\n * - [Transport Node HID](https://www.npmjs.com/package/@ledgerhq/hw-transport-node-hid) - Node.js support\n * - [Transport U2F](https://www.npmjs.com/package/@ledgerhq/hw-transport-u2f) - Browser support\n *\n * It provides a way to support Ledger Wallets with a few one-liners:\n *\n * ```js\n * // Step 1: Connect\n * await ledgerWallet.connect()\n *\n * // Step 2: Get public key\n * const pubkey = ledgerWallet.publicKey\n *\n * // Step 3: Sign transaction\n * await ledgerWallet.sign(transaction)\n *\n * // Extra: Event handlers\n * ledgerWallet.onConnect = connectionHandler\n * ledgerWallet.onDisconnect = disconnectionHandler\n * ```\n *\n * This library is compatible with both Node.js and browser environments.\n *\n * @exports ledgerWallet\n */\n\nrequire(\"core-js/modules/es.string.replace.js\");\n\nconst ledger = exports;\n\nconst {\n isNode,\n nodeRequire,\n timeout\n} = require(\"@kisbox/helpers\");\n\nconst StellarApp = require(\"@ledgerhq/hw-app-str\").default;\n\nconst Transport = isNode ? nodeRequire(\"@ledgerhq/hw-transport-node-hid\").default : require(\"@ledgerhq/hw-transport-u2f\").default;\n/* Configuration */\n\nconst BIP32_PATH = \"m/44'/148'\";\n/* Properties */\n\n/**\n * Public key of the connected account.\n * @var {String}\n */\n\nledger.publicKey = null;\n/**\n * Derivation path of the connected account (default: `m/44'/148'/0'`).\n * @var {String}\n */\n\nledger.path = null;\n/**\n * Version of the Stellar application installed on the connected device.\n * @var {String}\n */\n\nledger.version = null;\n/**\n * Whether or not the user accepts to sign transactions without checking them on\n * the device first. This allows to sign long transactions (10+ ops) that could\n * normally not be handled by the device memory, but this is insecure.\n * @var {Boolean}\n */\n\nledger.multiOpsEnabled = null;\n/**\n * The Ledger Transport instance. (internal component)\n * @var {Transport}\n */\n\nledger.transport = null;\n/**\n * The Ledger Stellar application instance. (internal component)\n * @var {StellarApp}\n */\n\nledger.application = null;\n/* Methods */\n\nlet connection, disconnection;\n/**\n * Waits for a connection with the Ledger Wallet application for Stellar. If\n * **account** is not provided, account 1 is used. The library will stop\n * listening for a connection if `await ledgerWallet.disconnect()` is called.\n *\n * Once the connection is established, you can use `await\n * ledgerWallet.connect(account)` again at any time to ensure the device is\n * still connected.\n *\n * When switching to another account, you can `await\n * ledgerWallet.connect(new_account)` without prior disconnection.\n *\n * _Note:_ To stay consistent with the way Trezor numbers accounts, **account**\n * starts at 1 (derivation path: `m/44'/148'/0'`).\n *\n * @async\n * @param {Number|String} [account=1] - Either an account number (starts at 1)\n * or a derivation path (e.g: `m/44'/148'/0'`).\n */\n\nledger.connect = async function (account = 1) {\n const path = ledger.connect.path(account);\n if (disconnection) await disconnection;\n if (ledger.path && ledger.path !== path) softReset();\n if (!connection) connection = connect(path);\n return connection;\n};\n\nledger.connect.path = function (account) {\n if (typeof account === \"number\") {\n if (account < 1) throw new Error(\"Account number starts at 1.\");\n return \"\".concat(BIP32_PATH, \"/\").concat(account - 1, \"'\");\n } else {\n return account;\n }\n};\n\nasync function connect(path) {\n // eslint-disable-next-line no-console\n console.log(\"Attempting ledger connection...\");\n connection = true; // Try to connect until disconnect() is called or until connection happens.\n\n let startTime;\n\n while (connection && !ledger.publicKey) {\n startTime = +new Date();\n\n try {\n if (!ledger.transport || isNode) {\n ledger.transport = await Transport.create();\n }\n\n if (!ledger.application || isNode) {\n ledger.application = new StellarApp(ledger.transport);\n } // Set ledger properties\n\n\n const app = ledger.application;\n Object.assign(ledger, await app.getPublicKey(path.replace(/^m\\//, \"\")));\n Object.assign(ledger, await app.getAppConfiguration());\n ledger.path = path;\n onConnect();\n } catch (error) {\n if (error.id === \"U2FNotSupported\") {\n // This frame may show up when using strict Content-Security-Policy\n // See: https://github.com/LedgerHQ/ledgerjs/issues/254\n const iframeSelector = \"iframe[src^=chrome-extension/*/u2f-comms.html]\";\n const iframe = document.querySelector(iframeSelector);\n if (iframe) iframe.parentNode.removeChild(iframe);\n } // Keep looping over timeout/non-connected/non-opened app errors.\n\n\n const ellapsed = +new Date() - startTime;\n\n if ( // Firefox user cancels.\n error.id === \"U2F_1\" // Chrome/Win user cancels.\n || error.id === \"U2F_4\" && ellapsed < 25000) {\n softReset();\n error.message = \"Connexion invite cancelled\";\n throw error;\n } else if (ellapsed < 8000) {\n // Prevent blocking message loops in potentially unhandled cases.\n await timeout(8000 - ellapsed);\n }\n }\n }\n}\n/**\n * Prompts the user to accept **transaction** using the connected account of\n * their Ledger Wallet.\n *\n * If the user accepts, adds the signature to **transaction**. Else, throws an\n * error.\n *\n * @async\n * @param {Transaction} transaction - A StellarSdk Transaction\n */\n\n\nledger.sign = async function (transaction) {\n if (!ledger.publicKey) throw new Error(\"No ledger wallet connected.\");\n const result = await ledger.application.signTransaction(ledger.path.replace(/^m\\//, \"\"), transaction.signatureBase());\n const signature = result.signature.toString(\"base64\");\n transaction.addSignature(ledger.publicKey, signature);\n return transaction;\n};\n/**\n * Close the connection with the Ledger device, or stop waiting for one in case\n * a connection has not been established yet.\n *\n * @async\n */\n\n\nledger.disconnect = async function () {\n const transport = ledger.transport;\n reset();\n\n if (transport) {\n disconnection = closeTransport(transport);\n disconnection.then(onDisconnect);\n await disconnection;\n } else if (disconnection) {\n await disconnection;\n }\n\n disconnection = null;\n};\n\nasync function closeTransport(transport) {\n // If transport is not valid anymore we consider the transport as closed.\n try {\n await transport.close();\n } catch (error) {\n console.error(error);\n }\n}\n\nfunction softReset() {\n connection = null;\n ledger.path = null;\n ledger.publicKey = null;\n}\n\nfunction reset() {\n connection = null;\n libValues.forEach(key => ledger[key] = null);\n}\n\nconst libValues = [\"transport\", \"application\", \"path\", \"version\", \"publicKey\", \"multiOpsEnabled\"];\n/**\n * Connects the first unused account.\n *\n * _Note:_ merged accounts are considered as used.\n *\n * @param {String|Server} [horizon=https://horizon.stellar.org] - The\n * Horizon server where to check for account existence. It can be either an URL\n * or a _StellarSdk.Server_ object.\n */\n\nledger.newAccount = async function (horizon = \"https://horizon.stellar.org\") {\n const accounts = await ledger.scan({\n horizon,\n attempts: 1,\n includeMerged: true\n });\n const last = accounts[accounts.length - 1];\n await ledger.connect(last ? last.account + 1 : 1);\n};\n/**\n * Scans the ledger device for accounts that exist on **params.horizon**. The\n * scanning stops after encountering **params.attempts** unused accounts.\n *\n * Merged accounts are considered as existing accounts and will reset the\n * **params.attempts** counter when encountered.\n *\n * Returns an _Array_ of _Objects_ containing `account` number, `publicKey`,\n * `path`, and `state` (either `\"open\"` or `\"merged\"`).\n *\n * @param {Object} [params] - Optional parameters.\n * @param {String|Server} [params.horizon=https://horizon.stellar.org] - The\n * Horizon server where to check for account existence. It can be either an URL\n * or a _StellarSdk.Server_ object.\n * @param {Number} [params.attempts=3] - The number of empty accounts before\n * scanning stops.\n * @param {Boolean} [params.includeMerged=false] - List merged accounts as well.\n * @returns {Array}\n */\n\n\nledger.scan = async function ({\n horizon = \"https://horizon.stellar.org\",\n attempts = 3,\n includeMerged = false\n}) {\n if (typeof horizon === \"string\") {\n const {\n Server\n } = require(\"@cosmic-plus/base/es5/stellar-sdk\");\n\n horizon = new Server(horizon);\n }\n\n const accounts = [];\n let miss = 0,\n index = 1;\n\n while (miss < attempts) {\n const current = (await ledger.getPublicKeys(index, 1))[0]; // effectForAccount let us know about merged account as well.\n\n const callBuilder = horizon.effects().forAccount(current.publicKey);\n const response = await callBuilder.order(\"desc\").limit(1).call().catch(() => null);\n\n if (response) {\n miss = 0;\n const latest = response.records[0];\n current.state = latest.type === \"account_removed\" ? \"merged\" : \"open\";\n\n if (includeMerged || current.state === \"open\") {\n accounts.push(current);\n }\n } else {\n miss++;\n }\n\n index++;\n }\n\n return accounts;\n};\n/**\n * Request multiple public keys from the Ledger device. The request will return\n * **length** accounts, starting by **start** (minimum 1).\n *\n * Returns an _Array_ of _Objects_ with properties `account`, `publicKey`, and\n * `path`.\n *\n * @param {Number} [start=1] - Starting account number\n * @param {Number} [length=1] - Number of account to be listed.\n * @return {Array}\n */\n\n\nledger.getPublicKeys = async function (start = 1, length = 1) {\n const keys = [];\n\n for (let account = start; account < start + length; account++) {\n await ledger.connect(account);\n keys.push({\n account,\n publicKey: ledger.publicKey,\n path: ledger.path\n });\n }\n\n return keys;\n};\n/* Events */\n\n/**\n * _Function_ to execute on each connection.\n *\n * @category event\n * @var {Function}\n */\n\n\nledger.onConnect = null;\n\nasync function onConnect() {\n // eslint-disable-next-line no-console\n console.log(\"Ledger connected\");\n if (typeof ledger.onConnect === \"function\") ledger.onConnect();\n}\n/**\n * _Function_ to execute on each disconnection.\n *\n * @category event\n * @var {Function}\n */\n\n\nledger.onDisconnect = null;\n\nfunction onDisconnect() {\n // eslint-disable-next-line no-console\n console.log(\"Ledger disconnected\");\n if (typeof ledger.onDisconnect === \"function\") ledger.onDisconnect();\n}","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/* eslint-disable no-continue */\r\n/* eslint-disable no-unused-vars */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-prototype-builtins */\r\nvar errorClasses = {};\r\nvar deserializers = {};\r\nvar addCustomErrorDeserializer = function (name, deserializer) {\r\n deserializers[name] = deserializer;\r\n};\r\nvar createCustomErrorClass = function (name) {\r\n var C = function CustomError(message, fields) {\r\n Object.assign(this, fields);\r\n this.name = name;\r\n this.message = message || name;\r\n this.stack = new Error().stack;\r\n };\r\n C.prototype = new Error();\r\n errorClasses[name] = C;\r\n return C;\r\n};\r\n// inspired from https://github.com/programble/errio/blob/master/index.js\r\nvar deserializeError = function (object) {\r\n if (typeof object === \"object\" && object) {\r\n try {\r\n // $FlowFixMe FIXME HACK\r\n var msg = JSON.parse(object.message);\r\n if (msg.message && msg.name) {\r\n object = msg;\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n var error = void 0;\r\n if (typeof object.name === \"string\") {\r\n var name_1 = object.name;\r\n var des = deserializers[name_1];\r\n if (des) {\r\n error = des(object);\r\n }\r\n else {\r\n var constructor = name_1 === \"Error\" ? Error : errorClasses[name_1];\r\n if (!constructor) {\r\n console.warn(\"deserializing an unknown class '\" + name_1 + \"'\");\r\n constructor = createCustomErrorClass(name_1);\r\n }\r\n error = Object.create(constructor.prototype);\r\n try {\r\n for (var prop in object) {\r\n if (object.hasOwnProperty(prop)) {\r\n error[prop] = object[prop];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // sometimes setting a property can fail (e.g. .name)\r\n }\r\n }\r\n }\r\n else {\r\n error = new Error(object.message);\r\n }\r\n if (!error.stack && Error.captureStackTrace) {\r\n Error.captureStackTrace(error, deserializeError);\r\n }\r\n return error;\r\n }\r\n return new Error(String(object));\r\n};\r\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\r\nvar serializeError = function (value) {\r\n if (!value)\r\n return value;\r\n if (typeof value === \"object\") {\r\n return destroyCircular(value, []);\r\n }\r\n if (typeof value === \"function\") {\r\n return \"[Function: \" + (value.name || \"anonymous\") + \"]\";\r\n }\r\n return value;\r\n};\r\n// https://www.npmjs.com/package/destroy-circular\r\nfunction destroyCircular(from, seen) {\r\n var to = {};\r\n seen.push(from);\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var value = from[key];\r\n if (typeof value === \"function\") {\r\n continue;\r\n }\r\n if (!value || typeof value !== \"object\") {\r\n to[key] = value;\r\n continue;\r\n }\r\n if (seen.indexOf(from[key]) === -1) {\r\n to[key] = destroyCircular(from[key], seen.slice(0));\r\n continue;\r\n }\r\n to[key] = \"[Circular]\";\r\n }\r\n if (typeof from.name === \"string\") {\r\n to.name = from.name;\r\n }\r\n if (typeof from.message === \"string\") {\r\n to.message = from.message;\r\n }\r\n if (typeof from.stack === \"string\") {\r\n to.stack = from.stack;\r\n }\r\n return to;\r\n}\n\nvar AccountNameRequiredError = createCustomErrorClass(\"AccountNameRequired\");\r\nvar AccountNotSupported = createCustomErrorClass(\"AccountNotSupported\");\r\nvar AmountRequired = createCustomErrorClass(\"AmountRequired\");\r\nvar BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\r\nvar BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\r\nvar CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\r\nvar CashAddrNotSupported = createCustomErrorClass(\"CashAddrNotSupported\");\r\nvar CurrencyNotSupported = createCustomErrorClass(\"CurrencyNotSupported\");\r\nvar DeviceAppVerifyNotSupported = createCustomErrorClass(\"DeviceAppVerifyNotSupported\");\r\nvar DeviceGenuineSocketEarlyClose = createCustomErrorClass(\"DeviceGenuineSocketEarlyClose\");\r\nvar DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\r\nvar DeviceOnDashboardExpected = createCustomErrorClass(\"DeviceOnDashboardExpected\");\r\nvar DeviceOnDashboardUnexpected = createCustomErrorClass(\"DeviceOnDashboardUnexpected\");\r\nvar DeviceInOSUExpected = createCustomErrorClass(\"DeviceInOSUExpected\");\r\nvar DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\r\nvar DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\r\nvar DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\r\nvar DeviceSocketNoBulkStatus = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\r\nvar DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\r\nvar DisconnectedDeviceDuringOperation = createCustomErrorClass(\"DisconnectedDeviceDuringOperation\");\r\nvar EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\r\nvar EthAppPleaseEnableContractData = createCustomErrorClass(\"EthAppPleaseEnableContractData\");\r\nvar FeeEstimationFailed = createCustomErrorClass(\"FeeEstimationFailed\");\r\nvar FirmwareNotRecognized = createCustomErrorClass(\"FirmwareNotRecognized\");\r\nvar HardResetFail = createCustomErrorClass(\"HardResetFail\");\r\nvar InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\r\nvar InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\r\nvar InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\"InvalidAddressBecauseDestinationIsAlsoSource\");\r\nvar LatestMCUInstalledError = createCustomErrorClass(\"LatestMCUInstalledError\");\r\nvar UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\r\nvar LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\r\nvar LedgerAPIErrorWithMessage = createCustomErrorClass(\"LedgerAPIErrorWithMessage\");\r\nvar LedgerAPINotAvailable = createCustomErrorClass(\"LedgerAPINotAvailable\");\r\nvar ManagerAppAlreadyInstalledError = createCustomErrorClass(\"ManagerAppAlreadyInstalled\");\r\nvar ManagerAppRelyOnBTCError = createCustomErrorClass(\"ManagerAppRelyOnBTC\");\r\nvar ManagerAppDepInstallRequired = createCustomErrorClass(\"ManagerAppDepInstallRequired\");\r\nvar ManagerAppDepUninstallRequired = createCustomErrorClass(\"ManagerAppDepUninstallRequired\");\r\nvar ManagerDeviceLockedError = createCustomErrorClass(\"ManagerDeviceLocked\");\r\nvar ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\"ManagerFirmwareNotEnoughSpace\");\r\nvar ManagerNotEnoughSpaceError = createCustomErrorClass(\"ManagerNotEnoughSpace\");\r\nvar ManagerUninstallBTCDep = createCustomErrorClass(\"ManagerUninstallBTCDep\");\r\nvar NetworkDown = createCustomErrorClass(\"NetworkDown\");\r\nvar NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\r\nvar NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\r\nvar NotEnoughBalanceToDelegate = createCustomErrorClass(\"NotEnoughBalanceToDelegate\");\r\nvar NotEnoughBalanceInParentAccount = createCustomErrorClass(\"NotEnoughBalanceInParentAccount\");\r\nvar NotEnoughSpendableBalance = createCustomErrorClass(\"NotEnoughSpendableBalance\");\r\nvar NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\"NotEnoughBalanceBecauseDestinationNotCreated\");\r\nvar NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\r\nvar NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\r\nvar NotSupportedLegacyAddress = createCustomErrorClass(\"NotSupportedLegacyAddress\");\r\nvar GasLessThanEstimate = createCustomErrorClass(\"GasLessThanEstimate\");\r\nvar PasswordsDontMatchError = createCustomErrorClass(\"PasswordsDontMatch\");\r\nvar PasswordIncorrectError = createCustomErrorClass(\"PasswordIncorrect\");\r\nvar RecommendSubAccountsToEmpty = createCustomErrorClass(\"RecommendSubAccountsToEmpty\");\r\nvar RecommendUndelegation = createCustomErrorClass(\"RecommendUndelegation\");\r\nvar TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\r\nvar UnexpectedBootloader = createCustomErrorClass(\"UnexpectedBootloader\");\r\nvar MCUNotGenuineToDashboard = createCustomErrorClass(\"MCUNotGenuineToDashboard\");\r\nvar RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\r\nvar UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\"UnavailableTezosOriginatedAccountReceive\");\r\nvar UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\"UnavailableTezosOriginatedAccountSend\");\r\nvar UpdateFetchFileFail = createCustomErrorClass(\"UpdateFetchFileFail\");\r\nvar UpdateIncorrectHash = createCustomErrorClass(\"UpdateIncorrectHash\");\r\nvar UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\r\nvar UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\r\nvar UserRefusedDeviceNameChange = createCustomErrorClass(\"UserRefusedDeviceNameChange\");\r\nvar UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\r\nvar UserRefusedFirmwareUpdate = createCustomErrorClass(\"UserRefusedFirmwareUpdate\");\r\nvar UserRefusedAllowManager = createCustomErrorClass(\"UserRefusedAllowManager\");\r\nvar UserRefusedOnDevice = createCustomErrorClass(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\r\nvar TransportOpenUserCancelled = createCustomErrorClass(\"TransportOpenUserCancelled\");\r\nvar TransportInterfaceNotAvailable = createCustomErrorClass(\"TransportInterfaceNotAvailable\");\r\nvar TransportRaceCondition = createCustomErrorClass(\"TransportRaceCondition\");\r\nvar TransportWebUSBGestureRequired = createCustomErrorClass(\"TransportWebUSBGestureRequired\");\r\nvar DeviceShouldStayInApp = createCustomErrorClass(\"DeviceShouldStayInApp\");\r\nvar WebsocketConnectionError = createCustomErrorClass(\"WebsocketConnectionError\");\r\nvar WebsocketConnectionFailed = createCustomErrorClass(\"WebsocketConnectionFailed\");\r\nvar WrongDeviceForAccount = createCustomErrorClass(\"WrongDeviceForAccount\");\r\nvar WrongAppForCurrency = createCustomErrorClass(\"WrongAppForCurrency\");\r\nvar ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\r\nvar CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\r\nvar FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\r\nvar FeeRequired = createCustomErrorClass(\"FeeRequired\");\r\nvar FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\r\nvar SyncError = createCustomErrorClass(\"SyncError\");\r\nvar PairingFailed = createCustomErrorClass(\"PairingFailed\");\r\nvar GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\r\nvar LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\r\nvar LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\r\nvar FirmwareOrAppUpdateRequired = createCustomErrorClass(\"FirmwareOrAppUpdateRequired\");\r\n// db stuff, no need to translate\r\nvar NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\r\nvar DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\r\nvar DBNotReset = createCustomErrorClass(\"DBNotReset\");\r\n/**\r\n * TransportError is used for any generic transport errors.\r\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\r\n */\r\nfunction TransportError(message, id) {\r\n this.name = \"TransportError\";\r\n this.message = message;\r\n this.stack = new Error().stack;\r\n this.id = id;\r\n}\r\nTransportError.prototype = new Error();\r\naddCustomErrorDeserializer(\"TransportError\", function (e) { return new TransportError(e.message, e.id); });\r\nvar StatusCodes = {\r\n PIN_REMAINING_ATTEMPTS: 0x63c0,\r\n INCORRECT_LENGTH: 0x6700,\r\n MISSING_CRITICAL_PARAMETER: 0x6800,\r\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\r\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\r\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\r\n INCORRECT_DATA: 0x6a80,\r\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\r\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\r\n FILE_ALREADY_EXISTS: 0x6a89,\r\n INCORRECT_P1_P2: 0x6b00,\r\n INS_NOT_SUPPORTED: 0x6d00,\r\n CLA_NOT_SUPPORTED: 0x6e00,\r\n TECHNICAL_PROBLEM: 0x6f00,\r\n OK: 0x9000,\r\n MEMORY_PROBLEM: 0x9240,\r\n NO_EF_SELECTED: 0x9400,\r\n INVALID_OFFSET: 0x9402,\r\n FILE_NOT_FOUND: 0x9404,\r\n INCONSISTENT_FILE: 0x9408,\r\n ALGORITHM_NOT_SUPPORTED: 0x9484,\r\n INVALID_KCV: 0x9485,\r\n CODE_NOT_INITIALIZED: 0x9802,\r\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\r\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\r\n CONTRADICTION_INVALIDATION: 0x9810,\r\n CODE_BLOCKED: 0x9840,\r\n MAX_VALUE_REACHED: 0x9850,\r\n GP_AUTH_FAILED: 0x6300,\r\n LICENSING: 0x6f42,\r\n HALTED: 0x6faa,\r\n};\r\nfunction getAltStatusMessage(code) {\r\n switch (code) {\r\n // improve text of most common errors\r\n case 0x6700:\r\n return \"Incorrect length\";\r\n case 0x6800:\r\n return \"Missing critical parameter\";\r\n case 0x6982:\r\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\r\n case 0x6985:\r\n return \"Condition of use not satisfied (denied by the user?)\";\r\n case 0x6a80:\r\n return \"Invalid data received\";\r\n case 0x6b00:\r\n return \"Invalid parameter received\";\r\n }\r\n if (0x6f00 <= code && code <= 0x6fff) {\r\n return \"Internal error, please report\";\r\n }\r\n}\r\n/**\r\n * Error thrown when a device returned a non success status.\r\n * the error.statusCode is one of the `StatusCodes` exported by this library.\r\n */\r\nfunction TransportStatusError(statusCode) {\r\n this.name = \"TransportStatusError\";\r\n var statusText = Object.keys(StatusCodes).find(function (k) { return StatusCodes[k] === statusCode; }) ||\r\n \"UNKNOWN_ERROR\";\r\n var smsg = getAltStatusMessage(statusCode) || statusText;\r\n var statusCodeStr = statusCode.toString(16);\r\n this.message = \"Ledger device: \" + smsg + \" (0x\" + statusCodeStr + \")\";\r\n this.stack = new Error().stack;\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n}\r\nTransportStatusError.prototype = new Error();\r\naddCustomErrorDeserializer(\"TransportStatusError\", function (e) { return new TransportStatusError(e.statusCode); });\n\nexport { AccountNameRequiredError, AccountNotSupported, AmountRequired, BluetoothRequired, BtcUnmatchedApp, CantOpenDevice, CantScanQRCode, CashAddrNotSupported, CurrencyNotSupported, DBNotReset, DBWrongPassword, DeviceAppVerifyNotSupported, DeviceGenuineSocketEarlyClose, DeviceHalted, DeviceInOSUExpected, DeviceNameInvalid, DeviceNotGenuineError, DeviceOnDashboardExpected, DeviceOnDashboardUnexpected, DeviceShouldStayInApp, DeviceSocketFail, DeviceSocketNoBulkStatus, DisconnectedDevice, DisconnectedDeviceDuringOperation, ETHAddressNonEIP, EnpointConfigError, EthAppPleaseEnableContractData, FeeEstimationFailed, FeeNotLoaded, FeeRequired, FeeTooHigh, FirmwareNotRecognized, FirmwareOrAppUpdateRequired, GasLessThanEstimate, GenuineCheckFailed, HardResetFail, InvalidAddress, InvalidAddressBecauseDestinationIsAlsoSource, InvalidXRPTag, LatestMCUInstalledError, LedgerAPI4xx, LedgerAPI5xx, LedgerAPIError, LedgerAPIErrorWithMessage, LedgerAPINotAvailable, MCUNotGenuineToDashboard, ManagerAppAlreadyInstalledError, ManagerAppDepInstallRequired, ManagerAppDepUninstallRequired, ManagerAppRelyOnBTCError, ManagerDeviceLockedError, ManagerFirmwareNotEnoughSpaceError, ManagerNotEnoughSpaceError, ManagerUninstallBTCDep, NetworkDown, NoAccessToCamera, NoAddressesFound, NoDBPathGiven, NotEnoughBalance, NotEnoughBalanceBecauseDestinationNotCreated, NotEnoughBalanceInParentAccount, NotEnoughBalanceToDelegate, NotEnoughGas, NotEnoughSpendableBalance, NotSupportedLegacyAddress, PairingFailed, PasswordIncorrectError, PasswordsDontMatchError, RecipientRequired, RecommendSubAccountsToEmpty, RecommendUndelegation, StatusCodes, SyncError, TimeoutTagged, TransportError, TransportInterfaceNotAvailable, TransportOpenUserCancelled, TransportRaceCondition, TransportStatusError, TransportWebUSBGestureRequired, UnavailableTezosOriginatedAccountReceive, UnavailableTezosOriginatedAccountSend, UnexpectedBootloader, UnknownMCU, UpdateFetchFileFail, UpdateIncorrectHash, UpdateIncorrectSig, UpdateYourApp, UserRefusedAddress, UserRefusedAllowManager, UserRefusedDeviceNameChange, UserRefusedFirmwareUpdate, UserRefusedOnDevice, WebsocketConnectionError, WebsocketConnectionFailed, WrongAppForCurrency, WrongDeviceForAccount, addCustomErrorDeserializer, createCustomErrorClass, deserializeError, getAltStatusMessage, serializeError };\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","import { splitPath, foreach, encodeEd25519PublicKey, verifyEd25519Signature, checkStellarBip32Path, hash, } from \"./utils\";\nvar CLA = 0xe0;\nvar INS_GET_PK = 0x02;\nvar INS_SIGN_TX = 0x04;\nvar INS_GET_CONF = 0x06;\nvar INS_SIGN_TX_HASH = 0x08;\nvar INS_KEEP_ALIVE = 0x10;\nvar APDU_MAX_SIZE = 150;\nvar P1_FIRST_APDU = 0x00;\nvar P1_MORE_APDU = 0x80;\nvar P2_LAST_APDU = 0x00;\nvar P2_MORE_APDU = 0x80;\nvar SW_OK = 0x9000;\nvar SW_CANCEL = 0x6985;\nvar SW_UNKNOWN_OP = 0x6c24;\nvar SW_MULTI_OP = 0x6c25;\nvar SW_NOT_ALLOWED = 0x6c66;\nvar SW_UNSUPPORTED = 0x6d00;\nvar SW_KEEP_ALIVE = 0x6e02;\nvar TX_MAX_SIZE = 1540;\n/**\n * Stellar API\n *\n * @example\n * import Str from \"@ledgerhq/hw-app-str\";\n * const str = new Str(transport)\n */\nvar Str = /** @class */ (function () {\n function Str(transport, scrambleKey) {\n if (scrambleKey === void 0) { scrambleKey = \"l0v\"; }\n this.transport = transport;\n transport.decorateAppAPIMethods(this, [\"getAppConfiguration\", \"getPublicKey\", \"signTransaction\", \"signHash\"], scrambleKey);\n }\n Str.prototype.getAppConfiguration = function () {\n return this.transport\n .send(CLA, INS_GET_CONF, 0x00, 0x00)\n .then(function (response) {\n var multiOpsEnabled = response[0] === 0x01 || response[1] < 0x02;\n var version = \"\" + response[1] + \".\" + response[2] + \".\" + response[3];\n return {\n version: version,\n multiOpsEnabled: multiOpsEnabled\n };\n });\n };\n /**\n * get Stellar public key for a given BIP 32 path.\n * @param path a path in BIP 32 format\n * @option boolValidate optionally enable key pair validation\n * @option boolDisplay optionally enable or not the display\n * @return an object with the publicKey (using XLM public key format) and\n * the raw ed25519 public key.\n * @example\n * str.getPublicKey(\"44'/148'/0'\").then(o => o.publicKey)\n */\n Str.prototype.getPublicKey = function (path, boolValidate, boolDisplay) {\n var _this = this;\n checkStellarBip32Path(path);\n var apdus = [];\n var response;\n var pathElts = splitPath(path);\n var buffer = Buffer.alloc(1 + pathElts.length * 4);\n buffer[0] = pathElts.length;\n pathElts.forEach(function (element, index) {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n var verifyMsg = Buffer.from(\"via lumina\", \"ascii\");\n apdus.push(Buffer.concat([buffer, verifyMsg]));\n var keepAlive = false;\n return foreach(apdus, function (data) {\n return _this.transport\n .send(CLA, keepAlive ? INS_KEEP_ALIVE : INS_GET_PK, boolValidate ? 0x01 : 0x00, boolDisplay ? 0x01 : 0x00, data, [SW_OK, SW_KEEP_ALIVE])\n .then(function (apduResponse) {\n var status = Buffer.from(apduResponse.slice(apduResponse.length - 2)).readUInt16BE(0);\n if (status === SW_KEEP_ALIVE) {\n keepAlive = true;\n apdus.push(Buffer.alloc(0));\n }\n response = apduResponse;\n });\n }).then(function () {\n // response = Buffer.from(response, 'hex');\n var offset = 0;\n var rawPublicKey = response.slice(offset, offset + 32);\n offset += 32;\n var publicKey = encodeEd25519PublicKey(rawPublicKey);\n if (boolValidate) {\n var signature = response.slice(offset, offset + 64);\n if (!verifyEd25519Signature(verifyMsg, signature, rawPublicKey)) {\n throw new Error(\"Bad signature. Keypair is invalid. Please report this.\");\n }\n }\n return {\n publicKey: publicKey,\n raw: rawPublicKey\n };\n });\n };\n /**\n * sign a Stellar transaction.\n * @param path a path in BIP 32 format\n * @param transaction signature base of the transaction to sign\n * @return an object with the signature and the status\n * @example\n * str.signTransaction(\"44'/148'/0'\", signatureBase).then(o => o.signature)\n */\n Str.prototype.signTransaction = function (path, transaction) {\n var _this = this;\n checkStellarBip32Path(path);\n if (transaction.length > TX_MAX_SIZE) {\n throw new Error(\"Transaction too large: max = \" +\n TX_MAX_SIZE +\n \"; actual = \" +\n transaction.length);\n }\n var apdus = [];\n var response;\n var pathElts = splitPath(path);\n var bufferSize = 1 + pathElts.length * 4;\n var buffer = Buffer.alloc(bufferSize);\n buffer[0] = pathElts.length;\n pathElts.forEach(function (element, index) {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n var chunkSize = APDU_MAX_SIZE - bufferSize;\n if (transaction.length <= chunkSize) {\n // it fits in a single apdu\n apdus.push(Buffer.concat([buffer, transaction]));\n }\n else {\n // we need to send multiple apdus to transmit the entire transaction\n var chunk = Buffer.alloc(chunkSize);\n var offset = 0;\n transaction.copy(chunk, 0, offset, chunkSize);\n apdus.push(Buffer.concat([buffer, chunk]));\n offset += chunkSize;\n while (offset < transaction.length) {\n var remaining = transaction.length - offset;\n chunkSize = remaining < APDU_MAX_SIZE ? remaining : APDU_MAX_SIZE;\n chunk = Buffer.alloc(chunkSize);\n transaction.copy(chunk, 0, offset, offset + chunkSize);\n offset += chunkSize;\n apdus.push(chunk);\n }\n }\n var keepAlive = false;\n return foreach(apdus, function (data, i) {\n return _this.transport\n .send(CLA, keepAlive ? INS_KEEP_ALIVE : INS_SIGN_TX, i === 0 ? P1_FIRST_APDU : P1_MORE_APDU, i === apdus.length - 1 ? P2_LAST_APDU : P2_MORE_APDU, data, [SW_OK, SW_CANCEL, SW_UNKNOWN_OP, SW_MULTI_OP, SW_KEEP_ALIVE])\n .then(function (apduResponse) {\n var status = Buffer.from(apduResponse.slice(apduResponse.length - 2)).readUInt16BE(0);\n if (status === SW_KEEP_ALIVE) {\n keepAlive = true;\n apdus.push(Buffer.alloc(0));\n }\n response = apduResponse;\n });\n }).then(function () {\n var status = Buffer.from(response.slice(response.length - 2)).readUInt16BE(0);\n if (status === SW_OK) {\n var signature = Buffer.from(response.slice(0, response.length - 2));\n return {\n signature: signature\n };\n }\n else if (status === SW_UNKNOWN_OP) {\n // pre-v2 app version: fall back on hash signing\n return _this.signHash_private(path, hash(transaction));\n }\n else if (status === SW_MULTI_OP) {\n // multi-operation transaction: attempt hash signing\n return _this.signHash_private(path, hash(transaction));\n }\n else {\n throw new Error(\"Transaction approval request was rejected\");\n }\n });\n };\n /**\n * sign a Stellar transaction hash.\n * @param path a path in BIP 32 format\n * @param hash hash of the transaction to sign\n * @return an object with the signature\n * @example\n * str.signHash(\"44'/148'/0'\", hash).then(o => o.signature)\n */\n Str.prototype.signHash = function (path, hash) {\n checkStellarBip32Path(path);\n return this.signHash_private(path, hash);\n };\n Str.prototype.signHash_private = function (path, hash) {\n var _this = this;\n var apdus = [];\n var response;\n var pathElts = splitPath(path);\n var buffer = Buffer.alloc(1 + pathElts.length * 4);\n buffer[0] = pathElts.length;\n pathElts.forEach(function (element, index) {\n buffer.writeUInt32BE(element, 1 + 4 * index);\n });\n apdus.push(Buffer.concat([buffer, hash]));\n var keepAlive = false;\n return foreach(apdus, function (data) {\n return _this.transport\n .send(CLA, keepAlive ? INS_KEEP_ALIVE : INS_SIGN_TX_HASH, 0x00, 0x00, data, [SW_OK, SW_CANCEL, SW_NOT_ALLOWED, SW_UNSUPPORTED, SW_KEEP_ALIVE])\n .then(function (apduResponse) {\n var status = Buffer.from(apduResponse.slice(apduResponse.length - 2)).readUInt16BE(0);\n if (status === SW_KEEP_ALIVE) {\n keepAlive = true;\n apdus.push(Buffer.alloc(0));\n }\n response = apduResponse;\n });\n }).then(function () {\n var status = Buffer.from(response.slice(response.length - 2)).readUInt16BE(0);\n if (status === SW_OK) {\n var signature = Buffer.from(response.slice(0, response.length - 2));\n return {\n signature: signature\n };\n }\n else if (status === SW_CANCEL) {\n throw new Error(\"Transaction approval request was rejected\");\n }\n else if (status === SW_UNSUPPORTED) {\n throw new Error(\"Hash signing is not supported\");\n }\n else {\n throw new Error(\"Hash signing not allowed. Have you enabled it in the app settings?\");\n }\n });\n };\n return Str;\n}());\nexport default Str;\n//# sourceMappingURL=Str.js.map","/********************************************************************************\n * Ledger Node JS API\n * (c) 2017-2018 Ledger\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ********************************************************************************/\nimport base32 from \"base32.js\";\nimport nacl from \"tweetnacl\";\nimport { sha256 } from \"sha.js\";\n// TODO use bip32-path library\nexport function splitPath(path) {\n var result = [];\n var components = path.split(\"/\");\n components.forEach(function (element) {\n var number = parseInt(element, 10);\n if (isNaN(number)) {\n return; // FIXME shouldn't it throws instead?\n }\n if (element.length > 1 && element[element.length - 1] === \"'\") {\n number += 0x80000000;\n }\n result.push(number);\n });\n return result;\n}\nexport function foreach(arr, callback) {\n function iterate(index, array, result) {\n if (index >= array.length) {\n return result;\n }\n else {\n return callback(array[index], index).then(function (res) {\n result.push(res);\n return iterate(index + 1, array, result);\n });\n }\n }\n return Promise.resolve().then(function () { return iterate(0, arr, []); });\n}\nexport function crc16xmodem(buf, previous) {\n var crc = typeof previous !== \"undefined\" ? ~~previous : 0x0;\n for (var index = 0; index < buf.length; index++) {\n var byte = buf[index];\n var code = (crc >>> 8) & 0xff;\n code ^= byte & 0xff;\n code ^= code >>> 4;\n crc = (crc << 8) & 0xffff;\n crc ^= code;\n code = (code << 5) & 0xffff;\n crc ^= code;\n code = (code << 7) & 0xffff;\n crc ^= code;\n }\n return crc;\n}\nexport function encodeEd25519PublicKey(rawPublicKey) {\n var versionByte = 6 << 3; // 'G'\n var data = Buffer.from(rawPublicKey);\n var versionBuffer = Buffer.from([versionByte]);\n var payload = Buffer.concat([versionBuffer, data]);\n var checksum = Buffer.alloc(2);\n checksum.writeUInt16LE(crc16xmodem(payload), 0);\n var unencoded = Buffer.concat([payload, checksum]);\n return base32.encode(unencoded);\n}\nexport function verifyEd25519Signature(data, signature, publicKey) {\n return nacl.sign.detached.verify(new Uint8Array(data.toJSON().data), new Uint8Array(signature.toJSON().data), new Uint8Array(publicKey.toJSON().data));\n}\nexport function hash(data) {\n var hasher = new sha256();\n hasher.update(data, \"utf8\");\n return hasher.digest();\n}\nexport function checkStellarBip32Path(path) {\n path.split(\"/\").forEach(function (element) {\n if (!element.toString().endsWith(\"'\")) {\n throw new Error(\"Detected a non-hardened path element in requested BIP32 path.\" +\n \" Non-hardended paths are not supported at this time. Please use an all-hardened path.\" +\n \" Example: 44'/148'/0'\");\n }\n });\n}\n//# sourceMappingURL=utils.js.map","\"use strict\";\n\n/**\n * Generate a character map.\n * @param {string} alphabet e.g. \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"\n * @param {object} mappings map overrides from key to value\n * @method\n */\n\nvar charmap = function (alphabet, mappings) {\n mappings || (mappings = {});\n alphabet.split(\"\").forEach(function (c, i) {\n if (!(c in mappings)) mappings[c] = i;\n });\n return mappings;\n}\n\n/**\n * The RFC 4648 base 32 alphabet and character map.\n * @see {@link https://tools.ietf.org/html/rfc4648}\n */\n\nvar rfc4648 = {\n alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",\n charmap: {\n 0: 14,\n 1: 8\n }\n};\n\nrfc4648.charmap = charmap(rfc4648.alphabet, rfc4648.charmap);\n\n/**\n * The Crockford base 32 alphabet and character map.\n * @see {@link http://www.crockford.com/wrmg/base32.html}\n */\n\nvar crockford = {\n alphabet: \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\",\n charmap: {\n O: 0,\n I: 1,\n L: 1\n }\n};\n\ncrockford.charmap = charmap(crockford.alphabet, crockford.charmap);\n\n/**\n * base32hex\n * @see {@link https://en.wikipedia.org/wiki/Base32#base32hex}\n */\n\nvar base32hex = {\n alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV\",\n charmap: {}\n};\n\nbase32hex.charmap = charmap(base32hex.alphabet, base32hex.charmap);\n\n/**\n * Create a new `Decoder` with the given options.\n *\n * @param {object} [options]\n * @param {string} [type] Supported Base-32 variants are \"rfc4648\" and\n * \"crockford\".\n * @param {object} [charmap] Override the character map used in decoding.\n * @constructor\n */\n\nfunction Decoder (options) {\n this.buf = [];\n this.shift = 8;\n this.carry = 0;\n\n if (options) {\n\n switch (options.type) {\n case \"rfc4648\":\n this.charmap = exports.rfc4648.charmap;\n break;\n case \"crockford\":\n this.charmap = exports.crockford.charmap;\n break;\n case \"base32hex\":\n this.charmap = exports.base32hex.charmap;\n break;\n default:\n throw new Error(\"invalid type\");\n }\n\n if (options.charmap) this.charmap = options.charmap;\n }\n}\n\n/**\n * The default character map coresponds to RFC4648.\n */\n\nDecoder.prototype.charmap = rfc4648.charmap;\n\n/**\n * Decode a string, continuing from the previous state.\n *\n * @param {string} str\n * @return {Decoder} this\n */\n\nDecoder.prototype.write = function (str) {\n var charmap = this.charmap;\n var buf = this.buf;\n var shift = this.shift;\n var carry = this.carry;\n\n // decode string\n str.toUpperCase().split(\"\").forEach(function (char) {\n\n // ignore padding\n if (char == \"=\") return;\n\n // lookup symbol\n var symbol = charmap[char] & 0xff;\n\n // 1: 00000 000\n // 2: 00 00000 0\n // 3: 0000 0000\n // 4: 0 00000 00\n // 5: 000 00000\n // 6: 00000 000\n // 7: 00 00000 0\n\n shift -= 5;\n if (shift > 0) {\n carry |= symbol << shift;\n } else if (shift < 0) {\n buf.push(carry | (symbol >> -shift));\n shift += 8;\n carry = (symbol << shift) & 0xff;\n } else {\n buf.push(carry | symbol);\n shift = 8;\n carry = 0;\n }\n });\n\n // save state\n this.shift = shift;\n this.carry = carry;\n\n // for chaining\n return this;\n};\n\n/**\n * Finish decoding.\n *\n * @param {string} [str] The final string to decode.\n * @return {Array} Decoded byte array.\n */\n\nDecoder.prototype.finalize = function (str) {\n if (str) {\n this.write(str);\n }\n if (this.shift !== 8 && this.carry !== 0) {\n this.buf.push(this.carry);\n this.shift = 8;\n this.carry = 0;\n }\n return this.buf;\n};\n\n/**\n * Create a new `Encoder` with the given options.\n *\n * @param {object} [options]\n * @param {string} [type] Supported Base-32 variants are \"rfc4648\" and\n * \"crockford\".\n * @param {object} [alphabet] Override the alphabet used in encoding.\n * @constructor\n */\n\nfunction Encoder (options) {\n this.buf = \"\";\n this.shift = 3;\n this.carry = 0;\n\n if (options) {\n\n switch (options.type) {\n case \"rfc4648\":\n this.alphabet = exports.rfc4648.alphabet;\n break;\n case \"crockford\":\n this.alphabet = exports.crockford.alphabet;\n break;\n case \"base32hex\":\n this.alphabet = exports.base32hex.alphabet;\n break;\n default:\n throw new Error(\"invalid type\");\n }\n\n if (options.alphabet) this.alphabet = options.alphabet;\n else if (options.lc) this.alphabet = this.alphabet.toLowerCase();\n }\n}\n\n/**\n * The default alphabet coresponds to RFC4648.\n */\n\nEncoder.prototype.alphabet = rfc4648.alphabet;\n\n/**\n * Encode a byte array, continuing from the previous state.\n *\n * @param {byte[]} buf The byte array to encode.\n * @return {Encoder} this\n */\n\nEncoder.prototype.write = function (buf) {\n var shift = this.shift;\n var carry = this.carry;\n var symbol;\n var byte;\n var i;\n\n // encode each byte in buf\n for (i = 0; i < buf.length; i++) {\n byte = buf[i];\n\n // 1: 00000 000\n // 2: 00 00000 0\n // 3: 0000 0000\n // 4: 0 00000 00\n // 5: 000 00000\n // 6: 00000 000\n // 7: 00 00000 0\n\n symbol = carry | (byte >> shift);\n this.buf += this.alphabet[symbol & 0x1f];\n\n if (shift > 5) {\n shift -= 5;\n symbol = byte >> shift;\n this.buf += this.alphabet[symbol & 0x1f];\n }\n\n shift = 5 - shift;\n carry = byte << shift;\n shift = 8 - shift;\n }\n\n // save state\n this.shift = shift;\n this.carry = carry;\n\n // for chaining\n return this;\n};\n\n/**\n * Finish encoding.\n *\n * @param {byte[]} [buf] The final byte array to encode.\n * @return {string} The encoded byte array.\n */\n\nEncoder.prototype.finalize = function (buf) {\n if (buf) {\n this.write(buf);\n }\n if (this.shift !== 3) {\n this.buf += this.alphabet[this.carry & 0x1f];\n this.shift = 3;\n this.carry = 0;\n }\n return this.buf;\n};\n\n/**\n * Convenience encoder.\n *\n * @param {byte[]} buf The byte array to encode.\n * @param {object} [options] Options to pass to the encoder.\n * @return {string} The encoded string.\n */\n\nexports.encode = function (buf, options) {\n return new Encoder(options).finalize(buf);\n};\n\n/**\n * Convenience decoder.\n *\n * @param {string} str The string to decode.\n * @param {object} [options] Options to pass to the decoder.\n * @return {byte[]} The decoded byte array.\n */\n\nexports.decode = function (str, options) {\n return new Decoder(options).finalize(str);\n};\n\n// Exports.\nexports.Decoder = Decoder;\nexports.Encoder = Encoder;\nexports.charmap = charmap;\nexports.crockford = crockford;\nexports.rfc4648 = rfc4648;\nexports.base32hex = base32hex;\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","import { sign, isSupported } from \"u2f-api\";\nimport Transport from \"@ledgerhq/hw-transport\";\nimport { log } from \"@ledgerhq/logs\";\nimport { TransportError } from \"@ledgerhq/errors\";\n\nfunction wrapU2FTransportError(originalError, message, id) {\n const err = new TransportError(message, id); // $FlowFixMe\n\n err.originalError = originalError;\n return err;\n}\n\nfunction wrapApdu(apdu, key) {\n const result = Buffer.alloc(apdu.length);\n\n for (let i = 0; i < apdu.length; i++) {\n result[i] = apdu[i] ^ key[i % key.length];\n }\n\n return result;\n} // Convert from normal to web-safe, strip trailing \"=\"s\n\n\nconst webSafe64 = base64 => base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\"); // Convert from web-safe to normal, add trailing \"=\"s\n\n\nconst normal64 = base64 => base64.replace(/-/g, \"+\").replace(/_/g, \"/\") + \"==\".substring(0, 3 * base64.length % 4);\n\nfunction attemptExchange(apdu, timeoutMillis, scrambleKey, unwrap) {\n const keyHandle = wrapApdu(apdu, scrambleKey);\n const challenge = Buffer.from(\"0000000000000000000000000000000000000000000000000000000000000000\", \"hex\");\n const signRequest = {\n version: \"U2F_V2\",\n keyHandle: webSafe64(keyHandle.toString(\"base64\")),\n challenge: webSafe64(challenge.toString(\"base64\")),\n appId: location.origin\n };\n log(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n return sign(signRequest, timeoutMillis / 1000).then(response => {\n const {\n signatureData\n } = response;\n\n if (typeof signatureData === \"string\") {\n const data = Buffer.from(normal64(signatureData), \"base64\");\n let result;\n\n if (!unwrap) {\n result = data;\n } else {\n result = data.slice(5);\n }\n\n log(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return result;\n } else {\n throw response;\n }\n });\n}\n\nlet transportInstances = [];\n\nfunction emitDisconnect() {\n transportInstances.forEach(t => t.emit(\"disconnect\"));\n transportInstances = [];\n}\n\nfunction isTimeoutU2FError(u2fError) {\n return u2fError.metaData.code === 5;\n}\n/**\n * U2F web Transport implementation\n * @example\n * import TransportU2F from \"@ledgerhq/hw-transport-u2f\";\n * ...\n * TransportU2F.create().then(transport => ...)\n */\n\n\nexport default class TransportU2F extends Transport {\n /*\n */\n\n /*\n */\n\n /**\n * static function to create a new Transport from a connected Ledger device discoverable via U2F (browser support)\n */\n static async open(_, _openTimeout = 5000) {\n return new TransportU2F();\n }\n\n constructor() {\n super();\n this.scrambleKey = void 0;\n this.unwrap = true;\n transportInstances.push(this);\n }\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n\n\n async exchange(apdu) {\n try {\n return await attemptExchange(apdu, this.exchangeTimeout, this.scrambleKey, this.unwrap);\n } catch (e) {\n const isU2FError = typeof e.metaData === \"object\";\n\n if (isU2FError) {\n if (isTimeoutU2FError(e)) {\n emitDisconnect();\n } // the wrapping make error more usable and \"printable\" to the end user.\n\n\n throw wrapU2FTransportError(e, \"Failed to sign with Ledger device: U2F \" + e.metaData.type, \"U2F_\" + e.metaData.code);\n } else {\n throw e;\n }\n }\n }\n /**\n */\n\n\n setScrambleKey(scrambleKey) {\n this.scrambleKey = Buffer.from(scrambleKey, \"ascii\");\n }\n /**\n */\n\n\n setUnwrap(unwrap) {\n this.unwrap = unwrap;\n }\n\n close() {\n // u2f have no way to clean things up\n return Promise.resolve();\n }\n\n}\nTransportU2F.isSupported = isSupported;\n\nTransportU2F.list = () => // this transport is not discoverable but we are going to guess if it is here with isSupported()\nisSupported().then(supported => supported ? [null] : []);\n\nTransportU2F.listen = observer => {\n let unsubscribed = false;\n isSupported().then(supported => {\n if (unsubscribed) return;\n\n if (supported) {\n observer.next({\n type: \"add\",\n descriptor: null\n });\n observer.complete();\n } else {\n observer.error(new TransportError(\"U2F browser support is needed for Ledger. \" + \"Please use Chrome, Opera or Firefox with a U2F extension. \" + \"Also make sure you're on an HTTPS connection\", \"U2FNotSupported\"));\n }\n });\n return {\n unsubscribe: () => {\n unsubscribed = true;\n }\n };\n};\n//# sourceMappingURL=TransportU2F.js.map","'use strict';\nmodule.exports = require( './lib/u2f-api' );","'use strict';\n\nmodule.exports = API;\n\nvar chromeApi = require( './google-u2f-api' );\n\n// Feature detection (yes really)\nvar isBrowser = ( typeof navigator !== 'undefined' ) && !!navigator.userAgent;\nvar isSafari = isBrowser && navigator.userAgent.match( /Safari\\// )\n\t&& !navigator.userAgent.match( /Chrome\\// );\nvar isEDGE = isBrowser && navigator.userAgent.match( /Edge\\/1[2345]/ );\n\nvar _backend = null;\nfunction getBackend( Promise )\n{\n\tif ( !_backend )\n\t\t_backend = new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction notSupported( )\n\t\t\t{\n\t\t\t\t// Note; {native: true} means *not* using Google's hack\n\t\t\t\tresolve( { u2f: null, native: true } );\n\t\t\t}\n\n\t\t\tif ( !isBrowser )\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( isSafari )\n\t\t\t\t// Safari doesn't support U2F, and the Safari-FIDO-U2F\n\t\t\t\t// extension lacks full support (Multi-facet apps), so we\n\t\t\t\t// block it until proper support.\n\t\t\t\treturn notSupported( );\n\n\t\t\tvar hasNativeSupport =\n\t\t\t\t( typeof window.u2f !== 'undefined' ) &&\n\t\t\t\t( typeof window.u2f.sign === 'function' );\n\n\t\t\tif ( hasNativeSupport )\n\t\t\t\tresolve( { u2f: window.u2f, native: true } );\n\n\t\t\tif ( isEDGE )\n\t\t\t\t// We don't want to check for Google's extension hack on EDGE\n\t\t\t\t// as it'll cause trouble (popups, etc)\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( location.protocol === 'http:' )\n\t\t\t\t// U2F isn't supported over http, only https\n\t\t\t\treturn notSupported( );\n\n\t\t\tif ( typeof MessageChannel === 'undefined' )\n\t\t\t\t// Unsupported browser, the chrome hack would throw\n\t\t\t\treturn notSupported( );\n\n\t\t\t// Test for google extension support\n\t\t\tchromeApi.isSupported( function( ok )\n\t\t\t{\n\t\t\t\tif ( ok )\n\t\t\t\t\tresolve( { u2f: chromeApi, native: false } );\n\t\t\t\telse\n\t\t\t\t\tnotSupported( );\n\t\t\t} );\n\t\t} );\n\n\treturn _backend;\n}\n\nfunction API( Promise )\n{\n\treturn {\n\t\tisSupported : isSupported.bind( Promise ),\n\t\tensureSupport : ensureSupport.bind( Promise ),\n\t\tregister : register.bind( Promise ),\n\t\tsign : sign.bind( Promise ),\n\t\tErrorCodes : API.ErrorCodes,\n\t\tErrorNames : API.ErrorNames\n\t};\n}\n\nAPI.ErrorCodes = {\n\tCANCELLED: -1,\n\tOK: 0,\n\tOTHER_ERROR: 1,\n\tBAD_REQUEST: 2,\n\tCONFIGURATION_UNSUPPORTED: 3,\n\tDEVICE_INELIGIBLE: 4,\n\tTIMEOUT: 5\n};\nAPI.ErrorNames = {\n\t\"-1\": \"CANCELLED\",\n\t\"0\": \"OK\",\n\t\"1\": \"OTHER_ERROR\",\n\t\"2\": \"BAD_REQUEST\",\n\t\"3\": \"CONFIGURATION_UNSUPPORTED\",\n\t\"4\": \"DEVICE_INELIGIBLE\",\n\t\"5\": \"TIMEOUT\"\n};\n\nfunction makeError( msg, err )\n{\n\tvar code = err != null ? err.errorCode : 1; // Default to OTHER_ERROR\n\tvar type = API.ErrorNames[ '' + code ];\n\tvar error = new Error( msg );\n\terror.metaData = {\n\t\ttype: type,\n\t\tcode: code\n\t}\n\treturn error;\n}\n\nfunction deferPromise( Promise, promise )\n{\n\tvar ret = { };\n\tret.promise = new Promise( function( resolve, reject ) {\n\t\tret.resolve = resolve;\n\t\tret.reject = reject;\n\t\tpromise.then( resolve, reject );\n\t} );\n\t/**\n\t * Reject request promise and disconnect port if 'disconnect' flag is true\n\t * @param {string} msg\n\t * @param {boolean} disconnect\n\t */\n\tret.promise.cancel = function( msg, disconnect )\n\t{\n\t\tgetBackend( Promise )\n\t\t.then( function( backend )\n\t\t{\n\t\t\tif ( disconnect && !backend.native )\n\t\t\t\tbackend.u2f.disconnect( );\n\n\t\t\tret.reject( makeError( msg, { errorCode: -1 } ) );\n\t\t} );\n\t};\n\treturn ret;\n}\n\nfunction defer( Promise, fun )\n{\n\treturn deferPromise( Promise, new Promise( function( resolve, reject )\n\t{\n\t\ttry\n\t\t{\n\t\t\tfun && fun( resolve, reject );\n\t\t}\n\t\tcatch ( err )\n\t\t{\n\t\t\treject( err );\n\t\t}\n\t} ) );\n}\n\nfunction isSupported( )\n{\n\tvar Promise = this;\n\n\treturn getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\treturn !!backend.u2f;\n\t} );\n}\n\nfunction _ensureSupport( backend )\n{\n\tif ( !backend.u2f )\n\t{\n\t\tif ( location.protocol === 'http:' )\n\t\t\tthrow new Error( \"U2F isn't supported over http, only https\" );\n\t\tthrow new Error( \"U2F not supported\" );\n\t}\n}\n\nfunction ensureSupport( )\n{\n\tvar Promise = this;\n\n\treturn getBackend( Promise )\n\t.then( _ensureSupport );\n}\n\nfunction register( registerRequests, signRequests /* = null */, timeout )\n{\n\tvar Promise = this;\n\n\tif ( !Array.isArray( registerRequests ) )\n\t\tregisterRequests = [ registerRequests ];\n\n\tif ( typeof signRequests === 'number' && typeof timeout === 'undefined' )\n\t{\n\t\ttimeout = signRequests;\n\t\tsignRequests = null;\n\t}\n\n\tif ( !signRequests )\n\t\tsignRequests = [ ];\n\n\treturn deferPromise( Promise, getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\t_ensureSupport( backend );\n\n\t\tvar native = backend.native;\n\t\tvar u2f = backend.u2f;\n\n\t\treturn new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction cbNative( response )\n\t\t\t{\n\t\t\t\tif ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Registration failed\", response ) );\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdelete response.errorCode;\n\t\t\t\t\tresolve( response );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cbChrome( err, response )\n\t\t\t{\n\t\t\t\tif ( err )\n\t\t\t\t\treject( err );\n\t\t\t\telse if ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Registration failed\", response ) );\n\t\t\t\telse\n\t\t\t\t\tresolve( response );\n\t\t\t}\n\n\t\t\tif ( native )\n\t\t\t{\n\t\t\t\tvar appId = registerRequests[ 0 ].appId;\n\n\t\t\t\tu2f.register(\n\t\t\t\t\tappId, registerRequests, signRequests, cbNative, timeout );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tu2f.register(\n\t\t\t\t\tregisterRequests, signRequests, cbChrome, timeout );\n\t\t\t}\n\t\t} );\n\t} ) ).promise;\n}\n\nfunction sign( signRequests, timeout )\n{\n\tvar Promise = this;\n\n\tif ( !Array.isArray( signRequests ) )\n\t\tsignRequests = [ signRequests ];\n\n\treturn deferPromise( Promise, getBackend( Promise )\n\t.then( function( backend )\n\t{\n\t\t_ensureSupport( backend );\n\n\t\tvar native = backend.native;\n\t\tvar u2f = backend.u2f;\n\n\t\treturn new Promise( function( resolve, reject )\n\t\t{\n\t\t\tfunction cbNative( response )\n\t\t\t{\n\t\t\t\tif ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Sign failed\", response ) );\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdelete response.errorCode;\n\t\t\t\t\tresolve( response );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction cbChrome( err, response )\n\t\t\t{\n\t\t\t\tif ( err )\n\t\t\t\t\treject( err );\n\t\t\t\telse if ( response.errorCode )\n\t\t\t\t\treject( makeError( \"Sign failed\", response ) );\n\t\t\t\telse\n\t\t\t\t\tresolve( response );\n\t\t\t}\n\n\t\t\tif ( native )\n\t\t\t{\n\t\t\t\tvar appId = signRequests[ 0 ].appId;\n\t\t\t\tvar challenge = signRequests[ 0 ].challenge;\n\n\t\t\t\tu2f.sign( appId, challenge, signRequests, cbNative, timeout );\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tu2f.sign( signRequests, cbChrome, timeout );\n\t\t\t}\n\t\t} );\n\t} ) ).promise;\n}\n\nfunction makeDefault( func )\n{\n\tAPI[ func ] = function( )\n\t{\n\t\tif ( !global.Promise )\n\t\t\t// This is very unlikely to ever happen, since browsers\n\t\t\t// supporting U2F will most likely support Promises.\n\t\t\tthrow new Error( \"The platform doesn't natively support promises\" );\n\n\t\tvar args = [ ].slice.call( arguments );\n\t\treturn API( global.Promise )[ func ].apply( null, args );\n\t};\n}\n\n// Provide default functions using the built-in Promise if available.\nmakeDefault( 'isSupported' );\nmakeDefault( 'ensureSupport' );\nmakeDefault( 'register' );\nmakeDefault( 'sign' );\n","// Copyright 2014 Google Inc. All rights reserved\n//\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file or at\n// https://developers.google.com/open-source/licenses/bsd\n\n/**\n * @fileoverview The U2F api.\n */\n\n'use strict';\n\n/** Namespace for the U2F api.\n * @type {Object}\n */\nvar u2f = u2f || {};\n\nmodule.exports = u2f; // Adaptation for u2f-api package\n\n/**\n * The U2F extension id\n * @type {string}\n * @const\n */\nu2f.EXTENSION_ID = 'kmendfapggjehodndflmmgagdbamhnfd';\n\n/**\n * Message types for messsages to/from the extension\n * @const\n * @enum {string}\n */\nu2f.MessageTypes = {\n 'U2F_REGISTER_REQUEST': 'u2f_register_request',\n 'U2F_SIGN_REQUEST': 'u2f_sign_request',\n 'U2F_REGISTER_RESPONSE': 'u2f_register_response',\n 'U2F_SIGN_RESPONSE': 'u2f_sign_response'\n};\n\n/**\n * Response status codes\n * @const\n * @enum {number}\n */\nu2f.ErrorCodes = {\n 'OK': 0,\n 'OTHER_ERROR': 1,\n 'BAD_REQUEST': 2,\n 'CONFIGURATION_UNSUPPORTED': 3,\n 'DEVICE_INELIGIBLE': 4,\n 'TIMEOUT': 5\n};\n\n/**\n * A message type for registration requests\n * @typedef {{\n * type: u2f.MessageTypes,\n * signRequests: Array.<u2f.SignRequest>,\n * registerRequests: ?Array.<u2f.RegisterRequest>,\n * timeoutSeconds: ?number,\n * requestId: ?number\n * }}\n */\nu2f.Request;\n\n/**\n * A message for registration responses\n * @typedef {{\n * type: u2f.MessageTypes,\n * responseData: (u2f.Error | u2f.RegisterResponse | u2f.SignResponse),\n * requestId: ?number\n * }}\n */\nu2f.Response;\n\n/**\n * An error object for responses\n * @typedef {{\n * errorCode: u2f.ErrorCodes,\n * errorMessage: ?string\n * }}\n */\nu2f.Error;\n\n/**\n * Data object for a single sign request.\n * @typedef {{\n * version: string,\n * challenge: string,\n * keyHandle: string,\n * appId: string\n * }}\n */\nu2f.SignRequest;\n\n/**\n * Data object for a sign response.\n * @typedef {{\n * keyHandle: string,\n * signatureData: string,\n * clientData: string\n * }}\n */\nu2f.SignResponse;\n\n/**\n * Data object for a registration request.\n * @typedef {{\n * version: string,\n * challenge: string,\n * appId: string\n * }}\n */\nu2f.RegisterRequest;\n\n/**\n * Data object for a registration response.\n * @typedef {{\n * registrationData: string,\n * clientData: string\n * }}\n */\nu2f.RegisterResponse;\n\n\n// Low level MessagePort API support\n\n/**\n * Call MessagePort disconnect\n */\nu2f.disconnect = function() {\n if (u2f.port_ && u2f.port_.port_) {\n u2f.port_.port_.disconnect();\n u2f.port_ = null;\n }\n};\n\n/**\n * Sets up a MessagePort to the U2F extension using the\n * available mechanisms.\n * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback\n */\nu2f.getMessagePort = function(callback) {\n if (typeof chrome != 'undefined' && chrome.runtime) {\n // The actual message here does not matter, but we need to get a reply\n // for the callback to run. Thus, send an empty signature request\n // in order to get a failure response.\n var msg = {\n type: u2f.MessageTypes.U2F_SIGN_REQUEST,\n signRequests: []\n };\n chrome.runtime.sendMessage(u2f.EXTENSION_ID, msg, function() {\n if (!chrome.runtime.lastError) {\n // We are on a whitelisted origin and can talk directly\n // with the extension.\n u2f.getChromeRuntimePort_(callback);\n } else {\n // chrome.runtime was available, but we couldn't message\n // the extension directly, use iframe\n u2f.getIframePort_(callback);\n }\n });\n } else {\n // chrome.runtime was not available at all, which is normal\n // when this origin doesn't have access to any extensions.\n u2f.getIframePort_(callback);\n }\n};\n\n/**\n * Connects directly to the extension via chrome.runtime.connect\n * @param {function(u2f.WrappedChromeRuntimePort_)} callback\n * @private\n */\nu2f.getChromeRuntimePort_ = function(callback) {\n var port = chrome.runtime.connect(u2f.EXTENSION_ID,\n {'includeTlsChannelId': true});\n setTimeout(function() {\n callback(null, new u2f.WrappedChromeRuntimePort_(port));\n }, 0);\n};\n\n/**\n * A wrapper for chrome.runtime.Port that is compatible with MessagePort.\n * @param {Port} port\n * @constructor\n * @private\n */\nu2f.WrappedChromeRuntimePort_ = function(port) {\n this.port_ = port;\n};\n\n/**\n * Posts a message on the underlying channel.\n * @param {Object} message\n */\nu2f.WrappedChromeRuntimePort_.prototype.postMessage = function(message) {\n this.port_.postMessage(message);\n};\n\n/**\n * Emulates the HTML 5 addEventListener interface. Works only for the\n * onmessage event, which is hooked up to the chrome.runtime.Port.onMessage.\n * @param {string} eventName\n * @param {function({data: Object})} handler\n */\nu2f.WrappedChromeRuntimePort_.prototype.addEventListener =\n function(eventName, handler) {\n var name = eventName.toLowerCase();\n if (name == 'message' || name == 'onmessage') {\n this.port_.onMessage.addListener(function(message) {\n // Emulate a minimal MessageEvent object\n handler({'data': message});\n });\n } else {\n console.error('WrappedChromeRuntimePort only supports onMessage');\n }\n};\n\n/**\n * Sets up an embedded trampoline iframe, sourced from the extension.\n * @param {function(MessagePort)} callback\n * @private\n */\nu2f.getIframePort_ = function(callback) {\n // Create the iframe\n var iframeOrigin = 'chrome-extension://' + u2f.EXTENSION_ID;\n var iframe = document.createElement('iframe');\n iframe.src = iframeOrigin + '/u2f-comms.html';\n iframe.setAttribute('style', 'display:none');\n document.body.appendChild(iframe);\n\n var hasCalledBack = false;\n\n var channel = new MessageChannel();\n var ready = function(message) {\n if (message.data == 'ready') {\n channel.port1.removeEventListener('message', ready);\n if (!hasCalledBack)\n {\n hasCalledBack = true;\n callback(null, channel.port1);\n }\n } else {\n console.error('First event on iframe port was not \"ready\"');\n }\n };\n channel.port1.addEventListener('message', ready);\n channel.port1.start();\n\n iframe.addEventListener('load', function() {\n // Deliver the port to the iframe and initialize\n iframe.contentWindow.postMessage('init', iframeOrigin, [channel.port2]);\n });\n\n // Give this 200ms to initialize, after that, we treat this method as failed\n setTimeout(function() {\n if (!hasCalledBack)\n {\n hasCalledBack = true;\n callback(new Error(\"IFrame extension not supported\"));\n }\n }, 200);\n};\n\n\n// High-level JS API\n\n/**\n * Default extension response timeout in seconds.\n * @const\n */\nu2f.EXTENSION_TIMEOUT_SEC = 30;\n\n/**\n * A singleton instance for a MessagePort to the extension.\n * @type {MessagePort|u2f.WrappedChromeRuntimePort_}\n * @private\n */\nu2f.port_ = null;\n\n/**\n * Callbacks waiting for a port\n * @type {Array.<function((MessagePort|u2f.WrappedChromeRuntimePort_))>}\n * @private\n */\nu2f.waitingForPort_ = [];\n\n/**\n * A counter for requestIds.\n * @type {number}\n * @private\n */\nu2f.reqCounter_ = 0;\n\n/**\n * A map from requestIds to client callbacks\n * @type {Object.<number,(function((u2f.Error|u2f.RegisterResponse))\n * |function((u2f.Error|u2f.SignResponse)))>}\n * @private\n */\nu2f.callbackMap_ = {};\n\n/**\n * Creates or retrieves the MessagePort singleton to use.\n * @param {function((MessagePort|u2f.WrappedChromeRuntimePort_))} callback\n * @private\n */\nu2f.getPortSingleton_ = function(callback) {\n if (u2f.port_) {\n callback(null, u2f.port_);\n } else {\n if (u2f.waitingForPort_.length == 0) {\n u2f.getMessagePort(function(err, port) {\n if (!err) {\n u2f.port_ = port;\n u2f.port_.addEventListener('message',\n /** @type {function(Event)} */ (u2f.responseHandler_));\n }\n\n // Careful, here be async callbacks. Maybe.\n while (u2f.waitingForPort_.length)\n u2f.waitingForPort_.shift()(err, port);\n });\n }\n u2f.waitingForPort_.push(callback);\n }\n};\n\n/**\n * Handles response messages from the extension.\n * @param {MessageEvent.<u2f.Response>} message\n * @private\n */\nu2f.responseHandler_ = function(message) {\n var response = message.data;\n var reqId = response['requestId'];\n if (!reqId || !u2f.callbackMap_[reqId]) {\n console.error('Unknown or missing requestId in response.');\n return;\n }\n var cb = u2f.callbackMap_[reqId];\n delete u2f.callbackMap_[reqId];\n cb(null, response['responseData']);\n};\n\n/**\n * Calls the callback with true or false as first and only argument\n * @param {Function} callback\n */\nu2f.isSupported = function(callback) {\n u2f.getPortSingleton_(function(err, port) {\n callback(!err);\n });\n}\n\n/**\n * Dispatches an array of sign requests to available U2F tokens.\n * @param {Array.<u2f.SignRequest>} signRequests\n * @param {function((u2f.Error|u2f.SignResponse))} callback\n * @param {number=} opt_timeoutSeconds\n */\nu2f.sign = function(signRequests, callback, opt_timeoutSeconds) {\n u2f.getPortSingleton_(function(err, port) {\n if (err)\n return callback(err);\n\n var reqId = ++u2f.reqCounter_;\n u2f.callbackMap_[reqId] = callback;\n var req = {\n type: u2f.MessageTypes.U2F_SIGN_REQUEST,\n signRequests: signRequests,\n timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?\n opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),\n requestId: reqId\n };\n port.postMessage(req);\n });\n};\n\n/**\n * Dispatches register requests to available U2F tokens. An array of sign\n * requests identifies already registered tokens.\n * @param {Array.<u2f.RegisterRequest>} registerRequests\n * @param {Array.<u2f.SignRequest>} signRequests\n * @param {function((u2f.Error|u2f.RegisterResponse))} callback\n * @param {number=} opt_timeoutSeconds\n */\nu2f.register = function(registerRequests, signRequests,\n callback, opt_timeoutSeconds) {\n u2f.getPortSingleton_(function(err, port) {\n if (err)\n return callback(err);\n\n var reqId = ++u2f.reqCounter_;\n u2f.callbackMap_[reqId] = callback;\n var req = {\n type: u2f.MessageTypes.U2F_REGISTER_REQUEST,\n signRequests: signRequests,\n registerRequests: registerRequests,\n timeoutSeconds: (typeof opt_timeoutSeconds !== 'undefined' ?\n opt_timeoutSeconds : u2f.EXTENSION_TIMEOUT_SEC),\n requestId: reqId\n };\n port.postMessage(req);\n });\n};\n","import EventEmitter from \"events\";\nimport { TransportRaceCondition, TransportError, StatusCodes, getAltStatusMessage, TransportStatusError } from \"@ledgerhq/errors\";\nexport { TransportError, TransportStatusError, StatusCodes, getAltStatusMessage };\n/**\n */\n\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\nexport default class Transport {\n constructor() {\n this.exchangeTimeout = 30000;\n this.unresponsiveTimeout = 15000;\n this.deviceModel = null;\n this._events = new EventEmitter();\n\n this.send = async (cla, ins, p1, p2, data = Buffer.alloc(0), statusList = [StatusCodes.OK]) => {\n if (data.length >= 256) {\n throw new TransportError(\"data.length exceed 256 bytes limit. Got: \" + data.length, \"DataLengthTooBig\");\n }\n\n const response = await this.exchange(Buffer.concat([Buffer.from([cla, ins, p1, p2]), Buffer.from([data.length]), data]));\n const sw = response.readUInt16BE(response.length - 2);\n\n if (!statusList.some(s => s === sw)) {\n throw new TransportStatusError(sw);\n }\n\n return response;\n };\n\n this.exchangeBusyPromise = void 0;\n\n this.exchangeAtomicImpl = async f => {\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\"An action was already pending on the Ledger device. Please deny or reconnect.\");\n }\n\n let resolveBusy;\n const busyPromise = new Promise(r => {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n let unresponsiveReached = false;\n const timeout = setTimeout(() => {\n unresponsiveReached = true;\n this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n\n try {\n const res = await f();\n\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n\n return res;\n } finally {\n clearTimeout(timeout);\n if (resolveBusy) resolveBusy();\n this.exchangeBusyPromise = null;\n }\n };\n\n this._appAPIlock = null;\n }\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n exchange(_apdu) {\n throw new Error(\"exchange not implemented\");\n }\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n\n\n setScrambleKey(_key) {}\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n\n\n close() {\n return Promise.resolve();\n }\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n on(eventName, cb) {\n this._events.on(eventName, cb);\n }\n /**\n * Stop listening to an event on an instance of transport.\n */\n\n\n off(eventName, cb) {\n this._events.removeListener(eventName, cb);\n }\n\n emit(event, ...args) {\n this._events.emit(event, ...args);\n }\n /**\n * Enable or not logs of the binary exchange\n */\n\n\n setDebugMode() {\n console.warn(\"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\");\n }\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n\n\n setExchangeTimeout(exchangeTimeout) {\n this.exchangeTimeout = exchangeTimeout;\n }\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n\n\n setExchangeUnresponsiveTimeout(unresponsiveTimeout) {\n this.unresponsiveTimeout = unresponsiveTimeout;\n }\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n static create(openTimeout = 3000, listenTimeout) {\n return new Promise((resolve, reject) => {\n let found = false;\n const sub = this.listen({\n next: e => {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: e => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: () => {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n\n if (!found) {\n reject(new TransportError(this.ErrorMessage_NoDeviceFound, \"NoDeviceFound\"));\n }\n }\n });\n const listenTimeoutId = listenTimeout ? setTimeout(() => {\n sub.unsubscribe();\n reject(new TransportError(this.ErrorMessage_ListenTimeout, \"ListenTimeout\"));\n }, listenTimeout) : null;\n });\n }\n\n decorateAppAPIMethods(self, methods, scrambleKey) {\n for (let methodName of methods) {\n self[methodName] = this.decorateAppAPIMethod(methodName, self[methodName], self, scrambleKey);\n }\n }\n\n decorateAppAPIMethod(methodName, f, ctx, scrambleKey) {\n return async (...args) => {\n const {\n _appAPIlock\n } = this;\n\n if (_appAPIlock) {\n return Promise.reject(new TransportError(\"Ledger Device is busy (lock \" + _appAPIlock + \")\", \"TransportLocked\"));\n }\n\n try {\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return await f.apply(ctx, args);\n } finally {\n this._appAPIlock = null;\n }\n };\n }\n\n}\nTransport.isSupported = void 0;\nTransport.list = void 0;\nTransport.listen = void 0;\nTransport.open = void 0;\nTransport.ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\nTransport.ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n//# sourceMappingURL=Transport.js.map","/**\n * A Log object\n */\nlet id = 0;\nconst subscribers = [];\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\n\nexport const log = (type, message, data) => {\n const obj = {\n type,\n id: String(++id),\n date: new Date()\n };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\n\nexport const listen = cb => {\n subscribers.push(cb);\n return () => {\n const i = subscribers.indexOf(cb);\n\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log) {\n for (let i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n} // for debug purpose\n\n\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}