{"version":3,"file":"889-40c3b79d47.js","mappings":"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","sources":["webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/createClass.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/get.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/inherits.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/superPropBase.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/toArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/typeof.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.14.8/node_modules/@babel/runtime/regenerator/index.js","webpack://source-maps/ClientApp/node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/assert.js","webpack://source-maps/ClientApp/node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/assert/assertion_error.js","webpack://source-maps/ClientApp/node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/errors.js","webpack://source-maps/ClientApp/node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/util/comparisons.js","webpack://source-maps/ClientApp/node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/createDeferred.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/dedupeFilenames.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLine.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/directLineStreaming.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/parseFilename.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-directlinejs@0.15.5/node_modules/botframework-directlinejs/lib/streaming/WebSocketClientWithNetworkInformation.js","webpack://source-maps/ClientApp/node_modules/.pnpm/botframework-streaming@4.20.0/node_modules/botframework-streaming/lib/index-browser.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/date/now.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/math/sign.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/createClass.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/extends.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/inherits.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/toArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/typeof.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/arrayLikeToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/toPropertyKey.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/toPrimitive.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/defineProperty.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/slicedToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArrayLimit.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableRest.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/toConsumableArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/arrayWithoutHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/iterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/nonIterableSpread.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime-corejs3@7.26.7/node_modules/@babel/runtime-corejs3/helpers/esm/unsupportedIterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://source-maps/ClientApp/node_modules/.pnpm/@babel+runtime@7.26.7/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nmodule.exports = _classApplyDescriptorGet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}\n\nmodule.exports = _classApplyDescriptorSet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\n\nmodule.exports = _classExtractFieldDescriptor;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var classApplyDescriptorGet = require(\"./classApplyDescriptorGet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}\n\nmodule.exports = _classPrivateFieldGet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var classApplyDescriptorSet = require(\"./classApplyDescriptorSet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\n\nmodule.exports = _classPrivateFieldSet;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n inspect = _require.inspect;\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nfunction createDeferred() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.reject = reject;\n deferred.resolve = resolve;\n });\n return deferred;\n}\n\nvar _default = createDeferred;\nexports[\"default\"] = _default;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVEZWZlcnJlZC50cyJdLCJuYW1lcyI6WyJjcmVhdGVEZWZlcnJlZCIsImRlZmVycmVkIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTUEsU0FBU0EsY0FBVCxHQUEwQztBQUN4QyxNQUFNQyxRQUE4QixHQUFHLEVBQXZDO0FBRUFBLEVBQUFBLFFBQVEsQ0FBQ0MsT0FBVCxHQUFtQixJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ2xESixJQUFBQSxRQUFRLENBQUNJLE1BQVQsR0FBa0JBLE1BQWxCO0FBQ0FKLElBQUFBLFFBQVEsQ0FBQ0csT0FBVCxHQUFtQkEsT0FBbkI7QUFDRCxHQUhrQixDQUFuQjtBQUtBLFNBQU9ILFFBQVA7QUFDRDs7ZUFFY0QsYyIsInNvdXJjZXNDb250ZW50IjpbInR5cGUgRGVmZXJyZWQ8VD4gPSB7XG4gIHByb21pc2U6IFByb21pc2U8VD47XG4gIHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZDxUPigpOiBEZWZlcnJlZDxUPiB7XG4gIGNvbnN0IGRlZmVycmVkOiBQYXJ0aWFsPERlZmVycmVkPFQ+PiA9IHt9O1xuXG4gIGRlZmVycmVkLnByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZGVmZXJyZWQucmVqZWN0ID0gcmVqZWN0O1xuICAgIGRlZmVycmVkLnJlc29sdmUgPSByZXNvbHZlO1xuICB9KTtcblxuICByZXR1cm4gZGVmZXJyZWQgYXMgRGVmZXJyZWQ8VD47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZURlZmVycmVkO1xuZXhwb3J0IHR5cGUgeyBEZWZlcnJlZCB9O1xuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = dedupeFilenames;\n\nvar _parseFilename2 = _interopRequireDefault(require(\"./parseFilename\"));\n\nfunction dedupeFilenames(array) {\n var nextArray = [];\n array.forEach(function (value) {\n var _parseFilename = (0, _parseFilename2[\"default\"])(value),\n extname = _parseFilename.extname,\n name = _parseFilename.name;\n\n var count = 0;\n var nextValue = value;\n\n while (nextArray.includes(nextValue)) {\n nextValue = [name, \"(\".concat(++count, \")\")].filter(function (segment) {\n return segment;\n }).join(' ') + extname;\n }\n\n nextArray.push(nextValue);\n });\n return nextArray;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWR1cGVGaWxlbmFtZXMudHMiXSwibmFtZXMiOlsiZGVkdXBlRmlsZW5hbWVzIiwiYXJyYXkiLCJuZXh0QXJyYXkiLCJmb3JFYWNoIiwidmFsdWUiLCJleHRuYW1lIiwibmFtZSIsImNvdW50IiwibmV4dFZhbHVlIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJzZWdtZW50Iiwiam9pbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUVlLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQTBDO0FBQ3JELE1BQU1DLFNBQW1CLEdBQUcsRUFBNUI7QUFFQUQsRUFBQUEsS0FBSyxDQUFDRSxPQUFOLENBQWMsVUFBQUMsS0FBSyxFQUFJO0FBQ25CLHlCQUEwQixnQ0FBY0EsS0FBZCxDQUExQjtBQUFBLFFBQVFDLE9BQVIsa0JBQVFBLE9BQVI7QUFBQSxRQUFpQkMsSUFBakIsa0JBQWlCQSxJQUFqQjs7QUFDQSxRQUFJQyxLQUFLLEdBQUcsQ0FBWjtBQUNBLFFBQUlDLFNBQVMsR0FBR0osS0FBaEI7O0FBRUEsV0FBT0YsU0FBUyxDQUFDTyxRQUFWLENBQW1CRCxTQUFuQixDQUFQLEVBQXNDO0FBQ2xDQSxNQUFBQSxTQUFTLEdBQUcsQ0FBQ0YsSUFBRCxhQUFhLEVBQUVDLEtBQWYsUUFBMkJHLE1BQTNCLENBQWtDLFVBQUFDLE9BQU87QUFBQSxlQUFJQSxPQUFKO0FBQUEsT0FBekMsRUFBc0RDLElBQXRELENBQTJELEdBQTNELElBQWtFUCxPQUE5RTtBQUNIOztBQUVESCxJQUFBQSxTQUFTLENBQUNXLElBQVYsQ0FBZUwsU0FBZjtBQUNILEdBVkQ7QUFZQSxTQUFPTixTQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFyc2VGaWxlbmFtZSBmcm9tICcuL3BhcnNlRmlsZW5hbWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWR1cGVGaWxlbmFtZXMoYXJyYXk6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV4dEFycmF5OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgYXJyYXkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZXh0bmFtZSwgbmFtZSB9ID0gcGFyc2VGaWxlbmFtZSh2YWx1ZSk7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGxldCBuZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB3aGlsZSAobmV4dEFycmF5LmluY2x1ZGVzKG5leHRWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5leHRWYWx1ZSA9IFtuYW1lLCBgKCR7ICgrK2NvdW50KSB9KWBdLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQpLmpvaW4oJyAnKSArIGV4dG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBuZXh0QXJyYXkucHVzaChuZXh0VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRBcnJheTtcbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DirectLineStreaming\", {\n enumerable: true,\n get: function get() {\n return _directLineStreaming.DirectLineStreaming;\n }\n});\nexports.DirectLine = exports.ConnectionStatus = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nrequire(\"core-js/features/promise\");\n\nrequire(\"url-search-params-polyfill\");\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar _async = require(\"rxjs/scheduler/async\");\n\nvar _jwtDecode = _interopRequireWildcard(require(\"jwt-decode\"));\n\nrequire(\"rxjs/add/operator/catch\");\n\nrequire(\"rxjs/add/operator/combineLatest\");\n\nrequire(\"rxjs/add/operator/count\");\n\nrequire(\"rxjs/add/operator/delay\");\n\nrequire(\"rxjs/add/operator/do\");\n\nrequire(\"rxjs/add/operator/filter\");\n\nrequire(\"rxjs/add/operator/map\");\n\nrequire(\"rxjs/add/operator/mergeMap\");\n\nrequire(\"rxjs/add/operator/concatMap\");\n\nrequire(\"rxjs/add/operator/retryWhen\");\n\nrequire(\"rxjs/add/operator/share\");\n\nrequire(\"rxjs/add/operator/take\");\n\nrequire(\"rxjs/add/observable/dom/ajax\");\n\nrequire(\"rxjs/add/observable/empty\");\n\nrequire(\"rxjs/add/observable/from\");\n\nrequire(\"rxjs/add/observable/interval\");\n\nrequire(\"rxjs/add/observable/of\");\n\nrequire(\"rxjs/add/observable/throw\");\n\nvar _dedupeFilenames = _interopRequireDefault(require(\"./dedupeFilenames\"));\n\nvar _directLineStreaming = require(\"./directLineStreaming\");\n\nvar _excluded = [\"contentUrl\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2[\"default\"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\n// These types are specific to this client library, not to Direct Line 3.0\nvar ConnectionStatus;\nexports.ConnectionStatus = ConnectionStatus;\n\n(function (ConnectionStatus) {\n ConnectionStatus[ConnectionStatus[\"Uninitialized\"] = 0] = \"Uninitialized\";\n ConnectionStatus[ConnectionStatus[\"Connecting\"] = 1] = \"Connecting\";\n ConnectionStatus[ConnectionStatus[\"Online\"] = 2] = \"Online\";\n ConnectionStatus[ConnectionStatus[\"ExpiredToken\"] = 3] = \"ExpiredToken\";\n ConnectionStatus[ConnectionStatus[\"FailedToConnect\"] = 4] = \"FailedToConnect\";\n ConnectionStatus[ConnectionStatus[\"Ended\"] = 5] = \"Ended\";\n})(ConnectionStatus || (exports.ConnectionStatus = ConnectionStatus = {}));\n\nvar wrapAjaxWithRetry = function wrapAjaxWithRetry(source, scheduler) {\n var notImplemented = function notImplemented() {\n throw new Error('not implemented');\n };\n\n var inner = function inner(response$) {\n return response$[\"catch\"](function (err) {\n if (err.status === 429) {\n var retryAfterValue = err.xhr.getResponseHeader('Retry-After');\n var retryAfter = Number(retryAfterValue);\n\n if (!isNaN(retryAfter)) {\n return _Observable.Observable.timer(retryAfter, scheduler).flatMap(function (_) {\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n }\n }\n\n return _Observable.Observable[\"throw\"](err, scheduler);\n });\n };\n\n var outer = function outer(urlOrRequest) {\n return inner(source(urlOrRequest));\n };\n\n return Object.assign(outer, {\n get: function get(url, headers) {\n return notImplemented();\n },\n post: function post(url, body, headers) {\n return notImplemented();\n },\n put: function put(url, body, headers) {\n return notImplemented();\n },\n patch: function patch(url, body, headers) {\n return notImplemented();\n },\n \"delete\": function _delete(url, headers) {\n return notImplemented();\n },\n getJSON: function getJSON(url, headers) {\n return notImplemented();\n }\n });\n};\n\nvar makeServices = function makeServices(services) {\n var scheduler = services.scheduler || _async.async;\n return {\n scheduler: scheduler,\n ajax: wrapAjaxWithRetry(services.ajax || _Observable.Observable.ajax, scheduler),\n WebSocket: services.WebSocket || WebSocket,\n random: services.random || Math.random\n };\n};\n\nvar lifetimeRefreshToken = 30 * 60 * 1000;\nvar intervalRefreshToken = lifetimeRefreshToken / 2;\nvar POLLING_INTERVAL_LOWER_BOUND = 200; //ms\n\nvar errorExpiredToken = new Error(\"expired token\");\nvar errorConversationEnded = new Error(\"conversation ended\");\nvar errorFailedToConnect = new Error(\"failed to connect\");\nvar konsole = {\n log: function log(message) {\n var _console;\n\n for (var _len = arguments.length, optionalParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n optionalParams[_key - 1] = arguments[_key];\n }\n\n if (typeof window !== 'undefined' && window[\"botchatDebug\"] && message) (_console = console).log.apply(_console, [message].concat(optionalParams));\n }\n};\n\nvar DirectLine = /*#__PURE__*/function () {\n function DirectLine(options) {\n (0, _classCallCheck2[\"default\"])(this, DirectLine);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"domain\", \"https://directline.botframework.com/v3/directline\");\n (0, _defineProperty2[\"default\"])(this, \"watermark\", '');\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n (0, _defineProperty2[\"default\"])(this, \"timeout\", 20 * 1000);\n (0, _defineProperty2[\"default\"])(this, \"pollingInterval\", 1000);\n this.secret = options.secret;\n this.token = options.secret || options.token;\n this.webSocket = (options.webSocket === undefined ? true : options.webSocket) && typeof WebSocket !== 'undefined' && WebSocket !== undefined;\n\n if (options.conversationStartProperties && options.conversationStartProperties.locale) {\n if (Object.prototype.toString.call(options.conversationStartProperties.locale) === '[object String]') {\n this.localeOnStartConversation = options.conversationStartProperties.locale;\n } else {\n console.warn('DirectLineJS: conversationStartProperties.locale was ignored: the locale name may be a BCP 47 language tag');\n }\n }\n\n if (options.domain) {\n this.domain = options.domain;\n }\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n if (options.watermark) {\n this.watermark = options.watermark;\n }\n\n if (options.streamUrl) {\n if (options.token && options.conversationId) {\n this.streamUrl = options.streamUrl;\n } else {\n console.warn('DirectLineJS: streamUrl was ignored: you need to provide a token and a conversationid');\n }\n }\n\n if (options.timeout !== undefined) {\n this.timeout = options.timeout;\n }\n\n this.retries = (lifetimeRefreshToken - intervalRefreshToken) / this.timeout;\n this._botAgent = this.getBotAgent(options.botAgent);\n this.services = makeServices(options);\n var parsedPollingInterval = ~~options.pollingInterval;\n\n if (parsedPollingInterval < POLLING_INTERVAL_LOWER_BOUND) {\n if (typeof options.pollingInterval !== 'undefined') {\n console.warn(\"DirectLineJS: provided pollingInterval (\".concat(options.pollingInterval, \") is under lower bound (200ms), using default of 1000ms\"));\n }\n } else {\n this.pollingInterval = parsedPollingInterval;\n }\n\n this.expiredTokenExhaustion = this.setConnectionStatusFallback(ConnectionStatus.ExpiredToken, ConnectionStatus.FailedToConnect, 5);\n this.activity$ = (this.webSocket ? this.webSocketActivity$() : this.pollingGetActivity$()).share();\n } // Every time we're about to make a Direct Line REST call, we call this first to see check the current connection status.\n // Either throws an error (indicating an error state) or emits a null, indicating a (presumably) healthy connection\n\n\n (0, _createClass2[\"default\"])(DirectLine, [{\n key: \"checkConnection\",\n value: function checkConnection() {\n var _this = this;\n\n var once = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var obs = this.connectionStatus$.flatMap(function (connectionStatus) {\n if (connectionStatus === ConnectionStatus.Uninitialized) {\n _this.connectionStatus$.next(ConnectionStatus.Connecting); //if token and streamUrl are defined it means reconnect has already been done. Skipping it.\n\n\n if (_this.token && _this.streamUrl) {\n _this.connectionStatus$.next(ConnectionStatus.Online);\n\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n } else {\n return _this.startConversation()[\"do\"](function (conversation) {\n _this.conversationId = conversation.conversationId;\n _this.token = _this.secret || conversation.token;\n _this.streamUrl = conversation.streamUrl;\n _this.referenceGrammarId = conversation.referenceGrammarId;\n if (!_this.secret) _this.refreshTokenLoop();\n\n _this.connectionStatus$.next(ConnectionStatus.Online);\n }, function (error) {\n _this.connectionStatus$.next(ConnectionStatus.FailedToConnect);\n }).map(function (_) {\n return connectionStatus;\n });\n }\n } else {\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n }).filter(function (connectionStatus) {\n return connectionStatus != ConnectionStatus.Uninitialized && connectionStatus != ConnectionStatus.Connecting;\n }).flatMap(function (connectionStatus) {\n switch (connectionStatus) {\n case ConnectionStatus.Ended:\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this.services.scheduler);\n\n case ConnectionStatus.FailedToConnect:\n return _Observable.Observable[\"throw\"](errorFailedToConnect, _this.services.scheduler);\n\n case ConnectionStatus.ExpiredToken:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n\n default:\n return _Observable.Observable.of(connectionStatus, _this.services.scheduler);\n }\n });\n return once ? obs.take(1) : obs;\n }\n }, {\n key: \"setConnectionStatusFallback\",\n value: function setConnectionStatusFallback(connectionStatusFrom, connectionStatusTo) {\n var maxAttempts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n maxAttempts--;\n var attempts = 0;\n var currStatus = null;\n return function (status) {\n if (status === connectionStatusFrom && currStatus === status && attempts >= maxAttempts) {\n attempts = 0;\n return connectionStatusTo;\n }\n\n attempts++;\n currStatus = status;\n return status;\n };\n }\n }, {\n key: \"expiredToken\",\n value: function expiredToken() {\n var connectionStatus = this.connectionStatus$.getValue();\n if (connectionStatus != ConnectionStatus.Ended && connectionStatus != ConnectionStatus.FailedToConnect) this.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n var protectedConnectionStatus = this.expiredTokenExhaustion(this.connectionStatus$.getValue());\n this.connectionStatus$.next(protectedConnectionStatus);\n }\n }, {\n key: \"startConversation\",\n value: function startConversation() {\n var _this2 = this;\n\n //if conversationid is set here, it means we need to call the reconnect api, else it is a new conversation\n var url = this.conversationId ? \"\".concat(this.domain, \"/conversations/\").concat(this.conversationId, \"?watermark=\").concat(this.watermark) : \"\".concat(this.domain, \"/conversations\");\n var method = this.conversationId ? \"GET\" : \"POST\";\n var body = this.conversationId ? undefined : {\n user: {\n id: this.userIdOnStartConversation\n },\n locale: this.localeOnStartConversation\n };\n return this.services.ajax({\n method: method,\n url: url,\n body: body,\n timeout: this.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n }, this.commonHeaders())\n }) // .do(ajaxResponse => konsole.log(\"conversation ajaxResponse\", ajaxResponse.response))\n .map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).retryWhen(function (error$) {\n return (// for now we deem 4xx and 5xx errors as unrecoverable\n // for everything else (timeouts), retry for a while\n error$.mergeMap(function (error) {\n return error.status >= 400 && error.status < 600 ? _Observable.Observable[\"throw\"](error, _this2.services.scheduler) : _Observable.Observable.of(error, _this2.services.scheduler);\n }).delay(_this2.timeout, _this2.services.scheduler).take(_this2.retries)\n );\n });\n }\n }, {\n key: \"refreshTokenLoop\",\n value: function refreshTokenLoop() {\n var _this3 = this;\n\n this.tokenRefreshSubscription = _Observable.Observable.interval(intervalRefreshToken, this.services.scheduler).flatMap(function (_) {\n return _this3.refreshToken();\n }).subscribe(function (token) {\n konsole.log(\"refreshing token\", token, \"at\", new Date());\n _this3.token = token;\n });\n }\n }, {\n key: \"refreshToken\",\n value: function refreshToken() {\n var _this4 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this4.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this4.domain, \"/tokens/refresh\"),\n timeout: _this4.timeout,\n headers: _objectSpread({}, _this4.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.token;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // if the token is expired there's no reason to keep trying\n _this4.expiredToken();\n\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n } else if (error.status === 404) {\n // If the bot is gone, we should stop retrying\n return _Observable.Observable[\"throw\"](error, _this4.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this4.services.scheduler);\n }).delay(_this4.timeout, _this4.services.scheduler).take(_this4.retries);\n });\n });\n }\n }, {\n key: \"reconnect\",\n value: function reconnect(conversation) {\n this.token = conversation.token;\n this.streamUrl = conversation.streamUrl;\n if (this.connectionStatus$.getValue() === ConnectionStatus.ExpiredToken) this.connectionStatus$.next(ConnectionStatus.Online);\n }\n }, {\n key: \"end\",\n value: function end() {\n if (this.tokenRefreshSubscription) this.tokenRefreshSubscription.unsubscribe();\n\n try {\n this.connectionStatus$.next(ConnectionStatus.Ended);\n } catch (e) {\n if (e === errorConversationEnded) return;\n throw e;\n }\n }\n }, {\n key: \"getSessionId\",\n value: function getSessionId() {\n var _this5 = this;\n\n // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n konsole.log(\"getSessionId\");\n return this.checkConnection(true).flatMap(function (_) {\n return _this5.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this5.domain, \"/session/getsessionid\"),\n withCredentials: true,\n timeout: _this5.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this5.commonHeaders())\n }).map(function (ajaxResponse) {\n if (ajaxResponse && ajaxResponse.response && ajaxResponse.response.sessionId) {\n konsole.log(\"getSessionId response: \" + ajaxResponse.response.sessionId);\n return ajaxResponse.response.sessionId;\n }\n\n return '';\n })[\"catch\"](function (error) {\n konsole.log(\"getSessionId error: \" + error.status);\n return _Observable.Observable.of('', _this5.services.scheduler);\n });\n })[\"catch\"](function (error) {\n return _this5.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this6 = this;\n\n // If user id is set, check if it match activity.from.id and always override it in activity\n if (this.userIdOnStartConversation && activity.from && activity.from.id !== this.userIdOnStartConversation) {\n console.warn('DirectLineJS: Activity.from.id does not match with user id, ignoring activity.from.id');\n activity.from.id = this.userIdOnStartConversation;\n } // Use postMessageWithAttachments for messages with attachments that are local files (e.g. an image to upload)\n // Technically we could use it for *all* activities, but postActivity is much lighter weight\n // So, since WebChat is partially a reference implementation of Direct Line, we implement both.\n\n\n if (activity.type === \"message\" && activity.attachments && activity.attachments.length > 0) return this.postMessageWithAttachments(activity); // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n konsole.log(\"postActivity\", activity);\n return this.checkConnection(true).flatMap(function (_) {\n return _this6.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this6.domain, \"/conversations/\").concat(_this6.conversationId, \"/activities\"),\n body: activity,\n timeout: _this6.timeout,\n headers: _objectSpread({\n \"Content-Type\": \"application/json\"\n }, _this6.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this6.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this6.catchExpiredToken(error);\n });\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this7 = this;\n\n var attachments = message.attachments; // We clean the attachments but making sure every attachment has unique name.\n // If the file do not have a name, Chrome will assign \"blob\" when it is appended to FormData.\n\n var attachmentNames = (0, _dedupeFilenames[\"default\"])(attachments.map(function (media) {\n return media.name || 'blob';\n }));\n var cleansedAttachments = attachments.map(function (attachment, index) {\n return _objectSpread(_objectSpread({}, attachment), {}, {\n name: attachmentNames[index]\n });\n });\n var formData; // If we're not connected to the bot, get connected\n // Will throw an error if we are not connected\n\n return this.checkConnection(true).flatMap(function (_) {\n // To send this message to DirectLine we need to deconstruct it into a \"template\" activity\n // and one blob for each attachment.\n formData = new FormData();\n formData.append('activity', new Blob([JSON.stringify(_objectSpread(_objectSpread({}, message), {}, {\n // Removing contentUrl from attachment, we will send it via multipart\n attachments: cleansedAttachments.map(function (_ref) {\n var string = _ref.contentUrl,\n others = (0, _objectWithoutProperties2[\"default\"])(_ref, _excluded);\n return _objectSpread({}, others);\n })\n }))], {\n type: 'application/vnd.microsoft.activity'\n }));\n return _Observable.Observable.from(cleansedAttachments, _this7.services.scheduler).flatMap(function (media) {\n return _this7.services.ajax({\n method: \"GET\",\n url: media.contentUrl,\n responseType: 'arraybuffer'\n })[\"do\"](function (ajaxResponse) {\n return formData.append('file', new Blob([ajaxResponse.response], {\n type: media.contentType\n }), media.name);\n });\n }).count();\n }).flatMap(function (_) {\n return _this7.services.ajax({\n method: \"POST\",\n url: \"\".concat(_this7.domain, \"/conversations/\").concat(_this7.conversationId, \"/upload?userId=\").concat(message.from.id),\n body: formData,\n timeout: _this7.timeout,\n headers: _objectSpread({}, _this7.commonHeaders())\n }).map(function (ajaxResponse) {\n return ajaxResponse.response.id;\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n })[\"catch\"](function (error) {\n return _this7.catchPostError(error);\n });\n }\n }, {\n key: \"catchPostError\",\n value: function catchPostError(error) {\n if (error.status === 403) // token has expired (will fall through to return \"retry\")\n this.expiredToken();else if (error.status >= 400 && error.status < 500) // more unrecoverable errors\n return _Observable.Observable[\"throw\"](error, this.services.scheduler);\n return _Observable.Observable.of(\"retry\", this.services.scheduler);\n }\n }, {\n key: \"catchExpiredToken\",\n value: function catchExpiredToken(error) {\n return error === errorExpiredToken ? _Observable.Observable.of(\"retry\", this.services.scheduler) : _Observable.Observable[\"throw\"](error, this.services.scheduler);\n }\n }, {\n key: \"pollingGetActivity$\",\n value: function pollingGetActivity$() {\n var _this8 = this;\n\n var poller$ = _Observable.Observable.create(function (subscriber) {\n // A BehaviorSubject to trigger polling. Since it is a BehaviorSubject\n // the first event is produced immediately.\n var trigger$ = new _BehaviorSubject.BehaviorSubject({}); // TODO: remove Date.now, use reactive interval to space out every request\n\n trigger$.subscribe(function () {\n if (_this8.connectionStatus$.getValue() === ConnectionStatus.Online) {\n var startTimestamp = Date.now();\n\n _this8.services.ajax({\n headers: _objectSpread({\n Accept: 'application/json'\n }, _this8.commonHeaders()),\n method: 'GET',\n url: \"\".concat(_this8.domain, \"/conversations/\").concat(_this8.conversationId, \"/activities?watermark=\").concat(_this8.watermark),\n timeout: _this8.timeout\n }).subscribe(function (result) {\n subscriber.next(result);\n setTimeout(function () {\n return trigger$.next(null);\n }, Math.max(0, _this8.pollingInterval - Date.now() + startTimestamp));\n }, function (error) {\n switch (error.status) {\n case 403:\n _this8.connectionStatus$.next(ConnectionStatus.ExpiredToken);\n\n setTimeout(function () {\n return trigger$.next(null);\n }, _this8.pollingInterval);\n break;\n\n case 404:\n _this8.connectionStatus$.next(ConnectionStatus.Ended);\n\n break;\n\n default:\n // propagate the error\n subscriber.error(error);\n break;\n }\n });\n }\n });\n });\n\n return this.checkConnection().flatMap(function (_) {\n return poller$[\"catch\"](function () {\n return _Observable.Observable.empty();\n }).map(function (ajaxResponse) {\n return ajaxResponse.response;\n }).flatMap(function (activityGroup) {\n return _this8.observableFromActivityGroup(activityGroup);\n });\n });\n }\n }, {\n key: \"observableFromActivityGroup\",\n value: function observableFromActivityGroup(activityGroup) {\n if (activityGroup.watermark) this.watermark = activityGroup.watermark;\n return _Observable.Observable.from(activityGroup.activities, this.services.scheduler);\n }\n }, {\n key: \"webSocketActivity$\",\n value: function webSocketActivity$() {\n var _this9 = this;\n\n return this.checkConnection().flatMap(function (_) {\n return _this9.observableWebSocket() // WebSockets can be closed by the server or the browser. In the former case we need to\n // retrieve a new streamUrl. In the latter case we could first retry with the current streamUrl,\n // but it's simpler just to always fetch a new one.\n .retryWhen(function (error$) {\n return error$.delay(_this9.getRetryDelay(), _this9.services.scheduler).mergeMap(function (error) {\n return _this9.reconnectToConversation();\n });\n });\n }).flatMap(function (activityGroup) {\n return _this9.observableFromActivityGroup(activityGroup);\n });\n } // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + this.services.random() * 12000);\n } // Originally we used Observable.webSocket, but it's fairly opinionated and I ended up writing\n // a lot of code to work around their implementation details. Since WebChat is meant to be a reference\n // implementation, I decided roll the below, where the logic is more purposeful. - @billba\n\n }, {\n key: \"observableWebSocket\",\n value: function observableWebSocket() {\n var _this10 = this;\n\n return _Observable.Observable.create(function (subscriber) {\n konsole.log(\"creating WebSocket\", _this10.streamUrl);\n var ws = new _this10.services.WebSocket(_this10.streamUrl);\n var sub;\n var closed;\n\n ws.onopen = function (open) {\n konsole.log(\"WebSocket open\", open); // Chrome is pretty bad at noticing when a WebSocket connection is broken.\n // If we periodically ping the server with empty messages, it helps Chrome\n // realize when connection breaks, and close the socket. We then throw an\n // error, and that give us the opportunity to attempt to reconnect.\n\n sub = _Observable.Observable.interval(_this10.timeout, _this10.services.scheduler).subscribe(function (_) {\n try {\n ws.send(\"\");\n } catch (e) {\n konsole.log(\"Ping error\", e);\n }\n });\n };\n\n ws.onclose = function (close) {\n konsole.log(\"WebSocket close\", close);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(close);\n closed = true;\n };\n\n ws.onerror = function (error) {\n konsole.log(\"WebSocket error\", error);\n if (sub) sub.unsubscribe(); // RxJS.retryWhen has a bug that would cause \"error\" signal to be sent after the observable is completed/errored.\n // We need to guard against extraneous \"error\" signal to workaround the bug.\n\n closed || subscriber.error(error);\n closed = true;\n };\n\n ws.onmessage = function (message) {\n return message.data && subscriber.next(JSON.parse(message.data));\n }; // This is the 'unsubscribe' method, which is called when this observable is disposed.\n // When the WebSocket closes itself, we throw an error, and this function is eventually called.\n // When the observable is closed first (e.g. when tearing down a WebChat instance) then\n // we need to manually close the WebSocket.\n\n\n return function () {\n if (ws.readyState === 0 || ws.readyState === 1) ws.close();\n };\n });\n }\n }, {\n key: \"reconnectToConversation\",\n value: function reconnectToConversation() {\n var _this11 = this;\n\n return this.checkConnection(true).flatMap(function (_) {\n return _this11.services.ajax({\n method: \"GET\",\n url: \"\".concat(_this11.domain, \"/conversations/\").concat(_this11.conversationId, \"?watermark=\").concat(_this11.watermark),\n timeout: _this11.timeout,\n headers: _objectSpread({\n \"Accept\": \"application/json\"\n }, _this11.commonHeaders())\n })[\"do\"](function (result) {\n if (!_this11.secret) _this11.token = result.response.token;\n _this11.streamUrl = result.response.streamUrl;\n }).map(function (_) {\n return null;\n }).retryWhen(function (error$) {\n return error$.mergeMap(function (error) {\n if (error.status === 403) {\n // token has expired. We can't recover from this here, but the embedding\n // website might eventually call reconnect() with a new token and streamUrl.\n _this11.expiredToken();\n } else if (error.status === 404) {\n return _Observable.Observable[\"throw\"](errorConversationEnded, _this11.services.scheduler);\n }\n\n return _Observable.Observable.of(error, _this11.services.scheduler);\n }).delay(_this11.timeout, _this11.services.scheduler).take(_this11.retries);\n });\n });\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n \"Authorization\": \"Bearer \".concat(this.token),\n \"x-ms-bot-agent\": this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlinejs';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \" \").concat(\"0.15.5\", \")\");\n }\n }, {\n key: \"setUserId\",\n value: function setUserId(userId) {\n if (this.connectionStatus$.getValue() === ConnectionStatus.Online) {\n throw new Error('DirectLineJS: It is connected, we cannot set user id.');\n }\n\n var userIdFromToken = this.parseToken(this.token);\n\n if (userIdFromToken) {\n return console.warn('DirectLineJS: user id is already set in token, will ignore this user id.');\n }\n\n if (/^dl_/.test(userId)) {\n return console.warn('DirectLineJS: user id prefixed with \"dl_\" is reserved and must be embedded into the Direct Line token to prevent forgery.');\n }\n\n this.userIdOnStartConversation = userId;\n }\n }, {\n key: \"parseToken\",\n value: function parseToken(token) {\n try {\n var _ref2 = (0, _jwtDecode[\"default\"])(token),\n user = _ref2.user;\n\n return user;\n } catch (e) {\n if (e instanceof _jwtDecode.InvalidTokenError) {\n return undefined;\n }\n }\n }\n }]);\n return DirectLine;\n}();\n\nexports.DirectLine = DirectLine;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJDb25uZWN0aW9uU3RhdHVzIiwid3JhcEFqYXhXaXRoUmV0cnkiLCJzb3VyY2UiLCJzY2hlZHVsZXIiLCJub3RJbXBsZW1lbnRlZCIsIkVycm9yIiwiaW5uZXIiLCJyZXNwb25zZSQiLCJlcnIiLCJzdGF0dXMiLCJyZXRyeUFmdGVyVmFsdWUiLCJ4aHIiLCJnZXRSZXNwb25zZUhlYWRlciIsInJldHJ5QWZ0ZXIiLCJOdW1iZXIiLCJpc05hTiIsIk9ic2VydmFibGUiLCJ0aW1lciIsImZsYXRNYXAiLCJfIiwib3V0ZXIiLCJ1cmxPclJlcXVlc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXQiLCJ1cmwiLCJoZWFkZXJzIiwicG9zdCIsImJvZHkiLCJwdXQiLCJwYXRjaCIsImdldEpTT04iLCJtYWtlU2VydmljZXMiLCJzZXJ2aWNlcyIsIkFzeW5jU2NoZWR1bGVyIiwiYWpheCIsIldlYlNvY2tldCIsInJhbmRvbSIsIk1hdGgiLCJsaWZldGltZVJlZnJlc2hUb2tlbiIsImludGVydmFsUmVmcmVzaFRva2VuIiwiUE9MTElOR19JTlRFUlZBTF9MT1dFUl9CT1VORCIsImVycm9yRXhwaXJlZFRva2VuIiwiZXJyb3JDb252ZXJzYXRpb25FbmRlZCIsImVycm9yRmFpbGVkVG9Db25uZWN0Iiwia29uc29sZSIsImxvZyIsIm1lc3NhZ2UiLCJvcHRpb25hbFBhcmFtcyIsIndpbmRvdyIsImNvbnNvbGUiLCJEaXJlY3RMaW5lIiwib3B0aW9ucyIsIkJlaGF2aW9yU3ViamVjdCIsIlVuaW5pdGlhbGl6ZWQiLCJzZWNyZXQiLCJ0b2tlbiIsIndlYlNvY2tldCIsInVuZGVmaW5lZCIsImNvbnZlcnNhdGlvblN0YXJ0UHJvcGVydGllcyIsImxvY2FsZSIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImxvY2FsZU9uU3RhcnRDb252ZXJzYXRpb24iLCJ3YXJuIiwiZG9tYWluIiwiY29udmVyc2F0aW9uSWQiLCJ3YXRlcm1hcmsiLCJzdHJlYW1VcmwiLCJ0aW1lb3V0IiwicmV0cmllcyIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJwYXJzZWRQb2xsaW5nSW50ZXJ2YWwiLCJwb2xsaW5nSW50ZXJ2YWwiLCJleHBpcmVkVG9rZW5FeGhhdXN0aW9uIiwic2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrIiwiRXhwaXJlZFRva2VuIiwiRmFpbGVkVG9Db25uZWN0IiwiYWN0aXZpdHkkIiwid2ViU29ja2V0QWN0aXZpdHkkIiwicG9sbGluZ0dldEFjdGl2aXR5JCIsInNoYXJlIiwib25jZSIsIm9icyIsImNvbm5lY3Rpb25TdGF0dXMkIiwiY29ubmVjdGlvblN0YXR1cyIsIm5leHQiLCJDb25uZWN0aW5nIiwiT25saW5lIiwib2YiLCJzdGFydENvbnZlcnNhdGlvbiIsImNvbnZlcnNhdGlvbiIsInJlZmVyZW5jZUdyYW1tYXJJZCIsInJlZnJlc2hUb2tlbkxvb3AiLCJlcnJvciIsIm1hcCIsImZpbHRlciIsIkVuZGVkIiwidGFrZSIsImNvbm5lY3Rpb25TdGF0dXNGcm9tIiwiY29ubmVjdGlvblN0YXR1c1RvIiwibWF4QXR0ZW1wdHMiLCJhdHRlbXB0cyIsImN1cnJTdGF0dXMiLCJnZXRWYWx1ZSIsInByb3RlY3RlZENvbm5lY3Rpb25TdGF0dXMiLCJtZXRob2QiLCJ1c2VyIiwiaWQiLCJ1c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uIiwiY29tbW9uSGVhZGVycyIsImFqYXhSZXNwb25zZSIsInJlc3BvbnNlIiwicmV0cnlXaGVuIiwiZXJyb3IkIiwibWVyZ2VNYXAiLCJkZWxheSIsInRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiIsImludGVydmFsIiwicmVmcmVzaFRva2VuIiwic3Vic2NyaWJlIiwiRGF0ZSIsImNoZWNrQ29ubmVjdGlvbiIsImV4cGlyZWRUb2tlbiIsInVuc3Vic2NyaWJlIiwiZSIsIndpdGhDcmVkZW50aWFscyIsInNlc3Npb25JZCIsImNhdGNoRXhwaXJlZFRva2VuIiwiYWN0aXZpdHkiLCJmcm9tIiwidHlwZSIsImF0dGFjaG1lbnRzIiwibGVuZ3RoIiwicG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMiLCJjYXRjaFBvc3RFcnJvciIsImF0dGFjaG1lbnROYW1lcyIsIm1lZGlhIiwibmFtZSIsImNsZWFuc2VkQXR0YWNobWVudHMiLCJhdHRhY2htZW50IiwiaW5kZXgiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiQmxvYiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpbmciLCJjb250ZW50VXJsIiwib3RoZXJzIiwicmVzcG9uc2VUeXBlIiwiY29udGVudFR5cGUiLCJjb3VudCIsInBvbGxlciQiLCJjcmVhdGUiLCJzdWJzY3JpYmVyIiwidHJpZ2dlciQiLCJzdGFydFRpbWVzdGFtcCIsIm5vdyIsIkFjY2VwdCIsInJlc3VsdCIsInNldFRpbWVvdXQiLCJtYXgiLCJlbXB0eSIsImFjdGl2aXR5R3JvdXAiLCJvYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAiLCJhY3Rpdml0aWVzIiwib2JzZXJ2YWJsZVdlYlNvY2tldCIsImdldFJldHJ5RGVsYXkiLCJyZWNvbm5lY3RUb0NvbnZlcnNhdGlvbiIsImZsb29yIiwid3MiLCJzdWIiLCJjbG9zZWQiLCJvbm9wZW4iLCJvcGVuIiwic2VuZCIsIm9uY2xvc2UiLCJjbG9zZSIsIm9uZXJyb3IiLCJvbm1lc3NhZ2UiLCJkYXRhIiwicGFyc2UiLCJyZWFkeVN0YXRlIiwiY3VzdG9tQWdlbnQiLCJjbGllbnRBZ2VudCIsInVzZXJJZCIsInVzZXJJZEZyb21Ub2tlbiIsInBhcnNlVG9rZW4iLCJ0ZXN0IiwiSW52YWxpZFRva2VuRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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QUNIOzs7V0FFRCxtQkFBVUMsTUFBVixFQUEwQjtBQUN0QixVQUFJLEtBQUt2RyxpQkFBTCxDQUF1Qm9CLFFBQXZCLE9BQXNDM0csZ0JBQWdCLENBQUMyRixNQUEzRCxFQUFtRTtBQUMvRCxjQUFNLElBQUl0RixLQUFKLENBQVUsdURBQVYsQ0FBTjtBQUNIOztBQUVELFVBQU0wTCxlQUFlLEdBQUcsS0FBS0MsVUFBTCxDQUFnQixLQUFLeEksS0FBckIsQ0FBeEI7O0FBQ0EsVUFBSXVJLGVBQUosRUFBcUI7QUFDakIsZUFBTzdJLE9BQU8sQ0FBQ2UsSUFBUixDQUFhLDBFQUFiLENBQVA7QUFDSDs7QUFFRCxVQUFJLE9BQVFnSSxJQUFSLENBQWFILE1BQWIsQ0FBSixFQUEwQjtBQUN0QixlQUFPNUksT0FBTyxDQUFDZSxJQUFSLENBQWEsMkhBQWIsQ0FBUDtBQUNIOztBQUVELFdBQUsrQyx5QkFBTCxHQUFpQzhFLE1BQWpDO0FBQ0g7OztXQUVELG9CQUFtQnRJLEtBQW5CLEVBQWtDO0FBQzlCLFVBQUk7QUFDQSxvQkFBaUIsMkJBQXNCQSxLQUF0QixDQUFqQjtBQUFBLFlBQVFzRCxJQUFSLFNBQVFBLElBQVI7O0FBQ0EsZUFBT0EsSUFBUDtBQUNILE9BSEQsQ0FHRSxPQUFPa0IsQ0FBUCxFQUFVO0FBQ1IsWUFBSUEsQ0FBQyxZQUFZa0UsNEJBQWpCLEVBQW9DO0FBQ2hDLGlCQUFPeEksU0FBUDtBQUNIO0FBQ0o7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJztcbmltcG9ydCAndXJsLXNlYXJjaC1wYXJhbXMtcG9seWZpbGwnO1xuaW1wb3J0IHsgQWpheFJlc3BvbnNlLCBBamF4Q3JlYXRpb25NZXRob2QsIEFqYXhSZXF1ZXN0LCBBamF4RXJyb3IgfSBmcm9tICdyeGpzL29ic2VydmFibGUvZG9tL0FqYXhPYnNlcnZhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xuaW1wb3J0IHsgSVNjaGVkdWxlciB9IGZyb20gJ3J4anMvU2NoZWR1bGVyJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgYXN5bmMgYXMgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL3NjaGVkdWxlci9hc3luYyc7XG5pbXBvcnQgand0RGVjb2RlLCB7IEp3dFBheWxvYWQsIEludmFsaWRUb2tlbkVycm9yIH0gZnJvbSAnand0LWRlY29kZSc7XG5cbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY291bnQnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9kZWxheSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL2RvJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvZmlsdGVyJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWFwJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvbWVyZ2VNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9jb25jYXRNYXAnO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9yZXRyeVdoZW4nO1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9zaGFyZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL3Rha2UnO1xuXG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvZG9tL2FqYXgnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL2VtcHR5JztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9mcm9tJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9pbnRlcnZhbCc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvb2YnO1xuaW1wb3J0ICdyeGpzL2FkZC9vYnNlcnZhYmxlL3Rocm93JztcblxuaW1wb3J0IGRlZHVwZUZpbGVuYW1lcyBmcm9tICcuL2RlZHVwZUZpbGVuYW1lcyc7XG5pbXBvcnQgeyBvYmplY3RFeHByZXNzaW9uIH0gZnJvbSAnQGJhYmVsL3R5cGVzJztcblxuaW1wb3J0IHsgRGlyZWN0TGluZVN0cmVhbWluZyB9IGZyb20gJy4vZGlyZWN0TGluZVN0cmVhbWluZyc7XG5leHBvcnQgeyBEaXJlY3RMaW5lU3RyZWFtaW5nIH07XG5cbmNvbnN0IERJUkVDVF9MSU5FX1ZFUlNJT04gPSAnRGlyZWN0TGluZS8zLjAnO1xuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiB7XG4gICAgYXJjaDogc3RyaW5nO1xuICAgIGVudjoge1xuICAgICAgICBWRVJTSU9OOiBzdHJpbmc7XG4gICAgICAgIG5wbV9wYWNrYWdlX3ZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICAgIHBsYXRmb3JtOiBzdHJpbmc7XG4gICAgcmVsZWFzZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbn07XG5cbi8vIERpcmVjdCBMaW5lIDMuMCB0eXBlc1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvbiB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGVUYWc/OiBzdHJpbmcsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHJlZmVyZW5jZUdyYW1tYXJJZD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBNZWRpYVR5cGUgPSBcImltYWdlL3BuZ1wiIHwgXCJpbWFnZS9qcGdcIiB8IFwiaW1hZ2UvanBlZ1wiIHwgXCJpbWFnZS9naWZcIiB8IFwiaW1hZ2Uvc3ZnK3htbFwiIHwgXCJhdWRpby9tcGVnXCIgfCBcImF1ZGlvL21wNFwiIHwgXCJ2aWRlby9tcDRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNZWRpYSB7XG4gICAgY29udGVudFR5cGU6IE1lZGlhVHlwZSxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmtub3duTWVkaWF7XG4gICAgY29udGVudFR5cGU6IHN0cmluZyxcbiAgICBjb250ZW50VXJsOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0aHVtYm5haWxVcmw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2FyZEFjdGlvblR5cGVzID0gXCJjYWxsXCIgfCBcImRvd25sb2FkRmlsZVwifCBcImltQmFja1wiIHwgXCJtZXNzYWdlQmFja1wiIHwgXCJvcGVuVXJsXCIgfCBcInBsYXlBdWRpb1wiIHwgXCJwbGF5VmlkZW9cIiB8IFwicG9zdEJhY2tcIiB8IFwic2lnbmluXCIgfCBcInNob3dJbWFnZVwiO1xuXG5leHBvcnQgdHlwZSBDYXJkQWN0aW9uID0gQ2FsbENhcmRBY3Rpb24gfCBEb3dubG9hZEZpbGVDYXJkQWN0aW9uIHwgSU1CYWNrQ2FyZEFjdGlvbiB8IE1lc3NhZ2VCYWNrQ2FyZEFjdGlvbiB8IE9wZW5VUkxDYXJkQWN0aW9uIHwgUGxheUF1ZGlvQ2FyZEFjdGlvbiB8IFBsYXlWaWRlb0NhcmRBY3Rpb24gfCBQb3N0QmFja0NhcmRBY3Rpb24gfCBTaWduSW5DYXJkQWN0aW9uIHwgU2hvd0ltYWdlQ2FyZEFjdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxsQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImNhbGxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG93bmxvYWRGaWxlQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcImRvd25sb2FkRmlsZVwiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTUJhY2tDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICB0eXBlOiBcImltQmFja1wiLFxuICAgIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWVzc2FnZUJhY2tDYXJkQWN0aW9uID0gTWVzc2FnZUJhY2tXaXRoSW1hZ2UgfCBNZXNzYWdlQmFja1dpdGhUaXRsZVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VCYWNrV2l0aEltYWdlIHtcbiAgICBkaXNwbGF5VGV4dD86IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJtZXNzYWdlQmFja1wiLFxuICAgIHZhbHVlPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUJhY2tXaXRoVGl0bGUge1xuICAgIGRpc3BsYXlUZXh0Pzogc3RyaW5nLFxuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm1lc3NhZ2VCYWNrXCIsXG4gICAgdmFsdWU/OiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuVVJMQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcIm9wZW5VcmxcIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheUF1ZGlvQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICB0eXBlOiBcInBsYXlBdWRpb1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGF5VmlkZW9DYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwicGxheVZpZGVvXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc3RCYWNrQ2FyZEFjdGlvbiB7XG4gICAgaW1hZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgdHlwZTogXCJwb3N0QmFja1wiLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaG93SW1hZ2VDYXJkQWN0aW9uIHtcbiAgICBpbWFnZT86IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHR5cGU6IFwic2hvd0ltYWdlXCIsXG4gICAgdmFsdWU6IGFueVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbkNhcmRBY3Rpb24ge1xuICAgIGltYWdlPzogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgdHlwZTogXCJzaWduaW5cIixcbiAgICB2YWx1ZTogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FyZEltYWdlIHtcbiAgICBhbHQ/OiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlcm9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuaGVyb1wiLFxuICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBpbWFnZXM/OiBDYXJkSW1hZ2VbXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgdGFwPzogQ2FyZEFjdGlvblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHVtYm5haWwge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC50aHVtYm5haWxcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgaW1hZ2VzPzogQ2FyZEltYWdlW10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIHRhcD86IENhcmRBY3Rpb25cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmluIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuc2lnbmluXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0ZXh0Pzogc3RyaW5nLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQub2F1dGhcIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGNvbm5lY3Rpb25uYW1lOiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWlwdEl0ZW0ge1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIHN1YnRpdGxlPzogc3RyaW5nLFxuICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgaW1hZ2U/OiBDYXJkSW1hZ2UsXG4gICAgcHJpY2U/OiBzdHJpbmcsXG4gICAgcXVhbnRpdHk/OiBzdHJpbmcsXG4gICAgdGFwPzogQ2FyZEFjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5yZWNlaXB0XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgZmFjdHM/OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgICAgICAgaXRlbXM/OiBSZWNlaXB0SXRlbVtdLFxuICAgICAgICB0YXA/OiBDYXJkQWN0aW9uLFxuICAgICAgICB0YXg/OiBzdHJpbmcsXG4gICAgICAgIHZhdD86IHN0cmluZyxcbiAgICAgICAgdG90YWw/OiBzdHJpbmcsXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW11cbiAgICB9XG59XG5cbi8vIERlcHJlY2F0ZWQgZm9ybWF0IGZvciBTa3lwZSBjaGFubmVscy4gRm9yIHRlc3RpbmcgbGVnYWN5IGJvdHMgaW4gRW11bGF0b3Igb25seS5cbmV4cG9ydCBpbnRlcmZhY2UgRmxleENhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5mbGV4XCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIGltYWdlcz86IENhcmRJbWFnZVtdLFxuICAgICAgICBidXR0b25zPzogQ2FyZEFjdGlvbltdLFxuICAgICAgICBhc3BlY3Q/OiBzdHJpbmdcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYXVkaW9cIixcbiAgICBjb250ZW50OiB7XG4gICAgICAgIHRpdGxlPzogc3RyaW5nLFxuICAgICAgICBzdWJ0aXRsZT86IHN0cmluZyxcbiAgICAgICAgdGV4dD86IHN0cmluZyxcbiAgICAgICAgbWVkaWE/OiB7IHVybDogc3RyaW5nLCBwcm9maWxlPzogc3RyaW5nIH1bXSxcbiAgICAgICAgYnV0dG9ucz86IENhcmRBY3Rpb25bXSxcbiAgICAgICAgYXV0b2xvb3A/OiBib29sZWFuLFxuICAgICAgICBhdXRvc3RhcnQ/OiBib29sZWFuXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZGVvQ2FyZCB7XG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5jYXJkLnZpZGVvXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGFwdGl2ZUNhcmQge1xuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuY2FyZC5hZGFwdGl2ZVwiLFxuICAgIGNvbnRlbnQ6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbmltYXRpb25DYXJkIHtcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LmNhcmQuYW5pbWF0aW9uXCIsXG4gICAgY29udGVudDoge1xuICAgICAgICB0aXRsZT86IHN0cmluZyxcbiAgICAgICAgc3VidGl0bGU/OiBzdHJpbmcsXG4gICAgICAgIHRleHQ/OiBzdHJpbmcsXG4gICAgICAgIG1lZGlhPzogeyB1cmw6IHN0cmluZywgcHJvZmlsZT86IHN0cmluZyB9W10sXG4gICAgICAgIGJ1dHRvbnM/OiBDYXJkQWN0aW9uW10sXG4gICAgICAgIGltYWdlPzogeyB1cmw6IHN0cmluZywgYWx0Pzogc3RyaW5nIH0sXG4gICAgICAgIGF1dG9sb29wPzogYm9vbGVhbixcbiAgICAgICAgYXV0b3N0YXJ0PzogYm9vbGVhblxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgS25vd25NZWRpYSA9IE1lZGlhIHwgSGVyb0NhcmQgfCBUaHVtYm5haWwgfCBTaWduaW4gfCBPQXV0aCB8IFJlY2VpcHQgfCBBdWRpb0NhcmQgfCBWaWRlb0NhcmQgfCBBbmltYXRpb25DYXJkIHwgRmxleENhcmQgfCBBZGFwdGl2ZUNhcmQ7XG5leHBvcnQgdHlwZSBBdHRhY2htZW50ID0gS25vd25NZWRpYSB8IFVua25vd25NZWRpYTtcblxuZXhwb3J0IHR5cGUgVXNlclJvbGUgPSBcImJvdFwiIHwgXCJjaGFubmVsXCIgfCBcInVzZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgaWNvblVybD86IHN0cmluZyxcbiAgICByb2xlPzogVXNlclJvbGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aXZpdHkge1xuICAgIHR5cGU6IHN0cmluZyxcbiAgICBjaGFubmVsRGF0YT86IGFueSxcbiAgICBjaGFubmVsSWQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uPzogeyBpZDogc3RyaW5nIH0sXG4gICAgZVRhZz86IHN0cmluZyxcbiAgICBmcm9tOiBVc2VyLFxuICAgIGlkPzogc3RyaW5nLFxuICAgIHRpbWVzdGFtcD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50TGF5b3V0ID0gXCJsaXN0XCIgfCBcImNhcm91c2VsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSBleHRlbmRzIElBY3Rpdml0eSB7XG4gICAgdHlwZTogXCJtZXNzYWdlXCIsXG4gICAgdGV4dD86IHN0cmluZyxcbiAgICBsb2NhbGU/OiBzdHJpbmcsXG4gICAgdGV4dEZvcm1hdD86IFwicGxhaW5cIiB8IFwibWFya2Rvd25cIiB8IFwieG1sXCIsXG4gICAgYXR0YWNobWVudExheW91dD86IEF0dGFjaG1lbnRMYXlvdXQsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50W10sXG4gICAgZW50aXRpZXM/OiBhbnlbXSxcbiAgICBzdWdnZXN0ZWRBY3Rpb25zPzogeyBhY3Rpb25zOiBDYXJkQWN0aW9uW10sIHRvPzogc3RyaW5nW10gfSxcbiAgICBzcGVhaz86IHN0cmluZyxcbiAgICBpbnB1dEhpbnQ/OiBzdHJpbmcsXG4gICAgdmFsdWU/OiBvYmplY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBpbmcgZXh0ZW5kcyBJQWN0aXZpdHkge1xuICAgIHR5cGU6IFwidHlwaW5nXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmVudEFjdGl2aXR5IGV4dGVuZHMgSUFjdGl2aXR5IHtcbiAgICB0eXBlOiBcImV2ZW50XCIsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnlcbn1cblxuZXhwb3J0IHR5cGUgQWN0aXZpdHkgPSBNZXNzYWdlIHwgVHlwaW5nIHwgRXZlbnRBY3Rpdml0eTtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpdml0eUdyb3VwIHtcbiAgICBhY3Rpdml0aWVzOiBBY3Rpdml0eVtdLFxuICAgIHdhdGVybWFyazogc3RyaW5nXG59XG5cbi8vIFRoZXNlIHR5cGVzIGFyZSBzcGVjaWZpYyB0byB0aGlzIGNsaWVudCBsaWJyYXJ5LCBub3QgdG8gRGlyZWN0IExpbmUgMy4wXG5cbmV4cG9ydCBlbnVtIENvbm5lY3Rpb25TdGF0dXMge1xuICAgIFVuaW5pdGlhbGl6ZWQsICAgICAgICAgICAgICAvLyB0aGUgc3RhdHVzIHdoZW4gdGhlIERpcmVjdExpbmUgb2JqZWN0IGlzIGZpcnN0IGNyZWF0ZWQvY29uc3RydWN0ZWRcbiAgICBDb25uZWN0aW5nLCAgICAgICAgICAgICAgICAgLy8gY3VycmVudGx5IHRyeWluZyB0byBjb25uZWN0IHRvIHRoZSBjb252ZXJzYXRpb25cbiAgICBPbmxpbmUsICAgICAgICAgICAgICAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byB0aGUgY29udmVyc2F0aW9uLiBDb25uZWN0aW9uIGlzIGhlYWx0aHkgc28gZmFyIGFzIHdlIGtub3cuXG4gICAgRXhwaXJlZFRva2VuLCAgICAgICAgICAgICAgIC8vIGxhc3Qgb3BlcmF0aW9uIGVycm9yZWQgb3V0IHdpdGggYW4gZXhwaXJlZCB0b2tlbi4gUG9zc2libHkgd2FpdGluZyBmb3Igc29tZW9uZSB0byBzdXBwbHkgYSBuZXcgb25lLlxuICAgIEZhaWxlZFRvQ29ubmVjdCwgICAgICAgICAgICAvLyB0aGUgaW5pdGlhbCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gdGhlIGNvbnZlcnNhdGlvbiBmYWlsZWQuIE5vIHJlY292ZXJ5IHBvc3NpYmxlLlxuICAgIEVuZGVkICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYm90IGVuZGVkIHRoZSBjb252ZXJzYXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RMaW5lT3B0aW9ucyB7XG4gICAgc2VjcmV0Pzogc3RyaW5nLFxuICAgIHRva2VuPzogc3RyaW5nLFxuICAgIGNvbnZlcnNhdGlvbklkPzogc3RyaW5nLFxuICAgIHdhdGVybWFyaz86IHN0cmluZyxcbiAgICBkb21haW4/OiBzdHJpbmcsXG4gICAgd2ViU29ja2V0PzogYm9vbGVhbixcbiAgICBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXIsXG4gICAgc3RyZWFtVXJsPzogc3RyaW5nLFxuICAgIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgLy8gQXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIHRvIGlkZW50aWZ5IHJlcXVlc3RpbmcgYWdlbnQuXG4gICAgYm90QWdlbnQ/OiBzdHJpbmcsXG4gICAgY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzPzogYW55XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZXMge1xuICAgIHNjaGVkdWxlcjogSVNjaGVkdWxlcjtcbiAgICBXZWJTb2NrZXQ6IHR5cGVvZiBXZWJTb2NrZXQ7XG4gICAgYWpheDogQWpheENyZWF0aW9uTWV0aG9kO1xuICAgIHJhbmRvbTogKCkgPT4gbnVtYmVyO1xufVxuXG5jb25zdCB3cmFwQWpheFdpdGhSZXRyeSA9IChzb3VyY2U6IEFqYXhDcmVhdGlvbk1ldGhvZCwgc2NoZWR1bGVyOiBJU2NoZWR1bGVyKTogQWpheENyZWF0aW9uTWV0aG9kID0+e1xuXG4gICAgY29uc3Qgbm90SW1wbGVtZW50ZWQgPSAoKTogbmV2ZXIgPT4geyB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpOyB9O1xuXG4gICAgY29uc3QgaW5uZXIgPSAocmVzcG9uc2UkIDogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZSRcbiAgICAgICAgLmNhdGNoPEFqYXhSZXNwb25zZSwgQWpheFJlc3BvbnNlPigoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZihlcnIuc3RhdHVzID09PSA0Mjkpe1xuICAgICAgICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJWYWx1ZSA9IGVyci54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IE51bWJlcihyZXRyeUFmdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmKCFpc05hTihyZXRyeUFmdGVyKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRpbWVyKHJldHJ5QWZ0ZXIsIHNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoXyA9PiBPYnNlcnZhYmxlLnRocm93KGVyciwgc2NoZWR1bGVyKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnIsIHNjaGVkdWxlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvdXRlciA9ICh1cmxPclJlcXVlc3Q6IHN0cmluZ3wgQWpheFJlcXVlc3QpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyKHNvdXJjZSh1cmxPclJlcXVlc3QpKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob3V0ZXIsIHtcbiAgICAgICAgZ2V0OiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgcG9zdDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHB1dDogKHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxBamF4UmVzcG9uc2U+ID0+IG5vdEltcGxlbWVudGVkKCksXG4gICAgICAgIHBhdGNoOiAodXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZGVsZXRlOiAodXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBPYmplY3QpOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPT4gbm90SW1wbGVtZW50ZWQoKSxcbiAgICAgICAgZ2V0SlNPTjogPFQ+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogT2JqZWN0KTogT2JzZXJ2YWJsZTxUPiA9PiBub3RJbXBsZW1lbnRlZCgpXG4gICAgfSk7XG59XG5cbmNvbnN0IG1ha2VTZXJ2aWNlcyA9IChzZXJ2aWNlczogUGFydGlhbDxTZXJ2aWNlcz4pOiBTZXJ2aWNlcyA9PiB7XG4gICAgY29uc3Qgc2NoZWR1bGVyID0gc2VydmljZXMuc2NoZWR1bGVyIHx8IEFzeW5jU2NoZWR1bGVyO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVkdWxlcixcbiAgICAgICAgYWpheDogd3JhcEFqYXhXaXRoUmV0cnkoc2VydmljZXMuYWpheCB8fCBPYnNlcnZhYmxlLmFqYXgsIHNjaGVkdWxlciksXG4gICAgICAgIFdlYlNvY2tldDogc2VydmljZXMuV2ViU29ja2V0IHx8IFdlYlNvY2tldCxcbiAgICAgICAgcmFuZG9tOiBzZXJ2aWNlcy5yYW5kb20gfHwgTWF0aC5yYW5kb20sXG4gICAgfVxufVxuXG5jb25zdCBsaWZldGltZVJlZnJlc2hUb2tlbiA9IDMwICogNjAgKiAxMDAwO1xuY29uc3QgaW50ZXJ2YWxSZWZyZXNoVG9rZW4gPSBsaWZldGltZVJlZnJlc2hUb2tlbiAvIDI7XG5cbmNvbnN0IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQ6IG51bWJlciA9IDIwMDsgLy9tc1xuXG5jb25zdCBlcnJvckV4cGlyZWRUb2tlbiA9IG5ldyBFcnJvcihcImV4cGlyZWQgdG9rZW5cIik7XG5jb25zdCBlcnJvckNvbnZlcnNhdGlvbkVuZGVkID0gbmV3IEVycm9yKFwiY29udmVyc2F0aW9uIGVuZGVkXCIpO1xuY29uc3QgZXJyb3JGYWlsZWRUb0Nvbm5lY3QgPSBuZXcgRXJyb3IoXCJmYWlsZWQgdG8gY29ubmVjdFwiKTtcblxuY29uc3Qga29uc29sZSA9IHtcbiAgICBsb2c6IChtZXNzYWdlPzogYW55LCAuLi4gb3B0aW9uYWxQYXJhbXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAod2luZG93IGFzIGFueSlbXCJib3RjaGF0RGVidWdcIl0gJiYgbWVzc2FnZSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLiBvcHRpb25hbFBhcmFtcyk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCb3RDb25uZWN0aW9uIHtcbiAgICBjb25uZWN0aW9uU3RhdHVzJDogQmVoYXZpb3JTdWJqZWN0PENvbm5lY3Rpb25TdGF0dXM+LFxuICAgIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT4sXG4gICAgZW5kKCk6IHZvaWQsXG4gICAgcmVmZXJlbmNlR3JhbW1hcklkPzogc3RyaW5nLFxuICAgIHBvc3RBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiBPYnNlcnZhYmxlPHN0cmluZz4sXG4gICAgZ2V0U2Vzc2lvbklkPyA6ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPlxufVxuXG5leHBvcnQgY2xhc3MgRGlyZWN0TGluZSBpbXBsZW1lbnRzIElCb3RDb25uZWN0aW9uIHtcbiAgICBwdWJsaWMgY29ubmVjdGlvblN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KENvbm5lY3Rpb25TdGF0dXMuVW5pbml0aWFsaXplZCk7XG4gICAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgICBwcml2YXRlIGRvbWFpbiA9IFwiaHR0cHM6Ly9kaXJlY3RsaW5lLmJvdGZyYW1ld29yay5jb20vdjMvZGlyZWN0bGluZVwiO1xuICAgIHByaXZhdGUgd2ViU29ja2V0OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIHByaXZhdGUgZXhwaXJlZFRva2VuRXhoYXVzdGlvbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBzZWNyZXQ6IHN0cmluZztcbiAgICBwcml2YXRlIHRva2VuOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSB3YXRlcm1hcmsgPSAnJztcbiAgICBwcml2YXRlIHN0cmVhbVVybDogc3RyaW5nO1xuICAgIHByaXZhdGUgX2JvdEFnZW50ID0gJyc7XG4gICAgcHJpdmF0ZSBzZXJ2aWNlczogU2VydmljZXM7XG4gICAgcHJpdmF0ZSBfdXNlckFnZW50OiBzdHJpbmc7XG4gICAgcHVibGljIHJlZmVyZW5jZUdyYW1tYXJJZDogc3RyaW5nO1xuICAgIHByaXZhdGUgdGltZW91dCA9IDIwICogMTAwMDtcbiAgICBwcml2YXRlIHJldHJpZXM6IG51bWJlcjtcblxuICAgIHByaXZhdGUgbG9jYWxlT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgdXNlcklkT25TdGFydENvbnZlcnNhdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciA9IDEwMDA7IC8vbXNcblxuICAgIHByaXZhdGUgdG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lT3B0aW9ucyAmIFBhcnRpYWw8U2VydmljZXM+KSB7XG4gICAgICAgIHRoaXMuc2VjcmV0ID0gb3B0aW9ucy5zZWNyZXQ7XG4gICAgICAgIHRoaXMudG9rZW4gPSBvcHRpb25zLnNlY3JldCB8fCBvcHRpb25zLnRva2VuO1xuICAgICAgICB0aGlzLndlYlNvY2tldCA9IChvcHRpb25zLndlYlNvY2tldCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMud2ViU29ja2V0KSAmJiB0eXBlb2YgV2ViU29ja2V0ICE9PSAndW5kZWZpbmVkJyAmJiBXZWJTb2NrZXQgIT09IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAob3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMgJiYgb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9wdGlvbnMuY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSkgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uID0gb3B0aW9ucy5jb252ZXJzYXRpb25TdGFydFByb3BlcnRpZXMubG9jYWxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogY29udmVyc2F0aW9uU3RhcnRQcm9wZXJ0aWVzLmxvY2FsZSB3YXMgaWdub3JlZDogdGhlIGxvY2FsZSBuYW1lIG1heSBiZSBhIEJDUCA0NyBsYW5ndWFnZSB0YWcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgICAgICAgdGhpcy5kb21haW4gPSBvcHRpb25zLmRvbWFpbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmNvbnZlcnNhdGlvbklkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gb3B0aW9ucy5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLndhdGVybWFyaykge1xuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSAgb3B0aW9ucy53YXRlcm1hcms7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5zdHJlYW1VcmwpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnRva2VuICYmIG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IG9wdGlvbnMuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0RpcmVjdExpbmVKUzogc3RyZWFtVXJsIHdhcyBpZ25vcmVkOiB5b3UgbmVlZCB0byBwcm92aWRlIGEgdG9rZW4gYW5kIGEgY29udmVyc2F0aW9uaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLnRpbWVvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXRyaWVzID0gKGxpZmV0aW1lUmVmcmVzaFRva2VuIC0gaW50ZXJ2YWxSZWZyZXNoVG9rZW4pIC8gdGhpcy50aW1lb3V0O1xuXG4gICAgICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgICAgICB0aGlzLnNlcnZpY2VzID0gbWFrZVNlcnZpY2VzKG9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA9IH5+b3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWw7XG5cbiAgICAgICAgaWYgKHBhcnNlZFBvbGxpbmdJbnRlcnZhbCA8IFBPTExJTkdfSU5URVJWQUxfTE9XRVJfQk9VTkQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEaXJlY3RMaW5lSlM6IHByb3ZpZGVkIHBvbGxpbmdJbnRlcnZhbCAoJHsgb3B0aW9ucy5wb2xsaW5nSW50ZXJ2YWwgfSkgaXMgdW5kZXIgbG93ZXIgYm91bmQgKDIwMG1zKSwgdXNpbmcgZGVmYXVsdCBvZiAxMDAwbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcGFyc2VkUG9sbGluZ0ludGVydmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uID0gdGhpcy5zZXRDb25uZWN0aW9uU3RhdHVzRmFsbGJhY2soXG4gICAgICAgICAgICBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbixcbiAgICAgICAgICAgIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0LFxuICAgICAgICAgICAgNVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYWN0aXZpdHkkID0gKHRoaXMud2ViU29ja2V0XG4gICAgICAgICAgICA/IHRoaXMud2ViU29ja2V0QWN0aXZpdHkkKClcbiAgICAgICAgICAgIDogdGhpcy5wb2xsaW5nR2V0QWN0aXZpdHkkKClcbiAgICAgICAgKS5zaGFyZSgpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IHRpbWUgd2UncmUgYWJvdXQgdG8gbWFrZSBhIERpcmVjdCBMaW5lIFJFU1QgY2FsbCwgd2UgY2FsbCB0aGlzIGZpcnN0IHRvIHNlZSBjaGVjayB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXR1cy5cbiAgICAvLyBFaXRoZXIgdGhyb3dzIGFuIGVycm9yIChpbmRpY2F0aW5nIGFuIGVycm9yIHN0YXRlKSBvciBlbWl0cyBhIG51bGwsIGluZGljYXRpbmcgYSAocHJlc3VtYWJseSkgaGVhbHRoeSBjb25uZWN0aW9uXG4gICAgcHJpdmF0ZSBjaGVja0Nvbm5lY3Rpb24ob25jZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBvYnMgPSAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJFxuICAgICAgICAuZmxhdE1hcChjb25uZWN0aW9uU3RhdHVzID0+IHtcbiAgICAgICAgICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcblxuICAgICAgICAgICAgICAgIC8vaWYgdG9rZW4gYW5kIHN0cmVhbVVybCBhcmUgZGVmaW5lZCBpdCBtZWFucyByZWNvbm5lY3QgaGFzIGFscmVhZHkgYmVlbiBkb25lLiBTa2lwcGluZyBpdC5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnN0cmVhbVVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihjb25uZWN0aW9uU3RhdHVzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRDb252ZXJzYXRpb24oKS5kbyhjb252ZXJzYXRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb252ZXJzYXRpb25JZCA9IGNvbnZlcnNhdGlvbi5jb252ZXJzYXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLnNlY3JldCB8fCBjb252ZXJzYXRpb24udG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbVVybCA9IGNvbnZlcnNhdGlvbi5zdHJlYW1Vcmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZUdyYW1tYXJJZCA9IGNvbnZlcnNhdGlvbi5yZWZlcmVuY2VHcmFtbWFySWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VjcmV0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuTG9vcCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5GYWlsZWRUb0Nvbm5lY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAubWFwKF8gPT4gY29ubmVjdGlvblN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKGNvbm5lY3Rpb25TdGF0dXMgPT4gY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLlVuaW5pdGlhbGl6ZWQgJiYgY29ubmVjdGlvblN0YXR1cyAhPSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpXG4gICAgICAgIC5mbGF0TWFwKGNvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChjb25uZWN0aW9uU3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckNvbnZlcnNhdGlvbkVuZGVkLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG5cbiAgICAgICAgICAgICAgICBjYXNlIENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvckZhaWxlZFRvQ29ubmVjdCwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoY29ubmVjdGlvblN0YXR1cywgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBvbmNlID8gb2JzLnRha2UoMSkgOiBvYnM7XG4gICAgfVxuXG4gICAgc2V0Q29ubmVjdGlvblN0YXR1c0ZhbGxiYWNrKFxuICAgICAgICBjb25uZWN0aW9uU3RhdHVzRnJvbTogQ29ubmVjdGlvblN0YXR1cyxcbiAgICAgICAgY29ubmVjdGlvblN0YXR1c1RvOiBDb25uZWN0aW9uU3RhdHVzLFxuICAgICAgICBtYXhBdHRlbXB0cyA9IDVcbiAgICApIHtcbiAgICAgICAgbWF4QXR0ZW1wdHMtLTtcbiAgICAgICAgbGV0IGF0dGVtcHRzID0gMDtcbiAgICAgICAgbGV0IGN1cnJTdGF0dXMgPSBudWxsO1xuICAgICAgICByZXR1cm4gKHN0YXR1czogQ29ubmVjdGlvblN0YXR1cyk6IENvbm5lY3Rpb25TdGF0dXMgPT4ge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gY29ubmVjdGlvblN0YXR1c0Zyb20gJiYgY3VyclN0YXR1cyA9PT0gc3RhdHVzICYmIGF0dGVtcHRzID49IG1heEF0dGVtcHRzKSB7XG4gICAgICAgICAgICAgICAgYXR0ZW1wdHMgPSAwXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25TdGF0dXNUbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dGVtcHRzKys7XG4gICAgICAgICAgICBjdXJyU3RhdHVzID0gc3RhdHVzO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cGlyZWRUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvblN0YXR1cyA9IHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT0gQ29ubmVjdGlvblN0YXR1cy5FbmRlZCAmJiBjb25uZWN0aW9uU3RhdHVzICE9IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KVxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRXhwaXJlZFRva2VuKTtcblxuICAgICAgICBjb25zdCBwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzID0gdGhpcy5leHBpcmVkVG9rZW5FeGhhdXN0aW9uKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSk7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChwcm90ZWN0ZWRDb25uZWN0aW9uU3RhdHVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0Q29udmVyc2F0aW9uKCkge1xuICAgICAgICAvL2lmIGNvbnZlcnNhdGlvbmlkIGlzIHNldCBoZXJlLCBpdCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgdGhlIHJlY29ubmVjdCBhcGksIGVsc2UgaXQgaXMgYSBuZXcgY29udmVyc2F0aW9uXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gYCR7dGhpcy5kb21haW59L2NvbnZlcnNhdGlvbnMvJHt0aGlzLmNvbnZlcnNhdGlvbklkfT93YXRlcm1hcms9JHt0aGlzLndhdGVybWFya31gXG4gICAgICAgICAgICA6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zYDtcbiAgICAgICAgY29uc3QgbWV0aG9kID0gdGhpcy5jb252ZXJzYXRpb25JZCA/IFwiR0VUXCIgOiBcIlBPU1RcIjtcbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuY29udmVyc2F0aW9uSWRcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICB1c2VyOiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb25cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGVPblN0YXJ0Q29udmVyc2F0aW9uXG4gICAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgbWV0aG9kLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBcIkFjY2VwdFwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuLy8gICAgICAuZG8oYWpheFJlc3BvbnNlID0+IGtvbnNvbGUubG9nKFwiY29udmVyc2F0aW9uIGFqYXhSZXNwb25zZVwiLCBhamF4UmVzcG9uc2UucmVzcG9uc2UpKVxuICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UgYXMgQ29udmVyc2F0aW9uKVxuICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PlxuICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSBkZWVtIDR4eCBhbmQgNXh4IGVycm9ycyBhcyB1bnJlY292ZXJhYmxlXG4gICAgICAgICAgICAvLyBmb3IgZXZlcnl0aGluZyBlbHNlICh0aW1lb3V0cyksIHJldHJ5IGZvciBhIHdoaWxlXG4gICAgICAgICAgICBlcnJvciQubWVyZ2VNYXAoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yLnN0YXR1cyA+PSA0MDAgJiYgZXJyb3Iuc3RhdHVzIDwgNjAwXG4gICAgICAgICAgICAgICAgPyBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICA6IE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgLnRha2UodGhpcy5yZXRyaWVzKVxuICAgICAgICApXG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoVG9rZW5Mb29wKCkge1xuICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiA9IE9ic2VydmFibGUuaW50ZXJ2YWwoaW50ZXJ2YWxSZWZyZXNoVG9rZW4sIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAuZmxhdE1hcChfID0+IHRoaXMucmVmcmVzaFRva2VuKCkpXG4gICAgICAgIC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAga29uc29sZS5sb2coXCJyZWZyZXNoaW5nIHRva2VuXCIsIHRva2VuLCBcImF0XCIsIG5ldyBEYXRlKCkpO1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm1hcChhamF4UmVzcG9uc2UgPT4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnRva2VuIGFzIHN0cmluZylcbiAgICAgICAgICAgIC5yZXRyeVdoZW4oZXJyb3IkID0+IGVycm9yJFxuICAgICAgICAgICAgICAgIC5tZXJnZU1hcChlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHRva2VuIGlzIGV4cGlyZWQgdGhlcmUncyBubyByZWFzb24gdG8ga2VlcCB0cnlpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm90IGlzIGdvbmUsIHdlIHNob3VsZCBzdG9wIHJldHJ5aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoZXJyb3IsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kZWxheSh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgICAgIC50YWtlKHRoaXMucmV0cmllcylcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWNvbm5lY3QoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb24pIHtcbiAgICAgICAgdGhpcy50b2tlbiA9IGNvbnZlcnNhdGlvbi50b2tlbjtcbiAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSBjb252ZXJzYXRpb24uc3RyZWFtVXJsO1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbilcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLk9ubGluZSk7XG4gICAgfVxuXG4gICAgZW5kKCkge1xuICAgICAgICBpZiAodGhpcy50b2tlblJlZnJlc2hTdWJzY3JpcHRpb24pXG4gICAgICAgICAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gZXJyb3JDb252ZXJzYXRpb25FbmRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFNlc3Npb25JZCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICAvLyBJZiB3ZSdyZSBub3QgY29ubmVjdGVkIHRvIHRoZSBib3QsIGdldCBjb25uZWN0ZWRcbiAgICAgICAgLy8gV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB3ZSBhcmUgbm90IGNvbm5lY3RlZFxuICAgICAgICBrb25zb2xlLmxvZyhcImdldFNlc3Npb25JZFwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9zZXNzaW9uL2dldHNlc3Npb25pZGAsXG4gICAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhSZXNwb25zZSAmJiBhamF4UmVzcG9uc2UucmVzcG9uc2UgJiYgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgcmVzcG9uc2U6IFwiICsgYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWpheFJlc3BvbnNlLnJlc3BvbnNlLnNlc3Npb25JZCBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJnZXRTZXNzaW9uSWQgZXJyb3I6IFwiICsgZXJyb3Iuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUub2YoJycsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hFeHBpcmVkVG9rZW4oZXJyb3IpKTtcbiAgICB9XG5cbiAgICBwb3N0QWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KSB7XG4gICAgICAgIC8vIElmIHVzZXIgaWQgaXMgc2V0LCBjaGVjayBpZiBpdCBtYXRjaCBhY3Rpdml0eS5mcm9tLmlkIGFuZCBhbHdheXMgb3ZlcnJpZGUgaXQgaW4gYWN0aXZpdHlcbiAgICAgICAgaWYgKHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbiAmJiBhY3Rpdml0eS5mcm9tICYmIGFjdGl2aXR5LmZyb20uaWQgIT09IHRoaXMudXNlcklkT25TdGFydENvbnZlcnNhdGlvbikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IEFjdGl2aXR5LmZyb20uaWQgZG9lcyBub3QgbWF0Y2ggd2l0aCB1c2VyIGlkLCBpZ25vcmluZyBhY3Rpdml0eS5mcm9tLmlkJyk7XG4gICAgICAgICAgICBhY3Rpdml0eS5mcm9tLmlkID0gdGhpcy51c2VySWRPblN0YXJ0Q29udmVyc2F0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFVzZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyBmb3IgbWVzc2FnZXMgd2l0aCBhdHRhY2htZW50cyB0aGF0IGFyZSBsb2NhbCBmaWxlcyAoZS5nLiBhbiBpbWFnZSB0byB1cGxvYWQpXG4gICAgICAgIC8vIFRlY2huaWNhbGx5IHdlIGNvdWxkIHVzZSBpdCBmb3IgKmFsbCogYWN0aXZpdGllcywgYnV0IHBvc3RBY3Rpdml0eSBpcyBtdWNoIGxpZ2h0ZXIgd2VpZ2h0XG4gICAgICAgIC8vIFNvLCBzaW5jZSBXZWJDaGF0IGlzIHBhcnRpYWxseSBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXJlY3QgTGluZSwgd2UgaW1wbGVtZW50IGJvdGguXG4gICAgICAgIGlmIChhY3Rpdml0eS50eXBlID09PSBcIm1lc3NhZ2VcIiAmJiBhY3Rpdml0eS5hdHRhY2htZW50cyAmJiBhY3Rpdml0eS5hdHRhY2htZW50cy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIGtvbnNvbGUubG9nKFwicG9zdEFjdGl2aXR5XCIsIGFjdGl2aXR5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tDb25uZWN0aW9uKHRydWUpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICB1cmw6IGAke3RoaXMuZG9tYWlufS9jb252ZXJzYXRpb25zLyR7dGhpcy5jb252ZXJzYXRpb25JZH0vYWN0aXZpdGllc2AsXG4gICAgICAgICAgICAgICAgYm9keTogYWN0aXZpdHksXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoRXhwaXJlZFRva2VuKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0TWVzc2FnZVdpdGhBdHRhY2htZW50cyhtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMgfSA9IG1lc3NhZ2U7XG4gICAgICAgIC8vIFdlIGNsZWFuIHRoZSBhdHRhY2htZW50cyBidXQgbWFraW5nIHN1cmUgZXZlcnkgYXR0YWNobWVudCBoYXMgdW5pcXVlIG5hbWUuXG4gICAgICAgIC8vIElmIHRoZSBmaWxlIGRvIG5vdCBoYXZlIGEgbmFtZSwgQ2hyb21lIHdpbGwgYXNzaWduIFwiYmxvYlwiIHdoZW4gaXQgaXMgYXBwZW5kZWQgdG8gRm9ybURhdGEuXG4gICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lczogc3RyaW5nW10gPSBkZWR1cGVGaWxlbmFtZXMoYXR0YWNobWVudHMubWFwKChtZWRpYTogTWVkaWEpID0+IG1lZGlhLm5hbWUgfHwgJ2Jsb2InKSk7XG4gICAgICAgIGNvbnN0IGNsZWFuc2VkQXR0YWNobWVudHMgPSBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQ6IE1lZGlhLCBpbmRleDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgICAgLi4uYXR0YWNobWVudCxcbiAgICAgICAgICAgIG5hbWU6IGF0dGFjaG1lbnROYW1lc1tpbmRleF1cbiAgICAgICAgfSkpO1xuICAgICAgICBsZXQgZm9ybURhdGE6IEZvcm1EYXRhO1xuXG4gICAgICAgIC8vIElmIHdlJ3JlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGJvdCwgZ2V0IGNvbm5lY3RlZFxuICAgICAgICAvLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHdlIGFyZSBub3QgY29ubmVjdGVkXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbih0cnVlKVxuICAgICAgICAuZmxhdE1hcChfID0+IHtcbiAgICAgICAgICAgIC8vIFRvIHNlbmQgdGhpcyBtZXNzYWdlIHRvIERpcmVjdExpbmUgd2UgbmVlZCB0byBkZWNvbnN0cnVjdCBpdCBpbnRvIGEgXCJ0ZW1wbGF0ZVwiIGFjdGl2aXR5XG4gICAgICAgICAgICAvLyBhbmQgb25lIGJsb2IgZm9yIGVhY2ggYXR0YWNobWVudC5cbiAgICAgICAgICAgIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FjdGl2aXR5JywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAuLi5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIFJlbW92aW5nIGNvbnRlbnRVcmwgZnJvbSBhdHRhY2htZW50LCB3ZSB3aWxsIHNlbmQgaXQgdmlhIG11bHRpcGFydFxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzOiBjbGVhbnNlZEF0dGFjaG1lbnRzLm1hcCgoeyBjb250ZW50VXJsOiBzdHJpbmcsIC4uLm90aGVycyB9KSA9PiAoeyAuLi5vdGhlcnMgfSkpXG4gICAgICAgICAgICB9KV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknIH0pKTtcblxuICAgICAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShjbGVhbnNlZEF0dGFjaG1lbnRzLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgIC5mbGF0TWFwKChtZWRpYTogTWVkaWEpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1lZGlhLmNvbnRlbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmRvKGFqYXhSZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBuZXcgQmxvYihbYWpheFJlc3BvbnNlLnJlc3BvbnNlXSwgeyB0eXBlOiBtZWRpYS5jb250ZW50VHlwZSB9KSwgbWVkaWEubmFtZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuY291bnQoKVxuICAgICAgICB9KVxuICAgICAgICAuZmxhdE1hcChfID0+XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmFqYXgoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VwbG9hZD91c2VySWQ9JHttZXNzYWdlLmZyb20uaWR9YCxcbiAgICAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiB0aGlzLnRpbWVvdXQsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbW1vbkhlYWRlcnMoKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAubWFwKGFqYXhSZXNwb25zZSA9PiBhamF4UmVzcG9uc2UucmVzcG9uc2UuaWQgYXMgc3RyaW5nKVxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHRoaXMuY2F0Y2hQb3N0RXJyb3IoZXJyb3IpKVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLmNhdGNoUG9zdEVycm9yKGVycm9yKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXRjaFBvc3RFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMylcbiAgICAgICAgICAgIC8vIHRva2VuIGhhcyBleHBpcmVkICh3aWxsIGZhbGwgdGhyb3VnaCB0byByZXR1cm4gXCJyZXRyeVwiKVxuICAgICAgICAgICAgdGhpcy5leHBpcmVkVG9rZW4oKTtcbiAgICAgICAgZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID49IDQwMCAmJiBlcnJvci5zdGF0dXMgPCA1MDApXG4gICAgICAgICAgICAvLyBtb3JlIHVucmVjb3ZlcmFibGUgZXJyb3JzXG4gICAgICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhlcnJvciwgdGhpcy5zZXJ2aWNlcy5zY2hlZHVsZXIpO1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5vZihcInJldHJ5XCIsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhdGNoRXhwaXJlZFRva2VuKGVycm9yOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID09PSBlcnJvckV4cGlyZWRUb2tlblxuICAgICAgICA/IE9ic2VydmFibGUub2YoXCJyZXRyeVwiLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgOiBPYnNlcnZhYmxlLnRocm93KGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb2xsaW5nR2V0QWN0aXZpdHkkKCkge1xuICAgICAgICBjb25zdCBwb2xsZXIkOiBPYnNlcnZhYmxlPEFqYXhSZXNwb25zZT4gPSBPYnNlcnZhYmxlLmNyZWF0ZSgoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxhbnk+KSA9PiB7XG4gICAgICAgICAgICAvLyBBIEJlaGF2aW9yU3ViamVjdCB0byB0cmlnZ2VyIHBvbGxpbmcuIFNpbmNlIGl0IGlzIGEgQmVoYXZpb3JTdWJqZWN0XG4gICAgICAgICAgICAvLyB0aGUgZmlyc3QgZXZlbnQgaXMgcHJvZHVjZWQgaW1tZWRpYXRlbHkuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSBEYXRlLm5vdywgdXNlIHJlYWN0aXZlIGludGVydmFsIHRvIHNwYWNlIG91dCBldmVyeSByZXF1ZXN0XG5cbiAgICAgICAgICAgIHRyaWdnZXIkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuYWpheCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb21tb25IZWFkZXJzKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgJHsgdGhpcy5kb21haW4gfS9jb252ZXJzYXRpb25zLyR7IHRoaXMuY29udmVyc2F0aW9uSWQgfS9hY3Rpdml0aWVzP3dhdGVybWFyaz0keyB0aGlzLndhdGVybWFyayB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHRoaXMudGltZW91dFxuICAgICAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0OiBBamF4UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIE1hdGgubWF4KDAsIHRoaXMucG9sbGluZ0ludGVydmFsIC0gRGF0ZS5ub3coKSArIHN0YXJ0VGltZXN0YW1wKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRyaWdnZXIkLm5leHQobnVsbCksIHRoaXMucG9sbGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0aGUgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24oKVxuICAgICAgICAuZmxhdE1hcChfID0+IHBvbGxlciRcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBPYnNlcnZhYmxlLmVtcHR5PEFqYXhSZXNwb25zZT4oKSlcbiAgICAgICAgICAgIC5tYXAoYWpheFJlc3BvbnNlID0+IGFqYXhSZXNwb25zZS5yZXNwb25zZSBhcyBBY3Rpdml0eUdyb3VwKVxuICAgICAgICAgICAgLmZsYXRNYXAoYWN0aXZpdHlHcm91cCA9PiB0aGlzLm9ic2VydmFibGVGcm9tQWN0aXZpdHlHcm91cChhY3Rpdml0eUdyb3VwKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2YWJsZUZyb21BY3Rpdml0eUdyb3VwKGFjdGl2aXR5R3JvdXA6IEFjdGl2aXR5R3JvdXApIHtcbiAgICAgICAgaWYgKGFjdGl2aXR5R3JvdXAud2F0ZXJtYXJrKVxuICAgICAgICAgICAgdGhpcy53YXRlcm1hcmsgPSBhY3Rpdml0eUdyb3VwLndhdGVybWFyaztcbiAgICAgICAgcmV0dXJuIE9ic2VydmFibGUuZnJvbShhY3Rpdml0eUdyb3VwLmFjdGl2aXRpZXMsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdlYlNvY2tldEFjdGl2aXR5JCgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrQ29ubmVjdGlvbigpXG4gICAgICAgIC5mbGF0TWFwKF8gPT5cbiAgICAgICAgICAgIHRoaXMub2JzZXJ2YWJsZVdlYlNvY2tldDxBY3Rpdml0eUdyb3VwPigpXG4gICAgICAgICAgICAvLyBXZWJTb2NrZXRzIGNhbiBiZSBjbG9zZWQgYnkgdGhlIHNlcnZlciBvciB0aGUgYnJvd3Nlci4gSW4gdGhlIGZvcm1lciBjYXNlIHdlIG5lZWQgdG9cbiAgICAgICAgICAgIC8vIHJldHJpZXZlIGEgbmV3IHN0cmVhbVVybC4gSW4gdGhlIGxhdHRlciBjYXNlIHdlIGNvdWxkIGZpcnN0IHJldHJ5IHdpdGggdGhlIGN1cnJlbnQgc3RyZWFtVXJsLFxuICAgICAgICAgICAgLy8gYnV0IGl0J3Mgc2ltcGxlciBqdXN0IHRvIGFsd2F5cyBmZXRjaCBhIG5ldyBvbmUuXG4gICAgICAgICAgICAucmV0cnlXaGVuKGVycm9yJCA9PiBlcnJvciQuZGVsYXkodGhpcy5nZXRSZXRyeURlbGF5KCksIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5tZXJnZU1hcChlcnJvciA9PiB0aGlzLnJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkpKVxuICAgICAgICApXG4gICAgICAgIC5mbGF0TWFwKGFjdGl2aXR5R3JvdXAgPT4gdGhpcy5vYnNlcnZhYmxlRnJvbUFjdGl2aXR5R3JvdXAoYWN0aXZpdHlHcm91cCkpXG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgZGVsYXkgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzXG4gICAgcHJpdmF0ZSBnZXRSZXRyeURlbGF5KCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigzMDAwICsgdGhpcy5zZXJ2aWNlcy5yYW5kb20oKSAqIDEyMDAwKTtcbiAgICB9XG5cbiAgICAvLyBPcmlnaW5hbGx5IHdlIHVzZWQgT2JzZXJ2YWJsZS53ZWJTb2NrZXQsIGJ1dCBpdCdzIGZhaXJseSBvcGluaW9uYXRlZCBhbmQgSSBlbmRlZCB1cCB3cml0aW5nXG4gICAgLy8gYSBsb3Qgb2YgY29kZSB0byB3b3JrIGFyb3VuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBTaW5jZSBXZWJDaGF0IGlzIG1lYW50IHRvIGJlIGEgcmVmZXJlbmNlXG4gICAgLy8gaW1wbGVtZW50YXRpb24sIEkgZGVjaWRlZCByb2xsIHRoZSBiZWxvdywgd2hlcmUgdGhlIGxvZ2ljIGlzIG1vcmUgcHVycG9zZWZ1bC4gLSBAYmlsbGJhXG4gICAgcHJpdmF0ZSBvYnNlcnZhYmxlV2ViU29ja2V0PFQ+KCkge1xuICAgICAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VD4pID0+IHtcbiAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiY3JlYXRpbmcgV2ViU29ja2V0XCIsIHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHdzID0gbmV3IHRoaXMuc2VydmljZXMuV2ViU29ja2V0KHRoaXMuc3RyZWFtVXJsKTtcbiAgICAgICAgICAgIGxldCBzdWI6IFN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGxldCBjbG9zZWQ6IGJvb2xlYW47XG5cbiAgICAgICAgICAgIHdzLm9ub3BlbiA9IG9wZW4gPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IG9wZW5cIiwgb3Blbik7XG4gICAgICAgICAgICAgICAgLy8gQ2hyb21lIGlzIHByZXR0eSBiYWQgYXQgbm90aWNpbmcgd2hlbiBhIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGJyb2tlbi5cbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBwZXJpb2RpY2FsbHkgcGluZyB0aGUgc2VydmVyIHdpdGggZW1wdHkgbWVzc2FnZXMsIGl0IGhlbHBzIENocm9tZVxuICAgICAgICAgICAgICAgIC8vIHJlYWxpemUgd2hlbiBjb25uZWN0aW9uIGJyZWFrcywgYW5kIGNsb3NlIHRoZSBzb2NrZXQuIFdlIHRoZW4gdGhyb3cgYW5cbiAgICAgICAgICAgICAgICAvLyBlcnJvciwgYW5kIHRoYXQgZ2l2ZSB1cyB0aGUgb3Bwb3J0dW5pdHkgdG8gYXR0ZW1wdCB0byByZWNvbm5lY3QuXG4gICAgICAgICAgICAgICAgc3ViID0gT2JzZXJ2YWJsZS5pbnRlcnZhbCh0aGlzLnRpbWVvdXQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cy5zZW5kKFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJQaW5nIGVycm9yXCIsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBjbG9zZSA9PiB7XG4gICAgICAgICAgICAgICAga29uc29sZS5sb2coXCJXZWJTb2NrZXQgY2xvc2VcIiwgY2xvc2UpO1xuICAgICAgICAgICAgICAgIGlmIChzdWIpIHN1Yi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gUnhKUy5yZXRyeVdoZW4gaGFzIGEgYnVnIHRoYXQgd291bGQgY2F1c2UgXCJlcnJvclwiIHNpZ25hbCB0byBiZSBzZW50IGFmdGVyIHRoZSBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZC9lcnJvcmVkLlxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5zdCBleHRyYW5lb3VzIFwiZXJyb3JcIiBzaWduYWwgdG8gd29ya2Fyb3VuZCB0aGUgYnVnLlxuICAgICAgICAgICAgICAgIGNsb3NlZCB8fCBzdWJzY3JpYmVyLmVycm9yKGNsb3NlKTtcbiAgICAgICAgICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3cy5vbmVycm9yID0gZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGtvbnNvbGUubG9nKFwiV2ViU29ja2V0IGVycm9yXCIsIGVycm9yKTtcbiAgICAgICAgICAgICAgICBpZiAoc3ViKSBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICAgIC8vIFJ4SlMucmV0cnlXaGVuIGhhcyBhIGJ1ZyB0aGF0IHdvdWxkIGNhdXNlIFwiZXJyb3JcIiBzaWduYWwgdG8gYmUgc2VudCBhZnRlciB0aGUgb2JzZXJ2YWJsZSBpcyBjb21wbGV0ZWQvZXJyb3JlZC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgZXh0cmFuZW91cyBcImVycm9yXCIgc2lnbmFsIHRvIHdvcmthcm91bmQgdGhlIGJ1Zy5cbiAgICAgICAgICAgICAgICBjbG9zZWQgfHwgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd3Mub25tZXNzYWdlID0gbWVzc2FnZSA9PiBtZXNzYWdlLmRhdGEgJiYgc3Vic2NyaWJlci5uZXh0KEpTT04ucGFyc2UobWVzc2FnZS5kYXRhKSk7XG5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGlzIG9ic2VydmFibGUgaXMgZGlzcG9zZWQuXG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBXZWJTb2NrZXQgY2xvc2VzIGl0c2VsZiwgd2UgdGhyb3cgYW4gZXJyb3IsIGFuZCB0aGlzIGZ1bmN0aW9uIGlzIGV2ZW50dWFsbHkgY2FsbGVkLlxuICAgICAgICAgICAgLy8gV2hlbiB0aGUgb2JzZXJ2YWJsZSBpcyBjbG9zZWQgZmlyc3QgKGUuZy4gd2hlbiB0ZWFyaW5nIGRvd24gYSBXZWJDaGF0IGluc3RhbmNlKSB0aGVuXG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIG1hbnVhbGx5IGNsb3NlIHRoZSBXZWJTb2NrZXQuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh3cy5yZWFkeVN0YXRlID09PSAwIHx8IHdzLnJlYWR5U3RhdGUgPT09IDEpIHdzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIGFzIE9ic2VydmFibGU8VD5cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlY29ubmVjdFRvQ29udmVyc2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0Nvbm5lY3Rpb24odHJ1ZSlcbiAgICAgICAgLmZsYXRNYXAoXyA9PlxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlcy5hamF4KHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgdXJsOiBgJHt0aGlzLmRvbWFpbn0vY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9P3dhdGVybWFyaz0ke3RoaXMud2F0ZXJtYXJrfWAsXG4gICAgICAgICAgICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbW9uSGVhZGVycygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5kbyhyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWNyZXQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW4gPSByZXN1bHQucmVzcG9uc2UudG9rZW47XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJlYW1VcmwgPSByZXN1bHQucmVzcG9uc2Uuc3RyZWFtVXJsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoXyA9PiBudWxsKVxuICAgICAgICAgICAgLnJldHJ5V2hlbihlcnJvciQgPT4gZXJyb3IkXG4gICAgICAgICAgICAgICAgLm1lcmdlTWFwKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZC4gV2UgY2FuJ3QgcmVjb3ZlciBmcm9tIHRoaXMgaGVyZSwgYnV0IHRoZSBlbWJlZGRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlYnNpdGUgbWlnaHQgZXZlbnR1YWxseSBjYWxsIHJlY29ubmVjdCgpIHdpdGggYSBuZXcgdG9rZW4gYW5kIHN0cmVhbVVybC5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwaXJlZFRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLnRocm93KGVycm9yQ29udmVyc2F0aW9uRW5kZWQsIHRoaXMuc2VydmljZXMuc2NoZWR1bGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBPYnNlcnZhYmxlLm9mKGVycm9yLCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZGVsYXkodGhpcy50aW1lb3V0LCB0aGlzLnNlcnZpY2VzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAudGFrZSh0aGlzLnJldHJpZXMpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcIkF1dGhvcml6YXRpb25cIjogYEJlYXJlciAke3RoaXMudG9rZW59YCxcbiAgICAgICAgICAgIFwieC1tcy1ib3QtYWdlbnRcIjogdGhpcy5fYm90QWdlbnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBjbGllbnRBZ2VudCA9ICdkaXJlY3RsaW5lanMnXG5cbiAgICAgICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICAgICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWBcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBgJHtESVJFQ1RfTElORV9WRVJTSU9OfSAoJHtjbGllbnRBZ2VudH0gJHtwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9ufSlgO1xuICAgIH1cblxuICAgIHNldFVzZXJJZCh1c2VySWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLk9ubGluZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXJlY3RMaW5lSlM6IEl0IGlzIGNvbm5lY3RlZCwgd2UgY2Fubm90IHNldCB1c2VyIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcklkRnJvbVRva2VuID0gdGhpcy5wYXJzZVRva2VuKHRoaXMudG9rZW4pO1xuICAgICAgICBpZiAodXNlcklkRnJvbVRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCdEaXJlY3RMaW5lSlM6IHVzZXIgaWQgaXMgYWxyZWFkeSBzZXQgaW4gdG9rZW4sIHdpbGwgaWdub3JlIHRoaXMgdXNlciBpZC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgvXmRsXy91LnRlc3QodXNlcklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybignRGlyZWN0TGluZUpTOiB1c2VyIGlkIHByZWZpeGVkIHdpdGggXCJkbF9cIiBpcyByZXNlcnZlZCBhbmQgbXVzdCBiZSBlbWJlZGRlZCBpbnRvIHRoZSBEaXJlY3QgTGluZSB0b2tlbiB0byBwcmV2ZW50IGZvcmdlcnkuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVzZXJJZE9uU3RhcnRDb252ZXJzYXRpb24gPSB1c2VySWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgdXNlciB9ID0gand0RGVjb2RlPEp3dFBheWxvYWQ+KHRva2VuKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICAgICAgICAgIHJldHVybiB1c2VyO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRUb2tlbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuIl19","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectLineStreaming = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _classPrivateFieldGet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _BehaviorSubject = require(\"rxjs/BehaviorSubject\");\n\nvar _buffer = require(\"buffer\");\n\nvar _Observable = require(\"rxjs/Observable\");\n\nvar BFSE = _interopRequireWildcard(require(\"botframework-streaming\"));\n\nvar _createDeferred = _interopRequireDefault(require(\"./createDeferred\"));\n\nvar _crossFetch = _interopRequireDefault(require(\"cross-fetch\"));\n\nvar _directLine = require(\"./directLine\");\n\nvar _WebSocketClientWithNetworkInformation = _interopRequireDefault(require(\"./streaming/WebSocketClientWithNetworkInformation\"));\n\nvar _excluded = [\"attachments\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar DIRECT_LINE_VERSION = 'DirectLine/3.0';\nvar MAX_RETRY_COUNT = 3;\nvar refreshTokenLifetime = 30 * 60 * 1000; //const refreshTokenLifetime = 5000;\n// const timeout = 20 * 1000;\n\nvar refreshTokenInterval = refreshTokenLifetime / 2;\n\nvar StreamHandler = /*#__PURE__*/function () {\n function StreamHandler(s, c$, sq) {\n (0, _classCallCheck2[\"default\"])(this, StreamHandler);\n (0, _defineProperty2[\"default\"])(this, \"activityQueue\", []);\n this.subscriber = s;\n this.connectionStatus$ = c$;\n this.shouldQueue = sq;\n }\n\n (0, _createClass2[\"default\"])(StreamHandler, [{\n key: \"setSubscriber\",\n value: function setSubscriber(s) {\n this.subscriber = s;\n }\n }, {\n key: \"processRequest\",\n value: function () {\n var _processRequest = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(request, logger) {\n var streams, stream0, activitySetJson, activitySet, activity, attachments, stream, attachment, dataUri;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n streams = (0, _toConsumableArray2[\"default\"])(request.streams);\n stream0 = streams.shift();\n _context.next = 4;\n return stream0.readAsString();\n\n case 4:\n activitySetJson = _context.sent;\n activitySet = JSON.parse(activitySetJson);\n\n if (!(activitySet.activities.length !== 1)) {\n _context.next = 9;\n break;\n }\n\n // Only one activity is expected in a set in streaming\n this.subscriber.error(new Error('there should be exactly one activity'));\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(500));\n\n case 9:\n activity = activitySet.activities[0];\n\n if (!(streams.length > 0)) {\n _context.next = 21;\n break;\n }\n\n attachments = (0, _toConsumableArray2[\"default\"])(activity.attachments);\n\n case 12:\n if (!(stream = streams.shift())) {\n _context.next = 20;\n break;\n }\n\n _context.next = 15;\n return stream.readAsString();\n\n case 15:\n attachment = _context.sent;\n dataUri = 'data:text/plain;base64,' + attachment;\n attachments.push({\n contentType: stream.contentType,\n contentUrl: dataUri\n });\n _context.next = 12;\n break;\n\n case 20:\n activity.attachments = attachments;\n\n case 21:\n if (this.shouldQueue()) {\n this.activityQueue.push(activity);\n } else {\n this.subscriber.next(activity);\n }\n\n return _context.abrupt(\"return\", BFSE.StreamingResponse.create(200));\n\n case 23:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function processRequest(_x, _x2) {\n return _processRequest.apply(this, arguments);\n }\n\n return processRequest;\n }()\n }, {\n key: \"flush\",\n value: function flush() {\n var _this = this;\n\n this.connectionStatus$.subscribe(function () {});\n this.activityQueue.forEach(function (a) {\n return _this.subscriber.next(a);\n });\n this.activityQueue = [];\n }\n }, {\n key: \"end\",\n value: function end() {\n this.subscriber.complete();\n }\n }]);\n return StreamHandler;\n}();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar DirectLineStreaming = /*#__PURE__*/function () {\n function DirectLineStreaming(options) {\n var _this2 = this;\n\n (0, _classCallCheck2[\"default\"])(this, DirectLineStreaming);\n (0, _defineProperty2[\"default\"])(this, \"connectionStatus$\", new _BehaviorSubject.BehaviorSubject(_directLine.ConnectionStatus.Uninitialized));\n (0, _defineProperty2[\"default\"])(this, \"_botAgent\", '');\n\n _networkInformation.set(this, {\n writable: true,\n value: void 0\n });\n\n // Rectifies `options.networkInformation`.\n var networkInformation = options === null || options === void 0 ? void 0 : options.networkInformation;\n\n if (typeof networkInformation === 'undefined' || typeof networkInformation.addEventListener === 'function' && typeof networkInformation.removeEventListener === 'function' && typeof networkInformation.type === 'string') {\n (0, _classPrivateFieldSet2[\"default\"])(this, _networkInformation, networkInformation);\n } else {\n console.warn('botframework-directlinejs: \"networkInformation\" option specified must be a `NetworkInformation`-like instance extending `EventTarget` interface with a `type` property returning a string.');\n }\n\n this.token = options.token;\n this.refreshToken()[\"catch\"](function () {\n _this2.connectionStatus$.next(_directLine.ConnectionStatus.ExpiredToken);\n });\n this.domain = options.domain;\n\n if (options.conversationId) {\n this.conversationId = options.conversationId;\n }\n\n this._botAgent = this.getBotAgent(options.botAgent);\n this.queueActivities = true;\n this.activity$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2(subscriber) {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _this2.activitySubscriber = subscriber;\n _this2.theStreamHandler = new StreamHandler(subscriber, _this2.connectionStatus$, function () {\n return _this2.queueActivities;\n }); // Resolving connectDeferred will kick-off the connection.\n\n _this2.connectDeferred.resolve();\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function (_x3) {\n return _ref.apply(this, arguments);\n };\n }()).share(); // connectWithRetryAsync() will create the connectDeferred object required in activity$.\n\n this.connectWithRetryAsync();\n }\n\n (0, _createClass2[\"default\"])(DirectLineStreaming, [{\n key: \"reconnect\",\n value: function reconnect(_ref2) {\n var conversationId = _ref2.conversationId,\n token = _ref2.token;\n\n if (this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended) {\n throw new Error('Connection has ended.');\n }\n\n this.conversationId = conversationId;\n this.token = token;\n this.connectDeferred.resolve();\n }\n }, {\n key: \"end\",\n value: function end() {\n // Once end() is called, no reconnection can be made.\n this.activitySubscriber.complete();\n this.connectionStatus$.next(_directLine.ConnectionStatus.Ended);\n this.connectionStatus$.complete();\n this.streamConnection.disconnect();\n }\n }, {\n key: \"commonHeaders\",\n value: function commonHeaders() {\n return {\n Authorization: \"Bearer \".concat(this.token),\n 'x-ms-bot-agent': this._botAgent\n };\n }\n }, {\n key: \"getBotAgent\",\n value: function getBotAgent() {\n var customAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var clientAgent = 'directlineStreaming';\n\n if (customAgent) {\n clientAgent += \"; \".concat(customAgent);\n }\n\n return \"\".concat(DIRECT_LINE_VERSION, \" (\").concat(clientAgent, \")\");\n }\n }, {\n key: \"refreshToken\",\n value: function () {\n var _refreshToken = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3() {\n var firstCall,\n retryCount,\n numberOfAttempts,\n res,\n _yield$res$json,\n token,\n _args3 = arguments;\n\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n firstCall = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : true;\n retryCount = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : 0;\n _context3.next = 4;\n return this.waitUntilOnline();\n\n case 4:\n numberOfAttempts = 0;\n\n case 5:\n if (!(numberOfAttempts < MAX_RETRY_COUNT)) {\n _context3.next = 30;\n break;\n }\n\n numberOfAttempts++;\n _context3.next = 9;\n return new Promise(function (r) {\n return setTimeout(r, refreshTokenInterval);\n });\n\n case 9:\n _context3.prev = 9;\n _context3.next = 12;\n return (0, _crossFetch[\"default\"])(\"\".concat(this.domain, \"/tokens/refresh\"), {\n method: 'POST',\n headers: this.commonHeaders()\n });\n\n case 12:\n res = _context3.sent;\n\n if (!res.ok) {\n _context3.next = 22;\n break;\n }\n\n numberOfAttempts = 0;\n _context3.next = 17;\n return res.json();\n\n case 17:\n _yield$res$json = _context3.sent;\n token = _yield$res$json.token;\n this.token = token;\n _context3.next = 23;\n break;\n\n case 22:\n if (res.status === 403 || res.status === 403) {\n console.error(\"Fatal error while refreshing the token: \".concat(res.status, \" \").concat(res.statusText));\n this.streamConnection.disconnect();\n } else {\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" failed: \").concat(res.status, \" \").concat(res.statusText));\n }\n\n case 23:\n _context3.next = 28;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3[\"catch\"](9);\n console.warn(\"Refresh attempt #\".concat(numberOfAttempts, \" threw an exception: \").concat(_context3.t0));\n\n case 28:\n _context3.next = 5;\n break;\n\n case 30:\n console.error('Retries exhausted');\n this.streamConnection.disconnect();\n\n case 32:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[9, 25]]);\n }));\n\n function refreshToken() {\n return _refreshToken.apply(this, arguments);\n }\n\n return refreshToken;\n }()\n }, {\n key: \"postActivity\",\n value: function postActivity(activity) {\n var _this3 = this;\n\n if (this.connectionStatus$.value === _directLine.ConnectionStatus.Ended || this.connectionStatus$.value === _directLine.ConnectionStatus.FailedToConnect) {\n return _Observable.Observable[\"throw\"](new Error('Connection is closed'));\n }\n\n if (activity.type === 'message' && activity.attachments && activity.attachments.length > 0) {\n return this.postMessageWithAttachments(activity);\n }\n\n var resp$ = _Observable.Observable.create( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(subscriber) {\n var request, resp, numberOfStreams, idString, _JSON$parse, id;\n\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations/' + _this3.conversationId + '/activities');\n request.setBody(JSON.stringify(activity));\n _context4.prev = 2;\n _context4.next = 5;\n return _this3.streamConnection.send(request);\n\n case 5:\n resp = _context4.sent;\n\n if (!(resp.statusCode !== 200)) {\n _context4.next = 8;\n break;\n }\n\n throw new Error('PostActivity returned ' + resp.statusCode);\n\n case 8:\n numberOfStreams = resp.streams.length;\n\n if (!(numberOfStreams !== 1)) {\n _context4.next = 11;\n break;\n }\n\n throw new Error('Expected one stream but got ' + numberOfStreams);\n\n case 11:\n _context4.next = 13;\n return resp.streams[0].readAsString();\n\n case 13:\n idString = _context4.sent;\n _JSON$parse = JSON.parse(idString), id = _JSON$parse.Id;\n subscriber.next(id);\n return _context4.abrupt(\"return\", subscriber.complete());\n\n case 19:\n _context4.prev = 19;\n _context4.t0 = _context4[\"catch\"](2);\n // If there is a network issue then its handled by\n // the disconnectionHandler. Everything else can\n // be retried\n console.warn(_context4.t0);\n\n _this3.streamConnection.disconnect();\n\n return _context4.abrupt(\"return\", subscriber.error(_context4.t0));\n\n case 24:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[2, 19]]);\n }));\n\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n }());\n\n return resp$;\n }\n }, {\n key: \"postMessageWithAttachments\",\n value: function postMessageWithAttachments(message) {\n var _this4 = this;\n\n var attachments = message.attachments,\n messageWithoutAttachments = (0, _objectWithoutProperties2[\"default\"])(message, _excluded);\n return _Observable.Observable.create(function (subscriber) {\n var httpContentList = [];\n (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee6() {\n var arrayBuffers, url, request, activityStream, resp, _yield$resp$streams$, id;\n\n return _regenerator[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.prev = 0;\n _context6.next = 3;\n return Promise.all(attachments.map( /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee5(attachment) {\n var media, res;\n return _regenerator[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n media = attachment;\n _context5.next = 3;\n return (0, _crossFetch[\"default\"])(media.contentUrl);\n\n case 3:\n res = _context5.sent;\n\n if (!res.ok) {\n _context5.next = 12;\n break;\n }\n\n _context5.next = 7;\n return res.arrayBuffer();\n\n case 7:\n _context5.t0 = _context5.sent;\n _context5.t1 = media;\n return _context5.abrupt(\"return\", {\n arrayBuffer: _context5.t0,\n media: _context5.t1\n });\n\n case 12:\n throw new Error('...');\n\n case 13:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x5) {\n return _ref5.apply(this, arguments);\n };\n }()));\n\n case 3:\n arrayBuffers = _context6.sent;\n arrayBuffers.forEach(function (_ref6) {\n var arrayBuffer = _ref6.arrayBuffer,\n media = _ref6.media;\n\n var buffer = _buffer.Buffer.from(arrayBuffer);\n\n var stream = new BFSE.SubscribableStream();\n stream.write(buffer);\n var httpContent = new BFSE.HttpContent({\n type: media.contentType,\n contentLength: buffer.length\n }, stream);\n httpContentList.push(httpContent);\n });\n url = \"/v3/directline/conversations/\".concat(_this4.conversationId, \"/users/\").concat(messageWithoutAttachments.from.id, \"/upload\");\n request = BFSE.StreamingRequest.create('PUT', url);\n activityStream = new BFSE.SubscribableStream();\n activityStream.write(JSON.stringify(messageWithoutAttachments), 'utf-8');\n request.addStream(new BFSE.HttpContent({\n type: 'application/vnd.microsoft.activity',\n contentLength: activityStream.length\n }, activityStream));\n httpContentList.forEach(function (e) {\n return request.addStream(e);\n });\n _context6.next = 13;\n return _this4.streamConnection.send(request);\n\n case 13:\n resp = _context6.sent;\n\n if (!(resp.streams && resp.streams.length !== 1)) {\n _context6.next = 18;\n break;\n }\n\n subscriber.error(new Error(\"Invalid stream count \".concat(resp.streams.length)));\n _context6.next = 24;\n break;\n\n case 18:\n _context6.next = 20;\n return resp.streams[0].readAsJson();\n\n case 20:\n _yield$resp$streams$ = _context6.sent;\n id = _yield$resp$streams$.Id;\n subscriber.next(id);\n subscriber.complete();\n\n case 24:\n _context6.next = 29;\n break;\n\n case 26:\n _context6.prev = 26;\n _context6.t0 = _context6[\"catch\"](0);\n subscriber.error(_context6.t0);\n\n case 29:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, null, [[0, 26]]);\n }))();\n });\n }\n }, {\n key: \"waitUntilOnline\",\n value: function () {\n var _waitUntilOnline = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee7() {\n var _this5 = this;\n\n return _regenerator[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt(\"return\", new Promise(function (resolve, reject) {\n _this5.connectionStatus$.subscribe(function (cs) {\n if (cs === _directLine.ConnectionStatus.Online) {\n return resolve();\n }\n }, function (e) {\n return reject(e);\n });\n }));\n\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n\n function waitUntilOnline() {\n return _waitUntilOnline.apply(this, arguments);\n }\n\n return waitUntilOnline;\n }()\n }, {\n key: \"connectAsync\",\n value: function () {\n var _connectAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee9() {\n var _this6 = this;\n\n var re, params, abortController, urlSearchParams, wsUrl;\n return _regenerator[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n re = new RegExp('^http(s?)');\n\n if (re.test(this.domain)) {\n _context9.next = 3;\n break;\n }\n\n throw 'Domain must begin with http or https';\n\n case 3:\n params = {\n token: this.token\n };\n\n if (this.conversationId) {\n params['conversationId'] = this.conversationId;\n }\n\n abortController = new AbortController();\n urlSearchParams = new URLSearchParams(params).toString();\n wsUrl = \"\".concat(this.domain.replace(re, 'ws$1'), \"/conversations/connect?\").concat(urlSearchParams); // This promise will resolve when it is disconnected.\n\n return _context9.abrupt(\"return\", new Promise( /*#__PURE__*/function () {\n var _ref7 = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee8(resolve, reject) {\n var request, response, responseString, conversation;\n return _regenerator[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _this6.streamConnection = new _WebSocketClientWithNetworkInformation[\"default\"]({\n disconnectionHandler: resolve,\n networkInformation: (0, _classPrivateFieldGet2[\"default\"])(_this6, _networkInformation),\n requestHandler: {\n processRequest: function processRequest(streamingRequest) {\n // If `streamConnection` is still current, allow call to `processRequest()`, otherwise, ignore calls to `processRequest()`.\n // This prevents zombie connections from sending us requests.\n if (abortController.signal.aborted) {\n throw new Error('Cannot process streaming request, `streamingConnection` should be disconnected.');\n }\n\n return _this6.theStreamHandler.processRequest(streamingRequest);\n }\n },\n url: wsUrl\n });\n _this6.queueActivities = true;\n _context8.next = 5;\n return _this6.streamConnection.connect();\n\n case 5:\n request = BFSE.StreamingRequest.create('POST', '/v3/directline/conversations');\n _context8.next = 8;\n return _this6.streamConnection.send(request);\n\n case 8:\n response = _context8.sent;\n\n if (!(response.statusCode !== 200)) {\n _context8.next = 11;\n break;\n }\n\n throw new Error('Connection response code ' + response.statusCode);\n\n case 11:\n if (!(response.streams.length !== 1)) {\n _context8.next = 13;\n break;\n }\n\n throw new Error('Expected 1 stream but got ' + response.streams.length);\n\n case 13:\n _context8.next = 15;\n return response.streams[0].readAsString();\n\n case 15:\n responseString = _context8.sent;\n conversation = JSON.parse(responseString);\n _this6.conversationId = conversation.conversationId;\n\n _this6.connectionStatus$.next(_directLine.ConnectionStatus.Online); // Wait until DL consumers have had a chance to be notified\n // of the connection status change.\n // This is specific to RxJS implementation of observable, which calling subscribe() after next() will still get the value.\n\n\n _context8.next = 21;\n return _this6.waitUntilOnline();\n\n case 21:\n _this6.theStreamHandler.flush();\n\n _this6.queueActivities = false;\n _context8.next = 28;\n break;\n\n case 25:\n _context8.prev = 25;\n _context8.t0 = _context8[\"catch\"](0);\n reject(_context8.t0);\n\n case 28:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, null, [[0, 25]]);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n }())[\"finally\"](function () {\n return abortController.abort();\n }));\n\n case 9:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function connectAsync() {\n return _connectAsync.apply(this, arguments);\n }\n\n return connectAsync;\n }()\n }, {\n key: \"connectWithRetryAsync\",\n value: function () {\n var _connectWithRetryAsync = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee10() {\n var _this7 = this;\n\n var numRetries, start;\n return _regenerator[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (this.connectDeferred = (0, _createDeferred[\"default\"])()).promise;\n\n case 2:\n numRetries = MAX_RETRY_COUNT;\n this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n\n case 4:\n if (!(numRetries > 0)) {\n _context10.next = 27;\n break;\n }\n\n numRetries--;\n start = Date.now();\n _context10.prev = 7;\n _context10.next = 10;\n return this.connectAsync();\n\n case 10:\n _context10.next = 15;\n break;\n\n case 12:\n _context10.prev = 12;\n _context10.t0 = _context10[\"catch\"](7);\n console.error(_context10.t0);\n\n case 15:\n if (!(this.connectionStatus$.getValue() === _directLine.ConnectionStatus.Ended)) {\n _context10.next = 17;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 17:\n // Make sure we don't signal ConnectionStatus.Connecting twice or more without an actual connection.\n // Subsequent retries should be transparent.\n if (this.connectionStatus$.getValue() !== _directLine.ConnectionStatus.Connecting) {\n this.connectionStatus$.next(_directLine.ConnectionStatus.Connecting);\n } // If the current connection lasted for more than a minute, the previous connection is good, which means:\n // - we should reset the retry counter, and;\n // - we should reconnect immediately.\n\n\n if (!(60000 < Date.now() - start)) {\n _context10.next = 22;\n break;\n }\n\n numRetries = MAX_RETRY_COUNT;\n _context10.next = 25;\n break;\n\n case 22:\n if (!(numRetries > 0)) {\n _context10.next = 25;\n break;\n }\n\n _context10.next = 25;\n return new Promise(function (r) {\n return setTimeout(r, _this7.getRetryDelay());\n });\n\n case 25:\n _context10.next = 4;\n break;\n\n case 27:\n // TODO: [TEST] Make sure FailedToConnect is reported immediately after last disconnection, should be no getRetryDelay().\n // Failed to reconnect after multiple retries.\n this.connectionStatus$.next(_directLine.ConnectionStatus.FailedToConnect);\n\n case 28:\n _context10.next = 0;\n break;\n\n case 30:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this, [[7, 12]]);\n }));\n\n function connectWithRetryAsync() {\n return _connectWithRetryAsync.apply(this, arguments);\n }\n\n return connectWithRetryAsync;\n }() // Returns the delay duration in milliseconds\n\n }, {\n key: \"getRetryDelay\",\n value: function getRetryDelay() {\n return Math.floor(3000 + Math.random() * 12000);\n }\n }]);\n return DirectLineStreaming;\n}();\n\nexports.DirectLineStreaming = DirectLineStreaming;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RMaW5lU3RyZWFtaW5nLnRzIl0sIm5hbWVzIjpbIkRJUkVDVF9MSU5FX1ZFUlNJT04iLCJNQVhfUkVUUllfQ09VTlQiLCJyZWZyZXNoVG9rZW5MaWZldGltZSIsInJlZnJlc2hUb2tlbkludGVydmFsIiwiU3RyZWFtSGFuZGxlciIsInMiLCJjJCIsInNxIiwic3Vic2NyaWJlciIsImNvbm5lY3Rpb25TdGF0dXMkIiwic2hvdWxkUXVldWUiLCJyZXF1ZXN0IiwibG9nZ2VyIiwic3RyZWFtcyIsInN0cmVhbTAiLCJzaGlmdCIsInJlYWRBc1N0cmluZyIsImFjdGl2aXR5U2V0SnNvbiIsImFjdGl2aXR5U2V0IiwiSlNPTiIsInBhcnNlIiwiYWN0aXZpdGllcyIsImxlbmd0aCIsImVycm9yIiwiRXJyb3IiLCJCRlNFIiwiU3RyZWFtaW5nUmVzcG9uc2UiLCJjcmVhdGUiLCJhY3Rpdml0eSIsImF0dGFjaG1lbnRzIiwic3RyZWFtIiwiYXR0YWNobWVudCIsImRhdGFVcmkiLCJwdXNoIiwiY29udGVudFR5cGUiLCJjb250ZW50VXJsIiwiYWN0aXZpdHlRdWV1ZSIsIm5leHQiLCJzdWJzY3JpYmUiLCJmb3JFYWNoIiwiYSIsImNvbXBsZXRlIiwiRGlyZWN0TGluZVN0cmVhbWluZyIsIm9wdGlvbnMiLCJCZWhhdmlvclN1YmplY3QiLCJDb25uZWN0aW9uU3RhdHVzIiwiVW5pbml0aWFsaXplZCIsIm5ldHdvcmtJbmZvcm1hdGlvbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidHlwZSIsImNvbnNvbGUiLCJ3YXJuIiwidG9rZW4iLCJyZWZyZXNoVG9rZW4iLCJFeHBpcmVkVG9rZW4iLCJkb21haW4iLCJjb252ZXJzYXRpb25JZCIsIl9ib3RBZ2VudCIsImdldEJvdEFnZW50IiwiYm90QWdlbnQiLCJxdWV1ZUFjdGl2aXRpZXMiLCJhY3Rpdml0eSQiLCJPYnNlcnZhYmxlIiwiYWN0aXZpdHlTdWJzY3JpYmVyIiwidGhlU3RyZWFtSGFuZGxlciIsImNvbm5lY3REZWZlcnJlZCIsInJlc29sdmUiLCJzaGFyZSIsImNvbm5lY3RXaXRoUmV0cnlBc3luYyIsImdldFZhbHVlIiwiRW5kZWQiLCJzdHJlYW1Db25uZWN0aW9uIiwiZGlzY29ubmVjdCIsIkF1dGhvcml6YXRpb24iLCJjdXN0b21BZ2VudCIsImNsaWVudEFnZW50IiwiZmlyc3RDYWxsIiwicmV0cnlDb3VudCIsIndhaXRVbnRpbE9ubGluZSIsIm51bWJlck9mQXR0ZW1wdHMiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJtZXRob2QiLCJoZWFkZXJzIiwiY29tbW9uSGVhZGVycyIsInJlcyIsIm9rIiwianNvbiIsInN0YXR1cyIsInN0YXR1c1RleHQiLCJ2YWx1ZSIsIkZhaWxlZFRvQ29ubmVjdCIsInBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzIiwicmVzcCQiLCJTdHJlYW1pbmdSZXF1ZXN0Iiwic2V0Qm9keSIsInN0cmluZ2lmeSIsInNlbmQiLCJyZXNwIiwic3RhdHVzQ29kZSIsIm51bWJlck9mU3RyZWFtcyIsImlkU3RyaW5nIiwiaWQiLCJJZCIsIm1lc3NhZ2UiLCJtZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIiwiaHR0cENvbnRlbnRMaXN0IiwiYWxsIiwibWFwIiwibWVkaWEiLCJhcnJheUJ1ZmZlciIsImFycmF5QnVmZmVycyIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJTdWJzY3JpYmFibGVTdHJlYW0iLCJ3cml0ZSIsImh0dHBDb250ZW50IiwiSHR0cENvbnRlbnQiLCJjb250ZW50TGVuZ3RoIiwidXJsIiwiYWN0aXZpdHlTdHJlYW0iLCJhZGRTdHJlYW0iLCJlIiwicmVhZEFzSnNvbiIsInJlamVjdCIsImNzIiwiT25saW5lIiwicmUiLCJSZWdFeHAiLCJ0ZXN0IiwicGFyYW1zIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwidXJsU2VhcmNoUGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwidG9TdHJpbmciLCJ3c1VybCIsInJlcGxhY2UiLCJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJyZXF1ZXN0SGFuZGxlciIsInByb2Nlc3NSZXF1ZXN0Iiwic3RyZWFtaW5nUmVxdWVzdCIsInNpZ25hbCIsImFib3J0ZWQiLCJjb25uZWN0IiwicmVzcG9uc2UiLCJyZXNwb25zZVN0cmluZyIsImNvbnZlcnNhdGlvbiIsImZsdXNoIiwiYWJvcnQiLCJwcm9taXNlIiwibnVtUmV0cmllcyIsIkNvbm5lY3RpbmciLCJzdGFydCIsIkRhdGUiLCJub3ciLCJjb25uZWN0QXN5bmMiLCJnZXRSZXRyeURlbGF5IiwiTWF0aCIsImZsb29yIiwicmFuZG9tIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztBQUdBLElBQU1BLG1CQUFtQixHQUFHLGdCQUE1QjtBQUNBLElBQU1DLGVBQWUsR0FBRyxDQUF4QjtBQUNBLElBQU1DLG9CQUFvQixHQUFHLEtBQUssRUFBTCxHQUFVLElBQXZDLEMsQ0FDQTtBQUNBOztBQUNBLElBQU1DLG9CQUFvQixHQUFHRCxvQkFBb0IsR0FBRyxDQUFwRDs7SUFnQk1FLGE7QUFNSix5QkFBWUMsQ0FBWixFQUFxQ0MsRUFBckMsRUFBdUVDLEVBQXZFLEVBQTBGO0FBQUE7QUFBQSw0REFGakQsRUFFaUQ7QUFDeEYsU0FBS0MsVUFBTCxHQUFrQkgsQ0FBbEI7QUFDQSxTQUFLSSxpQkFBTCxHQUF5QkgsRUFBekI7QUFDQSxTQUFLSSxXQUFMLEdBQW1CSCxFQUFuQjtBQUNEOzs7O1dBRUQsdUJBQXFCRixDQUFyQixFQUE4QztBQUM1QyxXQUFLRyxVQUFMLEdBQWtCSCxDQUFsQjtBQUNEOzs7OzBHQUVELGlCQUFxQk0sT0FBckIsRUFBb0RDLE1BQXBEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNRQyxnQkFBQUEsT0FE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LGdCQUFBQSxPQUFPLENBQUM1QixLQUFSOztBQXJCUjtBQUFBLHNCQXlCVSxLQUFLZCxpQkFBTCxDQUF1QjZELFFBQXZCLE9BQXNDekIsNkJBQWlCMEIsS0F6QmpFO0FBQUE7QUFBQTtBQUFBOztBQUFBOztBQUFBO0FBOEJNO0FBQ0E7QUFDQSxvQkFBSSxLQUFLOUQsaUJBQUwsQ0FBdUI2RCxRQUF2QixPQUFzQ3pCLDZCQUFpQitHLFVBQTNELEVBQXVFO0FBQ3JFLHVCQUFLbkosaUJBQUwsQ0FBdUI0QixJQUF2QixDQUE0QlEsNkJBQWlCK0csVUFBN0M7QUFDRCxpQkFsQ1AsQ0FvQ007QUFDQTtBQUNBOzs7QUF0Q04sc0JBdUNVLFFBQVFFLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixLQXZDL0I7QUFBQTtBQUFBO0FBQUE7O0FBd0NRRixnQkFBQUEsVUFBVSxHQUFHMUosZUFBYjtBQXhDUjtBQUFBOztBQUFBO0FBQUEsc0JBeUNpQjBKLFVBQVUsR0FBRyxDQXpDOUI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQSx1QkEyQ2MsSUFBSTFFLE9BQUosQ0FBWSxVQUFBQyxDQUFDO0FBQUEseUJBQUlDLFVBQVUsQ0FBQ0QsQ0FBRCxFQUFJLE1BQUksQ0FBQytFLGFBQUwsRUFBSixDQUFkO0FBQUEsaUJBQWIsQ0EzQ2Q7O0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBK0NJO0FBQ0E7QUFDQSxxQkFBS3hKLGlCQUFMLENBQXVCNEIsSUFBdkIsQ0FBNEJRLDZCQUFpQmdELGVBQTdDOztBQWpESjtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsTzs7Ozs7OztRQXVEQTs7OztXQUNBLHlCQUF3QjtBQUN0QixhQUFPcUUsSUFBSSxDQUFDQyxLQUFMLENBQVcsT0FBT0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLEtBQWxDLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEluIG9yZGVyIHRvIGtlZXAgZmlsZSBzaXplIGRvd24sIG9ubHkgaW1wb3J0IHRoZSBwYXJ0cyBvZiByeGpzIHRoYXQgd2UgdXNlXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMvQmVoYXZpb3JTdWJqZWN0JztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFN1YnNjcmliZXIgfSBmcm9tICdyeGpzL1N1YnNjcmliZXInO1xuaW1wb3J0ICogYXMgQkZTRSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcbmltcG9ydCBjcmVhdGVEZWZlcnJlZCBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcbmltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCc7XG5cbmltcG9ydCB7IEFjdGl2aXR5LCBDb25uZWN0aW9uU3RhdHVzLCBDb252ZXJzYXRpb24sIERpcmVjdExpbmUsIElCb3RDb25uZWN0aW9uLCBNZWRpYSwgTWVzc2FnZSB9IGZyb20gJy4vZGlyZWN0TGluZSc7XG5pbXBvcnQgV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbiBmcm9tICcuL3N0cmVhbWluZy9XZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgRGVmZXJyZWQgfSBmcm9tICcuL2NyZWF0ZURlZmVycmVkJztcblxuY29uc3QgRElSRUNUX0xJTkVfVkVSU0lPTiA9ICdEaXJlY3RMaW5lLzMuMCc7XG5jb25zdCBNQVhfUkVUUllfQ09VTlQgPSAzO1xuY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSAzMCAqIDYwICogMTAwMDtcbi8vY29uc3QgcmVmcmVzaFRva2VuTGlmZXRpbWUgPSA1MDAwO1xuLy8gY29uc3QgdGltZW91dCA9IDIwICogMTAwMDtcbmNvbnN0IHJlZnJlc2hUb2tlbkludGVydmFsID0gcmVmcmVzaFRva2VuTGlmZXRpbWUgLyAyO1xuXG5pbnRlcmZhY2UgRGlyZWN0TGluZVN0cmVhbWluZ09wdGlvbnMge1xuICB0b2tlbjogc3RyaW5nO1xuICBjb252ZXJzYXRpb25JZD86IHN0cmluZztcbiAgZG9tYWluOiBzdHJpbmc7XG4gIC8vIEF0dGFjaGVkIHRvIGFsbCByZXF1ZXN0cyB0byBpZGVudGlmeSByZXF1ZXN0aW5nIGFnZW50LlxuICBib3RBZ2VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2V0cyB0aGUgW2BOZXR3b3JrSW5mb3JtYXRpb25gIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05ldHdvcmtfSW5mb3JtYXRpb25fQVBJKS5cbiAgICogV2hlbiB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgZGV0ZWN0IG5ldHdvcmsgY2hhbmdlcyBvciBvZmZsaW5lLCBpdCB3aWxsIGRpc2Nvbm5lY3QgdGhlIFdlYiBTb2NrZXQgYW5kIHJlY29ubmVjdCBpdC5cbiAgICovXG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbjtcbn1cblxuY2xhc3MgU3RyZWFtSGFuZGxlciBpbXBsZW1lbnRzIEJGU0UuUmVxdWVzdEhhbmRsZXIge1xuICBwcml2YXRlIGNvbm5lY3Rpb25TdGF0dXMkO1xuICBwcml2YXRlIHN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIHNob3VsZFF1ZXVlOiAoKSA9PiBib29sZWFuO1xuICBwcml2YXRlIGFjdGl2aXR5UXVldWU6IEFycmF5PEFjdGl2aXR5PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHM6IFN1YnNjcmliZXI8QWN0aXZpdHk+LCBjJDogT2JzZXJ2YWJsZTxDb25uZWN0aW9uU3RhdHVzPiwgc3E6ICgpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1YnNjcmliZXIgPSBzO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQgPSBjJDtcbiAgICB0aGlzLnNob3VsZFF1ZXVlID0gc3E7XG4gIH1cblxuICBwdWJsaWMgc2V0U3Vic2NyaWJlcihzOiBTdWJzY3JpYmVyPEFjdGl2aXR5Pikge1xuICAgIHRoaXMuc3Vic2NyaWJlciA9IHM7XG4gIH1cblxuICBhc3luYyBwcm9jZXNzUmVxdWVzdChyZXF1ZXN0OiBCRlNFLklSZWNlaXZlUmVxdWVzdCwgbG9nZ2VyPzogYW55KTogUHJvbWlzZTxCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3RyZWFtcyA9IFsuLi5yZXF1ZXN0LnN0cmVhbXNdO1xuICAgIGNvbnN0IHN0cmVhbTAgPSBzdHJlYW1zLnNoaWZ0KCk7XG4gICAgY29uc3QgYWN0aXZpdHlTZXRKc29uID0gYXdhaXQgc3RyZWFtMC5yZWFkQXNTdHJpbmcoKTtcbiAgICBjb25zdCBhY3Rpdml0eVNldCA9IEpTT04ucGFyc2UoYWN0aXZpdHlTZXRKc29uKTtcblxuICAgIGlmIChhY3Rpdml0eVNldC5hY3Rpdml0aWVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgLy8gT25seSBvbmUgYWN0aXZpdHkgaXMgZXhwZWN0ZWQgaW4gYSBzZXQgaW4gc3RyZWFtaW5nXG4gICAgICB0aGlzLnN1YnNjcmliZXIuZXJyb3IobmV3IEVycm9yKCd0aGVyZSBzaG91bGQgYmUgZXhhY3RseSBvbmUgYWN0aXZpdHknKSk7XG4gICAgICByZXR1cm4gQkZTRS5TdHJlYW1pbmdSZXNwb25zZS5jcmVhdGUoNTAwKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpdml0eSA9IGFjdGl2aXR5U2V0LmFjdGl2aXRpZXNbMF07XG5cbiAgICBpZiAoc3RyZWFtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBhdHRhY2htZW50cyA9IFsuLi5hY3Rpdml0eS5hdHRhY2htZW50c107XG5cbiAgICAgIGxldCBzdHJlYW06IEJGU0UuQ29udGVudFN0cmVhbTtcbiAgICAgIHdoaWxlICgoc3RyZWFtID0gc3RyZWFtcy5zaGlmdCgpKSkge1xuICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgc3RyZWFtLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBkYXRhVXJpID0gJ2RhdGE6dGV4dC9wbGFpbjtiYXNlNjQsJyArIGF0dGFjaG1lbnQ7XG4gICAgICAgIGF0dGFjaG1lbnRzLnB1c2goeyBjb250ZW50VHlwZTogc3RyZWFtLmNvbnRlbnRUeXBlLCBjb250ZW50VXJsOiBkYXRhVXJpIH0pO1xuICAgICAgfVxuXG4gICAgICBhY3Rpdml0eS5hdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3VsZFF1ZXVlKCkpIHtcbiAgICAgIHRoaXMuYWN0aXZpdHlRdWV1ZS5wdXNoKGFjdGl2aXR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmVyLm5leHQoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiBCRlNFLlN0cmVhbWluZ1Jlc3BvbnNlLmNyZWF0ZSgyMDApO1xuICB9XG5cbiAgcHVibGljIGZsdXNoKCkge1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUuZm9yRWFjaChhID0+IHRoaXMuc3Vic2NyaWJlci5uZXh0KGEpKTtcbiAgICB0aGlzLmFjdGl2aXR5UXVldWUgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5zdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpcmVjdExpbmVTdHJlYW1pbmcgaW1wbGVtZW50cyBJQm90Q29ubmVjdGlvbiB7XG4gIHB1YmxpYyBjb25uZWN0aW9uU3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoQ29ubmVjdGlvblN0YXR1cy5VbmluaXRpYWxpemVkKTtcbiAgcHVibGljIGFjdGl2aXR5JDogT2JzZXJ2YWJsZTxBY3Rpdml0eT47XG5cbiAgcHJpdmF0ZSBhY3Rpdml0eVN1YnNjcmliZXI6IFN1YnNjcmliZXI8QWN0aXZpdHk+O1xuICBwcml2YXRlIGNvbm5lY3REZWZlcnJlZDogRGVmZXJyZWQ8dm9pZD47XG4gIHByaXZhdGUgdGhlU3RyZWFtSGFuZGxlcjogU3RyZWFtSGFuZGxlcjtcblxuICBwcml2YXRlIGRvbWFpbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0b2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHN0cmVhbUNvbm5lY3Rpb246IEJGU0UuV2ViU29ja2V0Q2xpZW50O1xuICBwcml2YXRlIHF1ZXVlQWN0aXZpdGllczogYm9vbGVhbjtcblxuICBwcml2YXRlIF9ib3RBZ2VudCA9ICcnO1xuXG4gICNuZXR3b3JrSW5mb3JtYXRpb246IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEaXJlY3RMaW5lU3RyZWFtaW5nT3B0aW9ucykge1xuICAgIC8vIFJlY3RpZmllcyBgb3B0aW9ucy5uZXR3b3JrSW5mb3JtYXRpb25gLlxuICAgIGNvbnN0IG5ldHdvcmtJbmZvcm1hdGlvbiA9IG9wdGlvbnM/Lm5ldHdvcmtJbmZvcm1hdGlvbjtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAodHlwZW9mIG5ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBuZXR3b3JrSW5mb3JtYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2YgbmV0d29ya0luZm9ybWF0aW9uLnR5cGUgPT09ICdzdHJpbmcnKVxuICAgICkge1xuICAgICAgdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uID0gbmV0d29ya0luZm9ybWF0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdib3RmcmFtZXdvcmstZGlyZWN0bGluZWpzOiBcIm5ldHdvcmtJbmZvcm1hdGlvblwiIG9wdGlvbiBzcGVjaWZpZWQgbXVzdCBiZSBhIGBOZXR3b3JrSW5mb3JtYXRpb25gLWxpa2UgaW5zdGFuY2UgZXh0ZW5kaW5nIGBFdmVudFRhcmdldGAgaW50ZXJmYWNlIHdpdGggYSBgdHlwZWAgcHJvcGVydHkgcmV0dXJuaW5nIGEgc3RyaW5nLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy50b2tlbiA9IG9wdGlvbnMudG9rZW47XG5cbiAgICB0aGlzLnJlZnJlc2hUb2tlbigpLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkV4cGlyZWRUb2tlbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbWFpbiA9IG9wdGlvbnMuZG9tYWluO1xuXG4gICAgaWYgKG9wdGlvbnMuY29udmVyc2F0aW9uSWQpIHtcbiAgICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBvcHRpb25zLmNvbnZlcnNhdGlvbklkO1xuICAgIH1cblxuICAgIHRoaXMuX2JvdEFnZW50ID0gdGhpcy5nZXRCb3RBZ2VudChvcHRpb25zLmJvdEFnZW50KTtcblxuICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2aXR5JCA9IE9ic2VydmFibGUuY3JlYXRlKGFzeW5jIChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPEFjdGl2aXR5PikgPT4ge1xuICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmliZXIgPSBzdWJzY3JpYmVyO1xuICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyID0gbmV3IFN0cmVhbUhhbmRsZXIoc3Vic2NyaWJlciwgdGhpcy5jb25uZWN0aW9uU3RhdHVzJCwgKCkgPT4gdGhpcy5xdWV1ZUFjdGl2aXRpZXMpO1xuXG4gICAgICAvLyBSZXNvbHZpbmcgY29ubmVjdERlZmVycmVkIHdpbGwga2ljay1vZmYgdGhlIGNvbm5lY3Rpb24uXG4gICAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgfSkuc2hhcmUoKTtcblxuICAgIC8vIGNvbm5lY3RXaXRoUmV0cnlBc3luYygpIHdpbGwgY3JlYXRlIHRoZSBjb25uZWN0RGVmZXJyZWQgb2JqZWN0IHJlcXVpcmVkIGluIGFjdGl2aXR5JC5cbiAgICB0aGlzLmNvbm5lY3RXaXRoUmV0cnlBc3luYygpO1xuICB9XG5cbiAgcHVibGljIHJlY29ubmVjdCh7IGNvbnZlcnNhdGlvbklkLCB0b2tlbiB9OiBDb252ZXJzYXRpb24pIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaGFzIGVuZGVkLicpO1xuICAgIH1cblxuICAgIHRoaXMuY29udmVyc2F0aW9uSWQgPSBjb252ZXJzYXRpb25JZDtcbiAgICB0aGlzLnRva2VuID0gdG9rZW47XG5cbiAgICB0aGlzLmNvbm5lY3REZWZlcnJlZC5yZXNvbHZlKCk7XG4gIH1cblxuICBlbmQoKSB7XG4gICAgLy8gT25jZSBlbmQoKSBpcyBjYWxsZWQsIG5vIHJlY29ubmVjdGlvbiBjYW4gYmUgbWFkZS5cbiAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRW5kZWQpO1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbW1vbkhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLnRva2VufWAsXG4gICAgICAneC1tcy1ib3QtYWdlbnQnOiB0aGlzLl9ib3RBZ2VudFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEJvdEFnZW50KGN1c3RvbUFnZW50OiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgbGV0IGNsaWVudEFnZW50ID0gJ2RpcmVjdGxpbmVTdHJlYW1pbmcnO1xuXG4gICAgaWYgKGN1c3RvbUFnZW50KSB7XG4gICAgICBjbGllbnRBZ2VudCArPSBgOyAke2N1c3RvbUFnZW50fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke0RJUkVDVF9MSU5FX1ZFUlNJT059ICgke2NsaWVudEFnZW50fSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoVG9rZW4oZmlyc3RDYWxsID0gdHJ1ZSwgcmV0cnlDb3VudCA9IDApIHtcbiAgICBhd2FpdCB0aGlzLndhaXRVbnRpbE9ubGluZSgpO1xuXG4gICAgbGV0IG51bWJlck9mQXR0ZW1wdHMgPSAwO1xuICAgIHdoaWxlIChudW1iZXJPZkF0dGVtcHRzIDwgTUFYX1JFVFJZX0NPVU5UKSB7XG4gICAgICBudW1iZXJPZkF0dGVtcHRzKys7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgcmVmcmVzaFRva2VuSW50ZXJ2YWwpKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke3RoaXMuZG9tYWlufS90b2tlbnMvcmVmcmVzaGAsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHRoaXMuY29tbW9uSGVhZGVycygpIH0pO1xuICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgbnVtYmVyT2ZBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgY29uc3QgeyB0b2tlbiB9ID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IDQwMyB8fCByZXMuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhdGFsIGVycm9yIHdoaWxlIHJlZnJlc2hpbmcgdGhlIHRva2VuOiAke3Jlcy5zdGF0dXN9ICR7cmVzLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFJlZnJlc2ggYXR0ZW1wdCAjJHtudW1iZXJPZkF0dGVtcHRzfSBmYWlsZWQ6ICR7cmVzLnN0YXR1c30gJHtyZXMuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBSZWZyZXNoIGF0dGVtcHQgIyR7bnVtYmVyT2ZBdHRlbXB0c30gdGhyZXcgYW4gZXhjZXB0aW9uOiAke2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignUmV0cmllcyBleGhhdXN0ZWQnKTtcbiAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcG9zdEFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRW5kZWQgfHxcbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQudmFsdWUgPT09IENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0XG4gICAgKSB7XG4gICAgICByZXR1cm4gT2JzZXJ2YWJsZS50aHJvdyhuZXcgRXJyb3IoJ0Nvbm5lY3Rpb24gaXMgY2xvc2VkJykpO1xuICAgIH1cblxuICAgIGlmIChhY3Rpdml0eS50eXBlID09PSAnbWVzc2FnZScgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMgJiYgYWN0aXZpdHkuYXR0YWNobWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zdE1lc3NhZ2VXaXRoQXR0YWNobWVudHMoYWN0aXZpdHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3AkID0gT2JzZXJ2YWJsZS5jcmVhdGUoYXN5bmMgc3Vic2NyaWJlciA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZShcbiAgICAgICAgJ1BPU1QnLFxuICAgICAgICAnL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8nICsgdGhpcy5jb252ZXJzYXRpb25JZCArICcvYWN0aXZpdGllcydcbiAgICAgICk7XG4gICAgICByZXF1ZXN0LnNldEJvZHkoSlNPTi5zdHJpbmdpZnkoYWN0aXZpdHkpKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICBpZiAocmVzcC5zdGF0dXNDb2RlICE9PSAyMDApIHRocm93IG5ldyBFcnJvcignUG9zdEFjdGl2aXR5IHJldHVybmVkICcgKyByZXNwLnN0YXR1c0NvZGUpO1xuICAgICAgICBjb25zdCBudW1iZXJPZlN0cmVhbXMgPSByZXNwLnN0cmVhbXMubGVuZ3RoO1xuICAgICAgICBpZiAobnVtYmVyT2ZTdHJlYW1zICE9PSAxKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIG9uZSBzdHJlYW0gYnV0IGdvdCAnICsgbnVtYmVyT2ZTdHJlYW1zKTtcbiAgICAgICAgY29uc3QgaWRTdHJpbmcgPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBKU09OLnBhcnNlKGlkU3RyaW5nKTtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KGlkKTtcbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXR3b3JrIGlzc3VlIHRoZW4gaXRzIGhhbmRsZWQgYnlcbiAgICAgICAgLy8gdGhlIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLiBFdmVyeXRoaW5nIGVsc2UgY2FuXG4gICAgICAgIC8vIGJlIHJldHJpZWRcbiAgICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgICB0aGlzLnN0cmVhbUNvbm5lY3Rpb24uZGlzY29ubmVjdCgpO1xuICAgICAgICByZXR1cm4gc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcCQ7XG4gIH1cblxuICBwcml2YXRlIHBvc3RNZXNzYWdlV2l0aEF0dGFjaG1lbnRzKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCAuLi5tZXNzYWdlV2l0aG91dEF0dGFjaG1lbnRzIH0gPSBtZXNzYWdlO1xuXG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKHN1YnNjcmliZXIgPT4ge1xuICAgICAgY29uc3QgaHR0cENvbnRlbnRMaXN0ID0gW107XG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgYXR0YWNobWVudHMubWFwKGFzeW5jIGF0dGFjaG1lbnQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZWRpYSA9IGF0dGFjaG1lbnQgYXMgTWVkaWE7XG4gICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKG1lZGlhLmNvbnRlbnRVcmwpO1xuICAgICAgICAgICAgICBpZiAocmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgYXJyYXlCdWZmZXI6IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpLCBtZWRpYSB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGFycmF5QnVmZmVycy5mb3JFYWNoKCh7IGFycmF5QnVmZmVyLCBtZWRpYSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQkZTRS5TdWJzY3JpYmFibGVTdHJlYW0oKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZShidWZmZXIpO1xuICAgICAgICAgICAgY29uc3QgaHR0cENvbnRlbnQgPSBuZXcgQkZTRS5IdHRwQ29udGVudCh7IHR5cGU6IG1lZGlhLmNvbnRlbnRUeXBlLCBjb250ZW50TGVuZ3RoOiBidWZmZXIubGVuZ3RoIH0sIHN0cmVhbSk7XG4gICAgICAgICAgICBodHRwQ29udGVudExpc3QucHVzaChodHRwQ29udGVudCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB1cmwgPSBgL3YzL2RpcmVjdGxpbmUvY29udmVyc2F0aW9ucy8ke3RoaXMuY29udmVyc2F0aW9uSWR9L3VzZXJzLyR7bWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cy5mcm9tLmlkfS91cGxvYWRgO1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBCRlNFLlN0cmVhbWluZ1JlcXVlc3QuY3JlYXRlKCdQVVQnLCB1cmwpO1xuICAgICAgICAgIGNvbnN0IGFjdGl2aXR5U3RyZWFtID0gbmV3IEJGU0UuU3Vic2NyaWJhYmxlU3RyZWFtKCk7XG4gICAgICAgICAgYWN0aXZpdHlTdHJlYW0ud3JpdGUoSlNPTi5zdHJpbmdpZnkobWVzc2FnZVdpdGhvdXRBdHRhY2htZW50cyksICd1dGYtOCcpO1xuICAgICAgICAgIHJlcXVlc3QuYWRkU3RyZWFtKFxuICAgICAgICAgICAgbmV3IEJGU0UuSHR0cENvbnRlbnQoXG4gICAgICAgICAgICAgIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQuYWN0aXZpdHknLCBjb250ZW50TGVuZ3RoOiBhY3Rpdml0eVN0cmVhbS5sZW5ndGggfSxcbiAgICAgICAgICAgICAgYWN0aXZpdHlTdHJlYW1cbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGh0dHBDb250ZW50TGlzdC5mb3JFYWNoKGUgPT4gcmVxdWVzdC5hZGRTdHJlYW0oZSkpO1xuXG4gICAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuc3RyZWFtQ29ubmVjdGlvbi5zZW5kKHJlcXVlc3QpO1xuICAgICAgICAgIGlmIChyZXNwLnN0cmVhbXMgJiYgcmVzcC5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihuZXcgRXJyb3IoYEludmFsaWQgc3RyZWFtIGNvdW50ICR7cmVzcC5zdHJlYW1zLmxlbmd0aH1gKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHsgSWQ6IGlkIH0gPSBhd2FpdCByZXNwLnN0cmVhbXNbMF0ucmVhZEFzSnNvbjx7IElkOiBzdHJpbmcgfT4oKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChpZCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdFVudGlsT25saW5lKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLnN1YnNjcmliZShcbiAgICAgICAgY3MgPT4ge1xuICAgICAgICAgIGlmIChjcyA9PT0gQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlID0+IHJlamVjdChlKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdEFzeW5jKCkge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlZ0V4cCgnXmh0dHAocz8pJyk7XG5cbiAgICBpZiAoIXJlLnRlc3QodGhpcy5kb21haW4pKSB7XG4gICAgICB0aHJvdyAnRG9tYWluIG11c3QgYmVnaW4gd2l0aCBodHRwIG9yIGh0dHBzJztcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHRva2VuOiB0aGlzLnRva2VuIH07XG5cbiAgICBpZiAodGhpcy5jb252ZXJzYXRpb25JZCkge1xuICAgICAgcGFyYW1zWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDtcbiAgICB9XG5cbiAgICBjb25zdCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgY29uc3QgdXJsU2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd3NVcmwgPSBgJHt0aGlzLmRvbWFpbi5yZXBsYWNlKHJlLCAnd3MkMScpfS9jb252ZXJzYXRpb25zL2Nvbm5lY3Q/JHt1cmxTZWFyY2hQYXJhbXN9YDtcblxuICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlc29sdmUgd2hlbiBpdCBpcyBkaXNjb25uZWN0ZWQuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuc3RyZWFtQ29ubmVjdGlvbiA9IG5ldyBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uKHtcbiAgICAgICAgICBkaXNjb25uZWN0aW9uSGFuZGxlcjogcmVzb2x2ZSxcbiAgICAgICAgICBuZXR3b3JrSW5mb3JtYXRpb246IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbixcbiAgICAgICAgICByZXF1ZXN0SGFuZGxlcjoge1xuICAgICAgICAgICAgcHJvY2Vzc1JlcXVlc3Q6IHN0cmVhbWluZ1JlcXVlc3QgPT4ge1xuICAgICAgICAgICAgICAvLyBJZiBgc3RyZWFtQ29ubmVjdGlvbmAgaXMgc3RpbGwgY3VycmVudCwgYWxsb3cgY2FsbCB0byBgcHJvY2Vzc1JlcXVlc3QoKWAsIG90aGVyd2lzZSwgaWdub3JlIGNhbGxzIHRvIGBwcm9jZXNzUmVxdWVzdCgpYC5cbiAgICAgICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyB6b21iaWUgY29ubmVjdGlvbnMgZnJvbSBzZW5kaW5nIHVzIHJlcXVlc3RzLlxuICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcHJvY2VzcyBzdHJlYW1pbmcgcmVxdWVzdCwgYHN0cmVhbWluZ0Nvbm5lY3Rpb25gIHNob3VsZCBiZSBkaXNjb25uZWN0ZWQuJyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50aGVTdHJlYW1IYW5kbGVyLnByb2Nlc3NSZXF1ZXN0KHN0cmVhbWluZ1JlcXVlc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdXJsOiB3c1VybFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnF1ZXVlQWN0aXZpdGllcyA9IHRydWU7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLmNvbm5lY3QoKTtcblxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gQkZTRS5TdHJlYW1pbmdSZXF1ZXN0LmNyZWF0ZSgnUE9TVCcsICcvdjMvZGlyZWN0bGluZS9jb252ZXJzYXRpb25zJyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5zdHJlYW1Db25uZWN0aW9uLnNlbmQocmVxdWVzdCk7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29ubmVjdGlvbiByZXNwb25zZSBjb2RlICcgKyByZXNwb25zZS5zdGF0dXNDb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdHJlYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgMSBzdHJlYW0gYnV0IGdvdCAnICsgcmVzcG9uc2Uuc3RyZWFtcy5sZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VTdHJpbmcgPSBhd2FpdCByZXNwb25zZS5zdHJlYW1zWzBdLnJlYWRBc1N0cmluZygpO1xuICAgICAgICBjb25zdCBjb252ZXJzYXRpb24gPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyaW5nKTtcblxuICAgICAgICB0aGlzLmNvbnZlcnNhdGlvbklkID0gY29udmVyc2F0aW9uLmNvbnZlcnNhdGlvbklkO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5PbmxpbmUpO1xuXG4gICAgICAgIC8vIFdhaXQgdW50aWwgREwgY29uc3VtZXJzIGhhdmUgaGFkIGEgY2hhbmNlIHRvIGJlIG5vdGlmaWVkXG4gICAgICAgIC8vIG9mIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2UuXG4gICAgICAgIC8vIFRoaXMgaXMgc3BlY2lmaWMgdG8gUnhKUyBpbXBsZW1lbnRhdGlvbiBvZiBvYnNlcnZhYmxlLCB3aGljaCBjYWxsaW5nIHN1YnNjcmliZSgpIGFmdGVyIG5leHQoKSB3aWxsIHN0aWxsIGdldCB0aGUgdmFsdWUuXG4gICAgICAgIGF3YWl0IHRoaXMud2FpdFVudGlsT25saW5lKCk7XG5cbiAgICAgICAgdGhpcy50aGVTdHJlYW1IYW5kbGVyLmZsdXNoKCk7XG4gICAgICAgIHRoaXMucXVldWVBY3Rpdml0aWVzID0gZmFsc2U7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KS5maW5hbGx5KCgpID0+IGFib3J0Q29udHJvbGxlci5hYm9ydCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29ubmVjdFdpdGhSZXRyeUFzeW5jKCkge1xuICAgIC8vIFRoaXMgZm9yLWxvb3Agd2lsbCBicmVhayB3aGVuIHNvbWVvbmUgY2FsbCBlbmQoKSBhbmQgaXQgd2lsbCBzaWduYWwgQ29ubmVjdGlvblN0YXR1cy5FbmRlZC5cbiAgICBmb3IgKDs7KSB7XG4gICAgICAvLyBDcmVhdGUgYSBuZXcgc2lnbmFsIGFuZCB3YWl0IGZvciBzb21lb25lIGtpY2tpbmcgb2ZmIHRoZSBjb25uZWN0aW9uOlxuICAgICAgLy8gLSBzdWJzY3JpYmUgdG8gYWN0aXZpdHkkLCBvcjtcbiAgICAgIC8vIC0gcmV0cmllcyBleGhhdXN0ZWQgKEZhaWxlZFRvQ29ubmVjdCksIHRoZW4sIHNvbWVvbmUgY2FsbCByZWNvbm5lY3QoKVxuICAgICAgYXdhaXQgKHRoaXMuY29ubmVjdERlZmVycmVkID0gY3JlYXRlRGVmZXJyZWQoKSkucHJvbWlzZTtcblxuICAgICAgbGV0IG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG5cbiAgICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQubmV4dChDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpO1xuXG4gICAgICB3aGlsZSAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgbnVtUmV0cmllcy0tO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgcHJvbWlzZSB3aWxsIHJlamVjdC9yZXNvbHZlIHdoZW4gZGlzY29ubmVjdGVkLlxuICAgICAgICAgIGF3YWl0IHRoaXMuY29ubmVjdEFzeW5jKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHNvbWVvbmUgY2FsbCBlbmQoKSB0byBicmVhayB0aGUgY29ubmVjdGlvbiwgd2Ugd2lsbCBuZXZlciBsaXN0ZW4gdG8gYW55IHJlY29ubmVjdCgpLlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpID09PSBDb25uZWN0aW9uU3RhdHVzLkVuZGVkKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBwbGFjZSB0aGUgbG9vcCBpbiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgYnJva2UuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHNpZ25hbCBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcgdHdpY2Ugb3IgbW9yZSB3aXRob3V0IGFuIGFjdHVhbCBjb25uZWN0aW9uLlxuICAgICAgICAvLyBTdWJzZXF1ZW50IHJldHJpZXMgc2hvdWxkIGJlIHRyYW5zcGFyZW50LlxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdHVzJC5nZXRWYWx1ZSgpICE9PSBDb25uZWN0aW9uU3RhdHVzLkNvbm5lY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0dXMkLm5leHQoQ29ubmVjdGlvblN0YXR1cy5Db25uZWN0aW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gbGFzdGVkIGZvciBtb3JlIHRoYW4gYSBtaW51dGUsIHRoZSBwcmV2aW91cyBjb25uZWN0aW9uIGlzIGdvb2QsIHdoaWNoIG1lYW5zOlxuICAgICAgICAvLyAtIHdlIHNob3VsZCByZXNldCB0aGUgcmV0cnkgY291bnRlciwgYW5kO1xuICAgICAgICAvLyAtIHdlIHNob3VsZCByZWNvbm5lY3QgaW1tZWRpYXRlbHkuXG4gICAgICAgIGlmICg2MDAwMCA8IERhdGUubm93KCkgLSBzdGFydCkge1xuICAgICAgICAgIG51bVJldHJpZXMgPSBNQVhfUkVUUllfQ09VTlQ7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtUmV0cmllcyA+IDApIHtcbiAgICAgICAgICAvLyBTbGVlcCBvbmx5IGlmIHdlIGFyZSBkb2luZyByZXRyeS4gT3RoZXJ3aXNlLCB3ZSBhcmUgZ29pbmcgdG8gYnJlYWsgdGhlIGxvb3AgYW5kIHNpZ25hbCBGYWlsZWRUb0Nvbm5lY3QuXG4gICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIHRoaXMuZ2V0UmV0cnlEZWxheSgpKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogW1RFU1RdIE1ha2Ugc3VyZSBGYWlsZWRUb0Nvbm5lY3QgaXMgcmVwb3J0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgbGFzdCBkaXNjb25uZWN0aW9uLCBzaG91bGQgYmUgbm8gZ2V0UmV0cnlEZWxheSgpLlxuICAgICAgLy8gRmFpbGVkIHRvIHJlY29ubmVjdCBhZnRlciBtdWx0aXBsZSByZXRyaWVzLlxuICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdHVzJC5uZXh0KENvbm5lY3Rpb25TdGF0dXMuRmFpbGVkVG9Db25uZWN0KTtcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBObyBjb2RlIHdpbGwgaGl0IHRoaXMgbGluZS5cbiAgfVxuXG4gIC8vIFJldHVybnMgdGhlIGRlbGF5IGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kc1xuICBwcml2YXRlIGdldFJldHJ5RGVsYXkoKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoMzAwMCArIE1hdGgucmFuZG9tKCkgKiAxMjAwMCk7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = parseFilename;\n\nvar _toArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toArray\"));\n\nfunction parseFilename(filename) {\n if (!filename) {\n return {\n extname: '',\n name: ''\n };\n } else if (~filename.indexOf('.')) {\n var _filename$split$rever = filename.split('.').reverse(),\n _filename$split$rever2 = (0, _toArray2[\"default\"])(_filename$split$rever),\n extensionWithoutDot = _filename$split$rever2[0],\n nameSegments = _filename$split$rever2.slice(1);\n\n return {\n extname: '.' + extensionWithoutDot,\n name: nameSegments.reverse().join('.')\n };\n } else {\n return {\n extname: '',\n name: filename\n };\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZUZpbGVuYW1lLmpzIl0sIm5hbWVzIjpbInBhcnNlRmlsZW5hbWUiLCJmaWxlbmFtZSIsImV4dG5hbWUiLCJuYW1lIiwiaW5kZXhPZiIsInNwbGl0IiwicmV2ZXJzZSIsImV4dGVuc2lvbldpdGhvdXREb3QiLCJuYW1lU2VnbWVudHMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFlLFNBQVNBLGFBQVQsQ0FBdUJDLFFBQXZCLEVBQWlDO0FBQzVDLE1BQUksQ0FBQ0EsUUFBTCxFQUFlO0FBQ1gsV0FBTztBQUNIQyxNQUFBQSxPQUFPLEVBQUUsRUFETjtBQUVIQyxNQUFBQSxJQUFJLEVBQUU7QUFGSCxLQUFQO0FBSUgsR0FMRCxNQUtPLElBQUksQ0FBQ0YsUUFBUSxDQUFDRyxPQUFULENBQWlCLEdBQWpCLENBQUwsRUFBNEI7QUFDL0IsZ0NBQStDSCxRQUFRLENBQUNJLEtBQVQsQ0FBZSxHQUFmLEVBQW9CQyxPQUFwQixFQUEvQztBQUFBO0FBQUEsUUFBT0MsbUJBQVA7QUFBQSxRQUErQkMsWUFBL0I7O0FBRUEsV0FBTztBQUNITixNQUFBQSxPQUFPLEVBQUUsTUFBTUssbUJBRFo7QUFFSEosTUFBQUEsSUFBSSxFQUFFSyxZQUFZLENBQUNGLE9BQWIsR0FBdUJHLElBQXZCLENBQTRCLEdBQTVCO0FBRkgsS0FBUDtBQUlILEdBUE0sTUFPQTtBQUNILFdBQU87QUFDSFAsTUFBQUEsT0FBTyxFQUFFLEVBRE47QUFFSEMsTUFBQUEsSUFBSSxFQUFFRjtBQUZILEtBQVA7QUFJSDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcGFyc2VGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogJydcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKH5maWxlbmFtZS5pbmRleE9mKCcuJykpIHtcbiAgICAgICAgY29uc3QgW2V4dGVuc2lvbldpdGhvdXREb3QsIC4uLm5hbWVTZWdtZW50c10gPSBmaWxlbmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXh0bmFtZTogJy4nICsgZXh0ZW5zaW9uV2l0aG91dERvdCxcbiAgICAgICAgICAgIG5hbWU6IG5hbWVTZWdtZW50cy5yZXZlcnNlKCkuam9pbignLicpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4dG5hbWU6ICcnLFxuICAgICAgICAgICAgbmFtZTogZmlsZW5hbWVcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _get2 = _interopRequireDefault(require(\"@babel/runtime/helpers/get\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _classPrivateFieldGet4 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldGet\"));\n\nvar _classPrivateFieldSet2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classPrivateFieldSet\"));\n\nvar _botframeworkStreaming = require(\"botframework-streaming\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar _connectCalled = /*#__PURE__*/new WeakMap();\n\nvar _handleNetworkInformationChange = /*#__PURE__*/new WeakMap();\n\nvar _initialNetworkInformationType = /*#__PURE__*/new WeakMap();\n\nvar _networkInformation = /*#__PURE__*/new WeakMap();\n\nvar WebSocketClientWithNetworkInformation = /*#__PURE__*/function (_WebSocketClient) {\n (0, _inherits2[\"default\"])(WebSocketClientWithNetworkInformation, _WebSocketClient);\n\n var _super = _createSuper(WebSocketClientWithNetworkInformation);\n\n function WebSocketClientWithNetworkInformation(_ref) {\n var _this;\n\n var disconnectionHandler = _ref.disconnectionHandler,\n networkInformation = _ref.networkInformation,\n requestHandler = _ref.requestHandler,\n url = _ref.url;\n (0, _classCallCheck2[\"default\"])(this, WebSocketClientWithNetworkInformation);\n _this = _super.call(this, {\n disconnectionHandler: disconnectionHandler,\n requestHandler: requestHandler,\n url: url\n });\n\n _connectCalled.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: false\n });\n\n _handleNetworkInformationChange.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: function value() {\n return (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _initialNetworkInformationType) === (0, _classPrivateFieldGet4[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation).type || _this.disconnect();\n }\n });\n\n _initialNetworkInformationType.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: void 0\n });\n\n _networkInformation.set((0, _assertThisInitialized2[\"default\"])(_this), {\n writable: true,\n value: void 0\n });\n\n (0, _classPrivateFieldSet2[\"default\"])((0, _assertThisInitialized2[\"default\"])(_this), _networkInformation, networkInformation);\n return _this;\n }\n\n (0, _createClass2[\"default\"])(WebSocketClientWithNetworkInformation, [{\n key: \"connect\",\n value: // TODO: Better, the `NetworkInformation` instance should be passed to `BrowserWebSocketClient` -> `BrowserWebSocket`.\n // `BrowserWebSocket` is where it creates `WebSocket` object.\n // The `NetworkInformation` instance should accompany `WebSocket` and forcibly close it on abort.\n // Maybe `botframework-streaming` should accept ponyfills.\n function connect() {\n if ((0, _classPrivateFieldGet4[\"default\"])(this, _connectCalled)) {\n console.warn('botframework-directlinejs: connect() can only be called once.');\n return Promise.resolve();\n }\n\n (0, _classPrivateFieldSet2[\"default\"])(this, _connectCalled, true);\n\n if ((0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) {\n var _classPrivateFieldGet2 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation),\n initialType = _classPrivateFieldGet2.type;\n\n (0, _classPrivateFieldSet2[\"default\"])(this, _initialNetworkInformationType, initialType);\n\n if (initialType === 'none') {\n console.warn('botframework-directlinejs: Failed to connect while offline.');\n return Promise.reject(new Error('botframework-directlinejs: Failed to connect while offline.'));\n }\n\n (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation).addEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n }\n\n return (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"connect\", this).call(this);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n var _classPrivateFieldGet3;\n\n (_classPrivateFieldGet3 = (0, _classPrivateFieldGet4[\"default\"])(this, _networkInformation)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.removeEventListener('change', (0, _classPrivateFieldGet4[\"default\"])(this, _handleNetworkInformationChange));\n (0, _get2[\"default\"])((0, _getPrototypeOf2[\"default\"])(WebSocketClientWithNetworkInformation.prototype), \"disconnect\", this).call(this);\n }\n }]);\n return WebSocketClientWithNetworkInformation;\n}(_botframeworkStreaming.WebSocketClient);\n\nexports[\"default\"] = WebSocketClientWithNetworkInformation;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW1pbmcvV2ViU29ja2V0Q2xpZW50V2l0aE5ldHdvcmtJbmZvcm1hdGlvbi50cyJdLCJuYW1lcyI6WyJXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uIiwiZGlzY29ubmVjdGlvbkhhbmRsZXIiLCJuZXR3b3JrSW5mb3JtYXRpb24iLCJyZXF1ZXN0SGFuZGxlciIsInVybCIsInR5cGUiLCJkaXNjb25uZWN0IiwiY29uc29sZSIsIndhcm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsImluaXRpYWxUeXBlIiwicmVqZWN0IiwiRXJyb3IiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIldlYlNvY2tldENsaWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7O0lBZ0JxQkEscUM7Ozs7O0FBQ25CLHVEQUs4QztBQUFBOztBQUFBLFFBSjVDQyxvQkFJNEMsUUFKNUNBLG9CQUk0QztBQUFBLFFBSDVDQyxrQkFHNEMsUUFINUNBLGtCQUc0QztBQUFBLFFBRjVDQyxjQUU0QyxRQUY1Q0EsY0FFNEM7QUFBQSxRQUQ1Q0MsR0FDNEMsUUFENUNBLEdBQzRDO0FBQUE7QUFDNUMsOEJBQU07QUFDSkgsTUFBQUEsb0JBQW9CLEVBQXBCQSxvQkFESTtBQUVKRSxNQUFBQSxjQUFjLEVBQWRBLGNBRkk7QUFHSkMsTUFBQUEsR0FBRyxFQUFIQTtBQUhJLEtBQU47O0FBRDRDO0FBQUE7QUFBQSxhQVVwQjtBQVZvQjs7QUFBQTtBQUFBO0FBQUEsYUFhWjtBQUFBLGVBQ2hDLDJIQUF3Qyw0R0FBeUJDLElBQWpFLElBQXlFLE1BQUtDLFVBQUwsRUFEekM7QUFBQTtBQWJZOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQU81QyxnSEFBMkJKLGtCQUEzQjtBQVA0QztBQVE3Qzs7OztXQVVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXlCO0FBQ3ZCLGlEQUFJLElBQUosbUJBQXlCO0FBQ3ZCSyxRQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSwrREFBYjtBQUVBLGVBQU9DLE9BQU8sQ0FBQ0MsT0FBUixFQUFQO0FBQ0Q7O0FBRUQsbUVBQXNCLElBQXRCOztBQUVBLGlEQUFJLElBQUosd0JBQThCO0FBQzVCLDRFQUE4QixJQUE5QjtBQUFBLFlBQWNDLFdBQWQsMEJBQVFOLElBQVI7O0FBRUEscUZBQXNDTSxXQUF0Qzs7QUFFQSxZQUFJQSxXQUFXLEtBQUssTUFBcEIsRUFBNEI7QUFDMUJKLFVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLDZEQUFiO0FBRUEsaUJBQU9DLE9BQU8sQ0FBQ0csTUFBUixDQUFlLElBQUlDLEtBQUosQ0FBVSw2REFBVixDQUFmLENBQVA7QUFDRDs7QUFFRCwwRUFBeUJDLGdCQUF6QixDQUEwQyxRQUExQyx5Q0FBb0QsSUFBcEQ7QUFDRDs7QUFFRDtBQUNEOzs7V0FFRCxzQkFBYTtBQUFBOztBQUNYLG1MQUEwQkMsbUJBQTFCLENBQThDLFFBQTlDLHlDQUF3RCxJQUF4RDtBQUNBO0FBQ0Q7OztFQXpEZ0VDLHNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2ViU29ja2V0Q2xpZW50IH0gZnJvbSAnYm90ZnJhbWV3b3JrLXN0cmVhbWluZyc7XG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdib3RmcmFtZXdvcmstc3RyZWFtaW5nJztcblxudHlwZSBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCA9IHtcbiAgLyoqXG4gICAqIEdldHMgb3Igc2V0cyB0aGUgb2JzZXJ2ZXIgZnVuY3Rpb24gZm9yIGRpc2Nvbm5lY3Rpb24gb3IgZXJyb3Igc2VuZGluZy9yZWNlaXZpbmcgdGhyb3VnaCBXZWJTb2NrZXQuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGUgY2FsbGVlIGlzIGV4cGVjdGVkIHRvIGlnbm9yZSBzdWJzZXF1ZW50IGNhbGxzLlxuICAgKi9cbiAgZGlzY29ubmVjdGlvbkhhbmRsZXI6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIG5ldHdvcmtJbmZvcm1hdGlvbj86IE5ldHdvcmtJbmZvcm1hdGlvbiB8IHVuZGVmaW5lZDtcbiAgcmVxdWVzdEhhbmRsZXI6IFJlcXVlc3RIYW5kbGVyO1xuICB1cmw6IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlNvY2tldENsaWVudFdpdGhOZXR3b3JrSW5mb3JtYXRpb24gZXh0ZW5kcyBXZWJTb2NrZXRDbGllbnQge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzY29ubmVjdGlvbkhhbmRsZXIsXG4gICAgbmV0d29ya0luZm9ybWF0aW9uLFxuICAgIHJlcXVlc3RIYW5kbGVyLFxuICAgIHVybFxuICB9OiBXZWJTb2NrZXRDbGllbnRXaXRoTmV0d29ya0luZm9ybWF0aW9uSW5pdCkge1xuICAgIHN1cGVyKHtcbiAgICAgIGRpc2Nvbm5lY3Rpb25IYW5kbGVyLFxuICAgICAgcmVxdWVzdEhhbmRsZXIsXG4gICAgICB1cmxcbiAgICB9KTtcblxuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbiA9IG5ldHdvcmtJbmZvcm1hdGlvbjtcbiAgfVxuXG4gICNjb25uZWN0Q2FsbGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIEFjY29yZGluZyB0byBXM0MgTmV0d29yayBJbmZvcm1hdGlvbiBBUEksIGh0dHBzOi8vd2ljZy5naXRodWIuaW8vbmV0aW5mby8jaGFuZGxpbmctY2hhbmdlcy10by10aGUtdW5kZXJseWluZy1jb25uZWN0aW9uLlxuICAvLyBOZXR3b3JrSW5mb3JtYXRpb24ub25DaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBvbiBhbnkgY2hhbmdlcyB0bzogYGRvd25saW5rTWF4YCwgYHR5cGVgLCBgZG93bmxpbmtgLCBvciBgcnR0YC5cbiAgI2hhbmRsZU5ldHdvcmtJbmZvcm1hdGlvbkNoYW5nZSA9ICgpID0+XG4gICAgdGhpcy4jaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGUgPT09IHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi50eXBlIHx8IHRoaXMuZGlzY29ubmVjdCgpO1xuICAjaW5pdGlhbE5ldHdvcmtJbmZvcm1hdGlvblR5cGU6IE5ldHdvcmtJbmZvcm1hdGlvblsndHlwZSddO1xuICAjbmV0d29ya0luZm9ybWF0aW9uOiBOZXR3b3JrSW5mb3JtYXRpb247XG5cbiAgLy8gVE9ETzogQmV0dGVyLCB0aGUgYE5ldHdvcmtJbmZvcm1hdGlvbmAgaW5zdGFuY2Ugc2hvdWxkIGJlIHBhc3NlZCB0byBgQnJvd3NlcldlYlNvY2tldENsaWVudGAgLT4gYEJyb3dzZXJXZWJTb2NrZXRgLlxuICAvLyAgICAgICBgQnJvd3NlcldlYlNvY2tldGAgaXMgd2hlcmUgaXQgY3JlYXRlcyBgV2ViU29ja2V0YCBvYmplY3QuXG4gIC8vICAgICAgIFRoZSBgTmV0d29ya0luZm9ybWF0aW9uYCBpbnN0YW5jZSBzaG91bGQgYWNjb21wYW55IGBXZWJTb2NrZXRgIGFuZCBmb3JjaWJseSBjbG9zZSBpdCBvbiBhYm9ydC5cbiAgLy8gICAgICAgTWF5YmUgYGJvdGZyYW1ld29yay1zdHJlYW1pbmdgIHNob3VsZCBhY2NlcHQgcG9ueWZpbGxzLlxuICBjb25uZWN0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLiNjb25uZWN0Q2FsbGVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IGNvbm5lY3QoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI2Nvbm5lY3RDYWxsZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbikge1xuICAgICAgY29uc3QgeyB0eXBlOiBpbml0aWFsVHlwZSB9ID0gdGhpcy4jbmV0d29ya0luZm9ybWF0aW9uO1xuXG4gICAgICB0aGlzLiNpbml0aWFsTmV0d29ya0luZm9ybWF0aW9uVHlwZSA9IGluaXRpYWxUeXBlO1xuXG4gICAgICBpZiAoaW5pdGlhbFR5cGUgPT09ICdub25lJykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay1kaXJlY3RsaW5lanM6IEZhaWxlZCB0byBjb25uZWN0IHdoaWxlIG9mZmxpbmUuJyk7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLWRpcmVjdGxpbmVqczogRmFpbGVkIHRvIGNvbm5lY3Qgd2hpbGUgb2ZmbGluZS4nKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLiNoYW5kbGVOZXR3b3JrSW5mb3JtYXRpb25DaGFuZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5jb25uZWN0KCk7XG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuI25ldHdvcmtJbmZvcm1hdGlvbj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy4jaGFuZGxlTmV0d29ya0luZm9ybWF0aW9uQ2hhbmdlKTtcbiAgICBzdXBlci5kaXNjb25uZWN0KCk7XG4gIH1cbn1cbiJdfQ==","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.BFSE = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\nvar payloads_1 = require(\"../payloads\");\nvar contentStream_1 = require(\"../contentStream\");\n/**\n * Assembles payloads for streaming library.\n *\n * @internal\n */\nvar PayloadAssembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param params Parameters for a streaming assembler.\n */\n function PayloadAssembler(streamManager, params) {\n this.streamManager = streamManager;\n this._byteOrderMark = 0xfeff;\n this._utf = 'utf8';\n if (params.header) {\n this.id = params.header.id;\n this.payloadType = params.header.payloadType;\n this.contentLength = params.header.payloadLength;\n this.end = params.header.end;\n }\n else {\n this.id = params.id;\n }\n if (!this.id) {\n throw Error('An ID must be supplied when creating an assembler.');\n }\n this._onCompleted = params.onCompleted;\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssembler.prototype.getPayloadStream = function () {\n if (!this.stream) {\n this.stream = this.createPayloadStream();\n }\n return this.stream;\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param stream The incoming stream being assembled.\n * @param _contentLength The length of the stream, if finite.\n */\n PayloadAssembler.prototype.onReceive = function (header, stream, _contentLength) {\n this.end = header.end;\n if (header.payloadType === payloads_1.PayloadTypes.response || header.payloadType === payloads_1.PayloadTypes.request) {\n this.process(stream).then().catch();\n }\n else if (header.end) {\n stream.end();\n }\n };\n /**\n * Closes the assembler.\n */\n PayloadAssembler.prototype.close = function () {\n this.streamManager.closeStream(this.id);\n };\n /**\n * Creates a new [SubscribableStream](xref:botframework-streaming.SubscribableStream) instance.\n *\n * @returns The new stream ready for consumption.\n */\n PayloadAssembler.prototype.createPayloadStream = function () {\n return new subscribableStream_1.SubscribableStream();\n };\n PayloadAssembler.prototype.payloadFromJson = function (json) {\n return JSON.parse(json.charCodeAt(0) === this._byteOrderMark ? json.slice(1) : json);\n };\n PayloadAssembler.prototype.stripBOM = function (input) {\n return input.charCodeAt(0) === this._byteOrderMark ? input.slice(1) : input;\n };\n PayloadAssembler.prototype.process = function (stream) {\n return __awaiter(this, void 0, void 0, function () {\n var streamData, streamDataAsString;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n streamData = stream.read(stream.length);\n if (!streamData) {\n return [2 /*return*/];\n }\n streamDataAsString = streamData.toString(this._utf);\n if (!(this.payloadType === payloads_1.PayloadTypes.request)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.processRequest(streamDataAsString)];\n case 1:\n _a.sent();\n return [3 /*break*/, 4];\n case 2:\n if (!(this.payloadType === payloads_1.PayloadTypes.response)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.processResponse(streamDataAsString)];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processResponse = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var responsePayload, receiveResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n responsePayload = this.payloadFromJson(this.stripBOM(streamDataAsString));\n receiveResponse = { streams: [], statusCode: responsePayload.statusCode };\n return [4 /*yield*/, this.processStreams(responsePayload, receiveResponse)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processRequest = function (streamDataAsString) {\n return __awaiter(this, void 0, void 0, function () {\n var requestPayload, receiveRequest;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestPayload = this.payloadFromJson(streamDataAsString);\n receiveRequest = { streams: [], path: requestPayload.path, verb: requestPayload.verb };\n return [4 /*yield*/, this.processStreams(requestPayload, receiveRequest)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n PayloadAssembler.prototype.processStreams = function (responsePayload, receiveResponse) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n (_a = responsePayload.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (responseStream) {\n var _a;\n // There was a bug in how streams were handled. In .NET, the StreamDescription definiton mapped the\n // \"type\" JSON property to `contentType`, but in Typescript there was no mapping. This is a workaround\n // to resolve this inconsistency.\n //\n // .NET code:\n // https://github.com/microsoft/botbuilder-dotnet/blob/a79036ddf6625ec3fd68a6f7295886eb7831bc1c/libraries/Microsoft.Bot.Streaming/Payloads/Models/StreamDescription.cs#L28-L29\n var contentType = (_a = responseStream.type) !== null && _a !== void 0 ? _a : responseStream.contentType;\n var contentAssembler = _this.streamManager.getPayloadAssembler(responseStream.id);\n contentAssembler.payloadType = contentType;\n contentAssembler.contentLength = responseStream.length;\n receiveResponse.streams.push(new contentStream_1.ContentStream(responseStream.id, contentAssembler));\n });\n return [4 /*yield*/, this._onCompleted(this.id, receiveResponse)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return PayloadAssembler;\n}());\nexports.PayloadAssembler = PayloadAssembler;\n\n},{\"../contentStream\":2,\"../payloads\":16,\"../subscribableStream\":27}],2:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContentStream = void 0;\n/**\n * A stream of fixed or infinite length containing content to be decoded.\n */\nvar ContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [ContentStream](xref:botframework-streaming.ContentStream) class.\n *\n * @param id The ID assigned to this instance.\n * @param assembler The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to this instance.\n */\n function ContentStream(id, assembler) {\n if (!assembler) {\n throw Error('Null Argument Exception');\n }\n this.id = id;\n this.assembler = assembler;\n }\n Object.defineProperty(ContentStream.prototype, \"contentType\", {\n /**\n * Gets the name of the type of the object contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns The [PayloadType](xref:botframework-streaming.PayloadType) of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.payloadType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ContentStream.prototype, \"length\", {\n /**\n * Gets the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns A number representing the length of this [ContentStream](xref:botframework-streaming.ContentStream).\n */\n get: function () {\n return this.assembler.contentLength;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Gets the data contained within this [ContentStream](xref:botframework-streaming.ContentStream).\n *\n * @returns This [ContentStream's](xref:botframework-streaming.ContentStream) [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\n ContentStream.prototype.getStream = function () {\n if (!this.stream) {\n this.stream = this.assembler.getPayloadStream();\n }\n return this.stream;\n };\n /**\n * Closes the assembler.\n */\n ContentStream.prototype.cancel = function () {\n this.assembler.close();\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a string.\n *\n * @returns A string Promise with [SubscribableStream](xref:botframework-streaming.SubscribableStream) content.\n */\n ContentStream.prototype.readAsString = function () {\n return __awaiter(this, void 0, void 0, function () {\n var bufferArray;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAll()];\n case 1:\n bufferArray = (_a.sent()).bufferArray;\n return [2 /*return*/, (bufferArray || []).map(function (result) { return result.toString('utf8'); }).join('')];\n }\n });\n });\n };\n /**\n * Gets the [SubscribableStream](xref:botframework-streaming.SubscribableStream) content as a typed JSON object.\n *\n * @returns A typed object Promise with `SubscribableStream` content.\n */\n ContentStream.prototype.readAsJson = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stringToParse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.readAsString()];\n case 1:\n stringToParse = _a.sent();\n return [2 /*return*/, JSON.parse(stringToParse)];\n }\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ContentStream.prototype.readAll = function () {\n return __awaiter(this, void 0, void 0, function () {\n var allData, count, stream, chunk, readToEnd;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n allData = [];\n count = 0;\n stream = this.getStream();\n // populate the array with any existing buffers\n while (count < stream.length) {\n chunk = stream.read(stream.length);\n allData.push(chunk);\n count += chunk.length;\n }\n if (!(count < this.length)) return [3 /*break*/, 2];\n readToEnd = new Promise(function (resolve) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var callback = function (cs) { return function (chunk) {\n allData.push(chunk);\n count += chunk.length;\n if (count === cs.length) {\n resolve(true);\n }\n }; };\n stream.subscribe(callback(_this));\n });\n return [4 /*yield*/, readToEnd];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2: return [2 /*return*/, { bufferArray: allData, size: count }];\n }\n });\n });\n };\n return ContentStream;\n}());\nexports.ContentStream = ContentStream;\n\n},{}],3:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancelDisassembler = void 0;\n/**\n * Streaming cancel disassembler.\n */\nvar CancelDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) that this Cancel request will be sent by.\n * @param id The ID of the Stream to cancel.\n * @param payloadType The type of the Stream that is being cancelled.\n */\n function CancelDisassembler(sender, id, payloadType) {\n this.sender = sender;\n this.id = id;\n this.payloadType = payloadType;\n }\n /**\n * Initiates the process of disassembling the request and signals the [PayloadSender](xref:botframework-streaming.PayloadSender) to begin sending.\n */\n CancelDisassembler.prototype.disassemble = function () {\n var header = {\n payloadType: this.payloadType,\n payloadLength: 0,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header);\n };\n return CancelDisassembler;\n}());\nexports.CancelDisassembler = CancelDisassembler;\n\n},{}],4:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContentStreamDisassembler = void 0;\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\nvar payloads_1 = require(\"../payloads\");\n/**\n * Disassembler for Http content stream\n */\nvar HttpContentStreamDisassembler = /** @class */ (function (_super) {\n __extends(HttpContentStreamDisassembler, _super);\n /**\n * Initializes a new instance of the [HttpContentStreamDisassembler](xref:botframework-streaming.HttpContentStreamDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param contentStream The [HttpContentStream](xref:botframework-streaming.HttpContentStream) to be disassembled.\n */\n function HttpContentStreamDisassembler(sender, contentStream) {\n var _this = _super.call(this, sender, contentStream.id) || this;\n _this.payloadType = payloads_1.PayloadTypes.stream;\n _this.contentStream = contentStream;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Strea.\n */\n HttpContentStreamDisassembler.prototype.getStream = function () {\n return __awaiter(this, void 0, void 0, function () {\n var stream;\n return __generator(this, function (_a) {\n stream = this.contentStream.content.getStream();\n return [2 /*return*/, { stream: stream, streamLength: stream.length }];\n });\n });\n };\n return HttpContentStreamDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.HttpContentStreamDisassembler = HttpContentStreamDisassembler;\n\n},{\"../payloads\":16,\"./payloadDisassembler\":5}],5:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadDisassembler = void 0;\nvar subscribableStream_1 = require(\"../subscribableStream\");\n/**\n * Base class streaming payload disassembling.\n */\nvar PayloadDisassembler = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadDisassembler](xref:botframework-streaming.PayloadDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) used to send the disassembled payload chunks.\n * @param id The ID of this disassembler.\n */\n function PayloadDisassembler(sender, id) {\n this.sender = sender;\n this.id = id;\n }\n /**\n * Serializes the item into the [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) that exposes the stream and length of the result.\n *\n * @param item The item to be serialized.\n * @returns The stream containing the serialized item and the length of the stream.\n */\n PayloadDisassembler.serialize = function (item) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(item));\n stream.end();\n return { stream: stream, streamLength: stream.length };\n };\n /**\n * Begins the process of disassembling a payload and sending the resulting chunks to the [PayloadSender](xref:botframework-streaming.PayloadSender) to dispatch over the transport.\n *\n * @returns A completed Promise after the disassembled payload has been sent.\n */\n PayloadDisassembler.prototype.disassemble = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, stream, streamLength;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getStream()];\n case 1:\n _a = _b.sent(), stream = _a.stream, streamLength = _a.streamLength;\n this.stream = stream;\n this.streamLength = streamLength;\n return [2 /*return*/, this.send()];\n }\n });\n });\n };\n /**\n * Begins the process of disassembling a payload and signals the [PayloadSender](xref:botframework-streaming.PayloadSender).\n */\n PayloadDisassembler.prototype.send = function () {\n return __awaiter(this, void 0, void 0, function () {\n var header;\n return __generator(this, function (_a) {\n header = {\n payloadType: this.payloadType,\n payloadLength: this.streamLength,\n id: this.id,\n end: true,\n };\n this.sender.sendPayload(header, this.stream);\n return [2 /*return*/];\n });\n });\n };\n return PayloadDisassembler;\n}());\nexports.PayloadDisassembler = PayloadDisassembler;\n\n},{\"../subscribableStream\":27}],6:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestDisassembler = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming request disassembler.\n */\nvar RequestDisassembler = /** @class */ (function (_super) {\n __extends(RequestDisassembler, _super);\n /**\n * Initializes a new instance of the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param request The request to be disassembled.\n */\n function RequestDisassembler(sender, id, request) {\n var _this = _super.call(this, sender, id) || this;\n _this.request = request;\n _this.payloadType = payloadTypes_1.PayloadTypes.request;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n RequestDisassembler.prototype.getStream = function () {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_e) {\n payload = { verb: (_a = this.request) === null || _a === void 0 ? void 0 : _a.verb, path: (_b = this.request) === null || _b === void 0 ? void 0 : _b.path, streams: [] };\n (_d = (_c = this.request) === null || _c === void 0 ? void 0 : _c.streams) === null || _d === void 0 ? void 0 : _d.forEach(function (stream) {\n payload.streams.push(stream.description);\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return RequestDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.RequestDisassembler = RequestDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],7:[function(require,module,exports){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseDisassembler = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar payloadDisassembler_1 = require(\"./payloadDisassembler\");\n/**\n * Streaming response disassembler.\n */\nvar ResponseDisassembler = /** @class */ (function (_super) {\n __extends(ResponseDisassembler, _super);\n /**\n * Initializes a new instance of the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) class.\n *\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) to send the disassembled data to.\n * @param id The ID of this disassembler.\n * @param response The response to be disassembled.\n */\n function ResponseDisassembler(sender, id, response) {\n var _this = _super.call(this, sender, id) || this;\n _this.payloadType = payloadTypes_1.PayloadTypes.response;\n _this.response = response;\n return _this;\n }\n /**\n * Gets the stream this disassembler is operating on.\n *\n * @returns An [IStreamWrapper](xref:botframework-streaming.IStreamWrapper) with a Subscribable Stream.\n */\n ResponseDisassembler.prototype.getStream = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var payload;\n return __generator(this, function (_b) {\n payload = { statusCode: this.response.statusCode, streams: [] };\n (_a = this.response.streams) === null || _a === void 0 ? void 0 : _a.forEach(function (_a) {\n var description = _a.description;\n payload.streams.push({\n id: description.id,\n contentType: description.type,\n length: description.length,\n });\n });\n return [2 /*return*/, payloadDisassembler_1.PayloadDisassembler.serialize(payload)];\n });\n });\n };\n return ResponseDisassembler;\n}(payloadDisassembler_1.PayloadDisassembler));\nexports.ResponseDisassembler = ResponseDisassembler;\n\n},{\"../payloads/payloadTypes\":19,\"./payloadDisassembler\":5}],8:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpContent = exports.HttpContentStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * An attachment contained within a StreamingRequest's stream collection, which itself contains any form of media item.\n */\nvar HttpContentStream = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContentStream](xref:botframework-streaming.HttpContentStream) class.\n *\n * @param content The [HttpContent](xref:botframework-streaming.HttpContent) to assign to the [HttpContentStream](xref:botframework-streaming.HttpContentStream).\n */\n function HttpContentStream(content) {\n var _a, _b, _c, _d, _e, _f;\n this.content = content;\n this.id = (0, protocol_base_1.generateGuid)();\n this.description = {\n id: this.id,\n type: (_c = (_b = (_a = this.content) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b.type) !== null && _c !== void 0 ? _c : 'unknown',\n length: (_f = (_e = (_d = this.content) === null || _d === void 0 ? void 0 : _d.headers) === null || _e === void 0 ? void 0 : _e.contentLength) !== null && _f !== void 0 ? _f : 0,\n };\n }\n return HttpContentStream;\n}());\nexports.HttpContentStream = HttpContentStream;\n/**\n * The HttpContent class that contains a [SubscribableStream](xref:botframework-streaming.SubscribableStream).\n */\nvar HttpContent = /** @class */ (function () {\n /**\n * Initializes a new instance of the [HttpContent](xref:botframework-streaming.HttpContent) class.\n *\n * @param headers The Streaming Http content header definition.\n * @param stream The stream of buffered data.\n */\n function HttpContent(headers, stream) {\n this.headers = headers;\n this.stream = stream;\n }\n /**\n * Gets the data contained within this [HttpContent](xref:botframework-streaming.HttpContent).\n *\n * @returns This [HttpContent's](xref:botframework-streaming.HttpContent) [SubscribableStream](xref:botframework-streaming.SubscribableStream) member.\n */\n HttpContent.prototype.getStream = function () {\n return this.stream;\n };\n return HttpContent;\n}());\nexports.HttpContent = HttpContent;\n\n},{\"./utilities/protocol-base\":28}],9:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = exports.BrowserWebSocket = exports.SubscribableStream = exports.StreamingResponse = exports.StreamingRequest = exports.RequestHandler = exports.HttpContent = exports.ContentStream = void 0;\nvar contentStream_1 = require(\"./contentStream\");\nObject.defineProperty(exports, \"ContentStream\", { enumerable: true, get: function () { return contentStream_1.ContentStream; } });\nvar httpContentStream_1 = require(\"./httpContentStream\");\nObject.defineProperty(exports, \"HttpContent\", { enumerable: true, get: function () { return httpContentStream_1.HttpContent; } });\nvar requestHandler_1 = require(\"./requestHandler\");\nObject.defineProperty(exports, \"RequestHandler\", { enumerable: true, get: function () { return requestHandler_1.RequestHandler; } });\nvar streamingRequest_1 = require(\"./streamingRequest\");\nObject.defineProperty(exports, \"StreamingRequest\", { enumerable: true, get: function () { return streamingRequest_1.StreamingRequest; } });\nvar streamingResponse_1 = require(\"./streamingResponse\");\nObject.defineProperty(exports, \"StreamingResponse\", { enumerable: true, get: function () { return streamingResponse_1.StreamingResponse; } });\nvar subscribableStream_1 = require(\"./subscribableStream\");\nObject.defineProperty(exports, \"SubscribableStream\", { enumerable: true, get: function () { return subscribableStream_1.SubscribableStream; } });\nvar index_browser_1 = require(\"./webSocket/index-browser\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return index_browser_1.BrowserWebSocket; } });\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return index_browser_1.WebSocketClient; } });\n\n},{\"./contentStream\":2,\"./httpContentStream\":8,\"./requestHandler\":24,\"./streamingRequest\":25,\"./streamingResponse\":26,\"./subscribableStream\":27,\"./webSocket/index-browser\":31}],10:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./payloadReceiver\"), exports);\n__exportStar(require(\"./payloadSender\"), exports);\n__exportStar(require(\"./transportDisconnectedEvent\"), exports);\n__exportStar(require(\"./transportDisconnectedEventHandler\"), exports);\n\n},{\"./payloadReceiver\":11,\"./payloadSender\":12,\"./transportDisconnectedEvent\":13,\"./transportDisconnectedEventHandler\":14}],11:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadReceiver = void 0;\nvar payloadTypes_1 = require(\"../payloads/payloadTypes\");\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Payload receiver for streaming.\n */\nvar PayloadReceiver = /** @class */ (function () {\n function PayloadReceiver() {\n }\n Object.defineProperty(PayloadReceiver.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._receiver != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to a transport receiver\n *\n * @param receiver The [ITransportReceiver](xref:botframework-streaming.ITransportReceiver) object to pull incoming data from.\n * @returns a promise that resolves when the receiver is complete\n */\n PayloadReceiver.prototype.connect = function (receiver) {\n this._receiver = receiver;\n return this.receivePackets();\n };\n /**\n * Allows subscribing to this receiver in order to be notified when new data comes in.\n *\n * @param getStream Callback when a new stream has been received.\n * @param receiveAction Callback when a new message has been received.\n */\n PayloadReceiver.prototype.subscribe = function (getStream, receiveAction) {\n this._getStream = getStream;\n this._receiveAction = receiveAction;\n };\n /**\n * Force this receiver to disconnect.\n *\n * @param event Event arguments to include when broadcasting disconnection event.\n */\n PayloadReceiver.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._receiver.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._receiver = null;\n }\n };\n PayloadReceiver.prototype.receivePackets = function () {\n return __awaiter(this, void 0, void 0, function () {\n var readSoFar, _a, header, isStream, bytesActuallyRead, contentStream, count, _b, err_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!this.isConnected) return [3 /*break*/, 11];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 9, , 10]);\n readSoFar = 0;\n _c.label = 2;\n case 2:\n if (!(readSoFar < payloadConstants_1.PayloadConstants.MaxHeaderLength)) return [3 /*break*/, 4];\n _a = this;\n return [4 /*yield*/, this._receiver.receive(payloadConstants_1.PayloadConstants.MaxHeaderLength - readSoFar)];\n case 3:\n _a._receiveHeaderBuffer = _c.sent();\n if (this._receiveHeaderBuffer) {\n readSoFar += this._receiveHeaderBuffer.length;\n }\n return [3 /*break*/, 2];\n case 4:\n header = headerSerializer_1.HeaderSerializer.deserialize(this._receiveHeaderBuffer);\n isStream = header.payloadType === payloadTypes_1.PayloadTypes.stream;\n if (!(header.payloadLength > 0)) return [3 /*break*/, 8];\n bytesActuallyRead = 0;\n contentStream = this._getStream(header);\n _c.label = 5;\n case 5:\n if (!(bytesActuallyRead < header.payloadLength &&\n bytesActuallyRead < payloadConstants_1.PayloadConstants.MaxPayloadLength)) return [3 /*break*/, 7];\n count = Math.min(header.payloadLength - bytesActuallyRead, payloadConstants_1.PayloadConstants.MaxPayloadLength);\n _b = this;\n return [4 /*yield*/, this._receiver.receive(count)];\n case 6:\n _b._receivePayloadBuffer = _c.sent();\n bytesActuallyRead += this._receivePayloadBuffer.byteLength;\n contentStream.write(this._receivePayloadBuffer);\n // If this is a stream we want to keep handing it up as it comes in\n if (isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n return [3 /*break*/, 5];\n case 7:\n if (!isStream) {\n this._receiveAction(header, contentStream, bytesActuallyRead);\n }\n _c.label = 8;\n case 8: return [3 /*break*/, 10];\n case 9:\n err_1 = _c.sent();\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err_1.message));\n return [3 /*break*/, 10];\n case 10: return [3 /*break*/, 0];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n return PayloadReceiver;\n}());\nexports.PayloadReceiver = PayloadReceiver;\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"../payloads/payloadTypes\":19,\"./transportDisconnectedEvent\":13}],12:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadSender = void 0;\nvar headerSerializer_1 = require(\"../payloads/headerSerializer\");\nvar payloadConstants_1 = require(\"../payloads/payloadConstants\");\nvar transportDisconnectedEvent_1 = require(\"./transportDisconnectedEvent\");\n/**\n * Streaming payload sender.\n */\nvar PayloadSender = /** @class */ (function () {\n function PayloadSender() {\n }\n Object.defineProperty(PayloadSender.prototype, \"isConnected\", {\n /**\n * Get current connected state\n *\n * @returns true if connected to a transport sender.\n */\n get: function () {\n return this._sender != null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connects to the given transport sender.\n *\n * @param sender The transport sender to connect this payload sender to.\n */\n PayloadSender.prototype.connect = function (sender) {\n this._sender = sender;\n };\n /**\n * Sends a payload out over the connected transport sender.\n *\n * @param header The header to attach to the outgoing payload.\n * @param payload The stream of buffered data to send.\n * @param sentCallback The function to execute when the send has completed.\n */\n PayloadSender.prototype.sendPayload = function (header, payload, sentCallback) {\n var packet = { header: header, payload: payload, sentCallback: sentCallback };\n this.writePacket(packet);\n };\n /**\n * Disconnects this payload sender.\n *\n * @param event The disconnected event arguments to include in the disconnected event broadcast.\n */\n PayloadSender.prototype.disconnect = function (event) {\n var _a, _b;\n if (event === void 0) { event = transportDisconnectedEvent_1.TransportDisconnectedEvent.Empty; }\n if (!this.isConnected) {\n return;\n }\n try {\n this._sender.close();\n (_a = this.disconnected) === null || _a === void 0 ? void 0 : _a.call(this, this, event);\n }\n catch (err) {\n (_b = this.disconnected) === null || _b === void 0 ? void 0 : _b.call(this, this, new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n finally {\n this._sender = null;\n }\n };\n PayloadSender.prototype.writePacket = function (packet) {\n try {\n if (packet.header.payloadLength > 0 && packet.payload) {\n var leftOver = packet.header.payloadLength;\n while (leftOver > 0) {\n var count = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength ? leftOver : payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var chunk = packet.payload.read(count);\n var header = packet.header;\n header.payloadLength = count;\n header.end = leftOver <= payloadConstants_1.PayloadConstants.MaxPayloadLength;\n var sendHeaderBuffer = Buffer.alloc(payloadConstants_1.PayloadConstants.MaxHeaderLength);\n headerSerializer_1.HeaderSerializer.serialize(header, sendHeaderBuffer);\n this._sender.send(sendHeaderBuffer);\n this._sender.send(chunk);\n leftOver -= chunk.length;\n }\n if (packet.sentCallback) {\n packet.sentCallback();\n }\n }\n }\n catch (err) {\n this.disconnect(new transportDisconnectedEvent_1.TransportDisconnectedEvent(err.message));\n }\n };\n return PayloadSender;\n}());\nexports.PayloadSender = PayloadSender;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"../payloads/headerSerializer\":15,\"../payloads/payloadConstants\":18,\"./transportDisconnectedEvent\":13,\"buffer\":35}],13:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransportDisconnectedEvent = void 0;\n/**\n * Event to be included when disconnection events are fired.\n */\nvar TransportDisconnectedEvent = /** @class */ (function () {\n /**\n * Indicates a transport disconnected with the reason provided via the constructor.\n *\n * @remarks\n * This class is used for communicating disconnection events between the\n * PayloadReceiver and PayloadSender.\n * @param reason The reason the disconnection event fired, in plain text.\n */\n function TransportDisconnectedEvent(reason) {\n this.reason = reason;\n }\n /**\n * A new and empty TransportDisconnectedEvent.\n */\n TransportDisconnectedEvent.Empty = new TransportDisconnectedEvent();\n return TransportDisconnectedEvent;\n}());\nexports.TransportDisconnectedEvent = TransportDisconnectedEvent;\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n},{}],15:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HeaderSerializer = void 0;\nvar payloadConstants_1 = require(\"./payloadConstants\");\n/**\n * Streaming header serializer\n */\nvar HeaderSerializer = /** @class */ (function () {\n function HeaderSerializer() {\n }\n /**\n * Serializes the header into a buffer\n *\n * @param header The header to serialize.\n * @param buffer The buffer into which to serialize the header.\n */\n HeaderSerializer.serialize = function (header, buffer) {\n buffer.write(header.payloadType, this.TypeOffset, 1, this.Encoding);\n buffer.write(this.Delimiter, this.TypeDelimiterOffset, 1, this.Encoding);\n buffer.write(this.headerLengthPadder(header.payloadLength, this.LengthLength, '0'), this.LengthOffset, this.LengthLength, this.Encoding);\n buffer.write(this.Delimiter, this.LengthDelimeterOffset, 1, this.Encoding);\n buffer.write(header.id, this.IdOffset);\n buffer.write(this.Delimiter, this.IdDelimeterOffset, 1, this.Encoding);\n buffer.write(header.end ? this.End : this.NotEnd, this.EndOffset);\n buffer.write(this.Terminator, this.TerminatorOffset);\n };\n /**\n * Deserializes a buffer containing header information.\n *\n * @param buffer The buffer from which to obtain the data to deserialize.\n * @returns The deserialized header from the buffer.\n */\n HeaderSerializer.deserialize = function (buffer) {\n var jsonBuffer = buffer.toString(this.Encoding);\n var headerArray = jsonBuffer.split(this.Delimiter);\n if (headerArray.length !== 4) {\n throw Error(\"Cannot parse header, header is malformed. Header: \".concat(jsonBuffer));\n }\n var payloadType = headerArray[0], length = headerArray[1], id = headerArray[2], headerEnd = headerArray[3];\n var end = headerEnd === '1\\n';\n var payloadLength = Number(length);\n var header = { end: end, payloadLength: payloadLength, payloadType: payloadType, id: id };\n if (!(header.payloadLength <= payloadConstants_1.PayloadConstants.MaxPayloadLength &&\n header.payloadLength >= payloadConstants_1.PayloadConstants.MinLength)) {\n throw Error(\"Header length of \".concat(header.payloadLength, \" is missing or malformed\"));\n }\n if (header.payloadType.length !== this.TypeDelimiterOffset) {\n throw Error(\"Header type '\".concat(header.payloadType.length, \"' is missing or malformed.\"));\n }\n if (!header.id ||\n !header.id.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i) ||\n header.id.length !== this.IdLength) {\n throw Error(\"Header ID '\".concat(header.id, \"' is missing or malformed.\"));\n }\n if (!(headerEnd === '0\\n' || headerEnd === '1\\n')) {\n throw Error(\"Header End is missing or not a valid value. Header end: '\".concat(headerEnd, \"'\"));\n }\n return header;\n };\n /**\n * Creates a padded string based on a length and character to be padded to.\n *\n * @param lengthValue The value to be assingned on the result.\n * @param totalLength The length of the padded string result.\n * @param padChar The character value to use as filling.\n * @returns The padded string.\n */\n HeaderSerializer.headerLengthPadder = function (lengthValue, totalLength, padChar) {\n var result = Array(totalLength + 1).join(padChar);\n var lengthString = lengthValue.toString();\n return (result + lengthString).slice(lengthString.length);\n };\n HeaderSerializer.Delimiter = '.';\n HeaderSerializer.Terminator = '\\n';\n HeaderSerializer.End = '1';\n HeaderSerializer.NotEnd = '0';\n HeaderSerializer.TypeOffset = 0;\n HeaderSerializer.TypeDelimiterOffset = 1;\n HeaderSerializer.LengthOffset = 2;\n HeaderSerializer.LengthLength = 6;\n HeaderSerializer.LengthDelimeterOffset = 8;\n HeaderSerializer.IdOffset = 9;\n HeaderSerializer.IdLength = 36;\n HeaderSerializer.IdDelimeterOffset = 45;\n HeaderSerializer.EndOffset = 46;\n HeaderSerializer.TerminatorOffset = 47;\n HeaderSerializer.Encoding = 'utf8';\n return HeaderSerializer;\n}());\nexports.HeaderSerializer = HeaderSerializer;\n\n},{\"./payloadConstants\":18}],16:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./headerSerializer\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n__exportStar(require(\"./payloadAssemblerManager\"), exports);\n__exportStar(require(\"./payloadTypes\"), exports);\n__exportStar(require(\"./requestManager\"), exports);\n__exportStar(require(\"./sendOperations\"), exports);\n__exportStar(require(\"./streamManager\"), exports);\n\n},{\"./headerSerializer\":15,\"./payloadAssemblerManager\":17,\"./payloadTypes\":19,\"./requestManager\":20,\"./sendOperations\":21,\"./streamManager\":22}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadAssemblerManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Orchestrates assembly of payloads.\n */\nvar PayloadAssemblerManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [PayloadAssemblerManager](xref:botframework-streaming.PayloadAssemblerManager) class.\n *\n * @param streamManager The [StreamManager](xref:botframework-streaming.StreamManager) managing the stream being assembled.\n * @param onReceiveResponse Function that executes when new bytes are received on a `response` stream.\n * @param onReceiveRequest Function that executes when new bytes are received on a `request` stream.\n */\n function PayloadAssemblerManager(streamManager, onReceiveResponse, onReceiveRequest) {\n this.streamManager = streamManager;\n this.onReceiveResponse = onReceiveResponse;\n this.onReceiveRequest = onReceiveRequest;\n this.activeAssemblers = {};\n }\n /**\n * Retrieves the assembler's payload as a stream.\n *\n * @param header The Header of the Stream to retrieve.\n * @returns A [SubscribableStream](xref:botframework-streaming.SubscribableStream) of the assembler's payload.\n */\n PayloadAssemblerManager.prototype.getPayloadStream = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n return this.streamManager.getPayloadStream(header);\n }\n else if (!this.activeAssemblers[header.id]) {\n var assembler = this.createPayloadAssembler(header);\n if (assembler) {\n this.activeAssemblers[header.id] = assembler;\n return assembler.getPayloadStream();\n }\n }\n };\n /**\n * The action the assembler executes when new bytes are received on the incoming stream.\n *\n * @param header The stream's Header.\n * @param contentStream The incoming stream being assembled.\n * @param contentLength The length of the stream, if finite.\n */\n PayloadAssemblerManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.stream) {\n this.streamManager.onReceive(header, contentStream, contentLength);\n }\n else {\n if (this.activeAssemblers && this.activeAssemblers[header.id]) {\n var assembler = this.activeAssemblers[header.id];\n assembler.onReceive(header, contentStream, contentLength);\n }\n if (header.end) {\n delete this.activeAssemblers[header.id];\n }\n }\n };\n PayloadAssemblerManager.prototype.createPayloadAssembler = function (header) {\n if (header.payloadType === payloadTypes_1.PayloadTypes.request) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveRequest,\n });\n }\n else if (header.payloadType === payloadTypes_1.PayloadTypes.response) {\n return new payloadAssembler_1.PayloadAssembler(this.streamManager, {\n header: header,\n onCompleted: this.onReceiveResponse,\n });\n }\n };\n return PayloadAssemblerManager;\n}());\nexports.PayloadAssemblerManager = PayloadAssemblerManager;\n\n},{\"../assemblers/payloadAssembler\":1,\"./payloadTypes\":19}],18:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadConstants = void 0;\n/**\n * Constants for streaming payloads.\n */\nvar PayloadConstants;\n(function (PayloadConstants) {\n PayloadConstants[PayloadConstants[\"MaxPayloadLength\"] = 4096] = \"MaxPayloadLength\";\n PayloadConstants[PayloadConstants[\"MaxHeaderLength\"] = 48] = \"MaxHeaderLength\";\n PayloadConstants[PayloadConstants[\"MaxLength\"] = 999999] = \"MaxLength\";\n PayloadConstants[PayloadConstants[\"MinLength\"] = 0] = \"MinLength\";\n})(PayloadConstants = exports.PayloadConstants || (exports.PayloadConstants = {}));\n\n},{}],19:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadTypes = void 0;\n/**\n * Typess of payloads supported in the streaming library.\n */\nvar PayloadTypes;\n(function (PayloadTypes) {\n PayloadTypes[\"request\"] = \"A\";\n PayloadTypes[\"response\"] = \"B\";\n PayloadTypes[\"stream\"] = \"S\";\n PayloadTypes[\"cancelAll\"] = \"X\";\n PayloadTypes[\"cancelStream\"] = \"C\";\n})(PayloadTypes = exports.PayloadTypes || (exports.PayloadTypes = {}));\n\n},{}],20:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestManager = void 0;\n/**\n * A streaming pending request.\n */\nvar PendingRequest = /** @class */ (function () {\n function PendingRequest() {\n }\n return PendingRequest;\n}());\n/**\n * Orchestrates and manages pending streaming requests.\n */\nvar RequestManager = /** @class */ (function () {\n function RequestManager() {\n this._pendingRequests = {};\n }\n /**\n * Gets the count of the pending requests.\n *\n * @returns Number with the pending requests count.\n */\n RequestManager.prototype.pendingRequestCount = function () {\n return Object.keys(this._pendingRequests).length;\n };\n /**\n * Signal fired when all response tasks have completed.\n *\n * @param requestId The ID of the StreamingRequest.\n * @param response The [IReceiveResponse](xref:botframework-streaming.IReceiveResponse) in response to the request.\n * @returns A Promise that when completed returns `true` if the `requestId`'s pending response task was completed, otherwise `false`.\n */\n RequestManager.prototype.signalResponse = function (requestId, response) {\n return __awaiter(this, void 0, void 0, function () {\n var pendingRequest;\n return __generator(this, function (_a) {\n pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n pendingRequest.resolve(response);\n delete this._pendingRequests[requestId];\n return [2 /*return*/, true];\n }\n return [2 /*return*/, false];\n });\n });\n };\n /**\n * Constructs and returns a response for this request.\n *\n * @param requestId The ID of the StreamingRequest being responded to.\n * @returns The response to the specified request.\n */\n RequestManager.prototype.getResponse = function (requestId) {\n var pendingRequest = this._pendingRequests[requestId];\n if (pendingRequest) {\n return Promise.reject(\"requestId '\".concat(requestId, \"' already exists in RequestManager\"));\n }\n pendingRequest = new PendingRequest();\n pendingRequest.requestId = requestId;\n var promise = new Promise(function (resolve, reject) {\n pendingRequest.resolve = resolve;\n pendingRequest.reject = reject;\n });\n this._pendingRequests[requestId] = pendingRequest;\n return promise;\n };\n /**\n * Rejects all requests pending a response.\n *\n * @param reason The reason for rejection.\n */\n RequestManager.prototype.rejectAllResponses = function (reason) {\n var _this = this;\n Object.entries(this._pendingRequests).forEach(function (_a) {\n var requestId = _a[0], reject = _a[1].reject;\n reject(reason);\n delete _this._pendingRequests[requestId];\n });\n };\n return RequestManager;\n}());\nexports.RequestManager = RequestManager;\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SendOperations = void 0;\nvar cancelDisassembler_1 = require(\"../disassemblers/cancelDisassembler\");\nvar httpContentStreamDisassembler_1 = require(\"../disassemblers/httpContentStreamDisassembler\");\nvar requestDisassembler_1 = require(\"../disassemblers/requestDisassembler\");\nvar responseDisassembler_1 = require(\"../disassemblers/responseDisassembler\");\nvar payloadTypes_1 = require(\"./payloadTypes\");\n/**\n * Send operations for streaming payloads.\n */\nvar SendOperations = /** @class */ (function () {\n /**\n * Initializes a new instance of the [SendOperations](xref:botframework-streaming.SendOperations) class.\n *\n * @param payloadSender The [PayloadSender](xref:botframework-streaming.PayloadSender) that will send the disassembled data from all of this instance's send operations.\n */\n function SendOperations(payloadSender) {\n this.payloadSender = payloadSender;\n }\n /**\n * The send operation used to send a [StreamingRequest](xref:botframework-streaming.StreamingRequest).\n *\n * @param id The ID to assign to the [RequestDisassembler](xref:botframework-streaming.RequestDisassembler) used by this operation.\n * @param request The request to send.\n */\n SendOperations.prototype.sendRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new requestDisassembler_1.RequestDisassembler(this.payloadSender, id, request);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (request.streams) {\n request.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.response](xref:botframework-streaming.PayloadTypes.response).\n *\n * @param id The ID to assign to the [ResponseDisassembler](xref:botframework-streaming.ResponseDisassembler) used by this operation.\n * @param response The response to send.\n */\n SendOperations.prototype.sendResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n disassembler = new responseDisassembler_1.ResponseDisassembler(this.payloadSender, id, response);\n return [4 /*yield*/, disassembler.disassemble()];\n case 1:\n _a.sent();\n if (response.streams) {\n response.streams.forEach(function (contentStream) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new httpContentStreamDisassembler_1.HttpContentStreamDisassembler(this.payloadSender, contentStream).disassemble()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * The send operation used to send a [PayloadTypes.cancelStream](xref:botframework-streaming.PayloadTypes.cancelStream).\n *\n * @param id The ID to assign to the [CancelDisassembler](xref:botframework-streaming.CancelDisassembler) used by this operation.\n */\n SendOperations.prototype.sendCancelStream = function (id) {\n return __awaiter(this, void 0, void 0, function () {\n var disassembler;\n return __generator(this, function (_a) {\n disassembler = new cancelDisassembler_1.CancelDisassembler(this.payloadSender, id, payloadTypes_1.PayloadTypes.cancelStream);\n disassembler.disassemble();\n return [2 /*return*/];\n });\n });\n };\n return SendOperations;\n}());\nexports.SendOperations = SendOperations;\n\n},{\"../disassemblers/cancelDisassembler\":3,\"../disassemblers/httpContentStreamDisassembler\":4,\"../disassemblers/requestDisassembler\":6,\"../disassemblers/responseDisassembler\":7,\"./payloadTypes\":19}],22:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamManager = void 0;\nvar payloadAssembler_1 = require(\"../assemblers/payloadAssembler\");\n/**\n * Orchestrates and manages streams.\n */\nvar StreamManager = /** @class */ (function () {\n /**\n * Initializes a new instance of the [StreamManager](xref:botframework-streaming.StreamManager) class.\n *\n * @param onCancelStream Function to trigger if the managed stream is cancelled.\n */\n function StreamManager(onCancelStream) {\n this.onCancelStream = onCancelStream;\n this.activeAssemblers = [];\n }\n /**\n * Retrieves a [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID if one exists, otherwise a new instance is created and assigned the given ID.\n *\n * @param id The ID of the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) to retrieve or create.\n * @returns The [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) with the given ID.\n */\n StreamManager.prototype.getPayloadAssembler = function (id) {\n if (!this.activeAssemblers[id]) {\n // A new id has come in, kick off the process of tracking it.\n var assembler = new payloadAssembler_1.PayloadAssembler(this, { id: id });\n this.activeAssemblers[id] = assembler;\n return assembler;\n }\n else {\n return this.activeAssemblers[id];\n }\n };\n /**\n * Retrieves the [SubscribableStream](xref:botframework-streaming.SubscribableStream) from the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) this manager manages.\n *\n * @param header The Header of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to retrieve.\n * @returns The [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given header.\n */\n StreamManager.prototype.getPayloadStream = function (header) {\n var assembler = this.getPayloadAssembler(header.id);\n return assembler.getPayloadStream();\n };\n /**\n * Used to set the behavior of the managed [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) when data is received.\n *\n * @param header The Header of the stream.\n * @param contentStream The [SubscribableStream](xref:botframework-streaming.SubscribableStream) to write incoming data to.\n * @param contentLength The amount of data to write to the contentStream.\n */\n StreamManager.prototype.onReceive = function (header, contentStream, contentLength) {\n if (!this.activeAssemblers[header.id]) {\n return;\n }\n this.activeAssemblers[header.id].onReceive(header, contentStream, contentLength);\n };\n /**\n * Closes the [PayloadAssembler](xref:botframework-streaming.PayloadAssembler) assigned to the [SubscribableStream](xref:botframework-streaming.SubscribableStream) with the given ID.\n *\n * @param id The ID of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) to close.\n */\n StreamManager.prototype.closeStream = function (id) {\n if (!this.activeAssemblers[id]) {\n return;\n }\n else {\n var assembler = this.activeAssemblers[id];\n this.activeAssemblers.splice(this.activeAssemblers.indexOf(id), 1);\n var targetStream = assembler.getPayloadStream();\n if ((assembler.contentLength && targetStream.length < assembler.contentLength) || !assembler.end) {\n this.onCancelStream(assembler);\n }\n }\n };\n return StreamManager;\n}());\nexports.StreamManager = StreamManager;\n\n},{\"../assemblers/payloadAssembler\":1}],23:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolAdapter = void 0;\nvar payloadAssemblerManager_1 = require(\"./payloads/payloadAssemblerManager\");\nvar sendOperations_1 = require(\"./payloads/sendOperations\");\nvar streamManager_1 = require(\"./payloads/streamManager\");\nvar protocol_base_1 = require(\"./utilities/protocol-base\");\n/**\n * Creates a protocol adapter for Streaming.\n */\nvar ProtocolAdapter = /** @class */ (function () {\n /**\n * Creates a new instance of the protocol adapter class.\n *\n * @param requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) that will process incoming requests.\n * @param requestManager The [RequestManager](xref:botframework-streaming.RequestManager) that will process outgoing requests.\n * @param sender The [PayloadSender](xref:botframework-streaming.PayloadSender) for use with outgoing requests.\n * @param receiver The [PayloadReceiver](xref:botframework-streaming.PayloadReceiver) for use with incoming requests.\n */\n function ProtocolAdapter(requestHandler, requestManager, sender, receiver) {\n var _this = this;\n this.requestHandler = requestHandler;\n this.requestManager = requestManager;\n this.payloadSender = sender;\n this.payloadReceiver = receiver;\n this.sendOperations = new sendOperations_1.SendOperations(this.payloadSender);\n this.streamManager = new streamManager_1.StreamManager(this.onCancelStream);\n this.assemblerManager = new payloadAssemblerManager_1.PayloadAssemblerManager(this.streamManager, function (id, response) { return _this.onReceiveResponse(id, response); }, function (id, request) { return _this.onReceiveRequest(id, request); });\n this.payloadReceiver.subscribe(function (header) { return _this.assemblerManager.getPayloadStream(header); }, function (header, contentStream, contentLength) {\n return _this.assemblerManager.onReceive(header, contentStream, contentLength);\n });\n }\n /**\n * Sends a request over the attached request manager.\n *\n * @param request The outgoing request to send.\n * @returns The response to the specified request.\n */\n ProtocolAdapter.prototype.sendRequest = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n var requestId, getResponsePromise;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestId = (0, protocol_base_1.generateGuid)();\n getResponsePromise = this.requestManager.getResponse(requestId);\n return [4 /*yield*/, this.sendOperations.sendRequest(requestId, request)];\n case 1:\n _a.sent();\n return [2 /*return*/, getResponsePromise];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a request comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param request The incoming request to process.\n */\n ProtocolAdapter.prototype.onReceiveRequest = function (id, request) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.requestHandler) return [3 /*break*/, 3];\n return [4 /*yield*/, this.requestHandler.processRequest(request)];\n case 1:\n response = _a.sent();\n if (!response) return [3 /*break*/, 3];\n return [4 /*yield*/, this.sendOperations.sendResponse(id, response)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a response comes in.\n *\n * @param id The id the resources created for the response will be assigned.\n * @param response The incoming response to process.\n */\n ProtocolAdapter.prototype.onReceiveResponse = function (id, response) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.requestManager.signalResponse(id, response)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Executes the receive pipeline when a cancellation comes in.\n *\n * @param contentStreamAssembler The payload assembler processing the incoming data that this cancellation request targets.\n */\n ProtocolAdapter.prototype.onCancelStream = function (contentStreamAssembler) {\n this.sendOperations.sendCancelStream(contentStreamAssembler.id).catch();\n };\n return ProtocolAdapter;\n}());\nexports.ProtocolAdapter = ProtocolAdapter;\n\n},{\"./payloads/payloadAssemblerManager\":17,\"./payloads/sendOperations\":21,\"./payloads/streamManager\":22,\"./utilities/protocol-base\":28}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestHandler = void 0;\n/**\n * Implemented by classes used to process incoming streaming requests sent over an [IStreamingTransport](xref:botframework-streaming.IStreamingTransport).\n */\nvar RequestHandler = /** @class */ (function () {\n function RequestHandler() {\n }\n return RequestHandler;\n}());\nexports.RequestHandler = RequestHandler;\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingRequest = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic request type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP request messages.\n */\nvar StreamingRequest = /** @class */ (function () {\n function StreamingRequest() {\n /**\n * List of associated streams.\n */\n this.streams = [];\n }\n /**\n * Creates a streaming request with the passed in method, path, and body.\n *\n * @param method The HTTP verb to use for this request.\n * @param path Optional path where the resource can be found on the remote server.\n * @param body Optional body to send to the remote server.\n * @returns On success returns a streaming request with appropriate status code and body.\n */\n StreamingRequest.create = function (method, path, body) {\n var request = new StreamingRequest();\n request.verb = method;\n request.path = path;\n if (body) {\n request.setBody(body);\n }\n return request;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingRequest.prototype.addStream = function (content) {\n if (!content) {\n throw new Error('Argument Undefined Exception: content undefined.');\n }\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streamingRequest.\n *\n * @param body The JSON text to write to the body of the streamingRequest.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingRequest.prototype.setBody = function (body) {\n if (typeof body === 'string') {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(body, 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n }\n else if (typeof body === 'object') {\n this.addStream(body);\n }\n };\n return StreamingRequest;\n}());\nexports.StreamingRequest = StreamingRequest;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamingResponse = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar httpContentStream_1 = require(\"./httpContentStream\");\nvar subscribableStream_1 = require(\"./subscribableStream\");\n/**\n * The basic response type sent over Bot Framework Protocol 3 with Streaming Extensions transports, equivalent to HTTP response messages.\n */\nvar StreamingResponse = /** @class */ (function () {\n function StreamingResponse() {\n this.streams = [];\n }\n /**\n * Creates a streaming response with the passed in method, path, and body.\n *\n * @param statusCode The HTTP verb to use for this request.\n * @param body Optional body containing additional information.\n * @returns A streaming response with the appropriate statuscode and passed in body.\n */\n StreamingResponse.create = function (statusCode, body) {\n var response = new StreamingResponse();\n response.statusCode = statusCode;\n if (body) {\n response.addStream(body);\n }\n return response;\n };\n /**\n * Adds a new stream attachment to this streaming request.\n *\n * @param content The Http content to include in the new stream attachment.\n */\n StreamingResponse.prototype.addStream = function (content) {\n this.streams.push(new httpContentStream_1.HttpContentStream(content));\n };\n /**\n * Sets the contents of the body of this streaming response.\n *\n * @param body The JSON text to write to the body of the streaming response.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n StreamingResponse.prototype.setBody = function (body) {\n var stream = new subscribableStream_1.SubscribableStream();\n stream.write(JSON.stringify(body), 'utf8');\n this.addStream(new httpContentStream_1.HttpContent({\n type: 'application/json; charset=utf-8',\n contentLength: stream.length,\n }, stream));\n };\n return StreamingResponse;\n}());\nexports.StreamingResponse = StreamingResponse;\n\n},{\"./httpContentStream\":8,\"./subscribableStream\":27}],27:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubscribableStream = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar stream_1 = require(\"stream\");\n/**\n * An extension of `Duplex` that operates in conjunction with a `PayloadAssembler` to convert raw bytes into a consumable form.\n */\nvar SubscribableStream = /** @class */ (function (_super) {\n __extends(SubscribableStream, _super);\n /**\n * Initializes a new instance of the [SubscribableStream](xref:botframework-streaming.SubscribableStream) class.\n *\n * @param options The `DuplexOptions` to use when constructing this stream.\n */\n function SubscribableStream(options) {\n var _this = _super.call(this, options) || this;\n _this.length = 0;\n _this.bufferList = [];\n return _this;\n }\n /**\n * Writes data to the buffered list.\n * All calls to writable.write() that occur between the time writable._write() is called and the callback is called will cause the written data to be buffered.\n *\n * @param chunk The Buffer to be written.\n * @param _encoding The encoding. Unused in the implementation of Duplex.\n * @param callback Callback for when this chunk of data is flushed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype._write = function (chunk, _encoding, callback) {\n var buffer = Buffer.from(chunk);\n this.bufferList.push(buffer);\n this.length += chunk.length;\n if (this._onData) {\n this._onData(buffer);\n }\n callback();\n };\n /**\n * Reads the buffered list.\n * Once the readable._read() method has been called, it will not be called again until more data is pushed through the readable.push() method.\n * Empty data such as empty buffers and strings will not cause readable._read() to be called.\n *\n * @param size Number of bytes to read.\n */\n SubscribableStream.prototype._read = function (size) {\n if (this.bufferList.length === 0) {\n // null signals end of stream\n this.push(null);\n }\n else {\n var total = 0;\n while (total < size && this.bufferList.length > 0) {\n var buffer = this.bufferList[0];\n this.push(buffer);\n this.bufferList.splice(0, 1);\n total += buffer.length;\n }\n }\n };\n /**\n * Subscribes to the stream when receives data.\n *\n * @param onData Callback to be called when onData is executed.\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n SubscribableStream.prototype.subscribe = function (onData) {\n this._onData = onData;\n };\n return SubscribableStream;\n}(stream_1.Duplex));\nexports.SubscribableStream = SubscribableStream;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35,\"stream\":41}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateGuid = void 0;\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar uuid_1 = require(\"uuid\");\n/**\n * Generates an uuid v4 string.\n *\n * @returns An uuidv4 string.\n */\nfunction generateGuid() {\n return (0, uuid_1.v4)();\n}\nexports.generateGuid = generateGuid;\n\n},{\"uuid\":58}],29:[function(require,module,exports){\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserWebSocket = void 0;\n/**\n * Represents a WebSocket that implements [ISocket](xref:botframework-streaming.ISocket).\n */\nvar BrowserWebSocket = /** @class */ (function () {\n /**\n * Creates a new instance of the [BrowserWebSocket](xref:botframework-streaming.BrowserWebSocket) class.\n *\n * @param socket The socket object to build this connection on.\n */\n function BrowserWebSocket(socket) {\n if (socket) {\n this.webSocket = socket;\n }\n }\n /**\n * Connects to the supporting socket using WebSocket protocol.\n *\n * @param serverAddress The address the server is listening on.\n * @returns A Promise that resolves the websocket is open and rejects if an error is encountered.\n */\n BrowserWebSocket.prototype.connect = function (serverAddress) {\n return __awaiter(this, void 0, void 0, function () {\n var resolver, rejector;\n return __generator(this, function (_a) {\n if (!this.webSocket) {\n this.webSocket = new WebSocket(serverAddress);\n }\n this.webSocket.onerror = function (e) {\n rejector(e);\n };\n this.webSocket.onopen = function (e) {\n resolver(e);\n };\n return [2 /*return*/, new Promise(function (resolve, reject) {\n resolver = resolve;\n rejector = reject;\n })];\n });\n });\n };\n Object.defineProperty(BrowserWebSocket.prototype, \"isConnected\", {\n /**\n * Indicates if the [BrowserWebSocket's](xref:botframework-streaming.BrowserWebSocket) underlying websocket is currently connected.\n *\n * @returns `true` if the underlying websocket is ready and availble to send messages, otherwise `false`.\n */\n get: function () {\n return this.webSocket.readyState === 1;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Writes a buffer to the socket and sends it.\n *\n * @param buffer The buffer of data to send across the connection.\n */\n BrowserWebSocket.prototype.write = function (buffer) {\n this.webSocket.send(buffer);\n };\n /**\n * Close the socket.\n */\n BrowserWebSocket.prototype.close = function () {\n this.webSocket.close();\n };\n /**\n * Set the handler for text and binary messages received on the socket.\n *\n * @param handler The callback to handle the \"message\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnMessageHandler = function (handler) {\n var bufferKey = 'buffer';\n var packets = [];\n this.webSocket.onmessage = function (evt) {\n var fileReader = new FileReader();\n var queueEntry = { buffer: null };\n packets.push(queueEntry);\n fileReader.onload = function (e) {\n var t = e.target;\n queueEntry[bufferKey] = t.result;\n if (packets[0] === queueEntry) {\n while (0 < packets.length && packets[0][bufferKey]) {\n handler(packets[0][bufferKey]);\n packets.splice(0, 1);\n }\n }\n };\n fileReader.readAsArrayBuffer(evt.data);\n };\n };\n /**\n * Set the callback to call when encountering errors.\n *\n * @param handler The callback to handle the \"error\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnErrorHandler = function (handler) {\n this.webSocket.onerror = function (error) {\n if (error) {\n handler(error);\n }\n };\n };\n /**\n * Set the callback to call when encountering socket closures.\n *\n * @param handler The callback to handle the \"close\" event.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BrowserWebSocket.prototype.setOnCloseHandler = function (handler) {\n this.webSocket.onclose = handler;\n };\n return BrowserWebSocket;\n}());\nexports.BrowserWebSocket = BrowserWebSocket;\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketClient = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nvar payloadTransport_1 = require(\"../payloadTransport\");\nvar protocolAdapter_1 = require(\"../protocolAdapter\");\nvar payloads_1 = require(\"../payloads\");\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\n/**\n * Web socket based client to be used as streaming transport.\n */\nvar WebSocketClient = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketClient](xref:botframework-streaming.WebSocketClient) class.\n *\n * @param config For configuring a [WebSocketClient](xref:botframework-streaming.WebSocketClient) instance to communicate with a WebSocket server.\n * @param config.url The URL of the remote server to connect to.\n * @param config.requestHandler The [RequestHandler](xref:botframework-streaming.RequestHandler) used to process incoming messages received by this client.\n * @param config.disconnectionHandler Optional function to handle the disconnection message.\n */\n function WebSocketClient(_a) {\n var url = _a.url, requestHandler = _a.requestHandler, _b = _a.disconnectionHandler, disconnectionHandler = _b === void 0 ? null : _b;\n this._url = url;\n this._requestHandler = requestHandler;\n this._disconnectionHandler = disconnectionHandler;\n this._requestManager = new payloads_1.RequestManager();\n this._sender = new payloadTransport_1.PayloadSender();\n this._sender.disconnected = this.onConnectionDisconnected.bind(this);\n this._receiver = new payloadTransport_1.PayloadReceiver();\n this._receiver.disconnected = this.onConnectionDisconnected.bind(this);\n this._protocolAdapter = new protocolAdapter_1.ProtocolAdapter(this._requestHandler, this._requestManager, this._sender, this._receiver);\n }\n /**\n * Establish a connection with no custom headers.\n *\n * @returns A promise that will not resolve until the client stops listening for incoming messages.\n */\n WebSocketClient.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ws, transport;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ws = new browserWebSocket_1.BrowserWebSocket();\n return [4 /*yield*/, ws.connect(this._url)];\n case 1:\n _a.sent();\n transport = new webSocketTransport_1.WebSocketTransport(ws);\n this._sender.connect(transport);\n this._receiver.connect(transport);\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Stop this client from listening.\n */\n WebSocketClient.prototype.disconnect = function () {\n this._sender.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n this._receiver.disconnect(new payloadTransport_1.TransportDisconnectedEvent('Disconnect was called.'));\n };\n /**\n * Task used to send data over this client connection.\n *\n * @param request The streaming request to send.\n * @returns A promise that will produce an instance of receive response on completion of the send operation.\n */\n WebSocketClient.prototype.send = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._protocolAdapter.sendRequest(request)];\n });\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n WebSocketClient.prototype.onConnectionDisconnected = function (sender, args) {\n // Rejects all pending requests on disconnect.\n this._requestManager.rejectAllResponses(new Error('Disconnect was called.'));\n if (this._disconnectionHandler != null) {\n this._disconnectionHandler('Disconnected');\n return;\n }\n throw new Error(\"Unable to re-connect client to transport for url \".concat(this._url, \". Sender: '\").concat(JSON.stringify(sender), \"'. Args:' \").concat(JSON.stringify(args)));\n };\n return WebSocketClient;\n}());\nexports.WebSocketClient = WebSocketClient;\n\n},{\"../payloadTransport\":10,\"../payloads\":16,\"../protocolAdapter\":23,\"./browserWebSocket\":29,\"./webSocketTransport\":32}],31:[function(require,module,exports){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = exports.WebSocketClient = exports.BrowserWebSocket = void 0;\nvar browserWebSocket_1 = require(\"./browserWebSocket\");\nObject.defineProperty(exports, \"BrowserWebSocket\", { enumerable: true, get: function () { return browserWebSocket_1.BrowserWebSocket; } });\nvar browserWebSocketClient_1 = require(\"./browserWebSocketClient\");\nObject.defineProperty(exports, \"WebSocketClient\", { enumerable: true, get: function () { return browserWebSocketClient_1.WebSocketClient; } });\n/** @internal */\nvar webSocketTransport_1 = require(\"./webSocketTransport\");\nObject.defineProperty(exports, \"WebSocketTransport\", { enumerable: true, get: function () { return webSocketTransport_1.WebSocketTransport; } });\n\n},{\"./browserWebSocket\":29,\"./browserWebSocketClient\":30,\"./webSocketTransport\":32}],32:[function(require,module,exports){\n(function (Buffer){(function (){\n\"use strict\";\n/**\n * @module botframework-streaming\n */\n/**\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebSocketTransport = void 0;\n/**\n * Web socket based transport.\n */\nvar WebSocketTransport = /** @class */ (function () {\n /**\n * Creates a new instance of the [WebSocketTransport](xref:botframework-streaming.WebSocketTransport) class.\n *\n * @param ws The ISocket to build this transport on top of.\n */\n function WebSocketTransport(ws) {\n var _this = this;\n this.ws = ws;\n this._queue = [];\n this._activeOffset = 0;\n this._activeReceiveCount = 0;\n this.ws.setOnMessageHandler(function (data) {\n _this.onReceive(data);\n });\n this.ws.setOnErrorHandler(function (err) {\n _this.onError(err);\n });\n this.ws.setOnCloseHandler(function () {\n _this.onClose();\n });\n }\n /**\n * Sends the given buffer out over the socket's connection.\n *\n * @param buffer The buffered data to send out over the connection.\n * @returns A number indicating the length of the sent data if the data was successfully sent, otherwise 0.\n */\n WebSocketTransport.prototype.send = function (buffer) {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.write(buffer);\n return buffer.length;\n }\n return 0;\n };\n Object.defineProperty(WebSocketTransport.prototype, \"isConnected\", {\n /**\n * Returns true if the transport is connected to a socket.\n *\n * @returns `true` if the the transport is connected and ready to send data, `false` otherwise.\n */\n get: function () {\n var _a;\n return !!((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Close the socket this transport is connected to.\n */\n WebSocketTransport.prototype.close = function () {\n var _a;\n if ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.isConnected) {\n this.ws.close();\n }\n };\n /**\n * Attempt to receive incoming data from the connected socket.\n *\n * @param count The number of bytes to attempt to receive.\n * @returns A buffer populated with the received data.\n */\n WebSocketTransport.prototype.receive = function (count) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n var _this = this;\n return __generator(this, function (_a) {\n if (this._activeReceiveResolve) {\n throw new Error('Cannot call receive more than once before it has returned.');\n }\n this._activeReceiveCount = count;\n promise = new Promise(function (resolve, reject) {\n _this._activeReceiveResolve = resolve;\n _this._activeReceiveReject = reject;\n });\n this.trySignalData();\n return [2 /*return*/, promise];\n });\n });\n };\n /**\n * Sets the transport to attempt to receive incoming data that has not yet arrived.\n *\n * @param data A buffer to store incoming data in.\n */\n WebSocketTransport.prototype.onReceive = function (data) {\n if (this._queue && data && data.byteLength > 0) {\n this._queue.push(Buffer.from(data));\n this.trySignalData();\n }\n };\n WebSocketTransport.prototype.onClose = function () {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(new Error('Socket was closed.'));\n }\n this._active = null;\n this._activeOffset = 0;\n this._activeReceiveResolve = null;\n this._activeReceiveReject = null;\n this._activeReceiveCount = 0;\n this.ws = null;\n };\n WebSocketTransport.prototype.onError = function (err) {\n if (this._activeReceiveReject) {\n this._activeReceiveReject(err);\n }\n this.onClose();\n };\n WebSocketTransport.prototype.trySignalData = function () {\n if (this._activeReceiveResolve) {\n if (!this._active && this._queue.length > 0) {\n this._active = this._queue.shift();\n this._activeOffset = 0;\n }\n if (this._active) {\n if (this._activeOffset === 0 && this._active.length === this._activeReceiveCount) {\n // can send the entire _active buffer\n var buffer = this._active;\n this._active = null;\n this._activeReceiveResolve(buffer);\n }\n else {\n // create a Buffer.from and copy some of the contents into it\n var available = Math.min(this._activeReceiveCount, this._active.length - this._activeOffset);\n var buffer = Buffer.alloc(available);\n this._active.copy(buffer, 0, this._activeOffset, this._activeOffset + available);\n this._activeOffset += available;\n // if we used all of active, set it to undefined\n if (this._activeOffset >= this._active.length) {\n this._active = null;\n this._activeOffset = 0;\n }\n this._activeReceiveResolve(buffer);\n }\n this._activeReceiveCount = 0;\n this._activeReceiveReject = null;\n this._activeReceiveResolve = null;\n }\n }\n };\n return WebSocketTransport;\n}());\nexports.WebSocketTransport = WebSocketTransport;\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"buffer\":35}],33:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n},{}],34:[function(require,module,exports){\n\n},{}],35:[function(require,module,exports){\n(function (Buffer){(function (){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n}).call(this)}).call(this,require(\"buffer\").Buffer)\n\n},{\"base64-js\":33,\"buffer\":35,\"ieee754\":37}],36:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n},{}],37:[function(require,module,exports){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],38:[function(require,module,exports){\nif (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\n},{}],39:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],40:[function(require,module,exports){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n},{\"buffer\":35}],41:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n},{\"events\":36,\"inherits\":38,\"readable-stream/lib/_stream_duplex.js\":43,\"readable-stream/lib/_stream_passthrough.js\":44,\"readable-stream/lib/_stream_readable.js\":45,\"readable-stream/lib/_stream_transform.js\":46,\"readable-stream/lib/_stream_writable.js\":47,\"readable-stream/lib/internal/streams/end-of-stream.js\":51,\"readable-stream/lib/internal/streams/pipeline.js\":53}],42:[function(require,module,exports){\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n},{}],43:[function(require,module,exports){\n(function (process){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n}).call(this)}).call(this,require('_process'))\n\n},{\"./_stream_readable\":45,\"./_stream_writable\":47,\"_process\":39,\"inherits\":38}],44:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n},{\"./_stream_transform\":46,\"inherits\":38}],45:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\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; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\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.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // 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\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\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 // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // 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\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\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.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\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.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\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.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\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.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\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\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\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\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\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', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // 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\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\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 hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\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.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\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\n return -1;\n}\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/async_iterator\":48,\"./internal/streams/buffer_list\":49,\"./internal/streams/destroy\":50,\"./internal/streams/from\":52,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"events\":36,\"inherits\":38,\"string_decoder/\":56,\"util\":34}],46:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// 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'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\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\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\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\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n},{\"../errors\":42,\"./_stream_duplex\":43,\"inherits\":38}],47:[function(require,module,exports){\n(function (process,global){(function (){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\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 if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // 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\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n}).call(this)}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"../errors\":42,\"./_stream_duplex\":43,\"./internal/streams/destroy\":50,\"./internal/streams/state\":54,\"./internal/streams/stream\":55,\"_process\":39,\"buffer\":35,\"inherits\":38,\"util-deprecate\":57}],48:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;\n}).call(this)}).call(this,require('_process'))\n\n},{\"./end-of-stream\":51,\"_process\":39}],49:[function(require,module,exports){\n'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();\n},{\"buffer\":35,\"util\":34}],50:[function(require,module,exports){\n(function (process){(function (){\n'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n}).call(this)}).call(this,require('_process'))\n\n},{\"_process\":39}],51:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;\n},{\"../../../errors\":42}],52:[function(require,module,exports){\nmodule.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n},{}],53:[function(require,module,exports){\n// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;\n},{\"../../../errors\":42,\"./end-of-stream\":51}],54:[function(require,module,exports){\n'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n},{\"../../../errors\":42}],55:[function(require,module,exports){\nmodule.exports = require('events').EventEmitter;\n\n},{\"events\":36}],56:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + 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':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\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.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n},{\"safe-buffer\":40}],57:[function(require,module,exports){\n(function (global){(function (){\n\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],58:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n},{\"./nil.js\":60,\"./parse.js\":61,\"./stringify.js\":65,\"./v1.js\":66,\"./v3.js\":67,\"./v4.js\":69,\"./v5.js\":70,\"./validate.js\":71,\"./version.js\":72}],59:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;\n},{}],60:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;\n},{}],61:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;\n},{\"./validate.js\":71}],62:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;\n},{}],63:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n},{}],64:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;\n},{}],65:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;\n},{\"./validate.js\":71}],66:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],67:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;\n},{\"./md5.js\":59,\"./v35.js\":68}],68:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n},{\"./parse.js\":61,\"./stringify.js\":65}],69:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;\n},{\"./rng.js\":63,\"./stringify.js\":65}],70:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;\n},{\"./sha1.js\":64,\"./v35.js\":68}],71:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;\n},{\"./regex.js\":62}],72:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;\n},{\"./validate.js\":71}]},{},[9])(9)\n});\n//# sourceMappingURL=index-browser.js.map\n","module.exports = require(\"core-js-pure/stable/array/is-array\");","module.exports = require(\"core-js-pure/stable/date/now\");","module.exports = require(\"core-js-pure/stable/instance/concat\");","module.exports = require(\"core-js-pure/stable/instance/filter\");","module.exports = require(\"core-js-pure/stable/instance/for-each\");","module.exports = require(\"core-js-pure/stable/instance/index-of\");","module.exports = require(\"core-js-pure/stable/instance/splice\");","module.exports = require(\"core-js-pure/stable/math/sign\");","module.exports = require(\"core-js-pure/stable/object/define-properties\");","module.exports = require(\"core-js-pure/stable/object/define-property\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptors\");","module.exports = require(\"core-js-pure/stable/object/get-own-property-symbols\");","module.exports = require(\"core-js-pure/stable/object/keys\");","module.exports = require(\"core-js-pure/stable/set-interval\");","module.exports = require(\"core-js-pure/stable/set-timeout\");","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nmodule.exports = _toArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _Symbol$iterator from \"core-js-pure/features/symbol/iterator.js\";\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nimport _Symbol$toPrimitive from \"core-js-pure/features/symbol/to-primitive.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[_Symbol$toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? _Object$defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","import _Array$isArray from \"core-js-pure/features/array/is-array.js\";\nfunction _arrayWithHoles(r) {\n if (_Array$isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _getIteratorMethod from \"core-js-pure/features/get-iterator-method.js\";\nimport _pushInstanceProperty from \"core-js-pure/features/instance/push.js\";\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof _Symbol && _getIteratorMethod(r) || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (_pushInstanceProperty(a).call(a, e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import _Array$isArray from \"core-js-pure/features/array/is-array.js\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (_Array$isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _getIteratorMethod from \"core-js-pure/features/get-iterator-method.js\";\nimport _Array$from from \"core-js-pure/features/array/from.js\";\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof _Symbol && null != _getIteratorMethod(r) || null != r[\"@@iterator\"]) return _Array$from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _sliceInstanceProperty from \"core-js-pure/features/instance/slice.js\";\nimport _Array$from from \"core-js-pure/features/array/from.js\";\nimport arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n var _context;\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = _sliceInstanceProperty(_context = {}.toString.call(r)).call(_context, 8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? _Array$from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nexport { _createSuper as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","receiver","descriptor","get","call","set","writable","TypeError","instance","Constructor","privateMap","action","has","classApplyDescriptorGet","classExtractFieldDescriptor","classApplyDescriptorSet","_defineProperties","target","props","enumerable","configurable","Object","defineProperty","protoProps","staticProps","prototype","obj","superPropBase","_get","property","Reflect","base","desc","getOwnPropertyDescriptor","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","iter","Symbol","iterator","from","objectWithoutPropertiesLoose","source","excluded","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","_typeof","assertThisInitialized","_setPrototypeOf","p","object","hasOwnProperty","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","nonIterableSpread","minLen","n","toString","slice","name","test","input","hint","prim","toPrimitive","res","String","Number","_toPrimitive","_createClass","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_TYPE","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","AssertionError","inspect","_require$types","isPromise","isRegExp","objectAssign","objectIs","RegExpPrototypeTest","Map","lazyLoadComparison","comparison","warned","assert","ok","NO_EXCEPTION_SENTINEL","innerFail","message","Error","innerOk","argLen","generatedMessage","actual","expected","operator","stackStartFn","_len","_key","concat","fail","internalMessage","argsLen","process","emitWarning","console","warn","bind","errArgs","equal","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_this","_classCallCheck","forEach","expectedException","msg","push","a","b","compareExceptionKey","isPrototypeOf","getActual","e","checkIsPromise","catch","waitForActual","promiseFn","resultPromise","expectsError","details","fnType","expectsNoError","internalMatch","string","regexp","fnName","match","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","result","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","stack","tmp2","split","shift","tmp1","pos","join","doesNotMatch","ownKeys","r","t","filter","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_possibleConstructorReturn","_assertThisInitialized","_wrapNativeSuper","Class","_cache","Function","Wrapper","_construct","Parent","_isNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","endsWith","str","search","this_len","substring","blue","green","red","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","val","compact","customInspect","depth","maxArrayLength","Infinity","showHidden","breakLength","showProxy","sorted","getters","createErrDiff","other","lastPos","end","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","stderr","isTTY","columns","count","Math","floor","maxCount","log","repeat","pop","maxLines","max","_actualLines","printedLines","skippedMsg","cur","expectedLine","actualLine","divergingLines","_Error","_inspect$custom","_inherits","Derived","hasNativeReflectConstruct","_super","Super","NewTarget","options","limit","stackTraceLimit","getColorDepth","_res","knownOperators","code","captureStackTrace","recurseTimes","ctx","custom","_createSuper","util","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","thing","map","determiner","substr","replace","type","start","includes","reason","inspected","RangeError","_slicedToArray","_arrayWithHoles","l","u","f","next","return","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","regexFlagsSupported","flags","arrayFromSet","array","arrayFromMap","is","objectGetOwnPropertySymbols","numberIsNaN","isNaN","uncurryThis","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","charCodeAt","pow","getOwnNonIndexProperties","compare","x","y","min","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","Date","getTime","RegExp","byteLength","Uint8Array","buffer","byteOffset","areSimilarTypedArrays","offset","areSimilarFloatArrays","_keys","_keys2","size","BigInt","isEqualBoxedPrimitive","getEnumerables","k","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","position","val2MemoA","val2MemoB","areEq","memo","aValues","Set","add","setMightHaveLoosePrim","bValues","_i","_val","setHasEqualElement","setEquiv","aEntries","_aEntries$i","item1","item2","mapMightHaveLoosePrim","bEntries","_i2","_bEntries$_i","item","mapHasEqualEntry","mapEquiv","keysA","objEquiv","delete","setValues","findLooseMatchingPrimitives","altValue","curB","key1","key2","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","num","output","_default","deferred","promise","_interopRequireDefault","nextArray","_parseFilename","_parseFilename2","extname","nextValue","segment","_directLineStreaming","DirectLineStreaming","DirectLine","ConnectionStatus","_objectWithoutProperties2","_classCallCheck2","_createClass2","_defineProperty2","_BehaviorSubject","_Observable","_async","_jwtDecode","nodeInterop","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","_interopRequireWildcard","_dedupeFilenames","_excluded","WeakMap","cacheBabelInterop","cacheNodeInterop","enumerableOnly","symbols","sym","wrapAjaxWithRetry","scheduler","notImplemented","assign","urlOrRequest","status","retryAfterValue","xhr","getResponseHeader","retryAfter","Observable","timer","flatMap","_","url","headers","post","body","put","patch","getJSON","intervalRefreshToken","lifetimeRefreshToken","errorExpiredToken","errorConversationEnded","errorFailedToConnect","konsole","_console","optionalParams","window","services","BehaviorSubject","Uninitialized","secret","token","webSocket","WebSocket","conversationStartProperties","locale","localeOnStartConversation","domain","conversationId","watermark","streamUrl","timeout","retries","_botAgent","getBotAgent","botAgent","async","ajax","random","parsedPollingInterval","pollingInterval","expiredTokenExhaustion","setConnectionStatusFallback","ExpiredToken","FailedToConnect","activity$","webSocketActivity$","pollingGetActivity$","share","once","obs","connectionStatus$","connectionStatus","Connecting","Online","of","startConversation","conversation","referenceGrammarId","refreshTokenLoop","Ended","take","connectionStatusFrom","connectionStatusTo","maxAttempts","attempts","currStatus","getValue","protectedConnectionStatus","_this2","method","user","id","userIdOnStartConversation","commonHeaders","ajaxResponse","response","retryWhen","error$","mergeMap","delay","_this3","tokenRefreshSubscription","interval","refreshToken","subscribe","_this4","checkConnection","expiredToken","unsubscribe","_this5","withCredentials","sessionId","catchExpiredToken","activity","_this6","attachments","postMessageWithAttachments","catchPostError","formData","_this7","attachmentNames","media","cleansedAttachments","attachment","index","FormData","append","Blob","JSON","stringify","_ref","contentUrl","responseType","contentType","_this8","poller$","subscriber","trigger$","startTimestamp","now","Accept","setTimeout","empty","activityGroup","observableFromActivityGroup","activities","_this9","observableWebSocket","getRetryDelay","reconnectToConversation","_this10","sub","closed","ws","onopen","open","send","onclose","close","onerror","onmessage","data","parse","readyState","_this11","customAgent","clientAgent","userId","parseToken","InvalidTokenError","_regenerator","_classPrivateFieldGet2","_classPrivateFieldSet2","_toConsumableArray2","_asyncToGenerator2","_buffer","BFSE","_createDeferred","_crossFetch","_directLine","_WebSocketClientWithNetworkInformation","StreamHandler","s","c$","sq","shouldQueue","_processRequest","mark","_callee","request","logger","streams","stream0","activitySetJson","activitySet","stream","dataUri","wrap","_context","prev","readAsString","sent","abrupt","StreamingResponse","activityQueue","stop","_x","_x2","complete","_networkInformation","networkInformation","addEventListener","removeEventListener","queueActivities","_callee2","_context2","activitySubscriber","theStreamHandler","connectDeferred","_x3","connectWithRetryAsync","_connectWithRetryAsync","_connectAsync","_waitUntilOnline","_refreshToken","_ref2","streamConnection","disconnect","Authorization","_callee3","numberOfAttempts","_yield$res$json","_context3","waitUntilOnline","refreshTokenLifetime","json","statusText","t0","resp$","_ref3","_callee4","resp","numberOfStreams","idString","_JSON$parse","_context4","StreamingRequest","setBody","statusCode","Id","_x4","messageWithoutAttachments","httpContentList","_callee6","activityStream","_yield$resp$streams$","_context6","all","_ref5","_callee5","_context5","arrayBuffer","t1","_x5","_ref6","Buffer","SubscribableStream","write","httpContent","HttpContent","contentLength","addStream","readAsJson","_callee7","_context7","cs","_callee9","re","params","abortController","urlSearchParams","wsUrl","_context9","AbortController","URLSearchParams","_ref7","_callee8","responseString","_context8","disconnectionHandler","requestHandler","processRequest","streamingRequest","signal","aborted","connect","flush","_x6","_x7","abort","_callee10","numRetries","_context10","connectAsync","filename","_filename$split$rever","reverse","_filename$split$rever2","_toArray2","_assertThisInitialized2","_get2","_inherits2","_possibleConstructorReturn2","_getPrototypeOf2","_classPrivateFieldGet4","_botframeworkStreaming","_connectCalled","_handleNetworkInformationChange","_initialNetworkInformationType","WebSocketClientWithNetworkInformation","_WebSocketClient","initialType","_classPrivateFieldGet3","WebSocketClient","require","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","step","rejected","__generator","g","label","trys","ops","verb","v","op","PayloadAssembler","subscribableStream_1","payloads_1","contentStream_1","streamManager","_byteOrderMark","_utf","header","payloadType","payloadLength","_onCompleted","onCompleted","getPayloadStream","createPayloadStream","onReceive","_contentLength","PayloadTypes","closeStream","payloadFromJson","stripBOM","streamData","streamDataAsString","_a","read","processResponse","responsePayload","receiveResponse","processStreams","requestPayload","receiveRequest","path","_b","responseStream","contentAssembler","getPayloadAssembler","ContentStream","assembler","getStream","cancel","readAll","bufferArray","stringToParse","allData","chunk","readToEnd","callback","CancelDisassembler","sender","disassemble","sendPayload","extendStatics","__extends","d","__","HttpContentStreamDisassembler","payloadDisassembler_1","contentStream","content","streamLength","PayloadDisassembler","serialize","RequestDisassembler","payloadTypes_1","_c","_d","payload","_e","description","ResponseDisassembler","HttpContentStream","protocol_base_1","_f","generateGuid","BrowserWebSocket","RequestHandler","httpContentStream_1","requestHandler_1","streamingRequest_1","streamingResponse_1","index_browser_1","__createBinding","m","k2","__exportStar","PayloadReceiver","headerSerializer_1","payloadConstants_1","transportDisconnectedEvent_1","_receiver","receivePackets","receiveAction","_getStream","_receiveAction","event","TransportDisconnectedEvent","Empty","isConnected","disconnected","readSoFar","isStream","bytesActuallyRead","err_1","PayloadConstants","MaxHeaderLength","receive","_receiveHeaderBuffer","HeaderSerializer","deserialize","MaxPayloadLength","_receivePayloadBuffer","PayloadSender","_sender","sentCallback","packet","writePacket","leftOver","sendHeaderBuffer","alloc","TypeOffset","Encoding","Delimiter","TypeDelimiterOffset","headerLengthPadder","LengthLength","LengthOffset","LengthDelimeterOffset","IdOffset","IdDelimeterOffset","End","NotEnd","EndOffset","Terminator","TerminatorOffset","jsonBuffer","headerArray","headerEnd","MinLength","IdLength","lengthValue","totalLength","padChar","lengthString","PayloadAssemblerManager","payloadAssembler_1","onReceiveResponse","onReceiveRequest","activeAssemblers","createPayloadAssembler","RequestManager","PendingRequest","_pendingRequests","pendingRequestCount","signalResponse","requestId","pendingRequest","getResponse","rejectAllResponses","entries","SendOperations","cancelDisassembler_1","httpContentStreamDisassembler_1","requestDisassembler_1","responseDisassembler_1","payloadSender","sendRequest","sendResponse","sendCancelStream","cancelStream","StreamManager","onCancelStream","splice","targetStream","ProtocolAdapter","payloadAssemblerManager_1","sendOperations_1","streamManager_1","requestManager","payloadReceiver","sendOperations","assemblerManager","getResponsePromise","contentStreamAssembler","bufferList","_write","_encoding","_onData","_read","total","onData","Duplex","uuid_1","v4","socket","serverAddress","resolver","rejector","setOnMessageHandler","handler","bufferKey","packets","evt","fileReader","FileReader","queueEntry","onload","readAsArrayBuffer","setOnErrorHandler","setOnCloseHandler","browserWebSocket_1","payloadTransport_1","protocolAdapter_1","webSocketTransport_1","_url","_requestHandler","_disconnectionHandler","_requestManager","onConnectionDisconnected","_protocolAdapter","transport","WebSocketTransport","browserWebSocketClient_1","_queue","_activeOffset","_activeReceiveCount","onError","onClose","_activeReceiveResolve","_activeReceiveReject","trySignalData","_active","available","copy","tripletToBase64","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","typedArraySupport","foo","createBuffer","buf","encodingOrOffset","allocUnsafe","fromString","ArrayBuffer","isView","fromArrayLike","isInstance","fromArrayBuffer","fromObject","assertSize","fill","encoding","checked","isEncoding","isBuffer","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","j","hexWrite","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","species","poolSize","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","toLocaleString","equals","trim","thisStart","thisEnd","thisCopy","targetCopy","isFinite","toJSON","_arr","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","out","toHex","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","c","hi","lo","src","dst","ReflectOwnKeys","R","ReflectApply","ProcessEmitWarning","warning","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","that","_addListener","prepend","events","existing","newListener","emit","unshift","w","emitter","onceWrapper","fired","removeListener","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","eventListener","errorListener","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","on","prependListener","prependOnceListener","originalListener","off","removeAllListeners","rawListeners","eventNames","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","LN2","ctor","superCtor","super_","TempCtor","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","Item","noop","nextTick","title","browser","env","argv","version","versions","binding","cwd","chdir","umask","copyProps","SafeBuffer","Stream","EE","inherits","Readable","Writable","Transform","PassThrough","finished","pipeline","pipe","dest","ondata","pause","ondrain","readable","resume","_isStdio","onend","didOnEnd","destroy","cleanup","_inheritsLoose","startsWith","objectKeys","allowHalfOpen","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","_transform","cb","global","ReadableState","EElistenerCount","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","decoder","_destroy","readableAddChunk","addToFront","skipChunkCheck","onEofChunk","chunkInvalid","addChunk","maybeReadMore","emitReadable","_undestroy","undestroy","isPaused","setEncoding","enc","head","clear","MAX_HWM","computeNewHighWaterMark","howMuchToRead","emitReadable_","flow","maybeReadMore_","pipeOnDrain","updateReadableListening","nReadingNextTick","resume_","fromList","first","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","onfinish","needDrain","dests","ev","asyncIterator","_fromList","iterable","opts","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","_flush","prefinish","err2","CorkedRequest","entry","finish","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","writev","_writev","final","_final","writeAfterEnd","validChunk","decodeChunk","writeOrBuffer","isBuf","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","clearBuffer","afterWrite","onwriteDrain","holder","allBuffers","callFinal","need","rState","endWritable","corkReq","current","hasInstance","cork","uncork","setDefaultEncoding","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","_Object$create","copyBuffer","tail","hasStrings","_getString","_getBuffer","nb","readableDestroyed","writableDestroyed","emitErrorNT","emitCloseNT","emitErrorAndCloseNT","ERR_STREAM_PREMATURE_CLOSE","called","isRequest","setHeader","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","destroyer","to","popCallback","destroys","reduce","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","_normalizeEncoding","retried","normalizeEncoding","nenc","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","utf8Text","utf8End","config","deprecated","trace","localStorage","_v","default","_v2","_v3","_v4","_nil","_version","_validate","_stringify","_parse","md5","unescape","encodeURIComponent","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","hex","charAt","getOutputLength","inputLength8","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","Uint32Array","lsw","bitRotateLeft","cnt","md5cmn","q","uuid","getRandomValues","rng","rnds8","crypto","msCrypto","z","ROTL","sha1","K","H","N","ceil","M","W","T","byteToHex","_rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","node","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_md","URL","DNS","stringToBytes","hashfunc","generateUUID","namespace","rnds","_sha","_regex","validate","toPropertyKey","_extends","possibleNames","globalThis","_toConsumableArray","_createForOfIteratorHelper","_n","F","possibleConstructorReturn","_iterableToArray","_objectSpread2","_objectWithoutProperties","_objectWithoutPropertiesLoose","_taggedTemplateLiteral","freeze","raw","_toArray"],"sourceRoot":""}