@basmilius/apple-airplay 0.0.11 → 0.0.13

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.
Files changed (95) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +156 -2
  3. package/dist/index.js.map +138 -3
  4. package/dist/proto/AudioFadeMessage_pb.d.ts +30 -0
  5. package/dist/proto/AudioFadeResponseMessage_pb.d.ts +25 -0
  6. package/dist/proto/AudioFormatSettingsMessage_pb.d.ts +20 -0
  7. package/dist/proto/ClientUpdatesConfigMessage_pb.d.ts +41 -0
  8. package/dist/proto/CommandInfo_pb.d.ts +452 -0
  9. package/dist/proto/CommandOptions_pb.d.ts +137 -0
  10. package/dist/proto/Common_pb.d.ts +306 -0
  11. package/dist/proto/ConfigureConnectionMessage_pb.d.ts +25 -0
  12. package/dist/proto/ContentItemMetadata_pb.d.ts +812 -0
  13. package/dist/proto/ContentItem_pb.d.ts +91 -0
  14. package/dist/proto/CryptoPairingMessage_pb.d.ts +45 -0
  15. package/dist/proto/DeviceInfoMessage_pb.d.ts +270 -0
  16. package/dist/proto/GenericMessage_pb.d.ts +29 -0
  17. package/dist/proto/GetKeyboardSessionMessage_pb.d.ts +20 -0
  18. package/dist/proto/GetRemoteTextInputSessionMessage_pb.d.ts +20 -0
  19. package/dist/proto/GetVolumeMessage_pb.d.ts +25 -0
  20. package/dist/proto/GetVolumeResultMessage_pb.d.ts +25 -0
  21. package/dist/proto/KeyboardMessage_pb.d.ts +321 -0
  22. package/dist/proto/LanguageOption_pb.d.ts +36 -0
  23. package/dist/proto/ModifyOutputContextRequestMessage_pb.d.ts +71 -0
  24. package/dist/proto/NotificationMessage_pb.d.ts +29 -0
  25. package/dist/proto/NowPlayingClient_pb.d.ts +46 -0
  26. package/dist/proto/NowPlayingInfo_pb.d.ts +89 -0
  27. package/dist/proto/NowPlayingPlayer_pb.d.ts +44 -0
  28. package/dist/proto/OriginClientPropertiesMessage_pb.d.ts +25 -0
  29. package/dist/proto/Origin_pb.d.ts +58 -0
  30. package/dist/proto/PlaybackQueueCapabilities_pb.d.ts +28 -0
  31. package/dist/proto/PlaybackQueueContext_pb.d.ts +20 -0
  32. package/dist/proto/PlaybackQueueRequestMessage_pb.d.ts +91 -0
  33. package/dist/proto/PlaybackQueue_pb.d.ts +47 -0
  34. package/dist/proto/PlayerClientPropertiesMessage_pb.d.ts +30 -0
  35. package/dist/proto/PlayerPath_pb.d.ts +31 -0
  36. package/dist/proto/ProtocolMessage_pb.d.ts +659 -0
  37. package/dist/proto/RegisterForGameControllerEventsMessage_pb.d.ts +50 -0
  38. package/dist/proto/RegisterHIDDeviceMessage_pb.d.ts +26 -0
  39. package/dist/proto/RegisterHIDDeviceResultMessage_pb.d.ts +29 -0
  40. package/dist/proto/RegisterVoiceInputDeviceMessage_pb.d.ts +26 -0
  41. package/dist/proto/RegisterVoiceInputDeviceResponseMessage_pb.d.ts +29 -0
  42. package/dist/proto/RemoteTextInputMessage_pb.d.ts +33 -0
  43. package/dist/proto/RemoveClientMessage_pb.d.ts +26 -0
  44. package/dist/proto/RemoveEndpointsMessage_pb.d.ts +25 -0
  45. package/dist/proto/RemoveOutputDevicesMessage_pb.d.ts +29 -0
  46. package/dist/proto/RemovePlayerMessage_pb.d.ts +26 -0
  47. package/dist/proto/SendButtonEventMessage_pb.d.ts +33 -0
  48. package/dist/proto/SendCommandMessage_pb.d.ts +36 -0
  49. package/dist/proto/SendCommandResultMessage_pb.d.ts +363 -0
  50. package/dist/proto/SendHIDEventMessage_pb.d.ts +56 -0
  51. package/dist/proto/SendPackedVirtualTouchEventMessage_pb.d.ts +60 -0
  52. package/dist/proto/SendVoiceInputMessage_pb.d.ts +122 -0
  53. package/dist/proto/SetArtworkMessage_pb.d.ts +25 -0
  54. package/dist/proto/SetConnectionStateMessage_pb.d.ts +50 -0
  55. package/dist/proto/SetDefaultSupportedCommandsMessage_pb.d.ts +70 -0
  56. package/dist/proto/SetDiscoveryModeMessage_pb.d.ts +29 -0
  57. package/dist/proto/SetHiliteModeMessage_pb.d.ts +25 -0
  58. package/dist/proto/SetNowPlayingClientMessage_pb.d.ts +26 -0
  59. package/dist/proto/SetNowPlayingPlayerMessage_pb.d.ts +26 -0
  60. package/dist/proto/SetRecordingStateMessage_pb.d.ts +46 -0
  61. package/dist/proto/SetStateMessage_pb.d.ts +68 -0
  62. package/dist/proto/SetVolumeMessage_pb.d.ts +29 -0
  63. package/dist/proto/SupportedCommands_pb.d.ts +21 -0
  64. package/dist/proto/TextInputMessage_pb.d.ts +73 -0
  65. package/dist/proto/TransactionKey_pb.d.ts +24 -0
  66. package/dist/proto/TransactionMessage_pb.d.ts +35 -0
  67. package/dist/proto/TransactionPacket_pb.d.ts +37 -0
  68. package/dist/proto/TransactionPackets_pb.d.ts +21 -0
  69. package/dist/proto/UpdateClientMessage_pb.d.ts +26 -0
  70. package/dist/proto/UpdateContentItemArtworkMessage_pb.d.ts +31 -0
  71. package/dist/proto/UpdateContentItemMessage_pb.d.ts +31 -0
  72. package/dist/proto/UpdateEndPointsMessage_pb.d.ts +72 -0
  73. package/dist/proto/UpdateOutputDeviceMessage_pb.d.ts +322 -0
  74. package/dist/proto/UpdatePlayerPath_pb.d.ts +26 -0
  75. package/dist/proto/VirtualTouchDeviceDescriptorMessage_pb.d.ts +32 -0
  76. package/dist/proto/VoiceInputDeviceDescriptorMessage_pb.d.ts +25 -0
  77. package/dist/proto/VolumeControlAvailabilityMessage_pb.d.ts +66 -0
  78. package/dist/proto/VolumeControlCapabilitiesDidChangeMessage_pb.d.ts +34 -0
  79. package/dist/proto/VolumeDidChangeMessage_pb.d.ts +33 -0
  80. package/dist/proto/WakeDeviceMessage_pb.d.ts +20 -0
  81. package/dist/proto/index.d.ts +77 -0
  82. package/dist/protocol/dataStream.d.ts +13 -0
  83. package/dist/protocol/dataStreamMessages.d.ts +9 -0
  84. package/dist/protocol/eventStream.d.ts +7 -0
  85. package/dist/protocol/index.d.ts +7 -0
  86. package/dist/protocol/pairing.d.ts +12 -0
  87. package/dist/protocol/protocol.d.ts +21 -0
  88. package/dist/protocol/rtsp.d.ts +15 -0
  89. package/dist/protocol/stream.d.ts +22 -0
  90. package/dist/protocol/utils.d.ts +18 -0
  91. package/dist/protocol/verify.d.ts +9 -0
  92. package/dist/test.d.ts +1 -0
  93. package/dist/test.js +158 -0
  94. package/dist/test.js.map +145 -0
  95. package/package.json +6 -2
package/dist/index.js.map CHANGED
@@ -1,9 +1,144 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
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/protocol/dataStreamMessages.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/stream.ts", "../src/protocol/eventStream.ts", "../src/protocol/pairing.ts", "../src/protocol/rtsp.ts", "../src/protocol/verify.ts", "../src/protocol/protocol.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 ke(e){return await new Promise((n)=>fe.question(`${e}: `,n))}async function Y(e){return new Promise((n)=>setTimeout(n,e))}var L=\"3939\",Ce=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}class _ extends EventTarget{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 he}from\"fast-srp-hap\";import{v4 as ge}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(ge().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 he(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 wr}from\"uuid\";export{Y as waitFor,wr as uuid,me as serializeBinaryPlist,ke 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,Ce 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=FD90C40C2E246C2F64756E2164756E21\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",
54
+ "import { randomBytes } from 'node:crypto';\nimport { debug } from '@basmilius/apple-common';\nimport type { RTSPMethod } from '@/protocol/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
+ "import { debug, decryptChacha20, encryptChacha20, hkdf, parseBinaryPlist, serializeBinaryPlist } from '@basmilius/apple-common';\nimport { fromBinary, getExtension, toBinary } from '@bufbuild/protobuf';\nimport { randomInt32 } from './utils';\nimport AirPlayDataStreamMessages from './dataStreamMessages';\nimport AirPlayStream from './stream';\nimport * as Proto from '@/proto';\nimport { ProtocolMessage_Type } from '@/proto';\n\nconst DATA_HEADER_LENGTH = 32; // 4 + 12 + 4 + 8 + 4\n\nexport default class AirPlayDataStream extends AirPlayStream {\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(), frame.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.dispatchEvent(new CustomEvent('deviceInfo', {detail: message}));\n }\n\n async #onOriginClientPropertiesMessage(message: Proto.OriginClientPropertiesMessage): Promise<void> {\n debug('Origin client update properties', message);\n\n this.dispatchEvent(new CustomEvent('originClientProperties', {detail: message}));\n }\n\n async #onPlayerClientPropertiesMessage(message: Proto.PlayerClientPropertiesMessage): Promise<void> {\n debug('Player client properties', message);\n\n this.dispatchEvent(new CustomEvent('playerClientProperties', {detail: message}));\n }\n\n async #onSendCommandResultMessage(message: Proto.SendCommandResultMessage): Promise<void> {\n debug('Send command result', message);\n\n this.dispatchEvent(new CustomEvent('sendCommandResult', {detail: message}));\n }\n\n async #onSetDefaultSupportedCommandsMessage(message: Proto.SetDefaultSupportedCommandsMessage): Promise<void> {\n debug('Set default supported commands', message);\n\n this.dispatchEvent(new CustomEvent('setDefaultSupportedCommands', {detail: message}));\n }\n\n async #onSetNowPlayingClientMessage(message: Proto.SetNowPlayingClientMessage): Promise<void> {\n debug('Set now playing client', message);\n\n this.dispatchEvent(new CustomEvent('nowPlayingClient', {detail: message}));\n }\n\n async #onSetNowPlayingPlayerMessage(message: Proto.SetNowPlayingPlayerMessage): Promise<void> {\n debug('Set now playing player', message);\n\n this.dispatchEvent(new CustomEvent('nowPlayingPlayer', {detail: message}));\n }\n\n async #onSetStateMessage(message: Proto.SetStateMessage): Promise<void> {\n debug('Set state', message);\n\n this.dispatchEvent(new CustomEvent('setState', {detail: message}));\n }\n\n async #onUpdateClientMessage(message: Proto.UpdateClientMessage): Promise<void> {\n debug('Update client', message);\n\n this.dispatchEvent(new CustomEvent('updateClient', {detail: message}));\n }\n\n async #onUpdatePlayerMessage(message: Proto.UpdatePlayerMessage): Promise<void> {\n debug('Update player', message);\n\n this.dispatchEvent(new CustomEvent('updatePlayer', {detail: message}));\n }\n\n async #onUpdateOutputDeviceMessage(message: Proto.UpdateOutputDeviceMessage): Promise<void> {\n debug('Update output device', message);\n\n this.dispatchEvent(new CustomEvent('updateOutputDevice', {detail: message}));\n }\n\n async #onVolumeControlAvailabilityMessage(message: Proto.VolumeControlAvailabilityMessage): Promise<void> {\n debug('Volume control availability', message);\n\n this.dispatchEvent(new CustomEvent('volumeControlAvailability', {detail: message}));\n }\n\n async #onVolumeControlCapabilitiesDidChangeMessage(message: Proto.VolumeControlCapabilitiesDidChangeMessage): Promise<void> {\n debug('Volume control capabilities did change', message);\n\n this.dispatchEvent(new CustomEvent('volumeControlCapabilitiesDidChange', {detail: message}));\n }\n\n async #onVolumeDidChangeMessage(message: Proto.VolumeDidChangeMessage): Promise<void> {\n debug('VolumeDidChange message', message);\n\n this.dispatchEvent(new CustomEvent('volumeDidChange', {detail: 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_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_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 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
+ "import { uuid } from '@basmilius/apple-common';\nimport { create, setExtension } from '@bufbuild/protobuf';\nimport * as Proto from '@/proto';\n\nexport default class {\n clientUpdatesConfig(): Proto.ProtocolMessage {\n const protocolMessage = this.protocol(Proto.ProtocolMessage_Type.CLIENT_UPDATES_CONFIG_MESSAGE);\n const message = create(Proto.ClientUpdatesConfigMessageSchema, {\n artworkUpdates: true,\n nowPlayingUpdates: true,\n volumeUpdates: true,\n keyboardUpdates: true,\n outputDeviceUpdates: true\n });\n\n setExtension(protocolMessage, Proto.clientUpdatesConfigMessage, message);\n\n return protocolMessage;\n }\n\n deviceInfo(pairingId: Buffer): Proto.ProtocolMessage {\n const protocolMessage = this.protocol(Proto.ProtocolMessage_Type.DEVICE_INFO_MESSAGE);\n const message = create(Proto.DeviceInfoMessageSchema, {\n uniqueIdentifier: pairingId.toString(),\n name: 'iPhone van Bas',\n localizedModelName: 'iPhone',\n systemBuildVersion: '23B82',\n applicationBundleIdentifier: 'com.apple.TVRemote',\n applicationBundleVersion: '344.28',\n protocolVersion: 1,\n lastSupportedMessageType: 108,\n supportsSystemPairing: true,\n allowsPairing: true,\n systemMediaApplication: 'com.apple.TVMusic',\n supportsACL: true,\n supportsSharedQueue: true,\n supportsExtendedMotion: true,\n sharedQueueVersion: 2,\n deviceClass: 1,\n logicalDeviceCount: 1\n });\n\n setExtension(protocolMessage, Proto.deviceInfoMessage, message);\n\n return protocolMessage;\n }\n\n protocol(type: Proto.ProtocolMessage_Type, errorCode: Proto.ErrorCode_Enum = Proto.ErrorCode_Enum.NoError): Proto.ProtocolMessage {\n return create(Proto.ProtocolMessageSchema, {\n type,\n errorCode,\n identifier: uuid().toUpperCase(),\n uniqueIdentifier: uuid().toUpperCase()\n });\n }\n\n sendButtonEvent(usagePage: number, usage: number, buttonDown: boolean): Proto.ProtocolMessage {\n const protocolMessage = this.protocol(Proto.ProtocolMessage_Type.SEND_BUTTON_EVENT_MESSAGE);\n const message = create(Proto.SendButtonEventMessageSchema, {\n usagePage,\n usage,\n buttonDown\n });\n\n setExtension(protocolMessage, Proto.sendButtonEventMessage, message);\n\n return protocolMessage;\n }\n\n sendCommand(command: Proto.Command, options?: Proto.CommandOptions): Proto.ProtocolMessage {\n const protocolMessage = this.protocol(Proto.ProtocolMessage_Type.SEND_COMMAND_MESSAGE);\n const message = create(Proto.SendCommandMessageSchema, {\n command,\n options\n });\n\n setExtension(protocolMessage, Proto.sendCommandMessage, message);\n\n return protocolMessage;\n }\n\n setConnectionState(state: Proto.SetConnectionStateMessage_ConnectionState = Proto.SetConnectionStateMessage_ConnectionState.Connected): Proto.ProtocolMessage {\n const protocolMessage = this.protocol(Proto.ProtocolMessage_Type.SET_CONNECTION_STATE_MESSAGE);\n const message = create(Proto.SetConnectionStateMessageSchema, {\n state\n });\n\n setExtension(protocolMessage, Proto.setConnectionStateMessage, message);\n\n return protocolMessage;\n }\n}\n",
57
+ "// @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",
58
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ProtocolMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ProtocolMessage.proto.\n */\nexport const file_ProtocolMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChVQcm90b2NvbE1lc3NhZ2UucHJvdG8i4RQKCUVycm9yQ29kZSLTFAoERW51bRILCgdOb0Vycm9yEAASEAoMVW5rbm93bkVycm9yEAESFAoQSW52YWxpZE9wZXJhdGlvbhACEhkKFU9wZXJhdGlvbk5vdFBlcm1pdHRlZBADEhYKEkNsaWVudERvZXNOb3RFeGlzdBAEEhYKEk9yaWdpbkRvZXNOb3RFeGlzdBAFEhgKFFVuc3VwcG9ydGVkT3BlcmF0aW9uEAYSGgoWRmFpbGVkVG9TZXRQaWNrZWRSb3V0ZRAHEiAKHEZhaWxlZFRvUmVnaXN0ZXJDdXN0b21PcmlnaW4QCBIeChpGYWlsZWRUb1JlbW92ZUN1c3RvbU9yaWdpbhAJEiYKIlRoZUFwcGxpY2F0aW9uQWN0aXZpdHlEb2VzTm90RXhpc3QQChIuCipUaGVBcHBIYXNOb3RTZXR1cEFCcm93c2FibGVDb250ZW50RW5kcG9pbnQQCxJBCj1UaGVSZXF1ZXN0ZWRCcm93c2FibGVDb250ZW50QXBpSXNOb3RTdXBwb3J0ZWRCeVRoZUFwcGxpY2F0aW9uEAwSMgouVGhlTm90ZmljYXRpb25IYXNOb3RCZWVuV2hpdGVsaXN0ZWRCeVRoZVNlcnZlchANEjgKNE9wZXJhdGlvblJlcXVpcmVzQUNsaWVudENhbGxiYWNrVG9IYXZlQmVlblJlZ2lzdGVyZWQQDhI6CjZPcGVyYXRpb25SZXF1aXJlc0FDbGllbnREYXRhU291cmNlVG9IYXZlQmVlblJlZ2lzdGVyZWQQDxI1CjFSZXF1ZXN0ZWREYXRhSXNPdXRPZkRhdGVBbmRTaG91bGRCZVJlcXVlc3RlZEFnYWluEBASMAosVGhlRGV2aWNlc0VuZm9yY2VkVm9sdW1lTGltaXRIYXNCZWVuRXhjZWVkZWQQERIbChdWb2x1bWVWYWx1ZUlzT3V0T2ZSYW5nZRASEiQKIFZvbHVtZUlzQWxyZWFkeUF0VGhlTWF4aW11bVZhbHVlEBMSGAoUVm9sdW1lSXNBbHJlYWR5TXV0ZWQQFBIiCh5Wb2ljZUlucHV0RW5kcG9pbnREb2VzTm90RXhpc3QQFRI0CjBUaGVWb2ljZUlucHV0RGV2aWNlSXNOb3RSZWdpc3RlcmVkT3JEb2VzTm90RXhpc3QQFhIVChFFbmNyeXB0aW9uRmFpbHVyZRAXEhgKFEVuZHBvaW50RG9lc05vdEV4aXN0EBgSLgoqVGhlQ2xpZW50c0FwcGxpY2F0aW9uQ2FuY2VsbGVkVGhlT3BlcmF0aW9uEBkSGAoUVGhlT3BlcmF0aW9uVGltZWRPdXQQGhIqCiZUaGVTcGVjaWZpZWRQbGF5ZXJQYXRoT2JqZWN0V2FzSW52YWxpZBAbEjoKNkFkZGluZ09yUmVtb3ZpbmdEZXZpY2VzRnJvbVRoZUF2T3V0cHV0Q29udGV4dEhhc0ZhaWxlZBAcEiwKKENvdWxkTm90RmluZFRoZVNwZWNpZmllZE5vd1BsYXlpbmdQbGF5ZXIQHRInCiNUaGVTcGVjaWZpZWRDb250ZW50SXRlbURvZXNOb3RFeGlzdBAeEh8KG1RoZVNwZWNpZmllZE9mZnNldElzSW52YWxpZBAfEiYKIlRoZVNwZWNpZmllZE91dHB1dENvbnRleHRJc0ludmFsaWQQIBIyCi5PbmVPck1vcmVTcGVjaWZpZWRPdXRwdXREZXZpY2VzQXJlTm90R3JvdXBhYmxlECESSApEVGhlU3BlY2lmaWVkT3V0cHV0Q29udGV4dERvZXNOb3RTdXBwb3J0QWRkaW5nTW9yZVRoYW5PbmVPdXRwdXREZXZpY2UQIhIsCihDb3VsZE5vdEZpbmRUaGVTcGVjaWZpZWROb3dQbGF5aW5nQ2xpZW50ECMSUApMRW5kcG9pbnRWb2x1bWVDb250cm9sSXNPbmx5UG9zc2libGVJZlRoZUVuZHBvaW50SXNQaWNrZWRPclJlbW90ZUNvbnRyb2xsYWJsZRAkElQKUE91dHB1dERldmljZVZvbHVtZUNvbnRyb2xJc09ubHlQb3NzaWJsZUlmVGhlRW5kcG9pbnRJc1BpY2tlZE9yUmVtb3RlQ29udHJvbGxhYmxlECUSIgoeQ29kZXJNdXN0U3VwcG9ydEtleVZhbHVlQ29kaW5nECYSJAogQ291bGROb3RGaW5kVGhlR2l2ZW5PdXRwdXRkZXZpY2UQJxIhCh1GYWlsZWRUb0Nvbm5lY3RUb1JlbW90ZURldmljZRBkEiAKHEF1dGhlbnRpY2F0aW9uVG9rZW5Jc0ludmFsaWQQZRIzCi9SZWNvcmRpbmdTZXNzaW9uSXNBbHJlYWR5SW5Qcm9ncmVzc09uVGhpc0RldmljZRBmEiQKIFRoZURldmljZUlzTm90Q3VycmVudGx5UmVjb3JkaW5nEGcSHAoYVGhlQ2xpZW50SGFzRGlzY29ubmVjdGVkEGgSHAoYVGhlU2VydmVySGFzRGlzY29ubmVjdGVkEGkSLAooVGhlQ29ubmVjdGlvbkhhc0JlZW5DYW5jZWxsZWRCeVRoZUNsaWVudBBqEjQKMFBhaXJpbmdGdW5jdGlvbmFsaXR5SXNMb2NrZWREdWVUb1NlY3VyaXR5UmVhc29ucxBrEiwKKFRoZUNsaWVudHNPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uSXNUb29PbGQQbBIoCiRUaGVDbGllbnRzQXBwbGljYXRpb25WZXJzaW9uSXNUb29PbGQQbRIYChRUaGVEZXZpY2VJc05vdFBhaXJlZBBuEj8KO1RoZVBpblBhaXJpbmdEaWFsb2dXYXNSZW1vdmVkQnlUaGVVc2VyQmVmb3JlUGFpcmluZ09jY291cmVkEG8SQAo8VGhlUGluUGFpcmluZ0RpYWxvZ1dhc1JlbW92ZWRCeUFUaW1lb3V0QmVmb3JlUGFpcmluZ09jY291cmVkEHASGQoVVGhlQ29ubmVjdGlvblRpbWVkb3V0EHESIgoeUGFpcmluZ1dpdGhUaGlzRGV2aWNlSXNCbG9ja2VkEHISGwoXVGhlRGV2aWNlSXNHb2luZ1RvU2xlZXAQcxIdChlDb25uZWN0aW9uQmxvY2tlZEJ5U2VydmVyEHQSPAo4TXJhdmVuZHBvaW50V2FzRGVhbGxvY2F0ZWRXaGlsZVdhaXRpbmdGb3JEZXZpY2VUb0Nvbm5lY3QQdRJICkNPdXRwdXRDb250ZXh0TW9kaWZpY2F0aW9uQ2F1c2VkQURldmljZVRvTm9Mb25nZXJCZUFQcm94eUdyb3VwUGxheWVyEMgBEkQKP091dHB1dENvbnRleHRNb2RpZmljYXRpb25DYXVzZWRBRGV2aWNlVG9CZWNvbWVBUHJveHlHcm91cFBsYXllchDJARI3CjJPdXRwdXRDb250ZXh0TW9kaWZpY2F0aW9uUmVxdWVzdGVkTm9Ub3BvbG9neUNoYW5nZRDKARIWChFPdGhlclVua25vd25FcnJvchCrAiLAGAoPUHJvdG9jb2xNZXNzYWdlEiMKBHR5cGUYASABKA4yFS5Qcm90b2NvbE1lc3NhZ2UuVHlwZRISCgppZGVudGlmaWVyGAIgASgJEhsKE2F1dGhlbnRpY2F0aW9uVG9rZW4YAyABKAkSIgoJZXJyb3JDb2RlGAQgASgOMg8uRXJyb3JDb2RlLkVudW0SEQoJdGltZXN0YW1wGAUgASgEEhgKEGVycm9yRGVzY3JpcHRpb24YTiABKAkSGAoQdW5pcXVlSWRlbnRpZmllchhVIAEoCSLVFgoEVHlwZRITCg9VTktOT1dOX01FU1NBR0UQABIYChRTRU5EX0NPTU1BTkRfTUVTU0FHRRABEh8KG1NFTkRfQ09NTUFORF9SRVNVTFRfTUVTU0FHRRACEhUKEUdFVF9TVEFURV9NRVNTQUdFEAMSFQoRU0VUX1NUQVRFX01FU1NBR0UQBBIXChNTRVRfQVJUV09SS19NRVNTQUdFEAUSHwobUkVHSVNURVJfSElEX0RFVklDRV9NRVNTQUdFEAYSJgoiUkVHSVNURVJfSElEX0RFVklDRV9SRVNVTFRfTUVTU0FHRRAHEhoKFlNFTkRfSElEX0VWRU5UX01FU1NBR0UQCBIbChdTRU5EX0hJRF9SRVBPUlRfTUVTU0FHRRAJEiQKIFNFTkRfVklSVFVBTF9UT1VDSF9FVkVOVF9NRVNTQUdFEAoSGAoUTk9USUZJQ0FUSU9OX01FU1NBR0UQCxIuCipDT05URU5UX0lURU1TX0NIQU5HRURfTk9USUZJQ0FUSU9OX01FU1NBR0UQDBIXChNERVZJQ0VfSU5GT19NRVNTQUdFEA8SIQodQ0xJRU5UX1VQREFURVNfQ09ORklHX01FU1NBR0UQEBInCiNWT0xVTUVfQ09OVFJPTF9BVkFJTEFCSUxJVFlfTUVTU0FHRRAREhsKF0dBTUVfQ09OVFJPTExFUl9NRVNTQUdFEBISJAogUkVHSVNURVJfR0FNRV9DT05UUk9MTEVSX01FU1NBR0UQExItCilSRUdJU1RFUl9HQU1FX0NPTlRST0xMRVJfUkVTUE9OU0VfTUVTU0FHRRAUEiYKIlVOUkVHSVNURVJfR0FNRV9DT05UUk9MTEVSX01FU1NBR0UQFRIvCitSRUdJU1RFUl9GT1JfR0FNRV9DT05UUk9MTEVSX0VWRU5UU19NRVNTQUdFEBYSFAoQS0VZQk9BUkRfTUVTU0FHRRAXEiAKHEdFVF9LRVlCT0FSRF9TRVNTSU9OX01FU1NBR0UQGBIWChJURVhUX0lOUFVUX01FU1NBR0UQGRIjCh9HRVRfVk9JQ0VfSU5QVVRfREVWSUNFU19NRVNTQUdFEBoSLAooR0VUX1ZPSUNFX0lOUFVUX0RFVklDRVNfUkVTUE9OU0VfTUVTU0FHRRAbEicKI1JFR0lTVEVSX1ZPSUNFX0lOUFVUX0RFVklDRV9NRVNTQUdFEBwSMAosUkVHSVNURVJfVk9JQ0VfSU5QVVRfREVWSUNFX1JFU1BPTlNFX01FU1NBR0UQHRIfChtTRVRfUkVDT1JESU5HX1NUQVRFX01FU1NBR0UQHhIcChhTRU5EX1ZPSUNFX0lOUFVUX01FU1NBR0UQHxIiCh5QTEFZQkFDS19RVUVVRV9SRVFVRVNUX01FU1NBR0UQIBIXChNUUkFOU0FDVElPTl9NRVNTQUdFECESGgoWQ1JZUFRPX1BBSVJJTkdfTUVTU0FHRRAiEiYKIkdBTUVfQ09OVFJPTExFUl9QUk9QRVJUSUVTX01FU1NBR0UQIxIbChdTRVRfUkVBRFlfU1RBVEVfTUVTU0FHRRAkEh4KGkRFVklDRV9JTkZPX1VQREFURV9NRVNTQUdFECUSIAocU0VUX0NPTk5FQ1RJT05fU1RBVEVfTUVTU0FHRRAmEh0KGVNFTkRfQlVUVE9OX0VWRU5UX01FU1NBR0UQJxIbChdTRVRfSElMSVRFX01PREVfTUVTU0FHRRAoEhcKE1dBS0VfREVWSUNFX01FU1NBR0UQKRITCg9HRU5FUklDX01FU1NBR0UQKhIrCidTRU5EX1BBQ0tFRF9WSVJUVUFMX1RPVUNIX0VWRU5UX01FU1NBR0UQKxIVChFTRU5EX0xZUklDU19FVkVOVBAsEiIKHlNFVF9OT1dfUExBWUlOR19DTElFTlRfTUVTU0FHRRAuEiIKHlNFVF9OT1dfUExBWUlOR19QTEFZRVJfTUVTU0FHRRAvEikKJU1PRElGWV9PVVRQVVRfQ09OVEVYVF9SRVFVRVNUX01FU1NBR0UQMBIWChJHRVRfVk9MVU1FX01FU1NBR0UQMRIdChlHRVRfVk9MVU1FX1JFU1VMVF9NRVNTQUdFEDISFgoSU0VUX1ZPTFVNRV9NRVNTQUdFEDMSHQoZVk9MVU1FX0RJRF9DSEFOR0VfTUVTU0FHRRA0EhkKFVJFTU9WRV9DTElFTlRfTUVTU0FHRRA1EhkKFVJFTU9WRV9QTEFZRVJfTUVTU0FHRRA2EhkKFVVQREFURV9DTElFTlRfTUVTU0FHRRA3Eh8KG1VQREFURV9DT05URU5UX0lURU1fTUVTU0FHRRA4EicKI1VQREFURV9DT05URU5UX0lURU1fQVJUV09SS19NRVNTQUdFEDkSGQoVVVBEQVRFX1BMQVlFUl9NRVNTQUdFEDoSKgomUFJPTVBUX0ZPUl9ST1VURV9BVVRIT1JJWkFUSU9OX01FU1NBR0UQOxIzCi9QUk9NUFRfRk9SX1JPVVRFX0FVVEhPUklaQVRJT05fUkVTUE9OU0VfTUVTU0FHRRA8Ei4KKlBSRVNFTlRfUk9VVEVfQVVUSE9SSVpBVElPTl9TVEFUVVNfTUVTU0FHRRA9EisKJ0dFVF9WT0xVTUVfQ09OVFJPTF9DQVBBQklMSVRJRVNfTUVTU0FHRRA+EjIKLkdFVF9WT0xVTUVfQ09OVFJPTF9DQVBBQklMSVRJRVNfUkVTVUxUX01FU1NBR0UQPxIyCi5WT0xVTUVfQ09OVFJPTF9DQVBBQklMSVRJRVNfRElEX0NIQU5HRV9NRVNTQUdFEEASIAocVVBEQVRFX09VVFBVVF9ERVZJQ0VfTUVTU0FHRRBBEiEKHVJFTU9WRV9PVVRQVVRfREVWSUNFU19NRVNTQUdFEEISHQoZUkVNT1RFX1RFWFRfSU5QVVRfTUVTU0FHRRBDEikKJUdFVF9SRU1PVEVfVEVYVF9JTlBVVF9TRVNTSU9OX01FU1NBR0UQRBIiCh5SRU1PVkVfT1VUUFVUX0RFVklDRVNfTUVTU0FHRTIQRRIkCiBQTEFZQkFDS19TRVNTSU9OX1JFUVVFU1RfTUVTU0FHRRBGEiUKIVBMQVlCQUNLX1NFU1NJT05fUkVTUE9OU0VfTUVTU0FHRRBHEioKJlNFVF9ERUZBVUxUX1NVUFBPUlRFRF9DT01NQU5EU19NRVNTQUdFEEgSLAooUExBWUJBQ0tfU0VTU0lPTl9NSUdSQVRFX1JFUVVFU1RfTUVTU0FHRRBJEi0KKVBMQVlCQUNLX1NFU1NJT05fTUlHUkFURV9SRVNQT05TRV9NRVNTQUdFEEoSKgomUExBWUJBQ0tfU0VTU0lPTl9NSUdSQVRFX0JFR0lOX01FU1NBR0UQSxIoCiRQTEFZQkFDS19TRVNTSU9OX01JR1JBVEVfRU5EX01FU1NBR0UQTBIpCiVVUERBVEVfQUNUSVZFX1NZU1RFTV9FTkRQT0lOVF9NRVNTQUdFEE0SHgoaU0VUX0RJU0NPVkVSWV9NT0RFX01FU1NBR0UQZRIdChlVUERBVEVfRU5EX1BPSU5UU19NRVNTQUdFEGYSHAoYUkVNT1ZFX0VORFBPSU5UU19NRVNTQUdFEGcSJAogUExBWUVSX0NMSUVOVF9QUk9QRVJUSUVTX01FU1NBR0UQaBIkCiBPUklHSU5fQ0xJRU5UX1BST1BFUlRJRVNfTUVTU0FHRRBpEhYKEkFVRElPX0ZBREVfTUVTU0FHRRBqEh8KG0FVRElPX0ZBREVfUkVTUE9OU0VfTUVTU0FHRRBrEiAKHENPTkZJR1VSRV9DT05ORUNUSU9OX01FU1NBR0UQeCoECAYQTioECE8QVSoICFYQgICAgAI\");\n\n/**\n * @generated from message ErrorCode\n */\nexport type ErrorCode = Message<\"ErrorCode\"> & {\n};\n\n/**\n * Describes the message ErrorCode.\n * Use `create(ErrorCodeSchema)` to create a new message.\n */\nexport const ErrorCodeSchema: GenMessage<ErrorCode> = /*@__PURE__*/\n messageDesc(file_ProtocolMessage, 0);\n\n/**\n * @generated from enum ErrorCode.Enum\n */\nexport enum ErrorCode_Enum {\n /**\n * @generated from enum value: NoError = 0;\n */\n NoError = 0,\n\n /**\n * @generated from enum value: UnknownError = 1;\n */\n UnknownError = 1,\n\n /**\n * @generated from enum value: InvalidOperation = 2;\n */\n InvalidOperation = 2,\n\n /**\n * @generated from enum value: OperationNotPermitted = 3;\n */\n OperationNotPermitted = 3,\n\n /**\n * @generated from enum value: ClientDoesNotExist = 4;\n */\n ClientDoesNotExist = 4,\n\n /**\n * @generated from enum value: OriginDoesNotExist = 5;\n */\n OriginDoesNotExist = 5,\n\n /**\n * @generated from enum value: UnsupportedOperation = 6;\n */\n UnsupportedOperation = 6,\n\n /**\n * @generated from enum value: FailedToSetPickedRoute = 7;\n */\n FailedToSetPickedRoute = 7,\n\n /**\n * @generated from enum value: FailedToRegisterCustomOrigin = 8;\n */\n FailedToRegisterCustomOrigin = 8,\n\n /**\n * @generated from enum value: FailedToRemoveCustomOrigin = 9;\n */\n FailedToRemoveCustomOrigin = 9,\n\n /**\n * @generated from enum value: TheApplicationActivityDoesNotExist = 10;\n */\n TheApplicationActivityDoesNotExist = 10,\n\n /**\n * @generated from enum value: TheAppHasNotSetupABrowsableContentEndpoint = 11;\n */\n TheAppHasNotSetupABrowsableContentEndpoint = 11,\n\n /**\n * @generated from enum value: TheRequestedBrowsableContentApiIsNotSupportedByTheApplication = 12;\n */\n TheRequestedBrowsableContentApiIsNotSupportedByTheApplication = 12,\n\n /**\n * @generated from enum value: TheNotficationHasNotBeenWhitelistedByTheServer = 13;\n */\n TheNotficationHasNotBeenWhitelistedByTheServer = 13,\n\n /**\n * @generated from enum value: OperationRequiresAClientCallbackToHaveBeenRegistered = 14;\n */\n OperationRequiresAClientCallbackToHaveBeenRegistered = 14,\n\n /**\n * @generated from enum value: OperationRequiresAClientDataSourceToHaveBeenRegistered = 15;\n */\n OperationRequiresAClientDataSourceToHaveBeenRegistered = 15,\n\n /**\n * @generated from enum value: RequestedDataIsOutOfDateAndShouldBeRequestedAgain = 16;\n */\n RequestedDataIsOutOfDateAndShouldBeRequestedAgain = 16,\n\n /**\n * The system will ignore the volume adjustment until overridden.\n *\n * @generated from enum value: TheDevicesEnforcedVolumeLimitHasBeenExceeded = 17;\n */\n TheDevicesEnforcedVolumeLimitHasBeenExceeded = 17,\n\n /**\n * between 0.0 and 1.0, where 1.0 is the loudest\n *\n * @generated from enum value: VolumeValueIsOutOfRange = 18;\n */\n VolumeValueIsOutOfRange = 18,\n\n /**\n * @generated from enum value: VolumeIsAlreadyAtTheMaximumValue = 19;\n */\n VolumeIsAlreadyAtTheMaximumValue = 19,\n\n /**\n * @generated from enum value: VolumeIsAlreadyMuted = 20;\n */\n VolumeIsAlreadyMuted = 20,\n\n /**\n * @generated from enum value: VoiceInputEndpointDoesNotExist = 21;\n */\n VoiceInputEndpointDoesNotExist = 21,\n\n /**\n * @generated from enum value: TheVoiceInputDeviceIsNotRegisteredOrDoesNotExist = 22;\n */\n TheVoiceInputDeviceIsNotRegisteredOrDoesNotExist = 22,\n\n /**\n * @generated from enum value: EncryptionFailure = 23;\n */\n EncryptionFailure = 23,\n\n /**\n * @generated from enum value: EndpointDoesNotExist = 24;\n */\n EndpointDoesNotExist = 24,\n\n /**\n * @generated from enum value: TheClientsApplicationCancelledTheOperation = 25;\n */\n TheClientsApplicationCancelledTheOperation = 25,\n\n /**\n * @generated from enum value: TheOperationTimedOut = 26;\n */\n TheOperationTimedOut = 26,\n\n /**\n * @generated from enum value: TheSpecifiedPlayerPathObjectWasInvalid = 27;\n */\n TheSpecifiedPlayerPathObjectWasInvalid = 27,\n\n /**\n * @generated from enum value: AddingOrRemovingDevicesFromTheAvOutputContextHasFailed = 28;\n */\n AddingOrRemovingDevicesFromTheAvOutputContextHasFailed = 28,\n\n /**\n * @generated from enum value: CouldNotFindTheSpecifiedNowPlayingPlayer = 29;\n */\n CouldNotFindTheSpecifiedNowPlayingPlayer = 29,\n\n /**\n * @generated from enum value: TheSpecifiedContentItemDoesNotExist = 30;\n */\n TheSpecifiedContentItemDoesNotExist = 30,\n\n /**\n * @generated from enum value: TheSpecifiedOffsetIsInvalid = 31;\n */\n TheSpecifiedOffsetIsInvalid = 31,\n\n /**\n * @generated from enum value: TheSpecifiedOutputContextIsInvalid = 32;\n */\n TheSpecifiedOutputContextIsInvalid = 32,\n\n /**\n * @generated from enum value: OneOrMoreSpecifiedOutputDevicesAreNotGroupable = 33;\n */\n OneOrMoreSpecifiedOutputDevicesAreNotGroupable = 33,\n\n /**\n * @generated from enum value: TheSpecifiedOutputContextDoesNotSupportAddingMoreThanOneOutputDevice = 34;\n */\n TheSpecifiedOutputContextDoesNotSupportAddingMoreThanOneOutputDevice = 34,\n\n /**\n * @generated from enum value: CouldNotFindTheSpecifiedNowPlayingClient = 35;\n */\n CouldNotFindTheSpecifiedNowPlayingClient = 35,\n\n /**\n * @generated from enum value: EndpointVolumeControlIsOnlyPossibleIfTheEndpointIsPickedOrRemoteControllable = 36;\n */\n EndpointVolumeControlIsOnlyPossibleIfTheEndpointIsPickedOrRemoteControllable = 36,\n\n /**\n * @generated from enum value: OutputDeviceVolumeControlIsOnlyPossibleIfTheEndpointIsPickedOrRemoteControllable = 37;\n */\n OutputDeviceVolumeControlIsOnlyPossibleIfTheEndpointIsPickedOrRemoteControllable = 37,\n\n /**\n * @generated from enum value: CoderMustSupportKeyValueCoding = 38;\n */\n CoderMustSupportKeyValueCoding = 38,\n\n /**\n * @generated from enum value: CouldNotFindTheGivenOutputdevice = 39;\n */\n CouldNotFindTheGivenOutputdevice = 39,\n\n /**\n * @generated from enum value: FailedToConnectToRemoteDevice = 100;\n */\n FailedToConnectToRemoteDevice = 100,\n\n /**\n * @generated from enum value: AuthenticationTokenIsInvalid = 101;\n */\n AuthenticationTokenIsInvalid = 101,\n\n /**\n * @generated from enum value: RecordingSessionIsAlreadyInProgressOnThisDevice = 102;\n */\n RecordingSessionIsAlreadyInProgressOnThisDevice = 102,\n\n /**\n * @generated from enum value: TheDeviceIsNotCurrentlyRecording = 103;\n */\n TheDeviceIsNotCurrentlyRecording = 103,\n\n /**\n * @generated from enum value: TheClientHasDisconnected = 104;\n */\n TheClientHasDisconnected = 104,\n\n /**\n * @generated from enum value: TheServerHasDisconnected = 105;\n */\n TheServerHasDisconnected = 105,\n\n /**\n * @generated from enum value: TheConnectionHasBeenCancelledByTheClient = 106;\n */\n TheConnectionHasBeenCancelledByTheClient = 106,\n\n /**\n * @generated from enum value: PairingFunctionalityIsLockedDueToSecurityReasons = 107;\n */\n PairingFunctionalityIsLockedDueToSecurityReasons = 107,\n\n /**\n * @generated from enum value: TheClientsOperatingSystemVersionIsTooOld = 108;\n */\n TheClientsOperatingSystemVersionIsTooOld = 108,\n\n /**\n * @generated from enum value: TheClientsApplicationVersionIsTooOld = 109;\n */\n TheClientsApplicationVersionIsTooOld = 109,\n\n /**\n * @generated from enum value: TheDeviceIsNotPaired = 110;\n */\n TheDeviceIsNotPaired = 110,\n\n /**\n * @generated from enum value: ThePinPairingDialogWasRemovedByTheUserBeforePairingOccoured = 111;\n */\n ThePinPairingDialogWasRemovedByTheUserBeforePairingOccoured = 111,\n\n /**\n * @generated from enum value: ThePinPairingDialogWasRemovedByATimeoutBeforePairingOccoured = 112;\n */\n ThePinPairingDialogWasRemovedByATimeoutBeforePairingOccoured = 112,\n\n /**\n * @generated from enum value: TheConnectionTimedout = 113;\n */\n TheConnectionTimedout = 113,\n\n /**\n * @generated from enum value: PairingWithThisDeviceIsBlocked = 114;\n */\n PairingWithThisDeviceIsBlocked = 114,\n\n /**\n * @generated from enum value: TheDeviceIsGoingToSleep = 115;\n */\n TheDeviceIsGoingToSleep = 115,\n\n /**\n * @generated from enum value: ConnectionBlockedByServer = 116;\n */\n ConnectionBlockedByServer = 116,\n\n /**\n * @generated from enum value: MravendpointWasDeallocatedWhileWaitingForDeviceToConnect = 117;\n */\n MravendpointWasDeallocatedWhileWaitingForDeviceToConnect = 117,\n\n /**\n * @generated from enum value: OutputContextModificationCausedADeviceToNoLongerBeAProxyGroupPlayer = 200;\n */\n OutputContextModificationCausedADeviceToNoLongerBeAProxyGroupPlayer = 200,\n\n /**\n * @generated from enum value: OutputContextModificationCausedADeviceToBecomeAProxyGroupPlayer = 201;\n */\n OutputContextModificationCausedADeviceToBecomeAProxyGroupPlayer = 201,\n\n /**\n * @generated from enum value: OutputContextModificationRequestedNoTopologyChange = 202;\n */\n OutputContextModificationRequestedNoTopologyChange = 202,\n\n /**\n * @generated from enum value: OtherUnknownError = 299;\n */\n OtherUnknownError = 299,\n}\n\n/**\n * Describes the enum ErrorCode.Enum.\n */\nexport const ErrorCode_EnumSchema: GenEnum<ErrorCode_Enum> = /*@__PURE__*/\n enumDesc(file_ProtocolMessage, 0, 0);\n\n/**\n * @generated from message ProtocolMessage\n */\nexport type ProtocolMessage = Message<\"ProtocolMessage\"> & {\n /**\n * Identifies which underlying message is filled in.\n *\n * @generated from field: optional ProtocolMessage.Type type = 1;\n */\n type: ProtocolMessage_Type;\n\n /**\n * @generated from field: optional string identifier = 2;\n */\n identifier: string;\n\n /**\n * @generated from field: optional string authenticationToken = 3;\n */\n authenticationToken: string;\n\n /**\n * @generated from field: optional ErrorCode.Enum errorCode = 4;\n */\n errorCode: ErrorCode_Enum;\n\n /**\n * @generated from field: optional uint64 timestamp = 5;\n */\n timestamp: bigint;\n\n /**\n * @generated from field: optional string errorDescription = 78;\n */\n errorDescription: string;\n\n /**\n * @generated from field: optional string uniqueIdentifier = 85;\n */\n uniqueIdentifier: string;\n};\n\n/**\n * Describes the message ProtocolMessage.\n * Use `create(ProtocolMessageSchema)` to create a new message.\n */\nexport const ProtocolMessageSchema: GenMessage<ProtocolMessage> = /*@__PURE__*/\n messageDesc(file_ProtocolMessage, 1);\n\n/**\n * @generated from enum ProtocolMessage.Type\n */\nexport enum ProtocolMessage_Type {\n /**\n * @generated from enum value: UNKNOWN_MESSAGE = 0;\n */\n UNKNOWN_MESSAGE = 0,\n\n /**\n * @generated from enum value: SEND_COMMAND_MESSAGE = 1;\n */\n SEND_COMMAND_MESSAGE = 1,\n\n /**\n * @generated from enum value: SEND_COMMAND_RESULT_MESSAGE = 2;\n */\n SEND_COMMAND_RESULT_MESSAGE = 2,\n\n /**\n * @generated from enum value: GET_STATE_MESSAGE = 3;\n */\n GET_STATE_MESSAGE = 3,\n\n /**\n * @generated from enum value: SET_STATE_MESSAGE = 4;\n */\n SET_STATE_MESSAGE = 4,\n\n /**\n * @generated from enum value: SET_ARTWORK_MESSAGE = 5;\n */\n SET_ARTWORK_MESSAGE = 5,\n\n /**\n * @generated from enum value: REGISTER_HID_DEVICE_MESSAGE = 6;\n */\n REGISTER_HID_DEVICE_MESSAGE = 6,\n\n /**\n * @generated from enum value: REGISTER_HID_DEVICE_RESULT_MESSAGE = 7;\n */\n REGISTER_HID_DEVICE_RESULT_MESSAGE = 7,\n\n /**\n * @generated from enum value: SEND_HID_EVENT_MESSAGE = 8;\n */\n SEND_HID_EVENT_MESSAGE = 8,\n\n /**\n * @generated from enum value: SEND_HID_REPORT_MESSAGE = 9;\n */\n SEND_HID_REPORT_MESSAGE = 9,\n\n /**\n * @generated from enum value: SEND_VIRTUAL_TOUCH_EVENT_MESSAGE = 10;\n */\n SEND_VIRTUAL_TOUCH_EVENT_MESSAGE = 10,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE = 11;\n */\n NOTIFICATION_MESSAGE = 11,\n\n /**\n * @generated from enum value: CONTENT_ITEMS_CHANGED_NOTIFICATION_MESSAGE = 12;\n */\n CONTENT_ITEMS_CHANGED_NOTIFICATION_MESSAGE = 12,\n\n /**\n * @generated from enum value: DEVICE_INFO_MESSAGE = 15;\n */\n DEVICE_INFO_MESSAGE = 15,\n\n /**\n * @generated from enum value: CLIENT_UPDATES_CONFIG_MESSAGE = 16;\n */\n CLIENT_UPDATES_CONFIG_MESSAGE = 16,\n\n /**\n * @generated from enum value: VOLUME_CONTROL_AVAILABILITY_MESSAGE = 17;\n */\n VOLUME_CONTROL_AVAILABILITY_MESSAGE = 17,\n\n /**\n * @generated from enum value: GAME_CONTROLLER_MESSAGE = 18;\n */\n GAME_CONTROLLER_MESSAGE = 18,\n\n /**\n * @generated from enum value: REGISTER_GAME_CONTROLLER_MESSAGE = 19;\n */\n REGISTER_GAME_CONTROLLER_MESSAGE = 19,\n\n /**\n * @generated from enum value: REGISTER_GAME_CONTROLLER_RESPONSE_MESSAGE = 20;\n */\n REGISTER_GAME_CONTROLLER_RESPONSE_MESSAGE = 20,\n\n /**\n * @generated from enum value: UNREGISTER_GAME_CONTROLLER_MESSAGE = 21;\n */\n UNREGISTER_GAME_CONTROLLER_MESSAGE = 21,\n\n /**\n * @generated from enum value: REGISTER_FOR_GAME_CONTROLLER_EVENTS_MESSAGE = 22;\n */\n REGISTER_FOR_GAME_CONTROLLER_EVENTS_MESSAGE = 22,\n\n /**\n * @generated from enum value: KEYBOARD_MESSAGE = 23;\n */\n KEYBOARD_MESSAGE = 23,\n\n /**\n * @generated from enum value: GET_KEYBOARD_SESSION_MESSAGE = 24;\n */\n GET_KEYBOARD_SESSION_MESSAGE = 24,\n\n /**\n * @generated from enum value: TEXT_INPUT_MESSAGE = 25;\n */\n TEXT_INPUT_MESSAGE = 25,\n\n /**\n * @generated from enum value: GET_VOICE_INPUT_DEVICES_MESSAGE = 26;\n */\n GET_VOICE_INPUT_DEVICES_MESSAGE = 26,\n\n /**\n * @generated from enum value: GET_VOICE_INPUT_DEVICES_RESPONSE_MESSAGE = 27;\n */\n GET_VOICE_INPUT_DEVICES_RESPONSE_MESSAGE = 27,\n\n /**\n * @generated from enum value: REGISTER_VOICE_INPUT_DEVICE_MESSAGE = 28;\n */\n REGISTER_VOICE_INPUT_DEVICE_MESSAGE = 28,\n\n /**\n * @generated from enum value: REGISTER_VOICE_INPUT_DEVICE_RESPONSE_MESSAGE = 29;\n */\n REGISTER_VOICE_INPUT_DEVICE_RESPONSE_MESSAGE = 29,\n\n /**\n * @generated from enum value: SET_RECORDING_STATE_MESSAGE = 30;\n */\n SET_RECORDING_STATE_MESSAGE = 30,\n\n /**\n * @generated from enum value: SEND_VOICE_INPUT_MESSAGE = 31;\n */\n SEND_VOICE_INPUT_MESSAGE = 31,\n\n /**\n * @generated from enum value: PLAYBACK_QUEUE_REQUEST_MESSAGE = 32;\n */\n PLAYBACK_QUEUE_REQUEST_MESSAGE = 32,\n\n /**\n * @generated from enum value: TRANSACTION_MESSAGE = 33;\n */\n TRANSACTION_MESSAGE = 33,\n\n /**\n * @generated from enum value: CRYPTO_PAIRING_MESSAGE = 34;\n */\n CRYPTO_PAIRING_MESSAGE = 34,\n\n /**\n * @generated from enum value: GAME_CONTROLLER_PROPERTIES_MESSAGE = 35;\n */\n GAME_CONTROLLER_PROPERTIES_MESSAGE = 35,\n\n /**\n * @generated from enum value: SET_READY_STATE_MESSAGE = 36;\n */\n SET_READY_STATE_MESSAGE = 36,\n\n /**\n * @generated from enum value: DEVICE_INFO_UPDATE_MESSAGE = 37;\n */\n DEVICE_INFO_UPDATE_MESSAGE = 37,\n\n /**\n * @generated from enum value: SET_CONNECTION_STATE_MESSAGE = 38;\n */\n SET_CONNECTION_STATE_MESSAGE = 38,\n\n /**\n * @generated from enum value: SEND_BUTTON_EVENT_MESSAGE = 39;\n */\n SEND_BUTTON_EVENT_MESSAGE = 39,\n\n /**\n * @generated from enum value: SET_HILITE_MODE_MESSAGE = 40;\n */\n SET_HILITE_MODE_MESSAGE = 40,\n\n /**\n * @generated from enum value: WAKE_DEVICE_MESSAGE = 41;\n */\n WAKE_DEVICE_MESSAGE = 41,\n\n /**\n * @generated from enum value: GENERIC_MESSAGE = 42;\n */\n GENERIC_MESSAGE = 42,\n\n /**\n * @generated from enum value: SEND_PACKED_VIRTUAL_TOUCH_EVENT_MESSAGE = 43;\n */\n SEND_PACKED_VIRTUAL_TOUCH_EVENT_MESSAGE = 43,\n\n /**\n * @generated from enum value: SEND_LYRICS_EVENT = 44;\n */\n SEND_LYRICS_EVENT = 44,\n\n /**\n * @generated from enum value: SET_NOW_PLAYING_CLIENT_MESSAGE = 46;\n */\n SET_NOW_PLAYING_CLIENT_MESSAGE = 46,\n\n /**\n * @generated from enum value: SET_NOW_PLAYING_PLAYER_MESSAGE = 47;\n */\n SET_NOW_PLAYING_PLAYER_MESSAGE = 47,\n\n /**\n * @generated from enum value: MODIFY_OUTPUT_CONTEXT_REQUEST_MESSAGE = 48;\n */\n MODIFY_OUTPUT_CONTEXT_REQUEST_MESSAGE = 48,\n\n /**\n * @generated from enum value: GET_VOLUME_MESSAGE = 49;\n */\n GET_VOLUME_MESSAGE = 49,\n\n /**\n * @generated from enum value: GET_VOLUME_RESULT_MESSAGE = 50;\n */\n GET_VOLUME_RESULT_MESSAGE = 50,\n\n /**\n * @generated from enum value: SET_VOLUME_MESSAGE = 51;\n */\n SET_VOLUME_MESSAGE = 51,\n\n /**\n * @generated from enum value: VOLUME_DID_CHANGE_MESSAGE = 52;\n */\n VOLUME_DID_CHANGE_MESSAGE = 52,\n\n /**\n * @generated from enum value: REMOVE_CLIENT_MESSAGE = 53;\n */\n REMOVE_CLIENT_MESSAGE = 53,\n\n /**\n * @generated from enum value: REMOVE_PLAYER_MESSAGE = 54;\n */\n REMOVE_PLAYER_MESSAGE = 54,\n\n /**\n * @generated from enum value: UPDATE_CLIENT_MESSAGE = 55;\n */\n UPDATE_CLIENT_MESSAGE = 55,\n\n /**\n * @generated from enum value: UPDATE_CONTENT_ITEM_MESSAGE = 56;\n */\n UPDATE_CONTENT_ITEM_MESSAGE = 56,\n\n /**\n * @generated from enum value: UPDATE_CONTENT_ITEM_ARTWORK_MESSAGE = 57;\n */\n UPDATE_CONTENT_ITEM_ARTWORK_MESSAGE = 57,\n\n /**\n * @generated from enum value: UPDATE_PLAYER_MESSAGE = 58;\n */\n UPDATE_PLAYER_MESSAGE = 58,\n\n /**\n * @generated from enum value: PROMPT_FOR_ROUTE_AUTHORIZATION_MESSAGE = 59;\n */\n PROMPT_FOR_ROUTE_AUTHORIZATION_MESSAGE = 59,\n\n /**\n * @generated from enum value: PROMPT_FOR_ROUTE_AUTHORIZATION_RESPONSE_MESSAGE = 60;\n */\n PROMPT_FOR_ROUTE_AUTHORIZATION_RESPONSE_MESSAGE = 60,\n\n /**\n * @generated from enum value: PRESENT_ROUTE_AUTHORIZATION_STATUS_MESSAGE = 61;\n */\n PRESENT_ROUTE_AUTHORIZATION_STATUS_MESSAGE = 61,\n\n /**\n * @generated from enum value: GET_VOLUME_CONTROL_CAPABILITIES_MESSAGE = 62;\n */\n GET_VOLUME_CONTROL_CAPABILITIES_MESSAGE = 62,\n\n /**\n * @generated from enum value: GET_VOLUME_CONTROL_CAPABILITIES_RESULT_MESSAGE = 63;\n */\n GET_VOLUME_CONTROL_CAPABILITIES_RESULT_MESSAGE = 63,\n\n /**\n * @generated from enum value: VOLUME_CONTROL_CAPABILITIES_DID_CHANGE_MESSAGE = 64;\n */\n VOLUME_CONTROL_CAPABILITIES_DID_CHANGE_MESSAGE = 64,\n\n /**\n * @generated from enum value: UPDATE_OUTPUT_DEVICE_MESSAGE = 65;\n */\n UPDATE_OUTPUT_DEVICE_MESSAGE = 65,\n\n /**\n * @generated from enum value: REMOVE_OUTPUT_DEVICES_MESSAGE = 66;\n */\n REMOVE_OUTPUT_DEVICES_MESSAGE = 66,\n\n /**\n * @generated from enum value: REMOTE_TEXT_INPUT_MESSAGE = 67;\n */\n REMOTE_TEXT_INPUT_MESSAGE = 67,\n\n /**\n * @generated from enum value: GET_REMOTE_TEXT_INPUT_SESSION_MESSAGE = 68;\n */\n GET_REMOTE_TEXT_INPUT_SESSION_MESSAGE = 68,\n\n /**\n * Same as 66?\n *\n * @generated from enum value: REMOVE_OUTPUT_DEVICES_MESSAGE2 = 69;\n */\n REMOVE_OUTPUT_DEVICES_MESSAGE2 = 69,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_REQUEST_MESSAGE = 70;\n */\n PLAYBACK_SESSION_REQUEST_MESSAGE = 70,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_RESPONSE_MESSAGE = 71;\n */\n PLAYBACK_SESSION_RESPONSE_MESSAGE = 71,\n\n /**\n * @generated from enum value: SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE = 72;\n */\n SET_DEFAULT_SUPPORTED_COMMANDS_MESSAGE = 72,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_MIGRATE_REQUEST_MESSAGE = 73;\n */\n PLAYBACK_SESSION_MIGRATE_REQUEST_MESSAGE = 73,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_MIGRATE_RESPONSE_MESSAGE = 74;\n */\n PLAYBACK_SESSION_MIGRATE_RESPONSE_MESSAGE = 74,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_MIGRATE_BEGIN_MESSAGE = 75;\n */\n PLAYBACK_SESSION_MIGRATE_BEGIN_MESSAGE = 75,\n\n /**\n * @generated from enum value: PLAYBACK_SESSION_MIGRATE_END_MESSAGE = 76;\n */\n PLAYBACK_SESSION_MIGRATE_END_MESSAGE = 76,\n\n /**\n * @generated from enum value: UPDATE_ACTIVE_SYSTEM_ENDPOINT_MESSAGE = 77;\n */\n UPDATE_ACTIVE_SYSTEM_ENDPOINT_MESSAGE = 77,\n\n /**\n * @generated from enum value: SET_DISCOVERY_MODE_MESSAGE = 101;\n */\n SET_DISCOVERY_MODE_MESSAGE = 101,\n\n /**\n * @generated from enum value: UPDATE_END_POINTS_MESSAGE = 102;\n */\n UPDATE_END_POINTS_MESSAGE = 102,\n\n /**\n * @generated from enum value: REMOVE_ENDPOINTS_MESSAGE = 103;\n */\n REMOVE_ENDPOINTS_MESSAGE = 103,\n\n /**\n * @generated from enum value: PLAYER_CLIENT_PROPERTIES_MESSAGE = 104;\n */\n PLAYER_CLIENT_PROPERTIES_MESSAGE = 104,\n\n /**\n * @generated from enum value: ORIGIN_CLIENT_PROPERTIES_MESSAGE = 105;\n */\n ORIGIN_CLIENT_PROPERTIES_MESSAGE = 105,\n\n /**\n * @generated from enum value: AUDIO_FADE_MESSAGE = 106;\n */\n AUDIO_FADE_MESSAGE = 106,\n\n /**\n * @generated from enum value: AUDIO_FADE_RESPONSE_MESSAGE = 107;\n */\n AUDIO_FADE_RESPONSE_MESSAGE = 107,\n\n /**\n * @generated from enum value: CONFIGURE_CONNECTION_MESSAGE = 120;\n */\n CONFIGURE_CONNECTION_MESSAGE = 120,\n}\n\n/**\n * Describes the enum ProtocolMessage.Type.\n */\nexport const ProtocolMessage_TypeSchema: GenEnum<ProtocolMessage_Type> = /*@__PURE__*/\n enumDesc(file_ProtocolMessage, 1, 0);\n\n",
59
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlayerPath.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Origin } from \"./Origin_pb\";\nimport { file_Origin } from \"./Origin_pb\";\nimport type { NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport { file_NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport type { NowPlayingPlayer } from \"./NowPlayingPlayer_pb\";\nimport { file_NowPlayingPlayer } from \"./NowPlayingPlayer_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file PlayerPath.proto.\n */\nexport const file_PlayerPath: GenFile = /*@__PURE__*/\n fileDesc(\"ChBQbGF5ZXJQYXRoLnByb3RvImsKClBsYXllclBhdGgSFwoGb3JpZ2luGAEgASgLMgcuT3JpZ2luEiEKBmNsaWVudBgCIAEoCzIRLk5vd1BsYXlpbmdDbGllbnQSIQoGcGxheWVyGAMgASgLMhEuTm93UGxheWluZ1BsYXllcg\", [file_Origin, file_NowPlayingClient, file_NowPlayingPlayer]);\n\n/**\n * @generated from message PlayerPath\n */\nexport type PlayerPath = Message<\"PlayerPath\"> & {\n /**\n * @generated from field: optional Origin origin = 1;\n */\n origin?: Origin;\n\n /**\n * @generated from field: optional NowPlayingClient client = 2;\n */\n client?: NowPlayingClient;\n\n /**\n * @generated from field: optional NowPlayingPlayer player = 3;\n */\n player?: NowPlayingPlayer;\n};\n\n/**\n * Describes the message PlayerPath.\n * Use `create(PlayerPathSchema)` to create a new message.\n */\nexport const PlayerPathSchema: GenMessage<PlayerPath> = /*@__PURE__*/\n messageDesc(file_PlayerPath, 0);\n\n",
60
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file Origin.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { DeviceInfoMessage } from \"./DeviceInfoMessage_pb\";\nimport { file_DeviceInfoMessage } from \"./DeviceInfoMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file Origin.proto.\n */\nexport const file_Origin: GenFile = /*@__PURE__*/\n fileDesc(\"CgxPcmlnaW4ucHJvdG8iugEKBk9yaWdpbhIaCgR0eXBlGAEgASgOMgwuT3JpZ2luLlR5cGUSEwoLZGlzcGxheU5hbWUYAiABKAkSEgoKaWRlbnRpZmllchgDIAEoBRImCgpkZXZpY2VJbmZvGAQgASgLMhIuRGV2aWNlSW5mb01lc3NhZ2USFwoPaXNMb2NhbGx5SG9zdGVkGAUgASgIIioKBFR5cGUSCwoHVW5rbm93bhAAEgkKBUxvY2FsEAESCgoGQ3VzdG9tEAI\", [file_DeviceInfoMessage]);\n\n/**\n * @generated from message Origin\n */\nexport type Origin = Message<\"Origin\"> & {\n /**\n * @generated from field: optional Origin.Type type = 1;\n */\n type: Origin_Type;\n\n /**\n * @generated from field: optional string displayName = 2;\n */\n displayName: string;\n\n /**\n * @generated from field: optional int32 identifier = 3;\n */\n identifier: number;\n\n /**\n * @generated from field: optional DeviceInfoMessage deviceInfo = 4;\n */\n deviceInfo?: DeviceInfoMessage;\n\n /**\n * @generated from field: optional bool isLocallyHosted = 5;\n */\n isLocallyHosted: boolean;\n};\n\n/**\n * Describes the message Origin.\n * Use `create(OriginSchema)` to create a new message.\n */\nexport const OriginSchema: GenMessage<Origin> = /*@__PURE__*/\n messageDesc(file_Origin, 0);\n\n/**\n * @generated from enum Origin.Type\n */\nexport enum Origin_Type {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Local = 1;\n */\n Local = 1,\n\n /**\n * @generated from enum value: Custom = 2;\n */\n Custom = 2,\n}\n\n/**\n * Describes the enum Origin.Type.\n */\nexport const Origin_TypeSchema: GenEnum<Origin_Type> = /*@__PURE__*/\n enumDesc(file_Origin, 0, 0);\n\n",
61
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file DeviceInfoMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { DeviceClass_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file DeviceInfoMessage.proto.\n */\nexport const file_DeviceInfoMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChdEZXZpY2VJbmZvTWVzc2FnZS5wcm90byIyChFQcmVmZXJyZWRFbmNvZGluZyIdCgRFbnVtEgsKB0RlZmF1bHQQABIICgRKU09OEAEirAsKEURldmljZUluZm9NZXNzYWdlEhgKEHVuaXF1ZUlkZW50aWZpZXIYASABKAkSDAoEbmFtZRgCIAIoCRIaChJsb2NhbGl6ZWRNb2RlbE5hbWUYAyABKAkSGgoSc3lzdGVtQnVpbGRWZXJzaW9uGAQgASgJEiMKG2FwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllchgFIAEoCRIgChhhcHBsaWNhdGlvbkJ1bmRsZVZlcnNpb24YBiABKAkSFwoPcHJvdG9jb2xWZXJzaW9uGAcgASgFEiAKGGxhc3RTdXBwb3J0ZWRNZXNzYWdlVHlwZRgIIAEoDRIdChVzdXBwb3J0c1N5c3RlbVBhaXJpbmcYCSABKAgSFQoNYWxsb3dzUGFpcmluZxgKIAEoCBIRCgljb25uZWN0ZWQYCyABKAgSHgoWc3lzdGVtTWVkaWFBcHBsaWNhdGlvbhgMIAEoCRITCgtzdXBwb3J0c0FDTBgNIAEoCBIbChNzdXBwb3J0c1NoYXJlZFF1ZXVlGA4gASgIEh4KFnN1cHBvcnRzRXh0ZW5kZWRNb3Rpb24YDyABKAgSGAoQYmx1ZXRvb3RoQWRkcmVzcxgQIAEoDBIaChJzaGFyZWRRdWV1ZVZlcnNpb24YESABKA0SEQoJZGV2aWNlVUlEGBMgASgJEh0KFW1hbmFnZWRDb25maWdEZXZpY2VJRBgUIAEoCRImCgtkZXZpY2VDbGFzcxgVIAEoDjIRLkRldmljZUNsYXNzLkVudW0SGgoSbG9naWNhbERldmljZUNvdW50GBYgASgNEhoKEnRpZ2h0bHlTeW5jZWRHcm91cBgXIAEoCBIaChJpc1Byb3h5R3JvdXBQbGF5ZXIYGCABKAgSFAoMdGlnaHRTeW5jVUlEGBkgASgJEhAKCGdyb3VwVUlEGBogASgJEhEKCWdyb3VwTmFtZRgbIAEoCRIqCg5ncm91cGVkRGV2aWNlcxgcIAMoCzISLkRldmljZUluZm9NZXNzYWdlEhUKDWlzR3JvdXBMZWFkZXIYHSABKAgSFwoPaXNBaXJwbGF5QWN0aXZlGB4gASgIEiAKGHN5c3RlbVBvZGNhc3RBcHBsaWNhdGlvbhgfIAEoCRIdChVzZW5kZXJEZWZhdWx0R3JvdXBVSUQYICABKAkSGAoQYWlycGxheVJlY2VpdmVycxghIAMoCRIRCglsaW5rQWdlbnQYIiABKAkSEQoJY2x1c3RlcklEGCMgASgJEhcKD2NsdXN0ZXJMZWFkZXJJRBgkIAEoCRITCgtjbHVzdGVyVHlwZRglIAEoDRIWCg5pc0NsdXN0ZXJBd2FyZRgmIAEoCBIPCgdtb2RlbElEGCcgASgJEhsKE3N1cHBvcnRzTXVsdGlwbGF5ZXIYKCABKAgSGAoQcm91dGluZ0NvbnRleHRJRBgpIAEoCRIWCg5haXJQbGF5R3JvdXBJRBgqIAEoCRIeChZzeXN0ZW1Cb29rc0FwcGxpY2F0aW9uGCsgASgJEiwKEGNsdXN0ZXJlZERldmljZXMYLCADKAsyEi5EZXZpY2VJbmZvTWVzc2FnZRIyCipwYXJlbnRHcm91cENvbnRhaW5zRGlzY292ZXJhYmxlR3JvdXBMZWFkZXIYLSABKA0SLAokZ3JvdXBDb250YWluc0Rpc2NvdmVyYWJsZUdyb3VwTGVhZGVyGC4gASgNEhwKFGxhc3RLbm93bkNsdXN0ZXJUeXBlGC8gASgNEiEKGXN1cHBvcnRzT3V0cHV0Q29udGV4dFN5bmMYMSABKAgSFAoMY29tcHV0ZXJOYW1lGDIgASgJEh0KFWNvbmZpZ3VyZWRDbHVzdGVyU2l6ZRgzIAEoDRIyChFwcmVmZXJyZWRFbmNvZGluZxg0IAEoDjIXLlByZWZlcnJlZEVuY29kaW5nLkVudW06UgoRZGV2aWNlSW5mb01lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYFCABKAsyEi5EZXZpY2VJbmZvTWVzc2FnZVIRZGV2aWNlSW5mb01lc3NhZ2U\", [file_ProtocolMessage, file_Common]);\n\n/**\n * @generated from message PreferredEncoding\n */\nexport type PreferredEncoding = Message<\"PreferredEncoding\"> & {\n};\n\n/**\n * Describes the message PreferredEncoding.\n * Use `create(PreferredEncodingSchema)` to create a new message.\n */\nexport const PreferredEncodingSchema: GenMessage<PreferredEncoding> = /*@__PURE__*/\n messageDesc(file_DeviceInfoMessage, 0);\n\n/**\n * @generated from enum PreferredEncoding.Enum\n */\nexport enum PreferredEncoding_Enum {\n /**\n * @generated from enum value: Default = 0;\n */\n Default = 0,\n\n /**\n * @generated from enum value: JSON = 1;\n */\n JSON = 1,\n}\n\n/**\n * Describes the enum PreferredEncoding.Enum.\n */\nexport const PreferredEncoding_EnumSchema: GenEnum<PreferredEncoding_Enum> = /*@__PURE__*/\n enumDesc(file_DeviceInfoMessage, 0, 0);\n\n/**\n * @generated from message DeviceInfoMessage\n */\nexport type DeviceInfoMessage = Message<\"DeviceInfoMessage\"> & {\n /**\n * Example: B8D8678C-9DA9-4D29-9338-5D6B827B8063\n *\n * @generated from field: optional string uniqueIdentifier = 1;\n */\n uniqueIdentifier: string;\n\n /**\n * Example: Jean's iPhone\n *\n * @generated from field: required string name = 2;\n */\n name: string;\n\n /**\n * Example: iPhone\n *\n * @generated from field: optional string localizedModelName = 3;\n */\n localizedModelName: string;\n\n /**\n * Example: 13F69\n *\n * @generated from field: optional string systemBuildVersion = 4;\n */\n systemBuildVersion: string;\n\n /**\n * Example: com.example.myremote\n *\n * @generated from field: optional string applicationBundleIdentifier = 5;\n */\n applicationBundleIdentifier: string;\n\n /**\n * Example: 107\n *\n * @generated from field: optional string applicationBundleVersion = 6;\n */\n applicationBundleVersion: string;\n\n /**\n * Example: 1\n *\n * @generated from field: optional int32 protocolVersion = 7;\n */\n protocolVersion: number;\n\n /**\n * @generated from field: optional uint32 lastSupportedMessageType = 8;\n */\n lastSupportedMessageType: number;\n\n /**\n * @generated from field: optional bool supportsSystemPairing = 9;\n */\n supportsSystemPairing: boolean;\n\n /**\n * @generated from field: optional bool allowsPairing = 10;\n */\n allowsPairing: boolean;\n\n /**\n * @generated from field: optional bool connected = 11;\n */\n connected: boolean;\n\n /**\n * @generated from field: optional string systemMediaApplication = 12;\n */\n systemMediaApplication: string;\n\n /**\n * @generated from field: optional bool supportsACL = 13;\n */\n supportsACL: boolean;\n\n /**\n * @generated from field: optional bool supportsSharedQueue = 14;\n */\n supportsSharedQueue: boolean;\n\n /**\n * @generated from field: optional bool supportsExtendedMotion = 15;\n */\n supportsExtendedMotion: boolean;\n\n /**\n * @generated from field: optional bytes bluetoothAddress = 16;\n */\n bluetoothAddress: Uint8Array;\n\n /**\n * @generated from field: optional uint32 sharedQueueVersion = 17;\n */\n sharedQueueVersion: number;\n\n /**\n * @generated from field: optional string deviceUID = 19;\n */\n deviceUID: string;\n\n /**\n * @generated from field: optional string managedConfigDeviceID = 20;\n */\n managedConfigDeviceID: string;\n\n /**\n * @generated from field: optional DeviceClass.Enum deviceClass = 21;\n */\n deviceClass: DeviceClass_Enum;\n\n /**\n * @generated from field: optional uint32 logicalDeviceCount = 22;\n */\n logicalDeviceCount: number;\n\n /**\n * @generated from field: optional bool tightlySyncedGroup = 23;\n */\n tightlySyncedGroup: boolean;\n\n /**\n * @generated from field: optional bool isProxyGroupPlayer = 24;\n */\n isProxyGroupPlayer: boolean;\n\n /**\n * @generated from field: optional string tightSyncUID = 25;\n */\n tightSyncUID: string;\n\n /**\n * @generated from field: optional string groupUID = 26;\n */\n groupUID: string;\n\n /**\n * @generated from field: optional string groupName = 27;\n */\n groupName: string;\n\n /**\n * @generated from field: repeated DeviceInfoMessage groupedDevices = 28;\n */\n groupedDevices: DeviceInfoMessage[];\n\n /**\n * @generated from field: optional bool isGroupLeader = 29;\n */\n isGroupLeader: boolean;\n\n /**\n * @generated from field: optional bool isAirplayActive = 30;\n */\n isAirplayActive: boolean;\n\n /**\n * @generated from field: optional string systemPodcastApplication = 31;\n */\n systemPodcastApplication: string;\n\n /**\n * @generated from field: optional string senderDefaultGroupUID = 32;\n */\n senderDefaultGroupUID: string;\n\n /**\n * @generated from field: repeated string airplayReceivers = 33;\n */\n airplayReceivers: string[];\n\n /**\n * @generated from field: optional string linkAgent = 34;\n */\n linkAgent: string;\n\n /**\n * @generated from field: optional string clusterID = 35;\n */\n clusterID: string;\n\n /**\n * @generated from field: optional string clusterLeaderID = 36;\n */\n clusterLeaderID: string;\n\n /**\n * @generated from field: optional uint32 clusterType = 37;\n */\n clusterType: number;\n\n /**\n * @generated from field: optional bool isClusterAware = 38;\n */\n isClusterAware: boolean;\n\n /**\n * @generated from field: optional string modelID = 39;\n */\n modelID: string;\n\n /**\n * @generated from field: optional bool supportsMultiplayer = 40;\n */\n supportsMultiplayer: boolean;\n\n /**\n * Example: 577E1BCA-2D9B-41C2-A8F8-C515CE8072D4\n *\n * @generated from field: optional string routingContextID = 41;\n */\n routingContextID: string;\n\n /**\n * Example: 6E0ED14E-0BA4-4A84-AF30-9EB080E7AA73\n *\n * @generated from field: optional string airPlayGroupID = 42;\n */\n airPlayGroupID: string;\n\n /**\n * Example: com.apple.iBooks\n *\n * @generated from field: optional string systemBooksApplication = 43;\n */\n systemBooksApplication: string;\n\n /**\n * @generated from field: repeated DeviceInfoMessage clusteredDevices = 44;\n */\n clusteredDevices: DeviceInfoMessage[];\n\n /**\n * @generated from field: optional uint32 parentGroupContainsDiscoverableGroupLeader = 45;\n */\n parentGroupContainsDiscoverableGroupLeader: number;\n\n /**\n * @generated from field: optional uint32 groupContainsDiscoverableGroupLeader = 46;\n */\n groupContainsDiscoverableGroupLeader: number;\n\n /**\n * @generated from field: optional uint32 lastKnownClusterType = 47;\n */\n lastKnownClusterType: number;\n\n /**\n * repeated ... allClusteredDevices = 48;\n *\n * @generated from field: optional bool supportsOutputContextSync = 49;\n */\n supportsOutputContextSync: boolean;\n\n /**\n * @generated from field: optional string computerName = 50;\n */\n computerName: string;\n\n /**\n * @generated from field: optional uint32 configuredClusterSize = 51;\n */\n configuredClusterSize: number;\n\n /**\n * @generated from field: optional PreferredEncoding.Enum preferredEncoding = 52;\n */\n preferredEncoding: PreferredEncoding_Enum;\n};\n\n/**\n * Describes the message DeviceInfoMessage.\n * Use `create(DeviceInfoMessageSchema)` to create a new message.\n */\nexport const DeviceInfoMessageSchema: GenMessage<DeviceInfoMessage> = /*@__PURE__*/\n messageDesc(file_DeviceInfoMessage, 1);\n\n/**\n * @generated from extension: optional DeviceInfoMessage deviceInfoMessage = 20;\n */\nexport const deviceInfoMessage: GenExtension<ProtocolMessage, DeviceInfoMessage> = /*@__PURE__*/\n extDesc(file_DeviceInfoMessage, 0);\n\n",
62
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file Common.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file Common.proto.\n */\nexport const file_Common: GenFile = /*@__PURE__*/\n fileDesc(\"CgxDb21tb24ucHJvdG8iPAoKUmVwZWF0TW9kZSIuCgRFbnVtEgsKB1Vua25vd24QABIHCgNPZmYQARIHCgNPbmUQAhIHCgNBbGwQAyJCCgtTaHVmZmxlTW9kZSIzCgRFbnVtEgsKB1Vua25vd24QABIHCgNPZmYQARIKCgZBbGJ1bXMQAhIJCgVTb25ncxADIokBCgtEZXZpY2VDbGFzcyJ6CgRFbnVtEgsKB0ludmFsaWQQABIKCgZpUGhvbmUQARIICgRpUG9kEAISCAoEaVBhZBADEgsKB0FwcGxlVFYQBBIJCgVpRlBHQRAFEgkKBVdhdGNoEAYSDQoJQWNjZXNzb3J5EAcSCgoGQnJpZGdlEAgSBwoDTWFjEAkiYgoKRGV2aWNlVHlwZSJUCgRFbnVtEgsKB1Vua25vd24QABILCgdBaXJQbGF5EAESDQoJQmx1ZXRvb3RoEAISCwoHQ2FyUGxheRADEgsKB0J1aWx0SW4QBBIJCgVXaXJlZBAFIoACCg1EZXZpY2VTdWJUeXBlIu4BCgRFbnVtEgsKB0RlZmF1bHQQABILCgdTcGVha2VyEAESDgoKSGVhZHBob25lcxACEgsKB0hlYWRzZXQQAxIMCghSZWNlaXZlchAEEgsKB0xpbmVPdXQQBRIHCgNVU0IQBhIPCgtEaXNwbGF5UG9ydBAHEggKBEhETUkQCBINCglMb3dFbmVyZ3kQCRIJCgVTUERJRhAKEgYKAlRWEAsSCwoHSG9tZVBvZBAMEgsKB0FwcGxlVFYQDRILCgdWZWhpY2xlEA4SCwoHQ2x1c3RlchAPEg0KCVNldFRvcEJveBAQEgsKB1RWU3RpY2sQESJoCg1QbGF5YmFja1N0YXRlIlcKBEVudW0SCwoHVW5rbm93bhAAEgsKB1BsYXlpbmcQARIKCgZQYXVzZWQQAhILCgdTdG9wcGVkEAMSDwoLSW50ZXJydXB0ZWQQBBILCgdTZWVraW5nEAU\");\n\n/**\n * @generated from message RepeatMode\n */\nexport type RepeatMode = Message<\"RepeatMode\"> & {\n};\n\n/**\n * Describes the message RepeatMode.\n * Use `create(RepeatModeSchema)` to create a new message.\n */\nexport const RepeatModeSchema: GenMessage<RepeatMode> = /*@__PURE__*/\n messageDesc(file_Common, 0);\n\n/**\n * @generated from enum RepeatMode.Enum\n */\nexport enum RepeatMode_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Off = 1;\n */\n Off = 1,\n\n /**\n * @generated from enum value: One = 2;\n */\n One = 2,\n\n /**\n * @generated from enum value: All = 3;\n */\n All = 3,\n}\n\n/**\n * Describes the enum RepeatMode.Enum.\n */\nexport const RepeatMode_EnumSchema: GenEnum<RepeatMode_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 0, 0);\n\n/**\n * @generated from message ShuffleMode\n */\nexport type ShuffleMode = Message<\"ShuffleMode\"> & {\n};\n\n/**\n * Describes the message ShuffleMode.\n * Use `create(ShuffleModeSchema)` to create a new message.\n */\nexport const ShuffleModeSchema: GenMessage<ShuffleMode> = /*@__PURE__*/\n messageDesc(file_Common, 1);\n\n/**\n * @generated from enum ShuffleMode.Enum\n */\nexport enum ShuffleMode_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Off = 1;\n */\n Off = 1,\n\n /**\n * @generated from enum value: Albums = 2;\n */\n Albums = 2,\n\n /**\n * @generated from enum value: Songs = 3;\n */\n Songs = 3,\n}\n\n/**\n * Describes the enum ShuffleMode.Enum.\n */\nexport const ShuffleMode_EnumSchema: GenEnum<ShuffleMode_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 1, 0);\n\n/**\n * @generated from message DeviceClass\n */\nexport type DeviceClass = Message<\"DeviceClass\"> & {\n};\n\n/**\n * Describes the message DeviceClass.\n * Use `create(DeviceClassSchema)` to create a new message.\n */\nexport const DeviceClassSchema: GenMessage<DeviceClass> = /*@__PURE__*/\n messageDesc(file_Common, 2);\n\n/**\n * @generated from enum DeviceClass.Enum\n */\nexport enum DeviceClass_Enum {\n /**\n * @generated from enum value: Invalid = 0;\n */\n Invalid = 0,\n\n /**\n * @generated from enum value: iPhone = 1;\n */\n iPhone = 1,\n\n /**\n * @generated from enum value: iPod = 2;\n */\n iPod = 2,\n\n /**\n * @generated from enum value: iPad = 3;\n */\n iPad = 3,\n\n /**\n * @generated from enum value: AppleTV = 4;\n */\n AppleTV = 4,\n\n /**\n * @generated from enum value: iFPGA = 5;\n */\n iFPGA = 5,\n\n /**\n * @generated from enum value: Watch = 6;\n */\n Watch = 6,\n\n /**\n * @generated from enum value: Accessory = 7;\n */\n Accessory = 7,\n\n /**\n * @generated from enum value: Bridge = 8;\n */\n Bridge = 8,\n\n /**\n * @generated from enum value: Mac = 9;\n */\n Mac = 9,\n}\n\n/**\n * Describes the enum DeviceClass.Enum.\n */\nexport const DeviceClass_EnumSchema: GenEnum<DeviceClass_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 2, 0);\n\n/**\n * @generated from message DeviceType\n */\nexport type DeviceType = Message<\"DeviceType\"> & {\n};\n\n/**\n * Describes the message DeviceType.\n * Use `create(DeviceTypeSchema)` to create a new message.\n */\nexport const DeviceTypeSchema: GenMessage<DeviceType> = /*@__PURE__*/\n messageDesc(file_Common, 3);\n\n/**\n * @generated from enum DeviceType.Enum\n */\nexport enum DeviceType_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: AirPlay = 1;\n */\n AirPlay = 1,\n\n /**\n * @generated from enum value: Bluetooth = 2;\n */\n Bluetooth = 2,\n\n /**\n * @generated from enum value: CarPlay = 3;\n */\n CarPlay = 3,\n\n /**\n * @generated from enum value: BuiltIn = 4;\n */\n BuiltIn = 4,\n\n /**\n * @generated from enum value: Wired = 5;\n */\n Wired = 5,\n}\n\n/**\n * Describes the enum DeviceType.Enum.\n */\nexport const DeviceType_EnumSchema: GenEnum<DeviceType_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 3, 0);\n\n/**\n * @generated from message DeviceSubType\n */\nexport type DeviceSubType = Message<\"DeviceSubType\"> & {\n};\n\n/**\n * Describes the message DeviceSubType.\n * Use `create(DeviceSubTypeSchema)` to create a new message.\n */\nexport const DeviceSubTypeSchema: GenMessage<DeviceSubType> = /*@__PURE__*/\n messageDesc(file_Common, 4);\n\n/**\n * @generated from enum DeviceSubType.Enum\n */\nexport enum DeviceSubType_Enum {\n /**\n * @generated from enum value: Default = 0;\n */\n Default = 0,\n\n /**\n * @generated from enum value: Speaker = 1;\n */\n Speaker = 1,\n\n /**\n * @generated from enum value: Headphones = 2;\n */\n Headphones = 2,\n\n /**\n * @generated from enum value: Headset = 3;\n */\n Headset = 3,\n\n /**\n * @generated from enum value: Receiver = 4;\n */\n Receiver = 4,\n\n /**\n * @generated from enum value: LineOut = 5;\n */\n LineOut = 5,\n\n /**\n * @generated from enum value: USB = 6;\n */\n USB = 6,\n\n /**\n * @generated from enum value: DisplayPort = 7;\n */\n DisplayPort = 7,\n\n /**\n * @generated from enum value: HDMI = 8;\n */\n HDMI = 8,\n\n /**\n * @generated from enum value: LowEnergy = 9;\n */\n LowEnergy = 9,\n\n /**\n * @generated from enum value: SPDIF = 10;\n */\n SPDIF = 10,\n\n /**\n * @generated from enum value: TV = 11;\n */\n TV = 11,\n\n /**\n * @generated from enum value: HomePod = 12;\n */\n HomePod = 12,\n\n /**\n * @generated from enum value: AppleTV = 13;\n */\n AppleTV = 13,\n\n /**\n * @generated from enum value: Vehicle = 14;\n */\n Vehicle = 14,\n\n /**\n * @generated from enum value: Cluster = 15;\n */\n Cluster = 15,\n\n /**\n * @generated from enum value: SetTopBox = 16;\n */\n SetTopBox = 16,\n\n /**\n * @generated from enum value: TVStick = 17;\n */\n TVStick = 17,\n}\n\n/**\n * Describes the enum DeviceSubType.Enum.\n */\nexport const DeviceSubType_EnumSchema: GenEnum<DeviceSubType_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 4, 0);\n\n/**\n * @generated from message PlaybackState\n */\nexport type PlaybackState = Message<\"PlaybackState\"> & {\n};\n\n/**\n * Describes the message PlaybackState.\n * Use `create(PlaybackStateSchema)` to create a new message.\n */\nexport const PlaybackStateSchema: GenMessage<PlaybackState> = /*@__PURE__*/\n messageDesc(file_Common, 5);\n\n/**\n * @generated from enum PlaybackState.Enum\n */\nexport enum PlaybackState_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Playing = 1;\n */\n Playing = 1,\n\n /**\n * @generated from enum value: Paused = 2;\n */\n Paused = 2,\n\n /**\n * @generated from enum value: Stopped = 3;\n */\n Stopped = 3,\n\n /**\n * @generated from enum value: Interrupted = 4;\n */\n Interrupted = 4,\n\n /**\n * @generated from enum value: Seeking = 5;\n */\n Seeking = 5,\n}\n\n/**\n * Describes the enum PlaybackState.Enum.\n */\nexport const PlaybackState_EnumSchema: GenEnum<PlaybackState_Enum> = /*@__PURE__*/\n enumDesc(file_Common, 5, 0);\n\n",
63
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file NowPlayingClient.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file NowPlayingClient.proto.\n */\nexport const file_NowPlayingClient: GenFile = /*@__PURE__*/\n fileDesc(\"ChZOb3dQbGF5aW5nQ2xpZW50LnByb3RvIugBChBOb3dQbGF5aW5nQ2xpZW50EhkKEXByb2Nlc3NJZGVudGlmaWVyGAEgASgFEhgKEGJ1bmRsZUlkZW50aWZpZXIYAiABKAkSKQohcGFyZW50QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyGAMgASgJEh0KFXByb2Nlc3NVc2VySWRlbnRpZmllchgEIAEoBRIcChRub3dQbGF5aW5nVmlzaWJpbGl0eRgFIAEoBRITCgtkaXNwbGF5TmFtZRgHIAEoCRIiChpidW5kbGVJZGVudGlmaWVySGllcmFyY2h5cxgIIAMoCQ\");\n\n/**\n * @generated from message NowPlayingClient\n */\nexport type NowPlayingClient = Message<\"NowPlayingClient\"> & {\n /**\n * @generated from field: optional int32 processIdentifier = 1;\n */\n processIdentifier: number;\n\n /**\n * @generated from field: optional string bundleIdentifier = 2;\n */\n bundleIdentifier: string;\n\n /**\n * @generated from field: optional string parentApplicationBundleIdentifier = 3;\n */\n parentApplicationBundleIdentifier: string;\n\n /**\n * @generated from field: optional int32 processUserIdentifier = 4;\n */\n processUserIdentifier: number;\n\n /**\n * @generated from field: optional int32 nowPlayingVisibility = 5;\n */\n nowPlayingVisibility: number;\n\n /**\n * optional TintColor tintColor = 6;\n *\n * @generated from field: optional string displayName = 7;\n */\n displayName: string;\n\n /**\n * @generated from field: repeated string bundleIdentifierHierarchys = 8;\n */\n bundleIdentifierHierarchys: string[];\n};\n\n/**\n * Describes the message NowPlayingClient.\n * Use `create(NowPlayingClientSchema)` to create a new message.\n */\nexport const NowPlayingClientSchema: GenMessage<NowPlayingClient> = /*@__PURE__*/\n messageDesc(file_NowPlayingClient, 0);\n\n",
64
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file NowPlayingPlayer.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file NowPlayingPlayer.proto.\n */\nexport const file_NowPlayingPlayer: GenFile = /*@__PURE__*/\n fileDesc(\"ChZOb3dQbGF5aW5nUGxheWVyLnByb3RvIq0BChBOb3dQbGF5aW5nUGxheWVyEhIKCmlkZW50aWZpZXIYASABKAkSEwoLZGlzcGxheU5hbWUYAiABKAkSFwoPaXNEZWZhdWx0UGxheWVyGAMgASgIEhgKEGF1ZGlvU2Vzc2lvblR5cGUYBCABKAUSFAoMbXhTZXNzaW9uSURzGAUgASgDEhYKDmF1ZGlvU2Vzc2lvbklEGAYgASgNEg8KB2ljb25VUkwYByABKAk\");\n\n/**\n * @generated from message NowPlayingPlayer\n */\nexport type NowPlayingPlayer = Message<\"NowPlayingPlayer\"> & {\n /**\n * @generated from field: optional string identifier = 1;\n */\n identifier: string;\n\n /**\n * @generated from field: optional string displayName = 2;\n */\n displayName: string;\n\n /**\n * @generated from field: optional bool isDefaultPlayer = 3;\n */\n isDefaultPlayer: boolean;\n\n /**\n * @generated from field: optional int32 audioSessionType = 4;\n */\n audioSessionType: number;\n\n /**\n * @generated from field: optional int64 mxSessionIDs = 5;\n */\n mxSessionIDs: bigint;\n\n /**\n * @generated from field: optional uint32 audioSessionID = 6;\n */\n audioSessionID: number;\n\n /**\n * @generated from field: optional string iconURL = 7;\n */\n iconURL: string;\n};\n\n/**\n * Describes the message NowPlayingPlayer.\n * Use `create(NowPlayingPlayerSchema)` to create a new message.\n */\nexport const NowPlayingPlayerSchema: GenMessage<NowPlayingPlayer> = /*@__PURE__*/\n messageDesc(file_NowPlayingPlayer, 0);\n\n",
65
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file AudioFadeResponseMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file AudioFadeResponseMessage.proto.\n */\nexport const file_AudioFadeResponseMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5BdWRpb0ZhZGVSZXNwb25zZU1lc3NhZ2UucHJvdG8iMAoYQXVkaW9GYWRlUmVzcG9uc2VNZXNzYWdlEhQKDGZhZGVEdXJhdGlvbhgBIAEoAzpnChhhdWRpb0ZhZGVSZXNwb25zZU1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYWSABKAsyGS5BdWRpb0ZhZGVSZXNwb25zZU1lc3NhZ2VSGGF1ZGlvRmFkZVJlc3BvbnNlTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message AudioFadeResponseMessage\n */\nexport type AudioFadeResponseMessage = Message<\"AudioFadeResponseMessage\"> & {\n /**\n * @generated from field: optional int64 fadeDuration = 1;\n */\n fadeDuration: bigint;\n};\n\n/**\n * Describes the message AudioFadeResponseMessage.\n * Use `create(AudioFadeResponseMessageSchema)` to create a new message.\n */\nexport const AudioFadeResponseMessageSchema: GenMessage<AudioFadeResponseMessage> = /*@__PURE__*/\n messageDesc(file_AudioFadeResponseMessage, 0);\n\n/**\n * @generated from extension: optional AudioFadeResponseMessage audioFadeResponseMessage = 89;\n */\nexport const audioFadeResponseMessage: GenExtension<ProtocolMessage, AudioFadeResponseMessage> = /*@__PURE__*/\n extDesc(file_AudioFadeResponseMessage, 0);\n\n",
66
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file AudioFormatSettingsMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file AudioFormatSettingsMessage.proto.\n */\nexport const file_AudioFormatSettingsMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBBdWRpb0Zvcm1hdFNldHRpbmdzTWVzc2FnZS5wcm90byI2ChNBdWRpb0Zvcm1hdFNldHRpbmdzEh8KF2Zvcm1hdFNldHRpbmdzUGxpc3REYXRhGAEgASgM\");\n\n/**\n * @generated from message AudioFormatSettings\n */\nexport type AudioFormatSettings = Message<\"AudioFormatSettings\"> & {\n /**\n * @generated from field: optional bytes formatSettingsPlistData = 1;\n */\n formatSettingsPlistData: Uint8Array;\n};\n\n/**\n * Describes the message AudioFormatSettings.\n * Use `create(AudioFormatSettingsSchema)` to create a new message.\n */\nexport const AudioFormatSettingsSchema: GenMessage<AudioFormatSettings> = /*@__PURE__*/\n messageDesc(file_AudioFormatSettingsMessage, 0);\n\n",
67
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ClientUpdatesConfigMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ClientUpdatesConfigMessage.proto.\n */\nexport const file_ClientUpdatesConfigMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBDbGllbnRVcGRhdGVzQ29uZmlnTWVzc2FnZS5wcm90byKcAQoaQ2xpZW50VXBkYXRlc0NvbmZpZ01lc3NhZ2USFgoOYXJ0d29ya1VwZGF0ZXMYASABKAgSGQoRbm93UGxheWluZ1VwZGF0ZXMYAiABKAgSFQoNdm9sdW1lVXBkYXRlcxgDIAEoCBIXCg9rZXlib2FyZFVwZGF0ZXMYBCABKAgSGwoTb3V0cHV0RGV2aWNlVXBkYXRlcxgFIAEoCDptChpjbGllbnRVcGRhdGVzQ29uZmlnTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgVIAEoCzIbLkNsaWVudFVwZGF0ZXNDb25maWdNZXNzYWdlUhpjbGllbnRVcGRhdGVzQ29uZmlnTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message ClientUpdatesConfigMessage\n */\nexport type ClientUpdatesConfigMessage = Message<\"ClientUpdatesConfigMessage\"> & {\n /**\n * @generated from field: optional bool artworkUpdates = 1;\n */\n artworkUpdates: boolean;\n\n /**\n * @generated from field: optional bool nowPlayingUpdates = 2;\n */\n nowPlayingUpdates: boolean;\n\n /**\n * @generated from field: optional bool volumeUpdates = 3;\n */\n volumeUpdates: boolean;\n\n /**\n * @generated from field: optional bool keyboardUpdates = 4;\n */\n keyboardUpdates: boolean;\n\n /**\n * @generated from field: optional bool outputDeviceUpdates = 5;\n */\n outputDeviceUpdates: boolean;\n};\n\n/**\n * Describes the message ClientUpdatesConfigMessage.\n * Use `create(ClientUpdatesConfigMessageSchema)` to create a new message.\n */\nexport const ClientUpdatesConfigMessageSchema: GenMessage<ClientUpdatesConfigMessage> = /*@__PURE__*/\n messageDesc(file_ClientUpdatesConfigMessage, 0);\n\n/**\n * @generated from extension: optional ClientUpdatesConfigMessage clientUpdatesConfigMessage = 21;\n */\nexport const clientUpdatesConfigMessage: GenExtension<ProtocolMessage, ClientUpdatesConfigMessage> = /*@__PURE__*/\n extDesc(file_ClientUpdatesConfigMessage, 0);\n\n",
68
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file CommandInfo.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { RepeatMode_Enum, ShuffleMode_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file CommandInfo.proto.\n */\nexport const file_CommandInfo: GenFile = /*@__PURE__*/\n fileDesc(\"ChFDb21tYW5kSW5mby5wcm90byJMCg5RdWV1ZUVuZEFjdGlvbiI6CgRFbnVtEg8KC0NsZWFyQWN0aW9uEAASCAoETm9uZRABEgkKBVJlc2V0EAISDAoIQXV0b1BsYXkQAyJKCg1EaXNhYmxlUmVhc29uIjkKBEVudW0SCwoHVW5rbm93bhAAEg4KCkFkUGxheWJhY2sQARIUChBTa2lwTGltaXRSZWFjaGVkEAIigwEKHFByZWxvYWRlZFBsYXliYWNrU2Vzc2lvbkluZm8SIQoZcGxheWJhY2tTZXNzaW9uSWRlbnRpZmllchgBIAEoCRIfChdwbGF5YmFja1Nlc3Npb25SZXZpc2lvbhgCIAEoCRIfChdwbGF5YmFja1Nlc3Npb25Qcmlvcml0eRgDIAEoBSK/BwoLQ29tbWFuZEluZm8SGQoHY29tbWFuZBgBIAEoDjIILkNvbW1hbmQSDwoHZW5hYmxlZBgCIAEoCBIOCgZhY3RpdmUYAyABKAgSGgoScHJlZmVycmVkSW50ZXJ2YWxzGAQgAygBEhYKDmxvY2FsaXplZFRpdGxlGAUgASgJEhUKDW1pbmltdW1SYXRpbmcYBiABKAISFQoNbWF4aW11bVJhdGluZxgHIAEoAhIWCg5zdXBwb3J0ZWRSYXRlcxgIIAMoAhIbChNsb2NhbGl6ZWRTaG9ydFRpdGxlGAkgASgJEiQKCnJlcGVhdE1vZGUYCiABKA4yEC5SZXBlYXRNb2RlLkVudW0SJgoLc2h1ZmZsZU1vZGUYCyABKA4yES5TaHVmZmxlTW9kZS5FbnVtEhkKEXByZXNlbnRhdGlvblN0eWxlGAwgASgFEhQKDHNraXBJbnRlcnZhbBgNIAEoBRIZChFudW1BdmFpbGFibGVTa2lwcxgOIAEoBRIVCg1za2lwRnJlcXVlbmN5GA8gASgFEhAKCGNhblNjcnViGBAgASgFEiMKG3N1cHBvcnRlZFBsYXliYWNrUXVldWVUeXBlcxgRIAMoBRInCh9zdXBwb3J0ZWRDdXN0b21RdWV1ZUlkZW50aWZpZXJzGBIgAygJEiMKG3N1cHBvcnRlZEluc2VydGlvblBvc2l0aW9ucxgTIAMoBRIbChNzdXBwb3J0c1NoYXJlZFF1ZXVlGBQgASgIEhcKD3VwTmV4dEl0ZW1Db3VudBgVIAEoBRIdChVwcmVmZXJyZWRQbGF5YmFja1JhdGUYFiABKAISJQodc3VwcG9ydGVkUGxheWJhY2tTZXNzaW9uVHlwZXMYFyADKAkSIwobY3VycmVudFBsYXliYWNrU2Vzc2lvblR5cGVzGBggAygJEiEKGXBsYXliYWNrU2Vzc2lvbklkZW50aWZpZXIYGSABKAkSMwoVY3VycmVudFF1ZXVlRW5kQWN0aW9uGBogASgOMhQuUXVldWVFbmRBY3Rpb24uRW51bRI2ChhzdXBwb3J0ZWRFbmRRdWV1ZUFjdGlvbnMYGyADKA4yFC5RdWV1ZUVuZEFjdGlvbi5FbnVtEioKDWRpc2FibGVSZWFzb24YHCABKA4yEy5EaXNhYmxlUmVhc29uLkVudW0SSgojc3VwcG9ydGVkUGxheWJhY2tTZXNzaW9uSWRlbnRpZmllcnMYHSADKAsyHS5QcmVsb2FkZWRQbGF5YmFja1Nlc3Npb25JbmZvKsIJCgdDb21tYW5kEgsKB1Vua25vd24QABIICgRQbGF5EAESCQoFUGF1c2UQAhITCg9Ub2dnbGVQbGF5UGF1c2UQAxIICgRTdG9wEAQSDQoJTmV4dFRyYWNrEAUSEQoNUHJldmlvdXNUcmFjaxAGEhYKEkFkdmFuY2VTaHVmZmxlTW9kZRAHEhUKEUFkdmFuY2VSZXBlYXRNb2RlEAgSFAoQQmVnaW5GYXN0Rm9yd2FyZBAJEhIKDkVuZEZhc3RGb3J3YXJkEAoSDwoLQmVnaW5SZXdpbmQQCxINCglFbmRSZXdpbmQQDBITCg9SZXdpbmQxNVNlY29uZHMQDRIYChRGYXN0Rm9yd2FyZDE1U2Vjb25kcxAOEhMKD1Jld2luZDMwU2Vjb25kcxAPEhgKFEZhc3RGb3J3YXJkMzBTZWNvbmRzEBASDwoLU2tpcEZvcndhcmQQEhIQCgxTa2lwQmFja3dhcmQQExIWChJDaGFuZ2VQbGF5YmFja1JhdGUQFBINCglSYXRlVHJhY2sQFRINCglMaWtlVHJhY2sQFhIQCgxEaXNsaWtlVHJhY2sQFxIRCg1Cb29rbWFya1RyYWNrEBgSGgoWU2Vla1RvUGxheWJhY2tQb3NpdGlvbhAtEhQKEENoYW5nZVJlcGVhdE1vZGUQLhIVChFDaGFuZ2VTaHVmZmxlTW9kZRAvEhgKFEVuYWJsZUxhbmd1YWdlT3B0aW9uEDUSGQoVRGlzYWJsZUxhbmd1YWdlT3B0aW9uEDYSDwoLTmV4dENoYXB0ZXIQGRITCg9QcmV2aW91c0NoYXB0ZXIQGhINCglOZXh0QWxidW0QGxIRCg1QcmV2aW91c0FsYnVtEBwSEAoMTmV4dFBsYXlsaXN0EB0SFAoQUHJldmlvdXNQbGF5bGlzdBAeEgwKCEJhblRyYWNrEB8SFgoSQWRkVHJhY2tUb1dpc2hMaXN0ECASGwoXUmVtb3ZlVHJhY2tGcm9tV2lzaExpc3QQIRIRCg1OZXh0SW5Db250ZXh0ECISFQoRUHJldmlvdXNJbkNvbnRleHQQIxIYChRSZXNldFBsYXliYWNrVGltZW91dBApEhQKEFNldFBsYXliYWNrUXVldWUQMBIeChpBZGROb3dQbGF5aW5nSXRlbVRvTGlicmFyeRAxEhYKEkNyZWF0ZVJhZGlvU3RhdGlvbhAyEhQKEEFkZEl0ZW1Ub0xpYnJhcnkQMxIbChdJbnNlcnRJbnRvUGxheWJhY2tRdWV1ZRA0EhgKFFJlb3JkZXJQbGF5YmFja1F1ZXVlEDcSGwoXUmVtb3ZlRnJvbVBsYXliYWNrUXVldWUQOBIbChdQbGF5SXRlbUluUGxheWJhY2tRdWV1ZRA5EhYKElByZXBhcmVGb3JTZXRRdWV1ZRA6EhYKElNldFBsYXliYWNrU2Vzc2lvbhA7EhwKGFByZWxvYWRlZFBsYXliYWNrU2Vzc2lvbhA8EiEKHVNldFByaW9yaXR5Rm9yUGxheWJhY2tTZXNzaW9uED0SGgoWRGlzY2FyZFBsYXliYWNrU2Vzc2lvbhA+Eg0KCVJlc2h1ZmZsZRA/EhkKFENoYW5nZVF1ZXVlRW5kQWN0aW9uEIcB\", [file_Common]);\n\n/**\n * @generated from message QueueEndAction\n */\nexport type QueueEndAction = Message<\"QueueEndAction\"> & {\n};\n\n/**\n * Describes the message QueueEndAction.\n * Use `create(QueueEndActionSchema)` to create a new message.\n */\nexport const QueueEndActionSchema: GenMessage<QueueEndAction> = /*@__PURE__*/\n messageDesc(file_CommandInfo, 0);\n\n/**\n * @generated from enum QueueEndAction.Enum\n */\nexport enum QueueEndAction_Enum {\n /**\n * @generated from enum value: ClearAction = 0;\n */\n ClearAction = 0,\n\n /**\n * @generated from enum value: None = 1;\n */\n None = 1,\n\n /**\n * @generated from enum value: Reset = 2;\n */\n Reset = 2,\n\n /**\n * @generated from enum value: AutoPlay = 3;\n */\n AutoPlay = 3,\n}\n\n/**\n * Describes the enum QueueEndAction.Enum.\n */\nexport const QueueEndAction_EnumSchema: GenEnum<QueueEndAction_Enum> = /*@__PURE__*/\n enumDesc(file_CommandInfo, 0, 0);\n\n/**\n * @generated from message DisableReason\n */\nexport type DisableReason = Message<\"DisableReason\"> & {\n};\n\n/**\n * Describes the message DisableReason.\n * Use `create(DisableReasonSchema)` to create a new message.\n */\nexport const DisableReasonSchema: GenMessage<DisableReason> = /*@__PURE__*/\n messageDesc(file_CommandInfo, 1);\n\n/**\n * @generated from enum DisableReason.Enum\n */\nexport enum DisableReason_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: AdPlayback = 1;\n */\n AdPlayback = 1,\n\n /**\n * @generated from enum value: SkipLimitReached = 2;\n */\n SkipLimitReached = 2,\n}\n\n/**\n * Describes the enum DisableReason.Enum.\n */\nexport const DisableReason_EnumSchema: GenEnum<DisableReason_Enum> = /*@__PURE__*/\n enumDesc(file_CommandInfo, 1, 0);\n\n/**\n * @generated from message PreloadedPlaybackSessionInfo\n */\nexport type PreloadedPlaybackSessionInfo = Message<\"PreloadedPlaybackSessionInfo\"> & {\n /**\n * @generated from field: optional string playbackSessionIdentifier = 1;\n */\n playbackSessionIdentifier: string;\n\n /**\n * @generated from field: optional string playbackSessionRevision = 2;\n */\n playbackSessionRevision: string;\n\n /**\n * @generated from field: optional int32 playbackSessionPriority = 3;\n */\n playbackSessionPriority: number;\n};\n\n/**\n * Describes the message PreloadedPlaybackSessionInfo.\n * Use `create(PreloadedPlaybackSessionInfoSchema)` to create a new message.\n */\nexport const PreloadedPlaybackSessionInfoSchema: GenMessage<PreloadedPlaybackSessionInfo> = /*@__PURE__*/\n messageDesc(file_CommandInfo, 2);\n\n/**\n * @generated from message CommandInfo\n */\nexport type CommandInfo = Message<\"CommandInfo\"> & {\n /**\n * @generated from field: optional Command command = 1;\n */\n command: Command;\n\n /**\n * @generated from field: optional bool enabled = 2;\n */\n enabled: boolean;\n\n /**\n * @generated from field: optional bool active = 3;\n */\n active: boolean;\n\n /**\n * @generated from field: repeated double preferredIntervals = 4;\n */\n preferredIntervals: number[];\n\n /**\n * @generated from field: optional string localizedTitle = 5;\n */\n localizedTitle: string;\n\n /**\n * @generated from field: optional float minimumRating = 6;\n */\n minimumRating: number;\n\n /**\n * @generated from field: optional float maximumRating = 7;\n */\n maximumRating: number;\n\n /**\n * @generated from field: repeated float supportedRates = 8;\n */\n supportedRates: number[];\n\n /**\n * @generated from field: optional string localizedShortTitle = 9;\n */\n localizedShortTitle: string;\n\n /**\n * @generated from field: optional RepeatMode.Enum repeatMode = 10;\n */\n repeatMode: RepeatMode_Enum;\n\n /**\n * @generated from field: optional ShuffleMode.Enum shuffleMode = 11;\n */\n shuffleMode: ShuffleMode_Enum;\n\n /**\n * @generated from field: optional int32 presentationStyle = 12;\n */\n presentationStyle: number;\n\n /**\n * @generated from field: optional int32 skipInterval = 13;\n */\n skipInterval: number;\n\n /**\n * @generated from field: optional int32 numAvailableSkips = 14;\n */\n numAvailableSkips: number;\n\n /**\n * @generated from field: optional int32 skipFrequency = 15;\n */\n skipFrequency: number;\n\n /**\n * @generated from field: optional int32 canScrub = 16;\n */\n canScrub: number;\n\n /**\n * @generated from field: repeated int32 supportedPlaybackQueueTypes = 17;\n */\n supportedPlaybackQueueTypes: number[];\n\n /**\n * @generated from field: repeated string supportedCustomQueueIdentifiers = 18;\n */\n supportedCustomQueueIdentifiers: string[];\n\n /**\n * @generated from field: repeated int32 supportedInsertionPositions = 19;\n */\n supportedInsertionPositions: number[];\n\n /**\n * @generated from field: optional bool supportsSharedQueue = 20;\n */\n supportsSharedQueue: boolean;\n\n /**\n * @generated from field: optional int32 upNextItemCount = 21;\n */\n upNextItemCount: number;\n\n /**\n * @generated from field: optional float preferredPlaybackRate = 22;\n */\n preferredPlaybackRate: number;\n\n /**\n * @generated from field: repeated string supportedPlaybackSessionTypes = 23;\n */\n supportedPlaybackSessionTypes: string[];\n\n /**\n * @generated from field: repeated string currentPlaybackSessionTypes = 24;\n */\n currentPlaybackSessionTypes: string[];\n\n /**\n * @generated from field: optional string playbackSessionIdentifier = 25;\n */\n playbackSessionIdentifier: string;\n\n /**\n * @generated from field: optional QueueEndAction.Enum currentQueueEndAction = 26;\n */\n currentQueueEndAction: QueueEndAction_Enum;\n\n /**\n * @generated from field: repeated QueueEndAction.Enum supportedEndQueueActions = 27;\n */\n supportedEndQueueActions: QueueEndAction_Enum[];\n\n /**\n * @generated from field: optional DisableReason.Enum disableReason = 28;\n */\n disableReason: DisableReason_Enum;\n\n /**\n * @generated from field: repeated PreloadedPlaybackSessionInfo supportedPlaybackSessionIdentifiers = 29;\n */\n supportedPlaybackSessionIdentifiers: PreloadedPlaybackSessionInfo[];\n};\n\n/**\n * Describes the message CommandInfo.\n * Use `create(CommandInfoSchema)` to create a new message.\n */\nexport const CommandInfoSchema: GenMessage<CommandInfo> = /*@__PURE__*/\n messageDesc(file_CommandInfo, 3);\n\n/**\n * @generated from enum Command\n */\nexport enum Command {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Play = 1;\n */\n Play = 1,\n\n /**\n * @generated from enum value: Pause = 2;\n */\n Pause = 2,\n\n /**\n * @generated from enum value: TogglePlayPause = 3;\n */\n TogglePlayPause = 3,\n\n /**\n * @generated from enum value: Stop = 4;\n */\n Stop = 4,\n\n /**\n * @generated from enum value: NextTrack = 5;\n */\n NextTrack = 5,\n\n /**\n * @generated from enum value: PreviousTrack = 6;\n */\n PreviousTrack = 6,\n\n /**\n * @generated from enum value: AdvanceShuffleMode = 7;\n */\n AdvanceShuffleMode = 7,\n\n /**\n * @generated from enum value: AdvanceRepeatMode = 8;\n */\n AdvanceRepeatMode = 8,\n\n /**\n * @generated from enum value: BeginFastForward = 9;\n */\n BeginFastForward = 9,\n\n /**\n * @generated from enum value: EndFastForward = 10;\n */\n EndFastForward = 10,\n\n /**\n * @generated from enum value: BeginRewind = 11;\n */\n BeginRewind = 11,\n\n /**\n * @generated from enum value: EndRewind = 12;\n */\n EndRewind = 12,\n\n /**\n * @generated from enum value: Rewind15Seconds = 13;\n */\n Rewind15Seconds = 13,\n\n /**\n * @generated from enum value: FastForward15Seconds = 14;\n */\n FastForward15Seconds = 14,\n\n /**\n * @generated from enum value: Rewind30Seconds = 15;\n */\n Rewind30Seconds = 15,\n\n /**\n * @generated from enum value: FastForward30Seconds = 16;\n */\n FastForward30Seconds = 16,\n\n /**\n * @generated from enum value: SkipForward = 18;\n */\n SkipForward = 18,\n\n /**\n * @generated from enum value: SkipBackward = 19;\n */\n SkipBackward = 19,\n\n /**\n * @generated from enum value: ChangePlaybackRate = 20;\n */\n ChangePlaybackRate = 20,\n\n /**\n * @generated from enum value: RateTrack = 21;\n */\n RateTrack = 21,\n\n /**\n * @generated from enum value: LikeTrack = 22;\n */\n LikeTrack = 22,\n\n /**\n * @generated from enum value: DislikeTrack = 23;\n */\n DislikeTrack = 23,\n\n /**\n * @generated from enum value: BookmarkTrack = 24;\n */\n BookmarkTrack = 24,\n\n /**\n * @generated from enum value: SeekToPlaybackPosition = 45;\n */\n SeekToPlaybackPosition = 45,\n\n /**\n * @generated from enum value: ChangeRepeatMode = 46;\n */\n ChangeRepeatMode = 46,\n\n /**\n * @generated from enum value: ChangeShuffleMode = 47;\n */\n ChangeShuffleMode = 47,\n\n /**\n * @generated from enum value: EnableLanguageOption = 53;\n */\n EnableLanguageOption = 53,\n\n /**\n * @generated from enum value: DisableLanguageOption = 54;\n */\n DisableLanguageOption = 54,\n\n /**\n * @generated from enum value: NextChapter = 25;\n */\n NextChapter = 25,\n\n /**\n * @generated from enum value: PreviousChapter = 26;\n */\n PreviousChapter = 26,\n\n /**\n * @generated from enum value: NextAlbum = 27;\n */\n NextAlbum = 27,\n\n /**\n * @generated from enum value: PreviousAlbum = 28;\n */\n PreviousAlbum = 28,\n\n /**\n * @generated from enum value: NextPlaylist = 29;\n */\n NextPlaylist = 29,\n\n /**\n * @generated from enum value: PreviousPlaylist = 30;\n */\n PreviousPlaylist = 30,\n\n /**\n * @generated from enum value: BanTrack = 31;\n */\n BanTrack = 31,\n\n /**\n * @generated from enum value: AddTrackToWishList = 32;\n */\n AddTrackToWishList = 32,\n\n /**\n * @generated from enum value: RemoveTrackFromWishList = 33;\n */\n RemoveTrackFromWishList = 33,\n\n /**\n * @generated from enum value: NextInContext = 34;\n */\n NextInContext = 34,\n\n /**\n * @generated from enum value: PreviousInContext = 35;\n */\n PreviousInContext = 35,\n\n /**\n * @generated from enum value: ResetPlaybackTimeout = 41;\n */\n ResetPlaybackTimeout = 41,\n\n /**\n * @generated from enum value: SetPlaybackQueue = 48;\n */\n SetPlaybackQueue = 48,\n\n /**\n * @generated from enum value: AddNowPlayingItemToLibrary = 49;\n */\n AddNowPlayingItemToLibrary = 49,\n\n /**\n * @generated from enum value: CreateRadioStation = 50;\n */\n CreateRadioStation = 50,\n\n /**\n * @generated from enum value: AddItemToLibrary = 51;\n */\n AddItemToLibrary = 51,\n\n /**\n * @generated from enum value: InsertIntoPlaybackQueue = 52;\n */\n InsertIntoPlaybackQueue = 52,\n\n /**\n * @generated from enum value: ReorderPlaybackQueue = 55;\n */\n ReorderPlaybackQueue = 55,\n\n /**\n * @generated from enum value: RemoveFromPlaybackQueue = 56;\n */\n RemoveFromPlaybackQueue = 56,\n\n /**\n * @generated from enum value: PlayItemInPlaybackQueue = 57;\n */\n PlayItemInPlaybackQueue = 57,\n\n /**\n * @generated from enum value: PrepareForSetQueue = 58;\n */\n PrepareForSetQueue = 58,\n\n /**\n * @generated from enum value: SetPlaybackSession = 59;\n */\n SetPlaybackSession = 59,\n\n /**\n * @generated from enum value: PreloadedPlaybackSession = 60;\n */\n PreloadedPlaybackSession = 60,\n\n /**\n * @generated from enum value: SetPriorityForPlaybackSession = 61;\n */\n SetPriorityForPlaybackSession = 61,\n\n /**\n * @generated from enum value: DiscardPlaybackSession = 62;\n */\n DiscardPlaybackSession = 62,\n\n /**\n * @generated from enum value: Reshuffle = 63;\n */\n Reshuffle = 63,\n\n /**\n * @generated from enum value: ChangeQueueEndAction = 135;\n */\n ChangeQueueEndAction = 135,\n}\n\n/**\n * Describes the enum Command.\n */\nexport const CommandSchema: GenEnum<Command> = /*@__PURE__*/\n enumDesc(file_CommandInfo, 0);\n\n",
69
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file CommandOptions.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { RepeatMode_Enum, ShuffleMode_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file CommandOptions.proto.\n */\nexport const file_CommandOptions: GenFile = /*@__PURE__*/\n fileDesc(\"ChRDb21tYW5kT3B0aW9ucy5wcm90byLhBgoOQ29tbWFuZE9wdGlvbnMSEAoIc291cmNlSWQYAiABKAkSEQoJbWVkaWFUeXBlGAMgASgJEh0KFWV4dGVybmFsUGxheWVyQ29tbWFuZBgEIAEoCBIUCgxza2lwSW50ZXJ2YWwYBSABKAISFAoMcGxheWJhY2tSYXRlGAYgASgCEg4KBnJhdGluZxgHIAEoAhIQCghuZWdhdGl2ZRgIIAEoCBIYChBwbGF5YmFja1Bvc2l0aW9uGAkgASgBEiQKCnJlcGVhdE1vZGUYCiABKA4yEC5SZXBlYXRNb2RlLkVudW0SJgoLc2h1ZmZsZU1vZGUYCyABKA4yES5TaHVmZmxlTW9kZS5FbnVtEg8KB3RyYWNrSUQYDCABKAQSFgoOcmFkaW9TdGF0aW9uSUQYDSABKAMSGAoQcmFkaW9TdGF0aW9uSGFzaBgOIAEoCRIiChpzeXN0ZW1BcHBQbGF5YmFja1F1ZXVlRGF0YRgPIAEoDBIfChdkZXN0aW5hdGlvbkFwcERpc3BsYXlJRBgQIAEoCRITCgtzZW5kT3B0aW9ucxgRIAEoDRIvCidyZXF1ZXN0RGVmZXJtZW50VG9QbGF5YmFja1F1ZXVlUG9zaXRpb24YEiABKAgSEQoJY29udGV4dElEGBMgASgJEioKInNob3VsZE92ZXJyaWRlTWFudWFsbHlDdXJhdGVkUXVldWUYFCABKAgSEgoKc3RhdGlvblVSTBgVIAEoCRIgChhzaG91bGRCZWdpblJhZGlvUGxheWJhY2sYFiABKAgSJgoecGxheWJhY2tRdWV1ZUluc2VydGlvblBvc2l0aW9uGBcgASgFEhUKDWNvbnRlbnRJdGVtSUQYGCABKAkSGwoTcGxheWJhY2tRdWV1ZU9mZnNldBgZIAEoBRImCh5wbGF5YmFja1F1ZXVlRGVzdGluYXRpb25PZmZzZXQYGiABKAUSFgoObGFuZ3VhZ2VPcHRpb24YGyABKAwSHAoUcGxheWJhY2tRdWV1ZUNvbnRleHQYHCABKAwSIAoYaW5zZXJ0QWZ0ZXJDb250ZW50SXRlbUlEGB0gASgJEh8KF25vd1BsYXlpbmdDb250ZW50SXRlbUlEGB4gASgJEhUKDXJlcGxhY2VJbnRlbnQYHyABKAU\", [file_Common]);\n\n/**\n * @generated from message CommandOptions\n */\nexport type CommandOptions = Message<\"CommandOptions\"> & {\n /**\n * @generated from field: optional string sourceId = 2;\n */\n sourceId: string;\n\n /**\n * @generated from field: optional string mediaType = 3;\n */\n mediaType: string;\n\n /**\n * @generated from field: optional bool externalPlayerCommand = 4;\n */\n externalPlayerCommand: boolean;\n\n /**\n * @generated from field: optional float skipInterval = 5;\n */\n skipInterval: number;\n\n /**\n * @generated from field: optional float playbackRate = 6;\n */\n playbackRate: number;\n\n /**\n * @generated from field: optional float rating = 7;\n */\n rating: number;\n\n /**\n * @generated from field: optional bool negative = 8;\n */\n negative: boolean;\n\n /**\n * @generated from field: optional double playbackPosition = 9;\n */\n playbackPosition: number;\n\n /**\n * @generated from field: optional RepeatMode.Enum repeatMode = 10;\n */\n repeatMode: RepeatMode_Enum;\n\n /**\n * @generated from field: optional ShuffleMode.Enum shuffleMode = 11;\n */\n shuffleMode: ShuffleMode_Enum;\n\n /**\n * @generated from field: optional uint64 trackID = 12;\n */\n trackID: bigint;\n\n /**\n * @generated from field: optional int64 radioStationID = 13;\n */\n radioStationID: bigint;\n\n /**\n * @generated from field: optional string radioStationHash = 14;\n */\n radioStationHash: string;\n\n /**\n * @generated from field: optional bytes systemAppPlaybackQueueData = 15;\n */\n systemAppPlaybackQueueData: Uint8Array;\n\n /**\n * @generated from field: optional string destinationAppDisplayID = 16;\n */\n destinationAppDisplayID: string;\n\n /**\n * @generated from field: optional uint32 sendOptions = 17;\n */\n sendOptions: number;\n\n /**\n * @generated from field: optional bool requestDefermentToPlaybackQueuePosition = 18;\n */\n requestDefermentToPlaybackQueuePosition: boolean;\n\n /**\n * @generated from field: optional string contextID = 19;\n */\n contextID: string;\n\n /**\n * @generated from field: optional bool shouldOverrideManuallyCuratedQueue = 20;\n */\n shouldOverrideManuallyCuratedQueue: boolean;\n\n /**\n * @generated from field: optional string stationURL = 21;\n */\n stationURL: string;\n\n /**\n * @generated from field: optional bool shouldBeginRadioPlayback = 22;\n */\n shouldBeginRadioPlayback: boolean;\n\n /**\n * @generated from field: optional int32 playbackQueueInsertionPosition = 23;\n */\n playbackQueueInsertionPosition: number;\n\n /**\n * @generated from field: optional string contentItemID = 24;\n */\n contentItemID: string;\n\n /**\n * @generated from field: optional int32 playbackQueueOffset = 25;\n */\n playbackQueueOffset: number;\n\n /**\n * @generated from field: optional int32 playbackQueueDestinationOffset = 26;\n */\n playbackQueueDestinationOffset: number;\n\n /**\n * @generated from field: optional bytes languageOption = 27;\n */\n languageOption: Uint8Array;\n\n /**\n * @generated from field: optional bytes playbackQueueContext = 28;\n */\n playbackQueueContext: Uint8Array;\n\n /**\n * @generated from field: optional string insertAfterContentItemID = 29;\n */\n insertAfterContentItemID: string;\n\n /**\n * @generated from field: optional string nowPlayingContentItemID = 30;\n */\n nowPlayingContentItemID: string;\n\n /**\n * @generated from field: optional int32 replaceIntent = 31;\n */\n replaceIntent: number;\n};\n\n/**\n * Describes the message CommandOptions.\n * Use `create(CommandOptionsSchema)` to create a new message.\n */\nexport const CommandOptionsSchema: GenMessage<CommandOptions> = /*@__PURE__*/\n messageDesc(file_CommandOptions, 0);\n\n",
70
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ConfigureConnectionMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ConfigureConnectionMessage.proto.\n */\nexport const file_ConfigureConnectionMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBDb25maWd1cmVDb25uZWN0aW9uTWVzc2FnZS5wcm90byItChpDb25maWd1cmVDb25uZWN0aW9uTWVzc2FnZRIPCgdncm91cElEGAEgASgJOm0KGmNvbmZpZ3VyZUNvbm5lY3Rpb25NZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGF4gASgLMhsuQ29uZmlndXJlQ29ubmVjdGlvbk1lc3NhZ2VSGmNvbmZpZ3VyZUNvbm5lY3Rpb25NZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message ConfigureConnectionMessage\n */\nexport type ConfigureConnectionMessage = Message<\"ConfigureConnectionMessage\"> & {\n /**\n * @generated from field: optional string groupID = 1;\n */\n groupID: string;\n};\n\n/**\n * Describes the message ConfigureConnectionMessage.\n * Use `create(ConfigureConnectionMessageSchema)` to create a new message.\n */\nexport const ConfigureConnectionMessageSchema: GenMessage<ConfigureConnectionMessage> = /*@__PURE__*/\n messageDesc(file_ConfigureConnectionMessage, 0);\n\n/**\n * @generated from extension: optional ConfigureConnectionMessage configureConnectionMessage = 94;\n */\nexport const configureConnectionMessage: GenExtension<ProtocolMessage, ConfigureConnectionMessage> = /*@__PURE__*/\n extDesc(file_ConfigureConnectionMessage, 0);\n\n",
71
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ContentItem.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ContentItemMetadata } from \"./ContentItemMetadata_pb\";\nimport { file_ContentItemMetadata } from \"./ContentItemMetadata_pb\";\nimport type { LanguageOption } from \"./LanguageOption_pb\";\nimport { file_LanguageOption } from \"./LanguageOption_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ContentItem.proto.\n */\nexport const file_ContentItem: GenFile = /*@__PURE__*/\n fileDesc(\"ChFDb250ZW50SXRlbS5wcm90byKMAQoTTGFuZ3VhZ2VPcHRpb25Hcm91cBIbChNhbGxvd0VtcHR5U2VsZWN0aW9uGAEgASgIEi4KFWRlZmF1bHRMYW5ndWFnZU9wdGlvbhgCIAEoCzIPLkxhbmd1YWdlT3B0aW9uEigKD2xhbmd1YWdlT3B0aW9ucxgDIAMoCzIPLkxhbmd1YWdlT3B0aW9uIvQCCgtDb250ZW50SXRlbRISCgppZGVudGlmaWVyGAEgASgJEiYKCG1ldGFkYXRhGAIgASgLMhQuQ29udGVudEl0ZW1NZXRhZGF0YRITCgthcnR3b3JrRGF0YRgDIAEoDBIMCgRpbmZvGAQgASgJEjYKGGF2YWlsYWJsZUxhbmd1YWdlT3B0aW9ucxgFIAMoCzIULkxhbmd1YWdlT3B0aW9uR3JvdXASLwoWY3VycmVudExhbmd1YWdlT3B0aW9ucxgGIAMoCzIPLkxhbmd1YWdlT3B0aW9uEhgKEHBhcmVudElkZW50aWZpZXIYCSABKAkSGgoSYW5jZXN0b3JJZGVudGlmaWVyGAogASgJEhcKD3F1ZXVlSWRlbnRpZmllchgLIAEoCRIZChFyZXF1ZXN0SWRlbnRpZmllchgMIAEoCRIYChBhcnR3b3JrRGF0YVdpZHRoGA0gASgFEhkKEWFydHdvcmtEYXRhSGVpZ2h0GA4gASgF\", [file_ContentItemMetadata, file_LanguageOption]);\n\n/**\n * @generated from message LanguageOptionGroup\n */\nexport type LanguageOptionGroup = Message<\"LanguageOptionGroup\"> & {\n /**\n * @generated from field: optional bool allowEmptySelection = 1;\n */\n allowEmptySelection: boolean;\n\n /**\n * @generated from field: optional LanguageOption defaultLanguageOption = 2;\n */\n defaultLanguageOption?: LanguageOption;\n\n /**\n * @generated from field: repeated LanguageOption languageOptions = 3;\n */\n languageOptions: LanguageOption[];\n};\n\n/**\n * Describes the message LanguageOptionGroup.\n * Use `create(LanguageOptionGroupSchema)` to create a new message.\n */\nexport const LanguageOptionGroupSchema: GenMessage<LanguageOptionGroup> = /*@__PURE__*/\n messageDesc(file_ContentItem, 0);\n\n/**\n * @generated from message ContentItem\n */\nexport type ContentItem = Message<\"ContentItem\"> & {\n /**\n * @generated from field: optional string identifier = 1;\n */\n identifier: string;\n\n /**\n * @generated from field: optional ContentItemMetadata metadata = 2;\n */\n metadata?: ContentItemMetadata;\n\n /**\n * @generated from field: optional bytes artworkData = 3;\n */\n artworkData: Uint8Array;\n\n /**\n * @generated from field: optional string info = 4;\n */\n info: string;\n\n /**\n * @generated from field: repeated LanguageOptionGroup availableLanguageOptions = 5;\n */\n availableLanguageOptions: LanguageOptionGroup[];\n\n /**\n * @generated from field: repeated LanguageOption currentLanguageOptions = 6;\n */\n currentLanguageOptions: LanguageOption[];\n\n /**\n * optional Lyrics lyrics = 7;\n * repeated Sections sections = 8;\n *\n * @generated from field: optional string parentIdentifier = 9;\n */\n parentIdentifier: string;\n\n /**\n * @generated from field: optional string ancestorIdentifier = 10;\n */\n ancestorIdentifier: string;\n\n /**\n * @generated from field: optional string queueIdentifier = 11;\n */\n queueIdentifier: string;\n\n /**\n * @generated from field: optional string requestIdentifier = 12;\n */\n requestIdentifier: string;\n\n /**\n * @generated from field: optional int32 artworkDataWidth = 13;\n */\n artworkDataWidth: number;\n\n /**\n * @generated from field: optional int32 artworkDataHeight = 14;\n */\n artworkDataHeight: number;\n};\n\n/**\n * Describes the message ContentItem.\n * Use `create(ContentItemSchema)` to create a new message.\n */\nexport const ContentItemSchema: GenMessage<ContentItem> = /*@__PURE__*/\n messageDesc(file_ContentItem, 1);\n\n",
72
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ContentItemMetadata.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ContentItemMetadata.proto.\n */\nexport const file_ContentItemMetadata: GenFile = /*@__PURE__*/\n fileDesc(\"ChlDb250ZW50SXRlbU1ldGFkYXRhLnByb3RvIrkBCg5BdWRpb1JvdXRlVHlwZSKmAQoERW51bRILCgdVbmtub3duEAASEgoORGV2aWNlc1NwZWFrZXIQARILCgdMaW5lT3V0EAISDgoKSGVhZHBob25lcxADEhcKE0JsdWV0b290aEhlYWRwaG9uZXMQBBIUChBCbHVldG9vdGhTcGVha2VyEAUSDAoIVVNCQXVkaW8QBhIMCghDYXJBdWRpbxAHEggKBEhETUkQCBILCgdBaXJQbGF5EAkiWQoKQXVkaW9Sb3V0ZRIdCgR0eXBlGAEgASgLMg8uQXVkaW9Sb3V0ZVR5cGUSDAoEbmFtZRgCIAEoCRIeChZzdXBwb3J0c1NwYXRpYWxpemF0aW9uGAMgASgIInkKCUF1ZGlvVGllciJsCgRFbnVtEhYKEkxvd0JhbmR3aWR0aFN0ZXJlbxABEhUKEUhpZ2hRdWFsaXR5U3RlcmVvEAISDAoITG9zc2xlc3MQAxIaChZIaWdoUmVzb2x1dGlvbkxvc3NsZXNzEAQSCwoHU3BhdGlhbBAFIocBCgpTb25nVHJhaXRzInkKBEVudW0SCAoETm9uZRAAEhcKE0FwcGxlRGlnaXRpYWxNYXN0ZXIQARIMCghMb3NzbGVzcxACEhoKFkhpZ2hSZXNvbHV0aW9uTG9zc2xlc3MQBBILCgdTcGF0aWFsEAgSCQoFQXRtb3MQEBIMCghTdXJyb3VuZBAgIogBCgtBbGJ1bVRyYWl0cyJ5CgRFbnVtEggKBE5vbmUQABIXChNBcHBsZURpZ2l0aWFsTWFzdGVyEAESDAoITG9zc2xlc3MQAhIaChZIaWdoUmVzb2x1dGlvbkxvc3NsZXNzEAQSCwoHU3BhdGlhbBAIEgkKBUF0bW9zEBASDAoIU3Vycm91bmQQICJICg5QbGF5bGlzdFRyYWl0cyI2CgRFbnVtEggKBE5vbmUQABILCgdTcGF0aWFsEAgSCQoFQXRtb3MQEBIMCghTdXJyb3VuZBAgIrwBChlBY3RpdmVGb3JtYXRKdXN0aWZpY2F0aW9uIp4BCgRFbnVtEgsKB1Vua25vd24QABIPCgtVbmF2YWlsYWJsZRABEhIKDlVzZXJQcmVmZXJlbmNlEGQSEAoMVXNlckRvd25sb2FkEGUSFgoRUm91dGVJbmNvbXBhdGlibGUQ9AMSHgoZUm91dGVVbmtub3duQ29tcGF0aWJpbGl0eRD1AxIaChVCYW5kd2lkdGhJbnN1ZmZpY2llbnQQ6AciegoKRm9ybWF0VGllciJsCgRFbnVtEhYKEkxvd0JhbmR3aWR0aFN0ZXJlbxABEhUKEUhpZ2hRdWFsaXR5U3RlcmVvEAISDAoITG9zc2xlc3MQBBIaChZIaWdoUmVzb2x1dGlvbkxvc3NsZXNzEAgSCwoHU3BhdGlhbBAQIoUCCgtBdWRpb0Zvcm1hdBIdCgR0aWVyGAEgASgOMg8uQXVkaW9UaWVyLkVudW0SDwoHYml0cmF0ZRgCIAEoAxISCgpzYW1wbGVSYXRlGAMgASgDEhAKCGJpdERlcHRoGAQgASgDEg0KBWNvZGVjGAUgASgNEhMKC3NwYXRpYWxpemVkGAYgASgIEhQKDG11bHRpQ2hhbm5lbBgHIAEoCBIVCg1jaGFubmVsTGF5b3V0GAggASgNEiUKHWF1ZGlvQ2hhbm5lbExheW91dERlc2NyaXB0aW9uGAkgASgJEg8KB2dyb3VwSUQYCiABKAkSFwoPc3RhYmxlVmFyaWFudElEGAsgASgJIucUChNDb250ZW50SXRlbU1ldGFkYXRhEg0KBXRpdGxlGAEgASgJEhAKCHN1YnRpdGxlGAIgASgJEhMKC2lzQ29udGFpbmVyGAMgASgIEhIKCmlzUGxheWFibGUYBCABKAgSGAoQcGxheWJhY2tQcm9ncmVzcxgFIAEoAhIRCglhbGJ1bU5hbWUYBiABKAkSFwoPdHJhY2tBcnRpc3ROYW1lGAcgASgJEhcKD2FsYnVtQXJ0aXN0TmFtZRgIIAEoCRIUCgxkaXJlY3Rvck5hbWUYCSABKAkSFAoMc2Vhc29uTnVtYmVyGAogASgFEhUKDWVwaXNvZGVOdW1iZXIYCyABKAUSEwoLcmVsZWFzZURhdGUYDCABKAESEQoJcGxheUNvdW50GA0gASgFEhAKCGR1cmF0aW9uGA4gASgBEh4KFmxvY2FsaXplZENvbnRlbnRSYXRpbmcYDyABKAkSFgoOaXNFeHBsaWNpdEl0ZW0YECABKAgSFAoMcGxheWxpc3RUeXBlGBEgASgFEhgKEHJhZGlvU3RhdGlvblR5cGUYEiABKAUSGAoQYXJ0d29ya0F2YWlsYWJsZRgTIAEoCBIVCg1pbmZvQXZhaWxhYmxlGBUgASgIEiAKGGxhbmd1YWdlT3B0aW9uc0F2YWlsYWJsZRgWIAEoCBIYChBudW1iZXJPZlNlY3Rpb25zGBcgASgFEhcKD2x5cmljc0F2YWlsYWJsZRgYIAEoCBIZChFlZGl0aW5nU3R5bGVGbGFncxgZIAEoBRIaChJpc1N0cmVhbWluZ0NvbnRlbnQYGiABKAgSGgoSaXNDdXJyZW50bHlQbGF5aW5nGBsgASgIEhwKFGNvbGxlY3Rpb25JZGVudGlmaWVyGBwgASgJEhkKEXByb2ZpbGVJZGVudGlmaWVyGB0gASgJEhEKCXN0YXJ0VGltZRgeIAEoARIXCg9hcnR3b3JrTUlNRVR5cGUYHyABKAkSFgoOYXNzZXRVUkxTdHJpbmcYICABKAkSEAoIY29tcG9zZXIYISABKAkSEgoKZGlzY051bWJlchgiIAEoBRITCgtlbGFwc2VkVGltZRgjIAEoARINCgVnZW5yZRgkIAEoCRIUCgxpc0Fsd2F5c0xpdmUYJSABKAgSFAoMcGxheWJhY2tSYXRlGCcgASgCEhQKDGNoYXB0ZXJDb3VudBgoIAEoBRIWCg50b3RhbERpc2NDb3VudBgpIAEoBRIXCg90b3RhbFRyYWNrQ291bnQYKiABKAUSEwoLdHJhY2tOdW1iZXIYKyABKAUSGQoRY29udGVudElkZW50aWZpZXIYLCABKAkSEgoKaXNTaGFyYWJsZRguIAEoCBIPCgdpc0xpa2VkGDAgASgIEhQKDGlzSW5XaXNoTGlzdBgxIAEoCBIeChZyYWRpb1N0YXRpb25JZGVudGlmaWVyGDIgASgDEhgKEHJhZGlvU3RhdGlvbk5hbWUYNCABKAkSGgoScmFkaW9TdGF0aW9uU3RyaW5nGDUgASgJEh0KFWlUdW5lc1N0b3JlSWRlbnRpZmllchg2IAEoAxIpCiFpVHVuZXNTdG9yZVN1YnNjcmlwdGlvbklkZW50aWZpZXIYNyABKAMSIwobaVR1bmVzU3RvcmVBcnRpc3RJZGVudGlmaWVyGDggASgDEiIKGmlUdW5lc1N0b3JlQWxidW1JZGVudGlmaWVyGDkgASgDEhgKEHB1cmNoYXNlSW5mb0RhdGEYOiABKAwSGwoTZGVmYXVsdFBsYXliYWNrUmF0ZRg7IAEoAhIVCg1kb3dubG9hZFN0YXRlGDwgASgFEhgKEGRvd25sb2FkUHJvZ3Jlc3MYPSABKAISFgoOYXBwTWV0cmljc0RhdGEYPiABKAwSEgoKc2VyaWVzTmFtZRg/IAEoCRIxCgltZWRpYVR5cGUYQCABKA4yHi5Db250ZW50SXRlbU1ldGFkYXRhLk1lZGlhVHlwZRI3CgxtZWRpYVN1YlR5cGUYQSABKA4yIS5Db250ZW50SXRlbU1ldGFkYXRhLk1lZGlhU3ViVHlwZRIaChJub3dQbGF5aW5nSW5mb0RhdGEYQyABKAwSFAoMdXNlckluZm9EYXRhGEQgASgMEhMKC2lzU3RlZXJhYmxlGEUgASgIEhIKCmFydHdvcmtVUkwYRiABKAkSEQoJbHlyaWNzVVJMGEcgASgJEiIKGmRldmljZVNwZWNpZmljVXNlckluZm9EYXRhGEggASgMEhoKEmNvbGxlY3Rpb25JbmZvRGF0YRhJIAEoDBIcChRlbGFwc2VkVGltZVRpbWVzdGFtcBhKIAEoARIZChFpbmZlcnJlZFRpbWVzdGFtcBhLIAEoARIZChFzZXJ2aWNlSWRlbnRpZmllchhMIAEoCRIYChBhcnR3b3JrRGF0YVdpZHRoGE0gASgFEhkKEWFydHdvcmtEYXRhSGVpZ2h0GE4gASgFEh8KF2N1cnJlbnRQbGF5YmFja0RhdGVEYXRhGE8gASgMEhkKEWFydHdvcmtJZGVudGlmaWVyGFAgASgJEhEKCWlzTG9hZGluZxhRIAEoCBIfChdhcnR3b3JrVVJMVGVtcGxhdGVzRGF0YRhSIAEoDBIeChZsZWdhY3lVbmlxdWVJZGVudGlmaWVyGFMgASgDEhMKC2VwaXNvZGVUeXBlGFQgASgFEhYKDmFydHdvcmtGaWxlVVJMGFUgASgJEhcKD2JyYW5kSWRlbnRpZmllchhWIAEoCRIfChdsb2NhbGl6ZWREdXJhdGlvblN0cmluZxhXIAEoCRIRCglhbGJ1bVllYXIYWCABKAkSJAoKc29uZ1RyYWl0cxhZIAEoDjIQLlNvbmdUcmFpdHMuRW51bRImCgthbGJ1bVRyYWl0cxhaIAEoDjIRLkFsYnVtVHJhaXRzLkVudW0SLAoOcGxheWxpc3RUcmFpdHMYWyABKA4yFC5QbGF5bGlzdFRyYWl0cy5FbnVtEiUKD3ByZWZlcnJlZEZvcm1hdBhcIAEoCzIMLkF1ZGlvRm9ybWF0EiIKDGFjdGl2ZUZvcm1hdBhdIAEoCzIMLkF1ZGlvRm9ybWF0EkIKGWFjdGl2ZUZvcm1hdEp1c3RpZmljYXRpb24YXiABKA4yHy5BY3RpdmVGb3JtYXRKdXN0aWZpY2F0aW9uLkVudW0SLgoUZm9ybWF0VGllclByZWZlcmVuY2UYXyABKA4yEC5Gb3JtYXRUaWVyLkVudW0SHwoKYXVkaW9Sb3V0ZRhgIAEoCzILLkF1ZGlvUm91dGUSKAoSYWx0ZXJuYXRpdmVGb3JtYXRzGGEgAygLMgwuQXVkaW9Gb3JtYXQiNwoJTWVkaWFUeXBlEhQKEFVua25vd25NZWRpYVR5cGUQABIJCgVBdWRpbxABEgkKBVZpZGVvEAIiWwoMTWVkaWFTdWJUeXBlEhcKE1Vua25vd25NZWRpYVN1YlR5cGUQABIJCgVNdXNpYxABEgsKB1BvZGNhc3QQBBINCglBdWRpb0Jvb2sQBRILCgdJVHVuZXNVEAY\");\n\n/**\n * @generated from message AudioRouteType\n */\nexport type AudioRouteType = Message<\"AudioRouteType\"> & {\n};\n\n/**\n * Describes the message AudioRouteType.\n * Use `create(AudioRouteTypeSchema)` to create a new message.\n */\nexport const AudioRouteTypeSchema: GenMessage<AudioRouteType> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 0);\n\n/**\n * @generated from enum AudioRouteType.Enum\n */\nexport enum AudioRouteType_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: DevicesSpeaker = 1;\n */\n DevicesSpeaker = 1,\n\n /**\n * @generated from enum value: LineOut = 2;\n */\n LineOut = 2,\n\n /**\n * @generated from enum value: Headphones = 3;\n */\n Headphones = 3,\n\n /**\n * @generated from enum value: BluetoothHeadphones = 4;\n */\n BluetoothHeadphones = 4,\n\n /**\n * @generated from enum value: BluetoothSpeaker = 5;\n */\n BluetoothSpeaker = 5,\n\n /**\n * @generated from enum value: USBAudio = 6;\n */\n USBAudio = 6,\n\n /**\n * @generated from enum value: CarAudio = 7;\n */\n CarAudio = 7,\n\n /**\n * @generated from enum value: HDMI = 8;\n */\n HDMI = 8,\n\n /**\n * @generated from enum value: AirPlay = 9;\n */\n AirPlay = 9,\n}\n\n/**\n * Describes the enum AudioRouteType.Enum.\n */\nexport const AudioRouteType_EnumSchema: GenEnum<AudioRouteType_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 0, 0);\n\n/**\n * @generated from message AudioRoute\n */\nexport type AudioRoute = Message<\"AudioRoute\"> & {\n /**\n * @generated from field: optional AudioRouteType type = 1;\n */\n type?: AudioRouteType;\n\n /**\n * @generated from field: optional string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional bool supportsSpatialization = 3;\n */\n supportsSpatialization: boolean;\n};\n\n/**\n * Describes the message AudioRoute.\n * Use `create(AudioRouteSchema)` to create a new message.\n */\nexport const AudioRouteSchema: GenMessage<AudioRoute> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 1);\n\n/**\n * @generated from message AudioTier\n */\nexport type AudioTier = Message<\"AudioTier\"> & {\n};\n\n/**\n * Describes the message AudioTier.\n * Use `create(AudioTierSchema)` to create a new message.\n */\nexport const AudioTierSchema: GenMessage<AudioTier> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 2);\n\n/**\n * @generated from enum AudioTier.Enum\n */\nexport enum AudioTier_Enum {\n /**\n * @generated from enum value: LowBandwidthStereo = 1;\n */\n LowBandwidthStereo = 1,\n\n /**\n * @generated from enum value: HighQualityStereo = 2;\n */\n HighQualityStereo = 2,\n\n /**\n * @generated from enum value: Lossless = 3;\n */\n Lossless = 3,\n\n /**\n * @generated from enum value: HighResolutionLossless = 4;\n */\n HighResolutionLossless = 4,\n\n /**\n * @generated from enum value: Spatial = 5;\n */\n Spatial = 5,\n}\n\n/**\n * Describes the enum AudioTier.Enum.\n */\nexport const AudioTier_EnumSchema: GenEnum<AudioTier_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 2, 0);\n\n/**\n * @generated from message SongTraits\n */\nexport type SongTraits = Message<\"SongTraits\"> & {\n};\n\n/**\n * Describes the message SongTraits.\n * Use `create(SongTraitsSchema)` to create a new message.\n */\nexport const SongTraitsSchema: GenMessage<SongTraits> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 3);\n\n/**\n * @generated from enum SongTraits.Enum\n */\nexport enum SongTraits_Enum {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: AppleDigitialMaster = 1;\n */\n AppleDigitialMaster = 1,\n\n /**\n * @generated from enum value: Lossless = 2;\n */\n Lossless = 2,\n\n /**\n * @generated from enum value: HighResolutionLossless = 4;\n */\n HighResolutionLossless = 4,\n\n /**\n * @generated from enum value: Spatial = 8;\n */\n Spatial = 8,\n\n /**\n * @generated from enum value: Atmos = 16;\n */\n Atmos = 16,\n\n /**\n * @generated from enum value: Surround = 32;\n */\n Surround = 32,\n}\n\n/**\n * Describes the enum SongTraits.Enum.\n */\nexport const SongTraits_EnumSchema: GenEnum<SongTraits_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 3, 0);\n\n/**\n * @generated from message AlbumTraits\n */\nexport type AlbumTraits = Message<\"AlbumTraits\"> & {\n};\n\n/**\n * Describes the message AlbumTraits.\n * Use `create(AlbumTraitsSchema)` to create a new message.\n */\nexport const AlbumTraitsSchema: GenMessage<AlbumTraits> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 4);\n\n/**\n * @generated from enum AlbumTraits.Enum\n */\nexport enum AlbumTraits_Enum {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: AppleDigitialMaster = 1;\n */\n AppleDigitialMaster = 1,\n\n /**\n * @generated from enum value: Lossless = 2;\n */\n Lossless = 2,\n\n /**\n * @generated from enum value: HighResolutionLossless = 4;\n */\n HighResolutionLossless = 4,\n\n /**\n * @generated from enum value: Spatial = 8;\n */\n Spatial = 8,\n\n /**\n * @generated from enum value: Atmos = 16;\n */\n Atmos = 16,\n\n /**\n * @generated from enum value: Surround = 32;\n */\n Surround = 32,\n}\n\n/**\n * Describes the enum AlbumTraits.Enum.\n */\nexport const AlbumTraits_EnumSchema: GenEnum<AlbumTraits_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 4, 0);\n\n/**\n * @generated from message PlaylistTraits\n */\nexport type PlaylistTraits = Message<\"PlaylistTraits\"> & {\n};\n\n/**\n * Describes the message PlaylistTraits.\n * Use `create(PlaylistTraitsSchema)` to create a new message.\n */\nexport const PlaylistTraitsSchema: GenMessage<PlaylistTraits> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 5);\n\n/**\n * @generated from enum PlaylistTraits.Enum\n */\nexport enum PlaylistTraits_Enum {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: Spatial = 8;\n */\n Spatial = 8,\n\n /**\n * @generated from enum value: Atmos = 16;\n */\n Atmos = 16,\n\n /**\n * @generated from enum value: Surround = 32;\n */\n Surround = 32,\n}\n\n/**\n * Describes the enum PlaylistTraits.Enum.\n */\nexport const PlaylistTraits_EnumSchema: GenEnum<PlaylistTraits_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 5, 0);\n\n/**\n * @generated from message ActiveFormatJustification\n */\nexport type ActiveFormatJustification = Message<\"ActiveFormatJustification\"> & {\n};\n\n/**\n * Describes the message ActiveFormatJustification.\n * Use `create(ActiveFormatJustificationSchema)` to create a new message.\n */\nexport const ActiveFormatJustificationSchema: GenMessage<ActiveFormatJustification> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 6);\n\n/**\n * @generated from enum ActiveFormatJustification.Enum\n */\nexport enum ActiveFormatJustification_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Unavailable = 1;\n */\n Unavailable = 1,\n\n /**\n * @generated from enum value: UserPreference = 100;\n */\n UserPreference = 100,\n\n /**\n * @generated from enum value: UserDownload = 101;\n */\n UserDownload = 101,\n\n /**\n * @generated from enum value: RouteIncompatible = 500;\n */\n RouteIncompatible = 500,\n\n /**\n * @generated from enum value: RouteUnknownCompatibility = 501;\n */\n RouteUnknownCompatibility = 501,\n\n /**\n * @generated from enum value: BandwidthInsufficient = 1000;\n */\n BandwidthInsufficient = 1000,\n}\n\n/**\n * Describes the enum ActiveFormatJustification.Enum.\n */\nexport const ActiveFormatJustification_EnumSchema: GenEnum<ActiveFormatJustification_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 6, 0);\n\n/**\n * @generated from message FormatTier\n */\nexport type FormatTier = Message<\"FormatTier\"> & {\n};\n\n/**\n * Describes the message FormatTier.\n * Use `create(FormatTierSchema)` to create a new message.\n */\nexport const FormatTierSchema: GenMessage<FormatTier> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 7);\n\n/**\n * @generated from enum FormatTier.Enum\n */\nexport enum FormatTier_Enum {\n /**\n * @generated from enum value: LowBandwidthStereo = 1;\n */\n LowBandwidthStereo = 1,\n\n /**\n * @generated from enum value: HighQualityStereo = 2;\n */\n HighQualityStereo = 2,\n\n /**\n * @generated from enum value: Lossless = 4;\n */\n Lossless = 4,\n\n /**\n * @generated from enum value: HighResolutionLossless = 8;\n */\n HighResolutionLossless = 8,\n\n /**\n * @generated from enum value: Spatial = 16;\n */\n Spatial = 16,\n}\n\n/**\n * Describes the enum FormatTier.Enum.\n */\nexport const FormatTier_EnumSchema: GenEnum<FormatTier_Enum> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 7, 0);\n\n/**\n * @generated from message AudioFormat\n */\nexport type AudioFormat = Message<\"AudioFormat\"> & {\n /**\n * @generated from field: optional AudioTier.Enum tier = 1;\n */\n tier: AudioTier_Enum;\n\n /**\n * @generated from field: optional int64 bitrate = 2;\n */\n bitrate: bigint;\n\n /**\n * @generated from field: optional int64 sampleRate = 3;\n */\n sampleRate: bigint;\n\n /**\n * @generated from field: optional int64 bitDepth = 4;\n */\n bitDepth: bigint;\n\n /**\n * @generated from field: optional uint32 codec = 5;\n */\n codec: number;\n\n /**\n * @generated from field: optional bool spatialized = 6;\n */\n spatialized: boolean;\n\n /**\n * @generated from field: optional bool multiChannel = 7;\n */\n multiChannel: boolean;\n\n /**\n * @generated from field: optional uint32 channelLayout = 8;\n */\n channelLayout: number;\n\n /**\n * @generated from field: optional string audioChannelLayoutDescription = 9;\n */\n audioChannelLayoutDescription: string;\n\n /**\n * @generated from field: optional string groupID = 10;\n */\n groupID: string;\n\n /**\n * @generated from field: optional string stableVariantID = 11;\n */\n stableVariantID: string;\n};\n\n/**\n * Describes the message AudioFormat.\n * Use `create(AudioFormatSchema)` to create a new message.\n */\nexport const AudioFormatSchema: GenMessage<AudioFormat> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 8);\n\n/**\n * @generated from message ContentItemMetadata\n */\nexport type ContentItemMetadata = Message<\"ContentItemMetadata\"> & {\n /**\n * @generated from field: optional string title = 1;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 2;\n */\n subtitle: string;\n\n /**\n * @generated from field: optional bool isContainer = 3;\n */\n isContainer: boolean;\n\n /**\n * @generated from field: optional bool isPlayable = 4;\n */\n isPlayable: boolean;\n\n /**\n * @generated from field: optional float playbackProgress = 5;\n */\n playbackProgress: number;\n\n /**\n * @generated from field: optional string albumName = 6;\n */\n albumName: string;\n\n /**\n * @generated from field: optional string trackArtistName = 7;\n */\n trackArtistName: string;\n\n /**\n * @generated from field: optional string albumArtistName = 8;\n */\n albumArtistName: string;\n\n /**\n * @generated from field: optional string directorName = 9;\n */\n directorName: string;\n\n /**\n * @generated from field: optional int32 seasonNumber = 10;\n */\n seasonNumber: number;\n\n /**\n * @generated from field: optional int32 episodeNumber = 11;\n */\n episodeNumber: number;\n\n /**\n * @generated from field: optional double releaseDate = 12;\n */\n releaseDate: number;\n\n /**\n * @generated from field: optional int32 playCount = 13;\n */\n playCount: number;\n\n /**\n * @generated from field: optional double duration = 14;\n */\n duration: number;\n\n /**\n * @generated from field: optional string localizedContentRating = 15;\n */\n localizedContentRating: string;\n\n /**\n * @generated from field: optional bool isExplicitItem = 16;\n */\n isExplicitItem: boolean;\n\n /**\n * @generated from field: optional int32 playlistType = 17;\n */\n playlistType: number;\n\n /**\n * @generated from field: optional int32 radioStationType = 18;\n */\n radioStationType: number;\n\n /**\n * @generated from field: optional bool artworkAvailable = 19;\n */\n artworkAvailable: boolean;\n\n /**\n * @generated from field: optional bool infoAvailable = 21;\n */\n infoAvailable: boolean;\n\n /**\n * @generated from field: optional bool languageOptionsAvailable = 22;\n */\n languageOptionsAvailable: boolean;\n\n /**\n * @generated from field: optional int32 numberOfSections = 23;\n */\n numberOfSections: number;\n\n /**\n * @generated from field: optional bool lyricsAvailable = 24;\n */\n lyricsAvailable: boolean;\n\n /**\n * @generated from field: optional int32 editingStyleFlags = 25;\n */\n editingStyleFlags: number;\n\n /**\n * @generated from field: optional bool isStreamingContent = 26;\n */\n isStreamingContent: boolean;\n\n /**\n * @generated from field: optional bool isCurrentlyPlaying = 27;\n */\n isCurrentlyPlaying: boolean;\n\n /**\n * @generated from field: optional string collectionIdentifier = 28;\n */\n collectionIdentifier: string;\n\n /**\n * @generated from field: optional string profileIdentifier = 29;\n */\n profileIdentifier: string;\n\n /**\n * @generated from field: optional double startTime = 30;\n */\n startTime: number;\n\n /**\n * @generated from field: optional string artworkMIMEType = 31;\n */\n artworkMIMEType: string;\n\n /**\n * @generated from field: optional string assetURLString = 32;\n */\n assetURLString: string;\n\n /**\n * @generated from field: optional string composer = 33;\n */\n composer: string;\n\n /**\n * @generated from field: optional int32 discNumber = 34;\n */\n discNumber: number;\n\n /**\n * @generated from field: optional double elapsedTime = 35;\n */\n elapsedTime: number;\n\n /**\n * @generated from field: optional string genre = 36;\n */\n genre: string;\n\n /**\n * @generated from field: optional bool isAlwaysLive = 37;\n */\n isAlwaysLive: boolean;\n\n /**\n * @generated from field: optional float playbackRate = 39;\n */\n playbackRate: number;\n\n /**\n * @generated from field: optional int32 chapterCount = 40;\n */\n chapterCount: number;\n\n /**\n * @generated from field: optional int32 totalDiscCount = 41;\n */\n totalDiscCount: number;\n\n /**\n * @generated from field: optional int32 totalTrackCount = 42;\n */\n totalTrackCount: number;\n\n /**\n * @generated from field: optional int32 trackNumber = 43;\n */\n trackNumber: number;\n\n /**\n * @generated from field: optional string contentIdentifier = 44;\n */\n contentIdentifier: string;\n\n /**\n * @generated from field: optional bool isSharable = 46;\n */\n isSharable: boolean;\n\n /**\n * @generated from field: optional bool isLiked = 48;\n */\n isLiked: boolean;\n\n /**\n * @generated from field: optional bool isInWishList = 49;\n */\n isInWishList: boolean;\n\n /**\n * @generated from field: optional int64 radioStationIdentifier = 50;\n */\n radioStationIdentifier: bigint;\n\n /**\n * @generated from field: optional string radioStationName = 52;\n */\n radioStationName: string;\n\n /**\n * @generated from field: optional string radioStationString = 53;\n */\n radioStationString: string;\n\n /**\n * @generated from field: optional int64 iTunesStoreIdentifier = 54;\n */\n iTunesStoreIdentifier: bigint;\n\n /**\n * @generated from field: optional int64 iTunesStoreSubscriptionIdentifier = 55;\n */\n iTunesStoreSubscriptionIdentifier: bigint;\n\n /**\n * @generated from field: optional int64 iTunesStoreArtistIdentifier = 56;\n */\n iTunesStoreArtistIdentifier: bigint;\n\n /**\n * @generated from field: optional int64 iTunesStoreAlbumIdentifier = 57;\n */\n iTunesStoreAlbumIdentifier: bigint;\n\n /**\n * @generated from field: optional bytes purchaseInfoData = 58;\n */\n purchaseInfoData: Uint8Array;\n\n /**\n * @generated from field: optional float defaultPlaybackRate = 59;\n */\n defaultPlaybackRate: number;\n\n /**\n * @generated from field: optional int32 downloadState = 60;\n */\n downloadState: number;\n\n /**\n * @generated from field: optional float downloadProgress = 61;\n */\n downloadProgress: number;\n\n /**\n * @generated from field: optional bytes appMetricsData = 62;\n */\n appMetricsData: Uint8Array;\n\n /**\n * @generated from field: optional string seriesName = 63;\n */\n seriesName: string;\n\n /**\n * @generated from field: optional ContentItemMetadata.MediaType mediaType = 64;\n */\n mediaType: ContentItemMetadata_MediaType;\n\n /**\n * @generated from field: optional ContentItemMetadata.MediaSubType mediaSubType = 65;\n */\n mediaSubType: ContentItemMetadata_MediaSubType;\n\n /**\n * @generated from field: optional bytes nowPlayingInfoData = 67;\n */\n nowPlayingInfoData: Uint8Array;\n\n /**\n * @generated from field: optional bytes userInfoData = 68;\n */\n userInfoData: Uint8Array;\n\n /**\n * @generated from field: optional bool isSteerable = 69;\n */\n isSteerable: boolean;\n\n /**\n * @generated from field: optional string artworkURL = 70;\n */\n artworkURL: string;\n\n /**\n * @generated from field: optional string lyricsURL = 71;\n */\n lyricsURL: string;\n\n /**\n * @generated from field: optional bytes deviceSpecificUserInfoData = 72;\n */\n deviceSpecificUserInfoData: Uint8Array;\n\n /**\n * @generated from field: optional bytes collectionInfoData = 73;\n */\n collectionInfoData: Uint8Array;\n\n /**\n * @generated from field: optional double elapsedTimeTimestamp = 74;\n */\n elapsedTimeTimestamp: number;\n\n /**\n * @generated from field: optional double inferredTimestamp = 75;\n */\n inferredTimestamp: number;\n\n /**\n * @generated from field: optional string serviceIdentifier = 76;\n */\n serviceIdentifier: string;\n\n /**\n * @generated from field: optional int32 artworkDataWidth = 77;\n */\n artworkDataWidth: number;\n\n /**\n * @generated from field: optional int32 artworkDataHeight = 78;\n */\n artworkDataHeight: number;\n\n /**\n * @generated from field: optional bytes currentPlaybackDateData = 79;\n */\n currentPlaybackDateData: Uint8Array;\n\n /**\n * @generated from field: optional string artworkIdentifier = 80;\n */\n artworkIdentifier: string;\n\n /**\n * @generated from field: optional bool isLoading = 81;\n */\n isLoading: boolean;\n\n /**\n * @generated from field: optional bytes artworkURLTemplatesData = 82;\n */\n artworkURLTemplatesData: Uint8Array;\n\n /**\n * @generated from field: optional int64 legacyUniqueIdentifier = 83;\n */\n legacyUniqueIdentifier: bigint;\n\n /**\n * @generated from field: optional int32 episodeType = 84;\n */\n episodeType: number;\n\n /**\n * @generated from field: optional string artworkFileURL = 85;\n */\n artworkFileURL: string;\n\n /**\n * @generated from field: optional string brandIdentifier = 86;\n */\n brandIdentifier: string;\n\n /**\n * @generated from field: optional string localizedDurationString = 87;\n */\n localizedDurationString: string;\n\n /**\n * @generated from field: optional string albumYear = 88;\n */\n albumYear: string;\n\n /**\n * @generated from field: optional SongTraits.Enum songTraits = 89;\n */\n songTraits: SongTraits_Enum;\n\n /**\n * @generated from field: optional AlbumTraits.Enum albumTraits = 90;\n */\n albumTraits: AlbumTraits_Enum;\n\n /**\n * @generated from field: optional PlaylistTraits.Enum playlistTraits = 91;\n */\n playlistTraits: PlaylistTraits_Enum;\n\n /**\n * @generated from field: optional AudioFormat preferredFormat = 92;\n */\n preferredFormat?: AudioFormat;\n\n /**\n * @generated from field: optional AudioFormat activeFormat = 93;\n */\n activeFormat?: AudioFormat;\n\n /**\n * @generated from field: optional ActiveFormatJustification.Enum activeFormatJustification = 94;\n */\n activeFormatJustification: ActiveFormatJustification_Enum;\n\n /**\n * @generated from field: optional FormatTier.Enum formatTierPreference = 95;\n */\n formatTierPreference: FormatTier_Enum;\n\n /**\n * @generated from field: optional AudioRoute audioRoute = 96;\n */\n audioRoute?: AudioRoute;\n\n /**\n * @generated from field: repeated AudioFormat alternativeFormats = 97;\n */\n alternativeFormats: AudioFormat[];\n};\n\n/**\n * Describes the message ContentItemMetadata.\n * Use `create(ContentItemMetadataSchema)` to create a new message.\n */\nexport const ContentItemMetadataSchema: GenMessage<ContentItemMetadata> = /*@__PURE__*/\n messageDesc(file_ContentItemMetadata, 9);\n\n/**\n * @generated from enum ContentItemMetadata.MediaType\n */\nexport enum ContentItemMetadata_MediaType {\n /**\n * @generated from enum value: UnknownMediaType = 0;\n */\n UnknownMediaType = 0,\n\n /**\n * @generated from enum value: Audio = 1;\n */\n Audio = 1,\n\n /**\n * @generated from enum value: Video = 2;\n */\n Video = 2,\n}\n\n/**\n * Describes the enum ContentItemMetadata.MediaType.\n */\nexport const ContentItemMetadata_MediaTypeSchema: GenEnum<ContentItemMetadata_MediaType> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 9, 0);\n\n/**\n * @generated from enum ContentItemMetadata.MediaSubType\n */\nexport enum ContentItemMetadata_MediaSubType {\n /**\n * @generated from enum value: UnknownMediaSubType = 0;\n */\n UnknownMediaSubType = 0,\n\n /**\n * @generated from enum value: Music = 1;\n */\n Music = 1,\n\n /**\n * @generated from enum value: Podcast = 4;\n */\n Podcast = 4,\n\n /**\n * @generated from enum value: AudioBook = 5;\n */\n AudioBook = 5,\n\n /**\n * @generated from enum value: ITunesU = 6;\n */\n ITunesU = 6,\n}\n\n/**\n * Describes the enum ContentItemMetadata.MediaSubType.\n */\nexport const ContentItemMetadata_MediaSubTypeSchema: GenEnum<ContentItemMetadata_MediaSubType> = /*@__PURE__*/\n enumDesc(file_ContentItemMetadata, 9, 1);\n\n",
73
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file LanguageOption.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file LanguageOption.proto.\n */\nexport const file_LanguageOption: GenFile = /*@__PURE__*/\n fileDesc(\"ChRMYW5ndWFnZU9wdGlvbi5wcm90byJ1Cg5MYW5ndWFnZU9wdGlvbhIMCgR0eXBlGAEgASgFEhMKC2xhbmd1YWdlVGFnGAIgASgJEhcKD2NoYXJhY3RlcmlzdGljcxgDIAMoCRITCgtkaXNwbGF5TmFtZRgEIAEoCRISCgppZGVudGlmaWVyGAUgASgJ\");\n\n/**\n * @generated from message LanguageOption\n */\nexport type LanguageOption = Message<\"LanguageOption\"> & {\n /**\n * @generated from field: optional int32 type = 1;\n */\n type: number;\n\n /**\n * @generated from field: optional string languageTag = 2;\n */\n languageTag: string;\n\n /**\n * @generated from field: repeated string characteristics = 3;\n */\n characteristics: string[];\n\n /**\n * @generated from field: optional string displayName = 4;\n */\n displayName: string;\n\n /**\n * @generated from field: optional string identifier = 5;\n */\n identifier: string;\n};\n\n/**\n * Describes the message LanguageOption.\n * Use `create(LanguageOptionSchema)` to create a new message.\n */\nexport const LanguageOptionSchema: GenMessage<LanguageOption> = /*@__PURE__*/\n messageDesc(file_LanguageOption, 0);\n\n",
74
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file CryptoPairingMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file CryptoPairingMessage.proto.\n */\nexport const file_CryptoPairingMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChpDcnlwdG9QYWlyaW5nTWVzc2FnZS5wcm90byJ8ChRDcnlwdG9QYWlyaW5nTWVzc2FnZRITCgtwYWlyaW5nRGF0YRgBIAEoDBIOCgZzdGF0dXMYAiABKAUSEgoKaXNSZXRyeWluZxgDIAEoCBIcChRpc1VzaW5nU3lzdGVtUGFpcmluZxgEIAEoCBINCgVzdGF0ZRgFIAEoBTpbChRjcnlwdG9QYWlyaW5nTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgnIAEoCzIVLkNyeXB0b1BhaXJpbmdNZXNzYWdlUhRjcnlwdG9QYWlyaW5nTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message CryptoPairingMessage\n */\nexport type CryptoPairingMessage = Message<\"CryptoPairingMessage\"> & {\n /**\n * Example: <00010006 0101>\n *\n * @generated from field: optional bytes pairingData = 1;\n */\n pairingData: Uint8Array;\n\n /**\n * Example: 0\n *\n * @generated from field: optional int32 status = 2;\n */\n status: number;\n\n /**\n * @generated from field: optional bool isRetrying = 3;\n */\n isRetrying: boolean;\n\n /**\n * @generated from field: optional bool isUsingSystemPairing = 4;\n */\n isUsingSystemPairing: boolean;\n\n /**\n * @generated from field: optional int32 state = 5;\n */\n state: number;\n};\n\n/**\n * Describes the message CryptoPairingMessage.\n * Use `create(CryptoPairingMessageSchema)` to create a new message.\n */\nexport const CryptoPairingMessageSchema: GenMessage<CryptoPairingMessage> = /*@__PURE__*/\n messageDesc(file_CryptoPairingMessage, 0);\n\n/**\n * @generated from extension: optional CryptoPairingMessage cryptoPairingMessage = 39;\n */\nexport const cryptoPairingMessage: GenExtension<ProtocolMessage, CryptoPairingMessage> = /*@__PURE__*/\n extDesc(file_CryptoPairingMessage, 0);\n\n",
75
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file GenericMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file GenericMessage.proto.\n */\nexport const file_GenericMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChRHZW5lcmljTWVzc2FnZS5wcm90byIsCg5HZW5lcmljTWVzc2FnZRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6SQoOZ2VuZXJpY01lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYLiABKAsyDy5HZW5lcmljTWVzc2FnZVIOZ2VuZXJpY01lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message GenericMessage\n */\nexport type GenericMessage = Message<\"GenericMessage\"> & {\n /**\n * @generated from field: optional string key = 1;\n */\n key: string;\n\n /**\n * @generated from field: optional bytes value = 2;\n */\n value: Uint8Array;\n};\n\n/**\n * Describes the message GenericMessage.\n * Use `create(GenericMessageSchema)` to create a new message.\n */\nexport const GenericMessageSchema: GenMessage<GenericMessage> = /*@__PURE__*/\n messageDesc(file_GenericMessage, 0);\n\n/**\n * @generated from extension: optional GenericMessage genericMessage = 46;\n */\nexport const genericMessage: GenExtension<ProtocolMessage, GenericMessage> = /*@__PURE__*/\n extDesc(file_GenericMessage, 0);\n\n",
76
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file GetKeyboardSessionMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file GetKeyboardSessionMessage.proto.\n */\nexport const file_GetKeyboardSessionMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch9HZXRLZXlib2FyZFNlc3Npb25NZXNzYWdlLnByb3RvIhsKGUdldEtleWJvYXJkU2Vzc2lvbk1lc3NhZ2U6TgoZZ2V0S2V5Ym9hcmRTZXNzaW9uTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgdIAEoCVIZZ2V0S2V5Ym9hcmRTZXNzaW9uTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message GetKeyboardSessionMessage\n */\nexport type GetKeyboardSessionMessage = Message<\"GetKeyboardSessionMessage\"> & {\n};\n\n/**\n * Describes the message GetKeyboardSessionMessage.\n * Use `create(GetKeyboardSessionMessageSchema)` to create a new message.\n */\nexport const GetKeyboardSessionMessageSchema: GenMessage<GetKeyboardSessionMessage> = /*@__PURE__*/\n messageDesc(file_GetKeyboardSessionMessage, 0);\n\n/**\n * @generated from extension: optional string getKeyboardSessionMessage = 29;\n */\nexport const getKeyboardSessionMessage: GenExtension<ProtocolMessage, string> = /*@__PURE__*/\n extDesc(file_GetKeyboardSessionMessage, 0);\n\n",
77
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file GetRemoteTextInputSessionMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file GetRemoteTextInputSessionMessage.proto.\n */\nexport const file_GetRemoteTextInputSessionMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiZHZXRSZW1vdGVUZXh0SW5wdXRTZXNzaW9uTWVzc2FnZS5wcm90byIiCiBHZXRSZW1vdGVUZXh0SW5wdXRTZXNzaW9uTWVzc2FnZTp/CiBnZXRSZW1vdGVUZXh0SW5wdXRTZXNzaW9uTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRhIIAEoCzIhLkdldFJlbW90ZVRleHRJbnB1dFNlc3Npb25NZXNzYWdlUiBnZXRSZW1vdGVUZXh0SW5wdXRTZXNzaW9uTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message GetRemoteTextInputSessionMessage\n */\nexport type GetRemoteTextInputSessionMessage = Message<\"GetRemoteTextInputSessionMessage\"> & {\n};\n\n/**\n * Describes the message GetRemoteTextInputSessionMessage.\n * Use `create(GetRemoteTextInputSessionMessageSchema)` to create a new message.\n */\nexport const GetRemoteTextInputSessionMessageSchema: GenMessage<GetRemoteTextInputSessionMessage> = /*@__PURE__*/\n messageDesc(file_GetRemoteTextInputSessionMessage, 0);\n\n/**\n * @generated from extension: optional GetRemoteTextInputSessionMessage getRemoteTextInputSessionMessage = 72;\n */\nexport const getRemoteTextInputSessionMessage: GenExtension<ProtocolMessage, GetRemoteTextInputSessionMessage> = /*@__PURE__*/\n extDesc(file_GetRemoteTextInputSessionMessage, 0);\n\n",
78
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file GetVolumeMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file GetVolumeMessage.proto.\n */\nexport const file_GetVolumeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChZHZXRWb2x1bWVNZXNzYWdlLnByb3RvIisKEEdldFZvbHVtZU1lc3NhZ2USFwoPb3V0cHV0RGV2aWNlVUlEGAEgASgJOk8KEGdldFZvbHVtZU1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYNSABKAsyES5HZXRWb2x1bWVNZXNzYWdlUhBnZXRWb2x1bWVNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message GetVolumeMessage\n */\nexport type GetVolumeMessage = Message<\"GetVolumeMessage\"> & {\n /**\n * @generated from field: optional string outputDeviceUID = 1;\n */\n outputDeviceUID: string;\n};\n\n/**\n * Describes the message GetVolumeMessage.\n * Use `create(GetVolumeMessageSchema)` to create a new message.\n */\nexport const GetVolumeMessageSchema: GenMessage<GetVolumeMessage> = /*@__PURE__*/\n messageDesc(file_GetVolumeMessage, 0);\n\n/**\n * @generated from extension: optional GetVolumeMessage getVolumeMessage = 53;\n */\nexport const getVolumeMessage: GenExtension<ProtocolMessage, GetVolumeMessage> = /*@__PURE__*/\n extDesc(file_GetVolumeMessage, 0);\n\n",
79
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file GetVolumeResultMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file GetVolumeResultMessage.proto.\n */\nexport const file_GetVolumeResultMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxHZXRWb2x1bWVSZXN1bHRNZXNzYWdlLnByb3RvIigKFkdldFZvbHVtZVJlc3VsdE1lc3NhZ2USDgoGdm9sdW1lGAEgASgCOmEKFmdldFZvbHVtZVJlc3VsdE1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYNiABKAsyFy5HZXRWb2x1bWVSZXN1bHRNZXNzYWdlUhZnZXRWb2x1bWVSZXN1bHRNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message GetVolumeResultMessage\n */\nexport type GetVolumeResultMessage = Message<\"GetVolumeResultMessage\"> & {\n /**\n * @generated from field: optional float volume = 1;\n */\n volume: number;\n};\n\n/**\n * Describes the message GetVolumeResultMessage.\n * Use `create(GetVolumeResultMessageSchema)` to create a new message.\n */\nexport const GetVolumeResultMessageSchema: GenMessage<GetVolumeResultMessage> = /*@__PURE__*/\n messageDesc(file_GetVolumeResultMessage, 0);\n\n/**\n * @generated from extension: optional GetVolumeResultMessage getVolumeResultMessage = 54;\n */\nexport const getVolumeResultMessage: GenExtension<ProtocolMessage, GetVolumeResultMessage> = /*@__PURE__*/\n extDesc(file_GetVolumeResultMessage, 0);\n\n",
80
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file KeyboardMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file KeyboardMessage.proto.\n */\nexport const file_KeyboardMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChVLZXlib2FyZE1lc3NhZ2UucHJvdG8iigEKDUtleWJvYXJkU3RhdGUieQoERW51bRILCgdVbmtub3duEAASDgoKTm90RWRpdGluZxABEhMKD0RpZEJlZ2luRWRpdGluZxACEgsKB0VkaXRpbmcQAxIRCg1UZXh0RGlkQ2hhbmdlEAQSEQoNRGlkRW5kRWRpdGluZxAFEgwKCFJlc3BvbnNlEAYiVwoWQXV0b2NhcGl0YWxpemF0aW9uVHlwZSI9CgRFbnVtEggKBE5vbmUQABIJCgVXb3JkcxABEg0KCVNlbnRlbmNlcxACEhEKDUFsbENoYXJhY3RlcnMQAyLnAQoMS2V5Ym9hcmRUeXBlItYBCgRFbnVtEgsKB0RlZmF1bHQQABIRCg1BU0NJSV9DYXBhYmxlEAESGQoVTnVtYmVyc0FuZFB1bmN0dWF0aW9uEAISBwoDVVJMEAMSDQoJTnVtYmVyUGFkEAQSDAoIUGhvbmVQYWQQBRIQCgxOYW1lUGhvbmVQYWQQBhIQCgxFbWFpbEFkZHJlc3MQBxIOCgpEZWNpbWFsUGFkEAgSCwoHVHdpdHRlchAJEg0KCVdlYlNlYXJjaBAKEgwKCEFscGhhbmV0EAsSDwoLUGFzc2NvZGVQYWQQDCKkAQoNUmV0dXJuS2V5VHlwZSKSAQoERW51bRILCgdEZWZhdWx0EAASBgoCR28QARIKCgZHb29nbGUQAhIICgRKb2luEAMSCAoETmV4dBAEEgkKBVJvdXRlEAUSCgoGU2VhcmNoEAYSCAoEU2VuZBAHEgkKBVlhaG9vEAgSCAoERG9uZRAJEhEKDUVtZXJnZW5jeUNhbGwQChIMCghDb250aW51ZRALIvQCCg9UZXh0SW5wdXRUcmFpdHMSPAoWYXV0b2NhcGl0YWxpemF0aW9uVHlwZRgBIAEoDjIcLkF1dG9jYXBpdGFsaXphdGlvblR5cGUuRW51bRIoCgxrZXlib2FyZFR5cGUYAiABKA4yEi5LZXlib2FyZFR5cGUuRW51bRIqCg1yZXR1cm5LZXlUeXBlGAMgASgOMhMuUmV0dXJuS2V5VHlwZS5FbnVtEhYKDmF1dG9jb3JyZWN0aW9uGAQgASgIEhUKDXNwZWxsY2hlY2tpbmcYBSABKAgSJQodZW5hYmxlc1JldHVybktleUF1dG9tYXRpY2FsbHkYBiABKAgSFwoPc2VjdXJlVGV4dEVudHJ5GAcgASgIEh4KFnZhbGlkVGV4dFJhbmdlTG9jYXRpb24YCCABKAQSHAoUdmFsaWRUZXh0UmFuZ2VMZW5ndGgYCSABKAQSIAoYcElORW50cnlTZXBhcmF0b3JJbmRleGVzGAogAygEIl0KFVRleHRFZGl0aW5nQXR0cmlidXRlcxINCgV0aXRsZRgBIAEoCRIOCgZwcm9tcHQYAiABKAkSJQoLaW5wdXRUcmFpdHMYAyABKAsyEC5UZXh0SW5wdXRUcmFpdHMiggEKD0tleWJvYXJkTWVzc2FnZRIiCgVzdGF0ZRgBIAEoDjITLktleWJvYXJkU3RhdGUuRW51bRIqCgphdHRyaWJ1dGVzGAMgASgLMhYuVGV4dEVkaXRpbmdBdHRyaWJ1dGVzEh8KF2VuY3J5cHRlZFRleHRDeXBoZXJ0ZXh0GAQgASgMOkwKD2tleWJvYXJkTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgcIAEoCzIQLktleWJvYXJkTWVzc2FnZVIPa2V5Ym9hcmRNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message KeyboardState\n */\nexport type KeyboardState = Message<\"KeyboardState\"> & {\n};\n\n/**\n * Describes the message KeyboardState.\n * Use `create(KeyboardStateSchema)` to create a new message.\n */\nexport const KeyboardStateSchema: GenMessage<KeyboardState> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 0);\n\n/**\n * @generated from enum KeyboardState.Enum\n */\nexport enum KeyboardState_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: NotEditing = 1;\n */\n NotEditing = 1,\n\n /**\n * @generated from enum value: DidBeginEditing = 2;\n */\n DidBeginEditing = 2,\n\n /**\n * @generated from enum value: Editing = 3;\n */\n Editing = 3,\n\n /**\n * @generated from enum value: TextDidChange = 4;\n */\n TextDidChange = 4,\n\n /**\n * @generated from enum value: DidEndEditing = 5;\n */\n DidEndEditing = 5,\n\n /**\n * @generated from enum value: Response = 6;\n */\n Response = 6,\n}\n\n/**\n * Describes the enum KeyboardState.Enum.\n */\nexport const KeyboardState_EnumSchema: GenEnum<KeyboardState_Enum> = /*@__PURE__*/\n enumDesc(file_KeyboardMessage, 0, 0);\n\n/**\n * @generated from message AutocapitalizationType\n */\nexport type AutocapitalizationType = Message<\"AutocapitalizationType\"> & {\n};\n\n/**\n * Describes the message AutocapitalizationType.\n * Use `create(AutocapitalizationTypeSchema)` to create a new message.\n */\nexport const AutocapitalizationTypeSchema: GenMessage<AutocapitalizationType> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 1);\n\n/**\n * @generated from enum AutocapitalizationType.Enum\n */\nexport enum AutocapitalizationType_Enum {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: Words = 1;\n */\n Words = 1,\n\n /**\n * @generated from enum value: Sentences = 2;\n */\n Sentences = 2,\n\n /**\n * @generated from enum value: AllCharacters = 3;\n */\n AllCharacters = 3,\n}\n\n/**\n * Describes the enum AutocapitalizationType.Enum.\n */\nexport const AutocapitalizationType_EnumSchema: GenEnum<AutocapitalizationType_Enum> = /*@__PURE__*/\n enumDesc(file_KeyboardMessage, 1, 0);\n\n/**\n * @generated from message KeyboardType\n */\nexport type KeyboardType = Message<\"KeyboardType\"> & {\n};\n\n/**\n * Describes the message KeyboardType.\n * Use `create(KeyboardTypeSchema)` to create a new message.\n */\nexport const KeyboardTypeSchema: GenMessage<KeyboardType> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 2);\n\n/**\n * @generated from enum KeyboardType.Enum\n */\nexport enum KeyboardType_Enum {\n /**\n * @generated from enum value: Default = 0;\n */\n Default = 0,\n\n /**\n * @generated from enum value: ASCII_Capable = 1;\n */\n ASCII_Capable = 1,\n\n /**\n * @generated from enum value: NumbersAndPunctuation = 2;\n */\n NumbersAndPunctuation = 2,\n\n /**\n * @generated from enum value: URL = 3;\n */\n URL = 3,\n\n /**\n * @generated from enum value: NumberPad = 4;\n */\n NumberPad = 4,\n\n /**\n * @generated from enum value: PhonePad = 5;\n */\n PhonePad = 5,\n\n /**\n * @generated from enum value: NamePhonePad = 6;\n */\n NamePhonePad = 6,\n\n /**\n * @generated from enum value: EmailAddress = 7;\n */\n EmailAddress = 7,\n\n /**\n * @generated from enum value: DecimalPad = 8;\n */\n DecimalPad = 8,\n\n /**\n * @generated from enum value: Twitter = 9;\n */\n Twitter = 9,\n\n /**\n * @generated from enum value: WebSearch = 10;\n */\n WebSearch = 10,\n\n /**\n * @generated from enum value: Alphanet = 11;\n */\n Alphanet = 11,\n\n /**\n * @generated from enum value: PasscodePad = 12;\n */\n PasscodePad = 12,\n}\n\n/**\n * Describes the enum KeyboardType.Enum.\n */\nexport const KeyboardType_EnumSchema: GenEnum<KeyboardType_Enum> = /*@__PURE__*/\n enumDesc(file_KeyboardMessage, 2, 0);\n\n/**\n * @generated from message ReturnKeyType\n */\nexport type ReturnKeyType = Message<\"ReturnKeyType\"> & {\n};\n\n/**\n * Describes the message ReturnKeyType.\n * Use `create(ReturnKeyTypeSchema)` to create a new message.\n */\nexport const ReturnKeyTypeSchema: GenMessage<ReturnKeyType> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 3);\n\n/**\n * @generated from enum ReturnKeyType.Enum\n */\nexport enum ReturnKeyType_Enum {\n /**\n * @generated from enum value: Default = 0;\n */\n Default = 0,\n\n /**\n * @generated from enum value: Go = 1;\n */\n Go = 1,\n\n /**\n * @generated from enum value: Google = 2;\n */\n Google = 2,\n\n /**\n * @generated from enum value: Join = 3;\n */\n Join = 3,\n\n /**\n * @generated from enum value: Next = 4;\n */\n Next = 4,\n\n /**\n * @generated from enum value: Route = 5;\n */\n Route = 5,\n\n /**\n * @generated from enum value: Search = 6;\n */\n Search = 6,\n\n /**\n * @generated from enum value: Send = 7;\n */\n Send = 7,\n\n /**\n * @generated from enum value: Yahoo = 8;\n */\n Yahoo = 8,\n\n /**\n * @generated from enum value: Done = 9;\n */\n Done = 9,\n\n /**\n * @generated from enum value: EmergencyCall = 10;\n */\n EmergencyCall = 10,\n\n /**\n * @generated from enum value: Continue = 11;\n */\n Continue = 11,\n}\n\n/**\n * Describes the enum ReturnKeyType.Enum.\n */\nexport const ReturnKeyType_EnumSchema: GenEnum<ReturnKeyType_Enum> = /*@__PURE__*/\n enumDesc(file_KeyboardMessage, 3, 0);\n\n/**\n * @generated from message TextInputTraits\n */\nexport type TextInputTraits = Message<\"TextInputTraits\"> & {\n /**\n * @generated from field: optional AutocapitalizationType.Enum autocapitalizationType = 1;\n */\n autocapitalizationType: AutocapitalizationType_Enum;\n\n /**\n * @generated from field: optional KeyboardType.Enum keyboardType = 2;\n */\n keyboardType: KeyboardType_Enum;\n\n /**\n * @generated from field: optional ReturnKeyType.Enum returnKeyType = 3;\n */\n returnKeyType: ReturnKeyType_Enum;\n\n /**\n * @generated from field: optional bool autocorrection = 4;\n */\n autocorrection: boolean;\n\n /**\n * @generated from field: optional bool spellchecking = 5;\n */\n spellchecking: boolean;\n\n /**\n * @generated from field: optional bool enablesReturnKeyAutomatically = 6;\n */\n enablesReturnKeyAutomatically: boolean;\n\n /**\n * @generated from field: optional bool secureTextEntry = 7;\n */\n secureTextEntry: boolean;\n\n /**\n * @generated from field: optional uint64 validTextRangeLocation = 8;\n */\n validTextRangeLocation: bigint;\n\n /**\n * @generated from field: optional uint64 validTextRangeLength = 9;\n */\n validTextRangeLength: bigint;\n\n /**\n * @generated from field: repeated uint64 pINEntrySeparatorIndexes = 10;\n */\n pINEntrySeparatorIndexes: bigint[];\n};\n\n/**\n * Describes the message TextInputTraits.\n * Use `create(TextInputTraitsSchema)` to create a new message.\n */\nexport const TextInputTraitsSchema: GenMessage<TextInputTraits> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 4);\n\n/**\n * @generated from message TextEditingAttributes\n */\nexport type TextEditingAttributes = Message<\"TextEditingAttributes\"> & {\n /**\n * @generated from field: optional string title = 1;\n */\n title: string;\n\n /**\n * @generated from field: optional string prompt = 2;\n */\n prompt: string;\n\n /**\n * @generated from field: optional TextInputTraits inputTraits = 3;\n */\n inputTraits?: TextInputTraits;\n};\n\n/**\n * Describes the message TextEditingAttributes.\n * Use `create(TextEditingAttributesSchema)` to create a new message.\n */\nexport const TextEditingAttributesSchema: GenMessage<TextEditingAttributes> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 5);\n\n/**\n * @generated from message KeyboardMessage\n */\nexport type KeyboardMessage = Message<\"KeyboardMessage\"> & {\n /**\n * @generated from field: optional KeyboardState.Enum state = 1;\n */\n state: KeyboardState_Enum;\n\n /**\n * @generated from field: optional TextEditingAttributes attributes = 3;\n */\n attributes?: TextEditingAttributes;\n\n /**\n * @generated from field: optional bytes encryptedTextCyphertext = 4;\n */\n encryptedTextCyphertext: Uint8Array;\n};\n\n/**\n * Describes the message KeyboardMessage.\n * Use `create(KeyboardMessageSchema)` to create a new message.\n */\nexport const KeyboardMessageSchema: GenMessage<KeyboardMessage> = /*@__PURE__*/\n messageDesc(file_KeyboardMessage, 6);\n\n/**\n * @generated from extension: optional KeyboardMessage keyboardMessage = 28;\n */\nexport const keyboardMessage: GenExtension<ProtocolMessage, KeyboardMessage> = /*@__PURE__*/\n extDesc(file_KeyboardMessage, 0);\n\n",
81
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file ModifyOutputContextRequestMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ModifyOutputContextRequestMessage.proto.\n */\nexport const file_ModifyOutputContextRequestMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CidNb2RpZnlPdXRwdXRDb250ZXh0UmVxdWVzdE1lc3NhZ2UucHJvdG8iRQoeTW9kaWZ5T3V0cHV0Q29udGV4dFJlcXVlc3RUeXBlIiMKBEVudW0SGwoXU2hhcmVkQXVkaW9QcmVzZW50YXRpb24QASKLAgohTW9kaWZ5T3V0cHV0Q29udGV4dFJlcXVlc3RNZXNzYWdlEjIKBHR5cGUYASABKA4yJC5Nb2RpZnlPdXRwdXRDb250ZXh0UmVxdWVzdFR5cGUuRW51bRIVCg1hZGRpbmdEZXZpY2VzGAIgAygJEhcKD3JlbW92aW5nRGV2aWNlcxgDIAMoCRIWCg5zZXR0aW5nRGV2aWNlcxgEIAMoCRIhChljbHVzdGVyQXdhcmVBZGRpbmdEZXZpY2VzGAUgAygJEiMKG2NsdXN0ZXJBd2FyZVJlbW92aW5nRGV2aWNlcxgGIAMoCRIiChpjbHVzdGVyQXdhcmVTZXR0aW5nRGV2aWNlcxgHIAMoCTqCAQohbW9kaWZ5T3V0cHV0Q29udGV4dFJlcXVlc3RNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDQgASgLMiIuTW9kaWZ5T3V0cHV0Q29udGV4dFJlcXVlc3RNZXNzYWdlUiFtb2RpZnlPdXRwdXRDb250ZXh0UmVxdWVzdE1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message ModifyOutputContextRequestType\n */\nexport type ModifyOutputContextRequestType = Message<\"ModifyOutputContextRequestType\"> & {\n};\n\n/**\n * Describes the message ModifyOutputContextRequestType.\n * Use `create(ModifyOutputContextRequestTypeSchema)` to create a new message.\n */\nexport const ModifyOutputContextRequestTypeSchema: GenMessage<ModifyOutputContextRequestType> = /*@__PURE__*/\n messageDesc(file_ModifyOutputContextRequestMessage, 0);\n\n/**\n * @generated from enum ModifyOutputContextRequestType.Enum\n */\nexport enum ModifyOutputContextRequestType_Enum {\n /**\n * @generated from enum value: SharedAudioPresentation = 1;\n */\n SharedAudioPresentation = 1,\n}\n\n/**\n * Describes the enum ModifyOutputContextRequestType.Enum.\n */\nexport const ModifyOutputContextRequestType_EnumSchema: GenEnum<ModifyOutputContextRequestType_Enum> = /*@__PURE__*/\n enumDesc(file_ModifyOutputContextRequestMessage, 0, 0);\n\n/**\n * @generated from message ModifyOutputContextRequestMessage\n */\nexport type ModifyOutputContextRequestMessage = Message<\"ModifyOutputContextRequestMessage\"> & {\n /**\n * @generated from field: optional ModifyOutputContextRequestType.Enum type = 1;\n */\n type: ModifyOutputContextRequestType_Enum;\n\n /**\n * @generated from field: repeated string addingDevices = 2;\n */\n addingDevices: string[];\n\n /**\n * @generated from field: repeated string removingDevices = 3;\n */\n removingDevices: string[];\n\n /**\n * @generated from field: repeated string settingDevices = 4;\n */\n settingDevices: string[];\n\n /**\n * @generated from field: repeated string clusterAwareAddingDevices = 5;\n */\n clusterAwareAddingDevices: string[];\n\n /**\n * @generated from field: repeated string clusterAwareRemovingDevices = 6;\n */\n clusterAwareRemovingDevices: string[];\n\n /**\n * @generated from field: repeated string clusterAwareSettingDevices = 7;\n */\n clusterAwareSettingDevices: string[];\n};\n\n/**\n * Describes the message ModifyOutputContextRequestMessage.\n * Use `create(ModifyOutputContextRequestMessageSchema)` to create a new message.\n */\nexport const ModifyOutputContextRequestMessageSchema: GenMessage<ModifyOutputContextRequestMessage> = /*@__PURE__*/\n messageDesc(file_ModifyOutputContextRequestMessage, 1);\n\n/**\n * @generated from extension: optional ModifyOutputContextRequestMessage modifyOutputContextRequestMessage = 52;\n */\nexport const modifyOutputContextRequestMessage: GenExtension<ProtocolMessage, ModifyOutputContextRequestMessage> = /*@__PURE__*/\n extDesc(file_ModifyOutputContextRequestMessage, 0);\n\n",
82
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file NotificationMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file NotificationMessage.proto.\n */\nexport const file_NotificationMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChlOb3RpZmljYXRpb25NZXNzYWdlLnByb3RvIj0KE05vdGlmaWNhdGlvbk1lc3NhZ2USFAoMbm90aWZpY2F0aW9uGAEgAygJEhAKCHVzZXJJbmZvGAIgAygMOlgKE25vdGlmaWNhdGlvbk1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYECABKAsyFC5Ob3RpZmljYXRpb25NZXNzYWdlUhNub3RpZmljYXRpb25NZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message NotificationMessage\n */\nexport type NotificationMessage = Message<\"NotificationMessage\"> & {\n /**\n * @generated from field: repeated string notification = 1;\n */\n notification: string[];\n\n /**\n * @generated from field: repeated bytes userInfo = 2;\n */\n userInfo: Uint8Array[];\n};\n\n/**\n * Describes the message NotificationMessage.\n * Use `create(NotificationMessageSchema)` to create a new message.\n */\nexport const NotificationMessageSchema: GenMessage<NotificationMessage> = /*@__PURE__*/\n messageDesc(file_NotificationMessage, 0);\n\n/**\n * @generated from extension: optional NotificationMessage notificationMessage = 16;\n */\nexport const notificationMessage: GenExtension<ProtocolMessage, NotificationMessage> = /*@__PURE__*/\n extDesc(file_NotificationMessage, 0);\n\n",
83
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file NowPlayingInfo.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { RepeatMode_Enum, ShuffleMode_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file NowPlayingInfo.proto.\n */\nexport const file_NowPlayingInfo: GenFile = /*@__PURE__*/\n fileDesc(\"ChROb3dQbGF5aW5nSW5mby5wcm90byLBAwoOTm93UGxheWluZ0luZm8SDQoFYWxidW0YASABKAkSDgoGYXJ0aXN0GAIgASgJEhAKCGR1cmF0aW9uGAMgASgBEhMKC2VsYXBzZWRUaW1lGAQgASgBEhQKDHBsYXliYWNrUmF0ZRgFIAEoAhIkCgpyZXBlYXRNb2RlGAYgASgOMhAuUmVwZWF0TW9kZS5FbnVtEiYKC3NodWZmbGVNb2RlGAcgASgOMhEuU2h1ZmZsZU1vZGUuRW51bRIRCgl0aW1lc3RhbXAYCCABKAESDQoFdGl0bGUYCSABKAkSGAoQdW5pcXVlSWRlbnRpZmllchgKIAEoBBIXCg9pc0V4cGxpY2l0VHJhY2sYCyABKAgSEgoKaXNNdXNpY0FwcBgMIAEoCBIeChZyYWRpb1N0YXRpb25JZGVudGlmaWVyGA0gASgDEhgKEHJhZGlvU3RhdGlvbkhhc2gYDiABKAkSGAoQcmFkaW9TdGF0aW9uTmFtZRgPIAEoCRIZChFhcnR3b3JrRGF0YURpZ2VzdBgQIAEoDBIUCgxpc0Fsd2F5c0xpdmUYESABKAgSFwoPaXNBZHZlcnRpc2VtZW50GBIgASgI\", [file_Common]);\n\n/**\n * @generated from message NowPlayingInfo\n */\nexport type NowPlayingInfo = Message<\"NowPlayingInfo\"> & {\n /**\n * @generated from field: optional string album = 1;\n */\n album: string;\n\n /**\n * @generated from field: optional string artist = 2;\n */\n artist: string;\n\n /**\n * @generated from field: optional double duration = 3;\n */\n duration: number;\n\n /**\n * @generated from field: optional double elapsedTime = 4;\n */\n elapsedTime: number;\n\n /**\n * @generated from field: optional float playbackRate = 5;\n */\n playbackRate: number;\n\n /**\n * @generated from field: optional RepeatMode.Enum repeatMode = 6;\n */\n repeatMode: RepeatMode_Enum;\n\n /**\n * @generated from field: optional ShuffleMode.Enum shuffleMode = 7;\n */\n shuffleMode: ShuffleMode_Enum;\n\n /**\n * @generated from field: optional double timestamp = 8;\n */\n timestamp: number;\n\n /**\n * @generated from field: optional string title = 9;\n */\n title: string;\n\n /**\n * @generated from field: optional uint64 uniqueIdentifier = 10;\n */\n uniqueIdentifier: bigint;\n\n /**\n * @generated from field: optional bool isExplicitTrack = 11;\n */\n isExplicitTrack: boolean;\n\n /**\n * @generated from field: optional bool isMusicApp = 12;\n */\n isMusicApp: boolean;\n\n /**\n * @generated from field: optional int64 radioStationIdentifier = 13;\n */\n radioStationIdentifier: bigint;\n\n /**\n * @generated from field: optional string radioStationHash = 14;\n */\n radioStationHash: string;\n\n /**\n * @generated from field: optional string radioStationName = 15;\n */\n radioStationName: string;\n\n /**\n * @generated from field: optional bytes artworkDataDigest = 16;\n */\n artworkDataDigest: Uint8Array;\n\n /**\n * @generated from field: optional bool isAlwaysLive = 17;\n */\n isAlwaysLive: boolean;\n\n /**\n * @generated from field: optional bool isAdvertisement = 18;\n */\n isAdvertisement: boolean;\n};\n\n/**\n * Describes the message NowPlayingInfo.\n * Use `create(NowPlayingInfoSchema)` to create a new message.\n */\nexport const NowPlayingInfoSchema: GenMessage<NowPlayingInfo> = /*@__PURE__*/\n messageDesc(file_NowPlayingInfo, 0);\n\n",
84
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file OriginClientPropertiesMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file OriginClientPropertiesMessage.proto.\n */\nexport const file_OriginClientPropertiesMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiNPcmlnaW5DbGllbnRQcm9wZXJ0aWVzTWVzc2FnZS5wcm90byI9Ch1PcmlnaW5DbGllbnRQcm9wZXJ0aWVzTWVzc2FnZRIcChRsYXN0UGxheWluZ1RpbWVzdGFtcBgBIAEoATp2Ch1vcmlnaW5DbGllbnRQcm9wZXJ0aWVzTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRhXIAEoCzIeLk9yaWdpbkNsaWVudFByb3BlcnRpZXNNZXNzYWdlUh1vcmlnaW5DbGllbnRQcm9wZXJ0aWVzTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message OriginClientPropertiesMessage\n */\nexport type OriginClientPropertiesMessage = Message<\"OriginClientPropertiesMessage\"> & {\n /**\n * @generated from field: optional double lastPlayingTimestamp = 1;\n */\n lastPlayingTimestamp: number;\n};\n\n/**\n * Describes the message OriginClientPropertiesMessage.\n * Use `create(OriginClientPropertiesMessageSchema)` to create a new message.\n */\nexport const OriginClientPropertiesMessageSchema: GenMessage<OriginClientPropertiesMessage> = /*@__PURE__*/\n messageDesc(file_OriginClientPropertiesMessage, 0);\n\n/**\n * @generated from extension: optional OriginClientPropertiesMessage originClientPropertiesMessage = 87;\n */\nexport const originClientPropertiesMessage: GenExtension<ProtocolMessage, OriginClientPropertiesMessage> = /*@__PURE__*/\n extDesc(file_OriginClientPropertiesMessage, 0);\n\n",
85
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlaybackQueue.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ContentItem } from \"./ContentItem_pb\";\nimport { file_ContentItem } from \"./ContentItem_pb\";\nimport type { PlaybackQueueContext } from \"./PlaybackQueueContext_pb\";\nimport { file_PlaybackQueueContext } from \"./PlaybackQueueContext_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 PlaybackQueue.proto.\n */\nexport const file_PlaybackQueue: GenFile = /*@__PURE__*/\n fileDesc(\"ChNQbGF5YmFja1F1ZXVlLnByb3RvIusBCg1QbGF5YmFja1F1ZXVlEhAKCGxvY2F0aW9uGAEgASgFEiIKDGNvbnRlbnRJdGVtcxgCIAMoCzIMLkNvbnRlbnRJdGVtEiYKB2NvbnRleHQYAyABKAsyFS5QbGF5YmFja1F1ZXVlQ29udGV4dBIRCglyZXF1ZXN0SWQYBCABKAkSJwoScmVzb2x2ZWRQbGF5ZXJQYXRoGAUgASgLMgsuUGxheWVyUGF0aBInCh9zZW5kaW5nUGxheWJhY2tRdWV1ZVRyYW5zYWN0aW9uGAYgASgIEhcKD3F1ZXVlSWRlbnRpZmllchgHIAEoCQ\", [file_ContentItem, file_PlaybackQueueContext, file_PlayerPath]);\n\n/**\n * @generated from message PlaybackQueue\n */\nexport type PlaybackQueue = Message<\"PlaybackQueue\"> & {\n /**\n * @generated from field: optional int32 location = 1;\n */\n location: number;\n\n /**\n * @generated from field: repeated ContentItem contentItems = 2;\n */\n contentItems: ContentItem[];\n\n /**\n * @generated from field: optional PlaybackQueueContext context = 3;\n */\n context?: PlaybackQueueContext;\n\n /**\n * @generated from field: optional string requestId = 4;\n */\n requestId: string;\n\n /**\n * @generated from field: optional PlayerPath resolvedPlayerPath = 5;\n */\n resolvedPlayerPath?: PlayerPath;\n\n /**\n * @generated from field: optional bool sendingPlaybackQueueTransaction = 6;\n */\n sendingPlaybackQueueTransaction: boolean;\n\n /**\n * @generated from field: optional string queueIdentifier = 7;\n */\n queueIdentifier: string;\n};\n\n/**\n * Describes the message PlaybackQueue.\n * Use `create(PlaybackQueueSchema)` to create a new message.\n */\nexport const PlaybackQueueSchema: GenMessage<PlaybackQueue> = /*@__PURE__*/\n messageDesc(file_PlaybackQueue, 0);\n\n",
86
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlaybackQueueContext.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file PlaybackQueueContext.proto.\n */\nexport const file_PlaybackQueueContext: GenFile = /*@__PURE__*/\n fileDesc(\"ChpQbGF5YmFja1F1ZXVlQ29udGV4dC5wcm90byIoChRQbGF5YmFja1F1ZXVlQ29udGV4dBIQCghyZXZpc2lvbhgBIAEoCQ\");\n\n/**\n * @generated from message PlaybackQueueContext\n */\nexport type PlaybackQueueContext = Message<\"PlaybackQueueContext\"> & {\n /**\n * @generated from field: optional string revision = 1;\n */\n revision: string;\n};\n\n/**\n * Describes the message PlaybackQueueContext.\n * Use `create(PlaybackQueueContextSchema)` to create a new message.\n */\nexport const PlaybackQueueContextSchema: GenMessage<PlaybackQueueContext> = /*@__PURE__*/\n messageDesc(file_PlaybackQueueContext, 0);\n\n",
87
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlaybackQueueCapabilities.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file PlaybackQueueCapabilities.proto.\n */\nexport const file_PlaybackQueueCapabilities: GenFile = /*@__PURE__*/\n fileDesc(\"Ch9QbGF5YmFja1F1ZXVlQ2FwYWJpbGl0aWVzLnByb3RvImsKGVBsYXliYWNrUXVldWVDYXBhYmlsaXRpZXMSFgoOcmVxdWVzdEJ5UmFuZ2UYASABKAgSHAoUcmVxdWVzdEJ5SWRlbnRpZmllcnMYAiABKAgSGAoQcmVxdWVzdEJ5UmVxdWVzdBgDIAEoCA\");\n\n/**\n * @generated from message PlaybackQueueCapabilities\n */\nexport type PlaybackQueueCapabilities = Message<\"PlaybackQueueCapabilities\"> & {\n /**\n * @generated from field: optional bool requestByRange = 1;\n */\n requestByRange: boolean;\n\n /**\n * @generated from field: optional bool requestByIdentifiers = 2;\n */\n requestByIdentifiers: boolean;\n\n /**\n * @generated from field: optional bool requestByRequest = 3;\n */\n requestByRequest: boolean;\n};\n\n/**\n * Describes the message PlaybackQueueCapabilities.\n * Use `create(PlaybackQueueCapabilitiesSchema)` to create a new message.\n */\nexport const PlaybackQueueCapabilitiesSchema: GenMessage<PlaybackQueueCapabilities> = /*@__PURE__*/\n messageDesc(file_PlaybackQueueCapabilities, 0);\n\n",
88
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlaybackQueueRequestMessage.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 { PlaybackQueueContext } from \"./PlaybackQueueContext_pb\";\nimport { file_PlaybackQueueContext } from \"./PlaybackQueueContext_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 PlaybackQueueRequestMessage.proto.\n */\nexport const file_PlaybackQueueRequestMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiFQbGF5YmFja1F1ZXVlUmVxdWVzdE1lc3NhZ2UucHJvdG8i5AMKG1BsYXliYWNrUXVldWVSZXF1ZXN0TWVzc2FnZRIQCghsb2NhdGlvbhgBIAEoBRIOCgZsZW5ndGgYAiABKAUSFwoPaW5jbHVkZU1ldGFkYXRhGAMgASgIEhQKDGFydHdvcmtXaWR0aBgEIAEoARIVCg1hcnR3b3JrSGVpZ2h0GAUgASgBEhUKDWluY2x1ZGVMeXJpY3MYBiABKAgSFwoPaW5jbHVkZVNlY3Rpb25zGAcgASgIEhMKC2luY2x1ZGVJbmZvGAggASgIEh4KFmluY2x1ZGVMYW5ndWFnZU9wdGlvbnMYCSABKAgSJgoHY29udGV4dBgKIAEoCzIVLlBsYXliYWNrUXVldWVDb250ZXh0EhEKCXJlcXVlc3RJRBgLIAEoCRIeChZjb250ZW50SXRlbUlkZW50aWZpZXJzGAwgAygJEi8KJ3JldHVybkNvbnRlbnRJdGVtQXNzZXRzSW5Vc2VyQ29tcGxldGlvbhgNIAEoCBIfCgpwbGF5ZXJQYXRoGA4gASgLMgsuUGxheWVyUGF0aBIVCg1jYWNoaW5nUG9saWN5GA8gASgFEg0KBWxhYmVsGBAgASgJEiUKHWlzTGVnYWN5Tm93UGxheWluZ0luZm9SZXF1ZXN0GBEgASgIOnAKG3BsYXliYWNrUXVldWVSZXF1ZXN0TWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRglIAEoCzIcLlBsYXliYWNrUXVldWVSZXF1ZXN0TWVzc2FnZVIbcGxheWJhY2tRdWV1ZVJlcXVlc3RNZXNzYWdl\", [file_ProtocolMessage, file_PlaybackQueueContext, file_PlayerPath]);\n\n/**\n * @generated from message PlaybackQueueRequestMessage\n */\nexport type PlaybackQueueRequestMessage = Message<\"PlaybackQueueRequestMessage\"> & {\n /**\n * @generated from field: optional int32 location = 1;\n */\n location: number;\n\n /**\n * @generated from field: optional int32 length = 2;\n */\n length: number;\n\n /**\n * @generated from field: optional bool includeMetadata = 3;\n */\n includeMetadata: boolean;\n\n /**\n * @generated from field: optional double artworkWidth = 4;\n */\n artworkWidth: number;\n\n /**\n * @generated from field: optional double artworkHeight = 5;\n */\n artworkHeight: number;\n\n /**\n * @generated from field: optional bool includeLyrics = 6;\n */\n includeLyrics: boolean;\n\n /**\n * @generated from field: optional bool includeSections = 7;\n */\n includeSections: boolean;\n\n /**\n * @generated from field: optional bool includeInfo = 8;\n */\n includeInfo: boolean;\n\n /**\n * @generated from field: optional bool includeLanguageOptions = 9;\n */\n includeLanguageOptions: boolean;\n\n /**\n * @generated from field: optional PlaybackQueueContext context = 10;\n */\n context?: PlaybackQueueContext;\n\n /**\n * @generated from field: optional string requestID = 11;\n */\n requestID: string;\n\n /**\n * @generated from field: repeated string contentItemIdentifiers = 12;\n */\n contentItemIdentifiers: string[];\n\n /**\n * @generated from field: optional bool returnContentItemAssetsInUserCompletion = 13;\n */\n returnContentItemAssetsInUserCompletion: boolean;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 14;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional int32 cachingPolicy = 15;\n */\n cachingPolicy: number;\n\n /**\n * @generated from field: optional string label = 16;\n */\n label: string;\n\n /**\n * @generated from field: optional bool isLegacyNowPlayingInfoRequest = 17;\n */\n isLegacyNowPlayingInfoRequest: boolean;\n};\n\n/**\n * Describes the message PlaybackQueueRequestMessage.\n * Use `create(PlaybackQueueRequestMessageSchema)` to create a new message.\n */\nexport const PlaybackQueueRequestMessageSchema: GenMessage<PlaybackQueueRequestMessage> = /*@__PURE__*/\n messageDesc(file_PlaybackQueueRequestMessage, 0);\n\n/**\n * @generated from extension: optional PlaybackQueueRequestMessage playbackQueueRequestMessage = 37;\n */\nexport const playbackQueueRequestMessage: GenExtension<ProtocolMessage, PlaybackQueueRequestMessage> = /*@__PURE__*/\n extDesc(file_PlaybackQueueRequestMessage, 0);\n\n",
89
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file PlayerClientPropertiesMessage.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 PlayerClientPropertiesMessage.proto.\n */\nexport const file_PlayerClientPropertiesMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiNQbGF5ZXJDbGllbnRQcm9wZXJ0aWVzTWVzc2FnZS5wcm90byJeCh1QbGF5ZXJDbGllbnRQcm9wZXJ0aWVzTWVzc2FnZRIfCgpwbGF5ZXJQYXRoGAEgASgLMgsuUGxheWVyUGF0aBIcChRsYXN0UGxheWluZ1RpbWVzdGFtcBgCIAEoATp2Ch1wbGF5ZXJDbGllbnRQcm9wZXJ0aWVzTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRhWIAEoCzIeLlBsYXllckNsaWVudFByb3BlcnRpZXNNZXNzYWdlUh1wbGF5ZXJDbGllbnRQcm9wZXJ0aWVzTWVzc2FnZQ\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message PlayerClientPropertiesMessage\n */\nexport type PlayerClientPropertiesMessage = Message<\"PlayerClientPropertiesMessage\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional double lastPlayingTimestamp = 2;\n */\n lastPlayingTimestamp: number;\n};\n\n/**\n * Describes the message PlayerClientPropertiesMessage.\n * Use `create(PlayerClientPropertiesMessageSchema)` to create a new message.\n */\nexport const PlayerClientPropertiesMessageSchema: GenMessage<PlayerClientPropertiesMessage> = /*@__PURE__*/\n messageDesc(file_PlayerClientPropertiesMessage, 0);\n\n/**\n * @generated from extension: optional PlayerClientPropertiesMessage playerClientPropertiesMessage = 86;\n */\nexport const playerClientPropertiesMessage: GenExtension<ProtocolMessage, PlayerClientPropertiesMessage> = /*@__PURE__*/\n extDesc(file_PlayerClientPropertiesMessage, 0);\n\n",
90
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RegisterForGameControllerEventsMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RegisterForGameControllerEventsMessage.proto.\n */\nexport const file_RegisterForGameControllerEventsMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CixSZWdpc3RlckZvckdhbWVDb250cm9sbGVyRXZlbnRzTWVzc2FnZS5wcm90byK8AQomUmVnaXN0ZXJGb3JHYW1lQ29udHJvbGxlckV2ZW50c01lc3NhZ2USTgoOaW5wdXRNb2RlRmxhZ3MYASABKA4yNi5SZWdpc3RlckZvckdhbWVDb250cm9sbGVyRXZlbnRzTWVzc2FnZS5JbnB1dE1vZGVGbGFncyJCCg5JbnB1dE1vZGVGbGFncxIICgROb25lEAASCgoGTW90aW9uEAESCwoHQnV0dG9ucxACEg0KCURpZ2l0aXplchADOpEBCiZyZWdpc3RlckZvckdhbWVDb250cm9sbGVyRXZlbnRzTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgbIAEoCzInLlJlZ2lzdGVyRm9yR2FtZUNvbnRyb2xsZXJFdmVudHNNZXNzYWdlUiZyZWdpc3RlckZvckdhbWVDb250cm9sbGVyRXZlbnRzTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RegisterForGameControllerEventsMessage\n */\nexport type RegisterForGameControllerEventsMessage = Message<\"RegisterForGameControllerEventsMessage\"> & {\n /**\n * @generated from field: optional RegisterForGameControllerEventsMessage.InputModeFlags inputModeFlags = 1;\n */\n inputModeFlags: RegisterForGameControllerEventsMessage_InputModeFlags;\n};\n\n/**\n * Describes the message RegisterForGameControllerEventsMessage.\n * Use `create(RegisterForGameControllerEventsMessageSchema)` to create a new message.\n */\nexport const RegisterForGameControllerEventsMessageSchema: GenMessage<RegisterForGameControllerEventsMessage> = /*@__PURE__*/\n messageDesc(file_RegisterForGameControllerEventsMessage, 0);\n\n/**\n * @generated from enum RegisterForGameControllerEventsMessage.InputModeFlags\n */\nexport enum RegisterForGameControllerEventsMessage_InputModeFlags {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: Motion = 1;\n */\n Motion = 1,\n\n /**\n * @generated from enum value: Buttons = 2;\n */\n Buttons = 2,\n\n /**\n * @generated from enum value: Digitizer = 3;\n */\n Digitizer = 3,\n}\n\n/**\n * Describes the enum RegisterForGameControllerEventsMessage.InputModeFlags.\n */\nexport const RegisterForGameControllerEventsMessage_InputModeFlagsSchema: GenEnum<RegisterForGameControllerEventsMessage_InputModeFlags> = /*@__PURE__*/\n enumDesc(file_RegisterForGameControllerEventsMessage, 0, 0);\n\n/**\n * @generated from extension: optional RegisterForGameControllerEventsMessage registerForGameControllerEventsMessage = 27;\n */\nexport const registerForGameControllerEventsMessage: GenExtension<ProtocolMessage, RegisterForGameControllerEventsMessage> = /*@__PURE__*/\n extDesc(file_RegisterForGameControllerEventsMessage, 0);\n\n",
91
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RegisterHIDDeviceMessage.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 { VirtualTouchDeviceDescriptor } from \"./VirtualTouchDeviceDescriptorMessage_pb\";\nimport { file_VirtualTouchDeviceDescriptorMessage } from \"./VirtualTouchDeviceDescriptorMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RegisterHIDDeviceMessage.proto.\n */\nexport const file_RegisterHIDDeviceMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5SZWdpc3RlckhJRERldmljZU1lc3NhZ2UucHJvdG8iUwoYUmVnaXN0ZXJISUREZXZpY2VNZXNzYWdlEjcKEGRldmljZURlc2NyaXB0b3IYASABKAsyHS5WaXJ0dWFsVG91Y2hEZXZpY2VEZXNjcmlwdG9yOmcKGHJlZ2lzdGVySElERGV2aWNlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgLIAEoCzIZLlJlZ2lzdGVySElERGV2aWNlTWVzc2FnZVIYcmVnaXN0ZXJISUREZXZpY2VNZXNzYWdl\", [file_ProtocolMessage, file_VirtualTouchDeviceDescriptorMessage]);\n\n/**\n * @generated from message RegisterHIDDeviceMessage\n */\nexport type RegisterHIDDeviceMessage = Message<\"RegisterHIDDeviceMessage\"> & {\n /**\n * @generated from field: optional VirtualTouchDeviceDescriptor deviceDescriptor = 1;\n */\n deviceDescriptor?: VirtualTouchDeviceDescriptor;\n};\n\n/**\n * Describes the message RegisterHIDDeviceMessage.\n * Use `create(RegisterHIDDeviceMessageSchema)` to create a new message.\n */\nexport const RegisterHIDDeviceMessageSchema: GenMessage<RegisterHIDDeviceMessage> = /*@__PURE__*/\n messageDesc(file_RegisterHIDDeviceMessage, 0);\n\n/**\n * @generated from extension: optional RegisterHIDDeviceMessage registerHIDDeviceMessage = 11;\n */\nexport const registerHIDDeviceMessage: GenExtension<ProtocolMessage, RegisterHIDDeviceMessage> = /*@__PURE__*/\n extDesc(file_RegisterHIDDeviceMessage, 0);\n\n",
92
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file VirtualTouchDeviceDescriptorMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file VirtualTouchDeviceDescriptorMessage.proto.\n */\nexport const file_VirtualTouchDeviceDescriptorMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CilWaXJ0dWFsVG91Y2hEZXZpY2VEZXNjcmlwdG9yTWVzc2FnZS5wcm90byJ+ChxWaXJ0dWFsVG91Y2hEZXZpY2VEZXNjcmlwdG9yEhAKCGFic29sdXRlGAEgASgIEhkKEWludGVncmF0ZWREaXNwbGF5GAIgASgIEhcKD3NjcmVlblNpemVXaWR0aBgDIAEoAhIYChBzY3JlZW5TaXplSGVpZ2h0GAQgASgC\");\n\n/**\n * @generated from message VirtualTouchDeviceDescriptor\n */\nexport type VirtualTouchDeviceDescriptor = Message<\"VirtualTouchDeviceDescriptor\"> & {\n /**\n * @generated from field: optional bool absolute = 1;\n */\n absolute: boolean;\n\n /**\n * @generated from field: optional bool integratedDisplay = 2;\n */\n integratedDisplay: boolean;\n\n /**\n * @generated from field: optional float screenSizeWidth = 3;\n */\n screenSizeWidth: number;\n\n /**\n * @generated from field: optional float screenSizeHeight = 4;\n */\n screenSizeHeight: number;\n};\n\n/**\n * Describes the message VirtualTouchDeviceDescriptor.\n * Use `create(VirtualTouchDeviceDescriptorSchema)` to create a new message.\n */\nexport const VirtualTouchDeviceDescriptorSchema: GenMessage<VirtualTouchDeviceDescriptor> = /*@__PURE__*/\n messageDesc(file_VirtualTouchDeviceDescriptorMessage, 0);\n\n",
93
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RegisterHIDDeviceResultMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RegisterHIDDeviceResultMessage.proto.\n */\nexport const file_RegisterHIDDeviceResultMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiRSZWdpc3RlckhJRERldmljZVJlc3VsdE1lc3NhZ2UucHJvdG8iTQoeUmVnaXN0ZXJISUREZXZpY2VSZXN1bHRNZXNzYWdlEhEKCWVycm9yQ29kZRgBIAEoBRIYChBkZXZpY2VJZGVudGlmaWVyGAIgASgFOnkKHnJlZ2lzdGVySElERGV2aWNlUmVzdWx0TWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgMIAEoCzIfLlJlZ2lzdGVySElERGV2aWNlUmVzdWx0TWVzc2FnZVIecmVnaXN0ZXJISUREZXZpY2VSZXN1bHRNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RegisterHIDDeviceResultMessage\n */\nexport type RegisterHIDDeviceResultMessage = Message<\"RegisterHIDDeviceResultMessage\"> & {\n /**\n * @generated from field: optional int32 errorCode = 1;\n */\n errorCode: number;\n\n /**\n * @generated from field: optional int32 deviceIdentifier = 2;\n */\n deviceIdentifier: number;\n};\n\n/**\n * Describes the message RegisterHIDDeviceResultMessage.\n * Use `create(RegisterHIDDeviceResultMessageSchema)` to create a new message.\n */\nexport const RegisterHIDDeviceResultMessageSchema: GenMessage<RegisterHIDDeviceResultMessage> = /*@__PURE__*/\n messageDesc(file_RegisterHIDDeviceResultMessage, 0);\n\n/**\n * @generated from extension: optional RegisterHIDDeviceResultMessage registerHIDDeviceResultMessage = 12;\n */\nexport const registerHIDDeviceResultMessage: GenExtension<ProtocolMessage, RegisterHIDDeviceResultMessage> = /*@__PURE__*/\n extDesc(file_RegisterHIDDeviceResultMessage, 0);\n\n",
94
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RegisterVoiceInputDeviceMessage.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 { VoiceInputDeviceDescriptor } from \"./VoiceInputDeviceDescriptorMessage_pb\";\nimport { file_VoiceInputDeviceDescriptorMessage } from \"./VoiceInputDeviceDescriptorMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RegisterVoiceInputDeviceMessage.proto.\n */\nexport const file_RegisterVoiceInputDeviceMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiVSZWdpc3RlclZvaWNlSW5wdXREZXZpY2VNZXNzYWdlLnByb3RvIlgKH1JlZ2lzdGVyVm9pY2VJbnB1dERldmljZU1lc3NhZ2USNQoQZGV2aWNlRGVzY3JpcHRvchgBIAEoCzIbLlZvaWNlSW5wdXREZXZpY2VEZXNjcmlwdG9yOnwKH3JlZ2lzdGVyVm9pY2VJbnB1dERldmljZU1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYISABKAsyIC5SZWdpc3RlclZvaWNlSW5wdXREZXZpY2VNZXNzYWdlUh9yZWdpc3RlclZvaWNlSW5wdXREZXZpY2VNZXNzYWdl\", [file_ProtocolMessage, file_VoiceInputDeviceDescriptorMessage]);\n\n/**\n * @generated from message RegisterVoiceInputDeviceMessage\n */\nexport type RegisterVoiceInputDeviceMessage = Message<\"RegisterVoiceInputDeviceMessage\"> & {\n /**\n * @generated from field: optional VoiceInputDeviceDescriptor deviceDescriptor = 1;\n */\n deviceDescriptor?: VoiceInputDeviceDescriptor;\n};\n\n/**\n * Describes the message RegisterVoiceInputDeviceMessage.\n * Use `create(RegisterVoiceInputDeviceMessageSchema)` to create a new message.\n */\nexport const RegisterVoiceInputDeviceMessageSchema: GenMessage<RegisterVoiceInputDeviceMessage> = /*@__PURE__*/\n messageDesc(file_RegisterVoiceInputDeviceMessage, 0);\n\n/**\n * @generated from extension: optional RegisterVoiceInputDeviceMessage registerVoiceInputDeviceMessage = 33;\n */\nexport const registerVoiceInputDeviceMessage: GenExtension<ProtocolMessage, RegisterVoiceInputDeviceMessage> = /*@__PURE__*/\n extDesc(file_RegisterVoiceInputDeviceMessage, 0);\n\n",
95
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file VoiceInputDeviceDescriptorMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { AudioFormatSettings } from \"./AudioFormatSettingsMessage_pb\";\nimport { file_AudioFormatSettingsMessage } from \"./AudioFormatSettingsMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file VoiceInputDeviceDescriptorMessage.proto.\n */\nexport const file_VoiceInputDeviceDescriptorMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CidWb2ljZUlucHV0RGV2aWNlRGVzY3JpcHRvck1lc3NhZ2UucHJvdG8ieQoaVm9pY2VJbnB1dERldmljZURlc2NyaXB0b3ISKwoNZGVmYXVsdEZvcm1hdBgBIAEoCzIULkF1ZGlvRm9ybWF0U2V0dGluZ3MSLgoQc3VwcG9ydGVkRm9ybWF0cxgCIAMoCzIULkF1ZGlvRm9ybWF0U2V0dGluZ3M\", [file_AudioFormatSettingsMessage]);\n\n/**\n * @generated from message VoiceInputDeviceDescriptor\n */\nexport type VoiceInputDeviceDescriptor = Message<\"VoiceInputDeviceDescriptor\"> & {\n /**\n * @generated from field: optional AudioFormatSettings defaultFormat = 1;\n */\n defaultFormat?: AudioFormatSettings;\n\n /**\n * @generated from field: repeated AudioFormatSettings supportedFormats = 2;\n */\n supportedFormats: AudioFormatSettings[];\n};\n\n/**\n * Describes the message VoiceInputDeviceDescriptor.\n * Use `create(VoiceInputDeviceDescriptorSchema)` to create a new message.\n */\nexport const VoiceInputDeviceDescriptorSchema: GenMessage<VoiceInputDeviceDescriptor> = /*@__PURE__*/\n messageDesc(file_VoiceInputDeviceDescriptorMessage, 0);\n\n",
96
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RegisterVoiceInputDeviceResponseMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RegisterVoiceInputDeviceResponseMessage.proto.\n */\nexport const file_RegisterVoiceInputDeviceResponseMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ci1SZWdpc3RlclZvaWNlSW5wdXREZXZpY2VSZXNwb25zZU1lc3NhZ2UucHJvdG8iTgonUmVnaXN0ZXJWb2ljZUlucHV0RGV2aWNlUmVzcG9uc2VNZXNzYWdlEhAKCGRldmljZUlEGAEgASgFEhEKCWVycm9yQ29kZRgCIAEoBTqUAQoncmVnaXN0ZXJWb2ljZUlucHV0RGV2aWNlUmVzcG9uc2VNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGCIgASgLMiguUmVnaXN0ZXJWb2ljZUlucHV0RGV2aWNlUmVzcG9uc2VNZXNzYWdlUidyZWdpc3RlclZvaWNlSW5wdXREZXZpY2VSZXNwb25zZU1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RegisterVoiceInputDeviceResponseMessage\n */\nexport type RegisterVoiceInputDeviceResponseMessage = Message<\"RegisterVoiceInputDeviceResponseMessage\"> & {\n /**\n * @generated from field: optional int32 deviceID = 1;\n */\n deviceID: number;\n\n /**\n * @generated from field: optional int32 errorCode = 2;\n */\n errorCode: number;\n};\n\n/**\n * Describes the message RegisterVoiceInputDeviceResponseMessage.\n * Use `create(RegisterVoiceInputDeviceResponseMessageSchema)` to create a new message.\n */\nexport const RegisterVoiceInputDeviceResponseMessageSchema: GenMessage<RegisterVoiceInputDeviceResponseMessage> = /*@__PURE__*/\n messageDesc(file_RegisterVoiceInputDeviceResponseMessage, 0);\n\n/**\n * @generated from extension: optional RegisterVoiceInputDeviceResponseMessage registerVoiceInputDeviceResponseMessage = 34;\n */\nexport const registerVoiceInputDeviceResponseMessage: GenExtension<ProtocolMessage, RegisterVoiceInputDeviceResponseMessage> = /*@__PURE__*/\n extDesc(file_RegisterVoiceInputDeviceResponseMessage, 0);\n\n",
97
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RemoteTextInputMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RemoteTextInputMessage.proto.\n */\nexport const file_RemoteTextInputMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxSZW1vdGVUZXh0SW5wdXRNZXNzYWdlLnByb3RvIkoKFlJlbW90ZVRleHRJbnB1dE1lc3NhZ2USEQoJdGltZXN0YW1wGAEgASgBEg8KB3ZlcnNpb24YAiABKAQSDAoEZGF0YRgDIAEoDDphChZyZW1vdGVUZXh0SW5wdXRNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGEcgASgLMhcuUmVtb3RlVGV4dElucHV0TWVzc2FnZVIWcmVtb3RlVGV4dElucHV0TWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RemoteTextInputMessage\n */\nexport type RemoteTextInputMessage = Message<\"RemoteTextInputMessage\"> & {\n /**\n * @generated from field: optional double timestamp = 1;\n */\n timestamp: number;\n\n /**\n * @generated from field: optional uint64 version = 2;\n */\n version: bigint;\n\n /**\n * @generated from field: optional bytes data = 3;\n */\n data: Uint8Array;\n};\n\n/**\n * Describes the message RemoteTextInputMessage.\n * Use `create(RemoteTextInputMessageSchema)` to create a new message.\n */\nexport const RemoteTextInputMessageSchema: GenMessage<RemoteTextInputMessage> = /*@__PURE__*/\n messageDesc(file_RemoteTextInputMessage, 0);\n\n/**\n * @generated from extension: optional RemoteTextInputMessage remoteTextInputMessage = 71;\n */\nexport const remoteTextInputMessage: GenExtension<ProtocolMessage, RemoteTextInputMessage> = /*@__PURE__*/\n extDesc(file_RemoteTextInputMessage, 0);\n\n",
98
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RemoveClientMessage.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 { NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport { file_NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RemoveClientMessage.proto.\n */\nexport const file_RemoveClientMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChlSZW1vdmVDbGllbnRNZXNzYWdlLnByb3RvIjgKE1JlbW92ZUNsaWVudE1lc3NhZ2USIQoGY2xpZW50GAEgASgLMhEuTm93UGxheWluZ0NsaWVudDpYChNyZW1vdmVDbGllbnRNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDkgASgLMhQuUmVtb3ZlQ2xpZW50TWVzc2FnZVITcmVtb3ZlQ2xpZW50TWVzc2FnZQ\", [file_ProtocolMessage, file_NowPlayingClient]);\n\n/**\n * @generated from message RemoveClientMessage\n */\nexport type RemoveClientMessage = Message<\"RemoveClientMessage\"> & {\n /**\n * @generated from field: optional NowPlayingClient client = 1;\n */\n client?: NowPlayingClient;\n};\n\n/**\n * Describes the message RemoveClientMessage.\n * Use `create(RemoveClientMessageSchema)` to create a new message.\n */\nexport const RemoveClientMessageSchema: GenMessage<RemoveClientMessage> = /*@__PURE__*/\n messageDesc(file_RemoveClientMessage, 0);\n\n/**\n * @generated from extension: optional RemoveClientMessage removeClientMessage = 57;\n */\nexport const removeClientMessage: GenExtension<ProtocolMessage, RemoveClientMessage> = /*@__PURE__*/\n extDesc(file_RemoveClientMessage, 0);\n\n",
99
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RemoveEndpointsMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RemoveEndpointsMessage.proto.\n */\nexport const file_RemoveEndpointsMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxSZW1vdmVFbmRwb2ludHNNZXNzYWdlLnByb3RvIi4KFlJlbW92ZUVuZHBvaW50c01lc3NhZ2USFAoMZW5kcG9pbnRVSURzGAEgAygJOmEKFnJlbW92ZUVuZHBvaW50c01lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYVCABKAsyFy5SZW1vdmVFbmRwb2ludHNNZXNzYWdlUhZyZW1vdmVFbmRwb2ludHNNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RemoveEndpointsMessage\n */\nexport type RemoveEndpointsMessage = Message<\"RemoveEndpointsMessage\"> & {\n /**\n * @generated from field: repeated string endpointUIDs = 1;\n */\n endpointUIDs: string[];\n};\n\n/**\n * Describes the message RemoveEndpointsMessage.\n * Use `create(RemoveEndpointsMessageSchema)` to create a new message.\n */\nexport const RemoveEndpointsMessageSchema: GenMessage<RemoveEndpointsMessage> = /*@__PURE__*/\n messageDesc(file_RemoveEndpointsMessage, 0);\n\n/**\n * @generated from extension: optional RemoveEndpointsMessage removeEndpointsMessage = 84;\n */\nexport const removeEndpointsMessage: GenExtension<ProtocolMessage, RemoveEndpointsMessage> = /*@__PURE__*/\n extDesc(file_RemoveEndpointsMessage, 0);\n\n",
100
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RemoveOutputDevicesMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file RemoveOutputDevicesMessage.proto.\n */\nexport const file_RemoveOutputDevicesMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBSZW1vdmVPdXRwdXREZXZpY2VzTWVzc2FnZS5wcm90byJLChpSZW1vdmVPdXRwdXREZXZpY2VzTWVzc2FnZRIYChBvdXRwdXREZXZpY2VVSURzGAEgAygJEhMKC2VuZHBvaW50VUlEGAIgASgJOm0KGnJlbW92ZU91dHB1dERldmljZXNNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGEYgASgLMhsuUmVtb3ZlT3V0cHV0RGV2aWNlc01lc3NhZ2VSGnJlbW92ZU91dHB1dERldmljZXNNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message RemoveOutputDevicesMessage\n */\nexport type RemoveOutputDevicesMessage = Message<\"RemoveOutputDevicesMessage\"> & {\n /**\n * @generated from field: repeated string outputDeviceUIDs = 1;\n */\n outputDeviceUIDs: string[];\n\n /**\n * @generated from field: optional string endpointUID = 2;\n */\n endpointUID: string;\n};\n\n/**\n * Describes the message RemoveOutputDevicesMessage.\n * Use `create(RemoveOutputDevicesMessageSchema)` to create a new message.\n */\nexport const RemoveOutputDevicesMessageSchema: GenMessage<RemoveOutputDevicesMessage> = /*@__PURE__*/\n messageDesc(file_RemoveOutputDevicesMessage, 0);\n\n/**\n * @generated from extension: optional RemoveOutputDevicesMessage removeOutputDevicesMessage = 70;\n */\nexport const removeOutputDevicesMessage: GenExtension<ProtocolMessage, RemoveOutputDevicesMessage> = /*@__PURE__*/\n extDesc(file_RemoveOutputDevicesMessage, 0);\n\n",
101
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file RemovePlayerMessage.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 RemovePlayerMessage.proto.\n */\nexport const file_RemovePlayerMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChlSZW1vdmVQbGF5ZXJNZXNzYWdlLnByb3RvIjYKE1JlbW92ZVBsYXllck1lc3NhZ2USHwoKcGxheWVyUGF0aBgBIAEoCzILLlBsYXllclBhdGg6WAoTcmVtb3ZlUGxheWVyTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRg6IAEoCzIULlJlbW92ZVBsYXllck1lc3NhZ2VSE3JlbW92ZVBsYXllck1lc3NhZ2U\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message RemovePlayerMessage\n */\nexport type RemovePlayerMessage = Message<\"RemovePlayerMessage\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message RemovePlayerMessage.\n * Use `create(RemovePlayerMessageSchema)` to create a new message.\n */\nexport const RemovePlayerMessageSchema: GenMessage<RemovePlayerMessage> = /*@__PURE__*/\n messageDesc(file_RemovePlayerMessage, 0);\n\n/**\n * @generated from extension: optional RemovePlayerMessage removePlayerMessage = 58;\n */\nexport const removePlayerMessage: GenExtension<ProtocolMessage, RemovePlayerMessage> = /*@__PURE__*/\n extDesc(file_RemovePlayerMessage, 0);\n\n",
102
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendButtonEventMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SendButtonEventMessage.proto.\n */\nexport const file_SendButtonEventMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxTZW5kQnV0dG9uRXZlbnRNZXNzYWdlLnByb3RvIk4KFlNlbmRCdXR0b25FdmVudE1lc3NhZ2USEQoJdXNhZ2VQYWdlGAEgASgNEg0KBXVzYWdlGAIgASgNEhIKCmJ1dHRvbkRvd24YAyABKAg6YQoWc2VuZEJ1dHRvbkV2ZW50TWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgrIAEoCzIXLlNlbmRCdXR0b25FdmVudE1lc3NhZ2VSFnNlbmRCdXR0b25FdmVudE1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SendButtonEventMessage\n */\nexport type SendButtonEventMessage = Message<\"SendButtonEventMessage\"> & {\n /**\n * @generated from field: optional uint32 usagePage = 1;\n */\n usagePage: number;\n\n /**\n * @generated from field: optional uint32 usage = 2;\n */\n usage: number;\n\n /**\n * @generated from field: optional bool buttonDown = 3;\n */\n buttonDown: boolean;\n};\n\n/**\n * Describes the message SendButtonEventMessage.\n * Use `create(SendButtonEventMessageSchema)` to create a new message.\n */\nexport const SendButtonEventMessageSchema: GenMessage<SendButtonEventMessage> = /*@__PURE__*/\n messageDesc(file_SendButtonEventMessage, 0);\n\n/**\n * @generated from extension: optional SendButtonEventMessage sendButtonEventMessage = 43;\n */\nexport const sendButtonEventMessage: GenExtension<ProtocolMessage, SendButtonEventMessage> = /*@__PURE__*/\n extDesc(file_SendButtonEventMessage, 0);\n\n",
103
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendCommandMessage.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 { Command } from \"./CommandInfo_pb\";\nimport { file_CommandInfo } from \"./CommandInfo_pb\";\nimport type { CommandOptions } from \"./CommandOptions_pb\";\nimport { file_CommandOptions } from \"./CommandOptions_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 SendCommandMessage.proto.\n */\nexport const file_SendCommandMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChhTZW5kQ29tbWFuZE1lc3NhZ2UucHJvdG8icgoSU2VuZENvbW1hbmRNZXNzYWdlEhkKB2NvbW1hbmQYASABKA4yCC5Db21tYW5kEiAKB29wdGlvbnMYAiABKAsyDy5Db21tYW5kT3B0aW9ucxIfCgpwbGF5ZXJQYXRoGAMgASgLMgsuUGxheWVyUGF0aDpVChJzZW5kQ29tbWFuZE1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYBiABKAsyEy5TZW5kQ29tbWFuZE1lc3NhZ2VSEnNlbmRDb21tYW5kTWVzc2FnZQ\", [file_ProtocolMessage, file_CommandInfo, file_CommandOptions, file_PlayerPath]);\n\n/**\n * @generated from message SendCommandMessage\n */\nexport type SendCommandMessage = Message<\"SendCommandMessage\"> & {\n /**\n * @generated from field: optional Command command = 1;\n */\n command: Command;\n\n /**\n * @generated from field: optional CommandOptions options = 2;\n */\n options?: CommandOptions;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 3;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message SendCommandMessage.\n * Use `create(SendCommandMessageSchema)` to create a new message.\n */\nexport const SendCommandMessageSchema: GenMessage<SendCommandMessage> = /*@__PURE__*/\n messageDesc(file_SendCommandMessage, 0);\n\n/**\n * @generated from extension: optional SendCommandMessage sendCommandMessage = 6;\n */\nexport const sendCommandMessage: GenExtension<ProtocolMessage, SendCommandMessage> = /*@__PURE__*/\n extDesc(file_SendCommandMessage, 0);\n\n",
104
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendCommandResultMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, 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 SendCommandResultMessage.proto.\n */\nexport const file_SendCommandResultMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5TZW5kQ29tbWFuZFJlc3VsdE1lc3NhZ2UucHJvdG8i/AEKCVNlbmRFcnJvciLuAQoERW51bRILCgdOb0Vycm9yEAASFwoTQXBwbGljYXRpb25Ob3RGb3VuZBABEhQKEENvbm5lY3Rpb25GYWlsZWQQAhILCgdJZ25vcmVkEAMSHQoZQ291bGROb3RMYXVuY2hBcHBsaWNhdGlvbhAEEgwKCFRpbWVkT3V0EAUSFgoST3JpZ2luRG9lc05vdEV4aXN0EAYSEgoOSW52YWxpZE9wdGlvbnMQBxIVChFOb0NvbW1hbmRIYW5kbGVycxAIEhsKF0FwcGxpY2F0aW9uTm90SW5zdGFsbGVkEAkSEAoMTm90U3VwcG9ydGVkEAoi8wMKE0hhbmRsZXJSZXR1cm5TdGF0dXMi2wMKBEVudW0SCwoHU3VjY2VzcxAAEhEKDU5vU3VjaENvbnRlbnQQARIRCg1Db21tYW5kRmFpbGVkEAISHgoaTm9BY3Rpb25hYmxlTm93UGxheWluZ0l0ZW0QChISCg5EZXZpY2VOb3RGb3VuZBAUEg8KC1VJS2l0TGVnYWN5EAMSFAoQU2tpcEFkUHJvaGliaXRlZBBkEhYKElF1ZXVlSXNVc2VyQ3VyYXRlZBBlEh0KGVVzZXJNb2RpZmllZFF1ZXVlRGlzYWJsZWQQZhIzCi9Vc2VyUXVldWVNb2RpZmljYXRpb25Ob3RTdXBwb3J0ZWRGb3JDdXJyZW50SXRlbRBnEiYKIlN1YnNjcmlwdGlvblJlcXVpcmVkRm9yU2hhcmVkUXVldWUQaBIhCh1JbnNlcnRpb25Qb3NpdGlvbk5vdFNwZWNpZmllZBBpEhwKGEludmFsaWRJbnNlcnRpb25Qb3NpdGlvbhBqEiAKHFJlcXVlc3RQYXJhbWV0ZXJzT3V0T2ZCb3VuZHMQaxIUChBTa2lwTGltaXRSZWFjaGVkEGwSGgoVQXV0aGVudGljYXRpb25GYWlsdXJlEJEDEhwKF01lZGlhU2VydmljZVVuYXZhaWxhYmxlEPUDIvUDChVTZW5kQ29tbWFuZFN0YXR1c0NvZGUi2wMKBEVudW0SCwoHU3VjY2VzcxAAEhEKDU5vU3VjaENvbnRlbnQQARIRCg1Db21tYW5kRmFpbGVkEAISHgoaTm9BY3Rpb25hYmxlTm93UGxheWluZ0l0ZW0QChISCg5EZXZpY2VOb3RGb3VuZBAUEg8KC1VJS2l0TGVnYWN5EAMSFAoQU2tpcEFkUHJvaGliaXRlZBBkEhYKElF1ZXVlSXNVc2VyQ3VyYXRlZBBlEh0KGVVzZXJNb2RpZmllZFF1ZXVlRGlzYWJsZWQQZhIzCi9Vc2VyUXVldWVNb2RpZmljYXRpb25Ob3RTdXBwb3J0ZWRGb3JDdXJyZW50SXRlbRBnEiYKIlN1YnNjcmlwdGlvblJlcXVpcmVkRm9yU2hhcmVkUXVldWUQaBIhCh1JbnNlcnRpb25Qb3NpdGlvbk5vdFNwZWNpZmllZBBpEhwKGEludmFsaWRJbnNlcnRpb25Qb3NpdGlvbhBqEiAKHFJlcXVlc3RQYXJhbWV0ZXJzT3V0T2ZCb3VuZHMQaxIUChBTa2lwTGltaXRSZWFjaGVkEGwSGgoVQXV0aGVudGljYXRpb25GYWlsdXJlEJEDEhwKF01lZGlhU2VydmljZVVuYXZhaWxhYmxlEPUDIkMKFVNlbmRDb21tYW5kUmVzdWx0VHlwZSIqCgRFbnVtEgoKBkRpYWxvZxABEgkKBUVycm9yEAISCwoGQ3VzdG9tEOcHIqEBChdTZW5kQ29tbWFuZFJlc3VsdFN0YXR1cxIvCgpzdGF0dXNDb2RlGAEgASgOMhsuU2VuZENvbW1hbmRTdGF0dXNDb2RlLkVudW0SKQoEdHlwZRgCIAEoDjIbLlNlbmRDb21tYW5kUmVzdWx0VHlwZS5FbnVtEhIKCmN1c3RvbURhdGEYBSABKAwSFgoOY3VzdG9tRGF0YVR5cGUYBiABKAkihAEKEVNlbmRDb21tYW5kUmVzdWx0Eh8KCnBsYXllclBhdGgYASABKAsyCy5QbGF5ZXJQYXRoEiIKCXNlbmRFcnJvchgCIAEoDjIPLlNlbmRFcnJvci5FbnVtEioKCHN0YXR1c2VzGAMgAygLMhguU2VuZENvbW1hbmRSZXN1bHRTdGF0dXMi9wEKGFNlbmRDb21tYW5kUmVzdWx0TWVzc2FnZRIiCglzZW5kRXJyb3IYASABKA4yDy5TZW5kRXJyb3IuRW51bRI2ChNoYW5kbGVyUmV0dXJuU3RhdHVzGAIgASgOMhkuSGFuZGxlclJldHVyblN0YXR1cy5FbnVtEiAKGGhhbmRsZXJSZXR1cm5TdGF0dXNEYXRhcxgDIAMoDBIRCgljb21tYW5kSUQYBCABKAkSHwoKcGxheWVyUGF0aBgFIAEoCzILLlBsYXllclBhdGgSKQoNY29tbWFuZFJlc3VsdBgGIAEoCzISLlNlbmRDb21tYW5kUmVzdWx0OmcKGHNlbmRDb21tYW5kUmVzdWx0TWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgHIAEoCzIZLlNlbmRDb21tYW5kUmVzdWx0TWVzc2FnZVIYc2VuZENvbW1hbmRSZXN1bHRNZXNzYWdl\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message SendError\n */\nexport type SendError = Message<\"SendError\"> & {\n};\n\n/**\n * Describes the message SendError.\n * Use `create(SendErrorSchema)` to create a new message.\n */\nexport const SendErrorSchema: GenMessage<SendError> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 0);\n\n/**\n * @generated from enum SendError.Enum\n */\nexport enum SendError_Enum {\n /**\n * This is None in original message definitions (no-go with python)\n *\n * @generated from enum value: NoError = 0;\n */\n NoError = 0,\n\n /**\n * @generated from enum value: ApplicationNotFound = 1;\n */\n ApplicationNotFound = 1,\n\n /**\n * @generated from enum value: ConnectionFailed = 2;\n */\n ConnectionFailed = 2,\n\n /**\n * @generated from enum value: Ignored = 3;\n */\n Ignored = 3,\n\n /**\n * @generated from enum value: CouldNotLaunchApplication = 4;\n */\n CouldNotLaunchApplication = 4,\n\n /**\n * @generated from enum value: TimedOut = 5;\n */\n TimedOut = 5,\n\n /**\n * @generated from enum value: OriginDoesNotExist = 6;\n */\n OriginDoesNotExist = 6,\n\n /**\n * @generated from enum value: InvalidOptions = 7;\n */\n InvalidOptions = 7,\n\n /**\n * @generated from enum value: NoCommandHandlers = 8;\n */\n NoCommandHandlers = 8,\n\n /**\n * @generated from enum value: ApplicationNotInstalled = 9;\n */\n ApplicationNotInstalled = 9,\n\n /**\n * @generated from enum value: NotSupported = 10;\n */\n NotSupported = 10,\n}\n\n/**\n * Describes the enum SendError.Enum.\n */\nexport const SendError_EnumSchema: GenEnum<SendError_Enum> = /*@__PURE__*/\n enumDesc(file_SendCommandResultMessage, 0, 0);\n\n/**\n * @generated from message HandlerReturnStatus\n */\nexport type HandlerReturnStatus = Message<\"HandlerReturnStatus\"> & {\n};\n\n/**\n * Describes the message HandlerReturnStatus.\n * Use `create(HandlerReturnStatusSchema)` to create a new message.\n */\nexport const HandlerReturnStatusSchema: GenMessage<HandlerReturnStatus> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 1);\n\n/**\n * @generated from enum HandlerReturnStatus.Enum\n */\nexport enum HandlerReturnStatus_Enum {\n /**\n * @generated from enum value: Success = 0;\n */\n Success = 0,\n\n /**\n * @generated from enum value: NoSuchContent = 1;\n */\n NoSuchContent = 1,\n\n /**\n * @generated from enum value: CommandFailed = 2;\n */\n CommandFailed = 2,\n\n /**\n * @generated from enum value: NoActionableNowPlayingItem = 10;\n */\n NoActionableNowPlayingItem = 10,\n\n /**\n * @generated from enum value: DeviceNotFound = 20;\n */\n DeviceNotFound = 20,\n\n /**\n * @generated from enum value: UIKitLegacy = 3;\n */\n UIKitLegacy = 3,\n\n /**\n * @generated from enum value: SkipAdProhibited = 100;\n */\n SkipAdProhibited = 100,\n\n /**\n * @generated from enum value: QueueIsUserCurated = 101;\n */\n QueueIsUserCurated = 101,\n\n /**\n * @generated from enum value: UserModifiedQueueDisabled = 102;\n */\n UserModifiedQueueDisabled = 102,\n\n /**\n * @generated from enum value: UserQueueModificationNotSupportedForCurrentItem = 103;\n */\n UserQueueModificationNotSupportedForCurrentItem = 103,\n\n /**\n * @generated from enum value: SubscriptionRequiredForSharedQueue = 104;\n */\n SubscriptionRequiredForSharedQueue = 104,\n\n /**\n * @generated from enum value: InsertionPositionNotSpecified = 105;\n */\n InsertionPositionNotSpecified = 105,\n\n /**\n * @generated from enum value: InvalidInsertionPosition = 106;\n */\n InvalidInsertionPosition = 106,\n\n /**\n * @generated from enum value: RequestParametersOutOfBounds = 107;\n */\n RequestParametersOutOfBounds = 107,\n\n /**\n * @generated from enum value: SkipLimitReached = 108;\n */\n SkipLimitReached = 108,\n\n /**\n * @generated from enum value: AuthenticationFailure = 401;\n */\n AuthenticationFailure = 401,\n\n /**\n * @generated from enum value: MediaServiceUnavailable = 501;\n */\n MediaServiceUnavailable = 501,\n}\n\n/**\n * Describes the enum HandlerReturnStatus.Enum.\n */\nexport const HandlerReturnStatus_EnumSchema: GenEnum<HandlerReturnStatus_Enum> = /*@__PURE__*/\n enumDesc(file_SendCommandResultMessage, 1, 0);\n\n/**\n * @generated from message SendCommandStatusCode\n */\nexport type SendCommandStatusCode = Message<\"SendCommandStatusCode\"> & {\n};\n\n/**\n * Describes the message SendCommandStatusCode.\n * Use `create(SendCommandStatusCodeSchema)` to create a new message.\n */\nexport const SendCommandStatusCodeSchema: GenMessage<SendCommandStatusCode> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 2);\n\n/**\n * @generated from enum SendCommandStatusCode.Enum\n */\nexport enum SendCommandStatusCode_Enum {\n /**\n * @generated from enum value: Success = 0;\n */\n Success = 0,\n\n /**\n * @generated from enum value: NoSuchContent = 1;\n */\n NoSuchContent = 1,\n\n /**\n * @generated from enum value: CommandFailed = 2;\n */\n CommandFailed = 2,\n\n /**\n * @generated from enum value: NoActionableNowPlayingItem = 10;\n */\n NoActionableNowPlayingItem = 10,\n\n /**\n * @generated from enum value: DeviceNotFound = 20;\n */\n DeviceNotFound = 20,\n\n /**\n * @generated from enum value: UIKitLegacy = 3;\n */\n UIKitLegacy = 3,\n\n /**\n * @generated from enum value: SkipAdProhibited = 100;\n */\n SkipAdProhibited = 100,\n\n /**\n * @generated from enum value: QueueIsUserCurated = 101;\n */\n QueueIsUserCurated = 101,\n\n /**\n * @generated from enum value: UserModifiedQueueDisabled = 102;\n */\n UserModifiedQueueDisabled = 102,\n\n /**\n * @generated from enum value: UserQueueModificationNotSupportedForCurrentItem = 103;\n */\n UserQueueModificationNotSupportedForCurrentItem = 103,\n\n /**\n * @generated from enum value: SubscriptionRequiredForSharedQueue = 104;\n */\n SubscriptionRequiredForSharedQueue = 104,\n\n /**\n * @generated from enum value: InsertionPositionNotSpecified = 105;\n */\n InsertionPositionNotSpecified = 105,\n\n /**\n * @generated from enum value: InvalidInsertionPosition = 106;\n */\n InvalidInsertionPosition = 106,\n\n /**\n * @generated from enum value: RequestParametersOutOfBounds = 107;\n */\n RequestParametersOutOfBounds = 107,\n\n /**\n * @generated from enum value: SkipLimitReached = 108;\n */\n SkipLimitReached = 108,\n\n /**\n * @generated from enum value: AuthenticationFailure = 401;\n */\n AuthenticationFailure = 401,\n\n /**\n * @generated from enum value: MediaServiceUnavailable = 501;\n */\n MediaServiceUnavailable = 501,\n}\n\n/**\n * Describes the enum SendCommandStatusCode.Enum.\n */\nexport const SendCommandStatusCode_EnumSchema: GenEnum<SendCommandStatusCode_Enum> = /*@__PURE__*/\n enumDesc(file_SendCommandResultMessage, 2, 0);\n\n/**\n * @generated from message SendCommandResultType\n */\nexport type SendCommandResultType = Message<\"SendCommandResultType\"> & {\n};\n\n/**\n * Describes the message SendCommandResultType.\n * Use `create(SendCommandResultTypeSchema)` to create a new message.\n */\nexport const SendCommandResultTypeSchema: GenMessage<SendCommandResultType> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 3);\n\n/**\n * @generated from enum SendCommandResultType.Enum\n */\nexport enum SendCommandResultType_Enum {\n /**\n * @generated from enum value: Dialog = 1;\n */\n Dialog = 1,\n\n /**\n * @generated from enum value: Error = 2;\n */\n Error = 2,\n\n /**\n * @generated from enum value: Custom = 999;\n */\n Custom = 999,\n}\n\n/**\n * Describes the enum SendCommandResultType.Enum.\n */\nexport const SendCommandResultType_EnumSchema: GenEnum<SendCommandResultType_Enum> = /*@__PURE__*/\n enumDesc(file_SendCommandResultMessage, 3, 0);\n\n/**\n * @generated from message SendCommandResultStatus\n */\nexport type SendCommandResultStatus = Message<\"SendCommandResultStatus\"> & {\n /**\n * @generated from field: optional SendCommandStatusCode.Enum statusCode = 1;\n */\n statusCode: SendCommandStatusCode_Enum;\n\n /**\n * @generated from field: optional SendCommandResultType.Enum type = 2;\n */\n type: SendCommandResultType_Enum;\n\n /**\n * optional ... dialog = 3;\n * optional ... error = 4;\n *\n * @generated from field: optional bytes customData = 5;\n */\n customData: Uint8Array;\n\n /**\n * @generated from field: optional string customDataType = 6;\n */\n customDataType: string;\n};\n\n/**\n * Describes the message SendCommandResultStatus.\n * Use `create(SendCommandResultStatusSchema)` to create a new message.\n */\nexport const SendCommandResultStatusSchema: GenMessage<SendCommandResultStatus> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 4);\n\n/**\n * @generated from message SendCommandResult\n */\nexport type SendCommandResult = Message<\"SendCommandResult\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional SendError.Enum sendError = 2;\n */\n sendError: SendError_Enum;\n\n /**\n * @generated from field: repeated SendCommandResultStatus statuses = 3;\n */\n statuses: SendCommandResultStatus[];\n};\n\n/**\n * Describes the message SendCommandResult.\n * Use `create(SendCommandResultSchema)` to create a new message.\n */\nexport const SendCommandResultSchema: GenMessage<SendCommandResult> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 5);\n\n/**\n * @generated from message SendCommandResultMessage\n */\nexport type SendCommandResultMessage = Message<\"SendCommandResultMessage\"> & {\n /**\n * @generated from field: optional SendError.Enum sendError = 1;\n */\n sendError: SendError_Enum;\n\n /**\n * @generated from field: optional HandlerReturnStatus.Enum handlerReturnStatus = 2;\n */\n handlerReturnStatus: HandlerReturnStatus_Enum;\n\n /**\n * @generated from field: repeated bytes handlerReturnStatusDatas = 3;\n */\n handlerReturnStatusDatas: Uint8Array[];\n\n /**\n * @generated from field: optional string commandID = 4;\n */\n commandID: string;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 5;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional SendCommandResult commandResult = 6;\n */\n commandResult?: SendCommandResult;\n};\n\n/**\n * Describes the message SendCommandResultMessage.\n * Use `create(SendCommandResultMessageSchema)` to create a new message.\n */\nexport const SendCommandResultMessageSchema: GenMessage<SendCommandResultMessage> = /*@__PURE__*/\n messageDesc(file_SendCommandResultMessage, 6);\n\n/**\n * @generated from extension: optional SendCommandResultMessage sendCommandResultMessage = 7;\n */\nexport const sendCommandResultMessage: GenExtension<ProtocolMessage, SendCommandResultMessage> = /*@__PURE__*/\n extDesc(file_SendCommandResultMessage, 0);\n\n",
105
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendHIDEventMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SendHIDEventMessage.proto.\n */\nexport const file_SendHIDEventMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChlTZW5kSElERXZlbnRNZXNzYWdlLnByb3RvIisKE1NlbmRISURFdmVudE1lc3NhZ2USFAoMaGlkRXZlbnREYXRhGAEgASgMOlgKE3NlbmRISURFdmVudE1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYDSABKAsyFC5TZW5kSElERXZlbnRNZXNzYWdlUhNzZW5kSElERXZlbnRNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SendHIDEventMessage\n */\nexport type SendHIDEventMessage = Message<\"SendHIDEventMessage\"> & {\n /**\n * This data corresponds to a \"keyboardEvent\" in IOHIDEvent.h encoded as raw\n * data. Here is one source:\n *\n * https://opensource.apple.com/source/IOHIDFamily/IOHIDFamily-308/IOHIDFamily/IOHIDEvent.h.auto.html\n *\n * The interesting parts are:\n * - usagePage (UInt32)\n * - usage (Uint32)\n * - down (bool)\n *\n * The parameters usagePage and usage corresponds to the key being pressed.\n * It is mapped to the USB HID values, which can be found here:\n *\n * https://github.com/Daij-Djan/DDHidLib/blob/master/usb_hid_usages.txt\n *\n * Pressing left key would for instance map to usagePage=0x01, usage=0x8B. In\n * the hid data, these values are stored as big endian uint16 values in the\n * mentioned order. So the same example would be: 0x0001008B0001, assuming\n * down = true (key being pressed). For each key press, the same usagePage\n * and usage are sent with down=true and down=false (key down + key up).\n *\n * There is a bit of magic in the raw data that's just not decoded yet, but\n * that doesn't matter. Just use this and it will work:\n *\n * 438922cf080200000000000000000000010000000000000002000000200000000300000001000000000000<data>0000000000000001000000\n *\n * <data> corresponds to the values above, e.g. 0001008B0001. The first 8\n * bytes is a timestamp (mach AbsoluteTime). It's a bit tricky to derive but\n * tvOS seems to accept old timestamps here. So it's probably fine to send\n * anything.\n *\n * @generated from field: optional bytes hidEventData = 1;\n */\n hidEventData: Uint8Array;\n};\n\n/**\n * Describes the message SendHIDEventMessage.\n * Use `create(SendHIDEventMessageSchema)` to create a new message.\n */\nexport const SendHIDEventMessageSchema: GenMessage<SendHIDEventMessage> = /*@__PURE__*/\n messageDesc(file_SendHIDEventMessage, 0);\n\n/**\n * @generated from extension: optional SendHIDEventMessage sendHIDEventMessage = 13;\n */\nexport const sendHIDEventMessage: GenExtension<ProtocolMessage, SendHIDEventMessage> = /*@__PURE__*/\n extDesc(file_SendHIDEventMessage, 0);\n\n",
106
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendPackedVirtualTouchEventMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SendPackedVirtualTouchEventMessage.proto.\n */\nexport const file_SendPackedVirtualTouchEventMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CihTZW5kUGFja2VkVmlydHVhbFRvdWNoRXZlbnRNZXNzYWdlLnByb3RvInsKIlNlbmRQYWNrZWRWaXJ0dWFsVG91Y2hFdmVudE1lc3NhZ2USDAoEZGF0YRgBIAEoDCJHCgVQaGFzZRIJCgVCZWdhbhABEgkKBU1vdmVkEAISDgoKU3RhdGlvbmFyeRADEgkKBUVuZGVkEAQSDQoJQ2FuY2VsbGVkEAU6hQEKInNlbmRQYWNrZWRWaXJ0dWFsVG91Y2hFdmVudE1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYLyABKAsyIy5TZW5kUGFja2VkVmlydHVhbFRvdWNoRXZlbnRNZXNzYWdlUiJzZW5kUGFja2VkVmlydHVhbFRvdWNoRXZlbnRNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SendPackedVirtualTouchEventMessage\n */\nexport type SendPackedVirtualTouchEventMessage = Message<\"SendPackedVirtualTouchEventMessage\"> & {\n /**\n * The packed version of VirtualTouchEvent contains X, Y, phase, deviceID\n * and finger stored as a byte array. Each value is written as 16bit little\n * endian integers.\n *\n * @generated from field: optional bytes data = 1;\n */\n data: Uint8Array;\n};\n\n/**\n * Describes the message SendPackedVirtualTouchEventMessage.\n * Use `create(SendPackedVirtualTouchEventMessageSchema)` to create a new message.\n */\nexport const SendPackedVirtualTouchEventMessageSchema: GenMessage<SendPackedVirtualTouchEventMessage> = /*@__PURE__*/\n messageDesc(file_SendPackedVirtualTouchEventMessage, 0);\n\n/**\n * Corresponds to \"phase\" in data\n *\n * @generated from enum SendPackedVirtualTouchEventMessage.Phase\n */\nexport enum SendPackedVirtualTouchEventMessage_Phase {\n /**\n * @generated from enum value: Began = 1;\n */\n Began = 1,\n\n /**\n * @generated from enum value: Moved = 2;\n */\n Moved = 2,\n\n /**\n * @generated from enum value: Stationary = 3;\n */\n Stationary = 3,\n\n /**\n * @generated from enum value: Ended = 4;\n */\n Ended = 4,\n\n /**\n * @generated from enum value: Cancelled = 5;\n */\n Cancelled = 5,\n}\n\n/**\n * Describes the enum SendPackedVirtualTouchEventMessage.Phase.\n */\nexport const SendPackedVirtualTouchEventMessage_PhaseSchema: GenEnum<SendPackedVirtualTouchEventMessage_Phase> = /*@__PURE__*/\n enumDesc(file_SendPackedVirtualTouchEventMessage, 0, 0);\n\n/**\n * @generated from extension: optional SendPackedVirtualTouchEventMessage sendPackedVirtualTouchEventMessage = 47;\n */\nexport const sendPackedVirtualTouchEventMessage: GenExtension<ProtocolMessage, SendPackedVirtualTouchEventMessage> = /*@__PURE__*/\n extDesc(file_SendPackedVirtualTouchEventMessage, 0);\n\n",
107
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SendVoiceInputMessage.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 { AudioFormatSettings } from \"./AudioFormatSettingsMessage_pb\";\nimport { file_AudioFormatSettingsMessage } from \"./AudioFormatSettingsMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SendVoiceInputMessage.proto.\n */\nexport const file_SendVoiceInputMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChtTZW5kVm9pY2VJbnB1dE1lc3NhZ2UucHJvdG8iaQocQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbhITCgtzdGFydE9mZnNldBgBIAEoAxIeChZ2YXJpYWJsZUZyYW1lc0luUGFja2V0GAIgASgNEhQKDGRhdGFCeXRlU2l6ZRgDIAEoDSLQAQoLQXVkaW9CdWZmZXISLAoOZm9ybWF0U2V0dGluZ3MYASABKAsyFC5BdWRpb0Zvcm1hdFNldHRpbmdzEhYKDnBhY2tldENhcGFjaXR5GAIgASgDEhkKEW1heGltdW1QYWNrZXRTaXplGAMgASgDEhMKC3BhY2tldENvdW50GAQgASgDEhAKCGNvbnRlbnRzGAUgASgMEjkKEnBhY2tldERlc2NyaXB0aW9ucxgGIAMoCzIdLkF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24iMgoJQXVkaW9UaW1lEhEKCXRpbWVzdGFtcBgBIAEoARISCgpzYW1wbGVSYXRlGAIgASgBIlYKDkF1ZGlvRGF0YUJsb2NrEhwKBmJ1ZmZlchgBIAEoCzIMLkF1ZGlvQnVmZmVyEhgKBHRpbWUYAiABKAsyCi5BdWRpb1RpbWUSDAoEZ2FpbhgDIAEoASI7ChVTZW5kVm9pY2VJbnB1dE1lc3NhZ2USIgoJZGF0YUJsb2NrGAEgASgLMg8uQXVkaW9EYXRhQmxvY2s6XgoVc2VuZFZvaWNlSW5wdXRNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGCQgASgLMhYuU2VuZFZvaWNlSW5wdXRNZXNzYWdlUhVzZW5kVm9pY2VJbnB1dE1lc3NhZ2U\", [file_ProtocolMessage, file_AudioFormatSettingsMessage]);\n\n/**\n * @generated from message AudioStreamPacketDescription\n */\nexport type AudioStreamPacketDescription = Message<\"AudioStreamPacketDescription\"> & {\n /**\n * @generated from field: optional int64 startOffset = 1;\n */\n startOffset: bigint;\n\n /**\n * @generated from field: optional uint32 variableFramesInPacket = 2;\n */\n variableFramesInPacket: number;\n\n /**\n * @generated from field: optional uint32 dataByteSize = 3;\n */\n dataByteSize: number;\n};\n\n/**\n * Describes the message AudioStreamPacketDescription.\n * Use `create(AudioStreamPacketDescriptionSchema)` to create a new message.\n */\nexport const AudioStreamPacketDescriptionSchema: GenMessage<AudioStreamPacketDescription> = /*@__PURE__*/\n messageDesc(file_SendVoiceInputMessage, 0);\n\n/**\n * @generated from message AudioBuffer\n */\nexport type AudioBuffer = Message<\"AudioBuffer\"> & {\n /**\n * @generated from field: optional AudioFormatSettings formatSettings = 1;\n */\n formatSettings?: AudioFormatSettings;\n\n /**\n * @generated from field: optional int64 packetCapacity = 2;\n */\n packetCapacity: bigint;\n\n /**\n * @generated from field: optional int64 maximumPacketSize = 3;\n */\n maximumPacketSize: bigint;\n\n /**\n * @generated from field: optional int64 packetCount = 4;\n */\n packetCount: bigint;\n\n /**\n * @generated from field: optional bytes contents = 5;\n */\n contents: Uint8Array;\n\n /**\n * @generated from field: repeated AudioStreamPacketDescription packetDescriptions = 6;\n */\n packetDescriptions: AudioStreamPacketDescription[];\n};\n\n/**\n * Describes the message AudioBuffer.\n * Use `create(AudioBufferSchema)` to create a new message.\n */\nexport const AudioBufferSchema: GenMessage<AudioBuffer> = /*@__PURE__*/\n messageDesc(file_SendVoiceInputMessage, 1);\n\n/**\n * @generated from message AudioTime\n */\nexport type AudioTime = Message<\"AudioTime\"> & {\n /**\n * @generated from field: optional double timestamp = 1;\n */\n timestamp: number;\n\n /**\n * @generated from field: optional double sampleRate = 2;\n */\n sampleRate: number;\n};\n\n/**\n * Describes the message AudioTime.\n * Use `create(AudioTimeSchema)` to create a new message.\n */\nexport const AudioTimeSchema: GenMessage<AudioTime> = /*@__PURE__*/\n messageDesc(file_SendVoiceInputMessage, 2);\n\n/**\n * @generated from message AudioDataBlock\n */\nexport type AudioDataBlock = Message<\"AudioDataBlock\"> & {\n /**\n * @generated from field: optional AudioBuffer buffer = 1;\n */\n buffer?: AudioBuffer;\n\n /**\n * @generated from field: optional AudioTime time = 2;\n */\n time?: AudioTime;\n\n /**\n * @generated from field: optional double gain = 3;\n */\n gain: number;\n};\n\n/**\n * Describes the message AudioDataBlock.\n * Use `create(AudioDataBlockSchema)` to create a new message.\n */\nexport const AudioDataBlockSchema: GenMessage<AudioDataBlock> = /*@__PURE__*/\n messageDesc(file_SendVoiceInputMessage, 3);\n\n/**\n * @generated from message SendVoiceInputMessage\n */\nexport type SendVoiceInputMessage = Message<\"SendVoiceInputMessage\"> & {\n /**\n * @generated from field: optional AudioDataBlock dataBlock = 1;\n */\n dataBlock?: AudioDataBlock;\n};\n\n/**\n * Describes the message SendVoiceInputMessage.\n * Use `create(SendVoiceInputMessageSchema)` to create a new message.\n */\nexport const SendVoiceInputMessageSchema: GenMessage<SendVoiceInputMessage> = /*@__PURE__*/\n messageDesc(file_SendVoiceInputMessage, 4);\n\n/**\n * @generated from extension: optional SendVoiceInputMessage sendVoiceInputMessage = 36;\n */\nexport const sendVoiceInputMessage: GenExtension<ProtocolMessage, SendVoiceInputMessage> = /*@__PURE__*/\n extDesc(file_SendVoiceInputMessage, 0);\n\n",
108
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetArtworkMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetArtworkMessage.proto.\n */\nexport const file_SetArtworkMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChdTZXRBcnR3b3JrTWVzc2FnZS5wcm90byIlChFTZXRBcnR3b3JrTWVzc2FnZRIQCghqcGVnRGF0YRgBIAEoDDpSChFzZXRBcnR3b3JrTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgKIAEoCzISLlNldEFydHdvcmtNZXNzYWdlUhFzZXRBcnR3b3JrTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetArtworkMessage\n */\nexport type SetArtworkMessage = Message<\"SetArtworkMessage\"> & {\n /**\n * @generated from field: optional bytes jpegData = 1;\n */\n jpegData: Uint8Array;\n};\n\n/**\n * Describes the message SetArtworkMessage.\n * Use `create(SetArtworkMessageSchema)` to create a new message.\n */\nexport const SetArtworkMessageSchema: GenMessage<SetArtworkMessage> = /*@__PURE__*/\n messageDesc(file_SetArtworkMessage, 0);\n\n/**\n * @generated from extension: optional SetArtworkMessage setArtworkMessage = 10;\n */\nexport const setArtworkMessage: GenExtension<ProtocolMessage, SetArtworkMessage> = /*@__PURE__*/\n extDesc(file_SetArtworkMessage, 0);\n\n",
109
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetConnectionStateMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetConnectionStateMessage.proto.\n */\nexport const file_SetConnectionStateMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch9TZXRDb25uZWN0aW9uU3RhdGVNZXNzYWdlLnByb3RvIqQBChlTZXRDb25uZWN0aW9uU3RhdGVNZXNzYWdlEjkKBXN0YXRlGAEgASgOMiouU2V0Q29ubmVjdGlvblN0YXRlTWVzc2FnZS5Db25uZWN0aW9uU3RhdGUiTAoPQ29ubmVjdGlvblN0YXRlEggKBE5vbmUQABIOCgpDb25uZWN0aW5nEAESDQoJQ29ubmVjdGVkEAISEAoMRGlzY29ubmVjdGVkEAM6agoZc2V0Q29ubmVjdGlvblN0YXRlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgqIAEoCzIaLlNldENvbm5lY3Rpb25TdGF0ZU1lc3NhZ2VSGXNldENvbm5lY3Rpb25TdGF0ZU1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetConnectionStateMessage\n */\nexport type SetConnectionStateMessage = Message<\"SetConnectionStateMessage\"> & {\n /**\n * @generated from field: optional SetConnectionStateMessage.ConnectionState state = 1;\n */\n state: SetConnectionStateMessage_ConnectionState;\n};\n\n/**\n * Describes the message SetConnectionStateMessage.\n * Use `create(SetConnectionStateMessageSchema)` to create a new message.\n */\nexport const SetConnectionStateMessageSchema: GenMessage<SetConnectionStateMessage> = /*@__PURE__*/\n messageDesc(file_SetConnectionStateMessage, 0);\n\n/**\n * @generated from enum SetConnectionStateMessage.ConnectionState\n */\nexport enum SetConnectionStateMessage_ConnectionState {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: Connecting = 1;\n */\n Connecting = 1,\n\n /**\n * @generated from enum value: Connected = 2;\n */\n Connected = 2,\n\n /**\n * @generated from enum value: Disconnected = 3;\n */\n Disconnected = 3,\n}\n\n/**\n * Describes the enum SetConnectionStateMessage.ConnectionState.\n */\nexport const SetConnectionStateMessage_ConnectionStateSchema: GenEnum<SetConnectionStateMessage_ConnectionState> = /*@__PURE__*/\n enumDesc(file_SetConnectionStateMessage, 0, 0);\n\n/**\n * @generated from extension: optional SetConnectionStateMessage setConnectionStateMessage = 42;\n */\nexport const setConnectionStateMessage: GenExtension<ProtocolMessage, SetConnectionStateMessage> = /*@__PURE__*/\n extDesc(file_SetConnectionStateMessage, 0);\n\n",
110
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetDefaultSupportedCommandsMessage.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 { NowPlayingInfo } from \"./NowPlayingInfo_pb\";\nimport { file_NowPlayingInfo } from \"./NowPlayingInfo_pb\";\nimport type { PlaybackQueue } from \"./PlaybackQueue_pb\";\nimport { file_PlaybackQueue } from \"./PlaybackQueue_pb\";\nimport type { SupportedCommands } from \"./SupportedCommands_pb\";\nimport { file_SupportedCommands } from \"./SupportedCommands_pb\";\nimport type { PlaybackQueueCapabilities } from \"./PlaybackQueueCapabilities_pb\";\nimport { file_PlaybackQueueCapabilities } from \"./PlaybackQueueCapabilities_pb\";\nimport type { PlayerPath } from \"./PlayerPath_pb\";\nimport { file_PlayerPath } from \"./PlayerPath_pb\";\nimport type { PlaybackQueueRequestMessage } from \"./PlaybackQueueRequestMessage_pb\";\nimport { file_PlaybackQueueRequestMessage } from \"./PlaybackQueueRequestMessage_pb\";\nimport type { PlaybackState_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetDefaultSupportedCommandsMessage.proto.\n */\nexport const file_SetDefaultSupportedCommandsMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CihTZXREZWZhdWx0U3VwcG9ydGVkQ29tbWFuZHNNZXNzYWdlLnByb3RvIqYDCiJTZXREZWZhdWx0U3VwcG9ydGVkQ29tbWFuZHNNZXNzYWdlEicKDm5vd1BsYXlpbmdJbmZvGAEgASgLMg8uTm93UGxheWluZ0luZm8SLQoRc3VwcG9ydGVkQ29tbWFuZHMYAiABKAsyEi5TdXBwb3J0ZWRDb21tYW5kcxIlCg1wbGF5YmFja1F1ZXVlGAMgASgLMg4uUGxheWJhY2tRdWV1ZRIRCglkaXNwbGF5SUQYBCABKAkSEwoLZGlzcGxheU5hbWUYBSABKAkSKgoNcGxheWJhY2tTdGF0ZRgGIAEoDjITLlBsYXliYWNrU3RhdGUuRW51bRI9ChlwbGF5YmFja1F1ZXVlQ2FwYWJpbGl0aWVzGAggASgLMhouUGxheWJhY2tRdWV1ZUNhcGFiaWxpdGllcxIfCgpwbGF5ZXJQYXRoGAkgASgLMgsuUGxheWVyUGF0aBItCgdyZXF1ZXN0GAogASgLMhwuUGxheWJhY2tRdWV1ZVJlcXVlc3RNZXNzYWdlEh4KFnBsYXliYWNrU3RhdGVUaW1lc3RhbXAYCyABKAE6hQEKInNldERlZmF1bHRTdXBwb3J0ZWRDb21tYW5kc01lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYSyABKAsyIy5TZXREZWZhdWx0U3VwcG9ydGVkQ29tbWFuZHNNZXNzYWdlUiJzZXREZWZhdWx0U3VwcG9ydGVkQ29tbWFuZHNNZXNzYWdl\", [file_ProtocolMessage, file_NowPlayingInfo, file_PlaybackQueue, file_SupportedCommands, file_PlaybackQueueCapabilities, file_PlayerPath, file_PlaybackQueueRequestMessage, file_Common]);\n\n/**\n * Seems to be the same as SetStateMessage\n *\n * @generated from message SetDefaultSupportedCommandsMessage\n */\nexport type SetDefaultSupportedCommandsMessage = Message<\"SetDefaultSupportedCommandsMessage\"> & {\n /**\n * @generated from field: optional NowPlayingInfo nowPlayingInfo = 1;\n */\n nowPlayingInfo?: NowPlayingInfo;\n\n /**\n * @generated from field: optional SupportedCommands supportedCommands = 2;\n */\n supportedCommands?: SupportedCommands;\n\n /**\n * @generated from field: optional PlaybackQueue playbackQueue = 3;\n */\n playbackQueue?: PlaybackQueue;\n\n /**\n * @generated from field: optional string displayID = 4;\n */\n displayID: string;\n\n /**\n * @generated from field: optional string displayName = 5;\n */\n displayName: string;\n\n /**\n * @generated from field: optional PlaybackState.Enum playbackState = 6;\n */\n playbackState: PlaybackState_Enum;\n\n /**\n * @generated from field: optional PlaybackQueueCapabilities playbackQueueCapabilities = 8;\n */\n playbackQueueCapabilities?: PlaybackQueueCapabilities;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 9;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional PlaybackQueueRequestMessage request = 10;\n */\n request?: PlaybackQueueRequestMessage;\n\n /**\n * @generated from field: optional double playbackStateTimestamp = 11;\n */\n playbackStateTimestamp: number;\n};\n\n/**\n * Describes the message SetDefaultSupportedCommandsMessage.\n * Use `create(SetDefaultSupportedCommandsMessageSchema)` to create a new message.\n */\nexport const SetDefaultSupportedCommandsMessageSchema: GenMessage<SetDefaultSupportedCommandsMessage> = /*@__PURE__*/\n messageDesc(file_SetDefaultSupportedCommandsMessage, 0);\n\n/**\n * @generated from extension: optional SetDefaultSupportedCommandsMessage setDefaultSupportedCommandsMessage = 75;\n */\nexport const setDefaultSupportedCommandsMessage: GenExtension<ProtocolMessage, SetDefaultSupportedCommandsMessage> = /*@__PURE__*/\n extDesc(file_SetDefaultSupportedCommandsMessage, 0);\n\n",
111
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SupportedCommands.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { CommandInfo } from \"./CommandInfo_pb\";\nimport { file_CommandInfo } from \"./CommandInfo_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SupportedCommands.proto.\n */\nexport const file_SupportedCommands: GenFile = /*@__PURE__*/\n fileDesc(\"ChdTdXBwb3J0ZWRDb21tYW5kcy5wcm90byI8ChFTdXBwb3J0ZWRDb21tYW5kcxInChFzdXBwb3J0ZWRDb21tYW5kcxgBIAMoCzIMLkNvbW1hbmRJbmZv\", [file_CommandInfo]);\n\n/**\n * @generated from message SupportedCommands\n */\nexport type SupportedCommands = Message<\"SupportedCommands\"> & {\n /**\n * @generated from field: repeated CommandInfo supportedCommands = 1;\n */\n supportedCommands: CommandInfo[];\n};\n\n/**\n * Describes the message SupportedCommands.\n * Use `create(SupportedCommandsSchema)` to create a new message.\n */\nexport const SupportedCommandsSchema: GenMessage<SupportedCommands> = /*@__PURE__*/\n messageDesc(file_SupportedCommands, 0);\n\n",
112
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetDiscoveryModeMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetDiscoveryModeMessage.proto.\n */\nexport const file_SetDiscoveryModeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1TZXREaXNjb3ZlcnlNb2RlTWVzc2FnZS5wcm90byI5ChdTZXREaXNjb3ZlcnlNb2RlTWVzc2FnZRIMCgRtb2RlGAEgASgFEhAKCGZlYXR1cmVzGAIgASgFOmQKF3NldERpc2NvdmVyeU1vZGVNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGFIgASgLMhguU2V0RGlzY292ZXJ5TW9kZU1lc3NhZ2VSF3NldERpc2NvdmVyeU1vZGVNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetDiscoveryModeMessage\n */\nexport type SetDiscoveryModeMessage = Message<\"SetDiscoveryModeMessage\"> & {\n /**\n * @generated from field: optional int32 mode = 1;\n */\n mode: number;\n\n /**\n * @generated from field: optional int32 features = 2;\n */\n features: number;\n};\n\n/**\n * Describes the message SetDiscoveryModeMessage.\n * Use `create(SetDiscoveryModeMessageSchema)` to create a new message.\n */\nexport const SetDiscoveryModeMessageSchema: GenMessage<SetDiscoveryModeMessage> = /*@__PURE__*/\n messageDesc(file_SetDiscoveryModeMessage, 0);\n\n/**\n * @generated from extension: optional SetDiscoveryModeMessage setDiscoveryModeMessage = 82;\n */\nexport const setDiscoveryModeMessage: GenExtension<ProtocolMessage, SetDiscoveryModeMessage> = /*@__PURE__*/\n extDesc(file_SetDiscoveryModeMessage, 0);\n\n",
113
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetHiliteModeMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetHiliteModeMessage.proto.\n */\nexport const file_SetHiliteModeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChpTZXRIaWxpdGVNb2RlTWVzc2FnZS5wcm90byIqChRTZXRIaWxpdGVNb2RlTWVzc2FnZRISCgpoaWxpdGVNb2RlGAEgASgFOlsKFHNldEhpbGl0ZU1vZGVNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGCwgASgLMhUuU2V0SGlsaXRlTW9kZU1lc3NhZ2VSFHNldEhpbGl0ZU1vZGVNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetHiliteModeMessage\n */\nexport type SetHiliteModeMessage = Message<\"SetHiliteModeMessage\"> & {\n /**\n * @generated from field: optional int32 hiliteMode = 1;\n */\n hiliteMode: number;\n};\n\n/**\n * Describes the message SetHiliteModeMessage.\n * Use `create(SetHiliteModeMessageSchema)` to create a new message.\n */\nexport const SetHiliteModeMessageSchema: GenMessage<SetHiliteModeMessage> = /*@__PURE__*/\n messageDesc(file_SetHiliteModeMessage, 0);\n\n/**\n * @generated from extension: optional SetHiliteModeMessage setHiliteModeMessage = 44;\n */\nexport const setHiliteModeMessage: GenExtension<ProtocolMessage, SetHiliteModeMessage> = /*@__PURE__*/\n extDesc(file_SetHiliteModeMessage, 0);\n\n",
114
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetNowPlayingClientMessage.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 { NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport { file_NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetNowPlayingClientMessage.proto.\n */\nexport const file_SetNowPlayingClientMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBTZXROb3dQbGF5aW5nQ2xpZW50TWVzc2FnZS5wcm90byI/ChpTZXROb3dQbGF5aW5nQ2xpZW50TWVzc2FnZRIhCgZjbGllbnQYASABKAsyES5Ob3dQbGF5aW5nQ2xpZW50Om0KGnNldE5vd1BsYXlpbmdDbGllbnRNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDIgASgLMhsuU2V0Tm93UGxheWluZ0NsaWVudE1lc3NhZ2VSGnNldE5vd1BsYXlpbmdDbGllbnRNZXNzYWdl\", [file_ProtocolMessage, file_NowPlayingClient]);\n\n/**\n * @generated from message SetNowPlayingClientMessage\n */\nexport type SetNowPlayingClientMessage = Message<\"SetNowPlayingClientMessage\"> & {\n /**\n * @generated from field: optional NowPlayingClient client = 1;\n */\n client?: NowPlayingClient;\n};\n\n/**\n * Describes the message SetNowPlayingClientMessage.\n * Use `create(SetNowPlayingClientMessageSchema)` to create a new message.\n */\nexport const SetNowPlayingClientMessageSchema: GenMessage<SetNowPlayingClientMessage> = /*@__PURE__*/\n messageDesc(file_SetNowPlayingClientMessage, 0);\n\n/**\n * @generated from extension: optional SetNowPlayingClientMessage setNowPlayingClientMessage = 50;\n */\nexport const setNowPlayingClientMessage: GenExtension<ProtocolMessage, SetNowPlayingClientMessage> = /*@__PURE__*/\n extDesc(file_SetNowPlayingClientMessage, 0);\n\n",
115
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetNowPlayingPlayerMessage.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 SetNowPlayingPlayerMessage.proto.\n */\nexport const file_SetNowPlayingPlayerMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiBTZXROb3dQbGF5aW5nUGxheWVyTWVzc2FnZS5wcm90byI9ChpTZXROb3dQbGF5aW5nUGxheWVyTWVzc2FnZRIfCgpwbGF5ZXJQYXRoGAEgASgLMgsuUGxheWVyUGF0aDptChpzZXROb3dQbGF5aW5nUGxheWVyTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgzIAEoCzIbLlNldE5vd1BsYXlpbmdQbGF5ZXJNZXNzYWdlUhpzZXROb3dQbGF5aW5nUGxheWVyTWVzc2FnZQ\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message SetNowPlayingPlayerMessage\n */\nexport type SetNowPlayingPlayerMessage = Message<\"SetNowPlayingPlayerMessage\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message SetNowPlayingPlayerMessage.\n * Use `create(SetNowPlayingPlayerMessageSchema)` to create a new message.\n */\nexport const SetNowPlayingPlayerMessageSchema: GenMessage<SetNowPlayingPlayerMessage> = /*@__PURE__*/\n messageDesc(file_SetNowPlayingPlayerMessage, 0);\n\n/**\n * @generated from extension: optional SetNowPlayingPlayerMessage setNowPlayingPlayerMessage = 51;\n */\nexport const setNowPlayingPlayerMessage: GenExtension<ProtocolMessage, SetNowPlayingPlayerMessage> = /*@__PURE__*/\n extDesc(file_SetNowPlayingPlayerMessage, 0);\n\n",
116
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetRecordingStateMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetRecordingStateMessage.proto.\n */\nexport const file_SetRecordingStateMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5TZXRSZWNvcmRpbmdTdGF0ZU1lc3NhZ2UucHJvdG8ikwEKGFNldFJlY29yZGluZ1N0YXRlTWVzc2FnZRI3CgVzdGF0ZRgBIAEoDjIoLlNldFJlY29yZGluZ1N0YXRlTWVzc2FnZS5SZWNvcmRpbmdTdGF0ZSI+Cg5SZWNvcmRpbmdTdGF0ZRILCgdVbmtub3duEAASDQoJUmVjb3JkaW5nEAESEAoMTm90UmVjb3JkaW5nEAI6ZwoYc2V0UmVjb3JkaW5nU3RhdGVNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGCMgASgLMhkuU2V0UmVjb3JkaW5nU3RhdGVNZXNzYWdlUhhzZXRSZWNvcmRpbmdTdGF0ZU1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetRecordingStateMessage\n */\nexport type SetRecordingStateMessage = Message<\"SetRecordingStateMessage\"> & {\n /**\n * @generated from field: optional SetRecordingStateMessage.RecordingState state = 1;\n */\n state: SetRecordingStateMessage_RecordingState;\n};\n\n/**\n * Describes the message SetRecordingStateMessage.\n * Use `create(SetRecordingStateMessageSchema)` to create a new message.\n */\nexport const SetRecordingStateMessageSchema: GenMessage<SetRecordingStateMessage> = /*@__PURE__*/\n messageDesc(file_SetRecordingStateMessage, 0);\n\n/**\n * @generated from enum SetRecordingStateMessage.RecordingState\n */\nexport enum SetRecordingStateMessage_RecordingState {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Recording = 1;\n */\n Recording = 1,\n\n /**\n * @generated from enum value: NotRecording = 2;\n */\n NotRecording = 2,\n}\n\n/**\n * Describes the enum SetRecordingStateMessage.RecordingState.\n */\nexport const SetRecordingStateMessage_RecordingStateSchema: GenEnum<SetRecordingStateMessage_RecordingState> = /*@__PURE__*/\n enumDesc(file_SetRecordingStateMessage, 0, 0);\n\n/**\n * @generated from extension: optional SetRecordingStateMessage setRecordingStateMessage = 35;\n */\nexport const setRecordingStateMessage: GenExtension<ProtocolMessage, SetRecordingStateMessage> = /*@__PURE__*/\n extDesc(file_SetRecordingStateMessage, 0);\n\n",
117
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetStateMessage.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 { NowPlayingInfo } from \"./NowPlayingInfo_pb\";\nimport { file_NowPlayingInfo } from \"./NowPlayingInfo_pb\";\nimport type { PlaybackQueue } from \"./PlaybackQueue_pb\";\nimport { file_PlaybackQueue } from \"./PlaybackQueue_pb\";\nimport type { SupportedCommands } from \"./SupportedCommands_pb\";\nimport { file_SupportedCommands } from \"./SupportedCommands_pb\";\nimport type { PlaybackQueueCapabilities } from \"./PlaybackQueueCapabilities_pb\";\nimport { file_PlaybackQueueCapabilities } from \"./PlaybackQueueCapabilities_pb\";\nimport type { PlayerPath } from \"./PlayerPath_pb\";\nimport { file_PlayerPath } from \"./PlayerPath_pb\";\nimport type { PlaybackQueueRequestMessage } from \"./PlaybackQueueRequestMessage_pb\";\nimport { file_PlaybackQueueRequestMessage } from \"./PlaybackQueueRequestMessage_pb\";\nimport type { PlaybackState_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetStateMessage.proto.\n */\nexport const file_SetStateMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChVTZXRTdGF0ZU1lc3NhZ2UucHJvdG8ikwMKD1NldFN0YXRlTWVzc2FnZRInCg5ub3dQbGF5aW5nSW5mbxgBIAEoCzIPLk5vd1BsYXlpbmdJbmZvEi0KEXN1cHBvcnRlZENvbW1hbmRzGAIgASgLMhIuU3VwcG9ydGVkQ29tbWFuZHMSJQoNcGxheWJhY2tRdWV1ZRgDIAEoCzIOLlBsYXliYWNrUXVldWUSEQoJZGlzcGxheUlEGAQgASgJEhMKC2Rpc3BsYXlOYW1lGAUgASgJEioKDXBsYXliYWNrU3RhdGUYBiABKA4yEy5QbGF5YmFja1N0YXRlLkVudW0SPQoZcGxheWJhY2tRdWV1ZUNhcGFiaWxpdGllcxgIIAEoCzIaLlBsYXliYWNrUXVldWVDYXBhYmlsaXRpZXMSHwoKcGxheWVyUGF0aBgJIAEoCzILLlBsYXllclBhdGgSLQoHcmVxdWVzdBgKIAEoCzIcLlBsYXliYWNrUXVldWVSZXF1ZXN0TWVzc2FnZRIeChZwbGF5YmFja1N0YXRlVGltZXN0YW1wGAsgASgBOkwKD3NldFN0YXRlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgJIAEoCzIQLlNldFN0YXRlTWVzc2FnZVIPc2V0U3RhdGVNZXNzYWdl\", [file_ProtocolMessage, file_NowPlayingInfo, file_PlaybackQueue, file_SupportedCommands, file_PlaybackQueueCapabilities, file_PlayerPath, file_PlaybackQueueRequestMessage, file_Common]);\n\n/**\n * @generated from message SetStateMessage\n */\nexport type SetStateMessage = Message<\"SetStateMessage\"> & {\n /**\n * @generated from field: optional NowPlayingInfo nowPlayingInfo = 1;\n */\n nowPlayingInfo?: NowPlayingInfo;\n\n /**\n * @generated from field: optional SupportedCommands supportedCommands = 2;\n */\n supportedCommands?: SupportedCommands;\n\n /**\n * @generated from field: optional PlaybackQueue playbackQueue = 3;\n */\n playbackQueue?: PlaybackQueue;\n\n /**\n * @generated from field: optional string displayID = 4;\n */\n displayID: string;\n\n /**\n * @generated from field: optional string displayName = 5;\n */\n displayName: string;\n\n /**\n * @generated from field: optional PlaybackState.Enum playbackState = 6;\n */\n playbackState: PlaybackState_Enum;\n\n /**\n * @generated from field: optional PlaybackQueueCapabilities playbackQueueCapabilities = 8;\n */\n playbackQueueCapabilities?: PlaybackQueueCapabilities;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 9;\n */\n playerPath?: PlayerPath;\n\n /**\n * @generated from field: optional PlaybackQueueRequestMessage request = 10;\n */\n request?: PlaybackQueueRequestMessage;\n\n /**\n * @generated from field: optional double playbackStateTimestamp = 11;\n */\n playbackStateTimestamp: number;\n};\n\n/**\n * Describes the message SetStateMessage.\n * Use `create(SetStateMessageSchema)` to create a new message.\n */\nexport const SetStateMessageSchema: GenMessage<SetStateMessage> = /*@__PURE__*/\n messageDesc(file_SetStateMessage, 0);\n\n/**\n * @generated from extension: optional SetStateMessage setStateMessage = 9;\n */\nexport const setStateMessage: GenExtension<ProtocolMessage, SetStateMessage> = /*@__PURE__*/\n extDesc(file_SetStateMessage, 0);\n\n",
118
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file SetVolumeMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file SetVolumeMessage.proto.\n */\nexport const file_SetVolumeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChZTZXRWb2x1bWVNZXNzYWdlLnByb3RvIjsKEFNldFZvbHVtZU1lc3NhZ2USDgoGdm9sdW1lGAEgASgCEhcKD291dHB1dERldmljZVVJRBgCIAEoCTpPChBzZXRWb2x1bWVNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDcgASgLMhEuU2V0Vm9sdW1lTWVzc2FnZVIQc2V0Vm9sdW1lTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message SetVolumeMessage\n */\nexport type SetVolumeMessage = Message<\"SetVolumeMessage\"> & {\n /**\n * @generated from field: optional float volume = 1;\n */\n volume: number;\n\n /**\n * @generated from field: optional string outputDeviceUID = 2;\n */\n outputDeviceUID: string;\n};\n\n/**\n * Describes the message SetVolumeMessage.\n * Use `create(SetVolumeMessageSchema)` to create a new message.\n */\nexport const SetVolumeMessageSchema: GenMessage<SetVolumeMessage> = /*@__PURE__*/\n messageDesc(file_SetVolumeMessage, 0);\n\n/**\n * @generated from extension: optional SetVolumeMessage setVolumeMessage = 55;\n */\nexport const setVolumeMessage: GenExtension<ProtocolMessage, SetVolumeMessage> = /*@__PURE__*/\n extDesc(file_SetVolumeMessage, 0);\n\n",
119
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file TextInputMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file TextInputMessage.proto.\n */\nexport const file_TextInputMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChZUZXh0SW5wdXRNZXNzYWdlLnByb3RvIlMKCkFjdGlvblR5cGUiRQoERW51bRILCgdVbmtub3duEAASCgoGSW5zZXJ0EAESBwoDU2V0EAISCgoGRGVsZXRlEAMSDwoLQ2xlYXJBY3Rpb24QBCJZChBUZXh0SW5wdXRNZXNzYWdlEhEKCXRpbWVzdGFtcBgBIAEoARIMCgR0ZXh0GAIgASgJEiQKCmFjdGlvblR5cGUYAyABKA4yEC5BY3Rpb25UeXBlLkVudW06TwoQdGV4dElucHV0TWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgeIAEoCzIRLlRleHRJbnB1dE1lc3NhZ2VSEHRleHRJbnB1dE1lc3NhZ2U\", [file_ProtocolMessage]);\n\n/**\n * @generated from message ActionType\n */\nexport type ActionType = Message<\"ActionType\"> & {\n};\n\n/**\n * Describes the message ActionType.\n * Use `create(ActionTypeSchema)` to create a new message.\n */\nexport const ActionTypeSchema: GenMessage<ActionType> = /*@__PURE__*/\n messageDesc(file_TextInputMessage, 0);\n\n/**\n * @generated from enum ActionType.Enum\n */\nexport enum ActionType_Enum {\n /**\n * @generated from enum value: Unknown = 0;\n */\n Unknown = 0,\n\n /**\n * @generated from enum value: Insert = 1;\n */\n Insert = 1,\n\n /**\n * @generated from enum value: Set = 2;\n */\n Set = 2,\n\n /**\n * @generated from enum value: Delete = 3;\n */\n Delete = 3,\n\n /**\n * \"Clear\" clashes with something, making mypy unhappy \n *\n * @generated from enum value: ClearAction = 4;\n */\n ClearAction = 4,\n}\n\n/**\n * Describes the enum ActionType.Enum.\n */\nexport const ActionType_EnumSchema: GenEnum<ActionType_Enum> = /*@__PURE__*/\n enumDesc(file_TextInputMessage, 0, 0);\n\n/**\n * @generated from message TextInputMessage\n */\nexport type TextInputMessage = Message<\"TextInputMessage\"> & {\n /**\n * @generated from field: optional double timestamp = 1;\n */\n timestamp: number;\n\n /**\n * @generated from field: optional string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: optional ActionType.Enum actionType = 3;\n */\n actionType: ActionType_Enum;\n};\n\n/**\n * Describes the message TextInputMessage.\n * Use `create(TextInputMessageSchema)` to create a new message.\n */\nexport const TextInputMessageSchema: GenMessage<TextInputMessage> = /*@__PURE__*/\n messageDesc(file_TextInputMessage, 1);\n\n/**\n * @generated from extension: optional TextInputMessage textInputMessage = 30;\n */\nexport const textInputMessage: GenExtension<ProtocolMessage, TextInputMessage> = /*@__PURE__*/\n extDesc(file_TextInputMessage, 0);\n\n",
120
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file TransactionKey.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file TransactionKey.proto.\n */\nexport const file_TransactionKey: GenFile = /*@__PURE__*/\n fileDesc(\"ChRUcmFuc2FjdGlvbktleS5wcm90byI2Cg5UcmFuc2FjdGlvbktleRISCgppZGVudGlmaWVyGAEgASgJEhAKCHVzZXJEYXRhGAIgASgM\");\n\n/**\n * @generated from message TransactionKey\n */\nexport type TransactionKey = Message<\"TransactionKey\"> & {\n /**\n * @generated from field: optional string identifier = 1;\n */\n identifier: string;\n\n /**\n * @generated from field: optional bytes userData = 2;\n */\n userData: Uint8Array;\n};\n\n/**\n * Describes the message TransactionKey.\n * Use `create(TransactionKeySchema)` to create a new message.\n */\nexport const TransactionKeySchema: GenMessage<TransactionKey> = /*@__PURE__*/\n messageDesc(file_TransactionKey, 0);\n\n",
121
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file TransactionMessage.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 { TransactionPackets } from \"./TransactionPackets_pb\";\nimport { file_TransactionPackets } from \"./TransactionPackets_pb\";\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 TransactionMessage.proto.\n */\nexport const file_TransactionMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChhUcmFuc2FjdGlvbk1lc3NhZ2UucHJvdG8iaQoSVHJhbnNhY3Rpb25NZXNzYWdlEgwKBG5hbWUYASABKAQSJAoHcGFja2V0cxgCIAEoCzITLlRyYW5zYWN0aW9uUGFja2V0cxIfCgpwbGF5ZXJQYXRoGAMgASgLMgsuUGxheWVyUGF0aDpVChJ0cmFuc2FjdGlvbk1lc3NhZ2USEC5Qcm90b2NvbE1lc3NhZ2UYJiABKAsyEy5UcmFuc2FjdGlvbk1lc3NhZ2VSEnRyYW5zYWN0aW9uTWVzc2FnZQ\", [file_TransactionPackets, file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message TransactionMessage\n */\nexport type TransactionMessage = Message<\"TransactionMessage\"> & {\n /**\n * @generated from field: optional uint64 name = 1;\n */\n name: bigint;\n\n /**\n * @generated from field: optional TransactionPackets packets = 2;\n */\n packets?: TransactionPackets;\n\n /**\n * @generated from field: optional PlayerPath playerPath = 3;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message TransactionMessage.\n * Use `create(TransactionMessageSchema)` to create a new message.\n */\nexport const TransactionMessageSchema: GenMessage<TransactionMessage> = /*@__PURE__*/\n messageDesc(file_TransactionMessage, 0);\n\n/**\n * @generated from extension: optional TransactionMessage transactionMessage = 38;\n */\nexport const transactionMessage: GenExtension<ProtocolMessage, TransactionMessage> = /*@__PURE__*/\n extDesc(file_TransactionMessage, 0);\n\n",
122
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file TransactionPackets.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { TransactionPacket } from \"./TransactionPacket_pb\";\nimport { file_TransactionPacket } from \"./TransactionPacket_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file TransactionPackets.proto.\n */\nexport const file_TransactionPackets: GenFile = /*@__PURE__*/\n fileDesc(\"ChhUcmFuc2FjdGlvblBhY2tldHMucHJvdG8iOQoSVHJhbnNhY3Rpb25QYWNrZXRzEiMKB3BhY2tldHMYASADKAsyEi5UcmFuc2FjdGlvblBhY2tldA\", [file_TransactionPacket]);\n\n/**\n * @generated from message TransactionPackets\n */\nexport type TransactionPackets = Message<\"TransactionPackets\"> & {\n /**\n * @generated from field: repeated TransactionPacket packets = 1;\n */\n packets: TransactionPacket[];\n};\n\n/**\n * Describes the message TransactionPackets.\n * Use `create(TransactionPacketsSchema)` to create a new message.\n */\nexport const TransactionPacketsSchema: GenMessage<TransactionPackets> = /*@__PURE__*/\n messageDesc(file_TransactionPackets, 0);\n\n",
123
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file TransactionPacket.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { TransactionKey } from \"./TransactionKey_pb\";\nimport { file_TransactionKey } from \"./TransactionKey_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file TransactionPacket.proto.\n */\nexport const file_TransactionPacket: GenFile = /*@__PURE__*/\n fileDesc(\"ChdUcmFuc2FjdGlvblBhY2tldC5wcm90byKKAQoRVHJhbnNhY3Rpb25QYWNrZXQSHAoDa2V5GAEgASgLMg8uVHJhbnNhY3Rpb25LZXkSEgoKcGFja2V0RGF0YRgCIAEoDBISCgppZGVudGlmaWVyGAMgASgJEhMKC3RvdGFsTGVuZ3RoGAQgASgEEhoKEnRvdGFsV3JpdGVQb3NpdGlvbhgFIAEoBA\", [file_TransactionKey]);\n\n/**\n * @generated from message TransactionPacket\n */\nexport type TransactionPacket = Message<\"TransactionPacket\"> & {\n /**\n * @generated from field: optional TransactionKey key = 1;\n */\n key?: TransactionKey;\n\n /**\n * @generated from field: optional bytes packetData = 2;\n */\n packetData: Uint8Array;\n\n /**\n * @generated from field: optional string identifier = 3;\n */\n identifier: string;\n\n /**\n * @generated from field: optional uint64 totalLength = 4;\n */\n totalLength: bigint;\n\n /**\n * @generated from field: optional uint64 totalWritePosition = 5;\n */\n totalWritePosition: bigint;\n};\n\n/**\n * Describes the message TransactionPacket.\n * Use `create(TransactionPacketSchema)` to create a new message.\n */\nexport const TransactionPacketSchema: GenMessage<TransactionPacket> = /*@__PURE__*/\n messageDesc(file_TransactionPacket, 0);\n\n",
124
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdateClientMessage.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 { NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport { file_NowPlayingClient } from \"./NowPlayingClient_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file UpdateClientMessage.proto.\n */\nexport const file_UpdateClientMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChlVcGRhdGVDbGllbnRNZXNzYWdlLnByb3RvIjgKE1VwZGF0ZUNsaWVudE1lc3NhZ2USIQoGY2xpZW50GAEgASgLMhEuTm93UGxheWluZ0NsaWVudDpYChN1cGRhdGVDbGllbnRNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDsgASgLMhQuVXBkYXRlQ2xpZW50TWVzc2FnZVITdXBkYXRlQ2xpZW50TWVzc2FnZQ\", [file_ProtocolMessage, file_NowPlayingClient]);\n\n/**\n * @generated from message UpdateClientMessage\n */\nexport type UpdateClientMessage = Message<\"UpdateClientMessage\"> & {\n /**\n * @generated from field: optional NowPlayingClient client = 1;\n */\n client?: NowPlayingClient;\n};\n\n/**\n * Describes the message UpdateClientMessage.\n * Use `create(UpdateClientMessageSchema)` to create a new message.\n */\nexport const UpdateClientMessageSchema: GenMessage<UpdateClientMessage> = /*@__PURE__*/\n messageDesc(file_UpdateClientMessage, 0);\n\n/**\n * @generated from extension: optional UpdateClientMessage updateClientMessage = 59;\n */\nexport const updateClientMessage: GenExtension<ProtocolMessage, UpdateClientMessage> = /*@__PURE__*/\n extDesc(file_UpdateClientMessage, 0);\n\n",
125
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdateContentItemArtworkMessage.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 { ContentItem } from \"./ContentItem_pb\";\nimport { file_ContentItem } from \"./ContentItem_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 UpdateContentItemArtworkMessage.proto.\n */\nexport const file_UpdateContentItemArtworkMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiVVcGRhdGVDb250ZW50SXRlbUFydHdvcmtNZXNzYWdlLnByb3RvImYKH1VwZGF0ZUNvbnRlbnRJdGVtQXJ0d29ya01lc3NhZ2USIgoMY29udGVudEl0ZW1zGAEgAygLMgwuQ29udGVudEl0ZW0SHwoKcGxheWVyUGF0aBgCIAEoCzILLlBsYXllclBhdGg6fAofdXBkYXRlQ29udGVudEl0ZW1BcnR3b3JrTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRg9IAEoCzIgLlVwZGF0ZUNvbnRlbnRJdGVtQXJ0d29ya01lc3NhZ2VSH3VwZGF0ZUNvbnRlbnRJdGVtQXJ0d29ya01lc3NhZ2U\", [file_ProtocolMessage, file_ContentItem, file_PlayerPath]);\n\n/**\n * @generated from message UpdateContentItemArtworkMessage\n */\nexport type UpdateContentItemArtworkMessage = Message<\"UpdateContentItemArtworkMessage\"> & {\n /**\n * @generated from field: repeated ContentItem contentItems = 1;\n */\n contentItems: ContentItem[];\n\n /**\n * @generated from field: optional PlayerPath playerPath = 2;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message UpdateContentItemArtworkMessage.\n * Use `create(UpdateContentItemArtworkMessageSchema)` to create a new message.\n */\nexport const UpdateContentItemArtworkMessageSchema: GenMessage<UpdateContentItemArtworkMessage> = /*@__PURE__*/\n messageDesc(file_UpdateContentItemArtworkMessage, 0);\n\n/**\n * @generated from extension: optional UpdateContentItemArtworkMessage updateContentItemArtworkMessage = 61;\n */\nexport const updateContentItemArtworkMessage: GenExtension<ProtocolMessage, UpdateContentItemArtworkMessage> = /*@__PURE__*/\n extDesc(file_UpdateContentItemArtworkMessage, 0);\n\n",
126
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdateContentItemMessage.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 { ContentItem } from \"./ContentItem_pb\";\nimport { file_ContentItem } from \"./ContentItem_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 UpdateContentItemMessage.proto.\n */\nexport const file_UpdateContentItemMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5VcGRhdGVDb250ZW50SXRlbU1lc3NhZ2UucHJvdG8iXwoYVXBkYXRlQ29udGVudEl0ZW1NZXNzYWdlEiIKDGNvbnRlbnRJdGVtcxgBIAMoCzIMLkNvbnRlbnRJdGVtEh8KCnBsYXllclBhdGgYAiABKAsyCy5QbGF5ZXJQYXRoOmcKGHVwZGF0ZUNvbnRlbnRJdGVtTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRg8IAEoCzIZLlVwZGF0ZUNvbnRlbnRJdGVtTWVzc2FnZVIYdXBkYXRlQ29udGVudEl0ZW1NZXNzYWdl\", [file_ProtocolMessage, file_ContentItem, file_PlayerPath]);\n\n/**\n * @generated from message UpdateContentItemMessage\n */\nexport type UpdateContentItemMessage = Message<\"UpdateContentItemMessage\"> & {\n /**\n * @generated from field: repeated ContentItem contentItems = 1;\n */\n contentItems: ContentItem[];\n\n /**\n * @generated from field: optional PlayerPath playerPath = 2;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message UpdateContentItemMessage.\n * Use `create(UpdateContentItemMessageSchema)` to create a new message.\n */\nexport const UpdateContentItemMessageSchema: GenMessage<UpdateContentItemMessage> = /*@__PURE__*/\n messageDesc(file_UpdateContentItemMessage, 0);\n\n/**\n * @generated from extension: optional UpdateContentItemMessage updateContentItemMessage = 60;\n */\nexport const updateContentItemMessage: GenExtension<ProtocolMessage, UpdateContentItemMessage> = /*@__PURE__*/\n extDesc(file_UpdateContentItemMessage, 0);\n\n",
127
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdateEndPointsMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file UpdateEndPointsMessage.proto.\n */\nexport const file_UpdateEndPointsMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxVcGRhdGVFbmRQb2ludHNNZXNzYWdlLnByb3RvIskBChRBVkVuZHBvaW50RGVzY3JpcHRvchIMCgRuYW1lGAEgASgJEhgKEHVuaXF1ZUlkZW50aWZpZXIYAiABKAkSFwoPaXNMb2NhbEVuZHBvaW50GAUgASgIEhoKEmluc3RhbmNlSWRlbnRpZmllchgGIAEoCRIaChJpc1Byb3h5R3JvdXBQbGF5ZXIYByABKAgSFgoOY29ubmVjdGlvblR5cGUYCCABKAUSIAoYY2FuTW9kaWZ5R3JvdXBNZW1iZXJzaGlwGAkgASgIIlwKFlVwZGF0ZUVuZFBvaW50c01lc3NhZ2USKAoJZW5kcG9pbnRzGAEgASgLMhUuQVZFbmRwb2ludERlc2NyaXB0b3ISGAoQZW5kcG9pbnRGZWF0dXJlcxgCIAEoBTphChZ1cGRhdGVFbmRQb2ludHNNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGFMgASgLMhcuVXBkYXRlRW5kUG9pbnRzTWVzc2FnZVIWdXBkYXRlRW5kUG9pbnRzTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message AVEndpointDescriptor\n */\nexport type AVEndpointDescriptor = Message<\"AVEndpointDescriptor\"> & {\n /**\n * @generated from field: optional string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: optional string uniqueIdentifier = 2;\n */\n uniqueIdentifier: string;\n\n /**\n * repeated ... outputDevices = 3;\n * optional ... designatedGroupLeader = 4;\n *\n * @generated from field: optional bool isLocalEndpoint = 5;\n */\n isLocalEndpoint: boolean;\n\n /**\n * @generated from field: optional string instanceIdentifier = 6;\n */\n instanceIdentifier: string;\n\n /**\n * @generated from field: optional bool isProxyGroupPlayer = 7;\n */\n isProxyGroupPlayer: boolean;\n\n /**\n * @generated from field: optional int32 connectionType = 8;\n */\n connectionType: number;\n\n /**\n * repeated ... _personalOutputDevices = 10;\n *\n * @generated from field: optional bool canModifyGroupMembership = 9;\n */\n canModifyGroupMembership: boolean;\n};\n\n/**\n * Describes the message AVEndpointDescriptor.\n * Use `create(AVEndpointDescriptorSchema)` to create a new message.\n */\nexport const AVEndpointDescriptorSchema: GenMessage<AVEndpointDescriptor> = /*@__PURE__*/\n messageDesc(file_UpdateEndPointsMessage, 0);\n\n/**\n * @generated from message UpdateEndPointsMessage\n */\nexport type UpdateEndPointsMessage = Message<\"UpdateEndPointsMessage\"> & {\n /**\n * @generated from field: optional AVEndpointDescriptor endpoints = 1;\n */\n endpoints?: AVEndpointDescriptor;\n\n /**\n * @generated from field: optional int32 endpointFeatures = 2;\n */\n endpointFeatures: number;\n};\n\n/**\n * Describes the message UpdateEndPointsMessage.\n * Use `create(UpdateEndPointsMessageSchema)` to create a new message.\n */\nexport const UpdateEndPointsMessageSchema: GenMessage<UpdateEndPointsMessage> = /*@__PURE__*/\n messageDesc(file_UpdateEndPointsMessage, 1);\n\n/**\n * @generated from extension: optional UpdateEndPointsMessage updateEndPointsMessage = 83;\n */\nexport const updateEndPointsMessage: GenExtension<ProtocolMessage, UpdateEndPointsMessage> = /*@__PURE__*/\n extDesc(file_UpdateEndPointsMessage, 0);\n\n",
128
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdateOutputDeviceMessage.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 { DeviceSubType_Enum, DeviceType_Enum } from \"./Common_pb\";\nimport { file_Common } from \"./Common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file UpdateOutputDeviceMessage.proto.\n */\nexport const file_UpdateOutputDeviceMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch9VcGRhdGVPdXRwdXREZXZpY2VNZXNzYWdlLnByb3RvIlUKGEFWT3V0cHV0RGV2aWNlU291cmNlSW5mbxIZChFyb3V0aW5nQ29udGV4dFVJRBgBIAEoCRIeChZtdWx0aXBsZUJ1aWx0SW5EZXZpY2VzGAIgASgIIvUPChhBVk91dHB1dERldmljZURlc2NyaXB0b3ISDAoEbmFtZRgBIAEoCRIYChB1bmlxdWVJZGVudGlmaWVyGAIgASgJEg8KB2dyb3VwSUQYAyABKAkSDwoHbW9kZWxJRBgEIAEoCRISCgptYWNBZGRyZXNzGAUgASgMEh0KFWNhbkFjY2Vzc1JlbW90ZUFzc2V0cxgGIAEoCBIcChRpc1JlbW90ZUNvbnRyb2xsYWJsZRgHIAEoCBIVCg1pc0dyb3VwTGVhZGVyGAggASgIEhMKC2lzR3JvdXBhYmxlGAkgASgIEiQKCmRldmljZVR5cGUYCiABKA4yEC5EZXZpY2VUeXBlLkVudW0SKgoNZGV2aWNlU3ViVHlwZRgLIAEoDjITLkRldmljZVN1YlR5cGUuRW51bRIdChVtb2RlbFNwZWNpZmljSW5mb0RhdGEYDCABKAwSFAoMYmF0dGVyeUxldmVsGA0gASgCEhUKDWlzTG9jYWxEZXZpY2UYDiABKAgSHgoWc3VwcG9ydHNFeHRlcm5hbFNjcmVlbhgPIAEoCBIdChVyZXF1aXJlc0F1dGhvcml6YXRpb24YECABKAgSKAogc2hvdWxkRm9yY2VSZW1vdGVDb250cm9sYWJpbGxpdHkYESABKAgSLQoKc291cmNlSW5mbxgSIAEoCzIZLkFWT3V0cHV0RGV2aWNlU291cmNlSW5mbxIZChFpc0RldmljZUdyb3VwYWJsZRgTIAEoCBIkChxjYW5SZWxheUNvbW11bmljYXRpb25DaGFubmVsGBQgASgIEhcKD2xvZ2ljYWxEZXZpY2VJRBgVIAEoCRIaChJpc1Byb3h5R3JvdXBQbGF5ZXIYFiABKAgSFwoPZmlybXdhcmVWZXJzaW9uGBcgASgJEg4KBnZvbHVtZRgYIAEoAhIgChhpc1ZvbHVtZUNvbnRyb2xBdmFpbGFibGUYGSABKAgSGwoTY2FuQWNjZXNzQXBwbGVNdXNpYxgaIAEoCBIjChtjYW5BY2Nlc3NpQ2xvdWRNdXNpY0xpYnJhcnkYGyABKAgSIAoYZ3JvdXBDb250YWluc0dyb3VwTGVhZGVyGBwgASgIEh8KF3N1cHBvcnRzQnVmZmVyZWRBaXJQbGF5GB0gASgIEjEKKWNhblBsYXlFbmNyeXB0ZWRQcm9ncmVzc2l2ZURvd25sb2FkQXNzZXRzGB4gASgIEiMKG2NhbkZldGNoTWVkaWFEYXRhRnJvbVNlbmRlchgfIAEoCBJGCj5yZXNlbnRzT3B0aW1pemVkVXNlckludGVyZmFjZVdoZW5QbGF5aW5nRmV0Y2hlZEF1ZGlvT25seUFzc2V0cxggIAEoCBImCh5pc0FpclBsYXlSZWNlaXZlclNlc3Npb25BY3RpdmUYISABKAgSHQoVcGFyZW50R3JvdXBJZGVudGlmaWVyGCIgASgJEi0KJXBhcmVudEdyb3VwQ29udGFpbnNEaXNjb3ZlcmFibGVMZWFkZXIYIyABKAgSGAoQaXNBZGRlZFRvSG9tZUtpdBgkIAEoCBIaChJ2b2x1bWVDYXBhYmlsaXRpZXMYJSABKAUSEwoLYmx1ZXRvb3RoSUQYJiABKAkSEwoLc3VwcG9ydHNIQVAYJyABKAgSGQoRdXNpbmdKU09OUHJvdG9jb2wYKCABKAgSNgoTY2x1c3RlckNvbXBvc2l0aW9ucxgpIAMoCzIZLkFWT3V0cHV0RGV2aWNlRGVzY3JpcHRvchITCgtjbHVzdGVyVHlwZRgqIAEoDRISCgpwcmltYXJ5VUlEGCsgASgJEh0KFWNvbmZpZ3VyZWRDbHVzdGVyU2l6ZRgsIAEoDRItCiVzdXBwb3J0c1JhcHBvcnRSZW1vdGVDb250cm9sVHJhbnNwb3J0GC0gASgIEiUKHWN1cnJlbnRCbHVldG9vdGhMaXN0ZW5pbmdNb2RlGC4gASgJEigKIGF2YWlsYWJsZUJsdWV0b290aExpc3RlbmluZ01vZGVzGC8gAygJEhsKE3N1cHBvcnRzTXVsdGlwbGF5ZXIYMCADKAgSIAoYcHJvZHVjZXNMb3dGaWRlbGl0eUF1ZGlvGDEgASgIEhcKD2hvc3REZXZpY2VDbGFzcxgyIAEoBRIWCg5haXJQbGF5R3JvdXBJRBgzIAEoCRIgChhzdXBwb3J0c1NoYXJlUGxheUhhbmRvZmYYNCABKAgSEAoIZGlzdGFuY2UYNSABKAISHQoVZGlzY292ZXJlZE9uU2FtZUluZnJhGDYgASgIEjoKF2FjdGl2YXRlZENsdXN0ZXJNZW1iZXJzGDcgAygLMhkuQVZPdXRwdXREZXZpY2VEZXNjcmlwdG9yEhAKCHBpY2thYmxlGDggAygIEhUKDXRyYW5zcG9ydFR5cGUYOSABKAUSEQoJY2x1c3RlcklEGDogASgJEhcKD2lzQ2x1c3RlckxlYWRlchg7IAEoCBIYChBpc0FwcGxlQWNjZXNzb3J5GDwgASgIEh4KFnBhcmVudFVuaXF1ZUlkZW50aWZpZXIYPSABKAkSDgoGcm9vbUlEGD4gASgJEhAKCHJvb21OYW1lGD8gASgJEjQKEWFsbENsdXN0ZXJNZW1iZXJzGEAgAygLMhkuQVZPdXRwdXREZXZpY2VEZXNjcmlwdG9yEh8KF2VuZ2FnZU9uQ2x1c3RlckFjdGl2YXRlGEMgASgIIqABChlVcGRhdGVPdXRwdXREZXZpY2VNZXNzYWdlEjAKDW91dHB1dERldmljZXMYASADKAsyGS5BVk91dHB1dERldmljZURlc2NyaXB0b3ISEwoLZW5kcG9pbnRVSUQYAiABKAkSPAoZY2x1c3RlckF3YXJlT3V0cHV0RGV2aWNlcxgDIAMoCzIZLkFWT3V0cHV0RGV2aWNlRGVzY3JpcHRvcjpqChl1cGRhdGVPdXRwdXREZXZpY2VNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGEUgASgLMhouVXBkYXRlT3V0cHV0RGV2aWNlTWVzc2FnZVIZdXBkYXRlT3V0cHV0RGV2aWNlTWVzc2FnZQ\", [file_ProtocolMessage, file_Common]);\n\n/**\n * @generated from message AVOutputDeviceSourceInfo\n */\nexport type AVOutputDeviceSourceInfo = Message<\"AVOutputDeviceSourceInfo\"> & {\n /**\n * @generated from field: optional string routingContextUID = 1;\n */\n routingContextUID: string;\n\n /**\n * @generated from field: optional bool multipleBuiltInDevices = 2;\n */\n multipleBuiltInDevices: boolean;\n};\n\n/**\n * Describes the message AVOutputDeviceSourceInfo.\n * Use `create(AVOutputDeviceSourceInfoSchema)` to create a new message.\n */\nexport const AVOutputDeviceSourceInfoSchema: GenMessage<AVOutputDeviceSourceInfo> = /*@__PURE__*/\n messageDesc(file_UpdateOutputDeviceMessage, 0);\n\n/**\n * @generated from message AVOutputDeviceDescriptor\n */\nexport type AVOutputDeviceDescriptor = Message<\"AVOutputDeviceDescriptor\"> & {\n /**\n * @generated from field: optional string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: optional string uniqueIdentifier = 2;\n */\n uniqueIdentifier: string;\n\n /**\n * @generated from field: optional string groupID = 3;\n */\n groupID: string;\n\n /**\n * @generated from field: optional string modelID = 4;\n */\n modelID: string;\n\n /**\n * @generated from field: optional bytes macAddress = 5;\n */\n macAddress: Uint8Array;\n\n /**\n * @generated from field: optional bool canAccessRemoteAssets = 6;\n */\n canAccessRemoteAssets: boolean;\n\n /**\n * @generated from field: optional bool isRemoteControllable = 7;\n */\n isRemoteControllable: boolean;\n\n /**\n * @generated from field: optional bool isGroupLeader = 8;\n */\n isGroupLeader: boolean;\n\n /**\n * @generated from field: optional bool isGroupable = 9;\n */\n isGroupable: boolean;\n\n /**\n * @generated from field: optional DeviceType.Enum deviceType = 10;\n */\n deviceType: DeviceType_Enum;\n\n /**\n * @generated from field: optional DeviceSubType.Enum deviceSubType = 11;\n */\n deviceSubType: DeviceSubType_Enum;\n\n /**\n * @generated from field: optional bytes modelSpecificInfoData = 12;\n */\n modelSpecificInfoData: Uint8Array;\n\n /**\n * @generated from field: optional float batteryLevel = 13;\n */\n batteryLevel: number;\n\n /**\n * @generated from field: optional bool isLocalDevice = 14;\n */\n isLocalDevice: boolean;\n\n /**\n * @generated from field: optional bool supportsExternalScreen = 15;\n */\n supportsExternalScreen: boolean;\n\n /**\n * @generated from field: optional bool requiresAuthorization = 16;\n */\n requiresAuthorization: boolean;\n\n /**\n * @generated from field: optional bool shouldForceRemoteControlabillity = 17;\n */\n shouldForceRemoteControlabillity: boolean;\n\n /**\n * @generated from field: optional AVOutputDeviceSourceInfo sourceInfo = 18;\n */\n sourceInfo?: AVOutputDeviceSourceInfo;\n\n /**\n * @generated from field: optional bool isDeviceGroupable = 19;\n */\n isDeviceGroupable: boolean;\n\n /**\n * @generated from field: optional bool canRelayCommunicationChannel = 20;\n */\n canRelayCommunicationChannel: boolean;\n\n /**\n * @generated from field: optional string logicalDeviceID = 21;\n */\n logicalDeviceID: string;\n\n /**\n * @generated from field: optional bool isProxyGroupPlayer = 22;\n */\n isProxyGroupPlayer: boolean;\n\n /**\n * @generated from field: optional string firmwareVersion = 23;\n */\n firmwareVersion: string;\n\n /**\n * @generated from field: optional float volume = 24;\n */\n volume: number;\n\n /**\n * @generated from field: optional bool isVolumeControlAvailable = 25;\n */\n isVolumeControlAvailable: boolean;\n\n /**\n * @generated from field: optional bool canAccessAppleMusic = 26;\n */\n canAccessAppleMusic: boolean;\n\n /**\n * @generated from field: optional bool canAccessiCloudMusicLibrary = 27;\n */\n canAccessiCloudMusicLibrary: boolean;\n\n /**\n * @generated from field: optional bool groupContainsGroupLeader = 28;\n */\n groupContainsGroupLeader: boolean;\n\n /**\n * @generated from field: optional bool supportsBufferedAirPlay = 29;\n */\n supportsBufferedAirPlay: boolean;\n\n /**\n * @generated from field: optional bool canPlayEncryptedProgressiveDownloadAssets = 30;\n */\n canPlayEncryptedProgressiveDownloadAssets: boolean;\n\n /**\n * @generated from field: optional bool canFetchMediaDataFromSender = 31;\n */\n canFetchMediaDataFromSender: boolean;\n\n /**\n * @generated from field: optional bool resentsOptimizedUserInterfaceWhenPlayingFetchedAudioOnlyAssets = 32;\n */\n resentsOptimizedUserInterfaceWhenPlayingFetchedAudioOnlyAssets: boolean;\n\n /**\n * @generated from field: optional bool isAirPlayReceiverSessionActive = 33;\n */\n isAirPlayReceiverSessionActive: boolean;\n\n /**\n * @generated from field: optional string parentGroupIdentifier = 34;\n */\n parentGroupIdentifier: string;\n\n /**\n * @generated from field: optional bool parentGroupContainsDiscoverableLeader = 35;\n */\n parentGroupContainsDiscoverableLeader: boolean;\n\n /**\n * @generated from field: optional bool isAddedToHomeKit = 36;\n */\n isAddedToHomeKit: boolean;\n\n /**\n * @generated from field: optional int32 volumeCapabilities = 37;\n */\n volumeCapabilities: number;\n\n /**\n * @generated from field: optional string bluetoothID = 38;\n */\n bluetoothID: string;\n\n /**\n * @generated from field: optional bool supportsHAP = 39;\n */\n supportsHAP: boolean;\n\n /**\n * @generated from field: optional bool usingJSONProtocol = 40;\n */\n usingJSONProtocol: boolean;\n\n /**\n * @generated from field: repeated AVOutputDeviceDescriptor clusterCompositions = 41;\n */\n clusterCompositions: AVOutputDeviceDescriptor[];\n\n /**\n * @generated from field: optional uint32 clusterType = 42;\n */\n clusterType: number;\n\n /**\n * @generated from field: optional string primaryUID = 43;\n */\n primaryUID: string;\n\n /**\n * @generated from field: optional uint32 configuredClusterSize = 44;\n */\n configuredClusterSize: number;\n\n /**\n * @generated from field: optional bool supportsRapportRemoteControlTransport = 45;\n */\n supportsRapportRemoteControlTransport: boolean;\n\n /**\n * @generated from field: optional string currentBluetoothListeningMode = 46;\n */\n currentBluetoothListeningMode: string;\n\n /**\n * @generated from field: repeated string availableBluetoothListeningModes = 47;\n */\n availableBluetoothListeningModes: string[];\n\n /**\n * @generated from field: repeated bool supportsMultiplayer = 48;\n */\n supportsMultiplayer: boolean[];\n\n /**\n * @generated from field: optional bool producesLowFidelityAudio = 49;\n */\n producesLowFidelityAudio: boolean;\n\n /**\n * @generated from field: optional int32 hostDeviceClass = 50;\n */\n hostDeviceClass: number;\n\n /**\n * @generated from field: optional string airPlayGroupID = 51;\n */\n airPlayGroupID: string;\n\n /**\n * @generated from field: optional bool supportsSharePlayHandoff = 52;\n */\n supportsSharePlayHandoff: boolean;\n\n /**\n * @generated from field: optional float distance = 53;\n */\n distance: number;\n\n /**\n * @generated from field: optional bool discoveredOnSameInfra = 54;\n */\n discoveredOnSameInfra: boolean;\n\n /**\n * @generated from field: repeated AVOutputDeviceDescriptor activatedClusterMembers = 55;\n */\n activatedClusterMembers: AVOutputDeviceDescriptor[];\n\n /**\n * @generated from field: repeated bool pickable = 56;\n */\n pickable: boolean[];\n\n /**\n * @generated from field: optional int32 transportType = 57;\n */\n transportType: number;\n\n /**\n * @generated from field: optional string clusterID = 58;\n */\n clusterID: string;\n\n /**\n * @generated from field: optional bool isClusterLeader = 59;\n */\n isClusterLeader: boolean;\n\n /**\n * @generated from field: optional bool isAppleAccessory = 60;\n */\n isAppleAccessory: boolean;\n\n /**\n * @generated from field: optional string parentUniqueIdentifier = 61;\n */\n parentUniqueIdentifier: string;\n\n /**\n * @generated from field: optional string roomID = 62;\n */\n roomID: string;\n\n /**\n * @generated from field: optional string roomName = 63;\n */\n roomName: string;\n\n /**\n * @generated from field: repeated AVOutputDeviceDescriptor allClusterMembers = 64;\n */\n allClusterMembers: AVOutputDeviceDescriptor[];\n\n /**\n * @generated from field: optional bool engageOnClusterActivate = 67;\n */\n engageOnClusterActivate: boolean;\n};\n\n/**\n * Describes the message AVOutputDeviceDescriptor.\n * Use `create(AVOutputDeviceDescriptorSchema)` to create a new message.\n */\nexport const AVOutputDeviceDescriptorSchema: GenMessage<AVOutputDeviceDescriptor> = /*@__PURE__*/\n messageDesc(file_UpdateOutputDeviceMessage, 1);\n\n/**\n * @generated from message UpdateOutputDeviceMessage\n */\nexport type UpdateOutputDeviceMessage = Message<\"UpdateOutputDeviceMessage\"> & {\n /**\n * @generated from field: repeated AVOutputDeviceDescriptor outputDevices = 1;\n */\n outputDevices: AVOutputDeviceDescriptor[];\n\n /**\n * @generated from field: optional string endpointUID = 2;\n */\n endpointUID: string;\n\n /**\n * @generated from field: repeated AVOutputDeviceDescriptor clusterAwareOutputDevices = 3;\n */\n clusterAwareOutputDevices: AVOutputDeviceDescriptor[];\n};\n\n/**\n * Describes the message UpdateOutputDeviceMessage.\n * Use `create(UpdateOutputDeviceMessageSchema)` to create a new message.\n */\nexport const UpdateOutputDeviceMessageSchema: GenMessage<UpdateOutputDeviceMessage> = /*@__PURE__*/\n messageDesc(file_UpdateOutputDeviceMessage, 2);\n\n/**\n * @generated from extension: optional UpdateOutputDeviceMessage updateOutputDeviceMessage = 69;\n */\nexport const updateOutputDeviceMessage: GenExtension<ProtocolMessage, UpdateOutputDeviceMessage> = /*@__PURE__*/\n extDesc(file_UpdateOutputDeviceMessage, 0);\n\n",
129
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file UpdatePlayerPath.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 UpdatePlayerPath.proto.\n */\nexport const file_UpdatePlayerPath: GenFile = /*@__PURE__*/\n fileDesc(\"ChZVcGRhdGVQbGF5ZXJQYXRoLnByb3RvIjYKE1VwZGF0ZVBsYXllck1lc3NhZ2USHwoKcGxheWVyUGF0aBgBIAEoCzILLlBsYXllclBhdGg6WAoTdXBkYXRlUGxheWVyTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRg+IAEoCzIULlVwZGF0ZVBsYXllck1lc3NhZ2VSE3VwZGF0ZVBsYXllck1lc3NhZ2U\", [file_ProtocolMessage, file_PlayerPath]);\n\n/**\n * @generated from message UpdatePlayerMessage\n */\nexport type UpdatePlayerMessage = Message<\"UpdatePlayerMessage\"> & {\n /**\n * @generated from field: optional PlayerPath playerPath = 1;\n */\n playerPath?: PlayerPath;\n};\n\n/**\n * Describes the message UpdatePlayerMessage.\n * Use `create(UpdatePlayerMessageSchema)` to create a new message.\n */\nexport const UpdatePlayerMessageSchema: GenMessage<UpdatePlayerMessage> = /*@__PURE__*/\n messageDesc(file_UpdatePlayerPath, 0);\n\n/**\n * @generated from extension: optional UpdatePlayerMessage updatePlayerMessage = 62;\n */\nexport const updatePlayerMessage: GenExtension<ProtocolMessage, UpdatePlayerMessage> = /*@__PURE__*/\n extDesc(file_UpdatePlayerPath, 0);\n\n",
130
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file VolumeControlAvailabilityMessage.proto (syntax proto2)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport { file_ProtocolMessage } from \"./ProtocolMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file VolumeControlAvailabilityMessage.proto.\n */\nexport const file_VolumeControlAvailabilityMessage: GenFile = /*@__PURE__*/\n fileDesc(\"CiZWb2x1bWVDb250cm9sQXZhaWxhYmlsaXR5TWVzc2FnZS5wcm90byJMChJWb2x1bWVDYXBhYmlsaXRpZXMiNgoERW51bRIICgROb25lEAASDAoIUmVsYXRpdmUQARIMCghBYnNvbHV0ZRACEggKBEJvdGgQAyJ4CiBWb2x1bWVDb250cm9sQXZhaWxhYmlsaXR5TWVzc2FnZRIeChZ2b2x1bWVDb250cm9sQXZhaWxhYmxlGAEgASgIEjQKEnZvbHVtZUNhcGFiaWxpdGllcxgCIAEoDjIYLlZvbHVtZUNhcGFiaWxpdGllcy5FbnVtOn8KIHZvbHVtZUNvbnRyb2xBdmFpbGFiaWxpdHlNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGBYgASgLMiEuVm9sdW1lQ29udHJvbEF2YWlsYWJpbGl0eU1lc3NhZ2VSIHZvbHVtZUNvbnRyb2xBdmFpbGFiaWxpdHlNZXNzYWdl\", [file_ProtocolMessage]);\n\n/**\n * @generated from message VolumeCapabilities\n */\nexport type VolumeCapabilities = Message<\"VolumeCapabilities\"> & {\n};\n\n/**\n * Describes the message VolumeCapabilities.\n * Use `create(VolumeCapabilitiesSchema)` to create a new message.\n */\nexport const VolumeCapabilitiesSchema: GenMessage<VolumeCapabilities> = /*@__PURE__*/\n messageDesc(file_VolumeControlAvailabilityMessage, 0);\n\n/**\n * This is really a bitmap but protobuf has no type for that, so lets just add a \"Both\"\n * option since only two values exist anyway\n *\n * @generated from enum VolumeCapabilities.Enum\n */\nexport enum VolumeCapabilities_Enum {\n /**\n * @generated from enum value: None = 0;\n */\n None = 0,\n\n /**\n * @generated from enum value: Relative = 1;\n */\n Relative = 1,\n\n /**\n * @generated from enum value: Absolute = 2;\n */\n Absolute = 2,\n\n /**\n * @generated from enum value: Both = 3;\n */\n Both = 3,\n}\n\n/**\n * Describes the enum VolumeCapabilities.Enum.\n */\nexport const VolumeCapabilities_EnumSchema: GenEnum<VolumeCapabilities_Enum> = /*@__PURE__*/\n enumDesc(file_VolumeControlAvailabilityMessage, 0, 0);\n\n/**\n * @generated from message VolumeControlAvailabilityMessage\n */\nexport type VolumeControlAvailabilityMessage = Message<\"VolumeControlAvailabilityMessage\"> & {\n /**\n * @generated from field: optional bool volumeControlAvailable = 1;\n */\n volumeControlAvailable: boolean;\n\n /**\n * @generated from field: optional VolumeCapabilities.Enum volumeCapabilities = 2;\n */\n volumeCapabilities: VolumeCapabilities_Enum;\n};\n\n/**\n * Describes the message VolumeControlAvailabilityMessage.\n * Use `create(VolumeControlAvailabilityMessageSchema)` to create a new message.\n */\nexport const VolumeControlAvailabilityMessageSchema: GenMessage<VolumeControlAvailabilityMessage> = /*@__PURE__*/\n messageDesc(file_VolumeControlAvailabilityMessage, 1);\n\n/**\n * @generated from extension: optional VolumeControlAvailabilityMessage volumeControlAvailabilityMessage = 22;\n */\nexport const volumeControlAvailabilityMessage: GenExtension<ProtocolMessage, VolumeControlAvailabilityMessage> = /*@__PURE__*/\n extDesc(file_VolumeControlAvailabilityMessage, 0);\n\n",
131
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file VolumeControlCapabilitiesDidChangeMessage.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 { VolumeControlAvailabilityMessage } from \"./VolumeControlAvailabilityMessage_pb\";\nimport { file_VolumeControlAvailabilityMessage } from \"./VolumeControlAvailabilityMessage_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file VolumeControlCapabilitiesDidChangeMessage.proto.\n */\nexport const file_VolumeControlCapabilitiesDidChangeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"Ci9Wb2x1bWVDb250cm9sQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlTWVzc2FnZS5wcm90byKSAQopVm9sdW1lQ29udHJvbENhcGFiaWxpdGllc0RpZENoYW5nZU1lc3NhZ2USNwoMY2FwYWJpbGl0aWVzGAEgASgLMiEuVm9sdW1lQ29udHJvbEF2YWlsYWJpbGl0eU1lc3NhZ2USEwoLZW5kcG9pbnRVSUQYAyABKAkSFwoPb3V0cHV0RGV2aWNlVUlEGAQgASgJOpoBCil2b2x1bWVDb250cm9sQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRhEIAEoCzIqLlZvbHVtZUNvbnRyb2xDYXBhYmlsaXRpZXNEaWRDaGFuZ2VNZXNzYWdlUil2b2x1bWVDb250cm9sQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlTWVzc2FnZQ\", [file_ProtocolMessage, file_VolumeControlAvailabilityMessage]);\n\n/**\n * @generated from message VolumeControlCapabilitiesDidChangeMessage\n */\nexport type VolumeControlCapabilitiesDidChangeMessage = Message<\"VolumeControlCapabilitiesDidChangeMessage\"> & {\n /**\n * @generated from field: optional VolumeControlAvailabilityMessage capabilities = 1;\n */\n capabilities?: VolumeControlAvailabilityMessage;\n\n /**\n * @generated from field: optional string endpointUID = 3;\n */\n endpointUID: string;\n\n /**\n * @generated from field: optional string outputDeviceUID = 4;\n */\n outputDeviceUID: string;\n};\n\n/**\n * Describes the message VolumeControlCapabilitiesDidChangeMessage.\n * Use `create(VolumeControlCapabilitiesDidChangeMessageSchema)` to create a new message.\n */\nexport const VolumeControlCapabilitiesDidChangeMessageSchema: GenMessage<VolumeControlCapabilitiesDidChangeMessage> = /*@__PURE__*/\n messageDesc(file_VolumeControlCapabilitiesDidChangeMessage, 0);\n\n/**\n * @generated from extension: optional VolumeControlCapabilitiesDidChangeMessage volumeControlCapabilitiesDidChangeMessage = 68;\n */\nexport const volumeControlCapabilitiesDidChangeMessage: GenExtension<ProtocolMessage, VolumeControlCapabilitiesDidChangeMessage> = /*@__PURE__*/\n extDesc(file_VolumeControlCapabilitiesDidChangeMessage, 0);\n\n",
132
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file VolumeDidChangeMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file VolumeDidChangeMessage.proto.\n */\nexport const file_VolumeDidChangeMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChxWb2x1bWVEaWRDaGFuZ2VNZXNzYWdlLnByb3RvIlYKFlZvbHVtZURpZENoYW5nZU1lc3NhZ2USDgoGdm9sdW1lGAEgASgCEhMKC2VuZHBvaW50VUlEGAIgASgJEhcKD291dHB1dERldmljZVVJRBgDIAEoCTphChZ2b2x1bWVEaWRDaGFuZ2VNZXNzYWdlEhAuUHJvdG9jb2xNZXNzYWdlGDggASgLMhcuVm9sdW1lRGlkQ2hhbmdlTWVzc2FnZVIWdm9sdW1lRGlkQ2hhbmdlTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message VolumeDidChangeMessage\n */\nexport type VolumeDidChangeMessage = Message<\"VolumeDidChangeMessage\"> & {\n /**\n * @generated from field: optional float volume = 1;\n */\n volume: number;\n\n /**\n * @generated from field: optional string endpointUID = 2;\n */\n endpointUID: string;\n\n /**\n * @generated from field: optional string outputDeviceUID = 3;\n */\n outputDeviceUID: string;\n};\n\n/**\n * Describes the message VolumeDidChangeMessage.\n * Use `create(VolumeDidChangeMessageSchema)` to create a new message.\n */\nexport const VolumeDidChangeMessageSchema: GenMessage<VolumeDidChangeMessage> = /*@__PURE__*/\n messageDesc(file_VolumeDidChangeMessage, 0);\n\n/**\n * @generated from extension: optional VolumeDidChangeMessage volumeDidChangeMessage = 56;\n */\nexport const volumeDidChangeMessage: GenExtension<ProtocolMessage, VolumeDidChangeMessage> = /*@__PURE__*/\n extDesc(file_VolumeDidChangeMessage, 0);\n\n",
133
+ "// @generated by protoc-gen-es v2.10.0 with parameter \"target=ts\"\n// @generated from file WakeDeviceMessage.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 { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file WakeDeviceMessage.proto.\n */\nexport const file_WakeDeviceMessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChdXYWtlRGV2aWNlTWVzc2FnZS5wcm90byITChFXYWtlRGV2aWNlTWVzc2FnZTpSChF3YWtlRGV2aWNlTWVzc2FnZRIQLlByb3RvY29sTWVzc2FnZRgtIAEoCzISLldha2VEZXZpY2VNZXNzYWdlUhF3YWtlRGV2aWNlTWVzc2FnZQ\", [file_ProtocolMessage]);\n\n/**\n * @generated from message WakeDeviceMessage\n */\nexport type WakeDeviceMessage = Message<\"WakeDeviceMessage\"> & {\n};\n\n/**\n * Describes the message WakeDeviceMessage.\n * Use `create(WakeDeviceMessageSchema)` to create a new message.\n */\nexport const WakeDeviceMessageSchema: GenMessage<WakeDeviceMessage> = /*@__PURE__*/\n messageDesc(file_WakeDeviceMessage, 0);\n\n/**\n * @generated from extension: optional WakeDeviceMessage wakeDeviceMessage = 45;\n */\nexport const wakeDeviceMessage: GenExtension<ProtocolMessage, WakeDeviceMessage> = /*@__PURE__*/\n extDesc(file_WakeDeviceMessage, 0);\n\n",
134
+ "import { Socket } from 'node:net';\nimport { BaseSocket, debug, decryptChacha20, encryptChacha20 } from '@basmilius/apple-common';\n\nexport default class AirPlayStream extends BaseSocket {\n get isEncrypted(): boolean {\n return !!this.#readKey && !!this.#writeKey;\n }\n\n get socket(): Socket {\n return this.#socket;\n }\n\n get readKey(): Buffer {\n return this.#readKey;\n }\n\n get writeKey(): Buffer {\n return this.#writeKey;\n }\n\n readonly #socket: Socket;\n #buffer: Buffer = Buffer.alloc(0);\n #readCount: number;\n #readKey?: Buffer;\n #writeCount: number;\n #writeKey?: Buffer;\n\n constructor(address: string, port: number) {\n super(address, port);\n\n this.onClose = this.onClose.bind(this);\n this.onConnect = this.onConnect.bind(this);\n this.onData = this.onData.bind(this);\n this.onEnd = this.onEnd.bind(this);\n this.onError = this.onError.bind(this);\n\n this.#socket = new Socket();\n this.#socket.on('close', this.onClose);\n this.#socket.on('connect', this.onConnect);\n this.#socket.on('data', this.onData);\n this.#socket.on('end', this.onEnd);\n this.#socket.on('error', this.onError);\n }\n\n async connect(): Promise<void> {\n debug(`Connecting to ${this.address}:${this.port}...`);\n\n return await new Promise(resolve => {\n this.#socket.connect({\n host: this.address,\n port: this.port,\n keepAlive: true\n }, resolve);\n });\n }\n\n async disconnect(): Promise<void> {\n this.#socket.destroy();\n }\n\n async enableEncryption(readKey: Buffer, writeKey: Buffer): Promise<void> {\n this.#readKey = readKey;\n this.#writeKey = writeKey;\n this.#readCount = 0;\n this.#writeCount = 0;\n }\n\n async decrypt(data: Buffer): Promise<Buffer> {\n if (this.#buffer) {\n data = Buffer.concat([this.#buffer, data]);\n this.#buffer = undefined;\n }\n\n let result = Buffer.alloc(0);\n let offset = 0;\n\n while (offset + 2 <= data.length) {\n const length = data.readUInt16LE(offset);\n\n const totalChunkLength = 2 + length + 16;\n\n if (offset + totalChunkLength > data.length) {\n this.#buffer = data.subarray(offset);\n break;\n }\n\n const aad = data.subarray(offset, offset + 2);\n const ciphertext = data.subarray(offset + 2, offset + 2 + length);\n const authTag = data.subarray(offset + 2 + length, offset + 2 + length + 16);\n\n const nonce = Buffer.alloc(12);\n nonce.writeBigUInt64LE(BigInt(this.#readCount++), 4);\n\n const plaintext = decryptChacha20(\n this.#readKey,\n nonce,\n aad,\n ciphertext,\n authTag\n );\n\n result = Buffer.concat([result, plaintext]);\n offset += totalChunkLength;\n }\n\n return result;\n }\n\n async encrypt(data: Buffer): Promise<Buffer> {\n const total = data.length;\n let result = Buffer.alloc(0);\n\n for (let offset = 0; offset < total;) {\n const length = Math.min(total - offset, 0x400);\n const leLength = Buffer.alloc(2);\n leLength.writeUInt16LE(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 data.subarray(offset, offset + length)\n );\n\n offset += length;\n result = Buffer.concat([result, leLength, encrypted.ciphertext, encrypted.authTag]);\n }\n\n return result;\n }\n\n async decryptRaw(data: Buffer): Promise<Buffer> {\n if (this.#buffer) {\n data = Buffer.concat([this.#buffer, data]);\n this.#buffer = undefined;\n }\n\n let result = Buffer.alloc(0);\n let offset = 0;\n\n while (offset + 2 <= data.length) {\n const length = data.readUInt16LE(offset);\n\n const totalChunkLength = 2 + length + 16;\n\n if (offset + totalChunkLength > data.length) {\n this.#buffer = data.subarray(offset);\n break;\n }\n\n const aad = data.subarray(offset, offset + 2);\n const ciphertext = data.subarray(offset + 2, offset + 2 + length);\n const authTag = data.subarray(offset + 2 + length, offset + 2 + length + 16);\n\n const nonce = Buffer.alloc(12);\n nonce.writeBigUInt64LE(BigInt(this.#readCount++), 4);\n\n const plaintext = decryptChacha20(\n this.#readKey,\n nonce,\n aad,\n ciphertext,\n authTag\n );\n\n result = Buffer.concat([result, plaintext]);\n offset += totalChunkLength;\n }\n\n return result;\n }\n\n async encryptRaw(data: Buffer): Promise<Buffer> {\n const FRAME_LENGTH = 1024;\n const parts: 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, // same key for all frames\n nonce, // sequential nonce\n leLength, // 2-byte AAD\n frame // plaintext\n );\n\n parts.push(leLength, encrypted.ciphertext, encrypted.authTag);\n }\n\n return Buffer.concat(parts);\n }\n\n async onClose(): Promise<void> {\n debug(`Connection closed from ${this.address}:${this.port}`);\n }\n\n async onConnect(): Promise<void> {\n debug(`Connected to ${this.address}:${this.port}`);\n }\n\n async onData(buffer: Buffer): Promise<void> {\n debug('Data frame received', buffer.toString());\n }\n\n async onEnd(): Promise<void> {\n debug('Connection ended');\n }\n\n async onError(err: Error): Promise<void> {\n debug('Error received', err);\n }\n}\n",
135
+ "import { debug, hkdf, parseBinaryPlist } from '@basmilius/apple-common';\nimport AirPlayStream from './stream';\nimport { makeHttpRequest } from '@/protocol/utils';\nimport type { RTSPMethod } from '@/protocol/types';\n\nexport default class AirPlayEventStream extends AirPlayStream {\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
+ "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 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
+ "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 {\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"
5
140
  ],
6
- "mappings": "",
7
- "debugId": "4791C985B1561AD764756E2164756E21",
141
+ "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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",
142
+ "debugId": "B80B40547CD3D3FE64756E2164756E21",
8
143
  "names": []
9
144
  }