@basmilius/apple-airplay 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/test.js.map CHANGED
@@ -1,56 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits_browser.js", "../../../node_modules/.bun/inherits@2.0.4/node_modules/inherits/inherits.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/cipherbase.js", "../../../node_modules/.bun/file-uri-to-path@1.0.0/node_modules/file-uri-to-path/index.js", "../../../node_modules/.bun/bindings@1.5.0/node_modules/bindings/bindings.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/aead.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/poly-stream.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/chacha20.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/legacy.js", "../../../node_modules/.bun/chacha-native@2.0.3/node_modules/chacha-native/lib/index.js", "../../../node_modules/.bun/isarray@0.0.1/node_modules/isarray/index.js", "../../../node_modules/.bun/core-util-is@1.0.3/node_modules/core-util-is/lib/util.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/.bun/string_decoder@0.10.31/node_modules/string_decoder/index.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/.bun/readable-stream@1.1.14/node_modules/readable-stream/readable.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/cipherbase.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/chacha20.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/poly1305.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/aead.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/polystream.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/chachastream.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/legacy-aead.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/browser.js", "../../../node_modules/.bun/chacha@2.1.0/node_modules/chacha/index.js", "../../../node_modules/.bun/node-dns-sd@1.0.1/node_modules/node-dns-sd/lib/dns-sd-parser.js", "../../../node_modules/.bun/node-dns-sd@1.0.1/node_modules/node-dns-sd/lib/dns-sd-composer.js", "../../../node_modules/.bun/node-dns-sd@1.0.1/node_modules/node-dns-sd/lib/dns-sd.js", "../../../node_modules/.bun/fast-srp-hap@2.0.4/node_modules/fast-srp-hap/jsbn/jsbn.js", "../../../node_modules/.bun/fast-srp-hap@2.0.4/node_modules/fast-srp-hap/lib/params.js", "../../../node_modules/.bun/fast-srp-hap@2.0.4/node_modules/fast-srp-hap/lib/srp.js", "../../../node_modules/.bun/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js", "../../common/dist/index.js", "../../../node_modules/.bun/@noble+hashes@2.0.1/node_modules/@noble/hashes/utils.js", "../../../node_modules/.bun/@noble+curves@2.0.1/node_modules/@noble/curves/utils.js", "../../../node_modules/.bun/@noble+curves@2.0.1/node_modules/@noble/curves/abstract/modular.js", "../../../node_modules/.bun/@noble+curves@2.0.1/node_modules/@noble/curves/abstract/curve.js", "../../../node_modules/.bun/@noble+curves@2.0.1/node_modules/@noble/curves/abstract/montgomery.js", "../../../node_modules/.bun/@noble+curves@2.0.1/node_modules/@noble/curves/ed25519.js", "../../../node_modules/.bun/@plist+common@1.1.0/node_modules/@plist/common/lib/esm/constants.js", "../../../node_modules/.bun/@plist+binary.parse@1.1.0/node_modules/@plist/binary.parse/lib/esm/index.js", "../../../node_modules/.bun/@plist+binary.serialize@1.1.0/node_modules/@plist/binary.serialize/lib/esm/index.js", "../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/stringify.js", "../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/rng.js", "../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/native.js", "../../../node_modules/.bun/uuid@13.0.0/node_modules/uuid/dist-node/v4.js", "../src/protocol/utils.ts", "../src/protocol/dataStream.ts", "../src/proto/AudioFadeMessage_pb.ts", "../src/proto/ProtocolMessage_pb.ts", "../src/proto/PlayerPath_pb.ts", "../src/proto/Origin_pb.ts", "../src/proto/DeviceInfoMessage_pb.ts", "../src/proto/Common_pb.ts", "../src/proto/NowPlayingClient_pb.ts", "../src/proto/NowPlayingPlayer_pb.ts", "../src/proto/AudioFadeResponseMessage_pb.ts", "../src/proto/AudioFormatSettingsMessage_pb.ts", "../src/proto/ClientUpdatesConfigMessage_pb.ts", "../src/proto/CommandInfo_pb.ts", "../src/proto/CommandOptions_pb.ts", "../src/proto/ConfigureConnectionMessage_pb.ts", "../src/proto/ContentItem_pb.ts", "../src/proto/ContentItemMetadata_pb.ts", "../src/proto/LanguageOption_pb.ts", "../src/proto/CryptoPairingMessage_pb.ts", "../src/proto/GenericMessage_pb.ts", "../src/proto/GetKeyboardSessionMessage_pb.ts", "../src/proto/GetRemoteTextInputSessionMessage_pb.ts", "../src/proto/GetVolumeMessage_pb.ts", "../src/proto/GetVolumeResultMessage_pb.ts", "../src/proto/KeyboardMessage_pb.ts", "../src/proto/ModifyOutputContextRequestMessage_pb.ts", "../src/proto/NotificationMessage_pb.ts", "../src/proto/NowPlayingInfo_pb.ts", "../src/proto/OriginClientPropertiesMessage_pb.ts", "../src/proto/PlaybackQueue_pb.ts", "../src/proto/PlaybackQueueContext_pb.ts", "../src/proto/PlaybackQueueCapabilities_pb.ts", "../src/proto/PlaybackQueueRequestMessage_pb.ts", "../src/proto/PlayerClientPropertiesMessage_pb.ts", "../src/proto/RegisterForGameControllerEventsMessage_pb.ts", "../src/proto/RegisterHIDDeviceMessage_pb.ts", "../src/proto/VirtualTouchDeviceDescriptorMessage_pb.ts", "../src/proto/RegisterHIDDeviceResultMessage_pb.ts", "../src/proto/RegisterVoiceInputDeviceMessage_pb.ts", "../src/proto/VoiceInputDeviceDescriptorMessage_pb.ts", "../src/proto/RegisterVoiceInputDeviceResponseMessage_pb.ts", "../src/proto/RemoteTextInputMessage_pb.ts", "../src/proto/RemoveClientMessage_pb.ts", "../src/proto/RemoveEndpointsMessage_pb.ts", "../src/proto/RemoveOutputDevicesMessage_pb.ts", "../src/proto/RemovePlayerMessage_pb.ts", "../src/proto/SendButtonEventMessage_pb.ts", "../src/proto/SendCommandMessage_pb.ts", "../src/proto/SendCommandResultMessage_pb.ts", "../src/proto/SendHIDEventMessage_pb.ts", "../src/proto/SendPackedVirtualTouchEventMessage_pb.ts", "../src/proto/SendVoiceInputMessage_pb.ts", "../src/proto/SetArtworkMessage_pb.ts", "../src/proto/SetConnectionStateMessage_pb.ts", "../src/proto/SetDefaultSupportedCommandsMessage_pb.ts", "../src/proto/SupportedCommands_pb.ts", "../src/proto/SetDiscoveryModeMessage_pb.ts", "../src/proto/SetHiliteModeMessage_pb.ts", "../src/proto/SetNowPlayingClientMessage_pb.ts", "../src/proto/SetNowPlayingPlayerMessage_pb.ts", "../src/proto/SetRecordingStateMessage_pb.ts", "../src/proto/SetStateMessage_pb.ts", "../src/proto/SetVolumeMessage_pb.ts", "../src/proto/TextInputMessage_pb.ts", "../src/proto/TransactionKey_pb.ts", "../src/proto/TransactionMessage_pb.ts", "../src/proto/TransactionPackets_pb.ts", "../src/proto/TransactionPacket_pb.ts", "../src/proto/UpdateClientMessage_pb.ts", "../src/proto/UpdateContentItemArtworkMessage_pb.ts", "../src/proto/UpdateContentItemMessage_pb.ts", "../src/proto/UpdateEndPointsMessage_pb.ts", "../src/proto/UpdateOutputDeviceMessage_pb.ts", "../src/proto/UpdatePlayerPath_pb.ts", "../src/proto/VolumeControlAvailabilityMessage_pb.ts", "../src/proto/VolumeControlCapabilitiesDidChangeMessage_pb.ts", "../src/proto/VolumeDidChangeMessage_pb.ts", "../src/proto/WakeDeviceMessage_pb.ts", "../src/protocol/dataStreamMessages.ts", "../src/protocol/stream.ts", "../src/protocol/eventStream.ts", "../src/protocol/pairing.ts", "../src/protocol/rtsp.ts", "../src/protocol/verify.ts", "../src/protocol/protocol.ts", "../src/test.ts"],
3
+ "sources": ["../src/test.ts", "../src/protocol/protocol.ts", "../src/protocol/utils.ts", "../src/protocol/dataStream.ts", "../src/proto/AudioFadeMessage_pb.ts", "../src/proto/ProtocolMessage_pb.ts", "../src/proto/PlayerPath_pb.ts", "../src/proto/Origin_pb.ts", "../src/proto/DeviceInfoMessage_pb.ts", "../src/proto/Common_pb.ts", "../src/proto/NowPlayingClient_pb.ts", "../src/proto/NowPlayingPlayer_pb.ts", "../src/proto/AudioFadeResponseMessage_pb.ts", "../src/proto/AudioFormatSettingsMessage_pb.ts", "../src/proto/ClientUpdatesConfigMessage_pb.ts", "../src/proto/CommandInfo_pb.ts", "../src/proto/CommandOptions_pb.ts", "../src/proto/ConfigureConnectionMessage_pb.ts", "../src/proto/ContentItem_pb.ts", "../src/proto/ContentItemMetadata_pb.ts", "../src/proto/LanguageOption_pb.ts", "../src/proto/CryptoPairingMessage_pb.ts", "../src/proto/GenericMessage_pb.ts", "../src/proto/GetKeyboardSessionMessage_pb.ts", "../src/proto/GetRemoteTextInputSessionMessage_pb.ts", "../src/proto/GetVolumeMessage_pb.ts", "../src/proto/GetVolumeResultMessage_pb.ts", "../src/proto/KeyboardMessage_pb.ts", "../src/proto/ModifyOutputContextRequestMessage_pb.ts", "../src/proto/NotificationMessage_pb.ts", "../src/proto/NowPlayingInfo_pb.ts", "../src/proto/OriginClientPropertiesMessage_pb.ts", "../src/proto/PlaybackQueue_pb.ts", "../src/proto/PlaybackQueueContext_pb.ts", "../src/proto/PlaybackQueueCapabilities_pb.ts", "../src/proto/PlaybackQueueRequestMessage_pb.ts", "../src/proto/PlayerClientPropertiesMessage_pb.ts", "../src/proto/RegisterForGameControllerEventsMessage_pb.ts", "../src/proto/RegisterHIDDeviceMessage_pb.ts", "../src/proto/VirtualTouchDeviceDescriptorMessage_pb.ts", "../src/proto/RegisterHIDDeviceResultMessage_pb.ts", "../src/proto/RegisterVoiceInputDeviceMessage_pb.ts", "../src/proto/VoiceInputDeviceDescriptorMessage_pb.ts", "../src/proto/RegisterVoiceInputDeviceResponseMessage_pb.ts", "../src/proto/RemoteTextInputMessage_pb.ts", "../src/proto/RemoveClientMessage_pb.ts", "../src/proto/RemoveEndpointsMessage_pb.ts", "../src/proto/RemoveOutputDevicesMessage_pb.ts", "../src/proto/RemovePlayerMessage_pb.ts", "../src/proto/SendButtonEventMessage_pb.ts", "../src/proto/SendCommandMessage_pb.ts", "../src/proto/SendCommandResultMessage_pb.ts", "../src/proto/SendHIDEventMessage_pb.ts", "../src/proto/SendPackedVirtualTouchEventMessage_pb.ts", "../src/proto/SendVoiceInputMessage_pb.ts", "../src/proto/SetArtworkMessage_pb.ts", "../src/proto/SetConnectionStateMessage_pb.ts", "../src/proto/SetDefaultSupportedCommandsMessage_pb.ts", "../src/proto/SupportedCommands_pb.ts", "../src/proto/SetDiscoveryModeMessage_pb.ts", "../src/proto/SetHiliteModeMessage_pb.ts", "../src/proto/SetNowPlayingClientMessage_pb.ts", "../src/proto/SetNowPlayingPlayerMessage_pb.ts", "../src/proto/SetRecordingStateMessage_pb.ts", "../src/proto/SetStateMessage_pb.ts", "../src/proto/SetVolumeMessage_pb.ts", "../src/proto/TextInputMessage_pb.ts", "../src/proto/TransactionKey_pb.ts", "../src/proto/TransactionMessage_pb.ts", "../src/proto/TransactionPackets_pb.ts", "../src/proto/TransactionPacket_pb.ts", "../src/proto/UpdateClientMessage_pb.ts", "../src/proto/UpdateContentItemArtworkMessage_pb.ts", "../src/proto/UpdateContentItemMessage_pb.ts", "../src/proto/UpdateEndPointsMessage_pb.ts", "../src/proto/UpdateOutputDeviceMessage_pb.ts", "../src/proto/UpdatePlayerPath_pb.ts", "../src/proto/VolumeControlAvailabilityMessage_pb.ts", "../src/proto/VolumeControlCapabilitiesDidChangeMessage_pb.ts", "../src/proto/VolumeDidChangeMessage_pb.ts", "../src/proto/WakeDeviceMessage_pb.ts", "../src/protocol/dataStreamMessages.ts", "../src/protocol/stream.ts", "../src/protocol/eventStream.ts", "../src/protocol/pairing.ts", "../src/protocol/rtsp.ts", "../src/protocol/verify.ts"],
4
4
  "sourcesContent": [
5
- "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",
6
- "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n",
7
- "var Transform = require('stream').Transform;\nvar inherits = require('inherits');\n\nmodule.exports = CipherBase;\ninherits(CipherBase, Transform);\nfunction CipherBase(digest) {\n if (digest) {\n this.digest = finalFunc;\n } else {\n this.final = finalFunc;\n }\n\n}\n[\n '_readableState',\n '_writableState',\n '_transformState'\n].forEach(function(prop) {\n Object.defineProperty(CipherBase.prototype, prop, {\n get: function() {\n Transform.call(this);\n return this[prop];\n },\n set: function(val) {\n Object.defineProperty(this, prop, {\n value: val,\n enumerable: true,\n configurable: true,\n writable: true\n });\n },\n configurable: true,\n enumerable: true\n });\n});\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = new Buffer(data, inputEnc);\n }\n var outData = this._update(data) || new Buffer('');\n if (outputEnc) {\n outData = outData.toString(outputEnc);\n }\n if (this.digest) {\n return this;\n }\n return outData;\n};\nCipherBase.prototype._transform = function (data, _, next) {\n this.push(this._update(data));\n next();\n};\nCipherBase.prototype._flush = function (next) {\n try {\n this.push(this.__final());\n } catch(e) {\n return next(e);\n }\n next();\n};\nfunction finalFunc (outputEnc) {\n var outData = this.__final() || new Buffer('');\n if (outputEnc) {\n outData = outData.toString(outputEnc);\n }\n return outData;\n};\nCipherBase.prototype.__final = function () {};\n",
8
- "\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, <host> can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path…\n path = sep + path;\n }\n\n return host + path;\n}\n",
9
- "/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' → ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n",
10
- "'use strict';\nvar Stream = require('./cipherbase');\nvar inherits = require('inherits');\nvar Binding = require('bindings')('chacha20poly1305.node').AEAD;\nmodule.exports = AEAD;\ninherits(AEAD, Stream);\nfunction AEAD(key, iv, decrypt) {\n if (!(this instanceof AEAD)) {\n return new AEAD(key, iv, decrypt);\n }\n Stream.call(this);\n this.binding = new Binding(key, iv, decrypt);\n this._tag = void 0;\n this._decrypt = !!decrypt;\n}\n\nAEAD.prototype._update = function (data) {\n return this.binding.update(data);\n};\n\nAEAD.prototype.__final = function () {\n if (this._decrypt && !this._tag) {\n throw new Error('invalid state');\n }\n if (this._decrypt) {\n this.binding.finish(this._tag);\n this._tag = void 0;\n } else {\n this._tag = this.binding.finish();\n }\n};\nAEAD.prototype.setAAD = function (aad) {\n this.binding.setAAD(aad);\n return this;\n};\n\nAEAD.prototype.getAuthTag = function () {\n if (!this._tag || this._decrypt) {\n throw new Error('invalid state');\n }\n return this._tag;\n};\n\nAEAD.prototype.setAuthTag = function (tag) {\n if (this._tag || !this._decrypt) {\n throw new Error('invalid state');\n }\n this._tag = tag;\n return this;\n};\n",
11
- "'use strict';\nvar Stream = require('./cipherbase');\nvar inherits = require('inherits');\nvar Binding = require('bindings')('chacha20poly1305.node').Poly;\nmodule.exports = PolyStream;\ninherits(PolyStream, Stream);\nfunction PolyStream(key) {\n if (!(this instanceof PolyStream)) {\n return new PolyStream(key);\n }\n Stream.call(this, true);\n this.binding = new Binding(key);\n}\n\nPolyStream.prototype._update = function (data) {\n this.binding.update(data);\n};\n\nPolyStream.prototype.__final = function () {\n return this.binding.finish();\n};\n",
12
- "'use strict';\nvar Stream = require('./cipherbase');\nvar inherits = require('inherits');\nvar Binding = require('bindings')('chacha20poly1305.node').Chacha;\nmodule.exports = ChaChaStream;\ninherits(ChaChaStream, Stream);\nfunction ChaChaStream(key, iv) {\n if (!(this instanceof ChaChaStream)) {\n return new ChaChaStream(key, iv);\n }\n Stream.call(this);\n this.binding = new Binding(key, iv);\n}\n\nChaChaStream.prototype._update = function (data) {\n return this.binding.update(data);\n};\n",
13
- "'use strict';\nvar Stream = require('./cipherbase');\nvar inherits = require('inherits');\nvar Binding = require('bindings')('chacha20poly1305.node').Legacy;\nmodule.exports = AEAD;\ninherits(AEAD, Stream);\nfunction AEAD(key, iv, decrypt) {\n if (!(this instanceof AEAD)) {\n return new AEAD(key, iv, decrypt);\n }\n Stream.call(this);\n this.binding = new Binding(key, Buffer.concat([new Buffer([0,0,0,0]), iv]), decrypt);\n this._tag = void 0;\n this._decrypt = !!decrypt;\n this._aadAdded = false;\n}\n\nAEAD.prototype._update = function (data) {\n if (!this._aadAdded) {\n this.setAAD(new Buffer(''));\n }\n return this.binding.update(data);\n};\n\nAEAD.prototype.__final = function () {\n if (!this._aadAdded) {\n this.setAAD(new Buffer(''));\n }\n if (this._decrypt && !this._tag) {\n throw new Error('invalid state');\n }\n if (this._decrypt) {\n this.binding.finish(this._tag);\n this._tag = void 0;\n } else {\n this._tag = this.binding.finish();\n }\n};\nAEAD.prototype.setAAD = function (aad) {\n this.binding.setAAD(aad);\n this._aadAdded = true;\n return this;\n};\n\nAEAD.prototype.getAuthTag = function () {\n if (!this._tag || this._decrypt) {\n throw new Error('invalid state');\n }\n return this._tag;\n};\n\nAEAD.prototype.setAuthTag = function (tag) {\n if (this._tag || !this._decrypt) {\n throw new Error('invalid state');\n }\n this._tag = tag;\n return this;\n};\n",
14
- "'use strict';\n\nvar Cipher = require('./aead');\nexports.aead = Cipher;\nexports.createCipher = createCipher;\nfunction createCipher(key, iv) {\n return new Cipher(key, iv);\n}\nexports.createDecipher = createDecipher;\nfunction createDecipher(key, iv) {\n return new Cipher(key, iv, true);\n}\n\nexports.createHmac = require('./poly-stream');\nexports.chacha20 = exports.ChaCha20 = require('./chacha20');\nexports.aeadLegacy = exports.AeadLegacy = require('./legacy');\n",
15
- "module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n",
16
- "// 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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('buffer').Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n",
17
- "// 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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, cb), and it'll handle all\n// the drain event emission and buffering.\n\nmodule.exports = Writable;\n\n/*<replacement>*/\nvar Buffer = require('buffer').Buffer;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Stream = require('stream');\n\nutil.inherits(Writable, Stream);\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n}\n\nfunction WritableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function(er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.buffer = [];\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n}\n\nfunction Writable(options) {\n var Duplex = require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex))\n return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function() {\n this.emit('error', new Error('Cannot pipe. Not readable.'));\n};\n\n\nfunction writeAfterEnd(stream, state, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n var er = new TypeError('Invalid non-string/buffer chunk');\n stream.emit('error', er);\n process.nextTick(function() {\n cb(er);\n });\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function(chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n else if (!encoding)\n encoding = state.defaultEncoding;\n\n if (!util.isFunction(cb))\n cb = function() {};\n\n if (state.ended)\n writeAfterEnd(this, state, cb);\n else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function() {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function() {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing &&\n !state.corked &&\n !state.finished &&\n !state.bufferProcessing &&\n state.buffer.length)\n clearBuffer(this, state);\n }\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode &&\n state.decodeStrings !== false &&\n util.isString(chunk)) {\n chunk = new Buffer(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n if (util.isBuffer(chunk))\n encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret)\n state.needDrain = true;\n\n if (state.writing || state.corked)\n state.buffer.push(new WriteReq(chunk, encoding, cb));\n else\n doWrite(stream, state, false, len, chunk, encoding, cb);\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev)\n stream._writev(chunk, state.onwrite);\n else\n stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n if (sync)\n process.nextTick(function() {\n state.pendingcb--;\n cb(er);\n });\n else {\n state.pendingcb--;\n cb(er);\n }\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er)\n onwriteError(stream, state, sync, er, cb);\n else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(stream, state);\n\n if (!finished &&\n !state.corked &&\n !state.bufferProcessing &&\n state.buffer.length) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(function() {\n afterWrite(stream, state, finished, cb);\n });\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished)\n onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n\n if (stream._writev && state.buffer.length > 1) {\n // Fast case, write everything using _writev()\n var cbs = [];\n for (var c = 0; c < state.buffer.length; c++)\n cbs.push(state.buffer[c].callback);\n\n // count the one we are adding, as well.\n // TODO(isaacs) clean this up\n state.pendingcb++;\n doWrite(stream, state, true, state.length, state.buffer, '', function(err) {\n for (var i = 0; i < cbs.length; i++) {\n state.pendingcb--;\n cbs[i](err);\n }\n });\n\n // Clear buffer\n state.buffer = [];\n } else {\n // Slow case, write chunks one-by-one\n for (var c = 0; c < state.buffer.length; c++) {\n var entry = state.buffer[c];\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n c++;\n break;\n }\n }\n\n if (c < state.buffer.length)\n state.buffer = state.buffer.slice(c);\n else\n state.buffer.length = 0;\n }\n\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function(chunk, encoding, cb) {\n cb(new Error('not implemented'));\n\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function(chunk, encoding, cb) {\n var state = this._writableState;\n\n if (util.isFunction(chunk)) {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (util.isFunction(encoding)) {\n cb = encoding;\n encoding = null;\n }\n\n if (!util.isNullOrUndefined(chunk))\n this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished)\n endWritable(this, state, cb);\n};\n\n\nfunction needFinish(stream, state) {\n return (state.ending &&\n state.length === 0 &&\n !state.finished &&\n !state.writing);\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(stream, state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else\n prefinish(stream, state);\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished)\n process.nextTick(cb);\n else\n stream.once('finish', cb);\n }\n state.ended = true;\n}\n",
18
- "// 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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n/*</replacement>*/\n\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nforEach(objectKeys(Writable.prototype), function(method) {\n if (!Duplex.prototype[method])\n Duplex.prototype[method] = Writable.prototype[method];\n});\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex))\n return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false)\n this.readable = false;\n\n if (options && options.writable === false)\n this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false)\n this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended)\n return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(this.end.bind(this));\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n",
19
- "// 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\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n",
20
- "// 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\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n\n/*<replacement>*/\nvar Buffer = require('buffer').Buffer;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\nvar EE = require('events').EventEmitter;\n\n/*<replacement>*/\nif (!EE.listenerCount) EE.listenerCount = function(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\nvar Stream = require('stream');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar StringDecoder;\n\n\n/*<replacement>*/\nvar debug = require('util');\nif (debug && debug.debuglog) {\n debug = debug.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\n\nutil.inherits(Readable, Stream);\n\nfunction ReadableState(options, stream) {\n var Duplex = require('./_stream_duplex');\n\n options = options || {};\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = options.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~~this.highWaterMark;\n\n this.buffer = [];\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex)\n this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n var Duplex = require('./_stream_duplex');\n\n if (!(this instanceof Readable))\n return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function(chunk, encoding) {\n var state = this._readableState;\n\n if (util.isString(chunk) && !state.objectMode) {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = new Buffer(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function(chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (util.isNullOrUndefined(chunk)) {\n state.reading = false;\n if (!state.ended)\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var e = new Error('stream.unshift() after end event');\n stream.emit('error', e);\n } else {\n if (state.decoder && !addToFront && !encoding)\n chunk = state.decoder.write(chunk);\n\n if (!addToFront)\n state.reading = false;\n\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront)\n state.buffer.unshift(chunk);\n else\n state.buffer.push(chunk);\n\n if (state.needReadable)\n emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended &&\n (state.needReadable ||\n state.length < state.highWaterMark ||\n state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function(enc) {\n if (!StringDecoder)\n StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 128MB\nvar MAX_HWM = 0x800000;\nfunction roundUpToNextPowerOf2(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2\n n--;\n for (var p = 1; p < 32; p <<= 1) n |= n >> p;\n n++;\n }\n return n;\n}\n\nfunction howMuchToRead(n, state) {\n if (state.length === 0 && state.ended)\n return 0;\n\n if (state.objectMode)\n return n === 0 ? 0 : 1;\n\n if (isNaN(n) || util.isNull(n)) {\n // only flow one buffer at a time\n if (state.flowing && state.buffer.length)\n return state.buffer[0].length;\n else\n return state.length;\n }\n\n if (n <= 0)\n return 0;\n\n // If we're asking for more than the target buffer level,\n // then raise the water mark. Bump up to the next highest\n // power of 2, to prevent increasing it excessively in tiny\n // amounts.\n if (n > state.highWaterMark)\n state.highWaterMark = roundUpToNextPowerOf2(n);\n\n // don't have that much. return null, unless we've ended.\n if (n > state.length) {\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n } else\n return state.length;\n }\n\n return n;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function(n) {\n debug('read', n);\n var state = this._readableState;\n var nOrig = n;\n\n if (!util.isNumber(n) || n > 0)\n state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 &&\n state.needReadable &&\n (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended)\n endReadable(this);\n else\n emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0)\n endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n }\n\n if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0)\n state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n }\n\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (doRead && !state.reading)\n n = howMuchToRead(nOrig, state);\n\n var ret;\n if (n > 0)\n ret = fromList(n, state);\n else\n ret = null;\n\n if (util.isNull(ret)) {\n state.needReadable = true;\n n = 0;\n }\n\n state.length -= n;\n\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (state.length === 0 && !state.ended)\n state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended && state.length === 0)\n endReadable(this);\n\n if (!util.isNull(ret))\n this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!util.isBuffer(chunk) &&\n !util.isString(chunk) &&\n !util.isNullOrUndefined(chunk) &&\n !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n\nfunction onEofChunk(stream, state) {\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync)\n process.nextTick(function() {\n emitReadable_(stream);\n });\n else\n emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(function() {\n maybeReadMore_(stream, state);\n });\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended &&\n state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n else\n len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function(n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function(dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) &&\n dest !== process.stdout &&\n dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted)\n process.nextTick(endFn);\n else\n src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain &&\n (!dest._writableState || dest._writableState.needDrain))\n ondrain();\n }\n\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n if (false === ret) {\n debug('false write response, pause',\n src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EE.listenerCount(dest, 'error') === 0)\n dest.emit('error', er);\n }\n // This is a brutally ugly hack to make sure that our error handler\n // is attached before any userland ones. NEVER DO THIS.\n if (!dest._events || !dest._events.error)\n dest.on('error', onerror);\n else if (isArray(dest._events.error))\n dest._events.error.unshift(onerror);\n else\n dest._events.error = [onerror, dest._events.error];\n\n\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain)\n state.awaitDrain--;\n if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\n\nReadable.prototype.unpipe = function(dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0)\n return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes)\n return this;\n\n if (!dest)\n dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest)\n dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++)\n dests[i].emit('unpipe', this);\n return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1)\n return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1)\n state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function(ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n // If listening to data, and it has not explicitly been paused,\n // then call resume to start the flow of data on the next tick.\n if (ev === 'data' && false !== this._readableState.flowing) {\n this.resume();\n }\n\n if (ev === 'readable' && this.readable) {\n var state = this._readableState;\n if (!state.readableListening) {\n state.readableListening = true;\n state.emittedReadable = false;\n state.needReadable = true;\n if (!state.reading) {\n var self = this;\n process.nextTick(function() {\n debug('readable nexttick read 0');\n self.read(0);\n });\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function() {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n if (!state.reading) {\n debug('resume read 0');\n this.read(0);\n }\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(function() {\n resume_(stream, state);\n });\n }\n}\n\nfunction resume_(stream, state) {\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading)\n stream.read(0);\n}\n\nReadable.prototype.pause = function() {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n if (state.flowing) {\n do {\n var chunk = stream.read();\n } while (null !== chunk && state.flowing);\n }\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function(stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function() {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length)\n self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function(chunk) {\n debug('wrapped data');\n if (state.decoder)\n chunk = state.decoder.write(chunk);\n if (!chunk || !state.objectMode && !chunk.length)\n return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (util.isFunction(stream[i]) && util.isUndefined(this[i])) {\n this[i] = function(method) { return function() {\n return stream[method].apply(stream, arguments);\n }}(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function(ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function(n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\nfunction fromList(n, state) {\n var list = state.buffer;\n var length = state.length;\n var stringMode = !!state.decoder;\n var objectMode = !!state.objectMode;\n var ret;\n\n // nothing in the list, definitely empty.\n if (list.length === 0)\n return null;\n\n if (length === 0)\n ret = null;\n else if (objectMode)\n ret = list.shift();\n else if (!n || n >= length) {\n // read it all, truncate the array.\n if (stringMode)\n ret = list.join('');\n else\n ret = Buffer.concat(list, length);\n list.length = 0;\n } else {\n // read just some of it.\n if (n < list[0].length) {\n // just take a part of the first list item.\n // slice is the same for buffers and strings.\n var buf = list[0];\n ret = buf.slice(0, n);\n list[0] = buf.slice(n);\n } else if (n === list[0].length) {\n // first list is a perfect match\n ret = list.shift();\n } else {\n // complex case.\n // we have enough to cover it, but it spans past the first buffer.\n if (stringMode)\n ret = '';\n else\n ret = new Buffer(n);\n\n var c = 0;\n for (var i = 0, l = list.length; i < l && c < n; i++) {\n var buf = list[0];\n var cpy = Math.min(n - c, buf.length);\n\n if (stringMode)\n ret += buf.slice(0, cpy);\n else\n buf.copy(ret, c, 0, cpy);\n\n if (cpy < buf.length)\n list[0] = buf.slice(cpy);\n else\n list.shift();\n\n c += cpy;\n }\n }\n }\n\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0)\n throw new Error('endReadable called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(function() {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n });\n }\n}\n\nfunction forEach (xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf (xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n",
21
- "// 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\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\n\nfunction TransformState(options, stream) {\n this.afterTransform = function(er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb)\n return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (!util.isNullOrUndefined(data))\n stream.push(data);\n\n if (cb)\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\n\nfunction Transform(options) {\n if (!(this instanceof Transform))\n return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(options, this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n this.once('prefinish', function() {\n if (util.isFunction(this._flush))\n this._flush(function(er) {\n done(stream, er);\n });\n else\n done(stream);\n });\n}\n\nTransform.prototype.push = function(chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function(chunk, encoding, cb) {\n throw new Error('not implemented');\n};\n\nTransform.prototype._write = function(chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform ||\n rs.needReadable ||\n rs.length < rs.highWaterMark)\n this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function(n) {\n var ts = this._transformState;\n\n if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\n\nfunction done(stream, er) {\n if (er)\n return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length)\n throw new Error('calling transform done when ws.length != 0');\n\n if (ts.transforming)\n throw new Error('calling transform done when still transforming');\n\n return stream.push(null);\n}\n",
22
- "// 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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough))\n return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function(chunk, encoding, cb) {\n cb(null, chunk);\n};\n",
23
- "exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = require('stream');\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nif (!process.browser && process.env.READABLE_STREAM === 'disable') {\n module.exports = require('stream');\n}\n",
24
- "var Transform = require('readable-stream').Transform;\nvar inherits = require('inherits');\n\nmodule.exports = CipherBase;\ninherits(CipherBase, Transform);\nfunction CipherBase(digest) {\n if (digest) {\n this.digest = finalFunc;\n } else {\n this.final = finalFunc;\n }\n\n}\n[\n '_readableState',\n '_writableState',\n '_transformState'\n].forEach(function(prop) {\n Object.defineProperty(CipherBase.prototype, prop, {\n get: function() {\n Transform.call(this);\n return this[prop];\n },\n set: function(val) {\n Object.defineProperty(this, prop, {\n value: val,\n enumerable: true,\n configurable: true,\n writable: true\n });\n },\n configurable: true,\n enumerable: true\n });\n});\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = new Buffer(data, inputEnc);\n }\n var outData = this._update(data) || new Buffer('');\n if (outputEnc) {\n outData = outData.toString(outputEnc);\n }\n if (this.digest) {\n return this;\n }\n return outData;\n};\nCipherBase.prototype._transform = function (data, _, next) {\n this.push(this._update(data));\n next();\n};\nCipherBase.prototype._flush = function (next) {\n try {\n this.push(this._final());\n } catch(e) {\n return next(e);\n }\n next();\n};\nfunction finalFunc (outputEnc) {\n var outData = this._final() || new Buffer('');\n if (outputEnc) {\n outData = outData.toString(outputEnc);\n }\n return outData;\n};\nCipherBase.prototype._final = function () {};\n",
25
- "function ROTATE(v, c) {\n return (v << c) | (v >>> (32 - c));\n}\nvar constants = new Buffer('expand 32-byte k');\nmodule.exports = Chacha20;\nfunction Chacha20(key, nonce) {\n this.input = new Uint32Array(16);\n\n // https://tools.ietf.org/html/draft-irtf-cfrg-chacha20-poly1305-01#section-2.3\n this.input[0] = constants.readUInt32LE(0);\n this.input[1] = constants.readUInt32LE(4);\n this.input[2] = constants.readUInt32LE(8);\n this.input[3] = constants.readUInt32LE(12);\n this.input[4] = key.readUInt32LE(0);\n this.input[5] = key.readUInt32LE(4);\n this.input[6] = key.readUInt32LE(8);\n this.input[7] = key.readUInt32LE(12);\n this.input[8] = key.readUInt32LE(16);\n this.input[9] = key.readUInt32LE(20);\n this.input[10] = key.readUInt32LE(24);\n this.input[11] = key.readUInt32LE(28);\n\n this.input[12] = 0;\n\n this.input[13] = nonce.readUInt32LE(0);\n this.input[14] = nonce.readUInt32LE(4);\n this.input[15] = nonce.readUInt32LE(8);\n \n this.cachePos = 64;\n this.buffer = new Uint32Array(16);\n this.output = new Buffer(64);\n}\n\nChacha20.prototype.quarterRound = function(a, b, c, d) {\n var x = this.buffer;\n x[a] += x[b]; x[d] = ROTATE(x[d] ^ x[a], 16);\n x[c] += x[d]; x[b] = ROTATE(x[b] ^ x[c], 12);\n x[a] += x[b]; x[d] = ROTATE(x[d] ^ x[a], 8);\n x[c] += x[d]; x[b] = ROTATE(x[b] ^ x[c], 7);\n};\nChacha20.prototype.makeBlock = function (output, start) {\n var i = -1;\n // copy input into working buffer\n while (++i < 16) {\n this.buffer[i] = this.input[i];\n }\n i = -1;\n while (++i < 10) {\n // straight round\n this.quarterRound(0, 4, 8,12);\n this.quarterRound(1, 5, 9,13);\n this.quarterRound(2, 6,10,14);\n this.quarterRound(3, 7,11,15);\n\n\n //diaganle round\n this.quarterRound(0, 5,10,15);\n this.quarterRound(1, 6,11,12);\n this.quarterRound(2, 7, 8,13);\n this.quarterRound(3, 4, 9,14);\n }\n i = -1;\n // copy working buffer into output\n while (++i < 16) {\n this.buffer[i] += this.input[i];\n output.writeUInt32LE(this.buffer[i], start);\n start += 4;\n }\n\n this.input[12]++;\n if (!this.input[12]) {\n throw new Error('counter is exausted');\n }\n};\nChacha20.prototype.getBytes = function(len) {\n var dpos = 0;\n var dst = new Buffer(len);\n var cacheLen = 64 - this.cachePos;\n if (cacheLen) {\n if (cacheLen >= len) {\n this.output.copy(dst, 0, this.cachePos, 64);\n this.cachePos += len;\n return dst;\n } else {\n this.output.copy(dst, 0, this.cachePos, 64);\n len -= cacheLen;\n dpos += cacheLen;\n this.cachePos = 64;\n }\n }\n while (len > 0 ) {\n if (len <= 64) {\n this.makeBlock(this.output, 0);\n this.output.copy(dst, dpos, 0, len);\n if (len < 64) {\n this.cachePos = len;\n }\n return dst;\n } else {\n this.makeBlock(dst, dpos);\n }\n len -= 64;\n dpos += 64;\n }\n throw new Error('something bad happended');\n};",
26
- "var Poly1305KeySize = 32;\nvar Poly1305TagSize = 16;\nmodule.exports = Poly1305;\nfunction Poly1305(key) {\n if (!(this instanceof Poly1305)) {\n return new Poly1305(key);\n }\n this.buffer = new Buffer(16);\n this.leftover = 0;\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.finished = 0;\n\n var t = new Uint16Array(8), i;\n \n for (i = 8; i--;) t[i] = key.readUInt16LE(i*2);\n \n this.r[0] = t[0] & 0x1fff;\n this.r[1] = ((t[0] >>> 13) | (t[1] << 3)) & 0x1fff;\n this.r[2] = ((t[1] >>> 10) | (t[2] << 6)) & 0x1f03;\n this.r[3] = ((t[2] >>> 7) | (t[3] << 9)) & 0x1fff;\n this.r[4] = ((t[3] >>> 4) | (t[4] << 12)) & 0x00ff;\n this.r[5] = (t[4] >>> 1) & 0x1ffe;\n this.r[6] = ((t[4] >>> 14) | (t[5] << 2)) & 0x1fff;\n this.r[7] = ((t[5] >>> 11) | (t[6] << 5)) & 0x1f81;\n this.r[8] = ((t[6] >>> 8) | (t[7] << 8)) & 0x1fff;\n this.r[9] = (t[7] >>> 5) & 0x007f;\n \n for (i = 8; i--;) {\n this.h[i] = 0;\n this.pad[i] = key.readUInt16LE( 16+(2*i));\n }\n this.h[8] = 0;\n this.h[9] = 0;\n this.leftover = 0;\n this.finished = 0; \n}\n\n \nfunction U16TO8_LE(p, pos, v) {\n p[pos] = v;\n p[pos+1] = v >>> 8;\n}\n\nPoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.finished ? 0 : (1 << 11);\n var t = new Uint16Array(8),\n d = new Uint32Array(10),\n c = 0, i = 0, j = 0;\n \n while (bytes >= 16) {\n for (i = 8; i--;) t[i] = m.readUInt16LE(i*2+mpos);\n \n this.h[0] += t[0] & 0x1fff;\n this.h[1] += ((t[0] >>> 13) | (t[1] << 3)) & 0x1fff;\n this.h[2] += ((t[1] >>> 10) | (t[2] << 6)) & 0x1fff;\n this.h[3] += ((t[2] >>> 7) | (t[3] << 9)) & 0x1fff;\n this.h[4] += ((t[3] >>> 4) | (t[4] << 12)) & 0x1fff;\n this.h[5] += (t[4] >>> 1) & 0x1fff;\n this.h[6] += ((t[4] >>> 14) | (t[5] << 2)) & 0x1fff;\n this.h[7] += ((t[5] >>> 11) | (t[6] << 5)) & 0x1fff;\n this.h[8] += ((t[6] >>> 8) | (t[7] << 8)) & 0x1fff;\n this.h[9] += (t[7] >>> 5) | hibit;\n \n for (i = 0, c = 0; i < 10; i++) {\n d[i] = c;\n for (j = 0; j < 10; j++) {\n d[i] += (this.h[j] & 0xffffffff) * ((j <= i) ? this.r[i-j] : (5 * this.r[i+10-j]));\n if (j === 4) {\n c = (d[i] >>> 13);\n d[i] &= 0x1fff;\n }\n }\n c += (d[i] >>> 13);\n d[i] &= 0x1fff;\n }\n c = ((c << 2) + c);\n c += d[0];\n d[0] = ((c & 0xffff) & 0x1fff);\n c = (c >>> 13);\n d[1] += c;\n \n for (i = 10; i--;) this.h[i] = d[i];\n \n mpos += 16;\n bytes -= 16;\n }\n};\n\nPoly1305.prototype.update = function(m) {\n var bytes = m.length;\n var want = 0, i = 0, mpos = 0;\n // var chunk;\n // this.buffer = Buffer.concat([this.buffer, m]);\n // while (this.buffer.length >= 16) {\n // chunk = this.buffer.slice(0, 16);\n // this.buffer = this.buffer.slice(16)\n // this.blocks(chunk, 0, 16);\n // }\n if (this.leftover) {\n want = 16 - this.leftover;\n if (want > bytes)\n want = bytes;\n for (i = want; i--;) {\n this.buffer[this.leftover+i] = m[i+mpos];\n }\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return this;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0; \n }\n \n if (bytes >= 16) {\n want = (bytes & ~(16 - 1));\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n \n if (bytes) {\n for (i = bytes; i--;) {\n this.buffer[this.leftover+i] = m[i+mpos];\n }\n this.leftover += bytes;\n }\n return this;\n};\n \nPoly1305.prototype.finish = function() {\n var mac = new Buffer(16),\n g = new Uint16Array(10),\n c = 0, mask = 0, f = 0, i = 0;\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) {\n this.buffer[i] = 0;\n }\n this.finished = 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 = (g[9] >>> 15) - 1;\n for (i = 10; i--;) g[i] &= mask;\n mask = ~mask;\n for (i = 10; i--;) {\n this.h[i] = (this.h[i] & mask) | g[i];\n }\n \n this.h[0] = (this.h[0] ) | (this.h[1] << 13);\n this.h[1] = (this.h[1] >> 3) | (this.h[2] << 10);\n this.h[2] = (this.h[2] >> 6) | (this.h[3] << 7);\n this.h[3] = (this.h[3] >> 9) | (this.h[4] << 4);\n this.h[4] = (this.h[4] >> 12) | (this.h[5] << 1) | (this.h[6] << 14);\n this.h[5] = (this.h[6] >> 2) | (this.h[7] << 11);\n this.h[6] = (this.h[7] >> 5) | (this.h[8] << 8);\n this.h[7] = (this.h[8] >> 8) | (this.h[9] << 5);\n \n f = (this.h[0] & 0xffffffff) + this.pad[0];\n this.h[0] = f;\n for (i = 1; i < 8; i++) {\n f = (this.h[i] & 0xffffffff) + this.pad[i] + (f >>> 16);\n this.h[i] = f;\n }\n \n for (i = 8; i--;) {\n mac.writeUInt16LE(this.h[i], i*2);\n this.pad[i] = 0;\n }\n for (i = 10; i--;) {\n this.h[i] = 0;\n this.r[i] = 0;\n }\n\n return mac;\n};",
27
- "var inherits = require('inherits');\nvar CipherBase = require('./cipherbase');\nvar Chacha20 = require('./chacha20');\nvar CipherBase = require('./cipherbase');\nvar Poly1305 = require('./poly1305');\ninherits(Cipher, CipherBase);\nmodule.exports = Cipher;\nfunction Cipher(key, iv, decrypt){\n if (!(this instanceof Cipher)) {\n return new Cipher(key, iv, decrypt);\n }\n CipherBase.call(this);\n this.alen = 0;\n this.clen = 0;\n this.chacha = new Chacha20(key, iv);\n this.poly = new Poly1305(this.chacha.getBytes(64));\n this.tag = null;\n this._decrypt = decrypt;\n this._hasData = false;\n}\nCipher.prototype.setAAD = function (aad) {\n if (this._hasData) {\n throw new Error('Attempting to set AAD in unsupported state');\n }\n this.alen = aad.length;\n this.poly.update(aad);\n var padding = new Buffer(padAmount(this.alen));\n if (padding.length) {\n padding.fill(0);\n this.poly.update(padding);\n }\n};\nCipher.prototype._update = function (chunk) {\n if (!this._hasData) {\n this._hasData = true;\n }\n var len = chunk.length;\n if (!len) {\n return next();\n }\n this.clen += len;\n var pad = this.chacha.getBytes(len);\n var i = -1;\n while (++i < len) {\n pad[i] ^= chunk[i];\n }\n if (this._decrypt) {\n this.poly.update(chunk);\n } else {\n this.poly.update(pad);\n }\n return pad;\n};\nCipher.prototype._final = function () {\n if (this._decrypt && !this.tag) {\n throw new Error('Unsupported state or unable to authenticate data');\n }\n var padding = new Buffer(padAmount(this.clen));\n if (padding.length) {\n padding.fill(0);\n this.poly.update(padding);\n }\n var lens = new Buffer(16);\n lens.fill(0);\n lens.writeUInt32LE(this.alen, 0);\n lens.writeUInt32LE(this.clen, 8);\n var tag = this.poly.update(lens).finish();\n if (this._decrypt) {\n if (xorTest(tag, this.tag)) {\n throw new Error('Unsupported state or unable to authenticate data');\n }\n } else {\n this.tag = tag;\n }\n};\nCipher.prototype.getAuthTag = function () {\n if(this._decrypt || this.tag === null) {\n throw new Error('Attempting to get auth tag in unsupported state');\n }\n return this.tag;\n};\nCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (this._decrypt) {\n this.tag = tag;\n } else {\n throw new Error('Attempting to set auth tag in unsupported state');\n }\n};\nfunction padAmount(len) {\n var rem = len % 16;\n if (!rem) {\n return 0;\n }\n return 16 - rem;\n}\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) {\n out++;\n }\n var len = Math.min(a.length, b.length);\n var i = -1;\n while (++i < len) {\n out += (a[i] ^ b[i]);\n }\n return out;\n}\n",
28
- "var inherits = require('inherits');\n\nvar CipherBase = require('./cipherbase');\nvar Poly1305 = require('./poly1305');\nmodule.exports = PolyStream;\ninherits(PolyStream, CipherBase);\nfunction PolyStream (key) {\n if (!(this instanceof PolyStream)) {\n return new PolyStream(key);\n }\n CipherBase.call(this, true);\n this.poly = new Poly1305(key);\n}\nPolyStream.prototype._update = function (data) {\n this.poly.update(data);\n};\n\nPolyStream.prototype._final = function () {\n return this.poly.finish();\n};\n",
29
- "var Chacha20 = require('./chacha20');\nvar inherits = require('inherits');\nvar CipherBase = require('./cipherbase');\ninherits(ChaChaStream, CipherBase);\nmodule.exports = ChaChaStream;\nfunction ChaChaStream (key, iv) {\n if (!(this instanceof ChaChaStream)) {\n return new ChaChaStream(key, iv);\n }\n CipherBase.call(this);\n this.chacha = new Chacha20(key, iv);\n}\nChaChaStream.prototype._update = function (chunk) {\n var len = chunk.length;\n if (!len) {\n return;\n }\n var pad = this.chacha.getBytes(len);\n var i = -1;\n while (++i < len) {\n pad[i] ^= chunk[i];\n }\n return pad;\n };",
30
- "var inherits = require('inherits');\nvar CipherBase = require('./cipherbase');\nvar Chacha20 = require('./chacha20');\nvar Poly1305 = require('./poly1305');\ninherits(Cipher, CipherBase);\nmodule.exports = Cipher;\n var zeros = new Buffer (4);\n zeros.fill(0);\nfunction Cipher(key, iv, decrypt){\n if (!(this instanceof Cipher)) {\n return new Cipher(key, iv, decrypt);\n }\n CipherBase.call(this);\n this.alen = 0;\n this.clen = 0;\n this.chacha = new Chacha20(key, Buffer.concat([zeros,iv]));\n this.poly = new Poly1305(this.chacha.getBytes(64));\n this.tag = null;\n this._decrypt = decrypt;\n this._hasData = false;\n}\nCipher.prototype.setAAD = function (aad) {\n if (this._hasData) {\n throw new Error('Attempting to set AAD in unsupported state');\n }\n this.alen += aad.length;\n this.poly.update(aad);\n // var padding = new Buffer(padAmount(this.alen));\n // if (padding.length) {\n // padding.fill(0);\n // this.poly.update(padding);\n // }\n //this.poly.update(len);\n};\nCipher.prototype._flushlentag = function () {\n this._hasData = true;\n var len = new Buffer(8);\n len.fill(0);\n len.writeUInt32LE(this.alen, 0);\n this.poly.update(len);\n};\nCipher.prototype._update = function (chunk) {\n if (!this._hasData) {\n this._flushlentag();\n }\n var len = chunk.length;\n if (!len) {\n return;\n }\n this.clen += len;\n var pad = this.chacha.getBytes(len);\n var i = -1;\n while (++i < len) {\n pad[i] ^= chunk[i];\n }\n if (this._decrypt) {\n this.poly.update(chunk);\n } else {\n this.poly.update(pad);\n }\n return pad;\n};\nCipher.prototype._final = function () {\n if (this._decrypt && !this.tag) {\n throw new Error('Unsupported state or unable to authenticate data');\n }\n if (!this._hasData) {\n this._flushlentag();\n }\n // var padding = new Buffer(padAmount(this.clen));\n // if (padding.length) {\n // padding.fill(0);\n // this.poly.update(padding);\n // }\n var lens = new Buffer(8);\n lens.fill(0);\n //lens.writeUInt32LE(this.alen, 0);\n lens.writeUInt32LE(this.clen, 0);\n var tag = this.poly.update(lens).finish();\n if (this._decrypt) {\n if (xorTest(tag, this.tag)) {\n throw new Error('Unsupported state or unable to authenticate data');\n }\n } else {\n this.tag = tag;\n }\n};\nCipher.prototype.getAuthTag = function () {\n if(this._decrypt || this.tag === null) {\n throw new Error('Attempting to get auth tag in unsupported state');\n }\n return this.tag;\n};\nCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (this._decrypt) {\n this.tag = tag;\n } else {\n throw new Error('Attempting to set auth tag in unsupported state');\n }\n};\nfunction padAmount(len) {\n var rem = len % 16;\n if (rem === 16) {\n return 0;\n }\n return 16 - rem;\n}\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) {\n out++;\n }\n var len = Math.min(a.length, b.length);\n var i = -1;\n while (++i < len) {\n out += (a[i] ^ b[i]);\n }\n return out;\n}\n",
31
- "var Cipher = require('./aead');\nexports.aead = Cipher;\nexports.createCipher = createCipher;\nfunction createCipher(key, iv) {\n return new Cipher(key, iv);\n}\nexports.createDecipher = createDecipher;\nfunction createDecipher(key, iv) {\n return new Cipher(key, iv, true);\n}\n\nexports.createHmac = require('./polystream');\nexports.chacha20 = exports.ChaCha20 = require('./chachastream');\nexports.aeadLegacy = exports.AeadLegacy = require('./legacy-aead');",
32
- "try {\n\tmodule.exports = require('chacha-native');\n} catch (_) {\n\tmodule.exports = require('./browser');\n}",
33
- "/* ------------------------------------------------------------------\n* node-dns-sd - dns-sd-parser.js\n*\n* Copyright (c) 2018-2023, Futomi Hatano, All rights reserved.\n* Released under the MIT license\n*\n* Related specifications:\n* - RFC 1035 (DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION)\n* https://tools.ietf.org/html/rfc1035\n* - RFC 6762 (Multicast DNS)\n* https://tools.ietf.org/html/rfc6762\n* - RFC 6763 (DNS-Based Service Discovery)\n* https://tools.ietf.org/html/rfc6763\n* - RFC 2782 (A DNS RR for specifying the location of services (DNS SRV))\n* https://tools.ietf.org/html/rfc2782\n* ---------------------------------------------------------------- */\n'use strict';\n\nclass DnsSdParser {\n /* ------------------------------------------------------------------\n * Constructor: DnsSdParser()\n * ---------------------------------------------------------------- */\n constructor() {\n this._CLASSES = require('./dns-sd-classes.json');\n this._CLASS_MAP = {};\n\n for (const [k, v] of Object.entries(this._CLASSES)) {\n this._CLASS_MAP[v] = k;\n }\n\n this._TYPES = require('./dns-sd-types.json');\n this._TYPE_MAP = {};\n\n for (const [k, v] of Object.entries(this._TYPES)) {\n this._TYPE_MAP[v] = k;\n }\n }\n\n /* ------------------------------------------------------------------\n * Method: parse(buf)\n * ---------------------------------------------------------------- */\n parse(buf) {\n if (buf.length <= 12) {\n return null;\n }\n const header = {\n id: buf.readUInt16BE(0),\n qr: buf.readUInt8(2) >> 7, // 0: Query, 1: Response\n op: (buf.readUInt8(2) & 0b01111000) >> 3, // 0: Normal query, 4: Notify, 5: Update\n aa: (buf.readUInt8(2) & 0b00000100) >> 2,\n tc: (buf.readUInt8(2) & 0b00000010) >> 1,\n rd: (buf.readUInt8(2) & 0b00000001),\n ra: (buf.readUInt8(3) & 0b10000000) >> 7,\n z: (buf.readUInt8(3) & 0b01000000) >> 6,\n ad: (buf.readUInt8(3) & 0b00100000) >> 6,\n cd: (buf.readUInt8(3) & 0b00010000) >> 5,\n rc: (buf.readUInt8(3) & 0b00001111),\n questions: buf.readUInt16BE(4),\n answers: buf.readUInt16BE(6),\n authorities: buf.readUInt16BE(8),\n additionals: buf.readUInt16BE(10)\n };\n\n if (header['tc'] !== 0 || header['rd'] !== 0 || header['ra'] !== 0 || header['z'] !== 0 || header['ad'] !== 0 || header['cd'] !== 0 || header['rc'] !== 0) {\n return null;\n }\n\n if (header['questions'] + header['answers'] + header['authorities'] + header['additionals'] === 0) {\n return null;\n }\n\n const records = {\n header: header,\n questions: [],\n answers: [],\n authorities: [],\n additionals: []\n };\n\n const record_count_list = [];\n ['questions', 'answers', 'authorities', 'additionals'].forEach((k) => {\n let cnt = header[k];\n if (cnt > 0) {\n record_count_list.push({ name: k, count: cnt });\n }\n });\n\n let offset = 12;\n let invalid = false;\n\n while (true) {\n const parsed = this._parseLabel(buf, offset);\n if (!parsed) {\n invalid = true;\n break;\n }\n offset += parsed['length'];\n const domain_name = parsed['name'];\n\n const record_key = record_count_list[0]['name'];\n if (record_key === 'questions') {\n if (offset + 4 > buf.length) {\n invalid = true;\n break;\n }\n let type_value = buf.readUInt16BE(offset);\n let type = this._TYPE_MAP[type_value];\n offset += 2;\n let cls_value = buf.readUInt16BE(offset);\n let cls = this._CLASS_MAP[cls_value];\n offset += 2;\n records[record_key].push({\n name: domain_name,\n type: type || '',\n class: cls || ''\n });\n } else {\n if (offset + 10 > buf.length) {\n invalid = true;\n break;\n }\n let type_value = buf.readUInt16BE(offset);\n let type = this._TYPE_MAP[type_value] || '';\n offset += 2;\n let cls_value = buf.readUInt16BE(offset);\n let cls = this._CLASS_MAP[cls_value & 0b0111111111111111];\n let flash = (cls_value & 0b1000000000000000) ? true : false;\n offset += 2;\n let ttl = buf.readUInt32BE(offset);\n offset += 4;\n let rdlen = buf.readUInt16BE(offset);\n offset += 2;\n if (offset + rdlen > buf.length) {\n invalid = true;\n break;\n }\n let rdata = '';\n let rdata_txt_buffer = null;\n if (type === 'A') {\n rdata = this._parseRdataA(buf, offset, rdlen);\n } else if (type === 'AAAA') {\n rdata = this._parseRdataAAAA(buf, offset, rdlen);\n } else if (type === 'PTR') {\n rdata = this._parseRdataPtr(buf, offset, rdlen);\n } else if (type === 'TXT') {\n rdata = this._parseRdataTxt(buf, offset, rdlen);\n rdata_txt_buffer = this._parseRdataTxt(buf, offset, rdlen, true);\n } else if (type === 'SRV') {\n rdata = this._parseRdataSrv(buf, offset, rdlen);\n } else if (type === 'HINFO') {\n rdata = this._parseRdataHinfo(buf, offset, rdlen);\n } else {\n rdata = this._parseRdataOther(buf, offset, rdlen);\n }\n offset += rdlen;\n\n if (!rdata) {\n invalid = true;\n break;\n }\n\n let d = {\n name: domain_name,\n type: type || '',\n class: cls || '',\n flash: flash,\n ttl: ttl,\n rdata: rdata\n };\n if (rdata_txt_buffer) {\n d['rdata_buffer'] = rdata_txt_buffer;\n }\n records[record_key].push(d);\n }\n\n if (offset >= buf.length) {\n break;\n }\n\n record_count_list[0]['count']--;\n\n if (record_count_list[0]['count'] <= 0) {\n record_count_list.shift();\n }\n\n if (record_count_list.length === 0) {\n break;\n }\n }\n\n if (invalid === true) {\n return null;\n } else {\n return records;\n };\n }\n\n _parseLabel(buf, offset) {\n const labels = [];\n let length = 0;\n let invalid = false;\n\n while (true) {\n const label_len = buf.readUInt8(offset + length);\n if ((label_len & 0b11000000) === 0b11000000) {\n let i = buf.readUInt16BE(offset + length) & 0b0011111111111111;\n let parsed = this._parseLabel(buf, i);\n if (parsed) {\n labels.push(parsed['name']);\n length += 2;\n break;\n } else {\n invalid = true;\n break;\n }\n } else if ((label_len & 0b11000000) === 0b00000000) {\n length += 1;\n if (label_len === 0x00) {\n break;\n } else if (offset + length + label_len <= buf.length) {\n let label = buf.slice(offset + length, offset + length + label_len).toString('utf8');\n labels.push(label);\n length += label_len;\n } else {\n invalid = true;\n break;\n }\n } else {\n invalid = true;\n break;\n }\n }\n if (invalid === true) {\n return null;\n } else {\n return {\n name: labels.join('.'),\n length: length\n };\n }\n }\n\n _parseRdataA(buf, offset, len) {\n const addr_parts = [];\n for (let i = 0; i < len; i++) {\n addr_parts.push(buf.readUInt8(offset + i));\n }\n const addr = addr_parts.join('.');\n return addr;\n }\n\n _parseRdataAAAA(buf, offset, len) {\n const addr_parts = [];\n for (let i = 0; i < len; i += 2) {\n addr_parts.push(buf.slice(offset + i, offset + i + 2).toString('hex'));\n }\n const addr = addr_parts.join(':');\n return addr;\n }\n\n _parseRdataPtr(buf, offset, len) {\n const parsed = this._parseLabel(buf, offset);\n if (parsed) {\n return parsed['name'];\n } else {\n return null;\n }\n }\n\n _parseRdataTxt(buf, offset, len, buf_flag) {\n const labels = {};\n let i = 0;\n while (true) {\n if (i >= len) {\n break;\n }\n const blen = buf.readUInt8(offset + i);\n i += 1;\n if (i + blen <= len) {\n const pair = buf.slice(offset + i, offset + i + blen).toString('utf8');\n const m = pair.match(/^([^\\=]+)\\=(.*)/);\n if (m) {\n labels[m[1]] = m[2];\n if (buf_flag) {\n const s = offset + i + m[1].length + 1;\n const e = offset + i + blen;\n labels[m[1]] = buf.slice(s, e);\n }\n }\n i += blen;\n } else {\n break;\n }\n }\n return labels;\n }\n\n _parseRdataSrv(buf, offset, len) {\n if (len <= 6) {\n return null;\n }\n const parsed = this._parseLabel(buf, offset + 6);\n let target = null;\n if (parsed) {\n target = parsed['name'];\n }\n return {\n priority: buf.readUInt16BE(offset),\n weight: buf.readUInt16BE(offset + 2),\n port: buf.readUInt16BE(offset + 4),\n target: target\n };\n }\n\n _parseRdataHinfo(buf, offset, len) {\n const txt_list = [];\n let i = 0;\n while (true) {\n if (i >= len) {\n break;\n }\n const blen = buf.readUInt8(offset + i);\n i += 1;\n if (i + blen <= len) {\n const v = buf.slice(offset + i, offset + i + blen).toString('utf8');\n txt_list.push(v);\n i += blen;\n } else {\n break;\n }\n }\n const info = {};\n if (txt_list[0]) {\n info['cpu'] = txt_list[0];\n }\n if (txt_list[1]) {\n info['os'] = txt_list[1];\n }\n return info;\n }\n\n _parseRdataOther(buf, offset, len) {\n const rdata_parts = [];\n for (let i = 0; i < len; i++) {\n rdata_parts.push(buf.slice(offset + i, offset + i + 1).toString('hex'));\n }\n const rdata = rdata_parts.join(' ');\n return rdata;\n }\n}\n\nmodule.exports = new DnsSdParser();\n\n",
34
- "/* ------------------------------------------------------------------\n* node-dns-sd - dns-sd-composer.js\n*\n* Copyright (c) 2018 - 2023, Futomi Hatano, All rights reserved.\n* Released under the MIT license\n* ---------------------------------------------------------------- */\n'use strict';\n\nclass DnsSdComposer {\n /* ------------------------------------------------------------------\n * Constructor: DnsSdComposer()\n * ---------------------------------------------------------------- */\n constructor() {\n this._CLASSES = require('./dns-sd-classes.json');\n this._TYPES = require('./dns-sd-types.json');\n }\n\n /* ------------------------------------------------------------------\n * Method: compose(params)\n * - params:\n * - name | Array | Requred | Servcie name.(e.g., [\"_googlecast._tcp.local\"])\n * - type | String | Optional | Query Type (e.g., \"PTR\"). The default value is \"*\"\n * ---------------------------------------------------------------- */\n compose(params) {\n const name_list = params['name'];\n const type_name = params['type'];\n let type_code = 0xff;\n if (type_name) {\n if (typeof (type_name) === 'string') {\n if (this._TYPES[type_name]) {\n type_code = this._TYPES[type_name];\n } else {\n throw new Error('The specified query type name is unknown: ' + type_name);\n }\n } else {\n throw new Error('The specified query type is invalid.');\n }\n }\n\n const hbuf = Buffer.from([ // Header\n 0x00, 0x00, // Transaction ID\n 0x00, 0x00, // Flags\n 0x00, name_list.length, // Questions\n 0x00, 0x00, // Answer PRs\n 0x00, 0x00, // Authority PRs\n 0x00, 0x00 // Additional PRs\n ]);\n\n const qbuf_list = [];\n for (const name of name_list) {\n (name.split('.')).forEach((part) => {\n let part_buf = Buffer.from(part, 'utf8');\n qbuf_list.push(Buffer.from([part_buf.length]));\n qbuf_list.push(part_buf);\n });\n qbuf_list.push(Buffer.from([0x00])); // Null-terminated string for the domain name\n\n let type_buf = Buffer.alloc(2);\n type_buf.writeUInt16BE(type_code, 0);\n qbuf_list.push(type_buf);\n\n let class_buf = Buffer.alloc(2);\n class_buf.writeUInt16BE(this._CLASSES['IN'], 0);\n qbuf_list.push(class_buf);\n }\n const qbuf = Buffer.concat(qbuf_list);\n const buf = Buffer.concat([hbuf, qbuf]);\n return buf;\n }\n}\n\nmodule.exports = new DnsSdComposer();\n\n",
35
- "/* ------------------------------------------------------------------\n* node-dns-sd - dns-sd.js\n*\n* Copyright (c) 2018 - 2023, Futomi Hatano, All rights reserved.\n* Released under the MIT license\n* ---------------------------------------------------------------- */\n'use strict';\nconst mDgram = require('dgram');\nconst mOs = require('os');\nconst mDnsSdParser = require('./dns-sd-parser.js');\nconst mDnsSdComposer = require('./dns-sd-composer.js');\n\nclass DnsSd {\n /* ------------------------------------------------------------------\n * Constructor: DnsSd()\n * ---------------------------------------------------------------- */\n constructor() {\n // Public\n this.ondata = () => { };\n\n // Private\n this._MULTICAST_ADDR = '224.0.0.251';\n this._UDP_PORT = 5353;\n this._DISCOVERY_WAIT_DEFAULT = 3; // sec\n\n this._netif_address_list = []; // List of network interface IP address\n\n this._udp = null;\n this._discovered_devices = {};\n this._is_discovering = false;\n this._is_monitoring = false;\n this._is_listening = false;\n this._onreceive = () => { };\n }\n\n /* ------------------------------------------------------------------\n * Method: discover(params)\n * - params | Object | Required |\n * - name | String or | Required | Servcie name.(e.g., \"_googlecast._tcp.local\")\n * | Array | |\n * - type | String | Optional | Query Type (e.g., \"PTR\"). The default value is \"*\".\n * - key | String | Optional | \"address\" (default) or \"fqdn\".\n * | | | - \"address\": IP address based discovery\n * | | | - \"fqdn\": FQDN (service) based discovery\n * - wait | Integer | Optional | Duration of monitoring. The default value is 3 (sec).\n * - quick | Boolean | Optional | If `true`, this method returns immediately after\n * | | | a device was found ignoring the value of the `wait`.\n * | | | The default value is `false`.\n * - filter | String or | Optional | If specified as a string, this method discovers only\n * | Function | | devices which the string is found in the `fqdn`,\n * | | | `address`, `modelName` or `familyName`.\n * | | | If specified as a function, this method discovers \n * | | | only devices for which the function returns `true`. \n * ---------------------------------------------------------------- */\n async discover(params) {\n if (this._is_discovering === true) {\n throw (new Error('The discovery process is running.'));\n }\n\n // Check the parameters\n const res = this._checkDiscoveryParameters(params);\n if (res['error']) {\n throw (res['error']);\n }\n\n // Update the list of network interface IP address\n this._netif_address_list = this._getNetifAddressList();\n\n const device_list = [];\n try {\n await this._startListening();\n await this._startDiscovery(res['params']);\n for (const device of Object.values(this._discovered_devices)) {\n device_list.push(device);\n }\n await this._stopDiscovery();\n return device_list;\n } catch (error) {\n await this._stopDiscovery();\n throw (error);\n }\n }\n\n _createDeviceObject(packet) {\n const o = {};\n\n const trecs = {};\n ['answers', 'authorities', 'additionals'].forEach((k) => {\n packet[k].forEach((r) => {\n const type = r['type'];\n if (!trecs[type]) {\n trecs[type] = [];\n }\n trecs[type].push(r);\n });\n });\n\n o['address'] = null;\n if (trecs['A']) {\n o['address'] = trecs['A'][0]['rdata'];\n }\n if (!o['address']) {\n o['address'] = packet['address'];\n }\n\n o['fqdn'] = null;\n if (trecs['PTR']) {\n let rec = trecs['PTR'][0];\n o['fqdn'] = rec['rdata'];\n }\n\n o['modelName'] = null;\n o['familyName'] = null;\n if (trecs['TXT'] && trecs['TXT'][0] && trecs['TXT'][0]['rdata']) {\n const r = trecs['TXT'][0];\n const d = r['rdata'] || {};\n const name = r['name'] || '';\n if (/Apple TV/.test(name)) {\n o['modelName'] = 'Apple TV';\n if (trecs['TXT']) {\n for (let i = 0; i < trecs['TXT'].length; i++) {\n const r = trecs['TXT'][i];\n if ((/_device-info/).test(r['name']) && r['rdata'] && r['rdata']['model']) {\n o['modelName'] = 'Apple TV ' + r['rdata']['model'];\n break;\n }\n }\n }\n } else if (/_googlecast/.test(name)) {\n o['modelName'] = d['md'] || null;\n o['familyName'] = d['fn'] || null;\n } else if (/Philips hue/.test(name)) {\n o['modelName'] = 'Philips hue';\n if (d['md']) {\n o['modelName'] += ' ' + d['md'];\n }\n } else if (/Canon/.test(name)) {\n o['modelName'] = d['ty'] || null;\n }\n }\n if (!o['modelName']) {\n if (trecs['A'] && trecs['A'][0]) {\n const r = trecs['A'][0];\n const name = r['name'];\n if (/Apple\\-TV/.test(name)) {\n o['modelName'] = 'Apple TV';\n } else if (/iPad/.test(name)) {\n o['modelName'] = 'iPad';\n }\n }\n }\n\n if (!o['modelName']) {\n if (o['fqdn']) {\n const hostname = (o['fqdn'].split('.')).shift();\n if (hostname && / /.test(hostname)) {\n o['modelName'] = hostname;\n }\n }\n }\n\n o['service'] = null;\n if (trecs['SRV']) {\n const rec = trecs['SRV'][0];\n let name_parts = rec['name'].split('.');\n name_parts.reverse();\n o['service'] = {\n port: rec['rdata']['port'],\n protocol: name_parts[1].replace(/^_/, ''),\n type: name_parts[2].replace(/^_/, '')\n };\n }\n\n o['packet'] = packet;\n return o;\n }\n\n _checkDiscoveryParameters(params) {\n const p = {};\n if (params) {\n if (typeof (params) !== 'object') {\n return { error: new Error('The argument `params` is invalid.') };\n }\n } else {\n return { error: new Error('The argument `params` is required.') };\n }\n\n if ('name' in params) {\n const v = params['name'];\n if (typeof (v) === 'string') {\n if (v === '') {\n return { error: new Error('The `name` must be an non-empty string.') };\n }\n p['name'] = [v];\n } else if (Array.isArray(v)) {\n if (v.length === 0) {\n return { error: new Error('The `name` must be a non-empty array.') };\n } else if (v.length > 255) {\n return { error: new Error('The `name` can include up to 255 elements.') };\n }\n let err = null;\n const list = [];\n for (let i = 0; i < v.length; i++) {\n if (typeof (v[i]) === 'string' && v[i] !== '') {\n list.push(v[i]);\n } else {\n err = new Error('The `name` must be an Array object including non-empty strings.');\n break;\n }\n }\n if (err) {\n return { error: err };\n }\n p['name'] = list;\n } else {\n return { error: new Error('The `name` must be a string or an Array object.') };\n }\n } else {\n return { error: new Error('The `name` is required.') };\n }\n\n if ('type' in params) {\n const v = params['type'];\n if (typeof (v) !== 'string' || !(/^[a-zA-Z0-9]{1,10}$/.test(v) || v === '*')) {\n return { error: new Error('The `type` is invalid.') };\n }\n p['type'] = v.toUpperCase();\n }\n\n if ('key' in params) {\n const v = params['key'];\n if (typeof (v) !== 'string' || !/^(address|fqdn)$/.test(v)) {\n return { error: new Error('The `key` is invalid.') };\n }\n p['key'] = v;\n }\n\n if ('wait' in params) {\n const v = params['wait'];\n if (typeof (v) !== 'number' || v <= 0 || v % 1 !== 0) {\n return { error: new Error('The `wait` is invalid.') };\n }\n p['wait'] = v;\n }\n\n if ('quick' in params) {\n const v = params['quick'];\n if (typeof (v) !== 'boolean') {\n return { error: new Error('The `quick` must be a boolean.') };\n }\n p['quick'] = v;\n } else {\n p['quick'] = false;\n }\n\n if (`filter` in params) {\n const v = params['filter'];\n if (typeof (v) !== 'string' && typeof (v) !== 'function') {\n return { error: new Error('The `filter` must be a string.') };\n }\n if (v) {\n p['filter'] = v;\n }\n }\n\n return { params: p };\n }\n\n _startDiscovery(params) {\n return new Promise((resolve, reject) => {\n this._discovered_devices = {};\n this._is_discovering = true;\n const wait = (params && params['wait']) ? params['wait'] : this._DISCOVERY_WAIT_DEFAULT;\n\n // Create a request packet\n let buf = mDnsSdComposer.compose({\n name: params['name'],\n type: params['type']\n });\n\n // Timer\n let wait_timer = null;\n\n const clearTimer = () => {\n if (wait_timer) {\n clearTimeout(wait_timer);\n wait_timer = null;\n }\n this._onreceive = () => { };\n };\n\n wait_timer = setTimeout(() => {\n clearTimer();\n resolve();\n }, wait * 1000);\n\n const quick = params['quick'];\n const key = params['key'] || 'address';\n\n this._onreceive = (addr, packet) => {\n if (!this._isTargettedDevice(packet, params['name'])) {\n return;\n }\n const device = this._createDeviceObject(packet);\n if (!this._evaluateDeviceFilter(device, params['filter'])) {\n return;\n }\n if (key === 'fqdn') {\n const fqdn = device['fqdn'];\n this._discovered_devices[fqdn] = device;\n } else {\n this._discovered_devices[addr] = device;\n }\n if (quick) {\n clearTimer();\n resolve();\n }\n };\n\n // Send a packet\n this._sendQueryPacket(buf);\n });\n }\n\n async _sendQueryPacket(buf) {\n for (const netif_address of this._netif_address_list) {\n for (let i = 0; i < 3; i++) {\n this._udp.setMulticastInterface(netif_address);\n await this._wait(100);\n await this._udpSend(buf, this._UDP_PORT, this._MULTICAST_ADDR);\n if (this._is_discovering === true) {\n break;\n }\n await this._wait(100);\n }\n\n if (this._is_discovering === true) {\n break;\n }\n }\n }\n\n _udpSend(buf, port, addr) {\n return new Promise((resolve, reject) => {\n this._udp.send(buf, 0, buf.length, port, addr, (error) => {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n });\n });\n }\n\n _wait(msec) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, msec);\n });\n }\n\n _isTargettedDevice(packet, name_list) {\n let hit = false;\n for (const ans of packet['answers']) {\n let name = ans['name'];\n if (name && name_list.indexOf(name) >= 0) {\n hit = true;\n }\n }\n return hit;\n }\n\n _evaluateDeviceFilter(device, filter) {\n if (filter) {\n let filter_type = typeof (filter);\n if (filter_type === 'string') {\n return this._evaluateDeviceFilterString(device, filter);\n } else if (filter_type === 'function') {\n return this._evaluateDeviceFilterFunction(device, filter);\n } else {\n return false;\n }\n } else {\n return true;\n }\n }\n\n _evaluateDeviceFilterString(device, filter) {\n if (device['fqdn'] && device['fqdn'].indexOf(filter) >= 0) {\n return true;\n }\n if (device['address'] && device['address'].indexOf(filter) >= 0) {\n return true;\n }\n if (device['modelName'] && device['modelName'].indexOf(filter) >= 0) {\n return true;\n }\n if (device['familyName'] && device['familyName'].indexOf(filter) >= 0) {\n return true;\n }\n return false;\n }\n\n _evaluateDeviceFilterFunction(device, filter) {\n let res = false;\n try {\n res = filter(device);\n } catch (e) { }\n res = res ? true : false;\n return res;\n }\n\n async _stopDiscovery() {\n this._discovered_devices = {};\n this._is_discovering = false;\n try {\n await this._stopListening();\n } catch (error) {\n // Do nothing\n }\n }\n\n _addMembership() {\n for (const netif_address of this._netif_address_list) {\n try {\n this._udp.addMembership(this._MULTICAST_ADDR, netif_address);\n } catch (e) {\n console.log(`Catching error on address already in use: ${JSON.stringify(e)}`);\n }\n }\n }\n\n _dropMembership() {\n for (const netif_address of this._netif_address_list) {\n try {\n this._udp.dropMembership(this._MULTICAST_ADDR, netif_address);\n } catch (e) {\n console.log(`Catching error on dropMembership: ${JSON.stringify(e)}`);\n }\n }\n }\n\n _getNetifAddressList() {\n const list = [];\n const netifs = mOs.networkInterfaces();\n for (const iflist of Object.values(netifs)) {\n for (const info of iflist) {\n // Exclude a loopback address\n if (info.internal) {\n continue;\n }\n // Exclude a non-IPv4 address\n if (info.family !== 'IPv4') {\n continue;\n }\n // Exclude a link-local address\n if (/^169\\.254\\./.test(info.address)) {\n continue;\n }\n\n list.push(info.address);\n }\n }\n return list;\n }\n\n /* ------------------------------------------------------------------\n * Method: startMonitoring()\n * ---------------------------------------------------------------- */\n async startMonitoring() {\n if (this._is_monitoring === true) {\n return;\n }\n\n // Update the list of network interface IP address\n this._netif_address_list = this._getNetifAddressList();\n\n try {\n await this._startListening();\n this._is_monitoring = true;\n } catch (error) {\n this._is_monitoring = false;\n await this._stopListening();\n throw (error);\n }\n }\n\n /* ------------------------------------------------------------------\n * Method: stopMonitoring()\n * ---------------------------------------------------------------- */\n async stopMonitoring() {\n this._is_monitoring = false;\n\n // Update the list of network interface IP address\n this._netif_address_list = this._getNetifAddressList();\n\n try {\n await this._stopListening();\n } catch (error) {\n // Do nothing\n }\n }\n\n _startListening() {\n return new Promise((resolve, reject) => {\n if (this._is_listening === true) {\n resolve();\n return;\n }\n\n // Set up a UDP tranceiver\n this._udp = mDgram.createSocket({\n type: 'udp4',\n reuseAddr: true\n });\n\n this._udp.once('error', (error) => {\n this._is_listening = false;\n reject(error);\n return;\n });\n\n this._udp.once('listening', () => {\n //this._udp.setMulticastLoopback(false);\n this._addMembership();\n this._is_listening = true;\n setTimeout(() => {\n resolve();\n }, 100);\n });\n\n this._udp.on('message', (buf, rinfo) => {\n this._receivePacket(buf, rinfo);\n });\n\n this._udp.bind({ port: this._UDP_PORT }, () => {\n this._udp.removeAllListeners('error');\n });\n });\n }\n\n _stopListening() {\n return new Promise((resolve, reject) => {\n this._dropMembership();\n if (this._is_discovering || this._is_monitoring) {\n resolve();\n } else {\n const cleanObj = () => {\n if (this._udp) {\n this._udp.unref();\n this._udp = null;\n }\n this._is_listening = false;\n resolve();\n };\n if (this._udp) {\n this._udp.removeAllListeners('message');\n this._udp.removeAllListeners('error');\n this._udp.removeAllListeners('listening');\n this._udp.close(() => {\n cleanObj();\n });\n } else {\n cleanObj();\n }\n }\n });\n }\n\n _receivePacket(buf, rinfo) {\n const p = mDnsSdParser.parse(buf);\n if (!p) {\n return;\n }\n p['address'] = rinfo.address;\n if (this._is_discovering) {\n if (this._isAnswerPacket(p, rinfo.address)) {\n this._onreceive(rinfo.address, p);\n }\n }\n if (this._is_monitoring) {\n if (typeof (this.ondata) === 'function') {\n this.ondata(p);\n }\n }\n }\n\n _isAnswerPacket(p, address) {\n if (this._netif_address_list.indexOf(address) >= 0) {\n return false;\n }\n if (!(p['header']['qr'] === 1 && p['header']['op'] === 0)) {\n return false;\n }\n return true;\n }\n}\n\nmodule.exports = new DnsSd();\n",
36
- "/*\n * Basic JavaScript BN library - subset useful for RSA encryption.\n *\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n/*\n *\n * Copyright (c) 2015 Zarmack Tanen\n * Fixed .toString(16) to be compatible with node >0.12.7 because hexWrite()\n * only accepts %2=0 strings\n *\n *\n * Added Node.js Buffers support\n * 2014 rzcoder\n */\n\nvar crypt = require('crypto');\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a, b) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b);\n } else if (Buffer.isBuffer(a)) {\n this.fromBuffer(a);\n } else if (b == null && \"string\" != typeof a) {\n this.fromByteArray(a);\n } else {\n this.fromString(a, b);\n }\n }\n}\n\n// return new, unset BigInteger\nfunction nbi() {\n return new BigInteger(null);\n}\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff, xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff, xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n}\n\n// We need to select the fastest one that works in this environment.\n//if (j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n//\tBigInteger.prototype.am = am2;\n//\tdbits = 30;\n//} else if (j_lm && (navigator.appName != \"Netscape\")) {\n//\tBigInteger.prototype.am = am1;\n//\tdbits = 26;\n//} else { // Mozilla/Netscape seems to prefer am3\n//\tBigInteger.prototype.am = am3;\n//\tdbits = 28;\n//}\n\n// For node.js, we pick am3 with max dbits to 28.\nBigInteger.prototype.am = am3;\ndbits = 28;\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\n\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n\n// Digit conversions\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nvar BI_RC = new Array();\nvar rr, vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\n\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) this[0] = x;\n else if (x < -1) this[0] = x + DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n\n// (protected) set from string and radix\nfunction bnpFromString(data, radix, unsigned) {\n var k;\n switch (radix) {\n case 2:\n k = 1;\n break;\n case 4:\n k = 2;\n break;\n case 8:\n k = 3;\n break;\n case 16:\n k = 4;\n break;\n case 32:\n k = 5;\n break;\n case 256:\n k = 8;\n break;\n default:\n this.fromRadix(data, radix);\n return;\n }\n\n this.t = 0;\n this.s = 0;\n\n var i = data.length;\n var mi = false;\n var sh = 0;\n\n while (--i >= 0) {\n var x = (k == 8) ? data[i] & 0xff : intAt(data, i);\n if (x < 0) {\n if (data.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if (sh === 0)\n this[this.t++] = x;\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else\n this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n if ((!unsigned) && k == 8 && (data[0] & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n}\n\nfunction bnpFromByteArray(a, unsigned) {\n this.fromString(a, 256, unsigned)\n}\n\nfunction bnpFromBuffer(a) {\n this.fromString(a, 256, true)\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if (this.s < 0) return \"-\" + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;\n else if (b == 8) k = 3;\n else if (b == 2) k = 1;\n else if (b == 32) k = 5;\n else if (b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1 << k) - 1, d, m = false, r = \"\", i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n //! Fix to be compatible with node >0.12.7 Buffer.js\n if(b == 16 && r.length % 2 != 0)\n\t r = \"0\" + r;\n return m ? r : \"0\";\n}\n\n// (public) -this\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n}\n\n// (public) |this|\nfunction bnAbs() {\n return (this.s < 0) ? this.negate() : this;\n}\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return (this.s < 0) ? -r : r;\n while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;\n return 0;\n}\n\nfunction bnEqual(a) {\n console.log(this.compareTo(a));\n return (this.compareTo(a) == 0) ? true: false;\n}\n\nfunction bnGreater(a) {\n return (this.compareTo(a) > 0) ? true : false;\n}\n\nfunction bnGreaterOrEqual(a) {\n return (this.compareTo(a) >= 0) ? true : false;\n}\n\nfunction bnLesser(a) {\n return (this.compareTo(a) < 0) ? true : false;\n}\n\nfunction bnLesserOrEqual(a) {\n return (this.compareTo(a) <= 0) ? true : false;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];\n for (i = n - 1; i >= 0; --i) r[i] = 0;\n r.t = this.t + n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) r[i - n] = this[i];\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB), c = (this.s << bs) & this.DM, i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (i = ds - 1; i >= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n var i = 0, c = 0, m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;\n else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) r[i] = 0;\n for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) r[i] = 0;\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n if (r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]);\t// normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 === 0) return;\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt, d2 = (1 << this.F1) / yt, e = 1 << this.F2;\n var i = r.t, j = i - ys, t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y);\t// \"negative\" y so we can replace sub with am later\n while (y.t < ys) y[y.t++] = 0;\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\t// Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) r.subTo(t, r);\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r);\t// Denormalize remainder\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) {\n this.m = m;\n}\nfunction cConvert(x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) {\n return x;\n}\nfunction cReduce(x) {\n x.divRemTo(this.m, null, x);\n}\nfunction cMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\nfunction cSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n}\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) === 0) return 0;\n var y = x & 3;\t\t// y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf;\t// y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff;\t// y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while (x.t <= this.mt2)\t// pad x so am has enough room later\n x[x.t++] = 0;\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n}\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() {\n return ((this.t > 0) ? (this[0] & 1) : this.s) === 0;\n}\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e, z) {\n if (e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) z.mulTo(r2, g, r);\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e, m) {\n var z;\n if (e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e, z);\n}\n\n// Copyright (c) 2005-2009 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Extended JavaScript BN functions, required for RSA private ops.\n\n// Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n// Version 1.2: square() API, isProbablePrime fix\n\n//(public)\nfunction bnClone() {\n var r = nbi();\n this.copyTo(r);\n return r;\n}\n\n//(public) return value as integer\nfunction bnIntValue() {\n if (this.s < 0) {\n if (this.t == 1) return this[0] - this.DV;\n else if (this.t === 0) return -1;\n }\n else if (this.t == 1) return this[0];\n else if (this.t === 0) return 0;\n// assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n}\n\n//(public) return value as byte\nfunction bnByteValue() {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n}\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n}\n\n//(protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n}\n\n//(public) 0 if this === 0, 1 if this > 0\nfunction bnSigNum() {\n if (this.s < 0) return -1;\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\n if (b == null) b = 10;\n if (this.signum() === 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s, b) {\n this.fromInt(0);\n if (b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs), mi = false, j = 0, w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() === 0) mi = true;\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) BigInteger.ZERO.subTo(this, this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a, b) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) this.fromInt(1);\n else {\n this.fromNumber(a);\n if (!this.testBit(a - 1))\t// force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this);\n if (this.isEven()) this.dAddOffset(1, 0); // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n } else {\n // new BigInteger(int,RNG)\n var x = crypt.randomBytes((a >> 3) + 1)\n var t = a & 7;\n\n if (t > 0)\n x[0] &= ((1 << t) - 1);\n else\n x[0] = 0;\n\n this.fromByteArray(x);\n }\n}\n\n//(public) convert to bigendian byte array\nfunction bnToByteArray() {\n var i = this.t, r = new Array();\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8, d, k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p)\n r[k++] = d | (this.s << (this.DB - p));\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) d |= -256;\n if (k === 0 && (this.s & 0x80) != (d & 0x80)) ++k;\n if (k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n}\n\n/**\n * return Buffer object\n * @param trim {boolean} slice buffer if first element == 0\n * @returns {Buffer}\n */\nfunction bnToBuffer(trimOrSize) {\n var res = Buffer.from(this.toByteArray());\n if (trimOrSize === true && res[0] === 0) {\n res = res.slice(1);\n } else if (typeof trimOrSize == 'number') {\n if (res.length > trimOrSize) {\n for (var i = 0; i < res.length - trimOrSize; i++) {\n if (res[i] !== 0) {\n return null;\n }\n }\n return res.slice(res.length - trimOrSize);\n } else if (res.length < trimOrSize) {\n var padded = Buffer.alloc(trimOrSize);\n padded.fill(0, 0, trimOrSize - res.length);\n res.copy(padded, trimOrSize - res.length);\n return padded;\n }\n }\n return res;\n}\n\nfunction bnEquals(a) {\n return (this.compareTo(a) == 0);\n}\nfunction bnMin(a) {\n return (this.compareTo(a) < 0) ? this : a;\n}\nfunction bnMax(a) {\n return (this.compareTo(a) > 0) ? this : a;\n}\n\n//(protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a, op, r) {\n var i, f, m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) r[i] = op(this[i], a[i]);\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) r[i] = op(this[i], f);\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) r[i] = op(f, a[i]);\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n}\n\n//(public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\nfunction bnAnd(a) {\n var r = nbi();\n this.bitwiseTo(a, op_and, r);\n return r;\n}\n\n//(public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\nfunction bnOr(a) {\n var r = nbi();\n this.bitwiseTo(a, op_or, r);\n return r;\n}\n\n//(public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\nfunction bnXor(a) {\n var r = nbi();\n this.bitwiseTo(a, op_xor, r);\n return r;\n}\n\n//(public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\nfunction bnAndNot(a) {\n var r = nbi();\n this.bitwiseTo(a, op_andnot, r);\n return r;\n}\n\n//(public) ~this\nfunction bnNot() {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) r[i] = this.DM & ~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\n var r = nbi();\n if (n < 0) this.rShiftTo(-n, r); else this.lShiftTo(n, r);\n return r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\n var r = nbi();\n if (n < 0) this.lShiftTo(-n, r); else this.rShiftTo(n, r);\n return r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x === 0) return -1;\n var r = 0;\n if ((x & 0xffff) === 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) === 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) === 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) === 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) === 0) ++r;\n return r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\n for (var i = 0; i < this.t; ++i)\n if (this[i] != 0) return i * this.DB + lbit(this[i]);\n if (this.s < 0) return this.t * this.DB;\n return -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\n var r = 0, x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) r += cbit(this[i] ^ x);\n return r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) return (this.s != 0);\n return ((this[j] & (1 << (n % this.DB))) != 0);\n}\n\n//(protected) this op (1<<n)\nfunction bnpChangeBit(n, op) {\n var r = BigInteger.ONE.shiftLeft(n);\n this.bitwiseTo(r, op, r);\n return r;\n}\n\n//(public) this | (1<<n)\nfunction bnSetBit(n) {\n return this.changeBit(n, op_or);\n}\n\n//(public) this & ~(1<<n)\nfunction bnClearBit(n) {\n return this.changeBit(n, op_andnot);\n}\n\n//(public) this ^ (1<<n)\nfunction bnFlipBit(n) {\n return this.changeBit(n, op_xor);\n}\n\n//(protected) r = this + a\nfunction bnpAddTo(a, r) {\n var i = 0, c = 0, m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) r[i++] = c;\n else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n}\n\n//(public) this + a\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n}\n\n//(public) this - a\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n}\n\n//(public) this * a\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n}\n\n// (public) this^2\nfunction bnSquare() {\n var r = nbi();\n this.squareTo(r);\n return r;\n}\n\n//(public) this / a\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n}\n\n//(public) this % a\nfunction bnRemainder(a) {\n var r = nbi();\n this.divRemTo(a, null, r);\n return r;\n}\n\n//(public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a, q, r);\n return new Array(q, r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n, w) {\n if (n === 0) return;\n while (this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n}\n\n//A \"null\" reducer\nfunction NullExp() {\n}\nfunction nNop(x) {\n return x;\n}\nfunction nMulTo(x, y, r) {\n x.multiplyTo(y, r);\n}\nfunction nSqrTo(x, r) {\n x.squareTo(r);\n}\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n//(public) this^e\nfunction bnPow(e) {\n return this.exp(e, new NullExp());\n}\n\n//(protected) r = lower n words of \"this * a\", a.t <= n\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) r[--i] = 0;\n var j;\n for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n for (j = Math.min(a.t, n); i < j; ++i) this.am(0, a[i], r, i, 0, n - i);\n r.clamp();\n}\n\n//(protected) r = \"this * a\" without lower n words, n > 0\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) r[i] = 0;\n for (i = Math.max(n - this.t, 0); i < a.t; ++i)\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n r.clamp();\n r.drShiftTo(1, r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n}\n\nfunction barrettConvert(x) {\n if (x.s < 0 || x.t > 2 * this.m.t) return x.mod(this.m);\n else if (x.compareTo(this.m) < 0) return x;\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n}\n\nfunction barrettRevert(x) {\n return x;\n}\n\n//x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) x.dAddOffset(1, this.m.t + 1);\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n}\n\n//r = x^2 mod m; x != r\nfunction barrettSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n}\n\n//r = x*y mod m; x,y != r\nfunction barrettMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n//(public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if (i <= 0) return r;\n else if (i < 18) k = 1;\n else if (i < 48) k = 3;\n else if (i < 144) k = 4;\n else if (i < 768) k = 5;\n else k = 6;\n if (i < 8)\n z = new Classic(m);\n else if (m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n// precomputation\n var g = new Array(), n = 3, k1 = k - 1, km = (1 << k) - 1;\n g[1] = z.convert(this);\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n\n var j = e.t - 1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) w = (e[j] >> (i - k1)) & km;\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) w |= e[j - 1] >> (this.DB + i - k1);\n }\n\n n = k;\n while ((w & 1) === 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) {\t// ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) z.sqrTo(r, r2); else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n\n while (j >= 0 && (e[j] & (1 << i)) === 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n}\n\n//(public) gcd(this,a) (HAC 14.54)\nfunction bnGCD(a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit(), g = y.getLowestSetBit();\n if (g < 0) return x;\n if (i < g) g = i;\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) x.rShiftTo(i, x);\n if ((i = y.getLowestSetBit()) > 0) y.rShiftTo(i, y);\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) y.lShiftTo(g, y);\n return y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\n if (n <= 0) return 0;\n var d = this.DV % n, r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0)\n if (d === 0) r = this[0] % n;\n else for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n;\n return r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() === 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) b.subTo(m, b);\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) d.subTo(m, d);\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) a.subTo(c, a);\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) c.subTo(a, c);\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if (d.compareTo(m) >= 0) return d.subtract(m);\n if (d.signum() < 0) d.addTo(m, d); else return d;\n if (d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n\n//(public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\n var i, x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i)\n if (x[0] == lowprimes[i]) return true;\n return false;\n }\n if (x.isEven()) return false;\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i], j = i + 1;\n while (j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while (i < j) if (m % lowprimes[i++] === 0) return false;\n }\n return x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) === 0) return false;\n }\n if (y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.fromByteArray = bnpFromByteArray;\nBigInteger.prototype.fromBuffer = bnpFromBuffer;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.toBuffer = bnToBuffer;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.eq = bnEqual;\nBigInteger.prototype.gt = bnGreater;\nBigInteger.prototype.gte = bnGreaterOrEqual;\nBigInteger.prototype.lt = bnLesser;\nBigInteger.prototype.lte = bnLesserOrEqual;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\nBigInteger.int2char = int2char;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// JSBN-specific extension\nBigInteger.prototype.square = bnSquare;\n\n//BigInteger interfaces not implemented in jsbn:\n\n//BigInteger(int signum, byte[] magnitude)\n//double doubleValue()\n//float floatValue()\n//int hashCode()\n//long longValue()\n//static BigInteger valueOf(long val)\n\nmodule.exports = BigInteger;\n",
37
- "\"use strict\";\n/**\n * SRP Group Parameters\n * http://tools.ietf.org/html/rfc5054#appendix-A\n *\n * The 1024-, 1536-, and 2048-bit groups are taken from software\n * developed by Tom Wu and Eugene Jhong for the Stanford SRP\n * distribution, and subsequently proven to be prime. The larger primes\n * are taken from [MODP], but generators have been calculated that are\n * primitive roots of N, unlike the generators in [MODP].\n *\n * The 1024-bit and 1536-bit groups MUST be supported.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.params = exports.hex = void 0;\n// since these are meant to be used internally, all values are numbers. If\n// you want to add parameter sets, you'll need to convert them to bignums.\nconst BigInteger = require(\"../jsbn/jsbn\");\nfunction hex(s) {\n return new BigInteger(s.split(/\\s|\\n/).join(\"\"), 16);\n}\nexports.hex = hex;\nexports.params = {\n 1024: {\n N_length_bits: 1024,\n N: hex(`\n EEAF0AB9 ADB38DD6 9C33F80A FA8FC5E8 60726187 75FF3C0B 9EA2314C\n 9C256576 D674DF74 96EA81D3 383B4813 D692C6E0 E0D5D8E2 50B98BE4\n 8E495C1D 6089DAD1 5DC7D7B4 6154D6B6 CE8EF4AD 69B15D49 82559B29\n 7BCF1885 C529F566 660E57EC 68EDBC3C 05726CC0 2FD4CBF4 976EAA9A\n FD5138FE 8376435B 9FC61D2F C0EB06E3\n `),\n g: hex(\"02\"),\n hash: \"sha1\",\n },\n 1536: {\n N_length_bits: 1536,\n N: hex(`\n 9DEF3CAF B939277A B1F12A86 17A47BBB DBA51DF4 99AC4C80 BEEEA961\n 4B19CC4D 5F4F5F55 6E27CBDE 51C6A94B E4607A29 1558903B A0D0F843\n 80B655BB 9A22E8DC DF028A7C EC67F0D0 8134B1C8 B9798914 9B609E0B\n E3BAB63D 47548381 DBC5B1FC 764E3F4B 53DD9DA1 158BFD3E 2B9C8CF5\n 6EDF0195 39349627 DB2FD53D 24B7C486 65772E43 7D6C7F8C E442734A\n F7CCB7AE 837C264A E3A9BEB8 7F8A2FE9 B8B5292E 5A021FFF 5E91479E\n 8CE7A28C 2442C6F3 15180F93 499A234D CF76E3FE D135F9BB\n `),\n g: hex(\"02\"),\n hash: \"sha1\",\n },\n 2048: {\n N_length_bits: 2048,\n N: hex(`\n AC6BDB41 324A9A9B F166DE5E 1389582F AF72B665 1987EE07 FC319294\n 3DB56050 A37329CB B4A099ED 8193E075 7767A13D D52312AB 4B03310D\n CD7F48A9 DA04FD50 E8083969 EDB767B0 CF609517 9A163AB3 661A05FB\n D5FAAAE8 2918A996 2F0B93B8 55F97993 EC975EEA A80D740A DBF4FF74\n 7359D041 D5C33EA7 1D281E44 6B14773B CA97B43A 23FB8016 76BD207A\n 436C6481 F1D2B907 8717461A 5B9D32E6 88F87748 544523B5 24B0D57D\n 5EA77A27 75D2ECFA 032CFBDB F52FB378 61602790 04E57AE6 AF874E73\n 03CE5329 9CCC041C 7BC308D8 2A5698F3 A8D0C382 71AE35F8 E9DBFBB6\n 94B5C803 D89F7AE4 35DE236D 525F5475 9B65E372 FCD68EF2 0FA7111F\n 9E4AFF73\n `),\n g: hex(\"02\"),\n hash: \"sha256\",\n },\n 3072: {\n N_length_bits: 3072,\n N: hex(`\n FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08\n 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B\n 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9\n A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6\n 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8\n FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D\n 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C\n 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718\n 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D\n 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D\n B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226\n 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C\n BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC\n E0FD108E 4B82D120 A93AD2CA FFFFFFFF FFFFFFFF\n `),\n g: hex(\"05\"),\n hash: \"sha256\",\n },\n hap: {\n N_length_bits: 3072,\n N: hex(`\n FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08\n 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B\n 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9\n A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6\n 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8\n FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D\n 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C\n 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718\n 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D\n 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D\n B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226\n 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C\n BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC\n E0FD108E 4B82D120 A93AD2CA FFFFFFFF FFFFFFFF\n `),\n g: hex(\"05\"),\n hash: \"sha512\",\n },\n 4096: {\n N_length_bits: 4096,\n N: hex(`\n FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08\n 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B\n 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9\n A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6\n 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8\n FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D\n 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C\n 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718\n 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D\n 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D\n B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226\n 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C\n BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC\n E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26\n 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB\n 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2\n 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127\n D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34063199\n FFFFFFFF FFFFFFFF\n `),\n g: hex(\"05\"),\n hash: \"sha256\",\n },\n 6244: {\n N_length_bits: 6244,\n N: hex(`\n FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08\n 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B\n 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9\n A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6\n 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8\n FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D\n 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C\n 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718\n 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D\n 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D\n B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226\n 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C\n BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC\n E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26\n 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB\n 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2\n 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127\n D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492\n 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406\n AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918\n DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151\n 2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03\n F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F\n BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA\n CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B\n B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632\n 387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E\n 6DCC4024 FFFFFFFF FFFFFFFF\n `),\n g: hex(\"05\"),\n hash: \"sha256\",\n },\n 8192: {\n N_length_bits: 8192,\n N: hex(`\n FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08\n 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B\n 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9\n A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6\n 49286651 ECE45B3D C2007CB8 A163BF05 98DA4836 1C55D39A 69163FA8\n FD24CF5F 83655D23 DCA3AD96 1C62F356 208552BB 9ED52907 7096966D\n 670C354E 4ABC9804 F1746C08 CA18217C 32905E46 2E36CE3B E39E772C\n 180E8603 9B2783A2 EC07A28F B5C55DF0 6F4C52C9 DE2BCBF6 95581718\n 3995497C EA956AE5 15D22618 98FA0510 15728E5A 8AAAC42D AD33170D\n 04507A33 A85521AB DF1CBA64 ECFB8504 58DBEF0A 8AEA7157 5D060C7D\n B3970F85 A6E1E4C7 ABF5AE8C DB0933D7 1E8C94E0 4A25619D CEE3D226\n 1AD2EE6B F12FFA06 D98A0864 D8760273 3EC86A64 521F2B18 177B200C\n BBE11757 7A615D6C 770988C0 BAD946E2 08E24FA0 74E5AB31 43DB5BFC\n E0FD108E 4B82D120 A9210801 1A723C12 A787E6D7 88719A10 BDBA5B26\n 99C32718 6AF4E23C 1A946834 B6150BDA 2583E9CA 2AD44CE8 DBBBC2DB\n 04DE8EF9 2E8EFC14 1FBECAA6 287C5947 4E6BC05D 99B2964F A090C3A2\n 233BA186 515BE7ED 1F612970 CEE2D7AF B81BDD76 2170481C D0069127\n D5B05AA9 93B4EA98 8D8FDDC1 86FFB7DC 90A6C08F 4DF435C9 34028492\n 36C3FAB4 D27C7026 C1D4DCB2 602646DE C9751E76 3DBA37BD F8FF9406\n AD9E530E E5DB382F 413001AE B06A53ED 9027D831 179727B0 865A8918\n DA3EDBEB CF9B14ED 44CE6CBA CED4BB1B DB7F1447 E6CC254B 33205151\n 2BD7AF42 6FB8F401 378CD2BF 5983CA01 C64B92EC F032EA15 D1721D03\n F482D7CE 6E74FEF6 D55E702F 46980C82 B5A84031 900B1C9E 59E7C97F\n BEC7E8F3 23A97A7E 36CC88BE 0F1D45B7 FF585AC5 4BD407B2 2B4154AA\n CC8F6D7E BF48E1D8 14CC5ED2 0F8037E0 A79715EE F29BE328 06A1D58B\n B7C5DA76 F550AA3D 8A1FBFF0 EB19CCB1 A313D55C DA56C9EC 2EF29632\n 387FE8D7 6E3C0468 043E8F66 3F4860EE 12BF2D5B 0B7474D6 E694F91E\n 6DBE1159 74A3926F 12FEE5E4 38777CB6 A932DF8C D8BEC4D0 73B931BA\n 3BC832B6 8D9DD300 741FA7BF 8AFC47ED 2576F693 6BA42466 3AAB639C\n 5AE4F568 3423B474 2BF1C978 238F16CB E39D652D E3FDB8BE FC848AD9\n 22222E04 A4037C07 13EB57A8 1A23F0C7 3473FC64 6CEA306B 4BCBC886\n 2F8385DD FA9D4B7F A2C087E8 79683303 ED5BDD3A 062B3CF5 B3A278A6\n 6D2A13F8 3F44F82D DF310EE0 74AB6A36 4597E899 A0255DC1 64F31CC5\n 0846851D F9AB4819 5DED7EA1 B1D510BD 7EE74D73 FAF36BC3 1ECFA268\n 359046F4 EB879F92 4009438B 481C6CD7 889A002E D5EE382B C9190DA6\n FC026E47 9558E447 5677E9AA 9E3050E2 765694DF C81F56E8 80B96E71\n 60C980DD 98EDD3DF FFFFFFFF FFFFFFFF\n `),\n g: hex(\"13\"),\n hash: \"sha256\",\n },\n};\nexports.default = exports.params;\n//# sourceMappingURL=params.js.map",
38
- "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SrpServer = exports.SrpClient = exports.SRP = void 0;\nconst crypto_1 = __importDefault(require(\"crypto\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst BigInteger = require(\"../jsbn/jsbn\");\nconst params_1 = require(\"./params\");\nconst zero = new BigInteger(0, 10);\nfunction assert_(val, msg) {\n if (!val) {\n throw new Error(msg || \"assertion\");\n }\n}\nfunction assertIsBuffer(arg, argname = \"arg\") {\n assert_(Buffer.isBuffer(arg), `Type error: ${argname} must be a buffer`);\n}\nfunction assertIsBigInteger(arg, argname = \"arg\") {\n assert_(arg instanceof BigInteger, `Type error: ${argname} must be a BigInteger`);\n}\n/**\n * If a conversion is explicitly specified with the operator PAD(),\n * the integer will first be implicitly converted, then the resultant\n * byte-string will be left-padded with zeros (if necessary) until its\n * length equals the implicitly-converted length of N.\n *\n * @param {Buffer} n Number to pad\n * @param {number} len Length of the resulting Buffer\n * @return {Buffer}\n */\nfunction padTo(n, len) {\n assertIsBuffer(n, \"n\");\n const padding = len - n.length;\n assert_(padding > -1, \"Negative padding. Very uncomfortable.\");\n const result = Buffer.alloc(len);\n result.fill(0, 0, padding);\n n.copy(result, padding);\n assert_1.default.strictEqual(result.length, len);\n return result;\n}\nfunction padToN(number, params) {\n assertIsBigInteger(number);\n const n = number.toString(16).length % 2 !== 0 ? \"0\" + number.toString(16) : number.toString(16);\n return padTo(Buffer.from(n, \"hex\"), params.N_length_bits / 8);\n}\n/**\n * Compute the intermediate value x as a hash of three buffers:\n * salt, identity, and password. And a colon. FOUR buffers.\n *\n * x = H(s | H(I | \":\" | P))\n *\n * @param {object} params\n * @param {Buffer} salt\n * @param {Buffer} I User identity\n * @param {Buffer} P User password\n * @return {BigInteger} User secret\n */\nfunction getx(params, salt, I, P) {\n assertIsBuffer(salt, \"salt (salt)\");\n assertIsBuffer(I, \"identity (I)\");\n assertIsBuffer(P, \"password (P)\");\n const hashIP = crypto_1.default.createHash(params.hash)\n .update(Buffer.concat([I, Buffer.from(\":\"), P]))\n .digest();\n const hashX = crypto_1.default.createHash(params.hash)\n .update(salt)\n .update(hashIP)\n .digest();\n return new BigInteger(hashX);\n}\nclass SRP {\n /**\n * The verifier is calculated as described in Section 3 of [SRP-RFC].\n * We give the algorithm here for convenience.\n *\n * The verifier (v) is computed based on the salt (s), user name (I),\n * password (P), and group parameters (N, g).\n *\n * x = H(s | H(I | \":\" | P))\n * v = g^x % N\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @param {Buffer} salt\n * @param {Buffer} I User identity\n * @param {Buffer} P User password\n * @return {Buffer}\n */\n static computeVerifier(params, salt, I, P) {\n assertIsBuffer(salt, \"salt (salt)\");\n assertIsBuffer(I, \"identity (I)\");\n assertIsBuffer(P, \"password (P)\");\n const v_num = params.g.modPow(getx(params, salt, I, P), params.N);\n return v_num.toBuffer(params.N_length_bits / 8);\n }\n static genKey(bytes = 32, callback) {\n // bytes is optional\n if (typeof bytes !== \"number\") {\n callback = bytes;\n bytes = 32;\n }\n if (!callback) {\n return new Promise((rs, rj) => SRP.genKey(bytes, (err, data) => err ? rj(err) : rs(data)));\n }\n crypto_1.default.randomBytes(bytes, (err, buf) => {\n if (err) {\n return callback(err, null);\n }\n return callback(null, buf);\n });\n }\n}\nexports.SRP = SRP;\nSRP.params = params_1.params;\n/**\n * Calculate the SRP-6 multiplier.\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @return {BigInteger}\n */\nfunction getk(params) {\n const k_buf = crypto_1.default\n .createHash(params.hash)\n .update(padToN(params.N, params))\n .update(padToN(params.g, params))\n .digest();\n return new BigInteger(k_buf);\n}\n/**\n * The server key exchange message also contains the server's public\n * value (B). The server calculates this value as B = k*v + g^b % N,\n * where b is a random number that SHOULD be at least 256 bits in length\n * and k = H(N | PAD(g)).\n *\n * Note: as the tests imply, the entire expression is mod N.\n *\n * @param {SrpParams} params Group parameters, with .N, .g, .hash\n * @param {BigInteger} k\n * @param {BigInteger} v Verifier (stored)\n * @param {BigInteger} b Server secret exponent\n * @return {Buffer} B - The server public message\n */\nfunction getB(params, k, v, b) {\n assertIsBigInteger(v);\n assertIsBigInteger(k);\n assertIsBigInteger(b);\n const r = k.multiply(v).add(params.g.modPow(b, params.N)).mod(params.N);\n return r.toBuffer(params.N_length_bits / 8);\n}\n/**\n * The client key exchange message carries the client's public value\n * (A). The client calculates this value as A = g^a % N, where a is a\n * random number that SHOULD be at least 256 bits in length.\n *\n * Note: for this implementation, we take that to mean 256/8 bytes.\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @param {BigInteger} a_num Client secret exponent\n * @return {Buffer} A - The client public message\n */\nfunction getA(params, a_num) {\n assertIsBigInteger(a_num);\n if (Math.ceil(a_num.toString(16).length / 2) < 32) {\n console.warn(\"getA: client key length %d is less than the recommended 256 bits\", a_num.bitLength());\n }\n return params.g.modPow(a_num, params.N).toBuffer(params.N_length_bits / 8);\n}\n/**\n * getu() hashes the two public messages together, to obtain a scrambling\n * parameter \"u\" which cannot be predicted by either party ahead of time.\n * This makes it safe to use the message ordering defined in the SRP-6a\n * paper, in which the server reveals their \"B\" value before the client\n * commits to their \"A\" value.\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @param {Buffer} A Client ephemeral public key\n * @param {Buffer} B Server ephemeral public key\n * @return {BigInteger} u - Shared scrambling parameter\n */\nfunction getu(params, A, B) {\n assertIsBuffer(A, \"A\");\n assertIsBuffer(B, \"B\");\n const u_buf = crypto_1.default.createHash(params.hash)\n .update(padTo(A, params.N_length_bits / 8))\n .update(padTo(B, params.N_length_bits / 8))\n .digest();\n return new BigInteger(u_buf);\n}\n/**\n * The TLS premaster secret as calculated by the client\n *\n * @param {SrpParams} params Group parameters, with .N, .g, .hash\n * @param {BigInteger} k_num\n * @param {BigInteger} x_num\n * @param {BigInteger} a_num\n * @param {BigInteger} B_num\n * @param {BigInteger} u_num\n * @return {Buffer}\n */\nfunction client_getS(params, k_num, x_num, a_num, B_num, u_num) {\n assertIsBigInteger(k_num);\n assertIsBigInteger(x_num);\n assertIsBigInteger(a_num);\n assertIsBigInteger(B_num);\n assertIsBigInteger(u_num);\n if ((zero.compareTo(B_num) >= 0) || (params.N.compareTo(B_num) <= 0)) {\n throw new Error(\"invalid server-supplied \\\"B\\\", must be 1..N-1\");\n }\n const S_num = B_num.subtract(k_num.multiply(params.g.modPow(x_num, params.N)))\n .modPow(a_num.add(u_num.multiply(x_num)), params.N)\n .mod(params.N);\n return S_num.toBuffer(params.N_length_bits / 8);\n}\n/**\n * The TLS premastersecret as calculated by the server\n *\n * @param {BigInteger} params Group parameters, with .N, .g, .hash\n * @param {BigInteger} v_num Verifier (stored on server)\n * @param {BigInteger} A_num Ephemeral client public key (read from client)\n * @param {BigInteger} b_num Server ephemeral private key (generated for session)\n * @param {BigInteger} u_num {@see getu}\n * @return {Buffer}\n */\nfunction server_getS(params, v_num, A_num, b_num, u_num) {\n assertIsBigInteger(v_num);\n assertIsBigInteger(A_num);\n assertIsBigInteger(b_num);\n assertIsBigInteger(u_num);\n if ((zero.compareTo(A_num) >= 0) || (params.N.compareTo(A_num) <= 0)) {\n throw new Error(\"invalid client-supplied \\\"A\\\", must be 1..N-1\");\n }\n const S_num = A_num.multiply(v_num.modPow(u_num, params.N))\n .modPow(b_num, params.N)\n .mod(params.N);\n return S_num.toBuffer(params.N_length_bits / 8);\n}\n/**\n * Compute the shared session key K from S\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @param {Buffer} S_buf Session key\n * @return {Buffer}\n */\nfunction getK(params, S_buf) {\n assertIsBuffer(S_buf, \"S\");\n if (params.hash === \"sha1\") {\n // use t_mgf1 interleave for short sha1 hashes\n return Buffer.concat([\n crypto_1.default.createHash(params.hash).update(S_buf).update(Buffer.from([0, 0, 0, 0])).digest(),\n crypto_1.default.createHash(params.hash).update(S_buf).update(Buffer.from([0, 0, 0, 1])).digest(),\n ]);\n }\n else {\n // use hash as-is otherwise\n return crypto_1.default.createHash(params.hash).update(S_buf).digest();\n }\n}\nfunction getM1(params, u_buf, s_buf, A_buf, B_buf, K_buf) {\n if (arguments.length > 4) {\n assertIsBuffer(u_buf, \"identity (I)\");\n assertIsBuffer(s_buf, \"salt (s)\");\n assertIsBuffer(A_buf, \"client public key (A)\");\n assertIsBuffer(B_buf, \"server public key (B)\");\n assertIsBuffer(K_buf, \"session key (K)\");\n const hN = crypto_1.default.createHash(params.hash).update(params.N.toBuffer(true)).digest();\n const hG = crypto_1.default.createHash(params.hash).update(params.g.toBuffer(true)).digest();\n for (let i = 0; i < hN.length; i++) {\n hN[i] ^= hG[i];\n }\n const hU = crypto_1.default.createHash(params.hash).update(u_buf).digest();\n return crypto_1.default.createHash(params.hash)\n .update(hN).update(hU).update(s_buf)\n .update(A_buf).update(B_buf).update(K_buf)\n .digest();\n }\n else {\n [A_buf, B_buf, s_buf] = [u_buf, s_buf, A_buf];\n assertIsBuffer(A_buf, \"A\");\n assertIsBuffer(B_buf, \"B\");\n assertIsBuffer(s_buf, \"S\");\n return crypto_1.default.createHash(params.hash)\n .update(A_buf).update(B_buf).update(s_buf)\n .digest();\n }\n}\nfunction getM2(params, A_buf, M1_buf, K_buf) {\n assertIsBuffer(A_buf, \"A\");\n assertIsBuffer(M1_buf, \"M1\");\n assertIsBuffer(K_buf, \"K\");\n return crypto_1.default.createHash(params.hash)\n .update(A_buf).update(M1_buf).update(K_buf)\n .digest();\n}\nfunction equal(buf1, buf2) {\n // constant-time comparison. A drop in the ocean compared to our\n // non-constant-time modexp operations, but still good practice.\n return buf1.toString(\"hex\") === buf2.toString(\"hex\");\n}\nclass SrpClient {\n /**\n * Create an SRP client.\n *\n * @param {object} params Group parameters, with .N, .g, .hash\n * @param {Buffer} salt_buf User salt (from server)\n * @param {Buffer} identity_buf Identity/username\n * @param {Buffer} password_buf Password\n * @param {Buffer} secret1_buf Client private key {@see genKey}\n * @param {boolean} hap\n */\n constructor(params, salt_buf, identity_buf, password_buf, secret1_buf, hap = true) {\n assertIsBuffer(salt_buf, \"salt (s)\");\n assertIsBuffer(identity_buf, \"identity (I)\");\n assertIsBuffer(password_buf, \"password (P)\");\n assertIsBuffer(secret1_buf, \"secret1\");\n this._params = params;\n this._k = getk(params);\n this._x = getx(params, salt_buf, identity_buf, password_buf);\n this._a = new BigInteger(secret1_buf);\n if (hap) {\n this._I = identity_buf;\n this._s = salt_buf;\n }\n this._A = getA(params, this._a);\n }\n /**\n * Returns the client's public key (A).\n *\n * @return {Buffer}\n */\n computeA() {\n return this._A;\n }\n /**\n * Sets the server's public key (B).\n *\n * @param {Buffer} B_buf The server's public key\n */\n setB(B_buf) {\n const u_num = getu(this._params, this._A, B_buf);\n const S_buf_x = client_getS(this._params, this._k, this._x, this._a, new BigInteger(B_buf), u_num);\n this._K = getK(this._params, S_buf_x);\n this._u = u_num; // only for tests\n this._S = S_buf_x; // only for tests\n this._B = B_buf;\n if (this._I && this._s) {\n this._M1 = getM1(this._params, this._I, this._s, this._A, this._B, this._K);\n }\n else {\n this._M1 = getM1(this._params, this._A, this._B, this._S);\n }\n this._M2 = getM2(this._params, this._A, this._M1, this._K);\n }\n /**\n * Gets the M1 value.\n * This requires setting the server's public key {@see Client.setB}.\n *\n * @return {Buffer}\n */\n computeM1() {\n if (this._M1 === undefined) {\n throw new Error(\"incomplete protocol\");\n }\n return this._M1;\n }\n /**\n * Checks the server was able to calculate M2.\n * This requires setting the server's public key {@see Client.setB}.\n *\n * @param M2 The server's M2 value\n */\n checkM2(M2) {\n if (!equal(this._M2, M2)) {\n throw new Error(\"server is not authentic\");\n }\n }\n /**\n * Returns the shared session key.\n *\n * @return {Buffer}\n */\n computeK() {\n if (this._K === undefined) {\n throw new Error(\"incomplete protocol\");\n }\n return this._K;\n }\n}\nexports.SrpClient = SrpClient;\nclass SrpServer {\n constructor(params, salt_buf, identity_buf, password_buf, secret2_buf) {\n this._params = params;\n this._k = getk(params);\n if (arguments.length > 3) {\n assertIsBuffer(salt_buf, \"salt (salt)\");\n assertIsBuffer(identity_buf, \"identity (I)\");\n assertIsBuffer(password_buf, \"password (P)\");\n assertIsBuffer(secret2_buf, \"secret2\");\n this._b = new BigInteger(secret2_buf);\n this._v = new BigInteger(SRP.computeVerifier(params, salt_buf, identity_buf, password_buf));\n this._I = identity_buf;\n this._s = salt_buf;\n }\n else if (salt_buf instanceof Buffer) {\n const verifier_buf = salt_buf;\n // noinspection JSUnusedAssignment\n [secret2_buf, salt_buf, identity_buf, password_buf] = [identity_buf, undefined, undefined, undefined];\n assertIsBuffer(verifier_buf, \"verifier (v)\");\n assertIsBuffer(secret2_buf, \"secret2\");\n this._b = new BigInteger(secret2_buf);\n this._v = new BigInteger(verifier_buf);\n }\n else {\n const identity = salt_buf;\n // noinspection JSUnusedAssignment\n [secret2_buf, salt_buf, identity_buf, password_buf] = [identity_buf, undefined, undefined, undefined];\n // noinspection SuspiciousTypeOfGuard\n (0, assert_1.default)(identity.username instanceof Buffer || typeof identity.username === \"string\", \"identity.username (I) must be a string or Buffer\");\n assertIsBuffer(identity.salt, \"identity.salt (s)\");\n (0, assert_1.default)(\"password\" in identity || \"verifier\" in identity, \"identity requires a password or verifier\");\n if (\"verifier\" in identity) {\n assertIsBuffer(identity.verifier, \"identity.verifier (v)\");\n }\n else {\n // noinspection SuspiciousTypeOfGuard\n (0, assert_1.default)(identity.password instanceof Buffer || typeof identity.password === \"string\", \"identity.password (p) must be a string or Buffer\");\n }\n assertIsBuffer(secret2_buf, \"secret2\");\n const username = typeof identity.username === \"string\" ? Buffer.from(identity.username) : identity.username;\n this._b = new BigInteger(secret2_buf);\n if (\"verifier\" in identity) {\n this._v = new BigInteger(identity.verifier);\n }\n else {\n this._v = new BigInteger(SRP.computeVerifier(params, identity.salt, username, typeof identity.password === \"string\" ? Buffer.from(identity.password) : identity.password));\n }\n this._I = username;\n this._s = identity.salt;\n }\n this._B = getB(params, this._k, this._v, this._b);\n }\n /**\n * Returns the server's public key (B).\n *\n * @return {Buffer}\n */\n computeB() {\n return this._B;\n }\n /**\n * Sets the client's public key (A).\n *\n * @param {Buffer} A The client's public key\n */\n setA(A) {\n const u_num = getu(this._params, A, this._B);\n const S_buf = server_getS(this._params, this._v, new BigInteger(A), this._b, u_num);\n this._K = getK(this._params, S_buf);\n this._u = u_num; // only for tests\n this._S = S_buf; // only for tests\n if (this._I && this._s) {\n this._M1 = getM1(this._params, this._I, this._s, A, this._B, this._K);\n }\n else {\n this._M1 = getM1(this._params, A, this._B, this._S);\n }\n this._M2 = getM2(this._params, A, this._M1, this._K);\n }\n /**\n * Checks the client was able to calculate M1.\n *\n * @param {Buffer} M1 The client's M1 value\n */\n checkM1(M1) {\n if (this._M1 === undefined) {\n throw new Error(\"incomplete protocol\");\n }\n if (!equal(this._M1, M1)) {\n throw new Error(\"client did not use the same password\");\n }\n }\n /**\n * Returns the shared session key.\n *\n * @return {Buffer}\n */\n computeK() {\n if (this._K === undefined) {\n throw new Error(\"incomplete protocol\");\n }\n return this._K;\n }\n /**\n * Gets the M2 value.\n * This requires setting the client's public key {@see Server.setA}.\n *\n * @return {Buffer}\n */\n computeM2() {\n if (this._M2 === undefined) {\n throw new Error(\"incomplete protocol\");\n }\n return this._M2;\n }\n}\nexports.SrpServer = SrpServer;\n//# sourceMappingURL=srp.js.map",
39
- "(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",
40
- "import{createCipher as te,createDecipher as ne}from\"chacha\";var q=12;function A(e,n,r,o,t){n=$(n);let s=ne(e,n);r&&s.setAAD(r),s.setAuthTag(t);let i=s._update(o);return s._final(),i}function I(e,n,r,o){n=$(n);let t=te(e,n);r&&t.setAAD(r);let s=t._update(o);t._final();let i=t.getAuthTag();return{ciphertext:s,authTag:i}}function $(e){if(e.length>=q)return e;return Buffer.concat([Buffer.alloc(q-e.length,0),e])}import{randomBytes as se}from\"node:crypto\";import{x25519 as z}from\"@noble/curves/ed25519.js\";function T(){let e=se(32);return{publicKey:z.getPublicKey(e),secretKey:e}}function k(e,n){return z.getSharedSecret(e,n)}import{hkdfSync as oe}from\"node:crypto\";function x(e){return Buffer.from(oe(e.hash,e.key,e.salt,e.info,e.length))}import ae from\"node-dns-sd\";import{createInterface as ie}from\"node:readline\";var fe=ie({input:process.stdin,output:process.stdout});function H(...e){console.debug(\"\\x1B[36m[debug]\\x1B[39m\",...e)}async function Ue(e){return await new Promise((n)=>fe.question(`${e}: `,n))}async function Y(e){return new Promise((n)=>setTimeout(n,e))}var L=\"3939\",De=15000,W=\"_airplay._tcp.local\",X=\"_companion-link._tcp.local\",Z=\"_raop._tcp.local\";class B{#e;constructor(e){this.#e=e}async find(){return await ae.discover({name:this.#e})}async findUntil(e,n=10,r=1000){while(n>0){let o=await this.find(),t=o.find((s)=>s.fqdn===e);if(t)return t;if(console.log(),console.log(`Device not found, retrying in ${r}ms...`),console.log(o.map((s)=>` ● ${s.fqdn}`).join(`\n`)),n--,n===0)throw Error(\"Device not found after serveral tries, aborting.\");await Y(r)}}static airplay(){return new B(W)}static companionLink(){return new B(X)}static raop(){return new B(Z)}}class U extends Number{size;constructor(e,n){super(e);this.size=n}}function J(e,n){return new U(e,n)}class C{value;constructor(e){this.value=e}}function ce(e){return new C(e)}class D{value;constructor(e){this.value=e}}function ue(e){return new D(e)}function l(e){let n=e.reduce((t,s)=>t+s.length,0),r=new Uint8Array(n),o=0;for(let t of e)r.set(t,o),o+=t.length;return r}function a(e){return Uint8Array.of(e)}function y(e,n){let r=new Uint8Array(n),o=BigInt(e);for(let t=0;t<n;t++)r[t]=Number(o&0xffn),o>>=8n;return r}function g(e){let n=e.reduce((t,s)=>t+s.length,0),r=new Uint8Array(n),o=0;for(let t of e)r.set(t,o),o+=t.length;return r}function R(e){return M(e,[])}function M(e,n){let r=null;if(e===null||e===void 0)r=a(4);else if(typeof e===\"boolean\")r=a(e?1:2);else if(e instanceof C){let t=new ArrayBuffer(8);new DataView(t).setFloat64(0,e.value,!0),r=l([a(54),new Uint8Array(t)])}else if(e instanceof D){let t=e.value;if(t<40)r=a(8+t);else if(t<=255)r=g([a(48),y(t,1)]);else if(t<=65535)r=g([a(49),y(t,2)]);else if(t<=4294967295)r=g([a(50),y(t,4)]);else r=g([a(51),y(t,8)])}else if(typeof e===\"number\")if(!Number.isInteger(e)){let t=new ArrayBuffer(8);new DataView(t).setFloat64(0,e,!0),r=l([a(54),new Uint8Array(t)])}else if(e<40)r=a(8+e);else if(e<=255)r=l([a(48),y(e,1)]);else if(e<=65535)r=l([a(49),y(e,2)]);else if(e<=4294967295)r=l([a(50),y(e,4)]);else r=l([a(51),y(e,8)]);else if(e instanceof U)r=l([a(48+Math.log2(e.size)),y(e.valueOf(),e.size)]);else if(typeof e===\"string\"){let t=new TextEncoder().encode(e),s=t.length;if(s<=32)r=l([a(64+s),t]);else if(s<=255)r=l([a(97),y(s,1),t]);else if(s<=65535)r=l([a(98),y(s,2),t]);else if(s<=16777215)r=l([a(99),y(s,3),t]);else r=l([a(100),y(s,4),t])}else if(e instanceof Uint8Array||Buffer.isBuffer(e)){let t=e instanceof Uint8Array?e:new Uint8Array(e),s=t.length;if(s<=32)r=l([a(112+s),t]);else if(s<=255)r=l([a(145),y(s,1),t]);else if(s<=65535)r=l([a(146),y(s,2),t]);else r=l([a(147),y(s,4),t])}else if(Array.isArray(e)){let t=l(e.map((i)=>M(i,n))),s=e.length;if(s<=15){if(r=l([a(208+s),t]),s>=15)r=l([r,a(3)])}else r=l([a(223),t,a(3)])}else if(typeof e===\"object\"){let t=Object.keys(e),s=t.length,i=[];for(let u of t)i.push(M(u,n)),i.push(M(e[u],n));let f;if(s<=15)f=a(224+s);else f=a(239);if(r=g([f,g(i)]),s>=15||n.some((u)=>u===r))r=g([r,a(129)])}else throw TypeError(typeof e);let o=n.findIndex((t)=>t.length===r.length&&t.every((s,i)=>s===r[i]));if(o>=0)if(o<33)r=a(160+o);else if(o<=255)r=l([a(193),y(o,1)]);else if(o<=65535)r=l([a(194),y(o,2)]);else if(o<=4294967295)r=l([a(195),y(o,4)]);else r=l([a(196),y(o,8)]);else if(r.length>1)n.push(r);return r}function le(e){return P(e,[])}function ye(e,n){if(e.length<n)throw TypeError(`Not enough data: need ${n} bytes, have ${e.length}`)}function v(e,n,r){ye(e.subarray(n),r);let o=0n;for(let t=r-1;t>=0;t--)o=o<<8n|BigInt(e[n+t]);return Number(o)}function P(e,n){if(e.length===0)throw TypeError(\"No data to unpack\");let r=e[0],o=!0,t,s;if(r===1)t=!0,s=e.subarray(1);else if(r===2)t=!1,s=e.subarray(1);else if(r===4)t=null,s=e.subarray(1);else if(r===5)t=e.subarray(1,17),s=e.subarray(17);else if(r===6)t=v(e,1,8),s=e.subarray(9);else if(r>=8&&r<=47)t=r-8,s=e.subarray(1);else if(r===53)t=new DataView(e.buffer,e.byteOffset+1,4).getFloat32(0,!0),s=e.subarray(5);else if(r===54)t=new DataView(e.buffer,e.byteOffset+1,8).getFloat64(0,!0),s=e.subarray(9);else if((r&240)===48){let i=2**(r&15),f=v(e,1,i);t=J(f,i),s=e.subarray(1+i)}else if(r>=64&&r<=96){let i=r-64;t=new TextDecoder().decode(e.subarray(1,1+i)),s=e.subarray(1+i)}else if(r>=97&&r<=100){let i=r&15,f=v(e,1,i);t=new TextDecoder().decode(e.subarray(1+i,1+i+f)),s=e.subarray(1+i+f)}else if(r>=112&&r<=144){let i=r-112;t=e.subarray(1,1+i),s=e.subarray(1+i)}else if(r>=145&&r<=148){let i=1<<(r&15)-1,f=v(e,1,i),u=1+i;t=e.subarray(u,u+f),s=e.subarray(u+f)}else if((r&240)===208){let i=r&15,f=e.subarray(1),u=[];if(i===15){while(f[0]!==3){let[p,m]=P(f,n);u.push(p),f=m}f=f.subarray(1)}else for(let p=0;p<i;p++){let[m,d]=P(f,n);u.push(m),f=d}t=u,s=f,o=!1}else if((r&224)===224){let i=r&15,f=e.subarray(1),u={};if(i===15){while(f[0]!==3){let[p,m]=P(f,n),[d,w]=P(m,n);u[p]=d,f=w}f=f.subarray(1)}else for(let p=0;p<i;p++){let[m,d]=P(f,n),[w,N]=P(d,n);u[m]=w,f=N}t=u,s=f,o=!1}else if(r>=160&&r<=192){let i=r-160;if(i>=n.length)throw TypeError(`Reference index ${i} out of range`);t=n[i],s=e.subarray(1),o=!1}else if(r>=193&&r<=196){let i=r-192,f=v(e,1,i);if(f>=n.length)throw TypeError(`UID ${f} out of range`);t=n[f],s=e.subarray(1+i),o=!1}else throw TypeError(`Unknown tag 0x${r.toString(16)}`);if(o)n.push(t);return[t,s]}import{parse as pe}from\"@plist/binary.parse\";import{serialize as me}from\"@plist/binary.serialize\";var V={TransientPairing:16},F={PairSetup:0,PairSetupWithAuth:1,PairVerify:2,AddPairing:3,RemovePairing:4,ListPairing:5},b={M1:1,M2:2,M3:3,M4:4,M5:5,M6:6},c={Method:0,Identifier:1,Salt:2,PublicKey:3,Proof:4,EncryptedData:5,State:6,Error:7,BackOff:8,Certificate:9,Signature:10,Permissions:11,FragmentData:12,FragmentLast:13,Name:17,Flags:19};function O(e){if(e.has(c.BackOff)){let n=e.get(c.BackOff),r=n.readUintLE(0,n.length);throw Error(`Device is busy, try again in ${r} seconds.`)}if(e.has(c.Error))throw Error(`Device returned an error code: ${e.get(c.Error).readUint8()}`);throw console.error(e),Error(\"Invalid response\")}function h(e){let n=[];for(let[r,o]of e){let t;if(typeof o===\"number\")t=Buffer.from([o]);else t=o;let s=0;do{let i=Math.min(t.length-s,255);if(n.push(r,i),i>0)for(let f=0;f<i;f++)n.push(t[s+f]);s+=i}while(s<t.length)}return Buffer.from(n)}function S(e){let n=new Map,r=0;while(r<e.length){let o=e[r++],t=e[r++],s=new Uint8Array(e).slice(r,r+t);r+=t;let i=n.get(o);if(i)n.set(o,Buffer.concat([i,s]));else n.set(o,Buffer.from(s))}return n}import{networkInterfaces as de}from\"node:os\";function Q(){let e=de();for(let n of Object.keys(e)){let r=e[n];if(!r)continue;for(let o of r){if(o.internal||o.family!==\"IPv4\")continue;if(o.address&&o.address!==\"127.0.0.1\")return o.address}}return null}import{networkInterfaces as xe}from\"node:os\";function G(){let e=xe();for(let n of Object.keys(e)){let r=e[n];if(!r)continue;for(let o of r){if(o.internal||o.family!==\"IPv4\")continue;if(o.mac&&o.mac!==\"00:00:00:00:00:00\")return o.mac.toUpperCase()}}return null}import{EventEmitter as he}from\"node:events\";class _ extends he{get address(){return this.#e}get port(){return this.#r}#e;#r;constructor(e,n){super();this.#e=e,this.#r=n}async connect(){}async disconnect(){}}import{SRP as j,SrpClient as ge}from\"fast-srp-hap\";import{v4 as Pe}from\"uuid\";import K from\"tweetnacl\";class ee{#e;#r;#n;#s;#o;#t;constructor(e){this.#e=\"basmilius/apple-protocols\",this.#r=Buffer.from(Pe().toUpperCase()),this.#n=e}async start(){let e=K.sign.keyPair();this.#s=Buffer.from(e.publicKey),this.#o=Buffer.from(e.secretKey)}async pin(e){let n=await this.m1(),r=await this.m2(n,await e()),o=await this.m3(r),t=await this.m4(o),s=await this.m5(t),i=await this.m6(t,s);if(!i)throw Error(\"Pairing failed, could not get accessory keys.\");return i}async transient(){let e=await this.m1([[c.Flags,V.TransientPairing]]),n=await this.m2(e),r=await this.m3(n),o=await this.m4(r),t=x({hash:\"sha512\",key:o.sharedSecret,length:32,salt:Buffer.from(\"Control-Salt\"),info:Buffer.from(\"Control-Read-Encryption-Key\")}),s=x({hash:\"sha512\",key:o.sharedSecret,length:32,salt:Buffer.from(\"Control-Salt\"),info:Buffer.from(\"Control-Write-Encryption-Key\")});return{pairingId:this.#r,sharedSecret:o.sharedSecret,accessoryToControllerKey:t,controllerToAccessoryKey:s}}async m1(e=[]){let n=await this.#n(\"m1\",h([[c.Method,F.PairSetup],[c.State,b.M1],...e])),r=E(n),o=r.get(c.PublicKey),t=r.get(c.Salt);return{publicKey:o,salt:t}}async m2(e,n=L){let r=await j.genKey(32);this.#t=new ge(j.params.hap,e.salt,Buffer.from(\"Pair-Setup\"),Buffer.from(n),r,!0),this.#t.setB(e.publicKey);let o=this.#t.computeA(),t=this.#t.computeM1();return{publicKey:o,proof:t}}async m3(e){let n=await this.#n(\"m3\",h([[c.State,b.M3],[c.PublicKey,e.publicKey],[c.Proof,e.proof]]));return{serverProof:E(n).get(c.Proof)}}async m4(e){return this.#t.checkM2(e.serverProof),{sharedSecret:this.#t.computeK()}}async m5(e){let n=x({hash:\"sha512\",key:e.sharedSecret,length:32,salt:Buffer.from(\"Pair-Setup-Controller-Sign-Salt\",\"utf8\"),info:Buffer.from(\"Pair-Setup-Controller-Sign-Info\",\"utf8\")}),r=x({hash:\"sha512\",key:e.sharedSecret,length:32,salt:Buffer.from(\"Pair-Setup-Encrypt-Salt\",\"utf8\"),info:Buffer.from(\"Pair-Setup-Encrypt-Info\",\"utf8\")}),o=Buffer.concat([n,this.#r,this.#s]),t=K.sign.detached(o,this.#o),s=h([[c.Identifier,this.#r],[c.PublicKey,this.#s],[c.Signature,Buffer.from(t)],[c.Name,Buffer.from(R({name:this.#e}))]]),{authTag:i,ciphertext:f}=I(r,Buffer.from(\"PS-Msg05\"),null,s),u=Buffer.concat([f,i]),p=await this.#n(\"m5\",h([[c.State,b.M5],[c.EncryptedData,u]])),d=E(p).get(c.EncryptedData),w=d.subarray(0,-16);return{authTag:d.subarray(-16),data:w,sessionKey:r}}async m6(e,n){let r=A(n.sessionKey,Buffer.from(\"PS-Msg06\"),null,n.data,n.authTag),o=S(r),t=o.get(c.Identifier),s=o.get(c.PublicKey),i=o.get(c.Signature),f=x({hash:\"sha512\",key:e.sharedSecret,length:32,salt:Buffer.from(\"Pair-Setup-Accessory-Sign-Salt\"),info:Buffer.from(\"Pair-Setup-Accessory-Sign-Info\")}),u=Buffer.concat([f,t,s]);if(!K.sign.detached.verify(u,i,s))throw Error(\"Invalid accessory signature.\");return{accessoryIdentifier:t.toString(),accessoryLongTermPublicKey:s,pairingId:this.#r,publicKey:this.#s,secretKey:this.#o}}}class re{#e;#r;constructor(e){this.#e=T(),this.#r=e}async start(e){let n=await this.#n(),r=await this.#s(e.accessoryIdentifier,e.accessoryLongTermPublicKey,n);return await this.#o(e.pairingId,e.secretKey,r),await this.#t(r,e.pairingId)}async#n(){let e=await this.#r(\"m1\",h([[c.State,b.M1],[c.PublicKey,Buffer.from(this.#e.publicKey)]])),n=E(e),r=n.get(c.PublicKey);return{encryptedData:n.get(c.EncryptedData),serverPublicKey:r}}async#s(e,n,r){let o=Buffer.from(k(this.#e.secretKey,r.serverPublicKey)),t=x({hash:\"sha512\",key:o,length:32,salt:Buffer.from(\"Pair-Verify-Encrypt-Salt\"),info:Buffer.from(\"Pair-Verify-Encrypt-Info\")}),s=r.encryptedData.subarray(0,-16),i=r.encryptedData.subarray(-16),f=A(t,Buffer.from(\"PV-Msg02\"),null,s,i),u=S(f),p=u.get(c.Identifier),m=u.get(c.Signature);if(p.toString()!==e)throw Error(`Invalid accessory identifier. Expected ${p.toString()} to be ${e}.`);let d=Buffer.concat([r.serverPublicKey,p,this.#e.publicKey]);if(!K.sign.detached.verify(d,m,n))throw Error(\"Invalid accessory signature.\");return{serverEphemeralPublicKey:r.serverPublicKey,sessionKey:t,sharedSecret:o}}async#o(e,n,r){let o=Buffer.concat([this.#e.publicKey,e,r.serverEphemeralPublicKey]),t=Buffer.from(K.sign.detached(o,n)),s=h([[c.Identifier,e],[c.Signature,t]]),{authTag:i,ciphertext:f}=I(r.sessionKey,Buffer.from(\"PV-Msg03\"),null,s),u=Buffer.concat([f,i]);return await this.#r(\"m3\",h([[c.State,b.M3],[c.EncryptedData,u]])),{}}async#t(e,n){return{accessoryToControllerKey:Buffer.alloc(0),controllerToAccessoryKey:Buffer.alloc(0),pairingId:n,sharedSecret:e.sharedSecret}}}function E(e){let n=S(e);if(n.has(c.Error))O(n);return H(\"Decoded TLV\",n),n}import{v4 as Sr}from\"uuid\";export{Y as waitFor,Sr as uuid,me as serializeBinaryPlist,Ue as prompt,pe as parseBinaryPlist,J as opackSizedInt,ue as opackInt,ce as opackFloat,x as hkdf,G as getMacAddress,Q as getLocalIP,k as generateCurve25519SharedSecKey,T as generateCurve25519KeyPair,I as encryptChacha20,h as encodeTlv,R as encodeOPack,A as decryptChacha20,S as decodeTlv,le as decodeOPack,H as debug,O as bailTlv,c as TlvValue,b as TlvState,F as TlvMethod,V as TlvFlags,Z as RAOP_SERVICE,De as HTTP_TIMEOUT,B as Discovery,X as COMPANION_LINK_SERVICE,_ as BaseSocket,re as AccessoryVerify,ee as AccessoryPair,L as AIRPLAY_TRANSIENT_PIN,W as AIRPLAY_SERVICE};\n\n//# debugId=55252E7F56BA2B8064756E2164756E21\n//# sourceMappingURL=index.js.map\n",
41
- "/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n, title = '') {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(value, length, title = '') {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data, errorTitle = '') {\n if (typeof data === 'string')\n return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n/** Merges default options and passed options. */\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher(hashCons, info = {}) {\n const hashC = (msg, opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n const cr = typeof globalThis === 'object' ? globalThis.crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix) => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n//# sourceMappingURL=utils.js.map",
42
- "/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, anumber, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, concatBytes, hexToBytes, isBytes, randomBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(value, title = '') {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\" `;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n// Used in weierstrass, der\nfunction abignumber(n) {\n if (typeof n === 'bigint') {\n if (!isPosBig(n))\n throw new Error('positive bigint expected, got ' + n);\n }\n else\n anumber(n);\n return n;\n}\nexport function asafenumber(value, title = '') {\n if (!Number.isSafeInteger(value)) {\n const prefix = title && `\"${title}\" `;\n throw new Error(prefix + 'expected safe integer, got type=' + typeof value);\n }\n}\nexport function numberToHexUnpadded(num) {\n const hex = abignumber(num).toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n return hexToNumber(bytesToHex_(copyBytes(abytes_(bytes)).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n anumber(len);\n n = abignumber(n);\n const res = hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n if (res.length !== len)\n throw new Error('number too large');\n return res;\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes_(numberToHexUnpadded(abignumber(n)));\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as `TextEncoder` for ASCII or throws.\n */\nexport function asciiToBytes(ascii) {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(`string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`);\n }\n return charCode;\n });\n}\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n anumber(hashLen, 'hashLen');\n anumber(qByteLen, 'qByteLen');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n const NULL = Uint8Array.of();\n const byte0 = Uint8Array.of(0x00);\n const byte1 = Uint8Array.of(0x01);\n const _maxDrbgIters = 1000;\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...msgs) => hmacFn(k, concatBytes_(v, ...msgs)); // hmac(k)(v, ...values)\n const reseed = (seed = NULL) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(byte0, seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(byte1, seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= _maxDrbgIters)\n throw new Error('drbg: tried max amount of iterations');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes_(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\nexport function validateObject(object, fields = {}, optFields = {}) {\n if (!object || typeof object !== 'object')\n throw new Error('expected valid options object');\n function checkField(fieldName, expectedType, isOpt) {\n const val = object[fieldName];\n if (isOpt && val === undefined)\n return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt));\n iter(fields, false);\n iter(optFields, true);\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map",
43
- "/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes, anumber, bytesToNumberBE, bytesToNumberLE, numberToBytesBE, numberToBytesLE, validateObject, } from \"../utils.js\";\n// Numbers aren't used in x25519 / x448 builds\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = /* @__PURE__ */ BigInt(1), _2n = /* @__PURE__ */ BigInt(2);\n// prettier-ignore\nconst _3n = /* @__PURE__ */ BigInt(3), _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5);\n// prettier-ignore\nconst _7n = /* @__PURE__ */ BigInt(7), _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9);\nconst _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction assertIsSquare(Fp, root, n) {\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\nfunction sqrt5mod8(Fp, n) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P) {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp, n) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n)\n throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000)\n throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1)\n return sqrt3mod4;\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n if (Fp.is0(n))\n return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1)\n throw new Error('Cannot find square root');\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t))\n return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M)\n throw new Error('Cannot find square root');\n }\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n if (P % _4n === _3n)\n return sqrt3mod4;\n // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n)\n return sqrt5mod8;\n // P ≡ 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n)\n return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return Fp.ONE;\n if (power === _1n)\n return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no)\n throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined)\n anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\nclass _Field {\n ORDER;\n BITS;\n BYTES;\n isLE;\n ZERO = _0n;\n ONE = _1n;\n _lengths;\n _sqrt; // cached sqrt\n _mod;\n constructor(ORDER, opts = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength = undefined;\n this.isLE = false;\n if (opts != null && typeof opts === 'object') {\n if (typeof opts.BITS === 'number')\n _nbitLength = opts.BITS;\n if (typeof opts.sqrt === 'function')\n this.sqrt = opts.sqrt;\n if (typeof opts.isLE === 'boolean')\n this.isLE = opts.isLE;\n if (opts.allowedLengths)\n this._lengths = opts.allowedLengths?.slice();\n if (typeof opts.modFromBytes === 'boolean')\n this._mod = opts.modFromBytes;\n }\n const { nBitLength, nByteLength } = nLength(ORDER, _nbitLength);\n if (nByteLength > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n this.ORDER = ORDER;\n this.BITS = nBitLength;\n this.BYTES = nByteLength;\n this._sqrt = undefined;\n Object.preventExtensions(this);\n }\n create(num) {\n return mod(num, this.ORDER);\n }\n isValid(num) {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < this.ORDER; // 0 is valid element, but it's not invertible\n }\n is0(num) {\n return num === _0n;\n }\n // is valid and invertible\n isValidNot0(num) {\n return !this.is0(num) && this.isValid(num);\n }\n isOdd(num) {\n return (num & _1n) === _1n;\n }\n neg(num) {\n return mod(-num, this.ORDER);\n }\n eql(lhs, rhs) {\n return lhs === rhs;\n }\n sqr(num) {\n return mod(num * num, this.ORDER);\n }\n add(lhs, rhs) {\n return mod(lhs + rhs, this.ORDER);\n }\n sub(lhs, rhs) {\n return mod(lhs - rhs, this.ORDER);\n }\n mul(lhs, rhs) {\n return mod(lhs * rhs, this.ORDER);\n }\n pow(num, power) {\n return FpPow(this, num, power);\n }\n div(lhs, rhs) {\n return mod(lhs * invert(rhs, this.ORDER), this.ORDER);\n }\n // Same as above, but doesn't normalize\n sqrN(num) {\n return num * num;\n }\n addN(lhs, rhs) {\n return lhs + rhs;\n }\n subN(lhs, rhs) {\n return lhs - rhs;\n }\n mulN(lhs, rhs) {\n return lhs * rhs;\n }\n inv(num) {\n return invert(num, this.ORDER);\n }\n sqrt(num) {\n // Caching _sqrt speeds up sqrt9mod16 by 5x and tonneli-shanks by 10%\n if (!this._sqrt)\n this._sqrt = FpSqrt(this.ORDER);\n return this._sqrt(this, num);\n }\n toBytes(num) {\n return this.isLE ? numberToBytesLE(num, this.BYTES) : numberToBytesBE(num, this.BYTES);\n }\n fromBytes(bytes, skipValidation = false) {\n abytes(bytes);\n const { _lengths: allowedLengths, BYTES, isLE, ORDER, _mod: modFromBytes } = this;\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes)\n scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!this.isValid(scalar))\n throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n }\n // TODO: we don't need it here, move out to separate fn\n invertBatch(lst) {\n return FpInvertBatch(this, lst);\n }\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov(a, b, condition) {\n return condition ? b : a;\n }\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, opts = {}) {\n return new _Field(ORDER, opts);\n}\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.Point.Fn.ORDER)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n abytes(key);\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map",
44
- "/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask } from \"../utils.js\";\nimport { Field, FpInvertBatch, validateField } from \"./modular.js\";\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function negateCt(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, points) {\n const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n if (n !== _0n)\n throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n BASE;\n ZERO;\n Fn;\n bits;\n // Parametrized with a given Point class (not individual point)\n constructor(Point, bits) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n // non-const time multiplication ladder\n _unsafeLadder(elm, n, p = this.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(point, W) {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points = [];\n let p = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n))\n throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n }\n else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n)\n break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n }\n else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n getPrecomputes(W, point, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W);\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function')\n comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n cached(point, scalar, transform) {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n unsafe(point, scalar, transform, prev) {\n const W = getW(point);\n if (W === 1)\n return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P, W) {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n hasCache(elm) {\n return getW(elm) !== 1;\n }\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(Point, point, k1, k2) {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n p1 = p1.add(acc);\n if (k2 & _1n)\n p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger(c, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n const fieldN = c.Fn;\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength)\n throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12)\n windowSize = wbits - 3;\n else if (wbits > 4)\n windowSize = wbits - 2;\n else if (wbits > 0)\n windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n const fieldN = c.Fn;\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\nfunction createField(order, field, isLE) {\n if (field) {\n if (field.ORDER !== order)\n throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n }\n else {\n return Field(order, { isLE });\n }\n}\n/** Validates CURVE opts and creates fields */\nexport function createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {\n if (FpFnLE === undefined)\n FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object')\n throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h']) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b];\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\nexport function createKeygen(randomSecretKey, getPublicKey) {\n return function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n };\n}\n//# sourceMappingURL=curve.js.map",
45
- "/**\n * Montgomery curve methods. It's not really whole montgomery curve,\n * just bunch of very specific methods for X25519 / X448 from\n * [RFC 7748](https://www.rfc-editor.org/rfc/rfc7748)\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes, aInRange, bytesToNumberLE, copyBytes, numberToBytesLE, randomBytes, validateObject, } from \"../utils.js\";\nimport { createKeygen } from \"./curve.js\";\nimport { mod } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nfunction validateOpts(curve) {\n validateObject(curve, {\n adjustScalarBytes: 'function',\n powPminus2: 'function',\n });\n return Object.freeze({ ...curve });\n}\nexport function montgomery(curveDef) {\n const CURVE = validateOpts(curveDef);\n const { P, type, adjustScalarBytes, powPminus2, randomBytes: rand } = CURVE;\n const is25519 = type === 'x25519';\n if (!is25519 && type !== 'x448')\n throw new Error('invalid type');\n const randomBytes_ = rand || randomBytes;\n const montgomeryBits = is25519 ? 255 : 448;\n const fieldLen = is25519 ? 32 : 56;\n const Gu = is25519 ? BigInt(9) : BigInt(5);\n // RFC 7748 #5:\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519 and\n // (156326 - 2) / 4 = 39081 for curve448/X448\n // const a = is25519 ? 156326n : 486662n;\n const a24 = is25519 ? BigInt(121665) : BigInt(39081);\n // RFC: x25519 \"the resulting integer is of the form 2^254 plus\n // eight times a value between 0 and 2^251 - 1 (inclusive)\"\n // x448: \"2^447 plus four times a value between 0 and 2^445 - 1 (inclusive)\"\n const minScalar = is25519 ? _2n ** BigInt(254) : _2n ** BigInt(447);\n const maxAdded = is25519\n ? BigInt(8) * _2n ** BigInt(251) - _1n\n : BigInt(4) * _2n ** BigInt(445) - _1n;\n const maxScalar = minScalar + maxAdded + _1n; // (inclusive)\n const modP = (n) => mod(n, P);\n const GuBytes = encodeU(Gu);\n function encodeU(u) {\n return numberToBytesLE(modP(u), fieldLen);\n }\n function decodeU(u) {\n const _u = copyBytes(abytes(u, fieldLen, 'uCoordinate'));\n // RFC: When receiving such an array, implementations of X25519\n // (but not X448) MUST mask the most significant bit in the final byte.\n if (is25519)\n _u[31] &= 127; // 0b0111_1111\n // RFC: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime. The non-canonical\n // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224\n // - 1 through 2^448 - 1 for X448.\n return modP(bytesToNumberLE(_u));\n }\n function decodeScalar(scalar) {\n return bytesToNumberLE(adjustScalarBytes(copyBytes(abytes(scalar, fieldLen, 'scalar'))));\n }\n function scalarMult(scalar, u) {\n const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar));\n // Some public keys are useless, of low-order. Curve author doesn't think\n // it needs to be validated, but we do it nonetheless.\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n)\n throw new Error('invalid private or public key received');\n return encodeU(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n function scalarMultBase(scalar) {\n return scalarMult(scalar, GuBytes);\n }\n const getPublicKey = scalarMultBase;\n const getSharedSecret = scalarMult;\n // cswap from RFC7748 \"example code\"\n function cswap(swap, x_2, x_3) {\n // dummy = mask(swap) AND (x_2 XOR x_3)\n // Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n // and x_3, computed, e.g., as mask(swap) = 0 - swap.\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy\n x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy\n return { x_2, x_3 };\n }\n /**\n * Montgomery x-only multiplication ladder.\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u, scalar) {\n aInRange('u', u, _0n, P);\n aInRange('scalar', scalar, minScalar, maxScalar);\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n swap = k_t;\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent\n return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))\n }\n const lengths = {\n secretKey: fieldLen,\n publicKey: fieldLen,\n seed: fieldLen,\n };\n const randomSecretKey = (seed = randomBytes_(fieldLen)) => {\n abytes(seed, lengths.seed, 'seed');\n return seed;\n };\n const utils = { randomSecretKey };\n return Object.freeze({\n keygen: createKeygen(randomSecretKey, getPublicKey),\n getSharedSecret,\n getPublicKey,\n scalarMult,\n scalarMultBase,\n utils,\n GuBytes: GuBytes.slice(),\n lengths,\n });\n}\n//# sourceMappingURL=montgomery.js.map",
46
- "/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, concatBytes, hexToBytes } from '@noble/hashes/utils.js';\nimport {} from \"./abstract/curve.js\";\nimport { eddsa, edwards, PrimeEdwardsPoint, } from \"./abstract/edwards.js\";\nimport { _DST_scalar, createHasher, expand_message_xmd, } from \"./abstract/hash-to-curve.js\";\nimport { FpInvertBatch, FpSqrtEven, isNegativeLE, mod, pow2, } from \"./abstract/modular.js\";\nimport { montgomery } from \"./abstract/montgomery.js\";\nimport { createORPF } from \"./abstract/oprf.js\";\nimport { asciiToBytes, bytesToNumberLE, equalBytes } from \"./utils.js\";\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\n// P = 2n**255n - 19n\nconst ed25519_CURVE_p = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed');\n// N = 2n**252n + 27742317777372353535851937790883648493n\n// a = Fp.create(BigInt(-1))\n// d = -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))\nconst ed25519_CURVE = /* @__PURE__ */ (() => ({\n p: ed25519_CURVE_p,\n n: BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'),\n h: _8n,\n a: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec'),\n d: BigInt('0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'),\n Gx: BigInt('0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a'),\n Gy: BigInt('0x6666666666666666666666666666666666666666666666666666666666666658'),\n}))();\nfunction ed25519_pow_2_252_3(x) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ed25519_CURVE_p;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\nfunction adjustScalarBytes(bytes) {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n// √(-1) aka √(a) aka 2^((p-1)/4)\n// Fp.sqrt(Fp.neg(1))\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n// sqrt(u/v)\nfunction uvRatio(u, v) {\n const P = ed25519_CURVE_p;\n const v3 = mod(v * v * v, P); // v³\n const v7 = mod(v3 * v3 * v, P); // v⁷\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P))\n x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\nconst ed25519_Point = /* @__PURE__ */ edwards(ed25519_CURVE, { uvRatio });\nconst Fp = /* @__PURE__ */ (() => ed25519_Point.Fp)();\nconst Fn = /* @__PURE__ */ (() => ed25519_Point.Fn)();\nfunction ed25519_domain(data, ctx, phflag) {\n if (ctx.length > 255)\n throw new Error('Context is too big');\n return concatBytes(asciiToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);\n}\nfunction ed(opts) {\n return eddsa(ed25519_Point, sha512, Object.assign({ adjustScalarBytes }, opts));\n}\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * ```js\n * import { ed25519 } from '@noble/curves/ed25519.js';\n * const { secretKey, publicKey } = ed25519.keygen();\n * // const publicKey = ed25519.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello noble');\n * const sig = ed25519.sign(msg, secretKey);\n * const isValid = ed25519.verify(sig, msg, pub); // ZIP215\n * // RFC8032 / FIPS 186-5\n * const isValid2 = ed25519.verify(sig, msg, pub, { zip215: false });\n * ```\n */\nexport const ed25519 = /* @__PURE__ */ ed({});\n/** Context version of ed25519 (ctx for domain separation). See {@link ed25519} */\nexport const ed25519ctx = /* @__PURE__ */ ed({ domain: ed25519_domain });\n/** Prehashed version of ed25519. See {@link ed25519} */\nexport const ed25519ph = /* @__PURE__ */ ed({ domain: ed25519_domain, prehash: sha512 });\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * ```js\n * import { x25519 } from '@noble/curves/ed25519.js';\n * const alice = x25519.keygen();\n * const bob = x25519.keygen();\n * const shared = x25519.getSharedSecret(alice.secretKey, bob.publicKey);\n * ```\n */\nexport const x25519 = /* @__PURE__ */ (() => {\n const P = ed25519_CURVE_p;\n return montgomery({\n P,\n type: 'x25519',\n powPminus2: (x) => {\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n });\n})();\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (ed25519_CURVE_p + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n/**\n * RFC 9380 method `map_to_curve_elligator2_curve25519`. Experimental name: may be renamed later.\n * @private\n */\n// prettier-ignore\nexport function _map_to_curve_elligator2_curve25519(u) {\n const ELL2_C4 = (ed25519_CURVE_p - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u) {\n const { xMn, xMd, yMn, yMd } = _map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division\n return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; // 13. return (xn, xd, yn, yd)\n}\n/** Hashing to ed25519 points / field. RFC 9380 methods. */\nexport const ed25519_hasher = /* @__PURE__ */ (() => createHasher(ed25519_Point, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: ed25519_CURVE_p,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n}))();\n// √(-1) aka √(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// √(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\n// 1 / √(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\n// 1-d²\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\n// (d-1)²\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\n// Calculates 1/√(number)\nconst invertSqrt = (number) => uvRatio(_1n, number);\nconst MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nconst bytes255ToNumberLE = (bytes) => Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n/**\n * Computes Elligator map for Ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n * the [website](https://ristretto.group/formulas/elligator.html).\n */\nfunction calcElligatorRistrettoMap(r0) {\n const { d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n) => Fp.create(n);\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_; // 7\n if (!Ns_D_is_sq)\n c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519_Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n/**\n * Wrapper over Edwards Point for ristretto255.\n *\n * Each ed25519/EdwardsPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like EdwardsPoint,\n * but it should work in its own namespace: do not combine those two.\n * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nclass _RistrettoPoint extends PrimeEdwardsPoint {\n // Do NOT change syntax: the following gymnastics is done,\n // because typescript strips comments, which makes bundlers disable tree-shaking.\n // prettier-ignore\n static BASE = \n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519_Point.BASE))();\n // prettier-ignore\n static ZERO = \n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519_Point.ZERO))();\n // prettier-ignore\n static Fp = \n /* @__PURE__ */ (() => Fp)();\n // prettier-ignore\n static Fn = \n /* @__PURE__ */ (() => Fn)();\n constructor(ep) {\n super(ep);\n }\n static fromAffine(ap) {\n return new _RistrettoPoint(ed25519_Point.fromAffine(ap));\n }\n assertSame(other) {\n if (!(other instanceof _RistrettoPoint))\n throw new Error('RistrettoPoint expected');\n }\n init(ep) {\n return new _RistrettoPoint(ep);\n }\n static fromBytes(bytes) {\n abytes(bytes, 32);\n const { a, d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n) => Fp.create(n);\n const s = bytes255ToNumberLE(bytes);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(Fp.toBytes(s), bytes) || isNegativeLE(s, P))\n throw new Error('invalid ristretto255 encoding 1');\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P))\n x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error('invalid ristretto255 encoding 2');\n return new _RistrettoPoint(new ed25519_Point(x, y, _1n, t));\n }\n /**\n * Converts ristretto-encoded string to ristretto point.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex) {\n return _RistrettoPoint.fromBytes(hexToBytes(hex));\n }\n /**\n * Encodes ristretto point to Uint8Array.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).\n */\n toBytes() {\n let { X, Y, Z, T } = this.ep;\n const P = ed25519_CURVE_p;\n const mod = (n) => Fp.create(n);\n const u1 = mod(mod(Z + Y) * mod(Z - Y)); // 1\n const u2 = mod(X * Y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * T); // 6\n let D; // 7\n if (isNegativeLE(T * zInv, P)) {\n let _x = mod(Y * SQRT_M1);\n let _y = mod(X * SQRT_M1);\n X = _x;\n Y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2; // 8\n }\n if (isNegativeLE(X * zInv, P))\n Y = mod(-Y); // 9\n let s = mod((Z - Y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P))\n s = mod(-s);\n return Fp.toBytes(s); // 11\n }\n /**\n * Compares two Ristretto points.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).\n */\n equals(other) {\n this.assertSame(other);\n const { X: X1, Y: Y1 } = this.ep;\n const { X: X2, Y: Y2 } = other.ep;\n const mod = (n) => Fp.create(n);\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n is0() {\n return this.equals(_RistrettoPoint.ZERO);\n }\n}\nexport const ristretto255 = { Point: _RistrettoPoint };\n/** Hashing to ristretto255 points / field. RFC 9380 methods. */\nexport const ristretto255_hasher = {\n Point: _RistrettoPoint,\n /**\n * Spec: https://www.rfc-editor.org/rfc/rfc9380.html#name-hashing-to-ristretto255. Caveats:\n * * There are no test vectors\n * * encodeToCurve / mapToCurve is undefined\n * * mapToCurve would be `calcElligatorRistrettoMap(scalars[0])`, not ristretto255_map!\n * * hashToScalar is undefined too, so we just use OPRF implementation\n * * We cannot re-use 'createHasher', because ristretto255_map is different algorithm/RFC\n (os2ip -> bytes255ToNumberLE)\n * * mapToCurve == calcElligatorRistrettoMap, hashToCurve == ristretto255_map\n * * hashToScalar is undefined in RFC9380 for ristretto, we are using version from OPRF here, using bytes255ToNumblerLE will create different result if we use bytes255ToNumberLE as os2ip\n * * current version is closest to spec.\n */\n hashToCurve(msg, options) {\n // == 'hash_to_ristretto255'\n const DST = options?.DST || 'ristretto255_XMD:SHA-512_R255MAP_RO_';\n const xmd = expand_message_xmd(msg, DST, 64, sha512);\n // NOTE: RFC 9380 incorrectly calls this function 'ristretto255_map', in RFC 9496 map was function inside (per point)\n // That also lead to confustion that ristretto255_map is mapToCurve (it is not! it is old hashToCurve)\n return ristretto255_hasher.deriveToCurve(xmd);\n },\n hashToScalar(msg, options = { DST: _DST_scalar }) {\n const xmd = expand_message_xmd(msg, options.DST, 64, sha512);\n return Fn.create(bytesToNumberLE(xmd));\n },\n /**\n * HashToCurve-like construction based on RFC 9496 (Element Derivation).\n * Converts 64 uniform random bytes into a curve point.\n *\n * WARNING: This represents an older hash-to-curve construction, preceding the finalization of RFC 9380.\n * It was later reused as a component in the newer `hash_to_ristretto255` function defined in RFC 9380.\n */\n deriveToCurve(bytes) {\n // https://www.rfc-editor.org/rfc/rfc9496.html#name-element-derivation\n abytes(bytes, 64);\n const r1 = bytes255ToNumberLE(bytes.subarray(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(bytes.subarray(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new _RistrettoPoint(R1.add(R2));\n },\n};\n/** ristretto255 OPRF, defined in RFC 9497. */\nexport const ristretto255_oprf = /* @__PURE__ */ (() => createORPF({\n name: 'ristretto255-SHA512',\n Point: _RistrettoPoint,\n hash: sha512,\n hashToGroup: ristretto255_hasher.hashToCurve,\n hashToScalar: ristretto255_hasher.hashToScalar,\n}))();\n/**\n * Weird / bogus points, useful for debugging.\n * All 8 ed25519 points of 8-torsion subgroup can be generated from the point\n * T = `26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05`.\n * ⟨T⟩ = { O, T, 2T, 3T, 4T, 5T, 6T, 7T }\n */\nexport const ED25519_TORSION_SUBGROUP = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n//# sourceMappingURL=ed25519.js.map",
47
- "// EPOCH = new SimpleDateFormat(\"yyyy MM dd zzz\").parse(\"2001 01 01 GMT\").getTime();\n// ...but that's annoying in a static initializer because it can throw exceptions, ick.\n// So we just hardcode the correct value.\nexport const EPOCH = 978307200000;\nexport const HEADER_BINARY = 'bplist00';\nexport const HEADER_OPENSTEP_UTF8 = '// !$*UTF8*$!';\nexport var PlistFormat;\n(function (PlistFormat) {\n PlistFormat[PlistFormat[\"BINARY\"] = 0] = \"BINARY\";\n PlistFormat[PlistFormat[\"XML\"] = 1] = \"XML\";\n PlistFormat[PlistFormat[\"OPENSTEP\"] = 2] = \"OPENSTEP\";\n})(PlistFormat || (PlistFormat = {}));\n",
48
- "import { HEADER_BINARY, EPOCH } from '@plist/common';\nconst maxObjectSize = 100 * 1000 * 1000; // 100Meg\nconst maxObjectCount = 32768;\nconst DECODER_UTF8 = new TextDecoder('utf-8');\nconst DECODER_UTF16 = new TextDecoder('utf-16');\nfunction readDouble(buffer, start = 0) {\n return new DataView(buffer).getFloat64(start, false);\n}\nfunction readFloat(buffer, start = 0) {\n return new DataView(buffer).getFloat32(start, false);\n}\nfunction readUInt8(buffer, start = 0) {\n return new DataView(buffer).getUint8(start);\n}\nfunction readUInt16(buffer, start = 0) {\n return new DataView(buffer).getUint16(start, false);\n}\nfunction readUInt32(buffer, start = 0) {\n return new DataView(buffer).getUint32(start, false);\n}\nfunction readUInt64(buffer, start = 0) {\n return new DataView(buffer).getBigUint64(start, false);\n}\nfunction readUInt(buffer) {\n switch (buffer.byteLength) {\n case 1:\n return readUInt8(buffer);\n case 2:\n return readUInt16(buffer);\n case 4:\n return readUInt32(buffer);\n case 8:\n return readUInt64(buffer);\n case 16:\n // No support for 128-bit numbers.\n return readUInt64(buffer, 8);\n }\n throw new Error(`Invalid unsigned int length: ${buffer.byteLength}`);\n}\nfunction readInt8(buffer, start = 0) {\n return new DataView(buffer).getInt8(start);\n}\nfunction readInt16(buffer, start = 0) {\n return new DataView(buffer).getInt16(start, false);\n}\nfunction readInt32(buffer, start = 0) {\n return new DataView(buffer).getInt32(start, false);\n}\nfunction readInt64(buffer, start = 0) {\n return new DataView(buffer).getBigInt64(start, false);\n}\nfunction readInt(buffer) {\n switch (buffer.byteLength) {\n case 1:\n return readInt8(buffer);\n case 2:\n return readInt16(buffer);\n case 4:\n return readInt32(buffer);\n case 8:\n return readInt64(buffer);\n case 16:\n // No support for 128-bit numbers.\n // Also, we assume unsigned here.\n return readUInt64(buffer, 8);\n }\n throw new Error(`Invalid int length: ${buffer.byteLength}`);\n}\nfunction swapBytes(buffer) {\n const array = new Uint8Array(buffer);\n for (let i = 0; i < array.length; i += 2) {\n const a = array[i];\n array[i] = array[i + 1];\n array[i + 1] = a;\n }\n return array.buffer;\n}\nexport const parse = (buffer) => {\n // check header\n const headerBytes = buffer.slice(0, HEADER_BINARY.length);\n if (DECODER_UTF8.decode(headerBytes) !== HEADER_BINARY) {\n throw new Error(`Invalid binary plist. Expected '${HEADER_BINARY}' at offset 0.`);\n }\n // Handle trailer, last 32 bytes of the file\n const trailer = buffer.slice(buffer.byteLength - 32, buffer.byteLength);\n // 6 null bytes (index 0 to 5)\n const offsetSize = readUInt8(trailer, 6);\n const objectRefSize = readUInt8(trailer, 7);\n const numObjects = Number(readUInt64(trailer, 8));\n const topObject = Number(readUInt64(trailer, 16));\n const offsetTableOffset = Number(readUInt64(trailer, 24));\n if (numObjects > maxObjectCount) {\n throw new Error('maxObjectCount exceeded');\n }\n // Handle offset table\n const offsetTable = [];\n for (let i = 0; i < numObjects; i++) {\n const offsetBytes = buffer.slice(offsetTableOffset + i * offsetSize, offsetTableOffset + (i + 1) * offsetSize);\n offsetTable[i] = Number(readUInt(offsetBytes));\n }\n // Parses an object inside the currently parsed binary property list.\n // For the format specification check\n // https://www.opensource.apple.com/source/CF/CF-635/CFBinaryPList.c\n // (Apple's binary property list parser implementation)\n function parseObject(tableOffset) {\n const offset = offsetTable[tableOffset];\n const type = readUInt8(buffer, offset);\n const objType = (type & 0xf0) >> 4; // First 4 bits\n const objInfo = type & 0x0f; // Second 4 bits\n switch (objType) {\n case 0x0:\n return parseSimple();\n case 0x1:\n return parseInteger();\n case 0x8:\n return parseUID();\n case 0x2:\n return parseReal();\n case 0x3:\n return parseDate();\n case 0x4:\n return parseData();\n case 0x5: // ASCII\n return parsePlistString();\n case 0x6: // UTF-16\n return parsePlistString(true);\n case 0xa:\n return parseArray();\n case 0xd:\n return parseDictionary();\n default:\n throw new Error('Unhandled type 0x' + objType.toString(16));\n }\n function parseSimple() {\n //Simple\n switch (objInfo) {\n case 0x0: // null\n return null;\n case 0x8: // false\n return false;\n case 0x9: // true\n return true;\n case 0xf: // filler byte\n return null;\n default:\n throw new Error('Unhandled simple type 0x' + objType.toString(16));\n }\n }\n function parseInteger() {\n const length = Math.pow(2, objInfo);\n if (length < maxObjectSize) {\n const data = buffer.slice(offset + 1, offset + 1 + length);\n return readInt(data);\n }\n throw new Error('Too little heap space available! Wanted to read ' +\n length +\n ' bytes, but only ' +\n maxObjectSize +\n ' are available.');\n }\n function parseUID() {\n const length = objInfo + 1;\n if (length < maxObjectSize) {\n return {\n CF$UID: readUInt(buffer.slice(offset + 1, offset + 1 + length)),\n };\n }\n throw new Error('Too little heap space available! Wanted to read ' +\n length +\n ' bytes, but only ' +\n maxObjectSize +\n ' are available.');\n }\n function parseReal() {\n const length = Math.pow(2, objInfo);\n if (length < maxObjectSize) {\n const realBuffer = buffer.slice(offset + 1, offset + 1 + length);\n if (length === 4) {\n return readFloat(realBuffer);\n }\n else if (length === 8) {\n return readDouble(realBuffer);\n }\n throw new Error(`Invalid real length: ${length}`);\n }\n else {\n throw new Error('Too little heap space available! Wanted to read ' +\n length +\n ' bytes, but only ' +\n maxObjectSize +\n ' are available.');\n }\n }\n function parseDate() {\n if (objInfo != 0x3) {\n console.error('Unknown date type :' + objInfo + '. Parsing anyway...');\n }\n const dateBuffer = buffer.slice(offset + 1, offset + 9);\n return new Date(EPOCH + 1000 * readDouble(dateBuffer));\n }\n function parseData() {\n let dataoffset = 1;\n let length = objInfo;\n if (objInfo == 0xf) {\n const int_type = readInt8(buffer, offset + 1);\n const intType = (int_type & 0xf0) / 0x10;\n if (intType != 0x1) {\n console.error('0x4: UNEXPECTED LENGTH-INT TYPE! ' + intType);\n }\n const intInfo = int_type & 0x0f;\n const intLength = Math.pow(2, intInfo);\n dataoffset = 2 + intLength;\n length = Number(readUInt(buffer.slice(offset + 2, offset + 2 + intLength)));\n }\n if (length < maxObjectSize) {\n return buffer.slice(offset + dataoffset, offset + dataoffset + Number(length));\n }\n throw new Error('Too little heap space available! Wanted to read ' +\n length +\n ' bytes, but only ' +\n maxObjectSize +\n ' are available.');\n }\n function parsePlistString(isUtf16 = false) {\n let length = objInfo;\n let stroffset = 1;\n if (objInfo == 0xf) {\n const int_type = readUInt8(buffer, offset + 1);\n const intType = (int_type & 0xf0) / 0x10;\n if (intType != 0x1) {\n console.error('UNEXPECTED LENGTH-INT TYPE! ' + intType);\n }\n const intInfo = int_type & 0x0f;\n const intLength = Math.pow(2, intInfo);\n stroffset = 2 + intLength;\n length = Number(readUInt(buffer.slice(offset + 2, offset + 2 + intLength)));\n }\n // length is String length -> to get byte length multiply by 2, as 1 character takes 2 bytes in UTF-16\n length *= isUtf16 ? 2 : 1;\n if (length < maxObjectSize) {\n let plistString = buffer.slice(offset + stroffset, offset + stroffset + length);\n if (isUtf16) {\n plistString = swapBytes(plistString);\n return DECODER_UTF16.decode(plistString);\n }\n else {\n return DECODER_UTF8.decode(plistString);\n }\n }\n throw new Error('Too little heap space available! Wanted to read ' +\n length +\n ' bytes, but only ' +\n maxObjectSize +\n ' are available.');\n }\n function parseArray() {\n let length = objInfo;\n let arrayoffset = 1;\n if (objInfo == 0xf) {\n const int_type = readUInt8(buffer, offset + 1);\n const intType = (int_type & 0xf0) / 0x10;\n if (intType != 0x1) {\n console.error('0xa: UNEXPECTED LENGTH-INT TYPE! ' + intType);\n }\n const intInfo = int_type & 0x0f;\n const intLength = Math.pow(2, intInfo);\n arrayoffset = 2 + intLength;\n length = Number(readUInt(buffer.slice(offset + 2, offset + 2 + intLength)));\n }\n if (length * objectRefSize > maxObjectSize) {\n throw new Error('Too little heap space available!');\n }\n const array = [];\n for (let i = 0; i < length; i++) {\n const objRef = Number(readUInt(buffer.slice(offset + arrayoffset + i * objectRefSize, offset + arrayoffset + (i + 1) * objectRefSize)));\n array[i] = parseObject(objRef);\n }\n return array;\n }\n function parseDictionary() {\n let length = objInfo;\n let dictoffset = 1;\n if (objInfo == 0xf) {\n const int_type = readUInt8(buffer, offset + 1);\n const intType = (int_type & 0xf0) / 0x10;\n if (intType != 0x1) {\n console.error('0xD: UNEXPECTED LENGTH-INT TYPE! ' + intType);\n }\n const intInfo = int_type & 0x0f;\n const intLength = Math.pow(2, intInfo);\n dictoffset = 2 + intLength;\n length = Number(readUInt(buffer.slice(offset + 2, offset + 2 + intLength)));\n }\n if (length * 2 * objectRefSize > maxObjectSize) {\n throw new Error('Too little heap space available!');\n }\n const dict = {};\n for (let i = 0; i < length; i++) {\n const keyRef = Number(readUInt(buffer.slice(offset + dictoffset + i * objectRefSize, offset + dictoffset + (i + 1) * objectRefSize)));\n const valRef = Number(readUInt(buffer.slice(offset + dictoffset + length * objectRefSize + i * objectRefSize, offset +\n dictoffset +\n length * objectRefSize +\n (i + 1) * objectRefSize)));\n const key = parseObject(keyRef);\n if (typeof key !== 'string') {\n throw new Error('Invalid key type.');\n }\n if (key === '__proto__') {\n throw new Error('Attempted prototype pollution');\n }\n const val = parseObject(valRef);\n dict[key] = val;\n }\n return dict;\n }\n }\n return parseObject(topObject);\n};\n",
49
- "import { EPOCH, HEADER_BINARY } from '@plist/common';\nconst encoder = new TextEncoder();\nconst nullBytes = new Uint8Array([0, 0, 0, 0, 0, 0]);\nconst fromHexString = (hexString) => Uint8Array.from(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));\nconst isUID = (value) => !!value &&\n typeof value === 'object' &&\n Object.keys(value).length == 1 &&\n typeof value.CF$UID === 'number';\nconst toUTF16 = (string) => {\n const buf = new ArrayBuffer(string.length * 2);\n const bufView = new Uint16Array(buf);\n for (let i = 0, strLen = string.length; i < strLen; i++) {\n bufView[i] = string.charCodeAt(i);\n }\n return new Uint8Array(buf);\n};\nconst concat = (first, second) => {\n const third = new Uint8Array(first.length + second.length);\n third.set(first);\n third.set(second, first.length);\n return third;\n};\nconst writeUInt = (buffer, int, size) => {\n const output = new Uint8Array(buffer.length + size);\n const dataView = new DataView(output.buffer);\n output.set(buffer);\n switch (size) {\n case 1:\n dataView.setUint8(buffer.length, Number(int));\n break;\n case 2:\n dataView.setUint16(buffer.length, Number(int), false);\n break;\n case 4:\n dataView.setUint32(buffer.length, Number(int), false);\n break;\n case 8:\n dataView.setBigUint64(buffer.length, BigInt(int), false);\n break;\n default:\n throw new Error('Unsupported int size');\n }\n return output;\n};\nconst writeInt = (buffer, int, size) => {\n const output = new Uint8Array(buffer.length + size);\n const dataView = new DataView(output.buffer);\n output.set(buffer);\n switch (size) {\n case 1:\n dataView.setInt8(buffer.length, Number(int));\n break;\n case 2:\n dataView.setInt16(buffer.length, Number(int), false);\n break;\n case 4:\n dataView.setInt32(buffer.length, Number(int), false);\n break;\n case 8:\n dataView.setBigInt64(buffer.length, BigInt(int), false);\n break;\n default:\n throw new Error('Unsupported int size');\n }\n return output;\n};\nconst writeDouble = (buffer, double) => {\n const output = new Uint8Array(buffer.length + 8);\n const dataView = new DataView(output.buffer);\n output.set(buffer);\n dataView.setFloat64(buffer.length, double);\n return output;\n};\nexport const serialize = (value) => {\n let buffer = encoder.encode(HEADER_BINARY);\n if (value instanceof Array && value.length === 1) {\n value = value[0];\n }\n let entries = toEntries(value);\n const idSizeInBytes = computeIdSizeInBytes(entries.length);\n const offsets = [];\n let offsetSizeInBytes;\n let offsetTableOffset;\n updateEntryIds();\n entries.forEach((entry, entryIdx) => {\n offsets[entryIdx] = buffer.byteLength;\n if (typeof entry === 'undefined' || entry === null) {\n buffer = writeUInt(buffer, 0x00, 1);\n }\n else {\n write(entry);\n }\n });\n writeOffsetTable();\n writeTrailer();\n return buffer.buffer;\n function updateEntryIds() {\n const strings = {};\n let entryId = 0;\n entries.forEach(entry => {\n if (entry.id) {\n return;\n }\n if (typeof entry.value === 'string') {\n if (strings.hasOwnProperty(entry.value)) {\n entry.type = 'stringref';\n entry.id = strings[entry.value];\n }\n else {\n strings[entry.value] = entry.id = entryId++;\n }\n }\n else {\n entry.id = entryId++;\n }\n });\n entries = entries.filter(entry => {\n return entry.type !== 'stringref';\n });\n }\n function writeTrailer() {\n buffer = concat(buffer, nullBytes);\n buffer = concat(buffer, new Uint8Array([offsetSizeInBytes, idSizeInBytes]));\n buffer = writeUInt(buffer, BigInt(entries.length), 8);\n buffer = writeUInt(buffer, BigInt('0'), 8);\n buffer = writeUInt(buffer, BigInt(offsetTableOffset), 8);\n }\n function writeOffsetTable() {\n offsetTableOffset = buffer.byteLength;\n offsetSizeInBytes = computeOffsetSizeInBytes(offsetTableOffset);\n offsets.forEach(offset => {\n buffer = writeUInt(buffer, offset, offsetSizeInBytes);\n });\n }\n function write(entry) {\n if (entry.type === 'primitive') {\n const value = entry.value;\n switch (typeof value) {\n case 'number':\n case 'bigint':\n writeNumber(value);\n break;\n case 'string':\n writeString(value);\n break;\n case 'boolean':\n writeBoolean(value);\n break;\n }\n if (value instanceof Date) {\n writeDate(value);\n }\n else if (value instanceof ArrayBuffer) {\n writeData(value);\n }\n else if (isUID(value)) {\n writeUID(value.CF$UID);\n }\n return;\n }\n switch (entry.type) {\n case 'dict':\n writeDict(entry);\n break;\n case 'array':\n writeArray(entry);\n break;\n default:\n throw new Error('unhandled entry type: ' + entry.type);\n }\n }\n function writeDate(value) {\n buffer = writeUInt(buffer, 0x33, 1);\n const date = (value.getTime() - EPOCH) / 1000;\n buffer = writeDouble(buffer, date);\n }\n function writeDict(entry) {\n writeIntHeader(0xd, entry.entryKeys.length);\n entry.entryKeys.forEach((entry) => {\n writeID(entry.id);\n });\n entry.entryValues.forEach((entry) => {\n writeID(entry.id);\n });\n }\n function writeNumber(value) {\n if (typeof value === 'bigint') {\n const width = 16;\n const hex = value.toString(16);\n const buf = fromHexString(hex.padStart(width * 2, '0').slice(0, width * 2));\n buffer = writeUInt(buffer, 0x14, 1);\n buffer = concat(buffer, buf);\n }\n else {\n if (Number.isInteger(value)) {\n if (value < 0) {\n buffer = writeUInt(buffer, 0x13, 1);\n buffer = writeInt(buffer, value, 8);\n }\n else if (value <= 0xff) {\n buffer = writeUInt(buffer, 0x10, 1);\n buffer = writeUInt(buffer, value, 1);\n }\n else if (value <= 0xffff) {\n buffer = writeUInt(buffer, 0x11, 1);\n buffer = writeUInt(buffer, value, 2);\n }\n else if (value <= 0xffffffff) {\n buffer = writeUInt(buffer, 0x12, 1);\n buffer = writeUInt(buffer, value, 4);\n }\n else {\n buffer = writeUInt(buffer, 0x13, 1);\n buffer = writeUInt(buffer, value, 8);\n }\n }\n else {\n buffer = writeUInt(buffer, 0x23, 1);\n buffer = writeDouble(buffer, value);\n }\n }\n }\n function writeUID(uid) {\n writeIntHeader(0x8, 0x0);\n writeID(uid);\n }\n function writeArray(entry) {\n writeIntHeader(0xa, entry.entries.length);\n entry.entries.forEach(e => {\n writeID(e.id);\n });\n }\n function writeBoolean(value) {\n buffer = writeUInt(buffer, value ? 0x09 : 0x08, 1);\n }\n function writeString(value) {\n if (mustBeUtf16(value)) {\n const utf16 = toUTF16(value);\n writeIntHeader(0x6, utf16.length / 2);\n // needs to be big endian so swap the bytes\n for (let i = 0; i < utf16.length; i += 2) {\n const t = utf16[i + 0];\n utf16[i + 0] = utf16[i + 1];\n utf16[i + 1] = t;\n }\n buffer = concat(buffer, utf16);\n }\n else {\n const utf8 = encoder.encode(value);\n writeIntHeader(0x5, utf8.length);\n buffer = concat(buffer, utf8);\n }\n }\n function writeData(data) {\n writeIntHeader(0x4, data.byteLength);\n buffer = concat(buffer, new Uint8Array(data));\n }\n function writeIntHeader(kind, value) {\n if (value < 15) {\n buffer = writeUInt(buffer, (kind << 4) + value, 1);\n }\n else {\n buffer = writeUInt(buffer, (kind << 4) + 15, 1);\n writeNumber(value);\n }\n }\n function writeID(id) {\n buffer = writeUInt(buffer, id, idSizeInBytes);\n }\n function mustBeUtf16(string) {\n return encoder.encode(string).byteLength != string.length;\n }\n};\nconst typeofPrimitive = ['string', 'number', 'boolean', 'bigint'];\nfunction toEntries(value) {\n if (typeofPrimitive.includes(typeof value) ||\n value instanceof ArrayBuffer ||\n value instanceof Date ||\n isUID(value)) {\n return [\n {\n type: 'primitive',\n value,\n },\n ];\n }\n if (value != null && typeof value === 'object') {\n return Array.isArray(value)\n ? toEntriesArray(value)\n : toEntriesObject(value);\n }\n throw new Error('unhandled entry: ' + value);\n}\nfunction toEntriesArray(array) {\n const entries = array.map(toEntries);\n return [\n {\n type: 'array',\n value: undefined,\n entries: entries.map(entries => entries[0]),\n },\n ...entries.flat(),\n ];\n}\nfunction toEntriesObject(dict) {\n const entryKeys = Object.keys(dict).map(toEntries).flat(1);\n const entryValues = Object.values(dict).map(toEntries);\n return [\n {\n type: 'dict',\n value: undefined,\n entryKeys,\n entryValues: entryValues.map(entries => entries[0]),\n },\n ...entryKeys,\n ...entryValues.flat(),\n ];\n}\nfunction computeOffsetSizeInBytes(maxOffset) {\n if (maxOffset < 256) {\n return 1;\n }\n if (maxOffset < 65536) {\n return 2;\n }\n if (maxOffset < 4294967296) {\n return 4;\n }\n return 8;\n}\nfunction computeIdSizeInBytes(numberOfIds) {\n if (numberOfIds < 256) {\n return 1;\n }\n if (numberOfIds < 65536) {\n return 2;\n }\n return 4;\n}\n",
50
- "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n",
51
- "import { randomFillSync } from 'node:crypto';\nconst rnds8Pool = new Uint8Array(256);\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n return rnds8Pool.slice(poolPtr, (poolPtr += 16));\n}\n",
52
- "import { randomUUID } from 'node:crypto';\nexport default { randomUUID };\n",
53
- "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n",
5
+ "import { Discovery, prompt } from '@basmilius/apple-common';\nimport { AirPlay } from '@/protocol';\n\nasync function homepod(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Slaapkamer HomePod._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n\n await protocol.pairing.start();\n const keys = await protocol.pairing.transient();\n\n await protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await protocol.setupDataStream(keys.sharedSecret);\n\n setInterval(() => protocol.feedback(), 2000);\n\n await protocol.dataStream.exchange(protocol.dataStream.messages.deviceInfo(keys.pairingId));\n\n protocol.dataStream.addListener('deviceInfo', async () => {\n await protocol.dataStream.exchange(protocol.dataStream.messages.setConnectionState());\n await protocol.dataStream.exchange(protocol.dataStream.messages.clientUpdatesConfig());\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Play));\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.notification([\n // 'Hallo wereld!'\n // ]));\n });\n}\n\nasync function tv(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Woonkamer TV._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n\n const keys = await protocol.verify.start({\n accessoryIdentifier: '7EEEA518-06CC-486C-A8B8-4A07CDBE6267',\n accessoryLongTermPublicKey: Buffer.from('cfb3fb0e0eb494d9058d5051c94400b35251e3faad66542b9551a1496570628d', 'hex'),\n pairingId: Buffer.from('38393044453445352d463738442d344131332d393231392d434231433237304438323341', 'hex'),\n publicKey: Buffer.from('a3dfd6e3956006afd91204d68ddf9c26c7d9d77eee5506c69e7fe3af1288d0f4', 'hex'),\n secretKey: Buffer.from('6961e16b52f5f0be1b7723c9436356d498b4f9629f0227706a1465c5d18dbf0ba3dfd6e3956006afd91204d68ddf9c26c7d9d77eee5506c69e7fe3af1288d0f4', 'hex')\n });\n\n await protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await protocol.setupDataStream(keys.sharedSecret);\n\n setInterval(() => protocol.feedback(), 2000);\n\n await protocol.dataStream.exchange(protocol.dataStream.messages.deviceInfo(keys.pairingId));\n\n protocol.dataStream.addListener('deviceInfo', async () => {\n await protocol.dataStream.exchange(protocol.dataStream.messages.setConnectionState());\n await protocol.dataStream.exchange(protocol.dataStream.messages.clientUpdatesConfig());\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Rewind15Seconds));\n\n // await waitFor(1000);\n\n // const options = create(Proto.CommandOptionsSchema, {\n // stationURL: 'https://bmcdn.nl/doorbell.ogg'\n // });\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Play, options));\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendButtonEvent(12, 0x40, true));\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendButtonEvent(12, 0x40, false));\n });\n\n /*\n \"up\": (1, 0x8C),\n \"down\": (1, 0x8D),\n \"left\": (1, 0x8B),\n \"right\": (1, 0x8A),\n \"stop\": (12, 0xB7),\n \"next\": (12, 0xB5),\n \"previous\": (12, 0xB6),\n \"select\": (1, 0x89),\n \"menu\": (1, 0x86),\n \"topmenu\": (12, 0x60),\n \"home\": (12, 0x40),\n \"suspend\": (1, 0x82),\n \"wakeup\": (1, 0x83),\n \"volume_up\": (12, 0xE9),\n \"volume_down\": (12, 0xEA),\n 'mic': (12, 0x04),\n */\n}\n\nasync function tvPair(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Woonkamer TV._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n await protocol.pairing.start();\n\n const credentials = await protocol.pairing.pin(async () => await prompt('Enter PIN'));\n\n console.log({\n accessoryIdentifier: credentials.accessoryIdentifier,\n accessoryLongTermPublicKey: credentials.accessoryLongTermPublicKey.toString('hex'),\n pairingId: credentials.pairingId.toString('hex'),\n publicKey: credentials.publicKey.toString('hex'),\n secretKey: credentials.secretKey.toString('hex')\n });\n}\n\nconst what = process.argv[1] ?? null;\n\nswitch (what) {\n case 'homepod':\n await homepod();\n break;\n\n case 'tv':\n await tv();\n break;\n\n case 'tvPair':\n await tvPair();\n break;\n\n default:\n console.error('Unknown test, please use specify either homepod, tv or tvPair.');\n break;\n}\n",
6
+ "import { debug, type DiscoveryResult, getMacAddress, parseBinaryPlist, serializeBinaryPlist, uuid } from '@basmilius/apple-common';\nimport { randomInt64 } from './utils';\nimport DataStream from './dataStream';\nimport EventStream from './eventStream';\nimport Pairing from './pairing';\nimport RTSP from './rtsp';\nimport Verify from './verify';\n\nexport default class AirPlay {\n get device(): DiscoveryResult {\n return this.#device;\n }\n\n get dataStream(): DataStream | undefined {\n return this.#dataStream;\n }\n\n get eventStream(): EventStream | undefined {\n return this.#eventStream;\n }\n\n get pairing(): Pairing {\n return this.#pairing;\n }\n\n get rtsp(): RTSP {\n return this.#rtsp;\n }\n\n get verify(): Verify {\n return this.#verify;\n }\n\n readonly #device: DiscoveryResult;\n readonly #pairing: Pairing;\n readonly #rtsp: RTSP;\n readonly #verify: Verify;\n readonly #sessionUUID: string;\n #dataStream?: DataStream;\n #eventStream?: EventStream;\n\n constructor(device: DiscoveryResult) {\n this.#device = device;\n this.#rtsp = new RTSP(device.address, device.service.port);\n this.#pairing = new Pairing(this);\n this.#verify = new Verify(this);\n this.#sessionUUID = uuid();\n }\n\n async connect(): Promise<void> {\n await this.#rtsp.connect();\n }\n\n async disconnect(): Promise<void> {\n await this.#rtsp.disconnect();\n }\n\n async feedback(): Promise<void> {\n await this.#rtsp.post('/feedback');\n }\n\n async setupDataStream(sharedSecret: Buffer): Promise<void> {\n const seed = randomInt64();\n const request = serializeBinaryPlist({\n streams: [\n {\n controlType: 2,\n channelID: '3ZDG',\n seed,\n clientUUID: uuid().toUpperCase(),\n type: 130,\n wantsDedicatedSocket: true,\n clientTypeUUID: '1910A70F-DBC0-4242-AF95-115DB30604E1'\n }\n ]\n });\n\n const response = await this.#rtsp.setup(`/${this.rtsp.sessionId}`, Buffer.from(request), {\n 'Content-Type': 'application/x-apple-binary-plist'\n });\n\n const plist = parseBinaryPlist(await response.arrayBuffer()) as any;\n const dataPort = plist.streams[0].dataPort & 0xFFFF;\n debug('Should listen on data port', dataPort);\n\n this.#dataStream = new DataStream(this.#rtsp.address, dataPort);\n await this.#dataStream.setup(sharedSecret, seed);\n await this.#dataStream.connect();\n }\n\n async setupEventStream(pairingId: Buffer, sharedSecret: Buffer): Promise<void> {\n const request = serializeBinaryPlist({\n deviceID: pairingId.toString(),\n macAddress: getMacAddress().toUpperCase(),\n name: 'iPhone van Bas',\n model: 'iPhone16,2',\n osBuildVersion: '23B82',\n osName: 'iPhone OS',\n osVersion: '26.1',\n sourceVersion: '550.10',\n sessionUUID: this.#sessionUUID,\n sessionCorrelationUUID: 'BBB3A645-7453-46B2-92CF-30A8E1F02D26',\n timingProtocol: 'None',\n isRemoteControlOnly: true,\n startsCollectionEnabled: false,\n updateSessionRequest: false,\n });\n\n const response = await this.#rtsp.setup(`/${this.rtsp.sessionId}`, Buffer.from(request), {\n 'Content-Type': 'application/x-apple-binary-plist'\n });\n\n const plist = parseBinaryPlist(await response.arrayBuffer()) as any;\n const eventPort = plist.eventPort & 0xFFFF;\n debug('Should listen on event port', eventPort);\n\n this.#eventStream = new EventStream(this.#rtsp.address, eventPort);\n await this.#eventStream.setup(sharedSecret);\n await this.#eventStream.connect();\n\n await this.#rtsp.record(`/${this.rtsp.sessionId}`);\n }\n}\n",
54
7
  "import { randomBytes } from 'node:crypto';\nimport { debug } from '@basmilius/apple-common';\nimport type { RTSPMethod } from './types';\n\nexport function makeHttpHeader(method: RTSPMethod, path: string, headers: HeadersInit, cseq: number): string {\n const lines = [];\n lines.push(`${method} ${path} RTSP/1.0`);\n lines.push(`CSeq: ${cseq}`);\n lines.push('User-Agent: AirPlay/320.20');\n lines.push('X-ProtocolVersion: 1');\n\n for (const [name, value] of Object.entries(headers)) {\n lines.push(`${name}: ${value}`);\n }\n\n lines.push('');\n lines.push('');\n\n return lines.join('\\r\\n');\n}\n\nexport function makeHttpRequest(buffer: Buffer): HttpRequest | null {\n const headerLength = buffer.indexOf('\\r\\n\\r\\n');\n const {headers, method, path} = parseRequestHeaders(buffer.subarray(0, headerLength));\n\n let contentLength = headers['Content-Length'] ? Number(headers['Content-Length']) : 0;\n\n if (isNaN(contentLength)) {\n contentLength = 0;\n }\n\n const requestLength = headerLength + 4 + contentLength;\n\n debug(buffer.byteLength, requestLength);\n\n if (buffer.byteLength < requestLength) {\n return null;\n }\n\n const body = buffer.subarray(headerLength + 4, requestLength);\n\n return {\n headers,\n method,\n path,\n body,\n requestLength\n };\n}\n\nexport function makeHttpResponse(buffer: Buffer): HttpResponse | null {\n const headerLength = buffer.indexOf('\\r\\n\\r\\n');\n const {headers, status, statusText} = parseResponseHeaders(buffer.subarray(0, headerLength));\n\n let contentLength = headers['Content-Length'] ? Number(headers['Content-Length']) : 0;\n\n if (isNaN(contentLength)) {\n contentLength = 0;\n }\n\n const responseLength = headerLength + 4 + contentLength;\n\n // not enough data yet\n if (buffer.byteLength < responseLength) {\n return null;\n }\n\n const body = buffer.subarray(headerLength + 4, responseLength);\n const response = new Response(body, {\n status,\n statusText,\n headers\n });\n\n return {\n response,\n responseLength\n };\n}\n\nexport function randomInt32(): number {\n return randomBytes(4).readUInt32BE(0);\n}\n\nexport function randomInt64(): bigint {\n return randomBytes(8).readBigUint64LE(0);\n}\n\nfunction parseHeaders(lines: string[]): Record<string, string> {\n const headers: Record<string, string> = {};\n\n for (let i = 0; i < lines.length; i++) {\n const colon = lines[i].indexOf(':');\n\n if (colon <= 0) {\n continue;\n }\n\n const name = lines[i].substring(0, colon).trim();\n headers[name] = lines[i].substring(colon + 1).trim();\n }\n\n return headers;\n}\n\nfunction parseRequestHeaders(buffer: Buffer): HttpRequestHeader {\n const lines = buffer.toString('utf8').split('\\r\\n');\n\n const rawRequest = lines[0].match(/^(\\S+)\\s+(\\S+)\\s+RTSP\\/1\\.0$/);\n const method = rawRequest[1] as RTSPMethod;\n const path = rawRequest[2];\n const headers: Record<string, string> = parseHeaders(lines.slice(1));\n\n return {\n headers,\n method,\n path\n };\n}\n\nfunction parseResponseHeaders(buffer: Buffer): HttpResponseHeader {\n const lines = buffer.toString('utf8').split('\\r\\n');\n\n const rawStatus = lines[0].match(/(HTTP|RTSP)\\/[\\d.]+\\s+(\\d+)\\s+(.+)/);\n const status = Number(rawStatus[2]);\n const statusText = rawStatus[3];\n const headers: Record<string, string> = parseHeaders(lines.slice(1));\n\n return {\n headers,\n status,\n statusText\n };\n}\n\ntype HttpRequestHeader = {\n readonly headers: Record<string, string>;\n readonly method: RTSPMethod;\n readonly path: string;\n};\n\ntype HttpResponseHeader = {\n readonly headers: Record<string, string>;\n readonly status: number;\n readonly statusText: string;\n};\n\ntype HttpRequest = {\n readonly headers: Record<string, string>;\n readonly method: RTSPMethod;\n readonly path: string;\n readonly body: Buffer;\n readonly requestLength: number;\n};\n\ntype HttpResponse = {\n readonly response: Response;\n readonly responseLength: number;\n};\n",
55
8
  "import { debug, decryptChacha20, encryptChacha20, hkdf, parseBinaryPlist, serializeBinaryPlist } from '@basmilius/apple-common';\nimport { fromBinary, getExtension, toBinary } from '@bufbuild/protobuf';\nimport * as Proto from '../proto';\nimport { randomInt32 } from './utils';\nimport AirPlayDataStreamMessages from './dataStreamMessages';\nimport AirPlayStream from './stream';\n\nconst DATA_HEADER_LENGTH = 32; // 4 + 12 + 4 + 8 + 4\n\ntype EventMap = {\n readonly deviceInfo: [Proto.DeviceInfoMessage];\n readonly originClientProperties: [Proto.OriginClientPropertiesMessage];\n readonly playerClientProperties: [Proto.PlayerClientPropertiesMessage];\n readonly sendCommandResult: [Proto.SendCommandResultMessage];\n readonly setArtwork: [Proto.SetArtworkMessage];\n readonly setDefaultSupportedCommands: [Proto.SetDefaultSupportedCommandsMessage];\n readonly nowPlayingClient: [Proto.SetNowPlayingClientMessage];\n readonly nowPlayingPlayer: [Proto.SetNowPlayingPlayerMessage];\n readonly setState: [Proto.SetStateMessage];\n readonly updateClient: [Proto.UpdateClientMessage];\n readonly updateContentItem: [Proto.UpdateContentItemMessage];\n readonly updateContentItemArtwork: [Proto.UpdateContentItemArtworkMessage];\n readonly updatePlayer: [Proto.UpdatePlayerMessage];\n readonly updateOutputDevice: [Proto.UpdateOutputDeviceMessage];\n readonly volumeControlAvailability: [Proto.VolumeControlAvailabilityMessage];\n readonly volumeControlCapabilitiesDidChange: [Proto.VolumeControlCapabilitiesDidChangeMessage];\n readonly volumeDidChange: [Proto.VolumeDidChangeMessage];\n};\n\nexport default class AirPlayDataStream extends AirPlayStream<EventMap> {\n get messages(): AirPlayDataStreamMessages {\n return this.#messages;\n }\n\n readonly #messages: AirPlayDataStreamMessages;\n #buffer: Buffer = Buffer.alloc(0);\n #seqno: bigint;\n #readCount: number;\n #writeCount: number;\n #handler?: [Function, Function];\n\n constructor(address: string, port: number) {\n super(address, port);\n\n this.#messages = new AirPlayDataStreamMessages();\n this.#seqno = 0x100000000n + BigInt(randomInt32());\n this.#writeCount = 0;\n }\n\n async exchange(message: Proto.ProtocolMessage): Promise<Proto.ProtocolMessage> {\n return new Promise(async (resolve, reject) => {\n this.#handler = [resolve, reject];\n await this.send(message);\n });\n }\n\n async reply(seqno: bigint): Promise<void> {\n const rply = buildReply(seqno);\n\n debug('Sending reply.');\n this.socket.write(await this.#encrypt(rply));\n }\n\n async send(message: Proto.ProtocolMessage): Promise<void> {\n const bytes = toBinary(Proto.ProtocolMessageSchema, message, {writeUnknownFields: true});\n const lenPrefix = Buffer.from(encodeVarint(bytes.length));\n const pbPayload = Buffer.concat([lenPrefix, Buffer.from(bytes)]);\n\n const plistPayload = Buffer.from(\n serializeBinaryPlist({\n params: {\n data: pbPayload.buffer.slice(pbPayload.byteOffset, pbPayload.byteOffset + pbPayload.byteLength)\n }\n } as any)\n );\n\n const header = buildHeader(DATA_HEADER_LENGTH + plistPayload.byteLength, this.#seqno++);\n const frame = Buffer.concat([header, plistPayload]);\n const encrypted = await this.#encrypt(frame);\n\n debug('Sending data stream message', message);\n\n this.socket.write(encrypted);\n }\n\n async setup(sharedSecret: Buffer, seed: bigint): Promise<void> {\n const readKey = hkdf({\n hash: 'sha512',\n key: sharedSecret,\n length: 32,\n salt: Buffer.from(`DataStream-Salt${seed}`),\n info: Buffer.from('DataStream-Input-Encryption-Key')\n });\n\n const writeKey = hkdf({\n hash: 'sha512',\n key: sharedSecret,\n length: 32,\n salt: Buffer.from(`DataStream-Salt${seed}`),\n info: Buffer.from('DataStream-Output-Encryption-Key')\n });\n\n await this.enableEncryption(readKey, writeKey);\n }\n\n async onData(buffer: Buffer): Promise<void> {\n try {\n this.#buffer = Buffer.concat([this.#buffer, buffer]);\n this.#buffer = await this.#decrypt(this.#buffer);\n\n while (this.#buffer.byteLength > DATA_HEADER_LENGTH) {\n const header = this.#buffer.subarray(0, DATA_HEADER_LENGTH);\n const totalLength = header.readUint32BE();\n\n if (this.#buffer.byteLength < totalLength) {\n debug(`Not enough data yet, waiting on the next frame.. needed=${totalLength} available=${this.#buffer.byteLength} receivedLength=${buffer.byteLength}`);\n return;\n }\n\n const frame = this.#buffer.subarray(DATA_HEADER_LENGTH, totalLength);\n const plist = parseBinaryPlist(frame.buffer.slice(frame.byteOffset, frame.byteOffset + frame.byteLength) as any) as any;\n const command = header.toString('ascii', 4, 8);\n\n debug('Raw data received', header.toString());\n debug(`Should read ${totalLength} bytes, ${this.#buffer.byteLength} available.`);\n\n this.#buffer = this.#buffer.subarray(totalLength);\n\n if (!plist || !plist.params || !plist.params.data) {\n if (command === 'rply') {\n debug('Got reply...');\n }\n\n if (command === 'sync') {\n await this.reply(parseHeaderSeqno(header));\n }\n\n if (this.#handler) {\n const [resolve] = this.#handler;\n this.#handler = undefined;\n\n resolve();\n }\n\n continue;\n }\n\n const content = Buffer.from(plist.params.data);\n\n for (const message of await parseMessages(content)) {\n await this.#handleMessage(message);\n }\n\n if (command === 'sync') {\n await this.reply(parseHeaderSeqno(header));\n }\n }\n } catch (err) {\n debug('Error in onData', err);\n }\n }\n\n async #onDeviceInfoMessage(message: Proto.DeviceInfoMessage): Promise<void> {\n debug('Connected to device', message.name);\n\n this.emit('deviceInfo', message);\n }\n\n async #onOriginClientPropertiesMessage(message: Proto.OriginClientPropertiesMessage): Promise<void> {\n debug('Origin client update properties', message);\n\n this.emit('originClientProperties', message);\n }\n\n async #onPlayerClientPropertiesMessage(message: Proto.PlayerClientPropertiesMessage): Promise<void> {\n debug('Player client properties', message);\n\n this.emit('playerClientProperties', message);\n }\n\n async #onSendCommandResultMessage(message: Proto.SendCommandResultMessage): Promise<void> {\n debug('Send command result', message);\n\n this.emit('sendCommandResult', message);\n }\n\n async #onSetArtworkMessage(message: Proto.SetArtworkMessage): Promise<void> {\n debug('Set artwork', message);\n\n this.emit('setArtwork', message);\n }\n\n async #onSetDefaultSupportedCommandsMessage(message: Proto.SetDefaultSupportedCommandsMessage): Promise<void> {\n debug('Set default supported commands', message);\n\n this.emit('setDefaultSupportedCommands', message);\n }\n\n async #onSetNowPlayingClientMessage(message: Proto.SetNowPlayingClientMessage): Promise<void> {\n debug('Set now playing client', message);\n\n this.emit('nowPlayingClient', message);\n }\n\n async #onSetNowPlayingPlayerMessage(message: Proto.SetNowPlayingPlayerMessage): Promise<void> {\n debug('Set now playing player', message);\n\n this.emit('nowPlayingPlayer', message);\n }\n\n async #onSetStateMessage(message: Proto.SetStateMessage): Promise<void> {\n debug('Set state', message);\n\n this.emit('setState', message);\n }\n\n async #onUpdateClientMessage(message: Proto.UpdateClientMessage): Promise<void> {\n debug('Update client', message);\n\n this.emit('updateClient', message);\n }\n\n async #onUpdateContentItemMessage(message: Proto.UpdateContentItemMessage): Promise<void> {\n debug('Update content item', message);\n\n this.emit('updateContentItem', message);\n }\n\n async #onUpdateContentItemArtworkMessage(message: Proto.UpdateContentItemArtworkMessage): Promise<void> {\n debug('Update content artwork', message);\n\n this.emit('updateContentItemArtwork', message);\n }\n\n async #onUpdatePlayerMessage(message: Proto.UpdatePlayerMessage): Promise<void> {\n debug('Update player', message);\n\n this.emit('updatePlayer', message);\n }\n\n async #onUpdateOutputDeviceMessage(message: Proto.UpdateOutputDeviceMessage): Promise<void> {\n debug('Update output device', message);\n\n this.emit('updateOutputDevice', message);\n }\n\n async #onVolumeControlAvailabilityMessage(message: Proto.VolumeControlAvailabilityMessage): Promise<void> {\n debug('Volume control availability', message);\n\n this.emit('volumeControlAvailability', message);\n }\n\n async #onVolumeControlCapabilitiesDidChangeMessage(message: Proto.VolumeControlCapabilitiesDidChangeMessage): Promise<void> {\n debug('Volume control capabilities did change', message);\n\n this.emit('volumeControlCapabilitiesDidChange', message);\n }\n\n async #onVolumeDidChangeMessage(message: Proto.VolumeDidChangeMessage): Promise<void> {\n debug('VolumeDidChange message', message);\n\n this.emit('volumeDidChange', message);\n }\n\n async #decrypt(data: Buffer): Promise<Buffer> {\n const result: Buffer[] = [];\n let offset = 0;\n let readCount = this.#readCount ?? 0;\n\n while (offset < data.length) {\n if (offset + 2 > data.length) throw new Error('Truncated frame length');\n const frameLength = data.readUInt16LE(offset);\n offset += 2;\n\n const nonce = Buffer.alloc(12);\n nonce.writeBigUInt64LE(BigInt(readCount++), 4);\n\n const end = offset + frameLength + 16;\n if (end > data.length) {\n throw new Error(`Truncated frame end=${end} length=${data.length}`);\n }\n\n const ciphertext = data.subarray(offset, offset + frameLength);\n const authTag = data.subarray(offset + frameLength, end);\n offset = end;\n\n const plaintext = decryptChacha20(\n this.readKey,\n nonce,\n Buffer.from(Uint16Array.of(frameLength).buffer.slice(0, 2)), // same AAD = leLength\n ciphertext,\n authTag\n );\n\n result.push(plaintext);\n }\n\n this.#readCount = readCount;\n\n return Buffer.concat(result);\n }\n\n async #encrypt(data: Buffer): Promise<Buffer> {\n const FRAME_LENGTH = 1024;\n const result: Buffer[] = [];\n\n for (let offset = 0; offset < data.length;) {\n const frame = data.subarray(offset, offset + FRAME_LENGTH);\n offset += frame.length;\n\n const leLength = Buffer.alloc(2);\n leLength.writeUInt16LE(frame.length, 0);\n\n const nonce = Buffer.alloc(12);\n nonce.writeBigUInt64LE(BigInt(this.#writeCount++), 4);\n\n const encrypted = encryptChacha20(\n this.writeKey,\n nonce,\n leLength,\n frame\n );\n\n result.push(leLength, encrypted.ciphertext, encrypted.authTag);\n }\n\n return Buffer.concat(result);\n }\n\n async #handleMessage(message: Proto.ProtocolMessage): Promise<void> {\n if (this.#handler) {\n const [resolve] = this.#handler;\n this.#handler = undefined;\n\n resolve(message);\n }\n\n switch (message.type) {\n case Proto.ProtocolMessage_Type.DEVICE_INFO_MESSAGE:\n await this.#onDeviceInfoMessage(getExtension(message, Proto.deviceInfoMessage));\n break;\n\n case Proto.ProtocolMessage_Type.ORIGIN_CLIENT_PROPERTIES_MESSAGE:\n await this.#onOriginClientPropertiesMessage(getExtension(message, Proto.originClientPropertiesMessage));\n break;\n\n case Proto.ProtocolMessage_Type.PLAYER_CLIENT_PROPERTIES_MESSAGE:\n await this.#onPlayerClientPropertiesMessage(getExtension(message, Proto.playerClientPropertiesMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SEND_COMMAND_RESULT_MESSAGE:\n await this.#onSendCommandResultMessage(getExtension(message, Proto.sendCommandResultMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SET_ARTWORK_MESSAGE:\n await this.#onSetArtworkMessage(getExtension(message, Proto.setArtworkMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE:\n await this.#onSetDefaultSupportedCommandsMessage(getExtension(message, Proto.setDefaultSupportedCommandsMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SET_NOW_PLAYING_CLIENT_MESSAGE:\n await this.#onSetNowPlayingClientMessage(getExtension(message, Proto.setNowPlayingClientMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SET_NOW_PLAYING_PLAYER_MESSAGE:\n await this.#onSetNowPlayingPlayerMessage(getExtension(message, Proto.setNowPlayingPlayerMessage));\n break;\n\n case Proto.ProtocolMessage_Type.SET_STATE_MESSAGE:\n await this.#onSetStateMessage(getExtension(message, Proto.setStateMessage));\n break;\n\n case Proto.ProtocolMessage_Type.UPDATE_CLIENT_MESSAGE:\n await this.#onUpdateClientMessage(getExtension(message, Proto.updateClientMessage));\n break;\n\n case Proto.ProtocolMessage_Type.UPDATE_CONTENT_ITEM_MESSAGE:\n await this.#onUpdateContentItemMessage(getExtension(message, Proto.updateContentItemMessage));\n break;\n\n case Proto.ProtocolMessage_Type.UPDATE_CONTENT_ITEM_ARTWORK_MESSAGE:\n await this.#onUpdateContentItemArtworkMessage(getExtension(message, Proto.updateContentItemArtworkMessage));\n break;\n\n case Proto.ProtocolMessage_Type.UPDATE_PLAYER_MESSAGE:\n await this.#onUpdatePlayerMessage(getExtension(message, Proto.updatePlayerMessage));\n break;\n\n case Proto.ProtocolMessage_Type.UPDATE_OUTPUT_DEVICE_MESSAGE:\n await this.#onUpdateOutputDeviceMessage(getExtension(message, Proto.updateOutputDeviceMessage));\n break;\n\n case Proto.ProtocolMessage_Type.VOLUME_CONTROL_AVAILABILITY_MESSAGE:\n await this.#onVolumeControlAvailabilityMessage(getExtension(message, Proto.volumeControlAvailabilityMessage));\n break;\n\n case Proto.ProtocolMessage_Type.VOLUME_CONTROL_CAPABILITIES_DID_CHANGE_MESSAGE:\n await this.#onVolumeControlCapabilitiesDidChangeMessage(getExtension(message, Proto.volumeControlCapabilitiesDidChangeMessage));\n break;\n\n case Proto.ProtocolMessage_Type.VOLUME_DID_CHANGE_MESSAGE:\n await this.#onVolumeDidChangeMessage(getExtension(message, Proto.volumeDidChangeMessage));\n break;\n\n default:\n debug('Received unknown message.', message);\n break;\n }\n }\n}\n\nfunction buildHeader(totalSize: number, seqno: bigint): Buffer {\n const buf = Buffer.alloc(32);\n\n buf.writeUInt32BE(totalSize, 0);\n buf.write('sync', 4, 'ascii');\n buf.fill(0, 8, 16);\n buf.write('comm', 16, 'ascii');\n buf.writeBigUInt64BE(seqno, 20);\n buf.writeUInt32BE(0, 28);\n\n return buf;\n}\n\nfunction buildReply(seqno: bigint): Buffer {\n const header = Buffer.alloc(32);\n header.writeUInt32BE(0, 0); // placeholder\n header.write('rply', 4, 'ascii');\n header.fill(0, 8, 16);\n header.writeBigUInt64BE(seqno, 20);\n header.writeUInt32BE(0, 28);\n\n const plist = Buffer.from(\n serializeBinaryPlist(Buffer.alloc(0) as any)\n );\n\n const total = header.length + plist.length;\n header.writeUInt32BE(total, 0);\n\n return Buffer.concat([header, plist]);\n}\n\nfunction encodeVarint(value: number): Uint8Array {\n if (value < 0) {\n throw new RangeError('Varint only supports non-negative integers');\n }\n\n const bytes: number[] = [];\n while (value > 127) {\n bytes.push((value & 0x7f) | 0x80);\n value >>>= 7;\n }\n\n bytes.push(value);\n\n return Uint8Array.from(bytes);\n}\n\nfunction parseHeaderSeqno(header: Buffer): bigint {\n if (header.length < 28) {\n throw new Error('Header too short');\n }\n\n return header.readBigUInt64BE(20);\n}\n\nasync function parseMessages(content: Buffer): Promise<Proto.ProtocolMessage[]> {\n const messages: Proto.ProtocolMessage[] = [];\n let offset = 0;\n\n while (offset < content.length) {\n const firstByte = content[offset];\n\n if (firstByte === 0x08) {\n const message = content.subarray(offset);\n const decoded = fromBinary(Proto.ProtocolMessageSchema, message, {readUnknownFields: true});\n messages.push(decoded);\n break;\n }\n\n const [length, variantLen] = readVariant(content, offset);\n offset += variantLen;\n\n if (offset + length > content.length) {\n break;\n }\n\n const message = content.subarray(offset, offset + length);\n offset += length;\n\n const decoded = fromBinary(Proto.ProtocolMessageSchema, message, {readUnknownFields: true});\n messages.push(decoded);\n }\n\n return messages;\n}\n\nfunction readVariant(buf: Buffer, offset = 0): [number, number] {\n let result = 0;\n let shift = 0;\n let bytesRead = 0;\n\n while (true) {\n const byte = buf[offset + bytesRead++];\n result |= (byte & 0x7f) << shift;\n\n if ((byte & 0x80) === 0) {\n break;\n }\n\n shift += 7;\n }\n\n return [result, bytesRead];\n}\n",
56
9
  "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file AudioFadeMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { PlayerPath } from \"./PlayerPath_pb\";\nimport { file_PlayerPath } from \"./PlayerPath_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file AudioFadeMessage.proto.\n */\nexport const file_AudioFadeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChZBdWRpb0ZhZGVNZXNzYWdlLnByb3RvIkUKEEF1ZGlvRmFkZU1lc3NhZ2USHwoKcGxheWVyUGF0aBgBIAEoCzILLlBsYXllclBhdGgSEAoIZmFkZVR5cGUYAiABKAU6TwoQYXVkaW9GYWRlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRhYIAEoCzIRLkF1ZGlvRmFkZU1lc3NhZ2VSEGF1ZGlvRmFkZU1lc3NhZ2U\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message AudioFadeMessage\n */\nexport type AudioFadeMessage = Message<\"AudioFadeMessage\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional int32 fadeType = 2;\n */\n fadeType: number;\n};\n\n/**\n * Describes the message AudioFadeMessage.\n * Use `create(AudioFadeMessageSchema)` to create a new message.\n */\nexport const AudioFadeMessageSchema: GenMessage<AudioFadeMessage> = /*@__PURE__*/\n messageDesc(file_AudioFadeMessage, 0);\n\n/**\n * @generated from extension: optional AudioFadeMessage audioFadeMessage = 88;\n */\nexport const audioFadeMessage: GenExtension<ProtocolMessage, AudioFadeMessage> = /*@__PURE__*/\n extDesc(file_AudioFadeMessage, 0);\n\n",
@@ -135,11 +88,9 @@
135
88
  "import { debug, hkdf, parseBinaryPlist } from '@basmilius/apple-common';\nimport type { RTSPMethod } from './types';\nimport { makeHttpRequest } from './utils';\nimport AirPlayStream from './stream';\n\nexport default class AirPlayEventStream extends AirPlayStream<never> {\n #buffer: Buffer = Buffer.alloc(0);\n\n async respond(response: Response): Promise<void> {\n const body = Buffer.from(await response.arrayBuffer());\n\n const header = [];\n header.push(`RTSP/1.0 ${response.status} ${response.statusText}`);\n\n for (const [name, value] of Object.entries(response.headers)) {\n header.push(`${name}: ${value}`);\n }\n\n if (body.byteLength > 0) {\n header.push(`Content-Length: ${body.byteLength}`);\n } else {\n header.push('Content-Length: 0');\n }\n\n header.push('');\n header.push('');\n\n const headers = header.join('\\r\\n');\n let data: Buffer;\n\n if (response.body) {\n data = Buffer.concat([\n Buffer.from(headers),\n body\n ]);\n } else {\n data = Buffer.from(headers);\n }\n\n debug(data.toString());\n\n if (this.isEncrypted) {\n data = await this.encrypt(data);\n }\n\n this.socket.write(data);\n }\n\n async setup(sharedSecret: Buffer): Promise<void> {\n const readKey = hkdf({\n hash: 'sha512',\n key: sharedSecret,\n length: 32,\n salt: Buffer.from('Events-Salt'),\n info: Buffer.from('Events-Read-Encryption-Key')\n });\n\n const writeKey = hkdf({\n hash: 'sha512',\n key: sharedSecret,\n length: 32,\n salt: Buffer.from('Events-Salt'),\n info: Buffer.from('Events-Write-Encryption-Key')\n });\n\n await this.enableEncryption(writeKey, readKey);\n }\n\n async onData(buffer: Buffer): Promise<void> {\n this.#buffer = Buffer.concat([this.#buffer, buffer]);\n\n if (this.isEncrypted) {\n this.#buffer = await this.decrypt(this.#buffer);\n }\n\n // debug('Event stream received data', this.#buffer.toString());\n\n while (this.#buffer.byteLength > 0) {\n const result = makeHttpRequest(this.#buffer);\n\n if (result === null) {\n return;\n }\n\n this.#buffer = this.#buffer.subarray(result.requestLength);\n\n await this.#handle(result.method, result.path, result.headers, result.body);\n }\n }\n\n async #handle(method: RTSPMethod, path: string, headers: Record<string, string>, body: Buffer): Promise<void> {\n const key = `${method} ${path}`;\n\n debug(key);\n\n switch (key) {\n case 'POST /command':\n const data = parseBinaryPlist(body.buffer.slice(body.byteOffset, body.byteOffset + body.byteLength) as any) as any;\n\n debug(data);\n\n const response = new Response(null, {\n status: 200,\n statusText: 'OK',\n headers: {\n 'Audio-Latency': '0',\n 'CSeq': (headers['CSeq'] ?? 0).toString()\n }\n });\n\n await this.respond(response);\n break;\n\n default:\n debug('No handler for url', key);\n break;\n }\n }\n}\n",
136
89
  "import { type AccessoryCredentials, type AccessoryKeys, AccessoryPair } from '@basmilius/apple-common';\nimport type AirPlay from './protocol';\nimport type AirPlayRTSP from './rtsp';\n\nexport default class AirPlayPairing {\n get internal(): AccessoryPair {\n return this.#internal;\n }\n\n get rtsp(): AirPlayRTSP {\n return this.#protocol.rtsp;\n }\n\n readonly #internal: AccessoryPair;\n readonly #protocol: AirPlay;\n #hkp: 3 | 4;\n\n constructor(protocol: AirPlay) {\n this.#internal = new AccessoryPair(this.#request.bind(this));\n this.#protocol = protocol;\n }\n\n async start(): Promise<void> {\n await this.#internal.start();\n }\n\n async pin(askPin: () => Promise<string>): Promise<AccessoryCredentials> {\n this.#hkp = 3;\n\n await this.#pinStart();\n\n return this.#internal.pin(askPin);\n }\n\n async pinStart(): Promise<void> {\n this.#hkp = 3;\n\n await this.#pinStart();\n }\n\n async transient(): Promise<AccessoryKeys> {\n this.#hkp = 4;\n\n await this.#pinStart();\n\n return this.#internal.transient();\n }\n\n async #pinStart(): Promise<void> {\n const response = await this.rtsp.post('/pair-pin-start', null, {\n 'Content-Type': 'application/octet-stream',\n 'X-Apple-HKP': this.#hkp.toString()\n });\n\n if (response.status !== 200) {\n throw new Error('Cannot start pairing session.');\n }\n }\n\n async #request(_: 'm1' | 'm3' | 'm5', data: Buffer): Promise<Buffer> {\n const response = await this.rtsp.post('/pair-setup', data, {\n 'Content-Type': 'application/octet-stream',\n 'X-Apple-HKP': this.#hkp.toString()\n });\n\n return Buffer.from(await response.arrayBuffer());\n }\n}\n",
137
90
  "import { debug, HTTP_TIMEOUT } from '@basmilius/apple-common';\nimport type { RTSPMethod } from './types';\nimport { makeHttpHeader, makeHttpResponse } from './utils';\nimport AirPlayStream from './stream';\n\nexport default class AirPlayRTSP extends AirPlayStream<never> {\n get activeRemote(): string {\n return this.#activeRemote;\n }\n\n get dacpId(): string {\n return this.#dacpId;\n }\n\n get sessionId(): string {\n return this.#sessionId;\n }\n\n readonly #activeRemote: string;\n readonly #dacpId: string;\n readonly #sessionId: string;\n #buffer: Buffer = Buffer.alloc(0);\n #cseq: number = 0;\n #requesting: boolean = false;\n #reject: Function;\n #resolve: Function;\n\n constructor(address: string, port: number) {\n super(address, port);\n\n this.#activeRemote = Math.floor(Math.random() * 2 ** 32).toString(10);\n this.#dacpId = Math.floor(Math.random() * 2 ** 64).toString(16).toUpperCase();\n this.#sessionId = Math.floor(Math.random() * 2 ** 32).toString(10);\n }\n\n async get(path: string, headers: HeadersInit = {}): Promise<Response> {\n return await this.#request('GET', path, null, headers);\n }\n\n async post(path: string, body: Buffer | string | null = null, headers: HeadersInit = {}): Promise<Response> {\n return await this.#request('POST', path, body, headers);\n }\n\n async record(path: string, headers: HeadersInit = {}): Promise<Response> {\n return await this.#request('RECORD', path, null, headers);\n }\n\n async setup(path: string, body: Buffer | string | null = null, headers: HeadersInit = {}): Promise<Response> {\n return await this.#request('SETUP', path, body, headers);\n }\n\n async onClose(): Promise<void> {\n await super.onClose();\n await this.#handle(undefined, new Error('Connection closed.'));\n }\n\n async onData(buffer: Buffer): Promise<void> {\n this.#buffer = Buffer.concat([this.#buffer, buffer]);\n\n if (this.isEncrypted) {\n this.#buffer = await this.decrypt(this.#buffer);\n }\n\n while (this.#buffer.byteLength > 0) {\n const result = makeHttpResponse(this.#buffer);\n\n if (result === null) {\n return;\n }\n\n this.#buffer = this.#buffer.subarray(result.responseLength);\n\n await this.#handle(result.response, undefined);\n }\n }\n\n async onError(err: Error): Promise<void> {\n await super.onError(err);\n await this.#handle(undefined, err);\n }\n\n async #handle(data: unknown, err?: Error): Promise<void> {\n if (err) {\n this.#reject?.(err);\n } else {\n this.#resolve?.(data);\n }\n\n this.#reject = undefined;\n this.#resolve = undefined;\n this.#requesting = false;\n }\n\n async #request(method: RTSPMethod, path: string, body: Buffer | string | null, headers: HeadersInit): Promise<Response> {\n if (this.#requesting) {\n throw new Error('Another request is currently being made.');\n }\n\n this.#requesting = true;\n\n headers['Active-Remote'] = this.activeRemote;\n headers['Client-Instance'] = this.dacpId;\n headers['DACP-ID'] = this.dacpId;\n\n let data: Buffer;\n\n if (body) {\n headers['Content-Length'] = Buffer.byteLength(body).toString();\n\n data = Buffer.concat([\n Buffer.from(makeHttpHeader(method, path, headers, this.#cseq++)),\n Buffer.from(body)\n ]);\n } else {\n headers['Content-Length'] = '0';\n\n data = Buffer.from(makeHttpHeader(method, path, headers, this.#cseq++));\n }\n\n debug(method, path);\n\n if (this.isEncrypted) {\n data = await this.encrypt(data);\n }\n\n return new Promise(async (resolve, reject) => {\n let timer: any;\n\n this.#reject = (reason: Error): void => {\n reject(reason);\n clearTimeout(timer);\n };\n\n this.#resolve = (response: Response): void => {\n resolve(response);\n clearTimeout(timer);\n };\n\n timer = setTimeout(() => reject(new Error('Request timed out')), HTTP_TIMEOUT);\n\n this.socket.write(data);\n });\n }\n}\n",
138
- "import { type AccessoryCredentials, type AccessoryKeys, AccessoryVerify, hkdf } from '@basmilius/apple-common';\nimport type AirPlay from './protocol';\nimport type AirPlayRTSP from './rtsp';\n\nexport default class AirPlayVerify {\n get rtsp(): AirPlayRTSP {\n return this.#protocol.rtsp;\n }\n\n readonly #internal: AccessoryVerify;\n readonly #protocol: AirPlay;\n\n constructor(protocol: AirPlay) {\n this.#internal = new AccessoryVerify(this.#request.bind(this));\n this.#protocol = protocol;\n }\n\n async start(credentials: AccessoryCredentials): Promise<AccessoryKeys> {\n const keys = await this.#internal.start(credentials);\n\n const accessoryToControllerKey = hkdf({\n hash: 'sha512',\n key: keys.sharedSecret,\n length: 32,\n salt: Buffer.from('Control-Salt'),\n info: Buffer.from('Control-Read-Encryption-Key')\n });\n\n const controllerToAccessoryKey = hkdf({\n hash: 'sha512',\n key: keys.sharedSecret,\n length: 32,\n salt: Buffer.from('Control-Salt'),\n info: Buffer.from('Control-Write-Encryption-Key')\n });\n\n return {\n accessoryToControllerKey,\n controllerToAccessoryKey,\n pairingId: keys.pairingId,\n sharedSecret: keys.sharedSecret\n };\n }\n\n async #request(_: 'm1' | 'm3' | 'm5', data: Buffer): Promise<Buffer> {\n const response = await this.rtsp.post('/pair-verify', data, {\n 'Content-Type': 'application/octet-stream',\n 'X-Apple-HKP': '3'\n });\n\n return Buffer.from(await response.arrayBuffer());\n }\n}\n",
139
- "import { debug, type DiscoveryResult, getMacAddress, parseBinaryPlist, serializeBinaryPlist, uuid } from '@basmilius/apple-common';\nimport { randomInt64 } from './utils';\nimport DataStream from './dataStream';\nimport EventStream from './eventStream';\nimport Pairing from './pairing';\nimport RTSP from './rtsp';\nimport Verify from './verify';\n\nexport default class AirPlay {\n get device(): DiscoveryResult {\n return this.#device;\n }\n\n get dataStream(): DataStream | undefined {\n return this.#dataStream;\n }\n\n get eventStream(): EventStream | undefined {\n return this.#eventStream;\n }\n\n get pairing(): Pairing {\n return this.#pairing;\n }\n\n get rtsp(): RTSP {\n return this.#rtsp;\n }\n\n get verify(): Verify {\n return this.#verify;\n }\n\n readonly #device: DiscoveryResult;\n readonly #pairing: Pairing;\n readonly #rtsp: RTSP;\n readonly #verify: Verify;\n readonly #sessionUUID: string;\n #dataStream?: DataStream;\n #eventStream?: EventStream;\n\n constructor(device: DiscoveryResult) {\n this.#device = device;\n this.#rtsp = new RTSP(device.address, device.service.port);\n this.#pairing = new Pairing(this);\n this.#verify = new Verify(this);\n this.#sessionUUID = uuid();\n }\n\n async connect(): Promise<void> {\n await this.#rtsp.connect();\n }\n\n async disconnect(): Promise<void> {\n await this.#rtsp.disconnect();\n }\n\n async feedback(): Promise<void> {\n await this.#rtsp.post('/feedback');\n }\n\n async setupDataStream(sharedSecret: Buffer): Promise<void> {\n const seed = randomInt64();\n const request = serializeBinaryPlist({\n streams: [\n {\n controlType: 2,\n channelID: '3ZDG',\n seed,\n clientUUID: uuid().toUpperCase(),\n type: 130,\n wantsDedicatedSocket: true,\n clientTypeUUID: '1910A70F-DBC0-4242-AF95-115DB30604E1'\n }\n ]\n });\n\n const response = await this.#rtsp.setup(`/${this.rtsp.sessionId}`, Buffer.from(request), {\n 'Content-Type': 'application/x-apple-binary-plist'\n });\n\n const plist = parseBinaryPlist(await response.arrayBuffer()) as any;\n const dataPort = plist.streams[0].dataPort & 0xFFFF;\n debug('Should listen on data port', dataPort);\n\n this.#dataStream = new DataStream(this.#rtsp.address, dataPort);\n await this.#dataStream.setup(sharedSecret, seed);\n await this.#dataStream.connect();\n }\n\n async setupEventStream(pairingId: Buffer, sharedSecret: Buffer): Promise<void> {\n const request = serializeBinaryPlist({\n deviceID: pairingId.toString(),\n macAddress: getMacAddress().toUpperCase(),\n name: 'iPhone van Bas',\n model: 'iPhone16,2',\n osBuildVersion: '23B82',\n osName: 'iPhone OS',\n osVersion: '26.1',\n sourceVersion: '550.10',\n sessionUUID: this.#sessionUUID,\n sessionCorrelationUUID: 'BBB3A645-7453-46B2-92CF-30A8E1F02D26',\n timingProtocol: 'None',\n isRemoteControlOnly: true,\n startsCollectionEnabled: false,\n updateSessionRequest: false,\n });\n\n const response = await this.#rtsp.setup(`/${this.rtsp.sessionId}`, Buffer.from(request), {\n 'Content-Type': 'application/x-apple-binary-plist'\n });\n\n const plist = parseBinaryPlist(await response.arrayBuffer()) as any;\n const eventPort = plist.eventPort & 0xFFFF;\n debug('Should listen on event port', eventPort);\n\n this.#eventStream = new EventStream(this.#rtsp.address, eventPort);\n await this.#eventStream.setup(sharedSecret);\n await this.#eventStream.connect();\n\n await this.#rtsp.record(`/${this.rtsp.sessionId}`);\n }\n}\n",
140
- "import { Discovery, prompt } from '@basmilius/apple-common';\nimport { AirPlay } from '@/protocol';\n\nasync function homepod(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Slaapkamer HomePod._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n\n await protocol.pairing.start();\n const keys = await protocol.pairing.transient();\n\n await protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await protocol.setupDataStream(keys.sharedSecret);\n\n setInterval(() => protocol.feedback(), 2000);\n\n await protocol.dataStream.exchange(protocol.dataStream.messages.deviceInfo(keys.pairingId));\n\n protocol.dataStream.addListener('deviceInfo', async () => {\n await protocol.dataStream.exchange(protocol.dataStream.messages.setConnectionState());\n await protocol.dataStream.exchange(protocol.dataStream.messages.clientUpdatesConfig());\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Play));\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.notification([\n // 'Hallo wereld!'\n // ]));\n });\n}\n\nasync function tv(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Woonkamer TV._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n\n const keys = await protocol.verify.start({\n accessoryIdentifier: '7EEEA518-06CC-486C-A8B8-4A07CDBE6267',\n accessoryLongTermPublicKey: Buffer.from('cfb3fb0e0eb494d9058d5051c94400b35251e3faad66542b9551a1496570628d', 'hex'),\n pairingId: Buffer.from('38393044453445352d463738442d344131332d393231392d434231433237304438323341', 'hex'),\n publicKey: Buffer.from('a3dfd6e3956006afd91204d68ddf9c26c7d9d77eee5506c69e7fe3af1288d0f4', 'hex'),\n secretKey: Buffer.from('6961e16b52f5f0be1b7723c9436356d498b4f9629f0227706a1465c5d18dbf0ba3dfd6e3956006afd91204d68ddf9c26c7d9d77eee5506c69e7fe3af1288d0f4', 'hex')\n });\n\n await protocol.rtsp.enableEncryption(\n keys.accessoryToControllerKey,\n keys.controllerToAccessoryKey\n );\n\n await protocol.setupEventStream(keys.pairingId, keys.sharedSecret);\n await protocol.setupDataStream(keys.sharedSecret);\n\n setInterval(() => protocol.feedback(), 2000);\n\n await protocol.dataStream.exchange(protocol.dataStream.messages.deviceInfo(keys.pairingId));\n\n protocol.dataStream.addListener('deviceInfo', async () => {\n await protocol.dataStream.exchange(protocol.dataStream.messages.setConnectionState());\n await protocol.dataStream.exchange(protocol.dataStream.messages.clientUpdatesConfig());\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Rewind15Seconds));\n\n // await waitFor(1000);\n\n // const options = create(Proto.CommandOptionsSchema, {\n // stationURL: 'https://bmcdn.nl/doorbell.ogg'\n // });\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendCommand(Proto.Command.Play, options));\n\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendButtonEvent(12, 0x40, true));\n // await protocol.dataStream.exchange(protocol.dataStream.messages.sendButtonEvent(12, 0x40, false));\n });\n\n /*\n \"up\": (1, 0x8C),\n \"down\": (1, 0x8D),\n \"left\": (1, 0x8B),\n \"right\": (1, 0x8A),\n \"stop\": (12, 0xB7),\n \"next\": (12, 0xB5),\n \"previous\": (12, 0xB6),\n \"select\": (1, 0x89),\n \"menu\": (1, 0x86),\n \"topmenu\": (12, 0x60),\n \"home\": (12, 0x40),\n \"suspend\": (1, 0x82),\n \"wakeup\": (1, 0x83),\n \"volume_up\": (12, 0xE9),\n \"volume_down\": (12, 0xEA),\n 'mic': (12, 0x04),\n */\n}\n\nasync function tvPair(): Promise<void> {\n const discovery = Discovery.airplay();\n const device = await discovery.findUntil('Woonkamer TV._airplay._tcp.local');\n const protocol = new AirPlay(device);\n\n await protocol.connect();\n await protocol.pairing.start();\n\n const credentials = await protocol.pairing.pin(async () => await prompt('Enter PIN'));\n\n console.log({\n accessoryIdentifier: credentials.accessoryIdentifier,\n accessoryLongTermPublicKey: credentials.accessoryLongTermPublicKey.toString('hex'),\n pairingId: credentials.pairingId.toString('hex'),\n publicKey: credentials.publicKey.toString('hex'),\n secretKey: credentials.secretKey.toString('hex')\n });\n}\n\nconst what = process.argv[1] ?? null;\n\nswitch (what) {\n case 'homepod':\n await homepod();\n break;\n\n case 'tv':\n await tv();\n break;\n\n case 'tvPair':\n await tvPair();\n break;\n\n default:\n console.error('Unknown test, please use specify either homepod, tv or tvPair.');\n break;\n}\n"
91
+ "import { type AccessoryCredentials, type AccessoryKeys, AccessoryVerify, hkdf } from '@basmilius/apple-common';\nimport type AirPlay from './protocol';\nimport type AirPlayRTSP from './rtsp';\n\nexport default class AirPlayVerify {\n get rtsp(): AirPlayRTSP {\n return this.#protocol.rtsp;\n }\n\n readonly #internal: AccessoryVerify;\n readonly #protocol: AirPlay;\n\n constructor(protocol: AirPlay) {\n this.#internal = new AccessoryVerify(this.#request.bind(this));\n this.#protocol = protocol;\n }\n\n async start(credentials: AccessoryCredentials): Promise<AccessoryKeys> {\n const keys = await this.#internal.start(credentials);\n\n const accessoryToControllerKey = hkdf({\n hash: 'sha512',\n key: keys.sharedSecret,\n length: 32,\n salt: Buffer.from('Control-Salt'),\n info: Buffer.from('Control-Read-Encryption-Key')\n });\n\n const controllerToAccessoryKey = hkdf({\n hash: 'sha512',\n key: keys.sharedSecret,\n length: 32,\n salt: Buffer.from('Control-Salt'),\n info: Buffer.from('Control-Write-Encryption-Key')\n });\n\n return {\n accessoryToControllerKey,\n controllerToAccessoryKey,\n pairingId: keys.pairingId,\n sharedSecret: keys.sharedSecret\n };\n }\n\n async #request(_: 'm1' | 'm3' | 'm5', data: Buffer): Promise<Buffer> {\n const response = await this.rtsp.post('/pair-verify', data, {\n 'Content-Type': 'application/octet-stream',\n 'X-Apple-HKP': '3'\n });\n\n return Buffer.from(await response.arrayBuffer());\n }\n}\n"
141
92
  ],
142
- "mappings": "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MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAG,GAAK,MAAO,IAAM,EAAG,GAAK,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAG,GAAK,MAAO,IAAM,EAAG,GAAK,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAG,GAAK,MAAO,IAAM,EAAG,GAAK,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAG,GAAK,MAAO,IAAM,EAAG,GAAK,MAAO,GAC9E,GAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAG,GAAK,MAAO,IAAM,EAAG,GAAK,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAG,GAAK,KAAQ,EAAG,GAAK,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,GAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,GAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,GAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,IAAM,EAAE,IAAM,MAAO,GAC9E,EAAM,EAAE,IAAM,KAAQ,EAAE,IAAM,MAAO,GAAK,EAAE,IAAM,MAAO,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",
143
- "debugId": "E8B9F7594D48676364756E2164756E21",
93
+ "mappings": "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",
94
+ "debugId": "6A90E498710FC8B864756E2164756E21",
144
95
  "names": []
145
96
  }