@twilio/conversations 3.0.0-rc.8 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -29
- package/builds/browser.esm.js +10838 -0
- package/builds/browser.esm.js.map +1 -0
- package/builds/browser.js +2494 -476
- package/builds/browser.js.map +1 -1
- package/builds/lib.d.ts +805 -70
- package/builds/lib.esm.d.ts +3178 -0
- package/builds/lib.esm.js +10837 -0
- package/builds/lib.js +2494 -476
- package/builds/lib.js.map +1 -1
- package/builds/twilio-conversations.js +29167 -26611
- package/builds/twilio-conversations.js.map +1 -0
- package/builds/twilio-conversations.min.js +2 -1
- package/builds/twilio-conversations.min.js.map +1 -0
- package/dist/aggregated-delivery-receipt.js +10 -5
- package/dist/aggregated-delivery-receipt.js.map +1 -1
- package/dist/channel-metadata-client.js +187 -0
- package/dist/channel-metadata-client.js.map +1 -0
- package/dist/client.js +266 -192
- package/dist/client.js.map +1 -1
- package/dist/command-executor.js +51 -14
- package/dist/command-executor.js.map +1 -1
- package/dist/configuration.js +23 -12
- package/dist/configuration.js.map +1 -1
- package/dist/content-client.js +180 -0
- package/dist/content-client.js.map +1 -0
- package/dist/content-template.js +304 -0
- package/dist/content-template.js.map +1 -0
- package/dist/conversation.js +213 -134
- package/dist/conversation.js.map +1 -1
- package/dist/data/conversations.js +70 -50
- package/dist/data/conversations.js.map +1 -1
- package/dist/data/messages.js +40 -27
- package/dist/data/messages.js.map +1 -1
- package/dist/data/participants.js +38 -32
- package/dist/data/participants.js.map +1 -1
- package/dist/data/users.js +19 -14
- package/dist/data/users.js.map +1 -1
- package/dist/detailed-delivery-receipt.js +9 -4
- package/dist/detailed-delivery-receipt.js.map +1 -1
- package/dist/index.js +26 -41
- package/dist/index.js.map +1 -1
- package/dist/interfaces/notification-types.js +9 -4
- package/dist/interfaces/notification-types.js.map +1 -1
- package/dist/interfaces/{attributes.js → rules.js} +26 -13
- package/dist/interfaces/rules.js.map +1 -0
- package/dist/logger.js +17 -28
- package/dist/logger.js.map +1 -1
- package/dist/media.js +40 -24
- package/dist/media.js.map +1 -1
- package/dist/message-builder.js +79 -12
- package/dist/message-builder.js.map +1 -1
- package/dist/message-recipients-client.js +231 -0
- package/dist/message-recipients-client.js.map +1 -0
- package/dist/message.js +258 -92
- package/dist/message.js.map +1 -1
- package/dist/node_modules/quick-lru/index.js +261 -0
- package/dist/node_modules/quick-lru/index.js.map +1 -0
- package/dist/node_modules/tslib/tslib.es6.js +15 -5
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -1
- package/dist/packages/conversations/package.json.js +12 -7
- package/dist/packages/conversations/package.json.js.map +1 -1
- package/dist/participant.js +42 -38
- package/dist/participant.js.map +1 -1
- package/dist/push-notification.js +9 -4
- package/dist/push-notification.js.map +1 -1
- package/dist/rest-paginator.js +9 -4
- package/dist/rest-paginator.js.map +1 -1
- package/dist/services/network.js +11 -6
- package/dist/services/network.js.map +1 -1
- package/dist/services/typing-indicator.js +17 -11
- package/dist/services/typing-indicator.js.map +1 -1
- package/dist/unsent-message.js +14 -9
- package/dist/unsent-message.js.map +1 -1
- package/dist/user.js +40 -32
- package/dist/user.js.map +1 -1
- package/dist/util/deferred.js +9 -4
- package/dist/util/deferred.js.map +1 -1
- package/dist/util/index.js +44 -8
- package/dist/util/index.js.map +1 -1
- package/docs/assets/js/search.js +1 -1
- package/docs/classes/AggregatedDeliveryReceipt.html +1 -1
- package/docs/classes/ChannelMetadata.html +3050 -0
- package/docs/classes/Client.html +98 -27
- package/docs/classes/ContentTemplate.html +3116 -0
- package/docs/classes/ContentTemplateVariable.html +3116 -0
- package/docs/classes/Conversation.html +46 -9
- package/docs/classes/EmailRecipientDescriptor.html +3098 -0
- package/docs/classes/Message.html +99 -5
- package/docs/classes/MessageBuilder.html +41 -0
- package/docs/classes/Participant.html +2 -2
- package/docs/classes/UnknownRecipientDescriptor.html +3067 -0
- package/docs/index.html +892 -28
- package/docs/interfaces/ClientOptions.html +32 -0
- package/docs/interfaces/CreateConversationOptions.html +17 -0
- package/docs/modules.html +891 -27
- package/package.json +21 -19
- package/CHANGELOG.md +0 -501
- package/dist/interfaces/attributes.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twilio-conversations.min.js","sources":["../../../node_modules/core-js/internals/global.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/core-js/internals/native-symbol.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/core-js/internals/set-global.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/to-object.js","../../../node_modules/core-js/internals/has.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/core-js/internals/native-weak-map.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/core-js/internals/redefine.js","../../../node_modules/core-js/internals/to-integer.js","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/core-js/internals/set-to-string-tag.js","../../../node_modules/core-js/modules/es.reflect.to-string-tag.js","../../../node_modules/core-js/internals/object-create.js","../../../node_modules/core-js/internals/a-function.js","../../../node_modules/core-js/internals/object-keys.js","../../../node_modules/core-js/internals/object-define-properties.js","../../../node_modules/core-js/internals/html.js","../../../node_modules/core-js/internals/function-bind.js","../../../node_modules/core-js/modules/es.reflect.construct.js","../../../node_modules/core-js/modules/es.object.keys.js","../../../node_modules/core-js/internals/is-array.js","../../../node_modules/core-js/internals/to-string.js","../../../node_modules/core-js/internals/object-get-own-property-names-external.js","../../../node_modules/core-js/internals/well-known-symbol-wrapped.js","../../../node_modules/core-js/internals/path.js","../../../node_modules/core-js/internals/define-well-known-symbol.js","../../../node_modules/core-js/internals/function-bind-context.js","../../../node_modules/core-js/internals/array-species-constructor.js","../../../node_modules/core-js/internals/array-species-create.js","../../../node_modules/core-js/internals/array-iteration.js","../../../node_modules/core-js/modules/es.symbol.js","../../../node_modules/core-js/internals/array-method-has-species-support.js","../../../node_modules/core-js/modules/es.array.filter.js","../../../node_modules/core-js/modules/es.object.get-own-property-descriptor.js","../../../node_modules/core-js/internals/create-property.js","../../../node_modules/core-js/modules/es.object.get-own-property-descriptors.js","../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/core-js/modules/es.array.map.js","../../../node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/core-js/internals/classof.js","../../../node_modules/core-js/internals/object-to-string.js","../../../node_modules/core-js/modules/es.object.to-string.js","../../../node_modules/core-js/internals/dom-iterables.js","../../../node_modules/core-js/internals/dom-token-list-prototype.js","../../../node_modules/core-js/internals/array-method-is-strict.js","../../../node_modules/core-js/internals/array-for-each.js","../../../node_modules/core-js/modules/web.dom-collections.for-each.js","../../../node_modules/core-js/internals/native-promise-constructor.js","../../../node_modules/core-js/internals/redefine-all.js","../../../node_modules/core-js/internals/a-possible-prototype.js","../../../node_modules/core-js/internals/object-set-prototype-of.js","../../../node_modules/core-js/internals/set-species.js","../../../node_modules/core-js/internals/an-instance.js","../../../node_modules/core-js/internals/iterators.js","../../../node_modules/core-js/internals/is-array-iterator-method.js","../../../node_modules/core-js/internals/get-iterator-method.js","../../../node_modules/core-js/internals/get-iterator.js","../../../node_modules/core-js/internals/iterator-close.js","../../../node_modules/core-js/internals/iterate.js","../../../node_modules/core-js/internals/check-correctness-of-iteration.js","../../../node_modules/core-js/internals/task.js","../../../node_modules/core-js/internals/species-constructor.js","../../../node_modules/core-js/internals/engine-is-ios.js","../../../node_modules/core-js/internals/engine-is-node.js","../../../node_modules/core-js/internals/microtask.js","../../../node_modules/core-js/internals/engine-is-ios-pebble.js","../../../node_modules/core-js/internals/engine-is-webos-webkit.js","../../../node_modules/core-js/internals/new-promise-capability.js","../../../node_modules/core-js/internals/promise-resolve.js","../../../node_modules/core-js/modules/es.promise.js","../../../node_modules/core-js/internals/host-report-errors.js","../../../node_modules/core-js/internals/engine-is-browser.js","../../../node_modules/core-js/internals/perform.js","../../../node_modules/@babel/runtime/regenerator/index.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/core-js/modules/es.array.concat.js","../../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../../../node_modules/core-js/internals/array-from.js","../../../node_modules/core-js/modules/es.array.from.js","../../../node_modules/core-js/internals/string-multibyte.js","../../../node_modules/core-js/internals/iterators-core.js","../../../node_modules/core-js/internals/correct-prototype-getter.js","../../../node_modules/core-js/internals/object-get-prototype-of.js","../../../node_modules/core-js/internals/create-iterator-constructor.js","../../../node_modules/core-js/internals/define-iterator.js","../../../node_modules/core-js/modules/es.string.iterator.js","../../../node_modules/loglevel/lib/loglevel.js","../src/logger.ts","../../../node_modules/iso8601-duration/lib/index.js","../src/configuration.ts","../../../node_modules/core-js/internals/add-to-unscopables.js","../../../node_modules/core-js/modules/es.array.iterator.js","../../../node_modules/core-js/modules/web.dom-collections.iterator.js","../../../node_modules/core-js/modules/es.json.stringify.js","../../../node_modules/core-js/internals/inherit-if-required.js","../../../node_modules/core-js/internals/string-trim.js","../../../node_modules/core-js/modules/es.number.constructor.js","../../../node_modules/core-js/internals/regexp-flags.js","../../../node_modules/core-js/internals/regexp-sticky-helpers.js","../../../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../../../node_modules/core-js/internals/regexp-exec.js","../../../node_modules/core-js/internals/regexp-unsupported-ncg.js","../../../node_modules/core-js/modules/es.regexp.exec.js","../../../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../../../node_modules/core-js/internals/advance-string-index.js","../../../node_modules/core-js/internals/get-substitution.js","../../../node_modules/core-js/internals/regexp-exec-abstract.js","../../../node_modules/core-js/modules/es.string.replace.js","../../../node_modules/core-js/modules/es.array.join.js","../src/util/index.ts","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/core-js/modules/es.function.name.js","../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../../node_modules/core-js/modules/es.array.slice.js","../../../node_modules/core-js/modules/es.regexp.test.js","../../../node_modules/core-js/modules/es.symbol.description.js","../../../node_modules/core-js/modules/es.symbol.iterator.js","../../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/createClass.js","../../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/inherits.js","../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../../node_modules/core-js/modules/es.array.includes.js","../../../node_modules/core-js/internals/is-integer.js","../../../node_modules/core-js/modules/es.number.is-integer.js","../../../node_modules/core-js/internals/object-to-array.js","../../../node_modules/core-js/modules/es.object.entries.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../src/interfaces/rules.ts","../../../node_modules/@babel/runtime/helpers/superPropBase.js","../../../node_modules/@babel/runtime/helpers/get.js","../../../node_modules/@babel/runtime/helpers/defineProperty.js","../../replay-event-emitter/builds/browser.js","../src/user.ts","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/core-js/internals/freezing.js","../../../node_modules/core-js/internals/internal-metadata.js","../../../node_modules/core-js/internals/collection.js","../../../node_modules/core-js/internals/collection-strong.js","../../../node_modules/core-js/modules/es.map.js","../../operation-retrier/builds/browser.js","../src/services/network.ts","../src/interfaces/notification-types.ts","../../../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../../../node_modules/core-js/modules/es.regexp.to-string.js","../../../node_modules/core-js/modules/es.set.js","../../../node_modules/javascript-state-machine/lib/state-machine.js","../node_modules/uuid/dist/commonjs-browser/rng.js","../node_modules/uuid/dist/commonjs-browser/regex.js","../node_modules/uuid/dist/commonjs-browser/validate.js","../node_modules/uuid/dist/commonjs-browser/stringify.js","../node_modules/uuid/dist/commonjs-browser/v1.js","../node_modules/uuid/dist/commonjs-browser/parse.js","../node_modules/uuid/dist/commonjs-browser/v35.js","../node_modules/uuid/dist/commonjs-browser/md5.js","../node_modules/uuid/dist/commonjs-browser/v3.js","../node_modules/uuid/dist/commonjs-browser/native.js","../node_modules/uuid/dist/commonjs-browser/v4.js","../node_modules/uuid/dist/commonjs-browser/sha1.js","../node_modules/uuid/dist/commonjs-browser/v5.js","../node_modules/uuid/dist/commonjs-browser/nil.js","../node_modules/uuid/dist/commonjs-browser/version.js","../node_modules/uuid/dist/commonjs-browser/index.js","../../../node_modules/core-js/internals/array-buffer-view-core.js","../../../node_modules/core-js/internals/array-buffer-native.js","../../../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","../../../node_modules/core-js/internals/to-index.js","../../../node_modules/core-js/internals/ieee754.js","../../../node_modules/core-js/internals/array-fill.js","../../../node_modules/core-js/internals/array-buffer.js","../../../node_modules/core-js/internals/to-positive-integer.js","../../../node_modules/core-js/internals/to-offset.js","../../../node_modules/core-js/internals/typed-array-from.js","../../../node_modules/core-js/internals/typed-array-constructor.js","../../../node_modules/core-js/modules/es.typed-array.uint8-array.js","../../../node_modules/core-js/modules/es.typed-array.at.js","../../../node_modules/core-js/internals/array-copy-within.js","../../../node_modules/core-js/modules/es.typed-array.copy-within.js","../../../node_modules/core-js/modules/es.typed-array.every.js","../../../node_modules/core-js/modules/es.typed-array.fill.js","../../../node_modules/core-js/internals/array-from-constructor-and-list.js","../../../node_modules/core-js/internals/typed-array-species-constructor.js","../../../node_modules/core-js/internals/typed-array-from-species-and-list.js","../../../node_modules/core-js/modules/es.typed-array.filter.js","../../../node_modules/core-js/modules/es.typed-array.find.js","../../../node_modules/core-js/modules/es.typed-array.find-index.js","../../../node_modules/core-js/modules/es.typed-array.for-each.js","../../../node_modules/core-js/modules/es.typed-array.includes.js","../../../node_modules/core-js/modules/es.typed-array.index-of.js","../../../node_modules/core-js/modules/es.typed-array.iterator.js","../../../node_modules/core-js/modules/es.typed-array.join.js","../../../node_modules/core-js/internals/array-last-index-of.js","../../../node_modules/core-js/modules/es.typed-array.last-index-of.js","../../../node_modules/core-js/modules/es.typed-array.map.js","../../../node_modules/core-js/internals/array-reduce.js","../../../node_modules/core-js/modules/es.typed-array.reduce.js","../../../node_modules/core-js/modules/es.typed-array.reduce-right.js","../../../node_modules/core-js/modules/es.typed-array.reverse.js","../../../node_modules/core-js/modules/es.typed-array.set.js","../../../node_modules/core-js/modules/es.typed-array.slice.js","../../../node_modules/core-js/modules/es.typed-array.some.js","../../../node_modules/core-js/internals/array-sort.js","../../../node_modules/core-js/internals/engine-ff-version.js","../../../node_modules/core-js/internals/engine-is-ie-or-edge.js","../../../node_modules/core-js/internals/engine-webkit-version.js","../../../node_modules/core-js/modules/es.typed-array.sort.js","../../../node_modules/core-js/modules/es.typed-array.subarray.js","../../../node_modules/core-js/modules/es.typed-array.to-locale-string.js","../../../node_modules/core-js/modules/es.typed-array.to-string.js","../../../node_modules/core-js/internals/is-regexp.js","../../../node_modules/core-js/modules/es.string.split.js","../../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../../../node_modules/@babel/runtime/helpers/construct.js","../../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../../node_modules/platform/platform.js","../../../node_modules/core-js/modules/es.string.match.js","../../../node_modules/core-js/internals/same-value.js","../../../node_modules/core-js/modules/es.string.search.js","../../../node_modules/core-js/modules/es.array.splice.js","../../../node_modules/core-js/internals/object-assign.js","../../../node_modules/core-js/modules/es.object.assign.js","../../../node_modules/core-js/modules/es.array.sort.js","../../sync/builds/browser.js","../../../node_modules/core-js/modules/es.string.starts-with.js","../../../node_modules/core-js/internals/not-a-regexp.js","../../../node_modules/core-js/internals/correct-is-regexp-logic.js","../../../node_modules/core-js/internals/native-url.js","../../../node_modules/core-js/internals/string-punycode-to-ascii.js","../../../node_modules/core-js/modules/web.url-search-params.js","../../../node_modules/core-js/modules/web.url.js","../../../node_modules/core-js/modules/es.array-buffer.constructor.js","../src/participant.ts","../src/data/participants.ts","../../../node_modules/core-js/modules/es.string.includes.js","../../../node_modules/core-js/internals/collection-weak.js","../../../node_modules/core-js/modules/es.weak-set.js","../src/media.ts","../src/aggregated-delivery-receipt.ts","../src/rest-paginator.ts","../src/detailed-delivery-receipt.ts","../../deprecation-decorator/builds/browser.js","../src/content-template.ts","../src/message.ts","../src/data/messages.ts","../src/unsent-message.ts","../src/message-builder.ts","../src/conversation.ts","../src/util/deferred.ts","../src/data/conversations.ts","../../../node_modules/core-js/modules/es.array.find.js","../node_modules/uuid/dist/esm-browser/rng.js","../src/data/users.ts","../src/services/typing-indicator.ts","../src/push-notification.ts","../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../node_modules/@babel/runtime/helpers/esm/construct.js","../../../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../../../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/command-executor.ts","../../../node_modules/core-js/modules/es.object.freeze.js","../src/content-client.ts","../../../node_modules/quick-lru/index.js","../src/channel-metadata-client.ts","../src/message-recipients-client.ts","../src/client.ts"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.17.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","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\nexport default function _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}","export default 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}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default 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}","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\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(it) : usingIterator;\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = iterator['return'];\n if (innerResult === undefined) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = innerResult.call(iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = typeof window == 'object';\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\"use strict\";\n\nvar Op = Object.prototype;\nvar hasOwn = Op.hasOwnProperty;\nvar undefined; // More compressible than void 0.\nvar $Symbol = typeof Symbol === \"function\" ? Symbol : {};\nvar iteratorSymbol = $Symbol.iterator || \"@@iterator\";\nvar asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\nvar toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\nfunction wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n}\n\n// Try/catch helper to minimize deoptimizations. Returns a completion\n// record like context.tryEntries[i].completion. This interface could\n// have been (and was previously) designed to take a closure to be\n// invoked without arguments, but in all the cases we care about we\n// already have an existing method we want to call, so there's no need\n// to create a new function object. We can even get away with assuming\n// the method takes exactly one argument, since that happens to be true\n// in every case, so we don't have to touch the arguments object. The\n// only additional allocation required is the completion record, which\n// has a stable shape and so hopefully should be cheap to allocate.\nfunction tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n}\n\nvar GenStateSuspendedStart = \"suspendedStart\";\nvar GenStateSuspendedYield = \"suspendedYield\";\nvar GenStateExecuting = \"executing\";\nvar GenStateCompleted = \"completed\";\n\n// Returning this object from the innerFn has the same effect as\n// breaking out of the dispatch switch statement.\nvar ContinueSentinel = {};\n\n// Dummy constructor functions that we use as the .constructor and\n// .constructor.prototype properties for functions that return Generator\n// objects. For full spec compliance, you may wish to configure your\n// minifier not to mangle the names of these two functions.\nfunction Generator() {}\nfunction GeneratorFunction() {}\nfunction GeneratorFunctionPrototype() {}\n\n// This is a polyfill for %IteratorPrototype% for environments that\n// don't natively support it.\nvar IteratorPrototype = {};\nIteratorPrototype[iteratorSymbol] = function () {\n return this;\n};\n\nvar getProto = Object.getPrototypeOf;\nvar NativeIteratorPrototype = getProto && getProto(getProto(values([])));\nif (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n}\n\nvar Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\nGeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\nGeneratorFunctionPrototype.constructor = GeneratorFunction;\nGeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n// Helper for defining the .next, .throw, and .return methods of the\n// Iterator interface in terms of a single ._invoke method.\nfunction defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n}\n\nfunction isGeneratorFunction (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n};\n\nfunction mark (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n};\n\n// Within the body of any async function, `await x` is transformed to\n// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n// `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n// meant to be awaited.\nfunction awrap (arg) {\n return { __await: arg };\n};\n\nfunction AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n}\n\ndefineIteratorMethods(AsyncIterator.prototype);\nAsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n};\n\n// Note that simple async functions are implemented on top of\n// AsyncIterator objects; they just return a Promise for the value of\n// the final result produced by the iterator.\n function async (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n};\n\nfunction makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n}\n\n// Call delegate.iterator[context.method](context.arg) and handle the\n// result, either by returning a { value, done } result from the\n// delegate iterator, or by modifying context.method and context.arg,\n// setting context.delegate to null, and returning the ContinueSentinel.\nfunction maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n}\n\n// Define Generator.prototype.{next,throw,return} in terms of the\n// unified ._invoke helper method.\ndefineIteratorMethods(Gp);\n\nGp[toStringTagSymbol] = \"Generator\";\n\n// A Generator should always return itself as the iterator object when the\n// @@iterator function is called on it. Some browsers' implementations of the\n// iterator prototype chain incorrectly implement this, causing the Generator\n// object to not be returned from this call. This ensures that doesn't happen.\n// See https://github.com/facebook/regenerator/issues/274 for more details.\nGp[iteratorSymbol] = function() {\n return this;\n};\n\nGp.toString = function() {\n return \"[object Generator]\";\n};\n\nfunction pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n}\n\nfunction resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n}\n\nfunction Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n}\n\nfunction keys (object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n};\n\nfunction values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n}\n\nfunction doneResult() {\n return { value: undefined, done: true };\n}\n\nContext.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n};\n\n// Export a default namespace that plays well with Rollup\nexport default {\n wrap,\n isGeneratorFunction,\n AsyncIterator,\n mark,\n awrap,\n async,\n keys,\n values\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (typeof IteratorPrototype[ITERATOR] !== 'function') {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n defaultLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = level;\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n self.setLevel(defaultLevel, false);\n clearPersistedLevel();\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","import * as loglevelLog from \"loglevel\";\nimport { LogLevelDesc } from \"loglevel\";\n\nfunction prepareLine(prefix, args) {\n return [`${new Date().toISOString()} Conversations ${prefix}:`].concat(\n Array.from(args)\n );\n}\n\nconst log: loglevelLog.Logger = loglevelLog.getLogger(\"twilio-conversations\"); // twilio-conversations is used by Flex SDK. Please DO NOT change\n\nclass Logger {\n private prefix = \"\";\n\n private constructor(prefix: string) {\n this.prefix =\n prefix !== null && prefix !== undefined && prefix.length > 0\n ? prefix + \" \"\n : \"\";\n }\n\n static scope(prefix: string): Logger {\n return new Logger(prefix);\n }\n\n setLevel(level: LogLevelDesc) {\n log.setLevel(level);\n }\n\n static setLevel(level: LogLevelDesc) {\n log.setLevel(level);\n }\n\n trace(...args) {\n if (log.getLevel() == log.levels.TRACE) {\n log.debug.apply(null, prepareLine(this.prefix + \"T\", args));\n }\n }\n\n debug(...args) {\n log.debug.apply(null, prepareLine(this.prefix + \"D\", args));\n }\n\n info(...args) {\n log.info.apply(null, prepareLine(this.prefix + \"I\", args));\n }\n\n warn(...args) {\n log.warn.apply(null, prepareLine(this.prefix + \"W\", args));\n }\n\n error(...args) {\n log.error.apply(null, prepareLine(this.prefix + \"E\", args));\n }\n\n static trace(...args) {\n if (log.getLevel() == log.levels.TRACE) {\n log.debug.apply(null, prepareLine(\"T\", args));\n }\n }\n\n static debug(...args) {\n log.debug.apply(null, prepareLine(\"D\", args));\n }\n\n static info(...args) {\n log.info.apply(null, prepareLine(\"I\", args));\n }\n\n static warn(...args) {\n log.warn.apply(null, prepareLine(\"W\", args));\n }\n\n static error(...args) {\n log.error.apply(null, prepareLine(\"E\", args));\n }\n}\n\nexport { Logger };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * @description A module for parsing ISO8601 durations\n */\n\n/**\n * The pattern used for parsing ISO8601 duration (PnYnMnDTnHnMnS).\n * This does not cover the week format PnW.\n */\n\n// PnYnMnDTnHnMnS\nvar numbers = '\\\\d+(?:[\\\\.,]\\\\d+)?';\nvar weekPattern = '(' + numbers + 'W)';\nvar datePattern = '(' + numbers + 'Y)?(' + numbers + 'M)?(' + numbers + 'D)?';\nvar timePattern = 'T(' + numbers + 'H)?(' + numbers + 'M)?(' + numbers + 'S)?';\n\nvar iso8601 = 'P(?:' + weekPattern + '|' + datePattern + '(?:' + timePattern + ')?)';\nvar objMap = ['weeks', 'years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\n/**\n * The ISO8601 regex for matching / testing durations\n */\nvar pattern = exports.pattern = new RegExp(iso8601);\n\n/** Parse PnYnMnDTnHnMnS format to object\n * @param {string} durationString - PnYnMnDTnHnMnS formatted string\n * @return {Object} - With a property for each part of the pattern\n */\nvar parse = exports.parse = function parse(durationString) {\n // Slice away first entry in match-array\n return durationString.match(pattern).slice(1).reduce(function (prev, next, idx) {\n prev[objMap[idx]] = parseFloat(next) || 0;\n return prev;\n }, {});\n};\n\n/**\n * Convert ISO8601 duration object to an end Date.\n *\n * @param {Object} duration - The duration object\n * @param {Date} startDate - The starting Date for calculating the duration\n * @return {Date} - The resulting end Date\n */\nvar end = exports.end = function end(duration, startDate) {\n // Create two equal timestamps, add duration to 'then' and return time difference\n var timestamp = startDate ? startDate.getTime() : Date.now();\n var then = new Date(timestamp);\n\n then.setFullYear(then.getFullYear() + duration.years);\n then.setMonth(then.getMonth() + duration.months);\n then.setDate(then.getDate() + duration.days);\n then.setHours(then.getHours() + duration.hours);\n then.setMinutes(then.getMinutes() + duration.minutes);\n // Then.setSeconds(then.getSeconds() + duration.seconds);\n then.setMilliseconds(then.getMilliseconds() + duration.seconds * 1000);\n // Special case weeks\n then.setDate(then.getDate() + duration.weeks * 7);\n\n return then;\n};\n\n/**\n * Convert ISO8601 duration object to seconds\n *\n * @param {Object} duration - The duration object\n * @param {Date} startDate - The starting point for calculating the duration\n * @return {Number}\n */\nvar toSeconds = exports.toSeconds = function toSeconds(duration, startDate) {\n var timestamp = startDate ? startDate.getTime() : Date.now();\n var now = new Date(timestamp);\n var then = end(duration, now);\n\n var seconds = (then.getTime() - now.getTime()) / 1000;\n return seconds;\n};\n\nexports.default = {\n end: end,\n toSeconds: toSeconds,\n pattern: pattern,\n parse: parse\n};","import { ConfigurationResponse } from \"./interfaces/commands/configuration\";\nimport { parse as parseDuration, toSeconds } from \"iso8601-duration\";\nimport { Logger } from \"./logger\";\nimport { ConversationLimits } from \"./interfaces/conversation-limits\";\nimport { ClientOptions } from \"./client\";\n\nconst TYPING_TIMEOUT = 5;\nconst HTTP_CACHE_LIFETIME = \"PT5S\";\nconst CONSUMPTION_HORIZON_SENDING_INTERVAL = \"PT5S\";\nconst USER_INFOS_TO_SUBSCRIBE = 100;\n\nconst MINIMUM_RETRY_DELAY = 1000;\nconst MAXIMUM_RETRY_DELAY = 4000;\nconst MAXIMUM_ATTEMPTS_COUNT = 3;\nconst RETRY_WHEN_THROTTLED = true;\n\nconst CHANNEL_METADATA_CACHE_CAPACITY = 100;\nconst MESSAGE_RECIPIENTS_CACHE_CAPACITY = 1000;\n\ninterface BackoffConfiguration {\n min: number;\n max: number;\n maxAttemptsCount: number;\n}\n\nclass Configuration {\n public readonly links: {\n myConversations: string;\n conversations: string;\n users: string;\n currentUser: string;\n typing: string;\n mediaService: string;\n mediaSetService: string;\n messagesReceipts: string;\n };\n\n public readonly limits: ConversationLimits;\n\n public readonly productId?: string;\n\n public readonly typingIndicatorTimeoutOverride?: number;\n public readonly typingIndicatorTimeoutDefault: number = TYPING_TIMEOUT * 1000;\n public readonly backoffConfiguration: BackoffConfiguration;\n public readonly retryWhenThrottled: boolean;\n\n public readonly consumptionReportInterval: number;\n public readonly userInfosToSubscribe: number;\n public readonly httpCacheInterval: number;\n public readonly reachabilityEnabled: boolean;\n\n public readonly userIdentity: string;\n public readonly userInfo: string;\n public readonly myConversations: string;\n\n public readonly channelMetadataCacheCapacity: number;\n public readonly messageRecipientsCacheCapacity: number;\n\n constructor(\n options: ClientOptions = {},\n configurationResponse: ConfigurationResponse,\n logger: Logger\n ) {\n const constructorOptions =\n options.Chat || options.IPMessaging || options || {};\n\n this.productId = constructorOptions.productId;\n\n this.links = {\n myConversations: configurationResponse.links.my_conversations,\n conversations: configurationResponse.links.conversations,\n users: configurationResponse.links.users,\n currentUser: configurationResponse.links.current_user,\n typing: configurationResponse.links.typing,\n mediaService: configurationResponse.links.media_service,\n mediaSetService: configurationResponse.links.media_set_service,\n messagesReceipts: configurationResponse.links.messages_receipts,\n };\n\n this.limits = {\n mediaAttachmentsCountLimit:\n configurationResponse.options.media_attachments_count_limit,\n mediaAttachmentSizeLimitInMb:\n configurationResponse.options.media_attachment_size_limit_in_mb,\n mediaAttachmentsTotalSizeLimitInMb:\n configurationResponse.options.media_attachments_total_size_limit_in_mb,\n emailHistoriesAllowedContentTypes:\n configurationResponse.options.email_histories_allowed_mime_types,\n emailBodiesAllowedContentTypes:\n configurationResponse.options.email_bodies_allowed_mime_types,\n };\n\n this.typingIndicatorTimeoutOverride =\n constructorOptions.typingIndicatorTimeoutOverride;\n this.backoffConfiguration = {\n min: MINIMUM_RETRY_DELAY,\n max: MAXIMUM_RETRY_DELAY,\n maxAttemptsCount: MAXIMUM_ATTEMPTS_COUNT,\n ...constructorOptions.backoffConfigOverride,\n };\n this.retryWhenThrottled =\n constructorOptions.retryWhenThrottledOverride !== undefined\n ? constructorOptions.retryWhenThrottledOverride\n : RETRY_WHEN_THROTTLED;\n this.userInfosToSubscribe =\n constructorOptions.userInfosToSubscribeOverride ??\n configurationResponse.options.user_infos_to_subscribe ??\n USER_INFOS_TO_SUBSCRIBE;\n this.reachabilityEnabled =\n configurationResponse.options.reachability_enabled;\n this.userIdentity = configurationResponse.identity;\n this.userInfo = configurationResponse.sync_objects.my_user_info;\n this.myConversations = configurationResponse.sync_objects.my_conversations;\n\n const httpCacheInterval =\n constructorOptions.httpCacheIntervalOverride ??\n configurationResponse.options.http_cache_interval ??\n HTTP_CACHE_LIFETIME;\n\n try {\n this.httpCacheInterval = toSeconds(parseDuration(httpCacheInterval));\n } catch {\n logger.error(\n `Failed to parse http cache interval ${httpCacheInterval}, using default value ${HTTP_CACHE_LIFETIME}`\n );\n this.httpCacheInterval = toSeconds(parseDuration(HTTP_CACHE_LIFETIME));\n }\n\n const consumptionReportInterval =\n constructorOptions.consumptionReportIntervalOverride ??\n configurationResponse.options.consumption_report_interval ??\n CONSUMPTION_HORIZON_SENDING_INTERVAL;\n\n try {\n this.consumptionReportInterval = toSeconds(\n parseDuration(consumptionReportInterval)\n );\n } catch {\n logger.error(\n `Failed to parse consumption report interval ${consumptionReportInterval}, using default value ${CONSUMPTION_HORIZON_SENDING_INTERVAL}`\n );\n this.consumptionReportInterval = toSeconds(\n parseDuration(CONSUMPTION_HORIZON_SENDING_INTERVAL)\n );\n }\n\n this.channelMetadataCacheCapacity =\n options.channelMetadataCacheCapacity ?? CHANNEL_METADATA_CACHE_CAPACITY;\n this.messageRecipientsCacheCapacity =\n options.messageRecipientsCacheCapacity ??\n MESSAGE_RECIPIENTS_CACHE_CAPACITY;\n }\n}\n\nexport { Configuration };\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = string.charAt(offset - 1);\n var next = string.charAt(offset + 1);\n if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {\n return '\\\\u' + match.charCodeAt(0).toString(16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == 'string' ? result.replace(re, fix) : result;\n }\n });\n}\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a number');\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeExec = RegExp.prototype.exec;\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = patchedExec.call(raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = str.slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str.charAt(re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","import { Logger } from \"../logger\";\nimport { JSONValue } from \"../types\";\n\n/**\n * Deep-clone an object. Note that this does not work on object containing\n * functions.\n * @param {object} obj - the object to deep-clone\n * @returns {object}\n */\nfunction deepClone<T>(obj: T): T {\n return JSON.parse(JSON.stringify(obj)) as T;\n}\n\nfunction parseToNumber(value) {\n if (typeof value !== \"undefined\" && !isNaN(Number(value))) {\n return Number(value);\n }\n return null;\n}\n\n// timeString cannot be typed `string` because in member.ts\n// call to parseTime(data.lastReadTimestamp) uses number not a string for timestamp.\nfunction parseTime(timeString): Date | null {\n try {\n return new Date(timeString);\n } catch (e) {\n return null;\n }\n}\n\nfunction parseAttributes(\n rawAttributes,\n warningMessage: string,\n log: Logger\n): JSONValue {\n let attributes = {};\n if (rawAttributes) {\n try {\n attributes = JSON.parse(rawAttributes);\n } catch (e) {\n log.warn(warningMessage, e);\n }\n }\n\n return attributes;\n}\n\n/**\n * Construct URI with query parameters\n */\nclass UriBuilder {\n private base: string;\n private args: string[];\n private paths: string[];\n\n constructor(base: string) {\n this.base = base.replace(/\\/$/, \"\");\n this.args = [];\n this.paths = [];\n }\n\n public arg(\n name: string,\n value: string | number | boolean | undefined\n ): UriBuilder {\n if (typeof value !== \"undefined\") {\n this.args.push(\n encodeURIComponent(name) + \"=\" + encodeURIComponent(value)\n );\n }\n return this;\n }\n\n public path(name: string): UriBuilder {\n this.paths.push(encodeURIComponent(name));\n return this;\n }\n\n public build(): string {\n let result = this.base;\n if (this.paths.length) {\n result += \"/\" + this.paths.join(\"/\");\n }\n\n if (this.args.length) {\n result += \"?\" + this.args.join(\"&\");\n }\n return result;\n }\n}\n\n/**\n * Deep equality check for objects\n * @param a - first value to compare\n * @param b - second value to compare\n * @returns true if values are deeply equal\n */\nfunction isEqual(a: unknown, b: unknown): boolean {\n if (a === b) {\n return true;\n }\n\n if (a === null || b === null || a === undefined || b === undefined) {\n return a === b;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a !== \"object\") {\n return a === b;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n return a.every((item, index) => isEqual(item, b[index]));\n }\n\n if (Array.isArray(a) || Array.isArray(b)) {\n return false;\n }\n\n const aKeys = Object.keys(a as object);\n const bKeys = Object.keys(b as object);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n return aKeys.every((key) =>\n isEqual(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key]\n )\n );\n}\n\nexport {\n deepClone,\n UriBuilder,\n parseToNumber,\n parseTime,\n parseAttributes,\n isEqual,\n};\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, 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}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n if (typeof this.exec !== 'function') {\n return nativeTest.call(this, str);\n }\n var result = this.exec(str);\n if (result !== null && !isObject(result)) {\n throw new Error('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var nativeSymbol = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"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 } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.es/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","export default 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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _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}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export 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}","import {\n custom,\n literal,\n objectSchema,\n} from \"@twilio/declarative-type-validator\";\n\nexport const json = custom((value) => [\n [\"string\", \"number\", \"boolean\", \"object\"].includes(typeof value),\n \"a JSON type\",\n]);\n\nexport const optionalJson = custom((value) => [\n [\"undefined\", \"string\", \"number\", \"boolean\", \"object\"].includes(typeof value),\n \"an optional JSON type\",\n]);\n\nexport const sendMediaOptions = objectSchema(\"send media options\", {\n contentType: [literal(null), \"string\"],\n filename: [\"string\", \"undefined\"],\n media: [\n literal(\"null\"),\n \"string\",\n ...(typeof Buffer === \"function\" ? [Buffer] : []),\n ...(typeof Blob === \"function\" ? [Blob] : []),\n ],\n});\n","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\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(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*\n@license\nCopyright (c) 2021 Twilio Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _get = require('@babel/runtime/helpers/get');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\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.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active ) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\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 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\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\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, 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 if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\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) {\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) {\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] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\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 _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\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; i-- > 0;) {\n if (list[i] === listener ||\n (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 (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n \n// Alias for removeListener added in NodeJS 10.0\n// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener\nEventEmitter.prototype.off = function(type, listener){\n return this.removeListener(type, listener);\n};\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\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 for (var i = 0, key; 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 = new EventHandlers();\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) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\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) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\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 _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"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; } }\nvar ReplayEventEmitter = /*#__PURE__*/function (_EventEmitter) {\n _inherits__default[\"default\"](ReplayEventEmitter, _EventEmitter);\n\n var _super = _createSuper(ReplayEventEmitter);\n\n function ReplayEventEmitter() {\n var _this;\n\n _classCallCheck__default[\"default\"](this, ReplayEventEmitter);\n\n _this = _super.call(this);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"eventHistory\", new Map());\n\n return _this;\n }\n\n _createClass__default[\"default\"](ReplayEventEmitter, [{\n key: \"on\",\n value: function on(event, listener) {\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"on\", this).call(this, event, listener);\n }\n }, {\n key: \"once\",\n value: function once(event, listener) {\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"once\", this).call(this, event, listener);\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"off\", this).call(this, event, listener);\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this.eventHistory.set(event, args);\n return (_get2 = _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"emit\", this)).call.apply(_get2, [this, event].concat(args));\n }\n }, {\n key: \"addListener\",\n value: function addListener(event, listener) {\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"addListener\", this).call(this, event, listener);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener(event, listener) {\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"removeListener\", this).call(this, event, listener);\n }\n }, {\n key: \"addListenerWithReplay\",\n value: function addListenerWithReplay(event, listener) {\n var historyEntry = this.eventHistory.get(event);\n\n if (historyEntry !== undefined) {\n listener.apply(void 0, _toConsumableArray__default[\"default\"](historyEntry));\n }\n\n return this.addListener(event, listener);\n }\n }, {\n key: \"onWithReplay\",\n value: function onWithReplay(event, listener) {\n return this.addListenerWithReplay(event, listener);\n }\n }, {\n key: \"onceWithReplay\",\n value: function onceWithReplay(event, listener) {\n var historyEntry = this.eventHistory.get(event);\n\n if (historyEntry !== undefined) {\n listener.apply(void 0, _toConsumableArray__default[\"default\"](historyEntry));\n return this;\n }\n\n return _get__default[\"default\"](_getPrototypeOf__default[\"default\"](ReplayEventEmitter.prototype), \"once\", this).call(this, event, listener);\n }\n }]);\n\n return ReplayEventEmitter;\n}(EventEmitter);\n\nexports.ReplayEventEmitter = ReplayEventEmitter;\n//# sourceMappingURL=browser.js.map\n","import { Logger } from \"./logger\";\nimport { SyncClient } from \"twilio-sync\";\nimport { parseAttributes } from \"./util\";\nimport { validateTypesAsync } from \"@twilio/declarative-type-validator\";\nimport { json } from \"./interfaces/rules\";\nimport { Configuration } from \"./configuration\";\nimport { CommandExecutor } from \"./command-executor\";\nimport {\n EditUserRequest,\n EditUserResponse,\n} from \"./interfaces/commands/edit-user\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { isEqual } from \"./util\";\nimport { JSONValue } from \"./types\";\n\ntype UserEvents = {\n updated: (data: { user: User; updateReasons: UserUpdateReason[] }) => void;\n userSubscribed: (user: User) => void;\n userUnsubscribed: (user: User) => void;\n};\n\nconst log = Logger.scope(\"User\");\n\ninterface UserState {\n identity: string;\n entityName: string;\n friendlyName: string | null;\n attributes: JSONValue;\n online: boolean | null;\n notifiable: boolean | null;\n}\n\ninterface UpdateValue {\n value: string;\n notifiable: boolean | null;\n online: boolean | null;\n}\n\ninterface UserServices {\n syncClient: SyncClient;\n commandExecutor: CommandExecutor;\n}\n\ninterface UserLinks {\n self: string;\n}\n\ntype SubscriptionState = \"initializing\" | \"subscribed\" | \"unsubscribed\";\n\n/**\n * The reason for the `updated` event being emitted by a user.\n */\ntype UserUpdateReason =\n | \"friendlyName\"\n | \"attributes\"\n | \"reachabilityOnline\"\n | \"reachabilityNotifiable\";\n\ninterface UserUpdatedEventArgs {\n user: User;\n updateReasons: UserUpdateReason[];\n}\n\n/**\n * Extended user information.\n * Note that `isOnline` and `isNotifiable` properties are eligible\n * for use only if the reachability function is enabled.\n * You may check if it is enabled by reading the value of {@link Client.reachabilityEnabled}.\n */\nclass User extends ReplayEventEmitter<UserEvents> {\n private links!: UserLinks;\n private configuration!: Configuration;\n private readonly services: UserServices;\n\n private entity;\n private state: UserState;\n private promiseToFetch: Promise<User> | null = null;\n private subscribed: SubscriptionState;\n\n private _initializationPromise: Promise<void>;\n private _resolveInitializationPromise;\n\n /**\n * @internal\n */\n constructor(\n identity: string,\n entityName: string,\n configuration: Configuration | null,\n services: UserServices\n ) {\n super();\n\n this.services = services;\n\n this.subscribed = \"initializing\";\n this.setMaxListeners(0);\n\n this.state = {\n identity,\n entityName,\n friendlyName: null,\n attributes: {},\n online: null,\n notifiable: null,\n };\n\n this._initializationPromise = new Promise((resolve) => {\n this._resolveInitializationPromise = resolve;\n });\n\n if (configuration !== null) {\n this._resolveInitialization(configuration, identity, entityName, false);\n }\n }\n\n /**\n * Fired when the properties or the reachability status of the message has been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the following properties:\n * * {@link User} `user` - the user in question\n * * {@link UserUpdateReason}[] `updateReasons` - array of reasons for the update\n * @event\n */\n public readonly updated = \"updated\";\n\n /**\n * Fired when the client has subscribed to the user.\n *\n * Parameters:\n * 1. {@link User} `user` - the user in question\n * @event\n */\n public readonly userSubscribed = \"userSubscribed\";\n\n /**\n * Fired when the client has unsubscribed from the user.\n *\n * Parameters:\n * 1. {@link User} `user` - the user in question\n * @event\n */\n public readonly userUnsubscribed = \"userUnsubscribed\";\n\n /**\n * User identity.\n */\n public get identity(): string {\n return this.state.identity;\n }\n\n public set identity(identity: string) {\n this.state.identity = identity;\n }\n\n public set entityName(name: string) {\n this.state.entityName = name;\n }\n\n /**\n * Custom attributes of the user.\n */\n public get attributes() {\n return this.state.attributes;\n }\n\n /**\n * Friendly name of the user, null if not set.\n */\n public get friendlyName(): string | null {\n return this.state.friendlyName;\n }\n\n /**\n * Status of the real-time conversation connection of the user.\n */\n public get isOnline(): boolean | null {\n return this.state.online;\n }\n\n /**\n * User push notification registration status.\n */\n public get isNotifiable(): boolean | null {\n return this.state.notifiable;\n }\n\n /**\n * True if this user is receiving real-time status updates.\n */\n public get isSubscribed(): boolean {\n return this.subscribed == \"subscribed\";\n }\n\n // Handles service updates\n async _update(\n key: string,\n value: { value: string; notifiable: boolean | null; online: boolean | null }\n ) {\n await this._initializationPromise;\n\n const updateReasons: UserUpdateReason[] = [];\n log.debug(\"User for\", this.state.identity, \"updated:\", key, value);\n switch (key) {\n case \"friendlyName\":\n if (this.state.friendlyName !== value.value) {\n updateReasons.push(\"friendlyName\");\n this.state.friendlyName = value.value;\n }\n break;\n case \"attributes\":\n const updateAttributes = parseAttributes(\n value.value,\n `Retrieved malformed attributes from the server for user: ${this.state.identity}`,\n log\n );\n if (!isEqual(this.state.attributes, updateAttributes)) {\n this.state.attributes = updateAttributes;\n updateReasons.push(\"attributes\");\n }\n break;\n case \"reachability\":\n if (this.state.online !== value.online) {\n this.state.online = value.online;\n updateReasons.push(\"reachabilityOnline\");\n }\n if (this.state.notifiable !== value.notifiable) {\n this.state.notifiable = value.notifiable;\n updateReasons.push(\"reachabilityNotifiable\");\n }\n break;\n default:\n return;\n }\n if (updateReasons.length > 0) {\n this.emit(\"updated\", { user: this, updateReasons: updateReasons });\n }\n }\n\n // Fetch reachability info\n private async _updateReachabilityInfo(map, update) {\n await this._initializationPromise;\n\n if (!this.configuration.reachabilityEnabled) {\n return Promise.resolve();\n }\n\n return map\n .get(\"reachability\")\n .then(update)\n .catch((err) => {\n log.warn(\n \"Failed to get reachability info for \",\n this.state.identity,\n err\n );\n });\n }\n\n // Fetch user\n async _fetch(): Promise<User> {\n await this._initializationPromise;\n\n if (!this.state.entityName) {\n return this;\n }\n\n this.promiseToFetch = this.services.syncClient\n .map({\n id: this.state.entityName,\n mode: \"open_existing\",\n includeItems: true,\n })\n .then((map) => {\n this.entity = map;\n map.on(\"itemUpdated\", (args) => {\n log.debug(\n this.state.entityName +\n \" (\" +\n this.state.identity +\n \") itemUpdated: \" +\n args.item.key\n );\n return this._update(args.item.key, args.item.data);\n });\n map.on(\"itemAdded\", (args) => {\n log.debug(\n this.state.entityName +\n \" (\" +\n this.state.identity +\n \") itemAdded: \" +\n args.item.key\n );\n return this._update(args.item.key, args.item.data);\n });\n return Promise.all([\n map\n .get(\"friendlyName\")\n .then((item) => this._update(item.key, item.data as UpdateValue)),\n map\n .get(\"attributes\")\n .then((item) => this._update(item.key, item.data as UpdateValue)),\n this._updateReachabilityInfo(map, (item) =>\n this._update(item.key, item.data)\n ),\n ]);\n })\n .then(() => {\n log.debug(\"Fetched for\", this.identity);\n this.subscribed = \"subscribed\";\n this.emit(\"userSubscribed\", this);\n return this;\n })\n .catch((err) => {\n this.promiseToFetch = null;\n throw err;\n });\n return this.promiseToFetch;\n }\n\n async _ensureFetched() {\n await this._initializationPromise;\n return this.promiseToFetch || this._fetch();\n }\n\n /**\n * Edit user attributes.\n * @param attributes New attributes.\n */\n @validateTypesAsync(json)\n public async updateAttributes(attributes: JSONValue): Promise<User> {\n await this._initializationPromise;\n\n if (this.subscribed == \"unsubscribed\") {\n throw new Error(\"Can't modify unsubscribed object\");\n }\n\n await this.services.commandExecutor.mutateResource<\n EditUserRequest,\n EditUserResponse\n >(\"post\", this.links.self, {\n attributes: JSON.stringify(attributes),\n });\n\n return this;\n }\n\n /**\n * Update the friendly name of the user.\n * @param friendlyName New friendly name.\n */\n @validateTypesAsync([\"string\"])\n public async updateFriendlyName(friendlyName: string): Promise<User> {\n await this._initializationPromise;\n\n if (this.subscribed == \"unsubscribed\") {\n throw new Error(\"Can't modify unsubscribed object\");\n }\n\n await this.services.commandExecutor.mutateResource<\n EditUserRequest,\n EditUserResponse\n >(\"post\", this.links.self, {\n friendly_name: friendlyName,\n });\n\n return this;\n }\n\n /**\n * Remove the user from the subscription list.\n * @return A promise of completion.\n */\n async unsubscribe(): Promise<void> {\n await this._initializationPromise;\n\n if (this.promiseToFetch) {\n await this.promiseToFetch;\n this.entity.close();\n this.promiseToFetch = null;\n this.subscribed = \"unsubscribed\";\n this.emit(\"userUnsubscribed\", this);\n }\n }\n\n public _resolveInitialization(\n configuration: Configuration,\n identity: string,\n entityName: string,\n emitUpdated: boolean\n ): void {\n this.configuration = configuration;\n this.identity = identity;\n this.entityName = entityName;\n this.links = {\n self: `${this.configuration.links.users}/${encodeURIComponent(\n this.identity\n )}`,\n };\n this._resolveInitializationPromise();\n\n if (emitUpdated) {\n this.emit(\"updated\", {\n user: this,\n updateReasons: [\n \"friendlyName\",\n \"attributes\",\n \"reachabilityOnline\",\n \"reachabilityNotifiable\",\n ],\n });\n }\n }\n}\n\nexport {\n User,\n UserServices,\n SubscriptionState,\n UserUpdateReason,\n UserUpdatedEventArgs,\n};\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export 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}","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var $ = require('../internals/export');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = [].splice;\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice.call(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var nativeMethod = NativePrototype[KEY];\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n nativeMethod.call(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n nativeMethod.call(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n typeof NativeConstructor != 'function' || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, Constructor, CONSTRUCTOR_NAME);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","/*\n@license\nCopyright (c) 2016, Twilio, Inc.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\nSPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION\nOF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN\nCONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n*/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nrequire('core-js/modules/es.reflect.to-string-tag.js');\nrequire('core-js/modules/es.reflect.construct.js');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nrequire('core-js/modules/es.object.to-string.js');\nrequire('core-js/modules/es.promise.js');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\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.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active ) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\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 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\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\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, 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 if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\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) {\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) {\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] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\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 _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\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; i-- > 0;) {\n if (list[i] === listener ||\n (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 (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n \n// Alias for removeListener added in NodeJS 10.0\n// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener\nEventEmitter.prototype.off = function(type, listener){\n return this.removeListener(type, listener);\n};\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\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 for (var i = 0, key; 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 = new EventHandlers();\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) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\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) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\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 _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { 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/**\n * Provides retrier service\n */\n\nvar Retrier = /*#__PURE__*/function (_EventEmitter) {\n _inherits__default[\"default\"](Retrier, _EventEmitter);\n\n var _super = _createSuper$1(Retrier);\n\n // fibonacci strategy\n\n /**\n * Creates a new Retrier instance\n */\n function Retrier(options) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, Retrier);\n\n _this = _super.call(this);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"timeout\", null);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"startTimestamp\", -1);\n\n _this.minDelay = options.min;\n _this.maxDelay = options.max;\n _this.initialDelay = options.initial || 0;\n _this.maxAttemptsCount = options.maxAttemptsCount || 0;\n _this.maxAttemptsTime = options.maxAttemptsTime || 0;\n _this.randomness = options.randomness || 0;\n _this.inProgress = false;\n _this.attemptNum = 0;\n _this.prevDelay = 0;\n _this.currDelay = 0;\n return _this;\n }\n\n _createClass__default[\"default\"](Retrier, [{\n key: \"attempt\",\n value: function attempt() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n\n this.attemptNum++;\n this.emit(\"attempt\", this);\n }\n }, {\n key: \"nextDelay\",\n value: function nextDelay(delayOverride) {\n if (typeof delayOverride === \"number\") {\n this.prevDelay = 0;\n this.currDelay = delayOverride;\n return delayOverride;\n }\n\n if (this.attemptNum == 0) {\n return this.initialDelay;\n }\n\n if (this.attemptNum == 1) {\n this.currDelay = this.minDelay;\n return this.currDelay;\n }\n\n this.prevDelay = this.currDelay;\n var delay = this.currDelay + this.prevDelay;\n\n if (this.maxDelay && delay > this.maxDelay) {\n this.currDelay = this.maxDelay;\n delay = this.maxDelay;\n }\n\n this.currDelay = delay;\n return delay;\n }\n }, {\n key: \"randomize\",\n value: function randomize(delay) {\n var area = delay * this.randomness;\n var corr = Math.round(Math.random() * area * 2 - area);\n return Math.max(0, delay + corr);\n }\n }, {\n key: \"scheduleAttempt\",\n value: function scheduleAttempt(delayOverride) {\n var _this2 = this;\n\n if (this.maxAttemptsCount && this.attemptNum >= this.maxAttemptsCount) {\n this.cleanup();\n this.emit(\"failed\", new Error(\"Maximum attempt count limit reached\"));\n return;\n }\n\n var delay = this.nextDelay(delayOverride);\n delay = this.randomize(delay);\n\n if (this.maxAttemptsTime && this.startTimestamp + this.maxAttemptsTime < Date.now() + delay) {\n this.cleanup();\n this.emit(\"failed\", new Error(\"Maximum attempt time limit reached\"));\n return;\n }\n\n this.timeout = setTimeout(function () {\n return _this2.attempt();\n }, delay);\n }\n }, {\n key: \"cleanup\",\n value: function cleanup() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n\n this.inProgress = false;\n this.attemptNum = 0;\n this.prevDelay = 0;\n this.currDelay = 0;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.inProgress) {\n throw new Error(\"Retrier is already in progress\");\n }\n\n this.inProgress = true;\n this.startTimestamp = Date.now();\n this.scheduleAttempt(this.initialDelay);\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n this.inProgress = false;\n this.emit(\"cancelled\");\n }\n } // @todo Must be a T here, so the entire Retrier must be typed on this value type.\n // eslint-disable-next-line\n\n }, {\n key: \"succeeded\",\n value: function succeeded(arg) {\n this.emit(\"succeeded\", arg);\n }\n }, {\n key: \"failed\",\n value: function failed(err, nextAttemptDelayOverride) {\n if (this.timeout) {\n throw new Error(\"Retrier attempt is already in progress\");\n }\n\n this.scheduleAttempt(nextAttemptDelayOverride);\n }\n }]);\n\n return Retrier;\n}(EventEmitter);\n/**\n * Run retrier as an async function with possibility to await for it.\n * Example:\n * ```\n * const result = AsyncRetrier.run(async () => somePromise);\n * ```\n */\n\n\nvar AsyncRetrier = /*#__PURE__*/function (_EventEmitter2) {\n _inherits__default[\"default\"](AsyncRetrier, _EventEmitter2);\n\n var _super2 = _createSuper$1(AsyncRetrier);\n\n // This any must be T typed directly on the AsyncRetrier\n // eslint-disable-next-line\n function AsyncRetrier(options) {\n var _this3;\n\n _classCallCheck__default[\"default\"](this, AsyncRetrier);\n\n _this3 = _super2.call(this);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this3), \"resolve\", function () {\n return void 0;\n });\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this3), \"reject\", function () {\n return void 0;\n });\n\n _this3.retrier = new Retrier(options);\n return _this3;\n }\n\n _createClass__default[\"default\"](AsyncRetrier, [{\n key: \"run\",\n value: function run(handler) {\n var _this4 = this;\n\n this.retrier.on(\"attempt\", function () {\n handler().then(function (v) {\n return _this4.retrier.succeeded(v);\n }).catch(function (e) {\n return _this4.retrier.failed(e);\n });\n });\n this.retrier.on(\"succeeded\", function (arg) {\n return _this4.resolve(arg);\n });\n this.retrier.on(\"cancelled\", function () {\n return _this4.reject(new Error(\"Cancelled\"));\n });\n this.retrier.on(\"failed\", function (err) {\n return _this4.reject(err);\n });\n return new Promise(function (resolve, reject) {\n _this4.resolve = resolve;\n _this4.reject = reject;\n\n _this4.retrier.start();\n });\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.retrier.cancel();\n }\n }]);\n\n return AsyncRetrier;\n}(EventEmitter);\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"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\nfunction isDef(value) {\n return value !== undefined && value !== null;\n}\n\nvar Backoff = /*#__PURE__*/function (_EventEmitter) {\n _inherits__default[\"default\"](Backoff, _EventEmitter);\n\n var _super = _createSuper(Backoff);\n\n function Backoff(options) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, Backoff);\n\n _this = _super.call(this);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"backoffDelay\", 0);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"nextBackoffDelay\", 0);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"backoffNumber\", 0);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"timeoutID\", null);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"maxNumberOfRetry\", -1);\n\n options = options || {};\n var _options = options,\n initialDelay = _options.initialDelay,\n maxDelay = _options.maxDelay,\n randomisationFactor = _options.randomisationFactor,\n factor = _options.factor;\n\n if (isDef(initialDelay) && initialDelay < 1) {\n throw new Error(\"The initial timeout must be equal to or greater than 1.\");\n }\n\n if (isDef(maxDelay) && maxDelay <= 1) {\n throw new Error(\"The maximal timeout must be greater than 1.\");\n }\n\n if (isDef(randomisationFactor) && (randomisationFactor < 0 || randomisationFactor > 1)) {\n throw new Error(\"The randomisation factor must be between 0 and 1.\");\n }\n\n if (isDef(factor) && factor <= 1) {\n throw new Error(\"Exponential factor should be greater than 1.\");\n }\n\n _this.initialDelay = initialDelay || 100;\n _this.maxDelay = maxDelay || 10000;\n\n if (_this.maxDelay <= _this.initialDelay) {\n throw new Error(\"The maximal backoff delay must be greater than the initial backoff delay.\");\n }\n\n _this.randomisationFactor = randomisationFactor || 0;\n _this.factor = factor || 2;\n\n _this.reset();\n\n return _this;\n }\n\n _createClass__default[\"default\"](Backoff, [{\n key: \"backoff\",\n value: function backoff(err) {\n if (this.timeoutID == null) {\n if (this.backoffNumber === this.maxNumberOfRetry) {\n this.emit(\"fail\", err);\n this.reset();\n } else {\n this.backoffDelay = this.next();\n this.timeoutID = setTimeout(this.onBackoff.bind(this), this.backoffDelay);\n this.emit(\"backoff\", this.backoffNumber, this.backoffDelay, err);\n }\n }\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.backoffDelay = 0;\n this.nextBackoffDelay = this.initialDelay;\n this.backoffNumber = 0;\n\n if (this.timeoutID) {\n clearTimeout(this.timeoutID);\n }\n\n this.timeoutID = null;\n }\n }, {\n key: \"failAfter\",\n value: function failAfter(maxNumberOfRetry) {\n if (maxNumberOfRetry <= 0) {\n throw new Error(\"Expected a maximum number of retry greater than 0 but got \".concat(maxNumberOfRetry));\n }\n\n this.maxNumberOfRetry = maxNumberOfRetry;\n }\n }, {\n key: \"next\",\n value: function next() {\n this.backoffDelay = Math.min(this.nextBackoffDelay, this.maxDelay);\n this.nextBackoffDelay = this.backoffDelay * this.factor;\n var randomisationMultiple = 1 + Math.random() * this.randomisationFactor;\n return Math.min(this.maxDelay, Math.round(this.backoffDelay * randomisationMultiple));\n }\n }, {\n key: \"onBackoff\",\n value: function onBackoff() {\n this.timeoutID = null;\n this.emit(\"ready\", this.backoffNumber, this.backoffDelay);\n this.backoffNumber++;\n }\n }], [{\n key: \"exponential\",\n value: function exponential(options) {\n return new Backoff(options);\n }\n }]);\n\n return Backoff;\n}(EventEmitter);\n\nexports.AsyncRetrier = AsyncRetrier;\nexports.Backoff = Backoff;\nexports.Retrier = Retrier;\n//# sourceMappingURL=browser.js.map\n","import { Retrier } from \"@twilio/operation-retrier\";\nimport { Transport, TransportResult } from \"twilsock\";\nimport { Configuration } from \"../configuration\";\n\nimport Timeout = NodeJS.Timeout;\n\ninterface CacheEntry {\n response: TransportResult<unknown>;\n timestamp: number;\n}\n\nexport interface NetworkServices {\n transport: Transport;\n}\n\nclass Network {\n private readonly configuration: Configuration;\n private readonly services: NetworkServices;\n private cacheLifetime: number;\n\n private readonly cache: Map<string, CacheEntry>;\n private timer!: number | NodeJS.Timeout;\n\n constructor(configuration, services) {\n this.configuration = configuration;\n this.services = services;\n this.cache = new Map<string, CacheEntry>();\n this.cacheLifetime = this.configuration.httpCacheInterval * 100;\n this.cleanupCache();\n }\n\n private isExpired(timestamp: number): boolean {\n return !this.cacheLifetime || Date.now() - timestamp > this.cacheLifetime;\n }\n\n private cleanupCache() {\n for (const [k, v] of this.cache) {\n if (this.isExpired(v.timestamp)) {\n this.cache.delete(k);\n }\n }\n\n if (this.cache.size === 0) {\n clearInterval(this.timer as Timeout);\n }\n }\n\n pokeTimer() {\n this.timer =\n this.timer ||\n setInterval(() => this.cleanupCache(), this.cacheLifetime * 2);\n }\n\n private executeWithRetry<T>(\n request,\n retryWhenThrottled = false\n ): Promise<TransportResult<T>> {\n return new Promise((resolve, reject) => {\n const codesToRetryOn = [502, 503, 504];\n if (retryWhenThrottled) {\n codesToRetryOn.push(429);\n }\n\n const retrier = new Retrier(this.configuration.backoffConfiguration);\n retrier.on(\"attempt\", () => {\n request()\n .then((result) => retrier.succeeded(result))\n .catch((err) => {\n if (codesToRetryOn.indexOf(err.status) > -1) {\n retrier.failed(err);\n } else if (err.message === \"Twilsock disconnected\") {\n // Ugly hack. We must make a proper exceptions for twilsock\n retrier.failed(err);\n } else {\n // Fatal error\n retrier.removeAllListeners();\n retrier.cancel();\n reject(err);\n }\n });\n });\n\n retrier.on(\"succeeded\", (result) => {\n resolve(result);\n });\n retrier.on(\"cancelled\", (err) => reject(err));\n retrier.on(\"failed\", (err) => reject(err));\n\n retrier.start();\n });\n }\n\n async get<T>(url: string): Promise<TransportResult<T>> {\n const cacheEntry = this.cache.get(url);\n if (cacheEntry && !this.isExpired(cacheEntry.timestamp)) {\n return cacheEntry.response as TransportResult<T>;\n }\n\n const headers = {};\n const response = await this.executeWithRetry<T>(\n () =>\n this.services.transport.get<T>(\n url,\n headers,\n this.configuration.productId\n ),\n this.configuration.retryWhenThrottled\n );\n this.cache.set(url, { response, timestamp: Date.now() });\n this.pokeTimer();\n return response;\n }\n}\n\nexport { Network };\n","class NotificationTypes {\n static readonly TYPING_INDICATOR = \"twilio.ipmsg.typing_indicator\";\n static readonly NEW_MESSAGE = \"twilio.conversations.new_message\";\n static readonly ADDED_TO_CONVERSATION =\n \"twilio.conversations.added_to_conversation\";\n // static readonly INVITED_TO_CHANNEL = 'twilio.channel.invited_to_channel';\n static readonly REMOVED_FROM_CONVERSATION =\n \"twilio.conversations.removed_from_conversation\";\n static readonly CONSUMPTION_UPDATE = \"twilio.channel.consumption_update\";\n}\n\nexport { NotificationTypes };\n","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"StateMachine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"StateMachine\"] = factory();\n\telse\n\t\troot[\"StateMachine\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(target, sources) {\n var n, source, key;\n for(n = 1 ; n < arguments.length ; n++) {\n source = arguments[n];\n for(key in source) {\n if (source.hasOwnProperty(key))\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0);\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = {\n\n build: function(target, config) {\n var n, max, plugin, plugins = config.plugins;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (plugin.methods)\n mixin(target, plugin.methods);\n if (plugin.properties)\n Object.defineProperties(target, plugin.properties);\n }\n },\n\n hook: function(fsm, name, additional) {\n var n, max, method, plugin,\n plugins = fsm.config.plugins,\n args = [fsm.context];\n\n if (additional)\n args = args.concat(additional)\n\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n]\n method = plugins[n][name]\n if (method)\n method.apply(plugin, args);\n }\n }\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nfunction camelize(label) {\n\n if (label.length === 0)\n return label;\n\n var n, result, word, words = label.split(/[_-]/);\n\n // single word with first character already lowercase, return untouched\n if ((words.length === 1) && (words[0][0].toLowerCase() === words[0][0]))\n return label;\n\n result = words[0].toLowerCase();\n for(n = 1 ; n < words.length ; n++) {\n result = result + words[n].charAt(0).toUpperCase() + words[n].substring(1).toLowerCase();\n }\n\n return result;\n}\n\n//-------------------------------------------------------------------------------------------------\n\ncamelize.prepended = function(prepend, label) {\n label = camelize(label);\n return prepend + label[0].toUpperCase() + label.substring(1);\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = camelize;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2);\n\n//-------------------------------------------------------------------------------------------------\n\nfunction Config(options, StateMachine) {\n\n options = options || {};\n\n this.options = options; // preserving original options can be useful (e.g visualize plugin)\n this.defaults = StateMachine.defaults;\n this.states = [];\n this.transitions = [];\n this.map = {};\n this.lifecycle = this.configureLifecycle();\n this.init = this.configureInitTransition(options.init);\n this.data = this.configureData(options.data);\n this.methods = this.configureMethods(options.methods);\n\n this.map[this.defaults.wildcard] = {};\n\n this.configureTransitions(options.transitions || []);\n\n this.plugins = this.configurePlugins(options.plugins, StateMachine.plugin);\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(Config.prototype, {\n\n addState: function(name) {\n if (!this.map[name]) {\n this.states.push(name);\n this.addStateLifecycleNames(name);\n this.map[name] = {};\n }\n },\n\n addStateLifecycleNames: function(name) {\n this.lifecycle.onEnter[name] = camelize.prepended('onEnter', name);\n this.lifecycle.onLeave[name] = camelize.prepended('onLeave', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n addTransition: function(name) {\n if (this.transitions.indexOf(name) < 0) {\n this.transitions.push(name);\n this.addTransitionLifecycleNames(name);\n }\n },\n\n addTransitionLifecycleNames: function(name) {\n this.lifecycle.onBefore[name] = camelize.prepended('onBefore', name);\n this.lifecycle.onAfter[name] = camelize.prepended('onAfter', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n mapTransition: function(transition) {\n var name = transition.name,\n from = transition.from,\n to = transition.to;\n this.addState(from);\n if (typeof to !== 'function')\n this.addState(to);\n this.addTransition(name);\n this.map[from][name] = transition;\n return transition;\n },\n\n configureLifecycle: function() {\n return {\n onBefore: { transition: 'onBeforeTransition' },\n onAfter: { transition: 'onAfterTransition' },\n onEnter: { state: 'onEnterState' },\n onLeave: { state: 'onLeaveState' },\n on: { transition: 'onTransition' }\n };\n },\n\n configureInitTransition: function(init) {\n if (typeof init === 'string') {\n return this.mapTransition(mixin({}, this.defaults.init, { to: init, active: true }));\n }\n else if (typeof init === 'object') {\n return this.mapTransition(mixin({}, this.defaults.init, init, { active: true }));\n }\n else {\n this.addState(this.defaults.init.from);\n return this.defaults.init;\n }\n },\n\n configureData: function(data) {\n if (typeof data === 'function')\n return data;\n else if (typeof data === 'object')\n return function() { return data; }\n else\n return function() { return {}; }\n },\n\n configureMethods: function(methods) {\n return methods || {};\n },\n\n configurePlugins: function(plugins, builtin) {\n plugins = plugins || [];\n var n, max, plugin;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (typeof plugin === 'function')\n plugins[n] = plugin = plugin()\n if (plugin.configure)\n plugin.configure(this);\n }\n return plugins\n },\n\n configureTransitions: function(transitions) {\n var i, n, transition, from, to, wildcard = this.defaults.wildcard;\n for(n = 0 ; n < transitions.length ; n++) {\n transition = transitions[n];\n from = Array.isArray(transition.from) ? transition.from : [transition.from || wildcard]\n to = transition.to || wildcard;\n for(i = 0 ; i < from.length ; i++) {\n this.mapTransition({ name: transition.name, from: from[i], to: to });\n }\n }\n },\n\n transitionFor: function(state, transition) {\n var wildcard = this.defaults.wildcard;\n return this.map[state][transition] ||\n this.map[wildcard][transition];\n },\n\n transitionsFor: function(state) {\n var wildcard = this.defaults.wildcard;\n return Object.keys(this.map[state]).concat(Object.keys(this.map[wildcard]));\n },\n\n allStates: function() {\n return this.states;\n },\n\n allTransitions: function() {\n return this.transitions;\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = Config;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar mixin = __webpack_require__(0),\n Exception = __webpack_require__(6),\n plugin = __webpack_require__(1),\n UNOBSERVED = [ null, [] ];\n\n//-------------------------------------------------------------------------------------------------\n\nfunction JSM(context, config) {\n this.context = context;\n this.config = config;\n this.state = config.init.from;\n this.observers = [context];\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(JSM.prototype, {\n\n init: function(args) {\n mixin(this.context, this.config.data.apply(this.context, args));\n plugin.hook(this, 'init');\n if (this.config.init.active)\n return this.fire(this.config.init.name, []);\n },\n\n is: function(state) {\n return Array.isArray(state) ? (state.indexOf(this.state) >= 0) : (this.state === state);\n },\n\n isPending: function() {\n return this.pending;\n },\n\n can: function(transition) {\n return !this.isPending() && !!this.seek(transition);\n },\n\n cannot: function(transition) {\n return !this.can(transition);\n },\n\n allStates: function() {\n return this.config.allStates();\n },\n\n allTransitions: function() {\n return this.config.allTransitions();\n },\n\n transitions: function() {\n return this.config.transitionsFor(this.state);\n },\n\n seek: function(transition, args) {\n var wildcard = this.config.defaults.wildcard,\n entry = this.config.transitionFor(this.state, transition),\n to = entry && entry.to;\n if (typeof to === 'function')\n return to.apply(this.context, args);\n else if (to === wildcard)\n return this.state\n else\n return to\n },\n\n fire: function(transition, args) {\n return this.transit(transition, this.state, this.seek(transition, args), args);\n },\n\n transit: function(transition, from, to, args) {\n\n var lifecycle = this.config.lifecycle,\n changed = this.config.options.observeUnchangedState || (from !== to);\n\n if (!to)\n return this.context.onInvalidTransition(transition, from, to);\n\n if (this.isPending())\n return this.context.onPendingTransition(transition, from, to);\n\n this.config.addState(to); // might need to add this state if it's unknown (e.g. conditional transition or goto)\n\n this.beginTransit();\n\n args.unshift({ // this context will be passed to each lifecycle event observer\n transition: transition,\n from: from,\n to: to,\n fsm: this.context\n });\n\n return this.observeEvents([\n this.observersForEvent(lifecycle.onBefore.transition),\n this.observersForEvent(lifecycle.onBefore[transition]),\n changed ? this.observersForEvent(lifecycle.onLeave.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onLeave[from]) : UNOBSERVED,\n this.observersForEvent(lifecycle.on.transition),\n changed ? [ 'doTransit', [ this ] ] : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter[to]) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.on[to]) : UNOBSERVED,\n this.observersForEvent(lifecycle.onAfter.transition),\n this.observersForEvent(lifecycle.onAfter[transition]),\n this.observersForEvent(lifecycle.on[transition])\n ], args);\n },\n\n beginTransit: function() { this.pending = true; },\n endTransit: function(result) { this.pending = false; return result; },\n failTransit: function(result) { this.pending = false; throw result; },\n doTransit: function(lifecycle) { this.state = lifecycle.to; },\n\n observe: function(args) {\n if (args.length === 2) {\n var observer = {};\n observer[args[0]] = args[1];\n this.observers.push(observer);\n }\n else {\n this.observers.push(args[0]);\n }\n },\n\n observersForEvent: function(event) { // TODO: this could be cached\n var n = 0, max = this.observers.length, observer, result = [];\n for( ; n < max ; n++) {\n observer = this.observers[n];\n if (observer[event])\n result.push(observer);\n }\n return [ event, result, true ]\n },\n\n observeEvents: function(events, args, previousEvent, previousResult) {\n if (events.length === 0) {\n return this.endTransit(previousResult === undefined ? true : previousResult);\n }\n\n var event = events[0][0],\n observers = events[0][1],\n pluggable = events[0][2];\n\n args[0].event = event;\n if (event && pluggable && event !== previousEvent)\n plugin.hook(this, 'lifecycle', args);\n\n if (observers.length === 0) {\n events.shift();\n return this.observeEvents(events, args, event, previousResult);\n }\n else {\n var observer = observers.shift(),\n result = observer[event].apply(observer, args);\n if (result && typeof result.then === 'function') {\n return result.then(this.observeEvents.bind(this, events, args, event))\n .catch(this.failTransit.bind(this))\n }\n else if (result === false) {\n return this.endTransit(false);\n }\n else {\n return this.observeEvents(events, args, event, result);\n }\n }\n },\n\n onInvalidTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid in current state\", transition, from, to, this.state);\n },\n\n onPendingTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid while previous transition is still in progress\", transition, from, to, this.state);\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = JSM;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-----------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2),\n plugin = __webpack_require__(1),\n Config = __webpack_require__(3),\n JSM = __webpack_require__(4);\n\n//-----------------------------------------------------------------------------------------------\n\nvar PublicMethods = {\n is: function(state) { return this._fsm.is(state) },\n can: function(transition) { return this._fsm.can(transition) },\n cannot: function(transition) { return this._fsm.cannot(transition) },\n observe: function() { return this._fsm.observe(arguments) },\n transitions: function() { return this._fsm.transitions() },\n allTransitions: function() { return this._fsm.allTransitions() },\n allStates: function() { return this._fsm.allStates() },\n onInvalidTransition: function(t, from, to) { return this._fsm.onInvalidTransition(t, from, to) },\n onPendingTransition: function(t, from, to) { return this._fsm.onPendingTransition(t, from, to) },\n}\n\nvar PublicProperties = {\n state: {\n configurable: false,\n enumerable: true,\n get: function() {\n return this._fsm.state;\n },\n set: function(state) {\n throw Error('use transitions to change state')\n }\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nfunction StateMachine(options) {\n return apply(this || {}, options);\n}\n\nfunction factory() {\n var cstor, options;\n if (typeof arguments[0] === 'function') {\n cstor = arguments[0];\n options = arguments[1] || {};\n }\n else {\n cstor = function() { this._fsm.apply(this, arguments) };\n options = arguments[0] || {};\n }\n var config = new Config(options, StateMachine);\n build(cstor.prototype, config);\n cstor.prototype._fsm.config = config; // convenience access to shared config without needing an instance\n return cstor;\n}\n\n//-------------------------------------------------------------------------------------------------\n\nfunction apply(instance, options) {\n var config = new Config(options, StateMachine);\n build(instance, config);\n instance._fsm();\n return instance;\n}\n\nfunction build(target, config) {\n if ((typeof target !== 'object') || Array.isArray(target))\n throw Error('StateMachine can only be applied to objects');\n plugin.build(target, config);\n Object.defineProperties(target, PublicProperties);\n mixin(target, PublicMethods);\n mixin(target, config.methods);\n config.allTransitions().forEach(function(transition) {\n target[camelize(transition)] = function() {\n return this._fsm.fire(transition, [].slice.call(arguments))\n }\n });\n target._fsm = function() {\n this._fsm = new JSM(this, config);\n this._fsm.init(arguments);\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nStateMachine.version = '3.0.1';\nStateMachine.factory = factory;\nStateMachine.apply = apply;\nStateMachine.defaults = {\n wildcard: '*',\n init: {\n name: 'init',\n from: 'none'\n }\n}\n\n//===============================================================================================\n\nmodule.exports = StateMachine;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(message, transition, from, to, current) {\n this.message = message;\n this.transition = transition;\n this.from = from;\n this.to = to;\n this.current = current;\n}\n\n\n/***/ })\n/******/ ]);\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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","\"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;","\"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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\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).slice(1));\n}\n\nfunction unsafeStringify(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 return 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]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // 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;","\"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 = 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.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = 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 v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\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 = namespace) === null || _namespace === void 0 ? void 0 : _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.unsafeStringify)(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}","\"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;","\"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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\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.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"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;","\"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;","\"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;","\"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.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.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 }; }","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf && !isPrototypeOf.call(TypedArray, C)) {\n throw TypeError('Target is not a typed array constructor');\n } return C;\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n","// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefineAll = require('../internals/redefine-all');\nvar fails = require('../internals/fails');\nvar anInstance = require('../internals/an-instance');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar IEEE754 = require('../internals/ieee754');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar arrayFill = require('../internals/array-fill');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n","var toInteger = require('../internals/to-integer');\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n","var toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar bind = require('../internals/function-bind-context');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isInteger = require('../internals/is-integer');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isInteger(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_CONSTRUCTOR, TypedArrayConstructor);\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://github.com/tc39/proposal-relative-indexing-method\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = toLength(O.length);\n var relativeIndex = toInteger(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\n// eslint-disable-next-line es/no-array-prototype-copywithin -- safe\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $copyWithin = require('../internals/array-copy-within');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $every = require('../internals/array-iteration').every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n","module.exports = function (Constructor, list) {\n var index = 0;\n var length = list.length;\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","var ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar speciesConstructor = require('../internals/species-constructor');\n\nvar TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\n\n// a part of `TypedArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#typedarray-species-create\nmodule.exports = function (originalArray) {\n return aTypedArrayConstructor(speciesConstructor(originalArray, originalArray[TYPED_ARRAY_CONSTRUCTOR]));\n};\n","var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nmodule.exports = function (instance, list) {\n return arrayFromConstructorAndList(typedArraySpeciesConstructor(instance), list);\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $filter = require('../internals/array-iteration').filter;\nvar fromSpeciesAndList = require('../internals/typed-array-from-species-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $find = require('../internals/array-iteration').find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findIndex = require('../internals/array-iteration').findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $includes = require('../internals/array-includes').includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $indexOf = require('../internals/array-includes').indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayIterators = require('../modules/es.array.iterator');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n","'use strict';\n/* eslint-disable es/no-array-prototype-lastindexof -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $lastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $lastIndexOf = require('../internals/array-last-index-of');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $map = require('../internals/array-iteration').map;\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (typedArraySpeciesConstructor(O))(length);\n });\n});\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduce = require('../internals/array-reduce').left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $reduceRight = require('../internals/array-reduce').right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toOffset = require('../internals/to-offset');\nvar toObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = typedArraySpeciesConstructor(this);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $some = require('../internals/array-iteration').some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n","// TODO: use something more complex like timsort?\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n mergeSort(array.slice(0, middle), comparefn),\n mergeSort(array.slice(middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n var result = [];\n\n while (lindex < llength || rindex < rlength) {\n if (lindex < llength && rindex < rlength) {\n result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);\n } else {\n result.push(lindex < llength ? left[lindex++] : right[rindex++]);\n }\n } return result;\n};\n\nmodule.exports = mergeSort;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar aFunction = require('../internals/a-function');\nvar toLength = require('../internals/to-length');\nvar internalSort = require('../internals/array-sort');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && Uint16Array.prototype.sort;\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !fails(function () {\n var array = new Uint16Array(2);\n array.sort(null);\n array.sort({});\n});\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n array.sort(function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n var array = this;\n if (comparefn !== undefined) aFunction(comparefn);\n if (STABLE_SORT) return nativeSort.call(array, comparefn);\n\n aTypedArray(array);\n var arrayLength = toLength(array.length);\n var items = Array(arrayLength);\n var index;\n\n for (index = 0; index < arrayLength; index++) {\n items[index] = array[index];\n }\n\n items = internalSort(array, getSortCompare(comparefn));\n\n for (index = 0; index < arrayLength; index++) {\n array[index] = items[index];\n }\n\n return array;\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar typedArraySpeciesConstructor = require('../internals/typed-array-species-constructor');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n var C = typedArraySpeciesConstructor(O);\n return new C(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n","'use strict';\nvar global = require('../internals/global');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n","'use strict';\nvar exportTypedArrayMethod = require('../internals/array-buffer-view-core').exportTypedArrayMethod;\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n 'use strict';\n\n /** Used to determine if values are of the language type `Object`. */\n var objectTypes = {\n 'function': true,\n 'object': true\n };\n\n /** Used as a reference to the global object. */\n var root = (objectTypes[typeof window] && window) || this;\n\n /** Backup possible global object. */\n var oldRoot = root;\n\n /** Detect free variable `exports`. */\n var freeExports = objectTypes[typeof exports] && exports;\n\n /** Detect free variable `module`. */\n var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n root = freeGlobal;\n }\n\n /**\n * Used as the maximum length of an array-like object.\n * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n * for more details.\n */\n var maxSafeInteger = Math.pow(2, 53) - 1;\n\n /** Regular expression to detect Opera. */\n var reOpera = /\\bOpera/;\n\n /** Possible global object. */\n var thisBinding = this;\n\n /** Used for native method references. */\n var objectProto = Object.prototype;\n\n /** Used to check for own properties of an object. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to resolve the internal `[[Class]]` of values. */\n var toString = objectProto.toString;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Capitalizes a string value.\n *\n * @private\n * @param {string} string The string to capitalize.\n * @returns {string} The capitalized string.\n */\n function capitalize(string) {\n string = String(string);\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n /**\n * A utility function to clean up the OS name.\n *\n * @private\n * @param {string} os The OS name to clean up.\n * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n * @param {string} [label] A label for the OS.\n */\n function cleanupOS(os, pattern, label) {\n // Platform tokens are defined at:\n // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n var data = {\n '10.0': '10',\n '6.4': '10 Technical Preview',\n '6.3': '8.1',\n '6.2': '8',\n '6.1': 'Server 2008 R2 / 7',\n '6.0': 'Server 2008 / Vista',\n '5.2': 'Server 2003 / XP 64-bit',\n '5.1': 'XP',\n '5.01': '2000 SP1',\n '5.0': '2000',\n '4.0': 'NT',\n '4.90': 'ME'\n };\n // Detect Windows version from platform tokens.\n if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n (data = data[/[\\d.]+$/.exec(os)])) {\n os = 'Windows ' + data;\n }\n // Correct character case and cleanup string.\n os = String(os);\n\n if (pattern && label) {\n os = os.replace(RegExp(pattern, 'i'), label);\n }\n\n os = format(\n os.replace(/ ce$/i, ' CE')\n .replace(/\\bhpw/i, 'web')\n .replace(/\\bMacintosh\\b/, 'Mac OS')\n .replace(/_PowerPC\\b/i, ' OS')\n .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n .replace(/\\bMac (OS X)\\b/, '$1')\n .replace(/\\/(\\d)/, ' $1')\n .replace(/_/g, '.')\n .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n .replace(/\\b(Windows Phone) OS\\b/, '$1')\n .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n .split(' on ')[0]\n );\n\n return os;\n }\n\n /**\n * An iteration utility for arrays and objects.\n *\n * @private\n * @param {Array|Object} object The object to iterate over.\n * @param {Function} callback The function called per iteration.\n */\n function each(object, callback) {\n var index = -1,\n length = object ? object.length : 0;\n\n if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n while (++index < length) {\n callback(object[index], index, object);\n }\n } else {\n forOwn(object, callback);\n }\n }\n\n /**\n * Trim and conditionally capitalize string values.\n *\n * @private\n * @param {string} string The string to format.\n * @returns {string} The formatted string.\n */\n function format(string) {\n string = trim(string);\n return /^(?:webOS|i(?:OS|P))/.test(string)\n ? string\n : capitalize(string);\n }\n\n /**\n * Iterates over an object's own properties, executing the `callback` for each.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} callback The function executed per own property.\n */\n function forOwn(object, callback) {\n for (var key in object) {\n if (hasOwnProperty.call(object, key)) {\n callback(object[key], key, object);\n }\n }\n }\n\n /**\n * Gets the internal `[[Class]]` of a value.\n *\n * @private\n * @param {*} value The value.\n * @returns {string} The `[[Class]]`.\n */\n function getClassOf(value) {\n return value == null\n ? capitalize(value)\n : toString.call(value).slice(8, -1);\n }\n\n /**\n * Host objects can return type values that are different from their actual\n * data type. The objects we are concerned with usually return non-primitive\n * types of \"object\", \"function\", or \"unknown\".\n *\n * @private\n * @param {*} object The owner of the property.\n * @param {string} property The property to check.\n * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n */\n function isHostType(object, property) {\n var type = object != null ? typeof object[property] : 'number';\n return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n (type == 'object' ? !!object[property] : true);\n }\n\n /**\n * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n *\n * @private\n * @param {string} string The string to qualify.\n * @returns {string} The qualified string.\n */\n function qualify(string) {\n return String(string).replace(/([ -])(?!$)/g, '$1?');\n }\n\n /**\n * A bare-bones `Array#reduce` like utility function.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function called per iteration.\n * @returns {*} The accumulated result.\n */\n function reduce(array, callback) {\n var accumulator = null;\n each(array, function(value, index) {\n accumulator = callback(accumulator, value, index, array);\n });\n return accumulator;\n }\n\n /**\n * Removes leading and trailing whitespace from a string.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} The trimmed string.\n */\n function trim(string) {\n return String(string).replace(/^ +| +$/g, '');\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a new platform object.\n *\n * @memberOf platform\n * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n * context object.\n * @returns {Object} A platform object.\n */\n function parse(ua) {\n\n /** The environment context object. */\n var context = root;\n\n /** Used to flag when a custom context is provided. */\n var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n // Juggle arguments.\n if (isCustomContext) {\n context = ua;\n ua = null;\n }\n\n /** Browser navigator object. */\n var nav = context.navigator || {};\n\n /** Browser user agent string. */\n var userAgent = nav.userAgent || '';\n\n ua || (ua = userAgent);\n\n /** Used to flag when `thisBinding` is the [ModuleScope]. */\n var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n /** Used to detect if browser is like Chrome. */\n var likeChrome = isCustomContext\n ? !!nav.likeChrome\n : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n /** Internal `[[Class]]` value shortcuts. */\n var objectClass = 'Object',\n airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n enviroClass = isCustomContext ? objectClass : 'Environment',\n javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n /** Detect Java environments. */\n var java = /\\bJava/.test(javaClass) && context.java;\n\n /** Detect Rhino. */\n var rhino = java && getClassOf(context.environment) == enviroClass;\n\n /** A character to represent alpha. */\n var alpha = java ? 'a' : '\\u03b1';\n\n /** A character to represent beta. */\n var beta = java ? 'b' : '\\u03b2';\n\n /** Browser document object. */\n var doc = context.document || {};\n\n /**\n * Detect Opera browser (Presto-based).\n * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n */\n var opera = context.operamini || context.opera;\n\n /** Opera `[[Class]]`. */\n var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n ? operaClass\n : (opera = null);\n\n /*------------------------------------------------------------------------*/\n\n /** Temporary variable used over the script's lifetime. */\n var data;\n\n /** The CPU architecture. */\n var arch = ua;\n\n /** Platform description array. */\n var description = [];\n\n /** Platform alpha/beta indicator. */\n var prerelease = null;\n\n /** A flag to indicate that environment features should be used to resolve the platform. */\n var useFeatures = ua == userAgent;\n\n /** The browser/environment version. */\n var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n /** A flag to indicate if the OS ends with \"/ Version\" */\n var isSpecialCasedOS;\n\n /* Detectable layout engines (order is important). */\n var layout = getLayout([\n { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n 'Trident',\n { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n 'iCab',\n 'Presto',\n 'NetFront',\n 'Tasman',\n 'KHTML',\n 'Gecko'\n ]);\n\n /* Detectable browser names (order is important). */\n var name = getName([\n 'Adobe AIR',\n 'Arora',\n 'Avant Browser',\n 'Breach',\n 'Camino',\n 'Electron',\n 'Epiphany',\n 'Fennec',\n 'Flock',\n 'Galeon',\n 'GreenBrowser',\n 'iCab',\n 'Iceweasel',\n 'K-Meleon',\n 'Konqueror',\n 'Lunascape',\n 'Maxthon',\n { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n 'Midori',\n 'Nook Browser',\n 'PaleMoon',\n 'PhantomJS',\n 'Raven',\n 'Rekonq',\n 'RockMelt',\n { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n 'SeaMonkey',\n { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Sleipnir',\n 'SlimBrowser',\n { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n 'Sunrise',\n 'Swiftfox',\n 'Vivaldi',\n 'Waterfox',\n 'WebPositive',\n { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n 'Opera Mini',\n { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n 'Opera',\n { 'label': 'Opera', 'pattern': 'OPR' },\n 'Chromium',\n 'Chrome',\n { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n { 'label': 'IE', 'pattern': 'IEMobile' },\n { 'label': 'IE', 'pattern': 'MSIE' },\n 'Safari'\n ]);\n\n /* Detectable products (order is important). */\n var product = getProduct([\n { 'label': 'BlackBerry', 'pattern': 'BB10' },\n 'BlackBerry',\n { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n 'Google TV',\n 'Lumia',\n 'iPad',\n 'iPod',\n 'iPhone',\n 'Kindle',\n { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n 'Nexus',\n 'Nook',\n 'PlayBook',\n 'PlayStation Vita',\n 'PlayStation',\n 'TouchPad',\n 'Transformer',\n { 'label': 'Wii U', 'pattern': 'WiiU' },\n 'Wii',\n 'Xbox One',\n { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n 'Xoom'\n ]);\n\n /* Detectable manufacturers. */\n var manufacturer = getManufacturer({\n 'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n 'Alcatel': {},\n 'Archos': {},\n 'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n 'Asus': { 'Transformer': 1 },\n 'Barnes & Noble': { 'Nook': 1 },\n 'BlackBerry': { 'PlayBook': 1 },\n 'Google': { 'Google TV': 1, 'Nexus': 1 },\n 'HP': { 'TouchPad': 1 },\n 'HTC': {},\n 'Huawei': {},\n 'Lenovo': {},\n 'LG': {},\n 'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n 'Motorola': { 'Xoom': 1 },\n 'Nintendo': { 'Wii U': 1, 'Wii': 1 },\n 'Nokia': { 'Lumia': 1 },\n 'Oppo': {},\n 'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n 'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n 'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n });\n\n /* Detectable operating systems (order is important). */\n var os = getOS([\n 'Windows Phone',\n 'KaiOS',\n 'Android',\n 'CentOS',\n { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n 'Debian',\n { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n 'Fedora',\n 'FreeBSD',\n 'Gentoo',\n 'Haiku',\n 'Kubuntu',\n 'Linux Mint',\n 'OpenBSD',\n 'Red Hat',\n 'SuSE',\n 'Ubuntu',\n 'Xubuntu',\n 'Cygwin',\n 'Symbian OS',\n 'hpwOS',\n 'webOS ',\n 'webOS',\n 'Tablet OS',\n 'Tizen',\n 'Linux',\n 'Mac OS X',\n 'Macintosh',\n 'Mac',\n 'Windows 98;',\n 'Windows '\n ]);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Picks the layout engine from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected layout engine.\n */\n function getLayout(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the manufacturer from an array of guesses.\n *\n * @private\n * @param {Array} guesses An object of guesses.\n * @returns {null|string} The detected manufacturer.\n */\n function getManufacturer(guesses) {\n return reduce(guesses, function(result, value, key) {\n // Lookup the manufacturer by product or scan the UA for the manufacturer.\n return result || (\n value[product] ||\n value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n ) && key;\n });\n }\n\n /**\n * Picks the browser name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected browser name.\n */\n function getName(guesses) {\n return reduce(guesses, function(result, guess) {\n return result || RegExp('\\\\b' + (\n guess.pattern || qualify(guess)\n ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n });\n }\n\n /**\n * Picks the OS name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected OS name.\n */\n function getOS(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n )) {\n result = cleanupOS(result, pattern, guess.label || guess);\n }\n return result;\n });\n }\n\n /**\n * Picks the product name from an array of guesses.\n *\n * @private\n * @param {Array} guesses An array of guesses.\n * @returns {null|string} The detected product name.\n */\n function getProduct(guesses) {\n return reduce(guesses, function(result, guess) {\n var pattern = guess.pattern || qualify(guess);\n if (!result && (result =\n RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n )) {\n // Split by forward slash and append product version if needed.\n if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n result[0] += ' ' + result[1];\n }\n // Correct character case and cleanup string.\n guess = guess.label || guess;\n result = format(result[0]\n .replace(RegExp(pattern, 'i'), guess)\n .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n }\n return result;\n });\n }\n\n /**\n * Resolves the version using an array of UA patterns.\n *\n * @private\n * @param {Array} patterns An array of UA patterns.\n * @returns {null|string} The detected version.\n */\n function getVersion(patterns) {\n return reduce(patterns, function(result, pattern) {\n return result || (RegExp(pattern +\n '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n });\n }\n\n /**\n * Returns `platform.description` when the platform object is coerced to a string.\n *\n * @name toString\n * @memberOf platform\n * @returns {string} Returns `platform.description` if available, else an empty string.\n */\n function toStringPlatform() {\n return this.description || '';\n }\n\n /*------------------------------------------------------------------------*/\n\n // Convert layout to an array so we can add extra details.\n layout && (layout = [layout]);\n\n // Detect Android products.\n // Browsers on Android devices typically provide their product IDS after \"Android;\"\n // up to \"Build\" or \") AppleWebKit\".\n // Example:\n // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n if (/\\bAndroid\\b/.test(os) && !product &&\n (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n product = trim(data[1])\n // Replace any language codes (eg. \"en-US\").\n .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n || null;\n }\n // Detect product names that contain their manufacturer's name.\n if (manufacturer && !product) {\n product = getProduct([manufacturer]);\n } else if (manufacturer && product) {\n product = product\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n }\n // Clean up Google TV.\n if ((data = /\\bGoogle TV\\b/.exec(product))) {\n product = data[0];\n }\n // Detect simulators.\n if (/\\bSimulator\\b/i.test(ua)) {\n product = (product ? product + ' ' : '') + 'Simulator';\n }\n // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n description.push('running in Turbo/Uncompressed mode');\n }\n // Detect IE Mobile 11.\n if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n data = parse(ua.replace(/like iPhone OS/, ''));\n manufacturer = data.manufacturer;\n product = data.product;\n }\n // Detect iOS.\n else if (/^iP/.test(product)) {\n name || (name = 'Safari');\n os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n ? ' ' + data[1].replace(/_/g, '.')\n : '');\n }\n // Detect Kubuntu.\n else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n os = 'Kubuntu';\n }\n // Detect Android browsers.\n else if ((manufacturer && manufacturer != 'Google' &&\n ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n name = 'Android Browser';\n os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n }\n // Detect Silk desktop/accelerated modes.\n else if (name == 'Silk') {\n if (!/\\bMobi/i.test(ua)) {\n os = 'Android';\n description.unshift('desktop mode');\n }\n if (/Accelerated *= *true/i.test(ua)) {\n description.unshift('accelerated');\n }\n }\n // Detect UC Browser speed mode.\n else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n description.push('speed mode');\n }\n // Detect PaleMoon identifying as Firefox.\n else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n description.push('identifying as Firefox ' + data[1]);\n }\n // Detect Firefox OS and products running Firefox.\n else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n os || (os = 'Firefox OS');\n product || (product = data[1]);\n }\n // Detect false positives for Firefox/Safari.\n else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n // Escape the `/` for Firefox 1.\n if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n // Clear name of false positives.\n name = null;\n }\n // Reassign a generic name.\n if ((data = product || manufacturer || os) &&\n (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n }\n }\n // Add Chrome version to description for Electron.\n else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n description.push('Chromium ' + data);\n }\n // Detect non-Opera (Presto-based) versions (order is important).\n if (!version) {\n version = getVersion([\n '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n 'Version',\n qualify(name),\n '(?:Firefox|Minefield|NetFront)'\n ]);\n }\n // Detect stubborn layout engines.\n if ((data =\n layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n )) {\n layout = [data];\n }\n // Detect Windows Phone 7 desktop mode.\n if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n name += ' Mobile';\n os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n description.unshift('desktop mode');\n }\n // Detect Windows Phone 8.x desktop mode.\n else if (/\\bWPDesktop\\b/i.test(ua)) {\n name = 'IE Mobile';\n os = 'Windows Phone 8.x';\n description.unshift('desktop mode');\n version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n }\n // Detect IE 11 identifying as other browsers.\n else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n if (name) {\n description.push('identifying as ' + name + (version ? ' ' + version : ''));\n }\n name = 'IE';\n version = data[1];\n }\n // Leverage environment features.\n if (useFeatures) {\n // Detect server-side environments.\n // Rhino has a global function while others have a global object.\n if (isHostType(context, 'global')) {\n if (java) {\n data = java.lang.System;\n arch = data.getProperty('os.arch');\n os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n }\n if (rhino) {\n try {\n version = context.require('ringo/engine').version.join('.');\n name = 'RingoJS';\n } catch(e) {\n if ((data = context.system) && data.global.system == context.system) {\n name = 'Narwhal';\n os || (os = data[0].os || null);\n }\n }\n if (!name) {\n name = 'Rhino';\n }\n }\n else if (\n typeof context.process == 'object' && !context.process.browser &&\n (data = context.process)\n ) {\n if (typeof data.versions == 'object') {\n if (typeof data.versions.electron == 'string') {\n description.push('Node ' + data.versions.node);\n name = 'Electron';\n version = data.versions.electron;\n } else if (typeof data.versions.nw == 'string') {\n description.push('Chromium ' + version, 'Node ' + data.versions.node);\n name = 'NW.js';\n version = data.versions.nw;\n }\n }\n if (!name) {\n name = 'Node.js';\n arch = data.arch;\n os = data.platform;\n version = /[\\d.]+/.exec(data.version);\n version = version ? version[0] : null;\n }\n }\n }\n // Detect Adobe AIR.\n else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n name = 'Adobe AIR';\n os = data.flash.system.Capabilities.os;\n }\n // Detect PhantomJS.\n else if (getClassOf((data = context.phantom)) == phantomClass) {\n name = 'PhantomJS';\n version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n }\n // Detect IE compatibility modes.\n else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n // We're in compatibility mode when the Trident version + 4 doesn't\n // equal the document mode.\n version = [version, doc.documentMode];\n if ((data = +data[1] + 4) != version[1]) {\n description.push('IE ' + version[1] + ' mode');\n layout && (layout[1] = '');\n version[1] = data;\n }\n version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n }\n // Detect IE 11 masking as other browsers.\n else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n description.push('masking as ' + name + ' ' + version);\n name = 'IE';\n version = '11.0';\n layout = ['Trident'];\n os = 'Windows';\n }\n os = os && format(os);\n }\n // Detect prerelease phases.\n if (version && (data =\n /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n /\\bMinefield\\b/i.test(ua) && 'a'\n )) {\n prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n version = version.replace(RegExp(data + '\\\\+?$'), '') +\n (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n }\n // Detect Firefox Mobile.\n if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n name = 'Firefox Mobile';\n }\n // Obscure Maxthon's unreliable version.\n else if (name == 'Maxthon' && version) {\n version = version.replace(/\\.[\\d.]+/, '.x');\n }\n // Detect Xbox 360 and Xbox One.\n else if (/\\bXbox\\b/i.test(product)) {\n if (product == 'Xbox 360') {\n os = null;\n }\n if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n description.unshift('mobile mode');\n }\n }\n // Add mobile postfix.\n else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n (os == 'Windows CE' || /Mobi/i.test(ua))) {\n name += ' Mobile';\n }\n // Detect IE platform preview.\n else if (name == 'IE' && useFeatures) {\n try {\n if (context.external === null) {\n description.unshift('platform preview');\n }\n } catch(e) {\n description.unshift('embedded');\n }\n }\n // Detect BlackBerry OS version.\n // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n version\n )) {\n data = [data, /BB10/.test(ua)];\n os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n version = null;\n }\n // Detect Opera identifying/masking itself as another browser.\n // http://www.opera.com/support/kb/view/843/\n else if (this != forOwn && product != 'Wii' && (\n (useFeatures && opera) ||\n (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n (name == 'IE' && (\n (os && !/^Win/.test(os) && version > 5.5) ||\n /\\bWindows XP\\b/.test(os) && version > 8 ||\n version == 8 && !/\\bTrident\\b/.test(ua)\n ))\n ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n // When \"identifying\", the UA contains both Opera and the other browser's name.\n data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n if (reOpera.test(name)) {\n if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n os = null;\n }\n data = 'identify' + data;\n }\n // When \"masking\", the UA contains only the other browser's name.\n else {\n data = 'mask' + data;\n if (operaClass) {\n name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n } else {\n name = 'Opera';\n }\n if (/\\bIE\\b/.test(data)) {\n os = null;\n }\n if (!useFeatures) {\n version = null;\n }\n }\n layout = ['Presto'];\n description.push(data);\n }\n // Detect WebKit Nightly and approximate Chrome/Safari versions.\n if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n // Correct build number for numeric comparison.\n // (e.g. \"532.5\" becomes \"532.05\")\n data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n // Nightly builds are postfixed with a \"+\".\n if (name == 'Safari' && data[1].slice(-1) == '+') {\n name = 'WebKit Nightly';\n prerelease = 'alpha';\n version = data[1].slice(0, -1);\n }\n // Clear incorrect browser versions.\n else if (version == data[1] ||\n version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n version = null;\n }\n // Use the full Chrome version when available.\n data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n // Detect Blink layout engine.\n if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n layout = ['Blink'];\n }\n // Detect JavaScriptCore.\n // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n if (!useFeatures || (!likeChrome && !data[1])) {\n layout && (layout[1] = 'like Safari');\n data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n } else {\n layout && (layout[1] = 'like Chrome');\n data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n }\n // Add the postfix of \".x\" or \"+\" for approximate versions.\n layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n // Obscure version for some Safari 1-2 releases.\n if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n version = data;\n } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n description.unshift('headless');\n }\n }\n // Detect Opera desktop modes.\n if (name == 'Opera' && (data = /\\bzbov|zvav$/.exec(os))) {\n name += ' ';\n description.unshift('desktop mode');\n if (data == 'zvav') {\n name += 'Mini';\n version = null;\n } else {\n name += 'Mobile';\n }\n os = os.replace(RegExp(' *' + data + '$'), '');\n }\n // Detect Chrome desktop mode.\n else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n description.unshift('desktop mode');\n name = 'Chrome Mobile';\n version = null;\n\n if (/\\bOS X\\b/.test(os)) {\n manufacturer = 'Apple';\n os = 'iOS 4.3+';\n } else {\n os = null;\n }\n }\n // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n version = getVersion('Chrome');\n }\n // Strip incorrect OS versions.\n if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n ua.indexOf('/' + data + '-') > -1) {\n os = trim(os.replace(data, ''));\n }\n // Ensure OS does not include the browser name.\n if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n }\n // Add layout engine.\n if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n /Browser|Lunascape|Maxthon/.test(name) ||\n name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n // Don't add layout details to description if they are falsey.\n (data = layout[layout.length - 1]) && description.push(data);\n }\n // Combine contextual information.\n if (description.length) {\n description = ['(' + description.join('; ') + ')'];\n }\n // Append manufacturer to description.\n if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n description.push('on ' + manufacturer);\n }\n // Append product to description.\n if (product) {\n description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n }\n // Parse the OS into an object.\n if (os) {\n data = / ([\\d.+]+)$/.exec(os);\n isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n os = {\n 'architecture': 32,\n 'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n 'version': data ? data[1] : null,\n 'toString': function() {\n var version = this.version;\n return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n }\n };\n }\n // Add browser/OS architecture.\n if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n if (os) {\n os.architecture = 64;\n os.family = os.family.replace(RegExp(' *' + data), '');\n }\n if (\n name && (/\\bWOW64\\b/i.test(ua) ||\n (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n ) {\n description.unshift('32-bit');\n }\n }\n // Chrome 39 and above on OS X is always 64-bit.\n else if (\n os && /^OS X/.test(os.family) &&\n name == 'Chrome' && parseFloat(version) >= 39\n ) {\n os.architecture = 64;\n }\n\n ua || (ua = null);\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The platform object.\n *\n * @name platform\n * @type Object\n */\n var platform = {};\n\n /**\n * The platform description.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.description = ua;\n\n /**\n * The name of the browser's layout engine.\n *\n * The list of common layout engines include:\n * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.layout = layout && layout[0];\n\n /**\n * The name of the product's manufacturer.\n *\n * The list of manufacturers include:\n * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n * \"Nokia\", \"Samsung\" and \"Sony\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.manufacturer = manufacturer;\n\n /**\n * The name of the browser/environment.\n *\n * The list of common browser names include:\n * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n * \"Opera Mini\" and \"Opera\"\n *\n * Mobile versions of some browsers have \"Mobile\" appended to their name:\n * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.name = name;\n\n /**\n * The alpha/beta release indicator.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.prerelease = prerelease;\n\n /**\n * The name of the product hosting the browser.\n *\n * The list of common products include:\n *\n * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n *\n * @memberOf platform\n * @type string|null\n */\n platform.product = product;\n\n /**\n * The browser's user agent string.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.ua = ua;\n\n /**\n * The browser/environment version.\n *\n * @memberOf platform\n * @type string|null\n */\n platform.version = name && version;\n\n /**\n * The name of the operating system.\n *\n * @memberOf platform\n * @type Object\n */\n platform.os = os || {\n\n /**\n * The CPU architecture the OS is built for.\n *\n * @memberOf platform.os\n * @type number|null\n */\n 'architecture': null,\n\n /**\n * The family of the OS.\n *\n * Common values include:\n * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'family': null,\n\n /**\n * The version of the OS.\n *\n * @memberOf platform.os\n * @type string|null\n */\n 'version': null,\n\n /**\n * Returns the OS string.\n *\n * @memberOf platform.os\n * @returns {string} The OS string.\n */\n 'toString': function() { return 'null'; }\n };\n\n platform.parse = parse;\n platform.toString = toStringPlatform;\n\n if (platform.version) {\n description.unshift(version);\n }\n if (platform.name) {\n description.unshift(name);\n }\n if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n description.push(product ? '(' + os + ')' : 'on ' + os);\n }\n if (description.length) {\n platform.description = description.join(' ');\n }\n return platform;\n }\n\n /*--------------------------------------------------------------------------*/\n\n // Export platform.\n var platform = parse();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose platform on the global object to prevent errors when platform is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n root.platform = platform;\n\n // Define as an anonymous module so platform can be aliased through path mapping.\n define(function() {\n return platform;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n else if (freeExports && freeModule) {\n // Export for CommonJS support.\n forOwn(platform, function(value, key) {\n freeExports[key] = value;\n });\n }\n else {\n // Export to the global object.\n root.platform = platform;\n }\n}.call(this));\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar nativeSort = test.sort;\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aFunction(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort.call(array) : nativeSort.call(array, comparefn);\n\n var items = [];\n var arrayLength = toLength(array.length);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) items.push(array[index]);\n }\n\n items = internalSort(items, getSortCompare(comparefn));\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","/*\n@license\nThe following license applies to all parts of this software except as\ndocumented below.\n\n Copyright (c) 2016, Twilio, inc.\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the\n distribution.\n\n 3. Neither the name of Twilio nor the names of its contributors may\n be used to endorse or promote products derived from this software\n without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nThis software includes loglevel under the following license.\n\n Copyright (c) 2013 Tim Perry\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n\nThis software includes Backoff library under the following license\n\n Copyright (C) 2012 Mathieu Turcotte\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of\n this software and associated documentation files (the \"Software\"), to deal in\n the Software without restriction, including without limitation the rights to\n use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n of the Software, and to permit persons to whom the Software is furnished to do\n so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n 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 OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\nThis software includes Event-to-Promise library under the following license\n\n Copyright (c) 2014, Julien Fontanet <julien.fontanet@isonoe.net>.\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n\n*/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nrequire('core-js/modules/es.object.keys.js');\nrequire('core-js/modules/es.symbol.js');\nrequire('core-js/modules/es.array.filter.js');\nrequire('core-js/modules/es.object.get-own-property-descriptor.js');\nrequire('core-js/modules/web.dom-collections.for-each.js');\nrequire('core-js/modules/es.object.get-own-property-descriptors.js');\nrequire('core-js/modules/es.reflect.to-string-tag.js');\nrequire('core-js/modules/es.reflect.construct.js');\nvar _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nrequire('core-js/modules/es.array.map.js');\nrequire('core-js/modules/es.object.to-string.js');\nrequire('core-js/modules/es.promise.js');\nvar _regeneratorRuntime = require('@babel/runtime/regenerator');\nvar _typeof = require('@babel/runtime/helpers/typeof');\nvar declarativeTypeValidator = require('@twilio/declarative-type-validator');\nvar twilsock = require('twilsock');\nrequire('core-js/modules/es.array.join.js');\nvar _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');\nrequire('core-js/modules/es.function.name.js');\nrequire('core-js/modules/es.array.concat.js');\nrequire('core-js/modules/es.json.stringify.js');\nrequire('core-js/modules/es.array.includes.js');\nrequire('core-js/modules/es.array.from.js');\nrequire('core-js/modules/es.string.iterator.js');\nvar loglevelLog = require('loglevel');\nrequire('core-js/modules/es.array.slice.js');\nrequire('core-js/modules/es.regexp.test.js');\nrequire('core-js/modules/es.symbol.description.js');\nrequire('core-js/modules/es.symbol.iterator.js');\nvar _slicedToArray = require('@babel/runtime/helpers/slicedToArray');\nrequire('core-js/modules/es.array.iterator.js');\nrequire('core-js/modules/es.map.js');\nrequire('core-js/modules/web.dom-collections.iterator.js');\nrequire('core-js/modules/es.object.assign.js');\nrequire('core-js/modules/es.regexp.exec.js');\nrequire('core-js/modules/es.string.match.js');\nvar operationRetrier = require('@twilio/operation-retrier');\nrequire('core-js/modules/es.string.replace.js');\nvar uuid = require('uuid');\nvar _get = require('@babel/runtime/helpers/get');\nrequire('core-js/modules/es.number.constructor.js');\nvar replayEventEmitter = require('@twilio/replay-event-emitter');\nvar _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');\nrequire('core-js/modules/es.array.sort.js');\nvar platform = require('platform');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar _wrapNativeSuper__default = /*#__PURE__*/_interopDefaultLegacy(_wrapNativeSuper);\nvar loglevelLog__namespace = /*#__PURE__*/_interopNamespace(loglevelLog);\nvar _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\nvar uuid__namespace = /*#__PURE__*/_interopNamespace(uuid);\nvar _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);\nvar _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);\nvar platform__namespace = /*#__PURE__*/_interopNamespace(platform);\n\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof__default[\"default\"](Reflect)) === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nfunction __metadata(metadataKey, metadataValue) {\n if ((typeof Reflect === \"undefined\" ? \"undefined\" : _typeof__default[\"default\"](Reflect)) === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\n/**\n * Construct URI with query parameters\n */\nvar UriBuilder = /*#__PURE__*/function () {\n function UriBuilder(base) {\n _classCallCheck__default[\"default\"](this, UriBuilder);\n\n this.base = base;\n this.args = new Array();\n this.paths = new Array();\n }\n\n _createClass__default[\"default\"](UriBuilder, [{\n key: \"pathSegment\",\n value: function pathSegment(name) {\n this.paths.push(encodeURIComponent(name));\n return this;\n }\n }, {\n key: \"queryParam\",\n value: function queryParam(name, value) {\n if (typeof value !== 'undefined') {\n this.args.push(encodeURIComponent(name) + '=' + encodeURIComponent(value));\n }\n\n return this;\n }\n }, {\n key: \"build\",\n value: function build() {\n var result = this.base;\n\n if (this.paths.length) {\n result += '/' + this.paths.join('/');\n }\n\n if (this.args.length) {\n result += '?' + this.args.join('&');\n }\n\n return result;\n }\n }]);\n\n return UriBuilder;\n}();\n\nfunction _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$7() { 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\n/**\n * Generic SyncLibrary error class\n */\nvar SyncError = /*#__PURE__*/function (_Error) {\n _inherits__default[\"default\"](SyncError, _Error);\n\n var _super = _createSuper$7(SyncError);\n\n function SyncError(message) {\n var _this;\n\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n _classCallCheck__default[\"default\"](this, SyncError);\n\n _this = _super.call(this);\n _this.name = _this.constructor.name;\n _this.message = \"\".concat(message, \" (status: \").concat(status, \", code: \").concat(code, \")\");\n _this.status = status;\n _this.code = code;\n return _this;\n }\n\n return _createClass__default[\"default\"](SyncError);\n}( /*#__PURE__*/_wrapNativeSuper__default[\"default\"](Error));\n\nvar SyncNetworkError = /*#__PURE__*/function (_SyncError) {\n _inherits__default[\"default\"](SyncNetworkError, _SyncError);\n\n var _super2 = _createSuper$7(SyncNetworkError);\n\n function SyncNetworkError(message) {\n var _this2;\n\n var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var code = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var body = arguments.length > 3 ? arguments[3] : undefined;\n\n _classCallCheck__default[\"default\"](this, SyncNetworkError);\n\n _this2 = _super2.call(this, message, status, code);\n _this2.body = body;\n return _this2;\n }\n\n return _createClass__default[\"default\"](SyncNetworkError);\n}(SyncError);\n\n/**\n * Deep-clone an object. Note that this does not work on object containing\n * functions.\n * @param {object} obj - the object to deep-clone\n * @return {object}\n */\n\nfunction deepClone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\nfunction validatePageSize(pageSize) {\n var validPageSize = pageSize === undefined || isPositiveInteger(pageSize);\n\n if (!validPageSize) {\n throw new SyncError(\"Invalid pageSize parameter. Expected a positive integer, was '\".concat(pageSize, \"'.\"), 400, 20007);\n }\n}\n\nfunction isInteger(number) {\n return !isNaN(parseInt(number)) && isFinite(number);\n}\n\nfunction isPositiveInteger(number) {\n return isInteger(number) && number > 0;\n}\n\nvar log = loglevelLog__namespace.getLogger('twilio-sync'); // twilio-sync is used by Flex SDK. Please DO NOT change\n\nfunction prepareLine(prefix, args) {\n return [\"\".concat(new Date().toISOString(), \" Sync \").concat(prefix, \":\")].concat(Array.from(args));\n}\n\nvar log$1 = {\n setLevel: function setLevel(level) {\n log.setLevel(level);\n },\n trace: function trace() {\n if (log.getLevel() == log.levels.TRACE) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n log.debug.apply(null, prepareLine('T', args));\n }\n },\n debug: function debug() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n log.debug.apply(null, prepareLine('D', args));\n },\n info: function info() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n log.info.apply(null, prepareLine('I', args));\n },\n warn: function warn() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n log.warn.apply(null, prepareLine('W', args));\n },\n error: function error() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n log.error.apply(null, prepareLine('E', args));\n }\n};\n\nvar SUBSCRIPTIONS_PATH = '/v4/Subscriptions';\nvar MAPS_PATH = '/v3/Maps';\nvar LISTS_PATH = '/v3/Lists';\nvar DOCUMENTS_PATH = '/v3/Documents';\nvar STREAMS_PATH = '/v3/Streams';\nvar INSIGHTS_PATH = '/v3/Insights';\n\nfunction getWithDefault(container, key, defaultValue) {\n if (container && typeof container[key] !== 'undefined') {\n return container[key];\n }\n\n return defaultValue;\n}\n/**\n * Settings container for Sync library\n */\n\n\nvar Configuration = /*#__PURE__*/function () {\n /**\n * @param {Object} options\n */\n function Configuration() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck__default[\"default\"](this, Configuration);\n\n var region = options.region || 'us1';\n var defaultCdsUrl = \"https://cds.\".concat(region, \".twilio.com\");\n var baseUri = options.cdsUri || defaultCdsUrl;\n this.settings = {\n subscriptionsUri: baseUri + SUBSCRIPTIONS_PATH,\n documentsUri: baseUri + DOCUMENTS_PATH,\n listsUri: baseUri + LISTS_PATH,\n mapsUri: baseUri + MAPS_PATH,\n streamsUri: baseUri + STREAMS_PATH,\n insightsUri: baseUri + INSIGHTS_PATH,\n sessionStorageEnabled: getWithDefault(options.Sync, 'enableSessionStorage', true),\n productId: options.productId\n };\n }\n\n _createClass__default[\"default\"](Configuration, [{\n key: \"subscriptionsUri\",\n get: function get() {\n return this.settings.subscriptionsUri;\n }\n }, {\n key: \"documentsUri\",\n get: function get() {\n return this.settings.documentsUri;\n }\n }, {\n key: \"listsUri\",\n get: function get() {\n return this.settings.listsUri;\n }\n }, {\n key: \"mapsUri\",\n get: function get() {\n return this.settings.mapsUri;\n }\n }, {\n key: \"streamsUri\",\n get: function get() {\n return this.settings.streamsUri;\n }\n }, {\n key: \"insightsUri\",\n get: function get() {\n return this.settings.insightsUri;\n }\n }, {\n key: \"backoffConfig\",\n get: function get() {\n return this.settings.backoffConfig || {};\n }\n }, {\n key: \"sessionStorageEnabled\",\n get: function get() {\n return this.settings.sessionStorageEnabled;\n }\n }, {\n key: \"productId\",\n get: function get() {\n return this.settings.productId;\n }\n }]);\n\n return Configuration;\n}();\n\nfunction _createForOfIteratorHelper$5(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$5(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$5(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$5(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$5(o, minLen); }\n\nfunction _arrayLikeToArray$5(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; }\n/**\n * A data container used by the Subscriptions class to track subscribed entities' local\n * representations and their state.\n */\n\nvar SubscribedEntity = /*#__PURE__*/function () {\n function SubscribedEntity(entity) {\n _classCallCheck__default[\"default\"](this, SubscribedEntity);\n\n this.localObject = entity;\n this.pendingCorrelationId = null;\n this.pendingAction = null;\n this.established = false;\n this.retryCount = 0;\n }\n\n _createClass__default[\"default\"](SubscribedEntity, [{\n key: \"sid\",\n get: function get() {\n return this.localObject.sid;\n }\n }, {\n key: \"type\",\n get: function get() {\n return this.localObject.type;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.localObject.lastEventId;\n } // below properties are specific to Insights only\n\n }, {\n key: \"indexName\",\n get: function get() {\n return this.localObject.indexName;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return this.localObject.queryString;\n }\n }, {\n key: \"isEstablished\",\n get: function get() {\n return this.established;\n }\n }, {\n key: \"update\",\n value: function update(event, isStrictlyOrdered) {\n this.localObject._update(event, isStrictlyOrdered);\n }\n }, {\n key: \"updatePending\",\n value: function updatePending(action, correlationId) {\n this.pendingAction = action;\n this.pendingCorrelationId = correlationId;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.updatePending(null, null);\n this.retryCount = 0;\n this.established = false;\n this.setSubscriptionState('none');\n }\n }, {\n key: \"markAsFailed\",\n value: function markAsFailed(message) {\n this.rejectedWithError = message.error;\n this.updatePending(null, null);\n this.localObject.reportFailure(new SyncError(\"Failed to subscribe on service events: \".concat(message.error.message), message.error.status, message.error.code));\n }\n }, {\n key: \"complete\",\n value: function complete(eventId) {\n this.updatePending(null, null);\n this.established = true;\n\n this.localObject._advanceLastEventId(eventId);\n }\n }, {\n key: \"setSubscriptionState\",\n value: function setSubscriptionState(newState) {\n this.localObject._setSubscriptionState(newState);\n }\n }]);\n\n return SubscribedEntity;\n}();\n/**\n * @class Subscriptions\n * @classdesc A manager which, in batches of varying size, continuously persists the\n * subscription intent of the caller to the Sync backend until it achieves a\n * converged state.\n */\n\n\nvar Subscriptions = /*#__PURE__*/function () {\n // This is always the full set of subscribables (SubscribedEntity instances) intended by\n // the client. At any point, whatever the state of these subscriptions on the server, this\n // is the intent of the user to which the SDK must converge.\n // This includes the set of subscribables (SubscribedEntity instances) for whom a request\n // has been dispatched (whether or not this particular request ultimately succeeds) to\n // establish a live subscription. Entities are removed when the corresponding \"cancel\"\n // request is dispatched.\n // If the server includes a `ttl_in_s` attribute in the poke response, subscriptionTtlTimer is started for that duration\n // such that when it fires, it repokes the entire sync set (i.e., emulates a reconnect). Every reconnect resets the timer.\n // After the timer has fired, the first poke request includes a `reason: ttl` attribute in the body.\n\n /**\n * @constructor\n * Prepares a new Subscriptions manager object with zero subscribed or persisted subscriptions.\n *\n * @param {object} config may include a key 'backoffConfig', wherein any of the parameters\n * of Backoff.exponential (from npm 'backoff') are valid and will override the defaults.\n *\n * @param {Network} must be a viable running Sync Network object, useful for routing requests.\n */\n function Subscriptions(services) {\n var _this = this;\n\n _classCallCheck__default[\"default\"](this, Subscriptions);\n\n _defineProperty__default[\"default\"](this, \"isConnected\", false);\n\n _defineProperty__default[\"default\"](this, \"maxBatchSize\", 100);\n\n _defineProperty__default[\"default\"](this, \"subscriptionTtlTimer\", null);\n\n _defineProperty__default[\"default\"](this, \"pendingPokeReason\", null);\n\n this.services = services;\n this.subscriptions = new Map();\n this.persisted = new Map();\n this.latestPokeResponseArrivalTimestampByCorrelationId = new Map();\n var defaultBackoffConfig = {\n randomisationFactor: 0.2,\n initialDelay: 100,\n maxDelay: 2 * 60 * 1000\n };\n this.backoff = operationRetrier.Backoff.exponential(Object.assign(defaultBackoffConfig, this.services.config.backoffConfig)); // This block is triggered by #_persist. Every request is executed in a series of (ideally 1)\n // backoff 'ready' event, at which point a new subscription set is calculated.\n\n this.backoff.on('ready', function () {\n var _this$getSubscription = _this.getSubscriptionUpdateBatch(),\n action = _this$getSubscription.action,\n subscriptionRequests = _this$getSubscription.subscriptions;\n\n if (action) {\n _this.applyNewSubscriptionUpdateBatch(action, subscriptionRequests);\n } else {\n _this.backoff.reset();\n\n log$1.debug('All subscriptions resolved.');\n }\n });\n }\n\n _createClass__default[\"default\"](Subscriptions, [{\n key: \"getSubscriptionUpdateBatch\",\n value: function getSubscriptionUpdateBatch() {\n function subtract(these, those, action, limit) {\n var result = [];\n\n var _iterator = _createForOfIteratorHelper$5(these),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray__default[\"default\"](_step.value, 2),\n thisKey = _step$value[0],\n thisValue = _step$value[1];\n\n var otherValue = those.get(thisKey);\n\n if (!otherValue && action !== thisValue.pendingAction && !thisValue.rejectedWithError) {\n result.push(thisValue);\n\n if (limit && result.length >= limit) {\n break;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return result;\n }\n\n var listToAdd = subtract(this.subscriptions, this.persisted, 'establish', this.maxBatchSize);\n\n if (listToAdd.length > 0) {\n return {\n action: 'establish',\n subscriptions: listToAdd\n };\n }\n\n var listToRemove = subtract(this.persisted, this.subscriptions, 'cancel', this.maxBatchSize);\n\n if (listToRemove.length > 0) {\n return {\n action: 'cancel',\n subscriptions: listToRemove\n };\n }\n\n return {\n action: null,\n subscriptions: null\n };\n }\n }, {\n key: \"persist\",\n value: function persist() {\n this.backoff.backoff();\n }\n }, {\n key: \"applyNewSubscriptionUpdateBatch\",\n value: function () {\n var _applyNewSubscriptionUpdateBatch = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(action, requests) {\n var _this2 = this;\n\n var correlationId, _iterator2, _step2, subscribed, reason, response, newMaxBatchSize, subscriptionTtlInS, isNumeric, isValidTtl, estimatedDeliveryInMs, _isNumeric, isValidTimeout, _iterator3, _step3, attemptedSubscription;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.isConnected) {\n _context.next = 4;\n break;\n }\n\n log$1.debug(\"Twilsock connection (required for subscription) not ready; waiting\\u2026\");\n this.backoff.reset();\n return _context.abrupt(\"return\");\n\n case 4:\n // Keeping in mind that events may begin flowing _before_ we receive the response\n requests = this.processLocalActions(action, requests);\n correlationId = new Date().getTime();\n _iterator2 = _createForOfIteratorHelper$5(requests);\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n subscribed = _step2.value;\n this.recordActionAttemptOn(subscribed, action, correlationId);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n reason = this.pendingPokeReason;\n this.pendingPokeReason = null; // Send this batch to the service\n\n _context.prev = 10;\n _context.next = 13;\n return this.request(action, correlationId, reason, requests);\n\n case 13:\n response = _context.sent;\n newMaxBatchSize = response.body.max_batch_size;\n\n if (!isNaN(parseInt(newMaxBatchSize)) && isFinite(newMaxBatchSize) && newMaxBatchSize > 0) {\n this.maxBatchSize = newMaxBatchSize;\n }\n\n if (!this.subscriptionTtlTimer) {\n subscriptionTtlInS = response.body.ttl_in_s;\n isNumeric = !isNaN(parseFloat(subscriptionTtlInS)) && isFinite(subscriptionTtlInS);\n isValidTtl = isNumeric && subscriptionTtlInS > 0;\n\n if (isValidTtl) {\n this.subscriptionTtlTimer = setTimeout(function () {\n return _this2.onSubscriptionTtlElapsed();\n }, subscriptionTtlInS * 1000);\n }\n }\n\n if (action === 'establish') {\n estimatedDeliveryInMs = response.body.estimated_delivery_in_ms;\n _isNumeric = !isNaN(parseFloat(estimatedDeliveryInMs)) && isFinite(estimatedDeliveryInMs);\n isValidTimeout = _isNumeric && estimatedDeliveryInMs > 0;\n\n if (isValidTimeout) {\n setTimeout(function () {\n return _this2.verifyPokeDelivery(correlationId, estimatedDeliveryInMs, requests);\n }, estimatedDeliveryInMs);\n } else {\n log$1.error(\"Invalid timeout: \".concat(estimatedDeliveryInMs));\n }\n\n requests.filter(function (r) {\n return r.pendingCorrelationId === correlationId;\n }).forEach(function (r) {\n return r.setSubscriptionState('response_in_flight');\n });\n }\n\n this.backoff.reset();\n _context.next = 26;\n break;\n\n case 21:\n _context.prev = 21;\n _context.t0 = _context[\"catch\"](10);\n _iterator3 = _createForOfIteratorHelper$5(requests);\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n attemptedSubscription = _step3.value;\n this.recordActionFailureOn(attemptedSubscription, action);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n if (_context.t0 instanceof twilsock.TransportUnavailableError) {\n log$1.debug(\"Twilsock connection (required for subscription) not ready (c:\".concat(correlationId, \"); waiting\\u2026\"));\n this.backoff.reset();\n } else {\n log$1.debug(\"Failed an attempt to \".concat(action, \" subscriptions (c:\").concat(correlationId, \"); retrying\"), _context.t0);\n this.persist();\n }\n\n case 26:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[10, 21]]);\n }));\n\n function applyNewSubscriptionUpdateBatch(_x, _x2) {\n return _applyNewSubscriptionUpdateBatch.apply(this, arguments);\n }\n\n return applyNewSubscriptionUpdateBatch;\n }()\n }, {\n key: \"verifyPokeDelivery\",\n value: function verifyPokeDelivery(correlationId, estimatedDeliveryInMs, requests) {\n var _this3 = this;\n\n var lastReceived = this.latestPokeResponseArrivalTimestampByCorrelationId.get(correlationId);\n var silencePeriod = lastReceived ? new Date().getTime() - lastReceived : estimatedDeliveryInMs;\n\n if (silencePeriod >= estimatedDeliveryInMs) {\n // If we haven't received _any_ responses from that poke request for the duration of estimated_delivery_in_ms, poke again\n requests.filter(function (r) {\n return r.pendingCorrelationId === correlationId;\n }).forEach(function (r) {\n r.updatePending(null, null);\n r.retryCount++;\n\n _this3.persisted.delete(r.sid);\n });\n this.persist();\n this.latestPokeResponseArrivalTimestampByCorrelationId.delete(correlationId);\n } else {\n // Otherwise, the poke responses are probably in transit and we should wait for them\n var timeoutExtension = estimatedDeliveryInMs - silencePeriod;\n setTimeout(function () {\n return _this3.verifyPokeDelivery(correlationId, estimatedDeliveryInMs, requests);\n }, timeoutExtension);\n }\n }\n }, {\n key: \"processLocalActions\",\n value: function processLocalActions(action, requests) {\n if (action === 'cancel') {\n return requests.filter(function (request) {\n return !request.rejectedWithError;\n });\n }\n\n return requests;\n }\n }, {\n key: \"recordActionAttemptOn\",\n value: function recordActionAttemptOn(attemptedSubscription, action, correlationId) {\n attemptedSubscription.setSubscriptionState('request_in_flight');\n\n if (action === 'establish') {\n this.persisted.set(attemptedSubscription.sid, attemptedSubscription);\n attemptedSubscription.updatePending(action, correlationId);\n } else {\n // cancel\n var persistedSubscription = this.persisted.get(attemptedSubscription.sid);\n\n if (persistedSubscription) {\n persistedSubscription.updatePending(action, correlationId);\n }\n }\n }\n }, {\n key: \"recordActionFailureOn\",\n value: function recordActionFailureOn(attemptedSubscription, action) {\n attemptedSubscription.setSubscriptionState('none');\n attemptedSubscription.updatePending(null, null);\n\n if (action === 'establish') {\n this.persisted.delete(attemptedSubscription.sid);\n }\n }\n }, {\n key: \"request\",\n value: function request(action, correlationId, reason, objects) {\n var requests = objects.map(function (object) {\n return {\n object_sid: object.sid,\n object_type: object.type,\n last_event_id: action === 'establish' ? object.lastEventId : undefined,\n index_name: action === 'establish' ? object.indexName : undefined,\n query_string: action === 'establish' ? object.queryString : undefined\n };\n });\n var retriedRequests = objects.filter(function (a) {\n return a.retryCount > 0;\n }).length;\n log$1.debug(\"Attempting '\".concat(action, \"' request (c:\").concat(correlationId, \"):\"), requests);\n var requestBody = {\n event_protocol_version: 4,\n action: action,\n correlation_id: correlationId,\n retried_requests: retriedRequests,\n ttl_in_s: -1,\n requests: requests\n };\n\n if (reason === 'ttl') {\n requestBody.reason = reason;\n }\n\n return this.services.network.post(this.services.config.subscriptionsUri, requestBody);\n }\n /**\n * Establishes intent to be subscribed to this entity. That subscription will be effected\n * asynchronously.\n * If subscription to the given sid already exists, it will be overwritten.\n *\n * @param {String} sid should be a well-formed SID, uniquely identifying a single instance of a Sync entity.\n * @param {Object} entity should represent the (singular) local representation of this entity.\n * Incoming events and modifications to the entity will be directed at the _update() function\n * of this provided reference.\n *\n * @return undefined\n */\n\n }, {\n key: \"add\",\n value: function add(sid, entity) {\n log$1.debug(\"Establishing intent to subscribe to \".concat(sid));\n var existingSubscription = this.subscriptions.get(sid);\n\n if (existingSubscription && entity && existingSubscription.lastEventId === entity.lastEventId) {\n // If last event id is the same as before - we're fine\n return;\n }\n\n this.persisted.delete(sid);\n this.subscriptions.set(sid, new SubscribedEntity(entity));\n this.persist();\n }\n /**\n * Establishes the caller's intent to no longer be subscribed to this entity. Following this\n * call, no further events shall be routed to the local representation of the entity, even\n * though a server-side subscription may take more time to actually terminate.\n *\n * @param {string} sid should be any well-formed SID, uniquely identifying a Sync entity.\n * This call only has meaningful effect if that entity is subscribed at the\n * time of call. Otherwise does nothing.\n *\n * @return undefined\n */\n\n }, {\n key: \"remove\",\n value: function remove(sid) {\n log$1.debug(\"Establishing intent to unsubscribe from \".concat(sid));\n var removed = this.subscriptions.delete(sid);\n\n if (removed) {\n this.persist();\n }\n }\n /**\n * The point of ingestion for remote incoming messages (e.g. new data was written to a map\n * to which we are subscribed).\n *\n * @param {object} message is the full, unaltered body of the incoming notification.\n *\n * @return undefined\n */\n\n }, {\n key: \"acceptMessage\",\n value: function acceptMessage(message, isStrictlyOrdered) {\n log$1.trace('Subscriptions received', message);\n var eventType = message.event_type;\n var events = typeof message.events !== 'undefined' ? message.events : [message.event];\n var correlationId = message.correlation_id;\n\n if (correlationId) {\n this.latestPokeResponseArrivalTimestampByCorrelationId.set(correlationId, new Date().getTime());\n }\n\n var _iterator4 = _createForOfIteratorHelper$5(events),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var event = _step4.value;\n var matchedEventType = void 0;\n\n switch (message.event_type) {\n case 'subscription_established':\n this.applySubscriptionEstablishedMessage(event, correlationId);\n break;\n\n case 'subscription_canceled':\n this.applySubscriptionCancelledMessage(event, correlationId);\n break;\n\n case 'subscription_failed':\n this.applySubscriptionFailedMessage(event, correlationId);\n break;\n\n case (matchedEventType = eventType.match(/^(?:map|list|document|stream|live_query)_/) || {}).input:\n {\n var typedSid = void 0;\n\n switch (matchedEventType[0]) {\n case 'map_':\n typedSid = event.map_sid;\n break;\n\n case 'list_':\n typedSid = event.list_sid;\n break;\n\n case 'document_':\n typedSid = event.document_sid;\n break;\n\n case 'stream_':\n typedSid = event.stream_sid;\n break;\n\n case 'live_query_':\n typedSid = event.query_id; // hack to mark replay events for LiveQuery as strictly ordered, due to lack of special type of notification for them\n // (normally only replay events would have `twilio.sync.event` type, but LiveQuery non-replay events were also assigned\n // to this type in legacy clients, which we have to support now; hence a hack)\n\n isStrictlyOrdered = false; // explicitly override it due to code in router.ts does not know about LiveQueries\n\n if (message.strictly_ordered === true) {\n isStrictlyOrdered = true;\n }\n\n break;\n\n default:\n typedSid = undefined;\n }\n\n this.applyEventToSubscribedEntity(typedSid, event, eventType, isStrictlyOrdered);\n break;\n }\n\n default:\n log$1.debug(\"Dropping unknown message type \".concat(eventType));\n break;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"applySubscriptionEstablishedMessage\",\n value: function applySubscriptionEstablishedMessage(message, correlationId) {\n var sid = message.object_sid;\n var subscriptionIntent = this.persisted.get(message.object_sid);\n\n if (subscriptionIntent && subscriptionIntent.pendingCorrelationId === correlationId) {\n if (message.replay_status === 'interrupted') {\n log$1.debug(\"Event Replay for subscription to \".concat(sid, \" (c:\").concat(correlationId, \") interrupted; continuing eagerly.\"));\n subscriptionIntent.updatePending(null, null);\n this.persisted.delete(subscriptionIntent.sid);\n this.backoff.reset();\n } else if (message.replay_status === 'completed') {\n log$1.debug(\"Event Replay for subscription to \".concat(sid, \" (c:\").concat(correlationId, \") completed. Subscription is ready.\"));\n subscriptionIntent.complete(message.last_event_id);\n this.persisted.set(message.object_sid, subscriptionIntent);\n subscriptionIntent.setSubscriptionState('established');\n this.backoff.reset();\n }\n } else {\n log$1.debug(\"Late message for \".concat(message.object_sid, \" (c:\").concat(correlationId, \") dropped.\"));\n }\n\n this.persist();\n }\n }, {\n key: \"applySubscriptionCancelledMessage\",\n value: function applySubscriptionCancelledMessage(message, correlationId) {\n var persistedSubscription = this.persisted.get(message.object_sid);\n\n if (persistedSubscription && persistedSubscription.pendingCorrelationId === correlationId) {\n persistedSubscription.updatePending(null, null);\n persistedSubscription.setSubscriptionState('none');\n this.persisted.delete(message.object_sid);\n } else {\n log$1.debug(\"Late message for \".concat(message.object_sid, \" (c:\").concat(correlationId, \") dropped.\"));\n }\n\n this.persist();\n }\n }, {\n key: \"applySubscriptionFailedMessage\",\n value: function applySubscriptionFailedMessage(message, correlationId) {\n var sid = message.object_sid;\n var subscriptionIntent = this.subscriptions.get(sid);\n var subscription = this.persisted.get(sid);\n\n if (subscriptionIntent && subscription) {\n if (subscription.pendingCorrelationId === correlationId) {\n log$1.error(\"Failed to subscribe on \".concat(subscription.sid), message.error);\n subscription.markAsFailed(message);\n subscription.setSubscriptionState('none');\n }\n } else if (!subscriptionIntent && subscription) {\n this.persisted.delete(sid);\n subscription.setSubscriptionState('none');\n }\n\n this.persist();\n }\n }, {\n key: \"applyEventToSubscribedEntity\",\n value: function applyEventToSubscribedEntity(sid, event, eventType, isStrictlyOrdered) {\n var _this4 = this;\n\n if (!sid) {\n return;\n } // Looking for subscription descriptor to check if poke has been completed\n\n\n isStrictlyOrdered = isStrictlyOrdered || function () {\n var subscription = _this4.persisted.get(sid);\n\n return subscription && subscription.isEstablished;\n }(); // Still searching for subscriptionIntents. User could remove subscription already\n\n\n var subscriptionIntent = this.subscriptions.get(sid);\n\n if (subscriptionIntent) {\n event.type = eventType;\n subscriptionIntent.update(event, isStrictlyOrdered);\n } else {\n log$1.debug(\"Message dropped for SID '\".concat(sid, \"', for which there is no subscription.\"));\n }\n }\n }, {\n key: \"onConnectionStateChanged\",\n value: function onConnectionStateChanged(isConnected) {\n this.isConnected = isConnected;\n\n if (isConnected) {\n this.poke('reconnect');\n }\n }\n }, {\n key: \"onSubscriptionTtlElapsed\",\n value: function onSubscriptionTtlElapsed() {\n if (this.isConnected) {\n this.poke('ttl');\n }\n }\n /**\n * Prompts a playback of any missed changes made to any subscribed object. This method\n * should be invoked whenever the connectivity layer has experienced cross-cutting\n * delivery failures that would affect the entire local sync set. Any tangible result\n * of this operation will result in calls to the _update() function of subscribed\n * Sync entities.\n */\n\n }, {\n key: \"poke\",\n value: function poke(reason) {\n log$1.debug(\"Triggering event replay for all subscriptions, reason=\".concat(reason));\n this.pendingPokeReason = reason;\n\n if (this.subscriptionTtlTimer) {\n clearTimeout(this.subscriptionTtlTimer);\n this.subscriptionTtlTimer = null;\n }\n\n var failedSubscriptions = [];\n\n var _iterator5 = _createForOfIteratorHelper$5(this.persisted.values()),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _it = _step5.value;\n\n _it.reset();\n\n if (_it.rejectedWithError) {\n failedSubscriptions.push(_it);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n this.persisted.clear();\n\n for (var _i = 0, _failedSubscriptions = failedSubscriptions; _i < _failedSubscriptions.length; _i++) {\n var it = _failedSubscriptions[_i];\n this.persisted.set(it.sid, it);\n }\n\n this.persist();\n }\n /**\n * Stops all communication, clears any subscription intent, and returns.\n */\n\n }, {\n key: \"shutdown\",\n value: function shutdown() {\n this.backoff.reset();\n this.subscriptions.clear();\n }\n }]);\n\n return Subscriptions;\n}();\n\nvar MINIMUM_RETRY_DELAY = 4000;\nvar MAXIMUM_RETRY_DELAY = 60000;\nvar MAXIMUM_ATTEMPTS_TIME = 90000;\nvar RETRY_DELAY_RANDOMNESS = 0.2;\n\nfunction messageFromErrorBody(transportError) {\n if (transportError.body) {\n if (transportError.body.message) {\n return transportError.body.message;\n }\n }\n\n switch (transportError.status) {\n case 429:\n return 'Throttled by server';\n\n case 404:\n return 'Not found from server';\n\n default:\n return 'Error from server';\n }\n}\n\nfunction codeFromErrorBody(trasportError) {\n if (trasportError.body) {\n return trasportError.body.code;\n }\n\n return 0;\n}\n\nfunction mapTransportError(transportError) {\n if (transportError.status === 409) {\n return new SyncNetworkError(messageFromErrorBody(transportError), transportError.status, codeFromErrorBody(transportError), transportError.body);\n } else if (transportError.status) {\n return new SyncError(messageFromErrorBody(transportError), transportError.status, codeFromErrorBody(transportError));\n } else if (transportError instanceof twilsock.TransportUnavailableError) {\n return transportError;\n } else {\n return new SyncError(transportError.message, 0, 0);\n }\n}\n/**\n * @classdesc Incapsulates network operations to make it possible to add some optimization/caching strategies\n */\n\n\nvar NetworkService = /*#__PURE__*/function () {\n function NetworkService(clientInfo, config, transport) {\n _classCallCheck__default[\"default\"](this, NetworkService);\n\n this.clientInfo = clientInfo;\n this.config = config;\n this.transport = transport;\n }\n\n _createClass__default[\"default\"](NetworkService, [{\n key: \"createHeaders\",\n value: function createHeaders() {\n return {\n 'Content-Type': 'application/json',\n 'Twilio-Sync-Client-Info': JSON.stringify(this.clientInfo),\n 'Twilio-Request-Id': 'RQ' + uuid__namespace.v4().replace(/-/g, '')\n };\n }\n }, {\n key: \"backoffConfig\",\n value: function backoffConfig() {\n return Object.assign({\n min: MINIMUM_RETRY_DELAY,\n max: MAXIMUM_RETRY_DELAY,\n maxAttemptsTime: MAXIMUM_ATTEMPTS_TIME,\n randomness: RETRY_DELAY_RANDOMNESS\n }, this.config.backoffConfig);\n }\n }, {\n key: \"executeWithRetry\",\n value: function executeWithRetry(request) {\n var _this = this;\n\n var retryWhenThrottled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return new Promise(function (resolve, reject) {\n var codesToRetryOn = [502, 503, 504];\n\n if (retryWhenThrottled) {\n codesToRetryOn.push(429);\n }\n\n var retrier = new operationRetrier.Retrier(_this.backoffConfig());\n retrier.on('attempt', function () {\n request().then(function (result) {\n return retrier.succeeded(result);\n }).catch(function (err) {\n if (codesToRetryOn.includes(err.status)) {\n var delayOverride = parseInt(err.headers ? err.headers['Retry-After'] : null);\n retrier.failed(mapTransportError(err), isNaN(delayOverride) ? null : delayOverride * 1000);\n } else if (err.message === 'Twilsock disconnected') {\n // Ugly hack. We must make a proper exceptions for twilsock\n retrier.failed(mapTransportError(err));\n } else {\n // Fatal error\n retrier.removeAllListeners();\n retrier.cancel();\n reject(mapTransportError(err));\n }\n });\n });\n retrier.on('succeeded', function (result) {\n resolve(result);\n });\n retrier.on('cancelled', function (err) {\n return reject(mapTransportError(err));\n });\n retrier.on('failed', function (err) {\n return reject(mapTransportError(err));\n });\n retrier.start();\n });\n }\n /**\n * Make a GET request by given URI\n * @Returns Promise<Response> Result of successful get request\n */\n\n }, {\n key: \"get\",\n value: function get(uri) {\n var _this2 = this;\n\n var headers = this.createHeaders();\n log$1.debug('GET', uri, 'ID:', headers['Twilio-Request-Id']);\n return this.executeWithRetry(function () {\n return _this2.transport.get(uri, headers, _this2.config.productId);\n }, true);\n }\n }, {\n key: \"post\",\n value: function post(uri, body, revision) {\n var _this3 = this;\n\n var retryWhenThrottled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var headers = this.createHeaders();\n\n if (typeof revision !== 'undefined' && revision !== null) {\n headers['If-Match'] = revision;\n }\n\n log$1.debug('POST', uri, 'ID:', headers['Twilio-Request-Id']);\n return this.executeWithRetry(function () {\n return _this3.transport.post(uri, headers, body, _this3.config.productId);\n }, retryWhenThrottled);\n }\n }, {\n key: \"put\",\n value: function put(uri, body, revision) {\n var _this4 = this;\n\n var headers = this.createHeaders();\n\n if (typeof revision !== 'undefined' && revision !== null) {\n headers['If-Match'] = revision;\n }\n\n log$1.debug('PUT', uri, 'ID:', headers['Twilio-Request-Id']);\n return this.executeWithRetry(function () {\n return _this4.transport.put(uri, headers, body, _this4.config.productId);\n }, false);\n }\n }, {\n key: \"delete\",\n value: function _delete(uri) {\n var _this5 = this;\n\n var headers = this.createHeaders();\n log$1.debug('DELETE', uri, 'ID:', headers['Twilio-Request-Id']);\n return this.executeWithRetry(function () {\n return _this5.transport.delete(uri, headers, _this5.config.productId);\n }, false);\n }\n }]);\n\n return NetworkService;\n}();\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage(config, storage) {\n _classCallCheck__default[\"default\"](this, SessionStorage);\n\n this.config = config;\n this.storageId = null;\n\n try {\n this.storage = storage || sessionStorage;\n } catch (e) {}\n }\n\n _createClass__default[\"default\"](SessionStorage, [{\n key: \"storageKey\",\n value: function storageKey(type, key) {\n return \"\".concat(this.storageId, \"::\").concat(type, \"::\").concat(key);\n }\n }, {\n key: \"isReady\",\n get: function get() {\n return this.config.sessionStorageEnabled && !!this.storageId;\n }\n }, {\n key: \"updateStorageId\",\n value: function updateStorageId(storageId) {\n this.storageId = storageId;\n }\n }, {\n key: \"store\",\n value: function store(type, id, value) {\n if (!this.isReady) {\n return null;\n }\n\n return this._store(this.storageKey(type, id), value);\n }\n }, {\n key: \"read\",\n value: function read(type, id) {\n if (!this.isReady) {\n return null;\n }\n\n return this._read(this.storageKey(type, id));\n }\n }, {\n key: \"remove\",\n value: function remove(type, sid, uniqueName) {\n if (!this.isReady) {\n return null;\n }\n\n try {\n this.storage.removeItem(this.storageKey(type, sid));\n\n if (uniqueName) {\n this.storage.removeItem(this.storageKey(type, uniqueName));\n }\n } catch (e) {}\n }\n }, {\n key: \"update\",\n value: function update(type, sid, uniqueName, patch) {\n if (!this.isReady) {\n return null;\n } // Currently cache may have root stored twice - by sid and by uniqueName\n // Maybe need to create some index if needed\n\n\n this._apply(this.storageKey(type, sid), patch);\n\n if (uniqueName) {\n this._apply(this.storageKey(type, uniqueName), patch);\n }\n }\n }, {\n key: \"_store\",\n value: function _store(key, value) {\n try {\n this.storage.setItem(key, JSON.stringify(value));\n } catch (e) {}\n }\n }, {\n key: \"_read\",\n value: function _read(key) {\n try {\n var storedData = this.storage.getItem(key);\n\n if (storedData) {\n return JSON.parse(storedData);\n }\n } catch (e) {}\n\n return null;\n }\n }, {\n key: \"_apply\",\n value: function _apply(key, patch) {\n var value = this._read(key);\n\n if (!value) {\n return false;\n }\n\n this._store(key, Object.assign(value, patch));\n }\n }]);\n\n return SessionStorage;\n}();\n\nfunction _createForOfIteratorHelper$4(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$4(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$4(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$4(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$4(o, minLen); }\n\nfunction _arrayLikeToArray$4(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; }\n\nvar SyncEntity = /*#__PURE__*/function () {\n function SyncEntity(services, removalHandler) {\n _classCallCheck__default[\"default\"](this, SyncEntity);\n\n this.services = services;\n this.removalHandler = removalHandler;\n this.subscriptionState = 'none';\n this._attachedListeners = new Map();\n }\n\n _createClass__default[\"default\"](SyncEntity, [{\n key: \"_advanceLastEventId\",\n value: function _advanceLastEventId(eventId, revision) {}\n }, {\n key: \"reportFailure\",\n value: function reportFailure(err) {\n if (err.status === 404) {\n // assume that 404 means that entity has been removed while we were away\n this.onRemoved(false);\n } else {\n this.broadcastEventToListeners('failure', err);\n }\n }\n /**\n * Subscribe to changes of data entity\n * @private\n */\n\n }, {\n key: \"_subscribe\",\n value: function _subscribe() {\n this.services.router._subscribe(this.sid, this);\n }\n /**\n * Unsubscribe from changes of current data entity\n * @private\n */\n\n }, {\n key: \"_unsubscribe\",\n value: function _unsubscribe() {\n this.services.router._unsubscribe(this.sid);\n }\n }, {\n key: \"_setSubscriptionState\",\n value: function _setSubscriptionState(newState) {\n this.subscriptionState = newState;\n this.broadcastEventToListeners('_subscriptionStateChanged', newState);\n }\n /**\n * @public\n */\n\n }, {\n key: \"close\",\n value: function close() {\n this._unsubscribe();\n\n if (this.removalHandler != null) {\n this.removalHandler(this.type, this.sid, this.uniqueName);\n }\n }\n }, {\n key: \"attach\",\n value: function attach(closeable) {\n var uuid = closeable.listenerUuid;\n\n var existingRecord = this._attachedListeners.get(uuid);\n\n if (existingRecord) {\n return;\n }\n\n if (!this._attachedListeners.size) {\n // the first one to arrive\n this._subscribe();\n }\n\n this._attachedListeners.set(uuid, closeable);\n }\n }, {\n key: \"detach\",\n value: function detach(listenerUuid) {\n this._attachedListeners.delete(listenerUuid);\n\n if (!this._attachedListeners.size) {\n // last one out, turn off lights, shut the door\n this.close(); // invokes unsubscribe and removal handler\n }\n }\n }, {\n key: \"broadcastEventToListeners\",\n value: function broadcastEventToListeners(eventName) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iterator = _createForOfIteratorHelper$4(this._attachedListeners.values()),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var listener = _step.value;\n listener.emit.apply(listener, [eventName].concat(args));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }]);\n\n return SyncEntity;\n}();\n\nvar MergingQueue = /*#__PURE__*/function () {\n function MergingQueue(inputMergingFunction) {\n _classCallCheck__default[\"default\"](this, MergingQueue);\n\n _defineProperty__default[\"default\"](this, \"queuedRequests\", []);\n\n _defineProperty__default[\"default\"](this, \"isRequestInFlight\", false);\n\n this.inputMergingFunction = inputMergingFunction;\n }\n\n _createClass__default[\"default\"](MergingQueue, [{\n key: \"add\",\n value: function add(input, requestFunction) {\n var _this = this;\n\n var promise = new Promise(function (resolve, reject) {\n return _this.queuedRequests.push({\n input: input,\n requestFunction: requestFunction,\n resolve: resolve,\n reject: reject\n });\n });\n this.wakeupQueue();\n return promise;\n }\n }, {\n key: \"squashAndAdd\",\n value: function squashAndAdd(input, requestFunction) {\n var queueToSquash = this.queuedRequests;\n this.queuedRequests = [];\n var reducedInput;\n\n if (queueToSquash.length > 0) {\n reducedInput = queueToSquash.map(function (r) {\n return r.input;\n }).reduce(this.inputMergingFunction);\n reducedInput = this.inputMergingFunction(reducedInput, input);\n } else {\n reducedInput = input;\n }\n\n var promise = this.add(reducedInput, requestFunction);\n queueToSquash.forEach(function (request) {\n return promise.then(request.resolve, request.reject);\n });\n return promise;\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n return this.queuedRequests.length === 0 && !this.isRequestInFlight;\n }\n }, {\n key: \"wakeupQueue\",\n value: function wakeupQueue() {\n var _this2 = this;\n\n if (this.queuedRequests.length === 0 || this.isRequestInFlight) {\n return;\n } else {\n var requestToExecute = this.queuedRequests.shift();\n this.isRequestInFlight = true;\n requestToExecute.requestFunction(requestToExecute.input).then(requestToExecute.resolve, requestToExecute.reject).then(function (__) {\n _this2.isRequestInFlight = false;\n\n _this2.wakeupQueue();\n });\n }\n }\n }]);\n\n return MergingQueue;\n}();\nvar NamespacedMergingQueue = /*#__PURE__*/function () {\n function NamespacedMergingQueue(inputReducer) {\n _classCallCheck__default[\"default\"](this, NamespacedMergingQueue);\n\n _defineProperty__default[\"default\"](this, \"queueByNamespaceKey\", new Map());\n\n this.inputReducer = inputReducer;\n }\n\n _createClass__default[\"default\"](NamespacedMergingQueue, [{\n key: \"add\",\n value: function () {\n var _add = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(namespaceKey, input, requestFunction) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", this.invokeQueueMethod(namespaceKey, function (queue) {\n return queue.add(input, requestFunction);\n }));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function add(_x, _x2, _x3) {\n return _add.apply(this, arguments);\n }\n\n return add;\n }()\n }, {\n key: \"squashAndAdd\",\n value: function () {\n var _squashAndAdd = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(namespaceKey, input, requestFunction) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.invokeQueueMethod(namespaceKey, function (queue) {\n return queue.squashAndAdd(input, requestFunction);\n }));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function squashAndAdd(_x4, _x5, _x6) {\n return _squashAndAdd.apply(this, arguments);\n }\n\n return squashAndAdd;\n }()\n }, {\n key: \"invokeQueueMethod\",\n value: function () {\n var _invokeQueueMethod = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(namespaceKey, queueMethodInvoker) {\n var queue, result;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!this.queueByNamespaceKey.has(namespaceKey)) {\n this.queueByNamespaceKey.set(namespaceKey, new MergingQueue(this.inputReducer));\n }\n\n queue = this.queueByNamespaceKey.get(namespaceKey);\n result = queueMethodInvoker(queue);\n\n if (this.queueByNamespaceKey.get(namespaceKey).isEmpty()) {\n this.queueByNamespaceKey.delete(namespaceKey);\n }\n\n return _context3.abrupt(\"return\", result);\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function invokeQueueMethod(_x7, _x8) {\n return _invokeQueueMethod.apply(this, arguments);\n }\n\n return invokeQueueMethod;\n }()\n }]);\n\n return NamespacedMergingQueue;\n}();\n\nfunction _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$6(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$6() { 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 Closeable = /*#__PURE__*/function (_ReplayEventEmitter) {\n _inherits__default[\"default\"](Closeable, _ReplayEventEmitter);\n\n var _super = _createSuper$6(Closeable);\n\n function Closeable() {\n var _this;\n\n _classCallCheck__default[\"default\"](this, Closeable);\n\n _this = _super.call(this);\n _this.closed = false;\n _this.uuid = uuid.v4();\n return _this;\n }\n\n _createClass__default[\"default\"](Closeable, [{\n key: \"listenerUuid\",\n get: function get() {\n return this.uuid;\n }\n }, {\n key: \"close\",\n value: function close() {\n this.removeAllListeners();\n this.closed = true;\n }\n }, {\n key: \"ensureNotClosed\",\n value: function ensureNotClosed() {\n if (this.closed) {\n throw new Error('Invalid operation on closed object');\n }\n }\n }]);\n\n return Closeable;\n}(replayEventEmitter.ReplayEventEmitter);\n\nfunction _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$5() { 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 SyncDocumentImpl = /*#__PURE__*/function (_SyncEntity) {\n _inherits__default[\"default\"](SyncDocumentImpl, _SyncEntity);\n\n var _super = _createSuper$5(SyncDocumentImpl);\n\n /**\n * @internal\n */\n function SyncDocumentImpl(services, descriptor, removalHandler) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, SyncDocumentImpl);\n\n _this = _super.call(this, services, removalHandler);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this), \"isDeleted\", false);\n\n var updateRequestReducer = function updateRequestReducer(acc, input) {\n return typeof input.ttl === 'number' ? {\n ttl: input.ttl\n } : acc;\n };\n\n _this.updateMergingQueue = new MergingQueue(updateRequestReducer);\n _this.descriptor = descriptor;\n _this.descriptor.data = _this.descriptor.data || {};\n _this.descriptor.date_updated = new Date(_this.descriptor.date_updated);\n return _this;\n } // private props\n\n\n _createClass__default[\"default\"](SyncDocumentImpl, [{\n key: \"uri\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.descriptor.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.last_event_id;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.date_expires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return 'document';\n } // below properties are specific to Insights only\n\n }, {\n key: \"indexName\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return undefined;\n } // public props, documented along with class description\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.descriptor.sid;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.descriptor.data;\n }\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.descriptor.date_updated;\n }\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.descriptor.unique_name || null;\n }\n /**\n * Update data entity with new data\n * @private\n */\n\n }, {\n key: \"_update\",\n value: function _update(update) {\n update.date_created = new Date(update.date_created);\n\n switch (update.type) {\n case 'document_updated':\n if (update.id <= this.lastEventId) {\n log$1.trace('Document update skipped, current:', this.lastEventId, ', remote:', update.id);\n break;\n }\n\n var previousData = this.descriptor.data !== undefined ? deepClone(this.descriptor.data) : null;\n this.descriptor.last_event_id = update.id;\n this.descriptor.revision = update.document_revision;\n this.descriptor.date_updated = update.date_created;\n this.descriptor.data = update.document_data;\n this.broadcastEventToListeners('updated', {\n data: update.document_data,\n isLocal: false,\n previousData: previousData\n });\n this.services.storage.update(this.type, this.sid, this.uniqueName, {\n last_event_id: update.id,\n revision: update.document_revision,\n date_updated: update.date_created,\n data: update.document_data\n });\n break;\n\n case 'document_removed':\n this.onRemoved(false);\n break;\n }\n }\n }, {\n key: \"set\",\n value: function () {\n var _set = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(value, metadataUpdates) {\n var _this2 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n input = metadataUpdates || {};\n return _context.abrupt(\"return\", this.updateMergingQueue.squashAndAdd(input, function (input) {\n return _this2._setUnconditionally(value, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function set(_x, _x2) {\n return _set.apply(this, arguments);\n }\n\n return set;\n }()\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(mutator, metadataUpdates) {\n var _this3 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n input = metadataUpdates || {};\n return _context2.abrupt(\"return\", this.updateMergingQueue.add(input, function (input) {\n return _this3._setWithIfMatch(mutator, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function mutate(_x3, _x4) {\n return _mutate.apply(this, arguments);\n }\n\n return mutate;\n }()\n }, {\n key: \"update\",\n value: function () {\n var _update2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(obj, metadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", this.mutate(function (remote) {\n return Object.assign(remote, obj);\n }, metadataUpdates));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function update(_x5, _x6) {\n return _update2.apply(this, arguments);\n }\n\n return update;\n }()\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee4(ttl) {\n var response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this._postUpdateToServer({\n ttl: ttl\n });\n\n case 2:\n response = _context4.sent;\n this.descriptor.date_expires = response.date_expires;\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function setTtl(_x7) {\n return _setTtl.apply(this, arguments);\n }\n\n return setTtl;\n }()\n /**\n * @private\n */\n\n }, {\n key: \"_setUnconditionally\",\n value: function () {\n var _setUnconditionally2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee5(value, ttl) {\n var result;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this._postUpdateToServer({\n data: value,\n revision: undefined,\n ttl: ttl\n });\n\n case 2:\n result = _context5.sent;\n\n this._handleSuccessfulUpdateResult(result);\n\n return _context5.abrupt(\"return\", this.descriptor.data);\n\n case 5:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function _setUnconditionally(_x8, _x9) {\n return _setUnconditionally2.apply(this, arguments);\n }\n\n return _setUnconditionally;\n }()\n /**\n * @private\n */\n\n }, {\n key: \"_setWithIfMatch\",\n value: function () {\n var _setWithIfMatch2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee6(mutatorFunction, ttl) {\n var data, revision, result;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n data = mutatorFunction(deepClone(this.descriptor.data));\n\n if (!data) {\n _context6.next = 22;\n break;\n }\n\n revision = this.revision;\n _context6.prev = 3;\n _context6.next = 6;\n return this._postUpdateToServer({\n data: data,\n revision: revision,\n ttl: ttl\n });\n\n case 6:\n result = _context6.sent;\n\n this._handleSuccessfulUpdateResult(result);\n\n return _context6.abrupt(\"return\", this.descriptor.data);\n\n case 11:\n _context6.prev = 11;\n _context6.t0 = _context6[\"catch\"](3);\n\n if (!(_context6.t0.status === 412)) {\n _context6.next = 19;\n break;\n }\n\n _context6.next = 16;\n return this._softSync();\n\n case 16:\n return _context6.abrupt(\"return\", this._setWithIfMatch(mutatorFunction));\n\n case 19:\n throw _context6.t0;\n\n case 20:\n _context6.next = 23;\n break;\n\n case 22:\n return _context6.abrupt(\"return\", this.descriptor.data);\n\n case 23:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[3, 11]]);\n }));\n\n function _setWithIfMatch(_x10, _x11) {\n return _setWithIfMatch2.apply(this, arguments);\n }\n\n return _setWithIfMatch;\n }()\n /**\n * @private\n */\n\n }, {\n key: \"_handleSuccessfulUpdateResult\",\n value: function _handleSuccessfulUpdateResult(result) {\n // Ignore returned value if we already got a newer one\n if (result.last_event_id <= this.descriptor.last_event_id) {\n return;\n }\n\n var previousData = this.descriptor.data !== undefined ? deepClone(this.descriptor.data) : null;\n this.descriptor.revision = result.revision;\n this.descriptor.data = result.data;\n this.descriptor.last_event_id = result.last_event_id;\n this.descriptor.date_expires = result.date_expires;\n this.descriptor.date_updated = new Date(result.date_updated);\n this.services.storage.update(this.type, this.sid, this.uniqueName, {\n last_event_id: result.last_event_id,\n revision: result.revision,\n date_updated: result.date_updated,\n data: result.data\n });\n this.broadcastEventToListeners('updated', {\n data: this.descriptor.data,\n isLocal: true,\n previousData: previousData\n });\n }\n /**\n * @private\n */\n\n }, {\n key: \"_postUpdateToServer\",\n value: function () {\n var _postUpdateToServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee7(request) {\n var requestBody, ifMatch, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (this.isDeleted) {\n _context7.next = 17;\n break;\n }\n\n requestBody = {\n data: request.data\n };\n\n if (request.ttl !== undefined) {\n requestBody.ttl = request.ttl;\n }\n\n ifMatch = request.revision;\n _context7.prev = 4;\n _context7.next = 7;\n return this.services.network.post(this.uri, requestBody, ifMatch);\n\n case 7:\n response = _context7.sent;\n return _context7.abrupt(\"return\", {\n revision: response.body.revision,\n data: request.data,\n last_event_id: response.body.last_event_id,\n date_updated: response.body.date_updated,\n date_expires: response.body.date_expires\n });\n\n case 11:\n _context7.prev = 11;\n _context7.t0 = _context7[\"catch\"](4);\n\n if (_context7.t0.status === 404) {\n this.onRemoved(false);\n }\n\n throw _context7.t0;\n\n case 15:\n _context7.next = 18;\n break;\n\n case 17:\n return _context7.abrupt(\"return\", Promise.reject(new SyncError('The Document has been removed', 404, 54100)));\n\n case 18:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[4, 11]]);\n }));\n\n function _postUpdateToServer(_x12) {\n return _postUpdateToServer2.apply(this, arguments);\n }\n\n return _postUpdateToServer;\n }()\n /**\n * Get new data from server\n * @private\n */\n\n }, {\n key: \"_softSync\",\n value: function () {\n var _softSync2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee8() {\n var _this4 = this;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n return _context8.abrupt(\"return\", this.services.network.get(this.uri).then(function (response) {\n var event = {\n type: 'document_updated',\n id: response.body.last_event_id,\n document_revision: response.body.revision,\n document_data: response.body.data,\n date_created: response.body.date_updated\n };\n\n _this4._update(event);\n\n return _this4;\n }).catch(function (err) {\n if (err.status === 404) {\n _this4.onRemoved(false);\n } else {\n log$1.error(\"Can't get updates for \".concat(_this4.sid, \":\"), err);\n }\n }));\n\n case 1:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function _softSync() {\n return _softSync2.apply(this, arguments);\n }\n\n return _softSync;\n }()\n }, {\n key: \"onRemoved\",\n value: function onRemoved(locally) {\n if (this.isDeleted) {\n return;\n }\n\n var previousData = this.descriptor.data !== undefined ? deepClone(this.descriptor.data) : null;\n this.isDeleted = true;\n\n this._unsubscribe();\n\n this.removalHandler(this.type, this.sid, this.uniqueName);\n this.broadcastEventToListeners('removed', {\n isLocal: locally,\n previousData: previousData\n });\n }\n }, {\n key: \"removeDocument\",\n value: function () {\n var _removeDocument = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee9() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (this.isDeleted) {\n _context9.next = 6;\n break;\n }\n\n _context9.next = 3;\n return this.services.network.delete(this.uri);\n\n case 3:\n this.onRemoved(true);\n _context9.next = 7;\n break;\n\n case 6:\n return _context9.abrupt(\"return\", Promise.reject(new SyncError('The Document has been removed', 404, 54100)));\n\n case 7:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function removeDocument() {\n return _removeDocument.apply(this, arguments);\n }\n\n return removeDocument;\n }()\n }], [{\n key: \"type\",\n get: function get() {\n return 'document';\n }\n }]);\n\n return SyncDocumentImpl;\n}(SyncEntity);\n/**\n * Represents a Sync document, the contents of which is a single JSON object.\n * Use the {@link SyncClient.document} method to obtain a reference to a Sync document.\n * Information about rate limits can be found [here](https://www.twilio.com/docs/sync/limits).\n */\n\n\nvar SyncDocument = /*#__PURE__*/function (_Closeable) {\n _inherits__default[\"default\"](SyncDocument, _Closeable);\n\n var _super2 = _createSuper$5(SyncDocument);\n\n /**\n * @internal\n */\n function SyncDocument(syncDocumentImpl) {\n var _this5;\n\n _classCallCheck__default[\"default\"](this, SyncDocument);\n\n _this5 = _super2.call(this);\n _this5.syncDocumentImpl = syncDocumentImpl;\n\n _this5.syncDocumentImpl.attach(_assertThisInitialized__default[\"default\"](_this5));\n\n return _this5;\n }\n /**\n * Fired when the document is removed, regardless of whether the remover was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has following properties:\n * * boolean `isLocal` - is true if document was removed by a local actor, false otherwise\n * * object `previousData` - contains a snapshot of the document data before removal\n * @example\n * ```typescript\n * document.on('removed', (args) => {\n * console.log(`Document ${document.sid} was removed`);\n * console.log('args.isLocal:', args.isLocal);\n * console.log('args.previousData:', args.previousData);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when the document's contents have changed, regardless of whether the updater was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * boolean `isLocal` - is true if document was updated by a local actor, false otherwise\n * * object `data` - a snapshot of the document's new contents\n * * object `previousData` - contains a snapshot of the document data before the update\n * @example\n * ```typescript\n * document.on('updated', (args) => {\n * console.log(`Document ${document.sid} was updated`);\n * console.log('args.data:', args.data);\n * console.log('args.isLocal:', args.isLocal);\n * console.log('args.previousData:', args.previousData);\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](SyncDocument, [{\n key: \"uri\",\n get: // private props\n function get() {\n return this.syncDocumentImpl.uri;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.syncDocumentImpl.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.syncDocumentImpl.lastEventId;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.syncDocumentImpl.dateExpires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return SyncDocumentImpl.type;\n }\n /**\n * The immutable identifier of this document, assigned by the system.\n */\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.syncDocumentImpl.sid;\n }\n /**\n * The contents of this document.\n */\n\n }, {\n key: \"data\",\n get: function get() {\n return this.syncDocumentImpl.data;\n }\n /**\n * Date when the document was last updated.\n */\n\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.syncDocumentImpl.dateUpdated;\n }\n /**\n * An optional immutable identifier that may be assigned by the programmer\n * to this document during creation. Globally unique among other documents.\n */\n\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.syncDocumentImpl.uniqueName;\n }\n }, {\n key: \"set\",\n value:\n /**\n * Assign new contents to this document. The current data will be overwritten.\n * @param data The new contents to assign.\n * @param metadataUpdates New document metadata.\n * @return A promise resolving to the new data of the document.\n * @example\n * ```typescript\n * // Say, the Document data is `{ name: 'John Smith', age: 34 }`\n * document.set({ name: 'Barbara Oaks' }, { ttl: 86400 })\n * .then((newValue) => {\n * // Now the Document data is `{ name: 'Barbara Oaks' }`\n * console.log('Document set() successful, new data:', newValue);\n * })\n * .catch((error) => {\n * console.error('Document set() failed', error);\n * });\n * ```\n */\n function () {\n var _set2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee10(data, metadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n this.ensureNotClosed();\n return _context10.abrupt(\"return\", this.syncDocumentImpl.set(data, metadataUpdates));\n\n case 2:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function set(_x13, _x14) {\n return _set2.apply(this, arguments);\n }\n\n return set;\n }()\n /**\n * Schedules a modification to this document that will apply a mutation function.\n * @param mutator A function that outputs new data based on the existing data.\n * May be called multiple times, particularly if this document is modified concurrently by remote code.\n * If the mutation ultimately succeeds, the document will have made the particular transition described\n * by this function.\n * @param metadataUpdates New document metadata.\n * @return Resolves with the most recent Document state, whether the output of a\n * successful mutation or a state that prompted graceful cancellation (mutator returned `null`).\n * @example\n * ```typescript\n * const mutatorFunction = (currentValue) => {\n * currentValue.viewCount = (currentValue.viewCount ?? 0) + 1;\n * return currentValue;\n * };\n * document.mutate(mutatorFunction, { ttl: 86400 }))\n * .then((newValue) => {\n * console.log('Document mutate() successful, new data:', newValue);\n * })\n * .catch((error) => {\n * console.error('Document mutate() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee11(mutator, metadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n this.ensureNotClosed();\n return _context11.abrupt(\"return\", this.syncDocumentImpl.mutate(mutator, metadataUpdates));\n\n case 2:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function mutate(_x15, _x16) {\n return _mutate2.apply(this, arguments);\n }\n\n return mutate;\n }()\n /**\n * Modify a document by appending new fields (or by overwriting existing ones) with the values from the provided Object.\n * This is equivalent to:\n * ```typescript\n * document.mutate((currentValue) => Object.assign(currentValue, obj));\n * ```\n * @param obj Specifies the particular (top-level) attributes that will receive new values.\n * @param metadataUpdates New document metadata.\n * @return A promise resolving to the new data of the document.\n * @example\n * ```typescript\n * // Say, the Document data is `{ name: 'John Smith' }`\n * document.update({ age: 34 }, { ttl: 86400 })\n * .then((newValue) => {\n * // Now the Document data is `{ name: 'John Smith', age: 34 }`\n * console.log('Document update() successful, new data:', newValue);\n * })\n * .catch((error) => {\n * console.error('Document update() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"update\",\n value: function () {\n var _update3 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee12(obj, metadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n this.ensureNotClosed();\n return _context12.abrupt(\"return\", this.syncDocumentImpl.update(obj, metadataUpdates));\n\n case 2:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function update(_x17, _x18) {\n return _update3.apply(this, arguments);\n }\n\n return update;\n }()\n /**\n * Update the time-to-live of the document.\n * @param ttl Specifies the time-to-live in seconds after which the document is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * document.setTtl(3600)\n * .then(() => {\n * console.log('Document setTtl() successful');\n * })\n * .catch((error) => {\n * console.error('Document setTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee13(ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n this.ensureNotClosed();\n return _context13.abrupt(\"return\", this.syncDocumentImpl.setTtl(ttl));\n\n case 2:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function setTtl(_x19) {\n return _setTtl2.apply(this, arguments);\n }\n\n return setTtl;\n }()\n /**\n * Delete a document.\n * @return A promise which resolves if (and only if) the document is ultimately deleted.\n * @example\n * ```typescript\n * document.removeDocument()\n * .then(() => {\n * console.log('Document removeDocument() successful');\n * })\n * .catch((error) => {\n * console.error('Document removeDocument() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"removeDocument\",\n value: function () {\n var _removeDocument2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee14() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n this.ensureNotClosed();\n return _context14.abrupt(\"return\", this.syncDocumentImpl.removeDocument());\n\n case 2:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function removeDocument() {\n return _removeDocument2.apply(this, arguments);\n }\n\n return removeDocument;\n }()\n /**\n * Conclude work with the document instance and remove all event listeners attached to it.\n * Any subsequent operation on this object will be rejected with error.\n * Other local copies of this document will continue operating and receiving events normally.\n * @example\n * ```typescript\n * document.close();\n * ```\n */\n\n }, {\n key: \"close\",\n value: function close() {\n _get__default[\"default\"](_getPrototypeOf__default[\"default\"](SyncDocument.prototype), \"close\", this).call(this);\n\n this.syncDocumentImpl.detach(this.listenerUuid);\n }\n }], [{\n key: \"type\",\n get: function get() {\n return SyncDocumentImpl.type;\n }\n }]);\n\n return SyncDocument;\n}(Closeable);\n\n_defineProperty__default[\"default\"](SyncDocument, \"removed\", 'removed');\n\n_defineProperty__default[\"default\"](SyncDocument, \"updated\", 'updated');\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('document metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object, Object]), __metadata(\"design:returntype\", Promise)], SyncDocument.prototype, \"set\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('function', ['undefined', declarativeTypeValidator.objectSchema('document metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Function, Object]), __metadata(\"design:returntype\", Promise)], SyncDocument.prototype, \"mutate\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('document metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object, Object]), __metadata(\"design:returntype\", Promise)], SyncDocument.prototype, \"update\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncDocument.prototype, \"setTtl\", null);\n\n/**\n * Represents an individual element in a Sync list.\n */\nvar SyncListItem = /*#__PURE__*/function () {\n /**\n * @param descriptor Item descriptor\n * @internal\n */\n function SyncListItem(descriptor) {\n _classCallCheck__default[\"default\"](this, SyncListItem);\n\n this.descriptor = descriptor;\n }\n\n _createClass__default[\"default\"](SyncListItem, [{\n key: \"url\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.descriptor.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.lastEventId;\n }\n /**\n * Date when the list item was last updated.\n */\n\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.descriptor.dateUpdated;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.dateExpires;\n }\n /**\n * The index, within the containing list, of this item. This index is stable;\n * even if lower-indexed items are removed, this index will remain as is.\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this.descriptor.index;\n }\n /**\n * The contents of the item.\n */\n\n }, {\n key: \"data\",\n get: function get() {\n return this.descriptor.data;\n }\n /**\n * CachedValue interface.\n */\n\n }, {\n key: \"cacheKey\",\n get: function get() {\n return this.index;\n }\n /**\n * @internal\n */\n\n }, {\n key: \"update\",\n value: function update(eventId, revision, data, dateUpdated) {\n this.descriptor.lastEventId = eventId;\n this.descriptor.revision = revision;\n this.descriptor.data = data;\n this.descriptor.dateUpdated = dateUpdated;\n return this;\n }\n /**\n * @internal\n */\n\n }, {\n key: \"updateDateExpires\",\n value: function updateDateExpires(dateExpires) {\n this.descriptor.dateExpires = dateExpires;\n }\n }]);\n\n return SyncListItem;\n}();\n\n/**\n * Pagination helper class.\n */\nvar Paginator = /*#__PURE__*/function () {\n /**\n * Array of elements on current page.\n */\n\n /**\n * @internal\n */\n function Paginator(items, source) {\n var prevItemId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var nextItemId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n _classCallCheck__default[\"default\"](this, Paginator);\n\n this.items = items;\n this.source = source;\n this.prevPageItemId = prevItemId;\n this.nextPageItemId = nextItemId;\n }\n /**\n * Request next page.\n * Does not modify existing object.\n */\n\n\n _createClass__default[\"default\"](Paginator, [{\n key: \"nextPage\",\n value: function () {\n var _nextPage = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.hasNextPage) {\n _context.next = 2;\n break;\n }\n\n throw new Error('No next page');\n\n case 2:\n return _context.abrupt(\"return\", this.source({\n nextPageItemId: this.nextPageItemId\n }));\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function nextPage() {\n return _nextPage.apply(this, arguments);\n }\n\n return nextPage;\n }()\n /**\n * Request previous page.\n * Does not modify existing object.\n */\n\n }, {\n key: \"prevPage\",\n value: function () {\n var _prevPage = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (this.hasPrevPage) {\n _context2.next = 2;\n break;\n }\n\n throw new Error('No previous page');\n\n case 2:\n return _context2.abrupt(\"return\", this.source({\n prevPageItemId: this.prevPageItemId\n }));\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function prevPage() {\n return _prevPage.apply(this, arguments);\n }\n\n return prevPage;\n }()\n /**\n * Indicates the existence of the next page.\n */\n\n }, {\n key: \"hasNextPage\",\n get: function get() {\n return this.nextPageItemId !== null;\n }\n /**\n * Indicates the existence of the previous page.\n */\n\n }, {\n key: \"hasPrevPage\",\n get: function get() {\n return this.prevPageItemId !== null;\n }\n }]);\n\n return Paginator;\n}();\n\nfunction _createForOfIteratorHelper$3(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$3(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$3(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$3(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$3(o, minLen); }\n\nfunction _arrayLikeToArray$3(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; }\n\nvar Node = /*#__PURE__*/function () {\n function Node(key, value) {\n _classCallCheck__default[\"default\"](this, Node);\n\n this.balanceFactor = 0;\n this.key = key;\n this.value = value;\n this.parent = null;\n this.left = null;\n this.right = null;\n }\n\n _createClass__default[\"default\"](Node, [{\n key: \"isRoot\",\n get: function get() {\n return this.parent === null;\n }\n }, {\n key: \"isLeaf\",\n get: function get() {\n return this.left === null && this.right === null;\n }\n }, {\n key: \"isLeftChild\",\n get: function get() {\n return this.parent.left === this;\n }\n }, {\n key: \"update\",\n value: function update(value) {\n this.value = value;\n }\n }, {\n key: \"replace\",\n value: function replace(target, replacement) {\n if (!target) {\n return;\n }\n\n if (this.left === replacement) {\n this.left = replacement;\n } else if (this.right === replacement) {\n this.right = replacement;\n }\n }\n }]);\n\n return Node;\n}();\n/**\n * @property length\n */\n\n\nvar TreeMap = /*#__PURE__*/function (_Symbol$iterator) {\n function TreeMap(less, equal) {\n _classCallCheck__default[\"default\"](this, TreeMap);\n\n this.isLessThan = less || function (x, y) {\n return x < y;\n };\n\n this.isEqual = equal || function (x, y) {\n return x === y;\n };\n\n this.root = null;\n this.count = null;\n }\n\n _createClass__default[\"default\"](TreeMap, [{\n key: \"size\",\n get: function get() {\n return this.count;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.root = null;\n this.count = 0;\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n var node = this.getNode(key);\n\n if (node) {\n node.update(value);\n } else {\n this.insert(key, value);\n } // return node;\n\n }\n }, {\n key: \"insert\",\n value: function insert(key, value) {\n var node = new Node(key, value);\n this.count++;\n\n if (!this.root) {\n this.root = node; // return node;\n\n return;\n }\n\n var currNode = this.root;\n\n for (;;) {\n if (this.isLessThan(key, currNode.key)) {\n if (currNode.left) {\n currNode = currNode.left;\n } else {\n currNode.left = node;\n break;\n }\n } else {\n if (currNode.right) {\n // eslint-disable-line no-lonely-if\n currNode = currNode.right;\n } else {\n currNode.right = node;\n break;\n }\n }\n }\n\n node.parent = currNode;\n currNode = node;\n\n while (currNode.parent) {\n var parent = currNode.parent;\n var prevBalanceFactor = parent.balanceFactor;\n\n if (currNode.isLeftChild) {\n parent.balanceFactor++;\n } else {\n parent.balanceFactor--;\n }\n\n if (Math.abs(parent.balanceFactor) < Math.abs(prevBalanceFactor)) {\n break;\n }\n\n if (parent.balanceFactor < -1 || parent.balanceFactor > 1) {\n this.rebalance(parent);\n break;\n }\n\n currNode = parent;\n } // return node;\n\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var currentNode = this.root;\n\n while (currentNode) {\n if (this.isEqual(key, currentNode.key)) {\n return currentNode.value;\n }\n\n if (this.isLessThan(key, currentNode.key)) {\n currentNode = currentNode.left;\n } else {\n currentNode = currentNode.right;\n }\n }\n\n return null;\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n // update this algorithm and remove any\n var node = this.getNode(key);\n\n if (!node || node.key !== key) {\n return null;\n }\n\n var parent = node.parent;\n var left = node.left;\n var right = node.right;\n\n if (!!left !== !!right) {\n // one child\n var child = left || right;\n\n if (!parent && !child) {\n this.root = null;\n } else if (parent && !child) {\n this.root = child;\n } else {\n parent.replace(node, null);\n this.rebalance(parent);\n }\n } else {\n // two children\n var maxLeft = node.left;\n\n while (maxLeft.right) {\n maxLeft = maxLeft.right;\n }\n\n if (node.left === maxLeft) {\n if (node.isRoot) {\n this.root = maxLeft;\n maxLeft.parent = null;\n } else {\n if (node.isLeftChild) {\n node.parent.left = maxLeft;\n } else {\n node.parent.right = maxLeft;\n }\n\n maxLeft.parent = node.parent;\n }\n\n maxLeft.right = node.right;\n maxLeft.right.parent = maxLeft;\n maxLeft.balanceFactor = node.balanceFactor;\n node = {\n parent: maxLeft,\n isLeftChild: true\n };\n } else {\n var mlParent = maxLeft.parent;\n var mlLeft = maxLeft.left;\n mlParent.right = mlLeft;\n\n if (mlLeft) {\n mlLeft.parent = mlParent;\n }\n\n if (node.isRoot) {\n this.root = maxLeft;\n maxLeft.parent = null;\n } else {\n if (node.isLeftChild) {\n node.parent.left = maxLeft;\n } else {\n node.parent.right = maxLeft;\n }\n\n maxLeft.parent = node.parent;\n }\n\n maxLeft.right = node.right;\n maxLeft.right.parent = maxLeft;\n maxLeft.left = node.left;\n maxLeft.left.parent = maxLeft;\n maxLeft.balanceFactor = node.balanceFactor;\n node = {\n parent: mlParent,\n isLeftChild: false\n };\n }\n }\n\n this.count--;\n\n while (node.parent) {\n var _parent = node.parent;\n var prevBalanceFactor = _parent.balanceFactor;\n\n if (node.isLeftChild) {\n _parent.balanceFactor -= 1;\n } else {\n _parent.balanceFactor += 1;\n }\n\n if (Math.abs(_parent.balanceFactor) > Math.abs(prevBalanceFactor)) {\n if (_parent.balanceFactor < -1 || _parent.balanceFactor > 1) {\n this.rebalance(_parent);\n\n if (_parent.parent.balanceFactor === 0) {\n node = _parent.parent;\n } else {\n break;\n }\n } else {\n break;\n }\n } else {\n node = _parent;\n }\n }\n\n return null;\n }\n }, {\n key: \"getNode\",\n value: function getNode(key) {\n var currentNode = this.root;\n\n while (currentNode) {\n if (this.isEqual(key, currentNode.key)) {\n return currentNode;\n }\n\n if (this.isLessThan(key, currentNode.key)) {\n currentNode = currentNode.left;\n } else {\n currentNode = currentNode.right;\n }\n }\n\n return null;\n }\n }, {\n key: \"rebalance\",\n value: function rebalance(node) {\n if (node.balanceFactor < 0) {\n if (node.right.balanceFactor > 0) {\n this.rotateRight(node.right);\n this.rotateLeft(node);\n } else {\n this.rotateLeft(node);\n }\n } else if (node.balanceFactor > 0) {\n if (node.left.balanceFactor < 0) {\n this.rotateLeft(node.left);\n this.rotateRight(node);\n } else {\n this.rotateRight(node);\n }\n }\n }\n }, {\n key: \"rotateLeft\",\n value: function rotateLeft(pivot) {\n var root = pivot.right;\n pivot.right = root.left;\n\n if (root.left !== null) {\n root.left.parent = pivot;\n }\n\n root.parent = pivot.parent;\n\n if (root.parent === null) {\n this.root = root;\n } else if (pivot.isLeftChild) {\n root.parent.left = root;\n } else {\n root.parent.right = root;\n }\n\n root.left = pivot;\n pivot.parent = root;\n pivot.balanceFactor = pivot.balanceFactor + 1 - Math.min(root.balanceFactor, 0);\n root.balanceFactor = root.balanceFactor + 1 - Math.max(pivot.balanceFactor, 0);\n }\n }, {\n key: \"rotateRight\",\n value: function rotateRight(pivot) {\n var root = pivot.left;\n pivot.left = root.right;\n\n if (root.right !== null) {\n root.right.parent = pivot;\n }\n\n root.parent = pivot.parent;\n\n if (root.parent === null) {\n this.root = root;\n } else if (pivot.isLeftChild) {\n root.parent.left = root;\n } else {\n root.parent.right = root;\n }\n\n root.right = pivot;\n pivot.parent = root;\n pivot.balanceFactor = pivot.balanceFactor - 1 - Math.min(root.balanceFactor, 0);\n root.balanceFactor = root.balanceFactor - 1 - Math.max(pivot.balanceFactor, 0);\n }\n }, {\n key: _Symbol$iterator,\n value: /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function value() {\n var _iterator, _step, iter;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function value$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iterator = _createForOfIteratorHelper$3(this.getIterator());\n _context.prev = 1;\n\n _iterator.s();\n\n case 3:\n if ((_step = _iterator.n()).done) {\n _context.next = 9;\n break;\n }\n\n iter = _step.value;\n _context.next = 7;\n return iter;\n\n case 7:\n _context.next = 3;\n break;\n\n case 9:\n _context.next = 14;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](1);\n\n _iterator.e(_context.t0);\n\n case 14:\n _context.prev = 14;\n\n _iterator.f();\n\n return _context.finish(14);\n\n case 17:\n case \"end\":\n return _context.stop();\n }\n }\n }, value, this, [[1, 11, 14, 17]]);\n })\n }, {\n key: \"getIterator\",\n value: /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function getIterator() {\n var key,\n currentNode,\n fromleft,\n _args2 = arguments;\n return _regeneratorRuntime__default[\"default\"].wrap(function getIterator$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n key = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : null;\n currentNode = this.root;\n\n case 2:\n if (!currentNode) {\n _context2.next = 8;\n break;\n }\n\n if (!(this.isEqual(key, currentNode.key) || key === null && !currentNode.left)) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt(\"break\", 8);\n\n case 5:\n if (this.isLessThan(key, currentNode.key) || key === null) {\n currentNode = currentNode.left;\n } else {\n currentNode = currentNode.right;\n }\n\n _context2.next = 2;\n break;\n\n case 8:\n if (currentNode) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt(\"return\", null);\n\n case 10:\n fromleft = true;\n\n case 11:\n if (!fromleft) {\n _context2.next = 29;\n break;\n }\n\n _context2.next = 14;\n return [currentNode.key, currentNode.value];\n\n case 14:\n fromleft = false;\n\n if (!currentNode.right) {\n _context2.next = 21;\n break;\n }\n\n currentNode = currentNode.right;\n\n while (currentNode.left) {\n currentNode = currentNode.left;\n }\n\n fromleft = true;\n _context2.next = 27;\n break;\n\n case 21:\n if (!currentNode.parent) {\n _context2.next = 26;\n break;\n }\n\n fromleft = currentNode.parent.left === currentNode;\n currentNode = currentNode.parent;\n _context2.next = 27;\n break;\n\n case 26:\n return _context2.abrupt(\"break\", 37);\n\n case 27:\n _context2.next = 35;\n break;\n\n case 29:\n if (!currentNode.parent) {\n _context2.next = 34;\n break;\n }\n\n fromleft = currentNode.parent.left === currentNode;\n currentNode = currentNode.parent;\n _context2.next = 35;\n break;\n\n case 34:\n return _context2.abrupt(\"break\", 37);\n\n case 35:\n _context2.next = 11;\n break;\n\n case 37:\n return _context2.abrupt(\"return\", null);\n\n case 38:\n case \"end\":\n return _context2.stop();\n }\n }\n }, getIterator, this);\n })\n }, {\n key: \"getReverseIterator\",\n value: /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function getReverseIterator() {\n var key,\n currentNode,\n fromright,\n _args3 = arguments;\n return _regeneratorRuntime__default[\"default\"].wrap(function getReverseIterator$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n key = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;\n currentNode = this.root;\n\n case 2:\n if (!currentNode) {\n _context3.next = 8;\n break;\n }\n\n if (!(this.isEqual(key, currentNode.key) || key === null && !currentNode.right)) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"break\", 8);\n\n case 5:\n if (!this.isLessThan(key, currentNode.key) || key === null) {\n currentNode = currentNode.right;\n } else {\n currentNode = currentNode.left;\n }\n\n _context3.next = 2;\n break;\n\n case 8:\n if (currentNode) {\n _context3.next = 10;\n break;\n }\n\n return _context3.abrupt(\"return\", null);\n\n case 10:\n fromright = true;\n\n case 11:\n if (!fromright) {\n _context3.next = 29;\n break;\n }\n\n _context3.next = 14;\n return [currentNode.key, currentNode.value];\n\n case 14:\n fromright = false;\n\n if (!currentNode.left) {\n _context3.next = 21;\n break;\n }\n\n currentNode = currentNode.left;\n\n while (currentNode.right) {\n currentNode = currentNode.right;\n }\n\n fromright = true;\n _context3.next = 27;\n break;\n\n case 21:\n if (!currentNode.parent) {\n _context3.next = 26;\n break;\n }\n\n fromright = currentNode.parent.right === currentNode;\n currentNode = currentNode.parent;\n _context3.next = 27;\n break;\n\n case 26:\n return _context3.abrupt(\"break\", 37);\n\n case 27:\n _context3.next = 35;\n break;\n\n case 29:\n if (!currentNode.parent) {\n _context3.next = 34;\n break;\n }\n\n fromright = currentNode.parent.right === currentNode;\n currentNode = currentNode.parent;\n _context3.next = 35;\n break;\n\n case 34:\n return _context3.abrupt(\"break\", 37);\n\n case 35:\n _context3.next = 11;\n break;\n\n case 37:\n return _context3.abrupt(\"return\", null);\n\n case 38:\n case \"end\":\n return _context3.stop();\n }\n }\n }, getReverseIterator, this);\n })\n }]);\n\n return TreeMap;\n}(Symbol.iterator);\n\nfunction _createForOfIteratorHelper$2(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$2(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$2(o, minLen); }\n\nfunction _arrayLikeToArray$2(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; }\n\nvar Entry = /*#__PURE__*/function () {\n function Entry(value, lastEventId) {\n var isLeft = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isRight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n _classCallCheck__default[\"default\"](this, Entry);\n\n this._data = value;\n this.lastEventId = lastEventId || 0;\n this.isLeftBound = isLeft;\n this.isRightBound = isRight;\n }\n\n _createClass__default[\"default\"](Entry, [{\n key: \"isValid\",\n get: function get() {\n return true;\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._data;\n }\n }]);\n\n return Entry;\n}();\n\nvar Tombstone = /*#__PURE__*/function () {\n function Tombstone(lastEventId) {\n _classCallCheck__default[\"default\"](this, Tombstone);\n\n this.lastEventId = lastEventId;\n this.isLeftBound = false;\n this.isRightBound = false;\n }\n\n _createClass__default[\"default\"](Tombstone, [{\n key: \"isValid\",\n get: function get() {\n return false;\n }\n }, {\n key: \"value\",\n get: function get() {\n return null;\n }\n }]);\n\n return Tombstone;\n}(); /// A cache for ranges of items in a collection.\n/// Keeps track of the left and right bounds of the entire collection.\n/// Keeps track of the left and right bounds of the pages of items.\n\n\nvar ItemsCache = /*#__PURE__*/function () {\n function ItemsCache() {\n _classCallCheck__default[\"default\"](this, ItemsCache);\n\n _defineProperty__default[\"default\"](this, \"items\", new TreeMap());\n\n _defineProperty__default[\"default\"](this, \"beginKey\", null);\n\n _defineProperty__default[\"default\"](this, \"endKey\", null);\n\n this.items.clear(); // Set count to 0 instead of null.\n }\n /*\n * Used in tests.\n * @internal\n */\n\n\n _createClass__default[\"default\"](ItemsCache, [{\n key: \"size\",\n get: function get() {\n return this.items.size;\n }\n }, {\n key: \"collectionBegin\",\n get: function get() {\n return this.beginKey;\n }\n }, {\n key: \"collectionEnd\",\n get: function get() {\n return this.endKey;\n }\n }, {\n key: \"has\",\n value: function has(key) {\n var _cacheEntry$isValid;\n\n var cacheEntry = this.items.get(key);\n return (_cacheEntry$isValid = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.isValid) !== null && _cacheEntry$isValid !== void 0 ? _cacheEntry$isValid : false;\n } // Whether an entry exists in the cache either as a value or a tombstone.\n\n }, {\n key: \"exists\",\n value: function exists(key) {\n var cacheEntry = this.items.get(key);\n return !!cacheEntry;\n } // Return only cached value or null if it is missing or marked with a tombstone.\n\n }, {\n key: \"getValue\",\n value: function getValue(key) {\n var _cacheEntry$value;\n\n var cacheEntry = this.items.get(key);\n return (_cacheEntry$value = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.value) !== null && _cacheEntry$value !== void 0 ? _cacheEntry$value : null;\n } // Return a cache entry, can either be missing (null), valid or a tombstone.\n\n }, {\n key: \"get\",\n value: function get(key) {\n return this.items.get(key);\n } // Get an item next to the given key in specified search order.\n\n }, {\n key: \"getNextItem\",\n value: function getNextItem(key, order, inclusive) {\n if (key === null) {\n return this.getFirstItem(order);\n }\n\n if (inclusive) {\n return this.getValue(key);\n }\n\n return this.getAdjacentItem(key, order);\n } // Find the first item in the cache based on query order.\n // @internal\n\n }, {\n key: \"getFirstItem\",\n value: function getFirstItem(order) {\n var key = order === 'asc' ? this.beginKey : this.endKey;\n\n if (this.exists(key)) {\n var entry = this.items.get(key);\n\n if (entry.isValid) {\n return entry.value;\n }\n\n return this.getAdjacentItem(key, order);\n }\n\n return null;\n } // Find the first valid item next to the given one.\n // @internal\n\n }, {\n key: \"getAdjacentItem\",\n value: function getAdjacentItem(key, order) {\n var iterator = order === 'asc' ? this.items.getIterator(key) : this.items.getReverseIterator(key);\n\n var _iterator = _createForOfIteratorHelper$2(iterator),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _step$value = _slicedToArray__default[\"default\"](_step.value, 2),\n k = _step$value[0],\n v = _step$value[1];\n\n if (order === 'asc' ? v.isRightBound : v.isLeftBound) {\n break;\n }\n\n if (v.isValid) {\n return v.value;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return null;\n }\n }, {\n key: \"store\",\n value: function store(key, data, lastEventId) {\n var isLeft = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var isRight = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var cacheEntry = this.items.get(key);\n\n if (cacheEntry && cacheEntry.lastEventId > lastEventId) {\n return cacheEntry.value;\n }\n\n this.items.set(key, new Entry(data, lastEventId, cacheEntry ? cacheEntry.isLeftBound && isLeft : isLeft, cacheEntry ? cacheEntry.isRightBound && isRight : isRight)); // Update the `begin` and `end` markers when new items extend beyond current bounds.\n // IMPORTANT: Use `!== null` instead of falsy check because keys can be 0 (which is falsy).\n // Also clear the boundary flag on the old boundary item when extending.\n\n if (this.beginKey !== null && key < this.beginKey) {\n var oldBegin = this.items.get(this.beginKey);\n\n if (oldBegin) {\n oldBegin.isLeftBound = false;\n }\n\n this.beginKey = key;\n }\n\n if (this.endKey !== null && this.endKey < key) {\n var oldEnd = this.items.get(this.endKey);\n\n if (oldEnd) {\n oldEnd.isRightBound = false;\n }\n\n this.endKey = key;\n }\n\n return data;\n } // Populate a contiguous range of items from a paginator page.\n\n }, {\n key: \"populate\",\n value: function populate(entries, isBegin, isEnd) {\n var _this = this;\n\n if (!entries.length) {\n return;\n }\n\n var newEntries = _toConsumableArray__default[\"default\"](entries); // Backend-compatible lexicographical key sort\n\n\n newEntries.sort(function (x1, x2) {\n if (x1.cacheKey === x2.cacheKey) {\n return 0;\n }\n\n if (x1.cacheKey > x2.cacheKey) {\n return 1;\n }\n\n return -1;\n });\n newEntries.forEach(function (item, index) {\n _this.store(item.cacheKey, item, item.lastEventId, index === 0, index === newEntries.length - 1);\n });\n\n if (isBegin) {\n var firstKey = newEntries[0].cacheKey;\n\n if (!this.beginKey || firstKey < this.beginKey) {\n this.beginKey = firstKey;\n }\n }\n\n if (isEnd) {\n var lastKey = newEntries[newEntries.length - 1].cacheKey;\n\n if (!this.endKey || this.endKey < lastKey) {\n this.endKey = lastKey;\n }\n }\n }\n }, {\n key: \"delete\",\n value: function _delete(key, lastEventId) {\n var cacheEntry = this.items.get(key);\n /* Force delete when revision is unknown */\n\n if (cacheEntry === null || lastEventId === null || cacheEntry.lastEventId < lastEventId) {\n this.items.set(key, new Tombstone(lastEventId));\n }\n } // Shall we ignore the item with this key in an update?\n\n }, {\n key: \"isKnown\",\n value: function isKnown(key, lastEventId) {\n var cacheEntry = this.items.get(key);\n return cacheEntry && cacheEntry.lastEventId >= lastEventId;\n }\n }, {\n key: \"getIterator\",\n value: /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function getIterator(key) {\n var _iterator2, _step2, _step2$value, v;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function getIterator$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (key === null && this.beginKey !== null) {\n key = this.beginKey;\n }\n\n if (!(key === null)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n _iterator2 = _createForOfIteratorHelper$2(this.items.getIterator(key));\n _context.prev = 4;\n\n _iterator2.s();\n\n case 6:\n if ((_step2 = _iterator2.n()).done) {\n _context.next = 16;\n break;\n }\n\n _step2$value = _slicedToArray__default[\"default\"](_step2.value, 2), v = _step2$value[1];\n\n if (v.isValid) {\n _context.next = 10;\n break;\n }\n\n return _context.abrupt(\"continue\", 14);\n\n case 10:\n _context.next = 12;\n return v;\n\n case 12:\n if (!v.isRightBound) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt(\"break\", 16);\n\n case 14:\n _context.next = 6;\n break;\n\n case 16:\n _context.next = 21;\n break;\n\n case 18:\n _context.prev = 18;\n _context.t0 = _context[\"catch\"](4);\n\n _iterator2.e(_context.t0);\n\n case 21:\n _context.prev = 21;\n\n _iterator2.f();\n\n return _context.finish(21);\n\n case 24:\n case \"end\":\n return _context.stop();\n }\n }\n }, getIterator, this, [[4, 18, 21, 24]]);\n })\n }, {\n key: \"getReverseIterator\",\n value: /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function getReverseIterator(key) {\n var _iterator3, _step3, _step3$value, v;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function getReverseIterator$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (key === null && this.endKey !== null) {\n key = this.endKey;\n }\n\n if (!(key === null)) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 3:\n _iterator3 = _createForOfIteratorHelper$2(this.items.getReverseIterator(key));\n _context2.prev = 4;\n\n _iterator3.s();\n\n case 6:\n if ((_step3 = _iterator3.n()).done) {\n _context2.next = 16;\n break;\n }\n\n _step3$value = _slicedToArray__default[\"default\"](_step3.value, 2), v = _step3$value[1];\n\n if (v.isValid) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt(\"continue\", 14);\n\n case 10:\n _context2.next = 12;\n return v;\n\n case 12:\n if (!v.isLeftBound) {\n _context2.next = 14;\n break;\n }\n\n return _context2.abrupt(\"break\", 16);\n\n case 14:\n _context2.next = 6;\n break;\n\n case 16:\n _context2.next = 21;\n break;\n\n case 18:\n _context2.prev = 18;\n _context2.t0 = _context2[\"catch\"](4);\n\n _iterator3.e(_context2.t0);\n\n case 21:\n _context2.prev = 21;\n\n _iterator3.f();\n\n return _context2.finish(21);\n\n case 24:\n case \"end\":\n return _context2.stop();\n }\n }\n }, getReverseIterator, this, [[4, 18, 21, 24]]);\n })\n }, {\n key: \"forEach\",\n value: function forEach(callbackfn) {\n if (this.items) {\n var _iterator4 = _createForOfIteratorHelper$2(this.items),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _step4$value = _slicedToArray__default[\"default\"](_step4.value, 2),\n key = _step4$value[0],\n entry = _step4$value[1];\n\n if (entry.isValid) {\n callbackfn(key, entry.value);\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }\n }]);\n\n return ItemsCache;\n}();\n\nfunction reverse(array) {\n return array.reverse();\n}\nfunction last(array) {\n return array.length > 0 ? array[array.length - 1] : undefined;\n}\nfunction head(array) {\n return array.length > 0 ? array[0] : undefined;\n}\n\nfunction _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(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$1(o, minLen); }\n\nfunction _arrayLikeToArray$1(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; }\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$4() { 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 SyncListImpl = /*#__PURE__*/function (_SyncEntity) {\n _inherits__default[\"default\"](SyncListImpl, _SyncEntity);\n\n var _super = _createSuper$4(SyncListImpl);\n\n /**\n * @private\n */\n function SyncListImpl(services, descriptor, removalHandler) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, SyncListImpl);\n\n _this = _super.call(this, services, removalHandler);\n\n var updateRequestReducer = function updateRequestReducer(acc, input) {\n return typeof input.ttl === 'number' ? {\n ttl: input.ttl\n } : acc;\n };\n\n _this.updateMergingQueue = new NamespacedMergingQueue(updateRequestReducer);\n _this.cache = new ItemsCache();\n _this.descriptor = descriptor;\n _this.descriptor.date_updated = new Date(_this.descriptor.date_updated);\n return _this;\n } // private props\n\n\n _createClass__default[\"default\"](SyncListImpl, [{\n key: \"uri\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.descriptor.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.last_event_id;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.descriptor.links;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.date_expires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return 'list';\n } // below properties are specific to Insights only\n\n }, {\n key: \"indexName\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return undefined;\n } // public props, documented along with class description\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.descriptor.sid;\n }\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.descriptor.unique_name || null;\n }\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.descriptor.date_updated;\n }\n }, {\n key: \"_addOrUpdateItemOnServer\",\n value: function () {\n var _addOrUpdateItemOnServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(url, data, ifMatch, ttl) {\n var requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n requestBody = {\n data: data\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n _context.next = 4;\n return this.services.network.post(url, requestBody, ifMatch);\n\n case 4:\n response = _context.sent;\n response.body.data = data;\n response.body.date_updated = new Date(response.body.date_updated);\n return _context.abrupt(\"return\", response.body);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _addOrUpdateItemOnServer(_x, _x2, _x3, _x4) {\n return _addOrUpdateItemOnServer2.apply(this, arguments);\n }\n\n return _addOrUpdateItemOnServer;\n }()\n }, {\n key: \"push\",\n value: function () {\n var _push = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(value, itemMetadata) {\n var ttl, item, index;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n ttl = (itemMetadata || {}).ttl;\n _context2.next = 3;\n return this._addOrUpdateItemOnServer(this.links.items, value, undefined, ttl);\n\n case 3:\n item = _context2.sent;\n index = Number(item.index);\n\n this._handleItemMutated(index, item.url, item.last_event_id, item.revision, value, item.date_updated, item.date_expires, true, false);\n\n return _context2.abrupt(\"return\", this.cache.getValue(index));\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function push(_x5, _x6) {\n return _push.apply(this, arguments);\n }\n\n return push;\n }()\n }, {\n key: \"set\",\n value: function () {\n var _set = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(index, value, itemMetadataUpdates) {\n var _this2 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n input = itemMetadataUpdates || {};\n return _context3.abrupt(\"return\", this.updateMergingQueue.squashAndAdd(index, input, function (input) {\n return _this2._updateItemUnconditionally(index, value, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function set(_x7, _x8, _x9) {\n return _set.apply(this, arguments);\n }\n\n return set;\n }()\n }, {\n key: \"_updateItemUnconditionally\",\n value: function () {\n var _updateItemUnconditionally2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee4(index, data, ttl) {\n var existingItem, itemDescriptor;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.get(index);\n\n case 2:\n existingItem = _context4.sent;\n _context4.next = 5;\n return this._addOrUpdateItemOnServer(existingItem.url, data, undefined, ttl);\n\n case 5:\n itemDescriptor = _context4.sent;\n\n this._handleItemMutated(index, itemDescriptor.url, itemDescriptor.last_event_id, itemDescriptor.revision, itemDescriptor.data, itemDescriptor.date_updated, itemDescriptor.date_expires, false, false);\n\n return _context4.abrupt(\"return\", this.cache.getValue(index));\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _updateItemUnconditionally(_x10, _x11, _x12) {\n return _updateItemUnconditionally2.apply(this, arguments);\n }\n\n return _updateItemUnconditionally;\n }()\n }, {\n key: \"_updateItemWithIfMatch\",\n value: function () {\n var _updateItemWithIfMatch2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee5(index, mutatorFunction, ttl) {\n var existingItem, data, ifMatch, itemDescriptor;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.get(index);\n\n case 2:\n existingItem = _context5.sent;\n data = mutatorFunction(deepClone(existingItem.data));\n\n if (!data) {\n _context5.next = 25;\n break;\n }\n\n ifMatch = existingItem.revision;\n _context5.prev = 6;\n _context5.next = 9;\n return this._addOrUpdateItemOnServer(existingItem.url, data, ifMatch, ttl);\n\n case 9:\n itemDescriptor = _context5.sent;\n\n this._handleItemMutated(index, itemDescriptor.url, itemDescriptor.last_event_id, itemDescriptor.revision, itemDescriptor.data, itemDescriptor.date_updated, itemDescriptor.date_expires, false, false);\n\n return _context5.abrupt(\"return\", this.cache.getValue(index));\n\n case 14:\n _context5.prev = 14;\n _context5.t0 = _context5[\"catch\"](6);\n\n if (!(_context5.t0.status === 412)) {\n _context5.next = 22;\n break;\n }\n\n _context5.next = 19;\n return this._getItemFromServer(index);\n\n case 19:\n return _context5.abrupt(\"return\", this._updateItemWithIfMatch(index, mutatorFunction, ttl));\n\n case 22:\n throw _context5.t0;\n\n case 23:\n _context5.next = 26;\n break;\n\n case 25:\n return _context5.abrupt(\"return\", existingItem);\n\n case 26:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[6, 14]]);\n }));\n\n function _updateItemWithIfMatch(_x13, _x14, _x15) {\n return _updateItemWithIfMatch2.apply(this, arguments);\n }\n\n return _updateItemWithIfMatch;\n }()\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee6(index, mutator, itemMetadataUpdates) {\n var _this3 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n input = itemMetadataUpdates || {};\n return _context6.abrupt(\"return\", this.updateMergingQueue.add(index, input, function (input) {\n return _this3._updateItemWithIfMatch(index, mutator, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function mutate(_x16, _x17, _x18) {\n return _mutate.apply(this, arguments);\n }\n\n return mutate;\n }()\n }, {\n key: \"update\",\n value: function () {\n var _update2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee7(index, obj, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt(\"return\", this.mutate(index, function (remote) {\n return Object.assign(remote, obj);\n }, itemMetadataUpdates));\n\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function update(_x19, _x20, _x21) {\n return _update2.apply(this, arguments);\n }\n\n return update;\n }()\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee8(index) {\n var item, previousItemData, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.get(index);\n\n case 2:\n item = _context8.sent;\n previousItemData = deepClone(item.data);\n _context8.next = 6;\n return this.services.network.delete(item.url);\n\n case 6:\n response = _context8.sent;\n\n this._handleItemRemoved(index, response.body.last_event_id, previousItemData, new Date(response.body.date_updated), false);\n\n case 8:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function remove(_x22) {\n return _remove.apply(this, arguments);\n }\n\n return remove;\n }()\n }, {\n key: \"get\",\n value: function () {\n var _get = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee9(index) {\n var cachedItem;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n cachedItem = this.cache.get(index);\n\n if (!cachedItem) {\n _context9.next = 3;\n break;\n }\n\n return _context9.abrupt(\"return\", cachedItem.value);\n\n case 3:\n return _context9.abrupt(\"return\", this._getItemFromServer(index));\n\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function get(_x23) {\n return _get.apply(this, arguments);\n }\n\n return get;\n }()\n }, {\n key: \"_getItemFromServer\",\n value: function () {\n var _getItemFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee10(index) {\n var result;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this._queryItemsFromServer({\n index: index\n });\n\n case 2:\n result = _context10.sent;\n\n if (!(result.items.length < 1)) {\n _context10.next = 7;\n break;\n }\n\n throw new SyncError(\"No item with index \".concat(index, \" found\"), 404, 54151);\n\n case 7:\n return _context10.abrupt(\"return\", result.items[0]);\n\n case 8:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function _getItemFromServer(_x24) {\n return _getItemFromServer2.apply(this, arguments);\n }\n\n return _getItemFromServer;\n }()\n /**\n * Query items from the List\n * @param args Argument pack for the query.\n * May include the following parameters:\n *\n * - index -- Returns the Item with the specified index or an empty items array, if one doesn't exist.\n * - from -- Item index offset specifying the starting point of the query (inclusive). If not specified,\n * the query starts from either the first or the last item in the List (by index),\n * depending on the Order query parameter.\n * - order -- String(Optional) -- Determines the order of the query. Items are ordered numerically by index.\n * One of {asc, desc}, defaults to asc.\n * - pageSize -- Maximum number of Items in the response (i.e. in this page). Defaults to 50.\n * The max page size is 1000. Note: PageSize between 100 and 1000 returns at most 100 items.\n * - pageToken - Direct paging token, for starting from a specific page.\n * - Metadata - May have the value list. If specified, returns the state of the List in the list attribute of the response.\n * - HideExpired - Determines whether expired List items are filtered out from the result list. By default, is false.\n *\n * Stuff not accepted by the service, internal to SDK:\n *\n * - limit\n *\n * Valid query parameter combinations\n * These are the valid query parameter combinations. [x] should be read as “if x is not provided, the default value is assumed”.\n * The combinations are in order of precedence - e.g., if both Index and PageToken are provided, PageToken is ignored.\n * +-----------------------------------------+------------------------------------------------------------------------------+\n * | Index, [Metadata] | Returns 0-1 Items with the given Index |\n * | PageToken, [Metadata] | Returns a page based on the PageToken returned from a previous query, |\n * | | with this and all following pages modified by any provided query parameters. |\n * | [From], [Order], [Pagesize], [Metadata] | Performs an initial query from a specified offset. |\n * | | Returned PageTokens in the meta block should be used for pagination. |\n * +-----------------------------------------+------------------------------------------------------------------------------+\n * @private\n */\n\n }, {\n key: \"queryItems\",\n value: function () {\n var _queryItems = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee11(args) {\n var _ref2, _args$prevPageItemId, _ref3, _args$nextPageItemId2, _ref4, _args$prevPageItemId2, _ref5, _args$nextPageItemId3;\n\n var cached, fillingSubsequentPage, oldArgs, _ref, _args$nextPageItemId, goingBackwards, cacheIterator, cachedItems, itemsCountToGet, _iterator, _step, _item, getLimit, doFetch, fetchedItems, items, isBegin, isEnd, _iterator2, _step2, item;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!args.index) {\n _context11.next = 5;\n break;\n }\n\n cached = this.cache.get(args.index);\n\n if (!cached) {\n _context11.next = 4;\n break;\n }\n\n return _context11.abrupt(\"return\", this.makePaginator(cached.isValid ? [cached.value] : [], args, false, false));\n\n case 4:\n return _context11.abrupt(\"return\", this._querySingleItemFromServer(args.index));\n\n case 5:\n // If a paginator calls here with nextPageItemId or prevPageItemId it means we are trying to fetch a next or previous\n // page accordingly. the task is to determine the direction (based on args.order and direction of queried page) and\n // prefill it from the cache as much as possible.\n fillingSubsequentPage = !!args.nextPageItemId || !!args.prevPageItemId;\n oldArgs = _objectSpread$2({}, args);\n\n if (fillingSubsequentPage) {\n args.from = (_ref = (_args$nextPageItemId = args.nextPageItemId) !== null && _args$nextPageItemId !== void 0 ? _args$nextPageItemId : args.prevPageItemId) !== null && _ref !== void 0 ? _ref : args.from;\n }\n\n goingBackwards = !!args.prevPageItemId; // If from and order are specified, fetch page of items.\n\n cacheIterator = args.order === 'desc' ? goingBackwards ? this.cache.getIterator((_ref2 = (_args$prevPageItemId = args.prevPageItemId) !== null && _args$prevPageItemId !== void 0 ? _args$prevPageItemId : args.from) !== null && _ref2 !== void 0 ? _ref2 : null) : this.cache.getReverseIterator((_ref3 = (_args$nextPageItemId2 = args.nextPageItemId) !== null && _args$nextPageItemId2 !== void 0 ? _args$nextPageItemId2 : args.from) !== null && _ref3 !== void 0 ? _ref3 : null) : goingBackwards ? this.cache.getReverseIterator((_ref4 = (_args$prevPageItemId2 = args.prevPageItemId) !== null && _args$prevPageItemId2 !== void 0 ? _args$prevPageItemId2 : args.from) !== null && _ref4 !== void 0 ? _ref4 : null) : this.cache.getIterator((_ref5 = (_args$nextPageItemId3 = args.nextPageItemId) !== null && _args$nextPageItemId3 !== void 0 ? _args$nextPageItemId3 : args.from) !== null && _ref5 !== void 0 ? _ref5 : null);\n cachedItems = [];\n itemsCountToGet = fillingSubsequentPage ? args.limit + 1 : args.limit;\n _iterator = _createForOfIteratorHelper$1(cacheIterator);\n _context11.prev = 13;\n\n _iterator.s();\n\n case 15:\n if ((_step = _iterator.n()).done) {\n _context11.next = 25;\n break;\n }\n\n _item = _step.value;\n\n if (!(fillingSubsequentPage && _item.value.index == args.from)) {\n _context11.next = 19;\n break;\n }\n\n return _context11.abrupt(\"continue\", 23);\n\n case 19:\n cachedItems.push(_item.value);\n\n if (!(cachedItems.length >= args.limit)) {\n _context11.next = 23;\n break;\n }\n\n if (goingBackwards) {\n reverse(cachedItems);\n } // We've got a full page of items, so we can easily generate prev/next page navigation\n // However, the first item in the page cannot be collectionBegin, and the last item cannot be collectionEnd\n\n\n return _context11.abrupt(\"return\", this.makePaginator(cachedItems, args, this._prevPageAllowed(cachedItems, args.order), this._nextPageAllowed(cachedItems, args.order)));\n\n case 23:\n _context11.next = 15;\n break;\n\n case 25:\n _context11.next = 30;\n break;\n\n case 27:\n _context11.prev = 27;\n _context11.t0 = _context11[\"catch\"](13);\n\n _iterator.e(_context11.t0);\n\n case 30:\n _context11.prev = 30;\n\n _iterator.f();\n\n return _context11.finish(30);\n\n case 33:\n // cache was not enough, so continue fetching from the server in the same direction\n // whatever the last fetched item was, it will be the next `from`\n if (cachedItems.length > 0) {\n args.from = last(cachedItems).index;\n } // Maximum sync page size is 100 items, 10 is simply 1/10th of that.\n\n\n getLimit = Math.max(itemsCountToGet - cachedItems.length, 10);\n\n if (goingBackwards) {\n args.order = args.order === 'desc' ? 'asc' : 'desc';\n }\n\n doFetch = args.from !== (oldArgs.order === 'desc' ? goingBackwards ? this.cache.collectionEnd : this.cache.collectionBegin : goingBackwards ? this.cache.collectionBegin : this.cache.collectionEnd);\n\n if (!doFetch) {\n _context11.next = 66;\n break;\n }\n\n _context11.next = 40;\n return this._queryItemsFromServer(_objectSpread$2(_objectSpread$2({}, args), {}, {\n limit: getLimit\n }));\n\n case 40:\n fetchedItems = _context11.sent;\n items = fetchedItems.items; // Fix cache boundary setting based on query order\n // In ascending order: hasPrevPage means not at collection beginning, hasNextPage means not at collection end\n // In descending order: hasPrevPage means not at collection end, hasNextPage means not at collection beginning\n\n if (oldArgs.order === 'desc') {\n isBegin = !fetchedItems.hasNextPage; // No next page means we're at the collection beginning (lowest indices)\n\n isEnd = !fetchedItems.hasPrevPage; // No prev page means we're at the collection end (highest indices)\n } else {\n isBegin = !fetchedItems.hasPrevPage; // No prev page means we're at the collection beginning (lowest indices)\n\n isEnd = !fetchedItems.hasNextPage; // No next page means we're at the collection end (highest indices)\n }\n\n this.cache.populate(items, isBegin, isEnd);\n _iterator2 = _createForOfIteratorHelper$1(items);\n _context11.prev = 45;\n\n _iterator2.s();\n\n case 47:\n if ((_step2 = _iterator2.n()).done) {\n _context11.next = 56;\n break;\n }\n\n item = _step2.value;\n\n if (!((cachedItems.length > 0 || fillingSubsequentPage) && item.index == args.from)) {\n _context11.next = 51;\n break;\n }\n\n return _context11.abrupt(\"continue\", 54);\n\n case 51:\n if (goingBackwards) {\n cachedItems.unshift(item);\n } else {\n cachedItems.push(item);\n }\n\n if (!(cachedItems.length >= args.limit)) {\n _context11.next = 54;\n break;\n }\n\n return _context11.abrupt(\"break\", 56);\n\n case 54:\n _context11.next = 47;\n break;\n\n case 56:\n _context11.next = 61;\n break;\n\n case 58:\n _context11.prev = 58;\n _context11.t1 = _context11[\"catch\"](45);\n\n _iterator2.e(_context11.t1);\n\n case 61:\n _context11.prev = 61;\n\n _iterator2.f();\n\n return _context11.finish(61);\n\n case 64:\n _context11.next = 67;\n break;\n\n case 66:\n if (goingBackwards) {\n reverse(cachedItems);\n }\n\n case 67:\n return _context11.abrupt(\"return\", this.makePaginator(cachedItems, oldArgs, this._prevPageAllowed(cachedItems, oldArgs.order), this._nextPageAllowed(cachedItems, oldArgs.order)));\n\n case 68:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[13, 27, 30, 33], [45, 58, 61, 64]]);\n }));\n\n function queryItems(_x25) {\n return _queryItems.apply(this, arguments);\n }\n\n return queryItems;\n }()\n }, {\n key: \"_prevPageAllowed\",\n value: function _prevPageAllowed(items, order) {\n return items.length > 0 && head(items).index !== (order === 'desc' ? this.cache.collectionEnd : this.cache.collectionBegin);\n }\n }, {\n key: \"_nextPageAllowed\",\n value: function _nextPageAllowed(items, order) {\n return items.length > 0 && last(items).index !== (order === 'desc' ? this.cache.collectionBegin : this.cache.collectionEnd);\n } // Paginator depends on:\n // - items listed\n // - was there a previous token (prevPage)\n // - was there a next token (nextPage)\n // - order of items asc/desc\n\n }, {\n key: \"makePaginator\",\n value: function makePaginator(items, args, prevPage, nextPage) {\n var _this4 = this;\n\n args.nextPageItemId = args.prevPageItemId = null;\n\n var hasPrevPage = prevPage && this._prevPageAllowed(items, args.order);\n\n var hasNextPage = nextPage && this._nextPageAllowed(items, args.order);\n\n return new Paginator(items, function (adds) {\n return _this4.queryItems(_objectSpread$2(_objectSpread$2({}, args), adds));\n }, hasPrevPage ? head(items).index : null, hasNextPage ? last(items).index : null);\n }\n }, {\n key: \"_querySingleItemFromServer\",\n value: function () {\n var _querySingleItemFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee12(index) {\n var fetchedItems;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return this._queryItemsFromServer({\n index: index\n });\n\n case 2:\n fetchedItems = _context12.sent;\n\n if (fetchedItems.items.length === 0) {\n // Successfully failed to fetch by key, mark it as a tombstone.\n if (this.cache.exists(index)) {\n this.cache.delete(index, null);\n }\n }\n\n return _context12.abrupt(\"return\", fetchedItems);\n\n case 5:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function _querySingleItemFromServer(_x26) {\n return _querySingleItemFromServer2.apply(this, arguments);\n }\n\n return _querySingleItemFromServer;\n }()\n }, {\n key: \"_queryItemsFromServer\",\n value: function () {\n var _queryItemsFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee13(args) {\n var _response$body$items,\n _response$body,\n _this5 = this;\n\n var uri, response, items, meta;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n uri = new UriBuilder(this.links.items).queryParam('HideExpired', true) // either\n .queryParam('Index', args.index) // or\n .queryParam('PageToken', args.pageToken) // or\n .queryParam('From', args.from).queryParam('PageSize', args.limit) // @fixme use pageSize not limit?\n .queryParam('Order', args.order).build();\n _context13.next = 3;\n return this.services.network.get(uri);\n\n case 3:\n response = _context13.sent;\n items = ((_response$body$items = (_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.items) !== null && _response$body$items !== void 0 ? _response$body$items : []).map(function (el) {\n el.date_updated = new Date(el.date_updated); // Check if this item already exists in cache to avoid firing spurious itemUpdated events during pagination\n\n var existingItem = _this5.cache.get(el.index);\n\n var isItemInCache = existingItem && existingItem.value; // Only call _handleItemMutated if the item is already in cache (real update) or if this is a true remote event\n // During pagination, we shouldn't fire events for items being loaded for the first time\n\n if (isItemInCache) {\n // Item exists in cache, this could be a real update - let _handleItemMutated decide based on revision/event ID\n _this5._handleItemMutated(el.index, el.url, el.last_event_id, el.revision, el.data, el.date_updated, el.date_expires, false, true);\n } else {\n // Item not in cache, just store it without firing events (this is pagination loading)\n var newItem = new SyncListItem({\n index: el.index,\n url: el.url,\n lastEventId: el.last_event_id,\n revision: el.revision,\n data: el.data,\n dateUpdated: el.date_updated,\n dateExpires: el.date_expires\n });\n\n _this5.cache.store(el.index, newItem, el.last_event_id);\n }\n\n return _this5.cache.getValue(el.index);\n });\n meta = response.body.meta;\n return _context13.abrupt(\"return\", this.makePaginator(items, args, !!meta.previous_token, !!meta.next_token));\n\n case 7:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function _queryItemsFromServer(_x27) {\n return _queryItemsFromServer2.apply(this, arguments);\n }\n\n return _queryItemsFromServer;\n }()\n }, {\n key: \"getItems\",\n value: function () {\n var _getItems = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee14(args) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n args = args || {};\n validatePageSize(args.pageSize);\n args.limit = args.pageSize || args.limit || 50;\n args.order = args.order || 'asc';\n return _context14.abrupt(\"return\", this.queryItems(args));\n\n case 5:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function getItems(_x28) {\n return _getItems.apply(this, arguments);\n }\n\n return getItems;\n }()\n /**\n * @return {Promise<Object>} Context of List\n * @private\n */\n\n }, {\n key: \"getContext\",\n value: function () {\n var _getContext = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee15() {\n var response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (this.context) {\n _context15.next = 5;\n break;\n }\n\n _context15.next = 3;\n return this.services.network.get(this.links.context);\n\n case 3:\n response = _context15.sent;\n\n // store fetched context if we have't received any newer update\n this._updateContextIfRequired(response.body.data, response.body.last_event_id);\n\n case 5:\n return _context15.abrupt(\"return\", this.context);\n\n case 6:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function getContext() {\n return _getContext.apply(this, arguments);\n }\n\n return getContext;\n }()\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee16(ttl) {\n var requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.prev = 0;\n requestBody = {\n ttl: ttl\n };\n _context16.next = 4;\n return this.services.network.post(this.uri, requestBody);\n\n case 4:\n response = _context16.sent;\n this.descriptor.date_expires = response.body.date_expires;\n _context16.next = 12;\n break;\n\n case 8:\n _context16.prev = 8;\n _context16.t0 = _context16[\"catch\"](0);\n\n if (_context16.t0.status === 404) {\n this.onRemoved(false);\n }\n\n throw _context16.t0;\n\n case 12:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this, [[0, 8]]);\n }));\n\n function setTtl(_x29) {\n return _setTtl.apply(this, arguments);\n }\n\n return setTtl;\n }()\n }, {\n key: \"setItemTtl\",\n value: function () {\n var _setItemTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee17(index, ttl) {\n var existingItem, requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.get(index);\n\n case 2:\n existingItem = _context17.sent;\n requestBody = {\n ttl: ttl\n };\n _context17.next = 6;\n return this.services.network.post(existingItem.url, requestBody);\n\n case 6:\n response = _context17.sent;\n existingItem.updateDateExpires(response.body.date_expires);\n\n case 8:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function setItemTtl(_x30, _x31) {\n return _setItemTtl.apply(this, arguments);\n }\n\n return setItemTtl;\n }()\n }, {\n key: \"removeList\",\n value: function () {\n var _removeList = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee18() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return this.services.network.delete(this.uri);\n\n case 2:\n this.onRemoved(true);\n\n case 3:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function removeList() {\n return _removeList.apply(this, arguments);\n }\n\n return removeList;\n }()\n }, {\n key: \"onRemoved\",\n value: function onRemoved(locally) {\n this._unsubscribe();\n\n this.removalHandler(this.type, this.sid, this.uniqueName);\n this.broadcastEventToListeners('removed', {\n isLocal: locally\n });\n }\n }, {\n key: \"shouldIgnoreEvent\",\n value: function shouldIgnoreEvent(key, last_event_id) {\n return this.cache.isKnown(key, last_event_id);\n }\n /**\n * Handle update, which came from the server.\n * @private\n */\n\n }, {\n key: \"_update\",\n value: function _update(update, isStrictlyOrdered) {\n var itemIndex = Number(update.item_index);\n update.date_created = new Date(update.date_created); // update.date_expires = new Date(update.date_expires);\n\n switch (update.type) {\n case 'list_item_added':\n case 'list_item_updated':\n {\n this._handleItemMutated(itemIndex, update.item_url, update.id, update.item_revision, update.item_data, update.date_created, update.date_expires, // orchestration events include date_expires since June 2020, SP-386\n update.type === 'list_item_added', true);\n }\n break;\n\n case 'list_item_removed':\n {\n this._handleItemRemoved(itemIndex, update.id, update.item_data, update.date_created, true);\n }\n break;\n\n case 'list_context_updated':\n {\n this._handleContextUpdate(update.context_data, update.id, update.date_created);\n }\n break;\n\n case 'list_removed':\n {\n this.onRemoved(false);\n }\n break;\n }\n\n if (isStrictlyOrdered) {\n this._advanceLastEventId(update.id, update.list_revision);\n }\n }\n }, {\n key: \"_advanceLastEventId\",\n value: function _advanceLastEventId(eventId, revision) {\n if (this.lastEventId < eventId) {\n this.descriptor.last_event_id = eventId;\n\n if (revision) {\n this.descriptor.revision = revision;\n }\n }\n }\n }, {\n key: \"_updateRootDateUpdated\",\n value: function _updateRootDateUpdated(dateUpdated) {\n if (!this.descriptor.date_updated || dateUpdated.getTime() > this.descriptor.date_updated.getTime()) {\n this.descriptor.date_updated = dateUpdated;\n this.services.storage.update(this.type, this.sid, this.uniqueName, {\n date_updated: dateUpdated\n });\n }\n }\n }, {\n key: \"_handleItemMutated\",\n value: function _handleItemMutated(index, url, lastEventId, revision, data, dateUpdated, dateExpires, added, remote) {\n if (this.shouldIgnoreEvent(index, lastEventId)) {\n log$1.trace(\"Item \".concat(index, \" update skipped, current: \").concat(this.lastEventId, \", remote: \").concat(lastEventId));\n return;\n }\n\n this._updateRootDateUpdated(dateUpdated);\n\n var item = this.cache.getValue(index);\n\n if (!item) {\n var newItem = new SyncListItem({\n index: index,\n url: url,\n lastEventId: lastEventId,\n revision: revision,\n data: data,\n dateUpdated: dateUpdated,\n dateExpires: dateExpires\n });\n this.cache.store(index, newItem, lastEventId);\n this.emitItemMutationEvent(newItem, remote, added);\n return;\n }\n\n var previousItemData = deepClone(item.data);\n item.update(lastEventId, revision, data, dateUpdated);\n this.cache.store(index, item, lastEventId);\n\n if (dateExpires !== undefined) {\n item.updateDateExpires(dateExpires);\n }\n\n this.emitItemMutationEvent(item, remote, false, previousItemData);\n }\n /**\n * @private\n */\n\n }, {\n key: \"emitItemMutationEvent\",\n value: function emitItemMutationEvent(item, remote, added) {\n var previousItemData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var eventName = added ? 'itemAdded' : 'itemUpdated';\n var args = {\n item: item,\n isLocal: !remote\n };\n\n if (!added) {\n args.previousItemData = previousItemData;\n }\n\n this.broadcastEventToListeners(eventName, args);\n }\n /**\n * @private\n */\n\n }, {\n key: \"_handleItemRemoved\",\n value: function _handleItemRemoved(index, lastEventId, oldData, dateUpdated, remote) {\n this._updateRootDateUpdated(dateUpdated);\n\n this.cache.delete(index, lastEventId);\n this.broadcastEventToListeners('itemRemoved', {\n index: index,\n isLocal: !remote,\n previousItemData: oldData\n });\n }\n /**\n * @private\n */\n\n }, {\n key: \"_handleContextUpdate\",\n value: function _handleContextUpdate(data, eventId, dateUpdated) {\n this._updateRootDateUpdated(dateUpdated);\n\n if (this._updateContextIfRequired(data, eventId)) {\n this.broadcastEventToListeners('contextUpdated', {\n context: data,\n isLocal: false\n });\n }\n }\n /**\n * @private\n */\n\n }, {\n key: \"_updateContextIfRequired\",\n value: function _updateContextIfRequired(data, eventId) {\n if (!this.contextEventId || eventId > this.contextEventId) {\n this.context = data;\n this.contextEventId = eventId;\n return true;\n } else {\n log$1.trace('Context update skipped, current:', this.lastEventId, ', remote:', eventId);\n return false;\n }\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'list';\n }\n }]);\n\n return SyncListImpl;\n}(SyncEntity);\n/**\n * Represents a Sync list, which stores an ordered list of values.\n * Use the {@link SyncClient.list} method to obtain a reference to a Sync list.\n * Information about rate limits can be found [here](https://www.twilio.com/docs/sync/limits).\n */\n\n\nvar SyncList = /*#__PURE__*/function (_Closeable) {\n _inherits__default[\"default\"](SyncList, _Closeable);\n\n var _super2 = _createSuper$4(SyncList);\n\n /**\n * @internal\n */\n function SyncList(syncListImpl) {\n var _this6;\n\n _classCallCheck__default[\"default\"](this, SyncList);\n\n _this6 = _super2.call(this);\n _this6.syncListImpl = syncListImpl;\n\n _this6.syncListImpl.attach(_assertThisInitialized__default[\"default\"](_this6));\n\n return _this6;\n }\n /**\n * Fired when a new item appears in the list, regardless of whether its creator was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * {@link SyncListItem} `item` - added item\n * * boolean `isLocal` - equals true if the item was added by a local actor, false otherwise\n * @example\n * ```typescript\n * list.on('itemAdded', (args) => {\n * console.log(`List item ${args.item.index} was added`);\n * console.log('args.item.data:', args.item.data);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a list item is updated (not added or removed, but changed), regardless of whether the updater was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * {@link SyncListItem} `item` - updated item\n * * boolean `isLocal` - equals true if the item was updated by a local actor, false otherwise\n * * object `previousItemData` - contains a snapshot of the item data before the update\n * @example\n * ```typescript\n * list.on('itemUpdated', (args) => {\n * console.log(`List item ${args.item.index} was updated`);\n * console.log('args.item.data:', args.item.data);\n * console.log('args.isLocal:', args.isLocal);\n * console.log('args.previousItemData:', args.previousItemData);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a list item is removed, regardless of whether the remover was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * number `index` - index of the removed item\n * * boolean `isLocal` - equals true if the item was removed by a local actor, false otherwise\n * * object `previousItemData` - contains a snapshot of the item data before the removal\n * @example\n * ```typescript\n * list.on('itemRemoved', (args) => {\n * console.log(`List item ${args.index} was removed`);\n * console.log('args.previousItemData:', args.previousItemData);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a list is deleted entirely, by any actor local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * boolean `isLocal` - equals true if the list was removed by a local actor, false otherwise\n * @example\n * ```typescript\n * list.on('removed', (args) => {\n * console.log(`List ${list.sid} was removed`);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](SyncList, [{\n key: \"uri\",\n get: // private props\n function get() {\n return this.syncListImpl.uri;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.syncListImpl.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.syncListImpl.lastEventId;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.syncListImpl.links;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.syncListImpl.dateExpires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return SyncListImpl.type;\n }\n /**\n * Unique ID of the list, immutable identifier assigned by the system.\n */\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.syncListImpl.sid;\n }\n /**\n * Unique name of the list, immutable identifier that can be assigned to the list during creation.\n */\n\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.syncListImpl.uniqueName;\n }\n /**\n * Date when the list was last updated, given in UTC ISO 8601 format (e.g., '2018-04-26T15:23:19.732Z').\n */\n\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.syncListImpl.dateUpdated;\n }\n }, {\n key: \"push\",\n value:\n /**\n * Add a new item to the list.\n * @param data Data to be added.\n * @param itemMetadata Item metadata.\n * @return The newly added item.\n * @example\n * ```typescript\n * list.push({ name: 'John Smith' }, { ttl: 86400 })\n * .then((item) => {\n * console.log(`List Item push() successful, item index: ${item.index}, data:`, item.data)\n * })\n * .catch((error) => {\n * console.error('List Item push() failed', error);\n * });\n * ```\n */\n function () {\n var _push2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee19(data, itemMetadata) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n this.ensureNotClosed();\n return _context19.abrupt(\"return\", this.syncListImpl.push(data, itemMetadata));\n\n case 2:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function push(_x32, _x33) {\n return _push2.apply(this, arguments);\n }\n\n return push;\n }()\n /**\n * Assign new data to an existing item, given its index.\n * @param index Index of the item to be updated.\n * @param value New data to be assigned to an item.\n * @param itemMetadataUpdates New item metadata.\n * @return A promise with the updated item containing latest known data.\n * The promise will be rejected if the item does not exist.\n * @example\n * ```typescript\n * list.set(42, { name: 'John Smith' }, { ttl: 86400 })\n * .then((item) => {\n * console.log('List Item set() successful, item data:', item.data)\n * })\n * .catch((error) => {\n * console.error('List Item set() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"set\",\n value: function () {\n var _set2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee20(index, value, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n this.ensureNotClosed();\n return _context20.abrupt(\"return\", this.syncListImpl.set(index, value, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function set(_x34, _x35, _x36) {\n return _set2.apply(this, arguments);\n }\n\n return set;\n }()\n /**\n * Modify an existing item by applying a mutation function to it.\n * @param index Index of the item to be changed.\n * @param mutator A function that outputs a new data based on the existing data.\n * @param itemMetadataUpdates New item metadata.\n * @return Resolves with the most recent item state, the output of a successful\n * mutation or a state that prompted graceful cancellation (mutator returned `null`). This promise\n * will be rejected if the indicated item does not already exist.\n * @example\n * ```typescript\n * const mutatorFunction = (currentValue) => {\n * currentValue.viewCount = (currentValue.viewCount || 0) + 1;\n * return currentValue;\n * };\n * list.mutate(42, mutatorFunction, { ttl: 86400 })\n * .then((item) => {\n * console.log('List Item mutate() successful, new data:', item.data)\n * })\n * .catch((error) => {\n * console.error('List Item mutate() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee21(index, mutator, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n this.ensureNotClosed();\n return _context21.abrupt(\"return\", this.syncListImpl.mutate(index, mutator, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function mutate(_x37, _x38, _x39) {\n return _mutate2.apply(this, arguments);\n }\n\n return mutate;\n }()\n /**\n * Modify an existing item by appending new fields (or overwriting existing ones) with the values from the object.\n * This is equivalent to\n * ```typescript\n * list.mutate(42, (currentValue) => Object.assign(currentValue, obj));\n * ```\n * @param index Index of an item to be changed.\n * @param obj Set of fields to update.\n * @param itemMetadataUpdates New item metadata.\n * @return A promise with a modified item containing latest known data.\n * The promise will be rejected if the item was not found.\n * @example\n * ```typescript\n * // Say, the List Item (index: 42) data is `{ name: 'John Smith' }`\n * list.update(42, { age: 34 }, { ttl: 86400 })\n * .then((item) => {\n * // Now the List Item data is `{ name: 'John Smith', age: 34 }`\n * console.log('List Item update() successful, new data:', item.data);\n * })\n * .catch((error) => {\n * console.error('List Item update() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"update\",\n value: function () {\n var _update3 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee22(index, obj, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n this.ensureNotClosed();\n return _context22.abrupt(\"return\", this.syncListImpl.update(index, obj, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function update(_x40, _x41, _x42) {\n return _update3.apply(this, arguments);\n }\n\n return update;\n }()\n /**\n * Delete an item given its index.\n * @param index Index of the item to be removed.\n * @return A promise to remove the item.\n * The promise will be rejected if the item was not found.\n * @example\n * ```typescript\n * list.remove(42)\n * .then(() => {\n * console.log('List Item remove() successful');\n * })\n * .catch((error) => {\n * console.error('List Item remove() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"remove\",\n value: function () {\n var _remove2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee23(index) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n this.ensureNotClosed();\n return _context23.abrupt(\"return\", this.syncListImpl.remove(index));\n\n case 2:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function remove(_x43) {\n return _remove2.apply(this, arguments);\n }\n\n return remove;\n }()\n /**\n * Retrieve an item by List index.\n * @param index Item index in the list.\n * @return A promise with the item containing latest known data.\n * The promise will be rejected if the item was not found.\n * @example\n * ```typescript\n * list.get(42)\n * .then((item) => {\n * console.log('List Item get() successful, item data:', item.data)\n * })\n * .catch((error) => {\n * console.error('List Item get() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"get\",\n value: function () {\n var _get3 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee24(index) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n this.ensureNotClosed();\n return _context24.abrupt(\"return\", this.syncListImpl.get(index));\n\n case 2:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function get(_x44) {\n return _get3.apply(this, arguments);\n }\n\n return get;\n }()\n /**\n * Retrieve a list context\n * @return A promise with the list's context\n * @internal\n */\n\n }, {\n key: \"getContext\",\n value: function () {\n var _getContext2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee25() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n this.ensureNotClosed();\n return _context25.abrupt(\"return\", this.syncListImpl.getContext());\n\n case 2:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function getContext() {\n return _getContext2.apply(this, arguments);\n }\n\n return getContext;\n }()\n /**\n * Query a list of items from collection.\n * Information about the query limits can be found {@link https://www.twilio.com/docs/sync/limits|here}.\n * @param queryOptions Query options.\n * @example\n * ```typescript\n * const pageHandler = (paginator) => {\n * paginator.items.forEach((item) => {\n * console.log(`Item ${item.index}:`, item.data);\n * });\n * return paginator.hasNextPage\n * ? paginator.nextPage().then(pageHandler)\n * : null;\n * };\n * list.getItems({ from: 0, order: 'asc' })\n * .then(pageHandler)\n * .catch((error) => {\n * console.error('List getItems() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"getItems\",\n value: function () {\n var _getItems2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee26(queryOptions) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n this.ensureNotClosed();\n return _context26.abrupt(\"return\", this.syncListImpl.getItems(queryOptions));\n\n case 2:\n case \"end\":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function getItems(_x45) {\n return _getItems2.apply(this, arguments);\n }\n\n return getItems;\n }()\n /**\n * Update the time-to-live of the list.\n * @param ttl Specifies the TTL in seconds after which the list is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * list.setTtl(3600)\n * .then(() => {\n * console.log('List setTtl() successful');\n * })\n * .catch((error) => {\n * console.error('List setTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee27(ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n this.ensureNotClosed();\n return _context27.abrupt(\"return\", this.syncListImpl.setTtl(ttl));\n\n case 2:\n case \"end\":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function setTtl(_x46) {\n return _setTtl2.apply(this, arguments);\n }\n\n return setTtl;\n }()\n /**\n * Update the time-to-live of a list item.\n * @param index Item index.\n * @param ttl Specifies the TTL in seconds after which the list item is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * list.setItemTtl(42, 86400)\n * .then(() => {\n * console.log('List setItemTtl() successful');\n * })\n * .catch((error) => {\n * console.error('List setItemTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setItemTtl\",\n value: function () {\n var _setItemTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee28(index, ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n this.ensureNotClosed();\n return _context28.abrupt(\"return\", this.syncListImpl.setItemTtl(index, ttl));\n\n case 2:\n case \"end\":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function setItemTtl(_x47, _x48) {\n return _setItemTtl2.apply(this, arguments);\n }\n\n return setItemTtl;\n }()\n /**\n * Delete this list. It will be impossible to restore it.\n * @return A promise that resolves when the list has been deleted.\n * @example\n * list.removeList()\n * .then(() => {\n * console.log('List removeList() successful');\n * })\n * .catch((error) => {\n * console.error('List removeList() failed', error);\n * });\n */\n\n }, {\n key: \"removeList\",\n value: function () {\n var _removeList2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee29() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n this.ensureNotClosed();\n return _context29.abrupt(\"return\", this.syncListImpl.removeList());\n\n case 2:\n case \"end\":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function removeList() {\n return _removeList2.apply(this, arguments);\n }\n\n return removeList;\n }()\n /**\n * Conclude work with the list instance and remove all event listeners attached to it.\n * Any subsequent operation on this object will be rejected with error.\n * Other local copies of this list will continue operating and receiving events normally.\n * @example\n * ```typescript\n * list.close();\n * ```\n */\n\n }, {\n key: \"close\",\n value: function close() {\n _get__default[\"default\"](_getPrototypeOf__default[\"default\"](SyncList.prototype), \"close\", this).call(this);\n\n this.syncListImpl.detach(this.listenerUuid);\n }\n }], [{\n key: \"type\",\n get: function get() {\n return SyncListImpl.type;\n }\n }]);\n\n return SyncList;\n}(Closeable);\n\n_defineProperty__default[\"default\"](SyncList, \"itemAdded\", 'itemAdded');\n\n_defineProperty__default[\"default\"](SyncList, \"itemUpdated\", 'itemUpdated');\n\n_defineProperty__default[\"default\"](SyncList, \"itemRemoved\", 'itemRemoved');\n\n_defineProperty__default[\"default\"](SyncList, \"removed\", 'removed');\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object, Object]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"push\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger, declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number, Object, Object]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"set\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger, 'function', ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number, Function, Object]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"mutate\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger, declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number, Object, Object]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"update\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"remove\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"get\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', declarativeTypeValidator.objectSchema('query options', {\n from: [declarativeTypeValidator.nonNegativeInteger, 'undefined'],\n pageSize: [declarativeTypeValidator.custom(function (value) {\n return [isPositiveInteger(value), 'a positive integer'];\n }), 'undefined'],\n order: [declarativeTypeValidator.custom(function (value) {\n return [value === 'asc' || value === 'desc', \"either 'asc' or 'desc'\"];\n }), 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"getItems\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"setTtl\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger, declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number, Number]), __metadata(\"design:returntype\", Promise)], SyncList.prototype, \"setItemTtl\", null);\n\n/**\n * Represents an individual element in a Sync map.\n */\nvar SyncMapItem = /*#__PURE__*/function () {\n /**\n * @internal\n */\n function SyncMapItem(descriptor) {\n _classCallCheck__default[\"default\"](this, SyncMapItem);\n\n this.descriptor = descriptor;\n }\n\n _createClass__default[\"default\"](SyncMapItem, [{\n key: \"uri\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.descriptor.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.last_event_id;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.date_expires;\n }\n /**\n * The identifier that maps to this item within the containing Map.\n */\n\n }, {\n key: \"key\",\n get: function get() {\n return this.descriptor.key;\n }\n /**\n * The contents of the item.\n */\n\n }, {\n key: \"data\",\n get: function get() {\n return this.descriptor.data;\n }\n /**\n * Date when the map item was last updated.\n */\n\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.descriptor.date_updated;\n }\n /**\n * CachedValue interface.\n */\n\n }, {\n key: \"cacheKey\",\n get: function get() {\n return this.key;\n }\n /**\n * @internal\n */\n\n }, {\n key: \"update\",\n value: function update(eventId, revision, value, dateUpdated) {\n this.descriptor.last_event_id = eventId;\n this.descriptor.revision = revision;\n this.descriptor.data = value;\n this.descriptor.date_updated = dateUpdated;\n return this;\n }\n /**\n * @internal\n */\n\n }, {\n key: \"updateDateExpires\",\n value: function updateDateExpires(dateExpires) {\n this.descriptor.date_expires = dateExpires;\n }\n }]);\n\n return SyncMapItem;\n}();\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\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); }\n\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; }\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$3() { 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 SyncMapImpl = /*#__PURE__*/function (_SyncEntity) {\n _inherits__default[\"default\"](SyncMapImpl, _SyncEntity);\n\n var _super = _createSuper$3(SyncMapImpl);\n\n /**\n * @private\n */\n function SyncMapImpl(services, descriptor, removalHandler) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, SyncMapImpl);\n\n _this = _super.call(this, services, removalHandler);\n\n var updateRequestReducer = function updateRequestReducer(acc, input) {\n return typeof input.ttl === 'number' ? {\n ttl: input.ttl\n } : acc;\n };\n\n _this.updateMergingQueue = new NamespacedMergingQueue(updateRequestReducer);\n _this.cache = new ItemsCache();\n _this.descriptor = descriptor;\n _this.descriptor.date_updated = new Date(_this.descriptor.date_updated);\n\n if (descriptor.items) {\n descriptor.items.forEach(function (itemDescriptor) {\n itemDescriptor.date_updated = new Date(itemDescriptor.date_updated);\n\n _this.cache.store(itemDescriptor.key, new SyncMapItem(itemDescriptor), itemDescriptor.last_event_id);\n });\n }\n\n return _this;\n } // private props\n\n\n _createClass__default[\"default\"](SyncMapImpl, [{\n key: \"uri\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.descriptor.links;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.descriptor.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.last_event_id;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.date_expires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return 'map';\n } // below properties are specific to Insights only\n\n }, {\n key: \"indexName\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return undefined;\n } // public props, documented along with class description\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.descriptor.sid;\n }\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.descriptor.unique_name || null;\n }\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.descriptor.date_updated;\n }\n }, {\n key: \"set\",\n value: function () {\n var _set = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(key, value, itemMetadataUpdates) {\n var _this2 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n input = itemMetadataUpdates || {};\n return _context.abrupt(\"return\", this.updateMergingQueue.squashAndAdd(key, input, function (input) {\n return _this2._putItemUnconditionally(key, value, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function set(_x, _x2, _x3) {\n return _set.apply(this, arguments);\n }\n\n return set;\n }()\n }, {\n key: \"get\",\n value: function () {\n var _get = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(key) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(key === null || key === undefined)) {\n _context2.next = 2;\n break;\n }\n\n throw new SyncError('SyncMapItem key may not be empty', 400, 54209);\n\n case 2:\n if (!this.cache.has(key)) {\n _context2.next = 6;\n break;\n }\n\n return _context2.abrupt(\"return\", this.cache.getValue(key));\n\n case 6:\n return _context2.abrupt(\"return\", this._getItemFromServer(key));\n\n case 7:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function get(_x4) {\n return _get.apply(this, arguments);\n }\n\n return get;\n }()\n }, {\n key: \"_getItemFromServer\",\n value: function () {\n var _getItemFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(key) {\n var result;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this._queryItemsFromServer({\n key: key\n });\n\n case 2:\n result = _context3.sent;\n\n if (!(result.items.length < 1)) {\n _context3.next = 7;\n break;\n }\n\n throw new SyncError(\"The specified Map Item does not exist\", 404, 54201);\n\n case 7:\n return _context3.abrupt(\"return\", result.items[0]);\n\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _getItemFromServer(_x5) {\n return _getItemFromServer2.apply(this, arguments);\n }\n\n return _getItemFromServer;\n }()\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee4(key, mutator, itemMetadataUpdates) {\n var _this3 = this;\n\n var input;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n input = itemMetadataUpdates || {};\n return _context4.abrupt(\"return\", this.updateMergingQueue.add(key, input, function (input) {\n return _this3._putItemWithIfMatch(key, mutator, input.ttl);\n }));\n\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function mutate(_x6, _x7, _x8) {\n return _mutate.apply(this, arguments);\n }\n\n return mutate;\n }()\n }, {\n key: \"update\",\n value: function () {\n var _update2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee5(key, obj, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt(\"return\", this.mutate(key, function (remote) {\n return Object.assign(remote, obj);\n }, itemMetadataUpdates));\n\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function update(_x9, _x10, _x11) {\n return _update2.apply(this, arguments);\n }\n\n return update;\n }()\n }, {\n key: \"_putItemUnconditionally\",\n value: function () {\n var _putItemUnconditionally2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee6(key, data, ttl) {\n var result, item;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this._putItemToServer(key, data, undefined, ttl);\n\n case 2:\n result = _context6.sent;\n item = result.item;\n\n this._handleItemMutated(item.key, item.url, item.last_event_id, item.revision, item.data, item.date_updated, item.date_expires, result.added, false);\n\n return _context6.abrupt(\"return\", this.cache.getValue(item.key));\n\n case 6:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function _putItemUnconditionally(_x12, _x13, _x14) {\n return _putItemUnconditionally2.apply(this, arguments);\n }\n\n return _putItemUnconditionally;\n }()\n }, {\n key: \"_putItemWithIfMatch\",\n value: function () {\n var _putItemWithIfMatch2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee7(key, mutatorFunction, ttl) {\n var currentItem, data, ifMatch, result, item;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.get(key).catch(function (error) {\n if (error.status === 404) {\n // PUT /Items/myKey with `If-Match: -1` acts as \"put if not exists\"\n return new SyncMapItem({\n key: key,\n data: {},\n last_event_id: -1,\n revision: '-1',\n url: null,\n date_updated: null,\n date_expires: null\n });\n } else {\n throw error;\n }\n });\n\n case 2:\n currentItem = _context7.sent;\n data = mutatorFunction(deepClone(currentItem.data));\n\n if (!data) {\n _context7.next = 26;\n break;\n }\n\n ifMatch = currentItem.revision;\n _context7.prev = 6;\n _context7.next = 9;\n return this._putItemToServer(key, data, ifMatch, ttl);\n\n case 9:\n result = _context7.sent;\n item = result.item;\n\n this._handleItemMutated(item.key, item.url, item.last_event_id, item.revision, item.data, item.date_updated, item.date_expires, result.added, false);\n\n return _context7.abrupt(\"return\", this.cache.getValue(item.key));\n\n case 15:\n _context7.prev = 15;\n _context7.t0 = _context7[\"catch\"](6);\n\n if (!(_context7.t0.status === 412)) {\n _context7.next = 23;\n break;\n }\n\n _context7.next = 20;\n return this._getItemFromServer(key);\n\n case 20:\n return _context7.abrupt(\"return\", this._putItemWithIfMatch(key, mutatorFunction, ttl));\n\n case 23:\n throw _context7.t0;\n\n case 24:\n _context7.next = 27;\n break;\n\n case 26:\n return _context7.abrupt(\"return\", currentItem);\n\n case 27:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[6, 15]]);\n }));\n\n function _putItemWithIfMatch(_x15, _x16, _x17) {\n return _putItemWithIfMatch2.apply(this, arguments);\n }\n\n return _putItemWithIfMatch;\n }()\n }, {\n key: \"_putItemToServer\",\n value: function () {\n var _putItemToServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee8(key, data, ifMatch, ttl) {\n var url, requestBody, response, mapItemDescriptor, added;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n url = new UriBuilder(this.links.items).pathSegment(key).build();\n requestBody = {\n data: data\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n _context8.prev = 3;\n _context8.next = 6;\n return this.services.network.put(url, requestBody, ifMatch);\n\n case 6:\n response = _context8.sent;\n mapItemDescriptor = response.body;\n mapItemDescriptor.data = data; // The server does not return the data in the response\n\n mapItemDescriptor.date_updated = new Date(mapItemDescriptor.date_updated);\n added = response.status.code === 201;\n return _context8.abrupt(\"return\", {\n added: added,\n item: mapItemDescriptor\n });\n\n case 14:\n _context8.prev = 14;\n _context8.t0 = _context8[\"catch\"](3);\n\n if (_context8.t0.status === 404) {\n this.onRemoved(false);\n }\n\n throw _context8.t0;\n\n case 18:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this, [[3, 14]]);\n }));\n\n function _putItemToServer(_x18, _x19, _x20, _x21) {\n return _putItemToServer2.apply(this, arguments);\n }\n\n return _putItemToServer;\n }()\n }, {\n key: \"remove\",\n value: function () {\n var _remove = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee9(key) {\n var item, previousItemData, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.get(key);\n\n case 2:\n item = _context9.sent;\n previousItemData = deepClone(item.data);\n _context9.next = 6;\n return this.services.network.delete(item.uri);\n\n case 6:\n response = _context9.sent;\n\n this._handleItemRemoved(key, response.body.last_event_id, previousItemData, new Date(response.body.date_updated), false);\n\n case 8:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function remove(_x22) {\n return _remove.apply(this, arguments);\n }\n\n return remove;\n }()\n /**\n * @param args Argument pack for the query.\n * May include the following parameters:\n *\n * - key -- Returns the Item with the specified key or an empty items array, if one doesn't exist.\n * - from -- Item index offset specifying the starting point of the query (inclusive). If not specified,\n * the query starts from either the first or the last item in the List (by index),\n * depending on the Order query parameter.\n * - order -- String(Optional) -- Determines the order of the query. Items are ordered numerically by index.\n * One of {asc, desc}, defaults to asc.\n * - pageSize -- Maximum number of Items in the response (i.e. in this page). Defaults to 50.\n * The max page size is 1000. Note: PageSize between 100 and 1000 returns at most 100 items.\n * - pageToken - Direct paging token, for starting from a specific page.\n * - Metadata - May have the value list. If specified, returns the state of the List in the list attribute of the response.\n * - HideExpired - Determines whether expired List items are filtered out from the result list. By default, is false.\n *\n * Stuff not accepted by the service, internal to SDK:\n *\n * - limit\n * - isNextPage\n *\n * Valid query parameter combinations\n * These are the valid query parameter combinations. [x] should be read as “if x is not provided, the default value is assumed”.\n * The combinations are in order of precedence - e.g., if both Key and PageToken are provided, PageToken is ignored.\n * +-----------------------------------------+------------------------------------------------------------------------------+\n * | Key, [Metadata] | Returns 0-1 Items with the given Key |\n * | PageToken, [Metadata] | Returns a page based on the PageToken returned from a previous query, |\n * | | with this and all following pages modified by any provided query parameters. |\n * | [From], [Order], [Pagesize], [Metadata] | Performs an initial query from a specified offset. |\n * | | Returned PageTokens in the meta block should be used for pagination. |\n * +-----------------------------------------+------------------------------------------------------------------------------+\n * @private\n */\n\n }, {\n key: \"queryItems\",\n value: function () {\n var _queryItems = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee10(args) {\n var _ref2, _args$prevPageItemId, _ref3, _args$nextPageItemId2, _ref4, _args$prevPageItemId2, _ref5, _args$nextPageItemId3;\n\n var cached, fillingSubsequentPage, oldArgs, _ref, _args$nextPageItemId, goingBackwards, cacheIterator, cachedItems, itemsCountToGet, _iterator, _step, _item, getLimit, doFetch, fetchedItems, items, isBegin, isEnd, _iterator2, _step2, item;\n\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!args.key) {\n _context10.next = 5;\n break;\n }\n\n cached = this.cache.get(args.key);\n\n if (!cached) {\n _context10.next = 4;\n break;\n }\n\n return _context10.abrupt(\"return\", this.makePaginator(cached.isValid ? [cached.value] : [], args, false, false));\n\n case 4:\n return _context10.abrupt(\"return\", this._querySingleItemFromServer(args.key));\n\n case 5:\n // If a paginator calls here with nextPageItemId or prevPageItemId it means we are trying to fetch a next or previous\n // page accordingly. the task is to determine the direction (based on args.order and direction of queried page) and\n // prefill it from the cache as much as possible.\n fillingSubsequentPage = !!args.nextPageItemId || !!args.prevPageItemId;\n oldArgs = _objectSpread$1({}, args);\n\n if (fillingSubsequentPage) {\n args.from = (_ref = (_args$nextPageItemId = args.nextPageItemId) !== null && _args$nextPageItemId !== void 0 ? _args$nextPageItemId : args.prevPageItemId) !== null && _ref !== void 0 ? _ref : args.from;\n }\n\n goingBackwards = !!args.prevPageItemId; // If from and order are specified, fetch page of items.\n\n cacheIterator = args.order === 'desc' ? goingBackwards ? this.cache.getIterator((_ref2 = (_args$prevPageItemId = args.prevPageItemId) !== null && _args$prevPageItemId !== void 0 ? _args$prevPageItemId : args.from) !== null && _ref2 !== void 0 ? _ref2 : null) : this.cache.getReverseIterator((_ref3 = (_args$nextPageItemId2 = args.nextPageItemId) !== null && _args$nextPageItemId2 !== void 0 ? _args$nextPageItemId2 : args.from) !== null && _ref3 !== void 0 ? _ref3 : null) : goingBackwards ? this.cache.getReverseIterator((_ref4 = (_args$prevPageItemId2 = args.prevPageItemId) !== null && _args$prevPageItemId2 !== void 0 ? _args$prevPageItemId2 : args.from) !== null && _ref4 !== void 0 ? _ref4 : null) : this.cache.getIterator((_ref5 = (_args$nextPageItemId3 = args.nextPageItemId) !== null && _args$nextPageItemId3 !== void 0 ? _args$nextPageItemId3 : args.from) !== null && _ref5 !== void 0 ? _ref5 : null);\n cachedItems = [];\n itemsCountToGet = fillingSubsequentPage ? args.limit + 1 : args.limit;\n _iterator = _createForOfIteratorHelper(cacheIterator);\n _context10.prev = 13;\n\n _iterator.s();\n\n case 15:\n if ((_step = _iterator.n()).done) {\n _context10.next = 25;\n break;\n }\n\n _item = _step.value;\n\n if (!(fillingSubsequentPage && _item.value.key == args.from)) {\n _context10.next = 19;\n break;\n }\n\n return _context10.abrupt(\"continue\", 23);\n\n case 19:\n cachedItems.push(_item.value);\n\n if (!(cachedItems.length >= args.limit)) {\n _context10.next = 23;\n break;\n }\n\n if (goingBackwards) {\n reverse(cachedItems);\n } // We've got a full page of items, so we can easily generate prev/next page navigation\n // However, the first item in the page cannot be collectionBegin, and the last item cannot be collectionEnd\n\n\n return _context10.abrupt(\"return\", this.makePaginator(cachedItems, args, this._prevPageAllowed(cachedItems, args.order), this._nextPageAllowed(cachedItems, args.order)));\n\n case 23:\n _context10.next = 15;\n break;\n\n case 25:\n _context10.next = 30;\n break;\n\n case 27:\n _context10.prev = 27;\n _context10.t0 = _context10[\"catch\"](13);\n\n _iterator.e(_context10.t0);\n\n case 30:\n _context10.prev = 30;\n\n _iterator.f();\n\n return _context10.finish(30);\n\n case 33:\n // cache was not enough, so continue fetching from the server in the same direction\n // whatever the last fetched item was, it will be the next `from`\n if (cachedItems.length > 0) {\n args.from = last(cachedItems).key;\n } // Maximum sync page size is 100 items, 10 is simply 1/10th of that.\n\n\n getLimit = Math.max(itemsCountToGet - cachedItems.length, 10);\n\n if (goingBackwards) {\n args.order = args.order === 'desc' ? 'asc' : 'desc';\n }\n\n doFetch = args.from !== (oldArgs.order === 'desc' ? goingBackwards ? this.cache.collectionEnd : this.cache.collectionBegin : goingBackwards ? this.cache.collectionBegin : this.cache.collectionEnd);\n\n if (!doFetch) {\n _context10.next = 66;\n break;\n }\n\n _context10.next = 40;\n return this._queryItemsFromServer(_objectSpread$1(_objectSpread$1({}, args), {}, {\n limit: getLimit\n }));\n\n case 40:\n fetchedItems = _context10.sent;\n items = fetchedItems.items; // Fix cache boundary setting based on query order\n // In ascending order: hasPrevPage means not at collection beginning, hasNextPage means not at collection end\n // In descending order: hasPrevPage means not at collection end, hasNextPage means not at collection beginning\n\n if (oldArgs.order === 'desc') {\n isBegin = !fetchedItems.hasNextPage; // No next page means we're at the collection beginning (lowest keys)\n\n isEnd = !fetchedItems.hasPrevPage; // No prev page means we're at the collection end (highest keys)\n } else {\n isBegin = !fetchedItems.hasPrevPage; // No prev page means we're at the collection beginning (lowest keys)\n\n isEnd = !fetchedItems.hasNextPage; // No next page means we're at the collection end (highest keys)\n }\n\n this.cache.populate(items, isBegin, isEnd);\n _iterator2 = _createForOfIteratorHelper(items);\n _context10.prev = 45;\n\n _iterator2.s();\n\n case 47:\n if ((_step2 = _iterator2.n()).done) {\n _context10.next = 56;\n break;\n }\n\n item = _step2.value;\n\n if (!((cachedItems.length > 0 || fillingSubsequentPage) && item.key == args.from)) {\n _context10.next = 51;\n break;\n }\n\n return _context10.abrupt(\"continue\", 54);\n\n case 51:\n if (goingBackwards) {\n cachedItems.unshift(item);\n } else {\n cachedItems.push(item);\n }\n\n if (!(cachedItems.length >= args.limit)) {\n _context10.next = 54;\n break;\n }\n\n return _context10.abrupt(\"break\", 56);\n\n case 54:\n _context10.next = 47;\n break;\n\n case 56:\n _context10.next = 61;\n break;\n\n case 58:\n _context10.prev = 58;\n _context10.t1 = _context10[\"catch\"](45);\n\n _iterator2.e(_context10.t1);\n\n case 61:\n _context10.prev = 61;\n\n _iterator2.f();\n\n return _context10.finish(61);\n\n case 64:\n _context10.next = 67;\n break;\n\n case 66:\n if (goingBackwards) {\n reverse(cachedItems);\n }\n\n case 67:\n return _context10.abrupt(\"return\", this.makePaginator(cachedItems, oldArgs, this._prevPageAllowed(cachedItems, oldArgs.order), this._nextPageAllowed(cachedItems, oldArgs.order)));\n\n case 68:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this, [[13, 27, 30, 33], [45, 58, 61, 64]]);\n }));\n\n function queryItems(_x23) {\n return _queryItems.apply(this, arguments);\n }\n\n return queryItems;\n }()\n }, {\n key: \"_prevPageAllowed\",\n value: function _prevPageAllowed(items, order) {\n return items.length > 0 && head(items).key !== (order === 'desc' ? this.cache.collectionEnd : this.cache.collectionBegin);\n }\n }, {\n key: \"_nextPageAllowed\",\n value: function _nextPageAllowed(items, order) {\n return items.length > 0 && last(items).key !== (order === 'desc' ? this.cache.collectionBegin : this.cache.collectionEnd);\n } // Paginator depends on:\n // - items listed\n // - was there a previous token (prevPage)\n // - was there a next token (nextPage)\n // - order of items asc/desc\n\n }, {\n key: \"makePaginator\",\n value: function makePaginator(items, args, prevPage, nextPage) {\n var _this4 = this;\n\n args.nextPageItemId = args.prevPageItemId = null;\n\n var hasPrevPage = prevPage && this._prevPageAllowed(items, args.order);\n\n var hasNextPage = nextPage && this._nextPageAllowed(items, args.order);\n\n return new Paginator(items, function (adds) {\n return _this4.queryItems(_objectSpread$1(_objectSpread$1({}, args), adds));\n }, hasPrevPage ? head(items).key : null, hasNextPage ? last(items).key : null);\n }\n }, {\n key: \"_querySingleItemFromServer\",\n value: function () {\n var _querySingleItemFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee11(key) {\n var fetchedItems;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this._queryItemsFromServer({\n key: key\n });\n\n case 2:\n fetchedItems = _context11.sent;\n\n if (fetchedItems.items.length === 0) {\n // Successfully failed to fetch by key, mark it as a tombstone.\n if (this.cache.exists(key)) {\n this.cache.delete(key, null);\n }\n }\n\n return _context11.abrupt(\"return\", fetchedItems);\n\n case 5:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function _querySingleItemFromServer(_x24) {\n return _querySingleItemFromServer2.apply(this, arguments);\n }\n\n return _querySingleItemFromServer;\n }()\n }, {\n key: \"_queryItemsFromServer\",\n value: function () {\n var _queryItemsFromServer2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee12(args) {\n var _response$body$items,\n _response$body,\n _this5 = this;\n\n var uri, response, items, meta;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n uri = new UriBuilder(this.links.items).queryParam('HideExpired', true) // either\n .queryParam('Key', args.key) // or\n .queryParam('PageToken', args.pageToken) // or\n .queryParam('From', args.from).queryParam('PageSize', args.limit).queryParam('Order', args.order).build();\n _context12.next = 3;\n return this.services.network.get(uri);\n\n case 3:\n response = _context12.sent;\n items = ((_response$body$items = (_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.items) !== null && _response$body$items !== void 0 ? _response$body$items : []).map(function (el) {\n el.date_updated = new Date(el.date_updated); // Check if this item already exists in cache to avoid firing spurious itemUpdated events during pagination\n\n var existingItem = _this5.cache.get(el.key);\n\n var isItemInCache = existingItem && existingItem.value; // Only call _handleItemMutated if the item is already in cache (real update)\n // During pagination, we shouldn't fire events for items being loaded for the first time\n\n if (isItemInCache) {\n // Item exists in cache, this could be a real update - let _handleItemMutated decide based on revision/event ID\n _this5._handleItemMutated(el.key, el.url, el.last_event_id, el.revision, el.data, el.date_updated, el.date_expires, false, true);\n } else {\n // Item not in cache, just store it without firing events (this is pagination loading)\n var newItem = new SyncMapItem({\n key: el.key,\n url: el.url,\n last_event_id: el.last_event_id,\n revision: el.revision,\n data: el.data,\n date_updated: el.date_updated,\n date_expires: el.date_expires\n });\n\n _this5.cache.store(el.key, newItem, el.last_event_id);\n }\n\n return _this5.cache.getValue(el.key);\n });\n meta = response.body.meta;\n return _context12.abrupt(\"return\", this.makePaginator(items, args, !!meta.previous_token, !!meta.next_token));\n\n case 7:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function _queryItemsFromServer(_x25) {\n return _queryItemsFromServer2.apply(this, arguments);\n }\n\n return _queryItemsFromServer;\n }()\n }, {\n key: \"getItems\",\n value: function () {\n var _getItems = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee13(args) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n args = args || {};\n validatePageSize(args.pageSize);\n args.limit = args.pageSize || args.limit || 50;\n args.order = args.order || 'asc';\n return _context13.abrupt(\"return\", this.queryItems(args));\n\n case 5:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function getItems(_x26) {\n return _getItems.apply(this, arguments);\n }\n\n return getItems;\n }()\n }, {\n key: \"shouldIgnoreEvent\",\n value: function shouldIgnoreEvent(key, eventId) {\n return this.cache.isKnown(key, eventId);\n }\n /**\n * Handle update from the server\n * @private\n */\n\n }, {\n key: \"_update\",\n value: function _update(update, isStrictlyOrdered) {\n update.date_created = new Date(update.date_created); // update.date_expires = new Date(update.date_expires);\n\n switch (update.type) {\n case 'map_item_added':\n case 'map_item_updated':\n {\n this._handleItemMutated(update.item_key, update.item_url, update.id, update.item_revision, update.item_data, update.date_created, update.date_expires, // orchestration events include date_expires since June 2020, SP-386\n update.type === 'map_item_added', true);\n }\n break;\n\n case 'map_item_removed':\n {\n this._handleItemRemoved(update.item_key, update.id, update.item_data, update.date_created, true);\n }\n break;\n\n case 'map_removed':\n {\n this.onRemoved(false);\n }\n break;\n }\n\n if (isStrictlyOrdered) {\n this._advanceLastEventId(update.id, update.map_revision);\n }\n }\n }, {\n key: \"_advanceLastEventId\",\n value: function _advanceLastEventId(eventId, revision) {\n if (this.lastEventId < eventId) {\n this.descriptor.last_event_id = eventId;\n\n if (revision) {\n this.descriptor.revision = revision;\n }\n }\n }\n }, {\n key: \"_updateRootDateUpdated\",\n value: function _updateRootDateUpdated(dateUpdated) {\n if (!this.descriptor.date_updated || dateUpdated.getTime() > this.descriptor.date_updated.getTime()) {\n this.descriptor.date_updated = dateUpdated;\n this.services.storage.update(this.type, this.sid, this.uniqueName, {\n date_updated: dateUpdated\n });\n }\n }\n }, {\n key: \"_handleItemMutated\",\n value: function _handleItemMutated(key, url, lastEventId, revision, data, dateUpdated, dateExpires, added, remote) {\n if (this.shouldIgnoreEvent(key, lastEventId)) {\n log$1.trace('SyncMapItem ', key, ' update skipped, current:', this.lastEventId, ', remote:', lastEventId);\n return;\n }\n\n this._updateRootDateUpdated(dateUpdated);\n\n var item = this.cache.getValue(key);\n\n if (!item) {\n var newItem = new SyncMapItem({\n key: key,\n url: url,\n last_event_id: lastEventId,\n revision: revision,\n data: data,\n date_updated: dateUpdated,\n date_expires: dateExpires\n });\n this.cache.store(key, newItem, lastEventId);\n this.emitItemMutationEvent(newItem, remote, added);\n return;\n }\n\n var previousItemData = deepClone(item.data);\n item.update(lastEventId, revision, data, dateUpdated);\n this.cache.store(key, item, lastEventId);\n\n if (dateExpires !== undefined) {\n item.updateDateExpires(dateExpires);\n }\n\n this.emitItemMutationEvent(item, remote, false, previousItemData);\n }\n }, {\n key: \"emitItemMutationEvent\",\n value: function emitItemMutationEvent(item, remote, added) {\n var previousItemData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var eventName = added ? 'itemAdded' : 'itemUpdated';\n var args = {\n item: item,\n isLocal: !remote\n };\n\n if (!added) {\n args.previousItemData = previousItemData;\n }\n\n this.broadcastEventToListeners(eventName, args);\n }\n /**\n * @private\n */\n\n }, {\n key: \"_handleItemRemoved\",\n value: function _handleItemRemoved(key, eventId, oldData, dateUpdated, remote) {\n this._updateRootDateUpdated(dateUpdated);\n\n this.cache.delete(key, eventId);\n this.broadcastEventToListeners('itemRemoved', {\n key: key,\n isLocal: !remote,\n previousItemData: oldData\n });\n }\n }, {\n key: \"onRemoved\",\n value: function onRemoved(locally) {\n this._unsubscribe();\n\n this.removalHandler(this.type, this.sid, this.uniqueName);\n this.broadcastEventToListeners('removed', {\n isLocal: locally\n });\n }\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee14(ttl) {\n var requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.prev = 0;\n requestBody = {\n ttl: ttl\n };\n _context14.next = 4;\n return this.services.network.post(this.uri, requestBody);\n\n case 4:\n response = _context14.sent;\n this.descriptor.date_expires = response.body.date_expires;\n _context14.next = 12;\n break;\n\n case 8:\n _context14.prev = 8;\n _context14.t0 = _context14[\"catch\"](0);\n\n if (_context14.t0.status === 404) {\n this.onRemoved(false);\n }\n\n throw _context14.t0;\n\n case 12:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this, [[0, 8]]);\n }));\n\n function setTtl(_x27) {\n return _setTtl.apply(this, arguments);\n }\n\n return setTtl;\n }()\n }, {\n key: \"setItemTtl\",\n value: function () {\n var _setItemTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee15(key, ttl) {\n var existingItem, requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return this.get(key);\n\n case 2:\n existingItem = _context15.sent;\n requestBody = {\n ttl: ttl\n };\n _context15.next = 6;\n return this.services.network.post(existingItem.uri, requestBody);\n\n case 6:\n response = _context15.sent;\n existingItem.updateDateExpires(response.body.date_expires);\n\n case 8:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function setItemTtl(_x28, _x29) {\n return _setItemTtl.apply(this, arguments);\n }\n\n return setItemTtl;\n }()\n }, {\n key: \"removeMap\",\n value: function () {\n var _removeMap = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee16() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.services.network.delete(this.uri);\n\n case 2:\n this.onRemoved(true);\n\n case 3:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function removeMap() {\n return _removeMap.apply(this, arguments);\n }\n\n return removeMap;\n }()\n }], [{\n key: \"type\",\n get: function get() {\n return 'map';\n }\n }]);\n\n return SyncMapImpl;\n}(SyncEntity);\n/**\n * Represents a Sync map, which is a data structure that stores an unordered set of key-value pairs.\n * Use the {@link SyncClient.map} method to obtain a reference to a Sync map.\n * Information about rate limits can be found [here](https://www.twilio.com/docs/sync/limits).\n */\n\n\nvar SyncMap = /*#__PURE__*/function (_Closeable) {\n _inherits__default[\"default\"](SyncMap, _Closeable);\n\n var _super2 = _createSuper$3(SyncMap);\n\n /**\n * @internal\n */\n function SyncMap(syncMapImpl) {\n var _this6;\n\n _classCallCheck__default[\"default\"](this, SyncMap);\n\n _this6 = _super2.call(this);\n _this6.syncMapImpl = syncMapImpl;\n\n _this6.syncMapImpl.attach(_assertThisInitialized__default[\"default\"](_this6));\n\n return _this6;\n }\n /**\n * Fired when a new item appears in the map, regardless of whether its creator was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * {@link SyncMapItem} `item` - added item\n * * boolean `isLocal` - equals true if the item was added by a local actor, false otherwise\n * @example\n * ```typescript\n * map.on('itemAdded', (args) => {\n * console.log(`Map item ${args.item.key} was added`);\n * console.log('args.item.data:', args.item.data);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a map item is updated (not added or removed, but changed), regardless of whether the updater was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * {@link SyncMapItem} `item` - updated item\n * * boolean `isLocal` - equals true if the item was updated by a local actor, false otherwise\n * * object `previousItemData` - contains a snapshot of the item data before the update\n * @example\n * ```typescript\n * map.on('itemUpdated', (args) => {\n * console.log(`Map item ${args.item.key} was updated`);\n * console.log('args.item.data:', args.item.data);\n * console.log('args.isLocal:', args.isLocal);\n * console.log('args.previousItemData:', args.previousItemData);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a map item is removed, regardless of whether the remover was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * string `key` - the key of the removed item\n * * boolean `isLocal` - equals true if the item was added by a local actor, false otherwise\n * * object `previousItemData` - contains a snapshot of the item data before removal\n * @example\n * ```typescript\n * map.on('itemRemoved', (args) => {\n * console.log(`Map item ${args.key} was removed`);\n * console.log('args.previousItemData:', args.previousItemData);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a map is deleted entirely, by any actor local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * boolean `isLocal` - equals true if the map was removed by a local actor, false otherwise\n * @example\n * ```typescript\n * map.on('removed', (args) => {\n * console.log(`Map ${map.sid} was removed`);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](SyncMap, [{\n key: \"uri\",\n get: // private props\n function get() {\n return this.syncMapImpl.uri;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.syncMapImpl.links;\n }\n }, {\n key: \"revision\",\n get: function get() {\n return this.syncMapImpl.revision;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.syncMapImpl.lastEventId;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.syncMapImpl.dateExpires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return SyncMapImpl.type;\n }\n /**\n * An immutable identifier (a SID) assigned by the system on creation.\n */\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.syncMapImpl.sid;\n }\n /**\n * An optional immutable identifier that may be assigned by the\n * programmer to this map on creation. Unique among other Maps.\n */\n\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.syncMapImpl.uniqueName;\n }\n /**\n * Date when the map was last updated.\n */\n\n }, {\n key: \"dateUpdated\",\n get: function get() {\n return this.syncMapImpl.dateUpdated;\n }\n }, {\n key: \"set\",\n value:\n /**\n * Add a new item to the map with the given key-value pair. Overwrites any data that might already exist with that key.\n * @param key Unique item identifier.\n * @param data Data to be set.\n * @param itemMetadataUpdates New item metadata.\n * @return Newly added item, or modified one if already exists, with the latest known data.\n * @example\n * ```typescript\n * map.set('myKey', { name: 'John Smith' }, { ttl: 86400 })\n * .then((item) => {\n * console.log('Map SyncMapItem set() successful, item data:', item.data);\n * })\n * .catch((error) => {\n * console.error('Map SyncMapItem set() failed', error);\n * });\n * ```\n */\n function () {\n var _set2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee17(key, data, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n this.ensureNotClosed();\n return _context17.abrupt(\"return\", this.syncMapImpl.set(key, data, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function set(_x30, _x31, _x32) {\n return _set2.apply(this, arguments);\n }\n\n return set;\n }()\n /**\n * Retrieve an item by key.\n * @param key Identifies the desired item.\n * @return A promise that resolves when the item has been fetched.\n * This promise will be rejected if item was not found.\n * @example\n * ```typescript\n * map.get('myKey')\n * .then((item) => {\n * console.log('Map SyncMapItem get() successful, item data:', item.data)\n * })\n * .catch((error) => {\n * console.error('Map SyncMapItem get() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"get\",\n value: function () {\n var _get3 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee18(key) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n this.ensureNotClosed();\n return _context18.abrupt(\"return\", this.syncMapImpl.get(key));\n\n case 2:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function get(_x33) {\n return _get3.apply(this, arguments);\n }\n\n return get;\n }()\n /**\n * Schedules a modification to this Map SyncMapItem that will apply a mutation function.\n * If no SyncMapItem with the given key exists, it will first be created, having the default data (`{}`).\n * @param key Selects the map item to be mutated.\n * @param mutator A function that outputs a new data based on the existing data.\n * May be called multiple times, particularly if this Map SyncMapItem is modified concurrently by remote code.\n * If the mutation ultimately succeeds, the Map SyncMapItem will have made the particular transition described\n * by this function.\n * @param itemMetadataUpdates New item metadata.\n * @return Resolves with the most recent item state, the output of a successful\n * mutation or a state that prompted graceful cancellation (mutator returned `null`).\n * @example\n * ```typescript\n * const mutatorFunction = (currentData) => {\n * currentData.viewCount = (currentData.viewCount || 0) + 1;\n * return currentData;\n * };\n * map.mutate('myKey', mutatorFunction, { ttl: 86400 })\n * .then((item) => {\n * console.log('Map SyncMapItem mutate() successful, new data:', item.data)\n * })\n * .catch((error) => {\n * console.error('Map SyncMapItem mutate() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"mutate\",\n value: function () {\n var _mutate2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee19(key, mutator, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n this.ensureNotClosed();\n return _context19.abrupt(\"return\", this.syncMapImpl.mutate(key, mutator, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function mutate(_x34, _x35, _x36) {\n return _mutate2.apply(this, arguments);\n }\n\n return mutate;\n }()\n /**\n * Modify a map item by appending new fields (or by overwriting existing ones) with the values from\n * the provided Object. Creates a new item if no item by this key exists, copying all given fields and values\n * into it.\n * This is equivalent to\n * ```typescript\n * map.mutate('myKey', (currentData) => Object.assign(currentData, obj));\n * ```\n * @param key Selects the map item to update.\n * @param obj Specifies the particular (top-level) attributes that will receive new values.\n * @param itemMetadataUpdates New item metadata.\n * @return A promise resolving to the modified item in its new state.\n * @example\n * ```typescript\n * // Say, the Map SyncMapItem (key: `'myKey'`) data is `{ name: 'John Smith' }`\n * map.update('myKey', { age: 34 }, { ttl: 86400 })\n * .then((item) => {\n * // Now the Map SyncMapItem data is `{ name: 'John Smith', age: 34 }`\n * console.log('Map SyncMapItem update() successful, new data:', item.data);\n * })\n * .catch((error) => {\n * console.error('Map SyncMapItem update() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"update\",\n value: function () {\n var _update3 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee20(key, obj, itemMetadataUpdates) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n this.ensureNotClosed();\n return _context20.abrupt(\"return\", this.syncMapImpl.update(key, obj, itemMetadataUpdates));\n\n case 2:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function update(_x37, _x38, _x39) {\n return _update3.apply(this, arguments);\n }\n\n return update;\n }()\n /**\n * Delete an item, given its key.\n * @param key Selects the item to delete.\n * @return A promise to remove an item.\n * The promise will be rejected if 'key' is undefined or an item was not found.\n * @example\n * ```typescript\n * map.remove('myKey')\n * .then(() => {\n * console.log('Map SyncMapItem remove() successful');\n * })\n * .catch((error) => {\n * console.error('Map SyncMapItem remove() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"remove\",\n value: function () {\n var _remove2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee21(key) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n this.ensureNotClosed();\n return _context21.abrupt(\"return\", this.syncMapImpl.remove(key));\n\n case 2:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function remove(_x40) {\n return _remove2.apply(this, arguments);\n }\n\n return remove;\n }()\n /**\n * Get a complete list of items from the map.\n * Information about the query limits can be found [here](https://www.twilio.com/docs/sync/limits).\n * @param queryOptions Query options.\n * @example\n * ```typescript\n * const pageHandler = (paginator) => {\n * paginator.items.forEach((item) => {\n * console.log(`SyncMapItem ${item.key}: `, item.data);\n * });\n * return paginator.hasNextPage\n * ? paginator.nextPage().then(pageHandler)\n * : null;\n * };\n * map.getItems({ from: 'myKey', order: 'asc' })\n * .then(pageHandler)\n * .catch((error) => {\n * console.error('Map getItems() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"getItems\",\n value: function () {\n var _getItems2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee22(queryOptions) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n this.ensureNotClosed();\n return _context22.abrupt(\"return\", this.syncMapImpl.getItems(queryOptions));\n\n case 2:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function getItems(_x41) {\n return _getItems2.apply(this, arguments);\n }\n\n return getItems;\n }()\n /**\n * Update the time-to-live of the map.\n * @param ttl Specifies the TTL in seconds after which the map is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * map.setTtl(3600)\n * .then(() => {\n * console.log('Map setTtl() successful');\n * })\n * .catch((error) => {\n * console.error('Map setTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee23(ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n this.ensureNotClosed();\n return _context23.abrupt(\"return\", this.syncMapImpl.setTtl(ttl));\n\n case 2:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function setTtl(_x42) {\n return _setTtl2.apply(this, arguments);\n }\n\n return setTtl;\n }()\n /**\n * Update the time-to-live of a map item.\n * @param key SyncMapItem key.\n * @param ttl Specifies the TTL in seconds after which the map item is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * map.setItemTtl('myKey', 86400)\n * .then(() => {\n * console.log('Map setItemTtl() successful');\n * })\n * .catch((error) => {\n * console.error('Map setItemTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setItemTtl\",\n value: function () {\n var _setItemTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee24(key, ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n this.ensureNotClosed();\n return _context24.abrupt(\"return\", this.syncMapImpl.setItemTtl(key, ttl));\n\n case 2:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function setItemTtl(_x43, _x44) {\n return _setItemTtl2.apply(this, arguments);\n }\n\n return setItemTtl;\n }()\n /**\n * Delete this map. It will be impossible to restore it.\n * @return A promise that resolves when the map has been deleted.\n * @example\n * ```typescript\n * map.removeMap()\n * .then(() => {\n * console.log('Map removeMap() successful');\n * })\n * .catch((error) => {\n * console.error('Map removeMap() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"removeMap\",\n value: function () {\n var _removeMap2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee25() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n this.ensureNotClosed();\n _context25.next = 3;\n return this.syncMapImpl.removeMap();\n\n case 3:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function removeMap() {\n return _removeMap2.apply(this, arguments);\n }\n\n return removeMap;\n }()\n /**\n * Conclude work with the map instance and remove all event listeners attached to it.\n * Any subsequent operation on this object will be rejected with error.\n * Other local copies of this map will continue operating and receiving events normally.\n * @example\n * ```typescript\n * map.close();\n * ````\n */\n\n }, {\n key: \"close\",\n value: function close() {\n _get__default[\"default\"](_getPrototypeOf__default[\"default\"](SyncMap.prototype), \"close\", this).call(this);\n\n this.syncMapImpl.detach(this.listenerUuid);\n }\n }], [{\n key: \"type\",\n get: function get() {\n return SyncMapImpl.type;\n }\n }]);\n\n return SyncMap;\n}(Closeable);\n\n_defineProperty__default[\"default\"](SyncMap, \"itemAdded\", 'itemAdded');\n\n_defineProperty__default[\"default\"](SyncMap, \"itemUpdated\", 'itemUpdated');\n\n_defineProperty__default[\"default\"](SyncMap, \"itemRemoved\", 'itemRemoved');\n\n_defineProperty__default[\"default\"](SyncMap, \"removed\", 'removed');\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string', declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String, Object, Object]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"set\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string'), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"get\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string', 'function', ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String, Function, Object]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"mutate\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string', declarativeTypeValidator.pureObject, ['undefined', declarativeTypeValidator.objectSchema('item metadata', {\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String, Object, Object]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"update\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string'), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"remove\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', declarativeTypeValidator.objectSchema('query options', {\n from: ['string', 'undefined'],\n pageSize: [declarativeTypeValidator.custom(function (value) {\n return [isPositiveInteger(value), 'a positive integer'];\n }), 'undefined'],\n order: [declarativeTypeValidator.custom(function (value) {\n return [value === 'asc' || value === 'desc', \"either 'asc' or 'desc'\"];\n }), 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"getItems\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"setTtl\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string', declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String, Number]), __metadata(\"design:returntype\", Promise)], SyncMap.prototype, \"setItemTtl\", null);\n\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$2() { 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 SyncStreamImpl = /*#__PURE__*/function (_SyncEntity) {\n _inherits__default[\"default\"](SyncStreamImpl, _SyncEntity);\n\n var _super = _createSuper$2(SyncStreamImpl);\n\n /**\n * @internal\n */\n function SyncStreamImpl(services, descriptor, removalHandler) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, SyncStreamImpl);\n\n _this = _super.call(this, services, removalHandler);\n _this.descriptor = descriptor;\n return _this;\n } // private props\n\n\n _createClass__default[\"default\"](SyncStreamImpl, [{\n key: \"uri\",\n get: function get() {\n return this.descriptor.url;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.descriptor.links;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.descriptor.date_expires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return 'stream';\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return null;\n } // below properties are specific to Insights only\n\n }, {\n key: \"indexName\",\n get: function get() {\n return undefined;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return undefined;\n } // public props, documented along with class description\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.descriptor.sid;\n }\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.descriptor.unique_name || null;\n }\n }, {\n key: \"publishMessage\",\n value: function () {\n var _publishMessage = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(data) {\n var requestBody, response, responseBody, event;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n requestBody = {\n data: data\n };\n _context.next = 3;\n return this.services.network.post(this.links.messages, requestBody);\n\n case 3:\n response = _context.sent;\n responseBody = response.body;\n event = this._handleMessagePublished(responseBody.sid, data, false);\n return _context.abrupt(\"return\", event);\n\n case 7:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function publishMessage(_x) {\n return _publishMessage.apply(this, arguments);\n }\n\n return publishMessage;\n }()\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(ttl) {\n var requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n requestBody = {\n ttl: ttl\n };\n _context2.next = 4;\n return this.services.network.post(this.uri, requestBody);\n\n case 4:\n response = _context2.sent;\n this.descriptor.date_expires = response.body.date_expires;\n _context2.next = 12;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2[\"catch\"](0);\n\n if (_context2.t0.status === 404) {\n this.onRemoved(false);\n }\n\n throw _context2.t0;\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 8]]);\n }));\n\n function setTtl(_x2) {\n return _setTtl.apply(this, arguments);\n }\n\n return setTtl;\n }()\n }, {\n key: \"removeStream\",\n value: function () {\n var _removeStream = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.services.network.delete(this.uri);\n\n case 2:\n this.onRemoved(true);\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function removeStream() {\n return _removeStream.apply(this, arguments);\n }\n\n return removeStream;\n }()\n /**\n * Handle event from the server\n * @private\n */\n\n }, {\n key: \"_update\",\n value: function _update(update) {\n switch (update.type) {\n case 'stream_message_published':\n {\n this._handleMessagePublished(update.message_sid, update.message_data, true);\n\n break;\n }\n\n case 'stream_removed':\n {\n this.onRemoved(false);\n break;\n }\n }\n }\n }, {\n key: \"_handleMessagePublished\",\n value: function _handleMessagePublished(sid, data, remote) {\n var event = {\n sid: sid,\n data: data\n };\n this.broadcastEventToListeners('messagePublished', {\n message: event,\n isLocal: !remote\n });\n return event;\n }\n }, {\n key: \"onRemoved\",\n value: function onRemoved(isLocal) {\n this._unsubscribe();\n\n this.removalHandler(this.type, this.sid, this.uniqueName);\n this.broadcastEventToListeners('removed', {\n isLocal: isLocal\n });\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'stream';\n }\n }]);\n\n return SyncStreamImpl;\n}(SyncEntity);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.pureObject), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], SyncStreamImpl.prototype, \"publishMessage\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncStreamImpl.prototype, \"setTtl\", null);\n/**\n * A Sync primitive for pub-sub messaging. Stream Messages are not persisted, exist\n * only in transit, and will be dropped if (due to congestion or network anomalies) they\n * cannot be delivered promptly. Use the {@link SyncClient.stream} method to obtain a reference to a Sync Message Stream.\n * Information about rate limits can be found [here](https://www.twilio.com/docs/sync/limits).\n */\n\n\nvar SyncStream = /*#__PURE__*/function (_Closeable) {\n _inherits__default[\"default\"](SyncStream, _Closeable);\n\n var _super2 = _createSuper$2(SyncStream);\n\n /**\n * @internal\n */\n function SyncStream(syncStreamImpl) {\n var _this2;\n\n _classCallCheck__default[\"default\"](this, SyncStream);\n\n _this2 = _super2.call(this);\n _this2.syncStreamImpl = syncStreamImpl;\n\n _this2.syncStreamImpl.attach(_assertThisInitialized__default[\"default\"](_this2));\n\n return _this2;\n }\n /**\n * Fired when a message is published to the stream either locally or by a remote actor.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * {@link SyncStreamMessage} `message` - Published message\n * * boolean `isLocal` - equals true if the message was published by a local actor, false otherwise\n * @example\n * ```typescript\n * stream.on('messagePublished', (args) => {\n * console.log('Stream message published');\n * console.log('Message SID:', args.message.sid);\n * console.log('Message data: ', args.message.data);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when a stream is removed entirely, regardless of whether the remover was local or remote.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * boolean `isLocal` - equals true if the stream was removed by a local actor, false otherwise\n * @example\n * ```typescript\n * stream.on('removed', (args) => {\n * console.log(`Stream ${stream.sid} was removed`);\n * console.log('args.isLocal:', args.isLocal);\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](SyncStream, [{\n key: \"uri\",\n get: // private props\n function get() {\n return this.syncStreamImpl.uri;\n }\n }, {\n key: \"links\",\n get: function get() {\n return this.syncStreamImpl.links;\n }\n }, {\n key: \"dateExpires\",\n get: function get() {\n return this.syncStreamImpl.dateExpires;\n }\n }, {\n key: \"type\",\n get: function get() {\n return SyncStreamImpl.type;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return null;\n }\n /**\n * The immutable system-assigned identifier of this stream. Never null.\n */\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.syncStreamImpl.sid;\n }\n /**\n * A unique identifier optionally assigned to the stream on creation.\n */\n\n }, {\n key: \"uniqueName\",\n get: function get() {\n return this.syncStreamImpl.uniqueName;\n }\n }, {\n key: \"publishMessage\",\n value:\n /**\n * Publish a message to the stream. The system will attempt delivery to all online subscribers.\n * @param data The body of the dispatched message. Maximum size in serialized JSON: 4KB.\n * A rate limit applies to this operation, refer to the [Sync API documentation](https://www.twilio.com/docs/api/sync) for details.\n * @return A promise which resolves after the message is successfully published\n * to the Sync service. Resolves irrespective of ultimate delivery to any subscribers.\n * @example\n * ```typescript\n * stream.publishMessage({ x: 42, y: 123 })\n * .then((message) => {\n * console.log('Stream publishMessage() successful, message SID:', message.sid);\n * })\n * .catch((error) => {\n * console.error('Stream publishMessage() failed', error);\n * });\n * ```\n */\n function () {\n var _publishMessage2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee4(data) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.ensureNotClosed();\n return _context4.abrupt(\"return\", this.syncStreamImpl.publishMessage(data));\n\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function publishMessage(_x3) {\n return _publishMessage2.apply(this, arguments);\n }\n\n return publishMessage;\n }()\n /**\n * Update the time-to-live of the stream.\n * @param ttl Specifies the TTL in seconds after which the stream is subject to automatic deletion. The value 0 means infinity.\n * @return A promise that resolves after the TTL update was successful.\n * @example\n * ```typescript\n * stream.setTtl(3600)\n * .then(() => {\n * console.log('Stream setTtl() successful');\n * })\n * .catch((error) => {\n * console.error('Stream setTtl() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"setTtl\",\n value: function () {\n var _setTtl2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee5(ttl) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.ensureNotClosed();\n return _context5.abrupt(\"return\", this.syncStreamImpl.setTtl(ttl));\n\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function setTtl(_x4) {\n return _setTtl2.apply(this, arguments);\n }\n\n return setTtl;\n }()\n /**\n * Permanently delete this Stream.\n * @return A promise which resolves after the Stream is successfully deleted.\n * @example\n * ```typescript\n * stream.removeStream()\n * .then(() => {\n * console.log('Stream removeStream() successful');\n * })\n * .catch((error) => {\n * console.error('Stream removeStream() failed', error);\n * });\n * ```\n */\n\n }, {\n key: \"removeStream\",\n value: function () {\n var _removeStream2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee6() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n this.ensureNotClosed();\n return _context6.abrupt(\"return\", this.syncStreamImpl.removeStream());\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function removeStream() {\n return _removeStream2.apply(this, arguments);\n }\n\n return removeStream;\n }()\n /**\n * Conclude work with the stream instance and remove all event listeners attached to it.\n * Any subsequent operation on this object will be rejected with error.\n * Other local copies of this stream will continue operating and receiving events normally.\n * @example\n * ```typescript\n * stream.close();\n * ```\n */\n\n }, {\n key: \"close\",\n value: function close() {\n _get__default[\"default\"](_getPrototypeOf__default[\"default\"](SyncStream.prototype), \"close\", this).call(this);\n\n this.syncStreamImpl.detach(this.listenerUuid);\n }\n }], [{\n key: \"type\",\n get: function get() {\n return SyncStreamImpl.type;\n }\n }]);\n\n return SyncStream;\n}(Closeable);\n\n_defineProperty__default[\"default\"](SyncStream, \"messagePublished\", 'messagePublished');\n\n_defineProperty__default[\"default\"](SyncStream, \"removed\", 'removed');\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.pureObject), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], SyncStream.prototype, \"publishMessage\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonNegativeInteger), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Number]), __metadata(\"design:returntype\", Promise)], SyncStream.prototype, \"setTtl\", null);\n\nvar ClientInfo = /*#__PURE__*/_createClass__default[\"default\"](function ClientInfo(version) {\n _classCallCheck__default[\"default\"](this, ClientInfo);\n\n this.sdk = 'js';\n this.sdkVer = version;\n this.os = platform__namespace.os.family;\n this.osVer = platform__namespace.os.version;\n this.pl = platform__namespace.name;\n this.plVer = platform__namespace.version;\n});\n\n/**\n * Container for entities which are known by the client.\n * It's needed for deduplication when the client obtains the same object several times.\n * @internal\n */\nvar EntitiesCache = /*#__PURE__*/function () {\n function EntitiesCache() {\n _classCallCheck__default[\"default\"](this, EntitiesCache);\n\n this.names = new Map();\n this.entities = new Map();\n }\n\n _createClass__default[\"default\"](EntitiesCache, [{\n key: \"store\",\n value: function store(entity) {\n var stored = this.entities.get(entity.sid);\n\n if (stored) {\n return stored;\n }\n\n this.entities.set(entity.sid, entity);\n\n if (entity.uniqueName) {\n this.names.set(entity.type + '::' + entity.uniqueName, entity.sid);\n }\n\n return entity;\n }\n }, {\n key: \"getResolved\",\n value: function getResolved(id, type) {\n var resolvedSid = this.names.get(type + '::' + id);\n return resolvedSid ? this.entities.get(resolvedSid) : null;\n }\n }, {\n key: \"get\",\n value: function get(id, type) {\n return this.entities.get(id) || this.getResolved(id, type) || null;\n }\n }, {\n key: \"remove\",\n value: function remove(sid) {\n var cached = this.entities.get(sid);\n\n if (cached) {\n this.entities.delete(sid);\n\n if (cached.uniqueName) {\n this.names.delete(cached.type + '::' + cached.uniqueName);\n }\n }\n }\n }]);\n\n return EntitiesCache;\n}();\n\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\n\nfunction _isNativeReflectConstruct$1() { 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/**\n * An individual result from a LiveQuery or InstantQuery result set.\n */\n\nvar InsightsItem = /*#__PURE__*/function () {\n /**\n * @internal\n */\n function InsightsItem(key, value, lastEventId) {\n _classCallCheck__default[\"default\"](this, InsightsItem);\n\n this.key = key;\n this.value = value;\n this.lastEventId = lastEventId;\n }\n /**\n * The identifier that maps to this item within the search result.\n */\n\n /**\n * The contents of the item.\n */\n\n /**\n * The revision of the item.\n */\n\n\n _createClass__default[\"default\"](InsightsItem, [{\n key: \"cacheKey\",\n get:\n /**\n * CachedValue interface.\n */\n function get() {\n return this.key;\n }\n }]);\n\n return InsightsItem;\n}();\nvar LiveQueryImpl = /*#__PURE__*/function (_SyncEntity) {\n _inherits__default[\"default\"](LiveQueryImpl, _SyncEntity);\n\n var _super = _createSuper$1(LiveQueryImpl);\n\n function LiveQueryImpl(descriptor, services, removalHandler, items) {\n var _this;\n\n _classCallCheck__default[\"default\"](this, LiveQueryImpl);\n\n _this = _super.call(this, services, removalHandler);\n _this.descriptor = descriptor;\n _this.cache = new ItemsCache();\n\n if (items) {\n items.forEach(function (item) {\n var newItem = new InsightsItem(item.key, item.data, item.revision); // @fixme item.lasteventid?\n\n _this.cache.store(item.key, newItem, item.revision); // @fixme item.lasteventid?\n\n });\n }\n\n return _this;\n } // public\n\n\n _createClass__default[\"default\"](LiveQueryImpl, [{\n key: \"sid\",\n get: function get() {\n return this.descriptor.sid;\n } // private extension of SyncEntity\n\n }, {\n key: \"uniqueName\",\n get: function get() {\n return null;\n }\n }, {\n key: \"type\",\n get: function get() {\n return LiveQueryImpl.type;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.descriptor.last_event_id;\n }\n }, {\n key: \"indexName\",\n get: function get() {\n return this.descriptor.indexName;\n }\n }, {\n key: \"queryString\",\n get: function get() {\n return this.descriptor.queryExpression;\n } // custom private props\n\n }, {\n key: \"queryUri\",\n get: function get() {\n return this.descriptor.queryUri;\n }\n }, {\n key: \"liveQueryDescriptor\",\n get: function get() {\n return this.descriptor;\n } // dummy stub from iface\n\n }, {\n key: \"onRemoved\",\n value: function onRemoved() {}\n }, {\n key: \"getItems\",\n value: function getItems() {\n var dataByKey = {};\n this.cache.forEach(function (key, item) {\n dataByKey[key] = item.value;\n });\n return dataByKey;\n }\n /**\n * @internal\n */\n\n }, {\n key: \"_update\",\n value: function _update(message, isStrictlyOrdered) {\n switch (message.type) {\n case 'live_query_item_updated':\n this.handleItemMutated(message.item_key, message.item_data, message.item_revision);\n break;\n\n case 'live_query_item_removed':\n this.handleItemRemoved(message.item_key, message.item_revision);\n break;\n\n case 'live_query_updated':\n this.handleBatchUpdate(message.items);\n break;\n }\n\n if (isStrictlyOrdered) {\n this._advanceLastEventId(message.last_event_id);\n }\n }\n }, {\n key: \"handleItemMutated\",\n value: function handleItemMutated(key, value, lastEventId) {\n if (this.shouldIgnoreEvent(key, lastEventId)) {\n log$1.trace(\"Item \".concat(key, \" update skipped, revision: \").concat(lastEventId));\n return;\n }\n\n var newItem = new InsightsItem(key, value, lastEventId);\n this.cache.store(key, newItem, lastEventId);\n this.broadcastEventToListeners('itemUpdated', newItem);\n }\n }, {\n key: \"handleItemRemoved\",\n value: function handleItemRemoved(key, lastEventId) {\n if (this.shouldIgnoreEvent(key, lastEventId)) {\n log$1.trace(\"Item \".concat(key, \" delete skipped, revision: \").concat(lastEventId));\n return;\n }\n\n this.cache.delete(key, lastEventId);\n this.broadcastEventToListeners('itemRemoved', {\n key: key\n });\n }\n }, {\n key: \"handleBatchUpdate\",\n value: function handleBatchUpdate(items) {\n var _this2 = this;\n\n // preprocess item set for easy key-based access\n var newItems = {};\n\n if (items != null) {\n items.forEach(function (item) {\n newItems[item.key] = {\n data: item.data,\n revision: item.revision\n };\n });\n } // go through existing items and generate update/remove events for them\n\n\n this.cache.forEach(function (key, item) {\n var newItem = newItems[key];\n\n if (newItem != null) {\n _this2.handleItemMutated(key, newItem.data, newItem.revision);\n } else {\n _this2.handleItemRemoved(key, null); // force deletion w/o revision\n\n } // once item is handled, remove it from the incoming array\n\n\n delete newItems[key];\n }); // once we handled all the known items, handle remaining pack\n\n for (var key in newItems) {\n this.handleItemMutated(key, newItems[key].data, newItems[key].revision);\n }\n }\n }, {\n key: \"shouldIgnoreEvent\",\n value: function shouldIgnoreEvent(key, eventId) {\n return key != null && eventId != null && this.cache.isKnown(key, eventId);\n }\n /**\n * @internal\n */\n\n }, {\n key: \"_advanceLastEventId\",\n value: function _advanceLastEventId(eventId, revision) {\n // LiveQuery is not versioned in any way, so simply ignore second param and act upon lastEventId only\n if (this.lastEventId < eventId) {\n this.descriptor.last_event_id = eventId;\n }\n }\n }], [{\n key: \"type\",\n get: function get() {\n return 'live_query';\n }\n }]);\n\n return LiveQueryImpl;\n}(SyncEntity);\nfunction queryItems(_x) {\n return _queryItems.apply(this, arguments);\n}\n/**\n * Represents a long-running query against Flex data wherein the returned result set\n * subsequently receives pushed updates whenever new (or updated) records would match the\n * given expression. Updated results are presented row-by-row until this query is explicitly\n * closed.\n *\n * Use the {@link SyncClient.liveQuery} method to create a live query.\n */\n\nfunction _queryItems() {\n _queryItems = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(params) {\n var network, queryString, uri, type, liveQueryRequestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n network = params.network, queryString = params.queryString, uri = params.uri, type = params.type;\n\n if (!(queryString == null)) {\n _context3.next = 3;\n break;\n }\n\n throw new SyncError(\"Invalid query\", 400, 54507);\n\n case 3:\n liveQueryRequestBody = {\n query_string: queryString // raw query string (like `key == \"value\" AND key2 != \"value2\"`)\n\n };\n\n if (type === LiveQuery.type) {\n liveQueryRequestBody.type = type;\n }\n\n _context3.next = 7;\n return network.post(uri, liveQueryRequestBody, undefined, true);\n\n case 7:\n response = _context3.sent;\n return _context3.abrupt(\"return\", response.body);\n\n case 9:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _queryItems.apply(this, arguments);\n}\n\nvar LiveQuery = /*#__PURE__*/function (_Closeable) {\n _inherits__default[\"default\"](LiveQuery, _Closeable);\n\n var _super2 = _createSuper$1(LiveQuery);\n\n /**\n * @internal\n */\n function LiveQuery(liveQueryImpl) {\n var _this3;\n\n _classCallCheck__default[\"default\"](this, LiveQuery);\n\n _this3 = _super2.call(this);\n _this3.liveQueryImpl = liveQueryImpl;\n\n _this3.liveQueryImpl.attach(_assertThisInitialized__default[\"default\"](_this3));\n\n return _this3;\n }\n /**\n * Fired when an item has been added or updated.\n *\n * Parameters:\n * 1. {@link InsightsItem} `item` - updated item\n * @example\n * ```typescript\n * liveQuery.on('itemUpdated', (item) => {\n * console.log(`Item ${item.key} was updated`'`);\n * console.log('Item value:', item.value);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when an existing item has been removed.\n *\n * Parameters:\n * 1. object `args` - info object provided with the event. It has the following properties:\n * * object `key` - the key of the removed item\n * @example\n * ```typescript\n * liveQuery.on('itemRemoved', (args) => {\n * console.log(`Item ${args.key} was removed`);\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](LiveQuery, [{\n key: \"type\",\n get: function get() {\n return LiveQueryImpl.type;\n }\n }, {\n key: \"lastEventId\",\n get: function get() {\n return this.liveQueryImpl.lastEventId;\n }\n /**\n * The immutable identifier of this query object, assigned by the system.\n */\n\n }, {\n key: \"sid\",\n get: function get() {\n return this.liveQueryImpl.sid;\n }\n }, {\n key: \"close\",\n value:\n /**\n * Closes this query instance and unsubscribes from further service events.\n * This will eventually stop the physical inflow of updates over the network,\n * when all other instances of this query are closed as well.\n */\n function close() {\n _get__default[\"default\"](_getPrototypeOf__default[\"default\"](LiveQuery.prototype), \"close\", this).call(this);\n\n this.liveQueryImpl.detach(this.listenerUuid);\n }\n /**\n * @return A snapshot of items matching the current query expression.\n */\n\n }, {\n key: \"getItems\",\n value: function getItems() {\n this.ensureNotClosed();\n return this.liveQueryImpl.getItems();\n }\n }], [{\n key: \"type\",\n get: // private props\n function get() {\n return LiveQueryImpl.type;\n }\n }]);\n\n return LiveQuery;\n}(Closeable);\n/**\n * Allows repetitive quick searches against specific Flex data.\n * Unlike a LiveQuery, this result set does not subscribe to any updates and therefore\n * receives no events beyond the initial result set.\n *\n * Use the {@link SyncClient.instantQuery} method to create an Instant Query.\n */\n\n_defineProperty__default[\"default\"](LiveQuery, \"itemUpdated\", 'itemUpdated');\n\n_defineProperty__default[\"default\"](LiveQuery, \"itemRemoved\", 'itemRemoved');\n\nvar InstantQuery = /*#__PURE__*/function (_ReplayEventEmitter) {\n _inherits__default[\"default\"](InstantQuery, _ReplayEventEmitter);\n\n var _super3 = _createSuper$1(InstantQuery);\n\n /**\n * @internal\n */\n function InstantQuery(params) {\n var _this4;\n\n _classCallCheck__default[\"default\"](this, InstantQuery);\n\n _this4 = _super3.call(this);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this4), \"queryExpression\", null);\n\n _defineProperty__default[\"default\"](_assertThisInitialized__default[\"default\"](_this4), \"items\", {});\n\n Object.assign(_assertThisInitialized__default[\"default\"](_this4), params);\n\n _this4.updateIndexName(params.indexName);\n\n return _this4;\n }\n /**\n * Fired when a search result is ready.\n *\n * Parameters:\n * 1. {@link ItemsSnapshot} `items` - a snapshot of items matching current query expression.\n * @example\n * ```typescript\n * instantQuery.on('searchResult', (items) => {\n * Object.entries(items).forEach(([key, value]) => {\n * console.log('Search result item key:', key);\n * console.log('Search result item value:', value);\n * });\n * });\n * ```\n * @event\n */\n\n\n _createClass__default[\"default\"](InstantQuery, [{\n key: \"type\",\n get: function get() {\n return InstantQuery.type;\n }\n }, {\n key: \"search\",\n value:\n /**\n * Spawns a new search request. The result will be provided asynchronously via the {@link InstantQuery.searchResult}\n * event.\n * @param queryExpression A query expression to be executed against the given data index. For more information\n * on the syntax read {@link SyncClient.liveQuery}.\n * @return A promise that resolves when query result has been received.\n */\n function () {\n var _search = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee(queryExpression) {\n var _this5 = this;\n\n var response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.items = {};\n _context.prev = 1;\n _context.next = 4;\n return queryItems({\n network: this.network,\n uri: this.queryUri,\n queryString: queryExpression\n });\n\n case 4:\n response = _context.sent;\n this.queryExpression = queryExpression;\n\n if (response.items) {\n response.items.forEach(function (item) {\n _this5.items[item.key] = item.data;\n });\n }\n\n this.emit('searchResult', this.getItems());\n _context.next = 15;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](1);\n log$1.error(\"Error '\".concat(_context.t0.message, \"' while executing query '\").concat(queryExpression, \"'\"));\n this.queryExpression = null;\n throw _context.t0;\n\n case 15:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 10]]);\n }));\n\n function search(_x2) {\n return _search.apply(this, arguments);\n }\n\n return search;\n }()\n /**\n * Instantiates a LiveQuery object based on the last known query expression that was passed to the\n * {@link InstantQuery.search} method. This LiveQuery will start receiving updates with new results,\n * while current object can be still used to execute repetitive searches.\n * @return A promise which resolves when the LiveQuery object is ready.\n */\n\n }, {\n key: \"subscribe\",\n value: function () {\n var _subscribe = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this.queryExpression == null)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.reject(new SyncError(\"Invalid query\", 400, 54507)));\n\n case 2:\n return _context2.abrupt(\"return\", this.liveQueryCreator(this.indexName, this.queryExpression));\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function subscribe() {\n return _subscribe.apply(this, arguments);\n }\n\n return subscribe;\n }()\n /**\n * @return A snapshot of items matching current query expression.\n */\n\n }, {\n key: \"getItems\",\n value: function getItems() {\n return this.items;\n }\n /**\n * Set new index name\n * @param indexName New index name to set\n */\n\n }, {\n key: \"updateIndexName\",\n value: function updateIndexName(indexName) {\n this.indexName = indexName;\n this.queryUri = this.generateQueryUri(this.indexName);\n }\n }, {\n key: \"generateQueryUri\",\n value: function generateQueryUri(indexName) {\n return new UriBuilder(this.insightsUri).pathSegment(indexName).pathSegment('Items').build();\n }\n }], [{\n key: \"type\",\n get: // private props\n function get() {\n return 'instant_query';\n }\n }]);\n\n return InstantQuery;\n}(replayEventEmitter.ReplayEventEmitter);\n\n_defineProperty__default[\"default\"](InstantQuery, \"searchResult\", 'searchResult');\n\n__decorate([declarativeTypeValidator.validateTypesAsync('string'), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", Promise)], InstantQuery.prototype, \"search\", null);\n\n__decorate([declarativeTypeValidator.validateTypes(declarativeTypeValidator.nonEmptyString), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", void 0)], InstantQuery.prototype, \"updateIndexName\", null);\n\nvar version = \"4.0.0\";\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"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\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar SYNC_PRODUCT_ID = 'data_sync';\nvar SDK_VERSION = version;\n\nfunction decompose(arg) {\n if (!arg) {\n return {\n mode: 'create_new'\n };\n } else if (typeof arg === 'string') {\n return {\n id: arg,\n mode: 'open_or_create'\n };\n } else {\n var mode = arg.mode || (arg.id ? 'open_or_create' : 'create_new');\n return _objectSpread(_objectSpread({}, arg), {}, {\n mode: mode\n });\n }\n}\n\nvar SYNC_DOCUMENT_NOTIFICATION_TYPE = 'com.twilio.rtd.cds.document';\nvar SYNC_LIST_NOTIFICATION_TYPE = 'com.twilio.rtd.cds.list';\nvar SYNC_MAP_NOTIFICATION_TYPE = 'com.twilio.rtd.cds.map';\nvar SYNC_NOTIFICATION_TYPE = 'twilio.sync.event';\n/**\n * Client for the Twilio Sync service.\n *\n * @example\n * ```typescript\n * // Using NPM resolution\n * const SyncClient = require('twilio-sync');\n * const syncClient = new SyncClient(token, { loglevel: 'debug' });\n *\n * // Using CDN\n * const syncClient = new Twilio.Sync.Client(token, { logLevel: 'debug' });\n * ```\n */\n\nvar Client = /*#__PURE__*/function (_ReplayEventEmitter) {\n _inherits__default[\"default\"](Client, _ReplayEventEmitter);\n\n var _super = _createSuper(Client);\n\n /**\n * @param fpaToken Twilio access token.\n * @param options Options to customize the client.\n */\n function Client(fpaToken) {\n var _options$twilsockClie;\n\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck__default[\"default\"](this, Client);\n\n _this = _super.call(this);\n\n if (!fpaToken) {\n throw new Error('Sync library needs a valid Twilio token to be passed');\n }\n\n if (options.hasOwnProperty('logLevel')) {\n log$1.setLevel(options.logLevel);\n } else {\n log$1.setLevel('silent');\n }\n\n var productId = options.productId = options.productId || SYNC_PRODUCT_ID; // Fill ClientMetadata\n\n options.clientMetadata = options.clientMetadata || {};\n\n if (!options.clientMetadata.hasOwnProperty('type')) {\n options.clientMetadata.type = 'sync';\n }\n\n if (!options.clientMetadata.hasOwnProperty('sdk')) {\n options.clientMetadata.sdk = 'JS';\n options.clientMetadata.sdkv = SDK_VERSION;\n }\n\n var startTwilsock = !options.twilsockClient; // Create default init registrations if none were provided.\n // Otherwise, the outside party have to list all the init registrations they need, including Sync ones.\n\n if (!options.initRegistrations) {\n var initRegistration = new twilsock.InitRegistration(productId);\n Client.populateInitRegistrations(initRegistration);\n options.initRegistrations = [initRegistration];\n }\n\n var twilsock$1 = options.twilsockClient = (_options$twilsockClie = options.twilsockClient) !== null && _options$twilsockClie !== void 0 ? _options$twilsockClie : new twilsock.Twilsock(fpaToken, productId, options);\n twilsock$1.on('tokenAboutToExpire', function () {\n return _this.emit('tokenAboutToExpire');\n });\n twilsock$1.on('tokenExpired', function () {\n return _this.emit('tokenExpired');\n });\n twilsock$1.on('connectionError', function (err) {\n return _this.emit('connectionError', err);\n });\n twilsock$1.on('stateChanged', function (state) {\n _this.emit('connectionStateChanged', state);\n /**\n * Handle transport establishing event\n * If we have any subscriptions - we should check object for modifications\n */\n\n\n _this.services.subscriptions.onConnectionStateChanged(state === 'connected');\n });\n twilsock$1.on('message', function (messageType, payload) {\n return _this._routeMessage(messageType, payload);\n });\n var config = new Configuration(options);\n var network = new NetworkService(new ClientInfo(SDK_VERSION), config, twilsock$1);\n var storage = new SessionStorage(config);\n _this.services = {\n config: config,\n twilsock: twilsock$1,\n network: network,\n storage: storage,\n router: _assertThisInitialized__default[\"default\"](_this),\n subscriptions: null\n };\n _this.services.subscriptions = new Subscriptions(_this.services);\n _this.entities = new EntitiesCache(); // Start only if we created twilsock locally,\n // otherwise it's the responsibility of whoever created the Twilsock client.\n\n if (startTwilsock) {\n twilsock$1.connect();\n }\n\n return _this;\n }\n /**\n * Fired when connection state has been changed.\n *\n * Parameters:\n * 1. {@link ConnectionState} `connectionState` - contains current service connection state.\n * @example\n * ```typescript\n * syncClient.on('connectionStateChanged', (newState) => {\n * console.log('Received a new connection state:', newState);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when connection is interrupted by unexpected reason.\n *\n * Parameters:\n * 1. object `connectionError` - connection error details. It has following properties:\n * * boolean `terminal` - twilsock will stop connection attempts\n * * string `message` - root cause\n * * number? `httpStatusCode` - HTTP status code if available\n * * number? `errorCode` - Twilio public error code if available\n * @example\n * ```typescript\n * syncClient.on('connectionError', (connectionError) => {\n * console.error('Connection was interrupted:', connectionError.message);\n * console.error('Is terminal:', connectionError.terminal);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when the access token is about to expire and needs to be updated.\n * The trigger takes place three minutes before the JWT access token expiry.\n * For long living applications, you should refresh the token when either\n * {@link SyncClient.tokenAboutToExpire | tokenAboutToExpire} or\n * {@link SyncClient.tokenExpired | tokenExpire} events occur; handling just\n * one of them is sufficient.\n * @example\n * The following example illustrates access token refresh.\n * ```typescript\n * syncClient.on('tokenAboutToExpire', () => {\n * // Obtain a JWT access token: https://www.twilio.com/docs/sync/identity-and-access-tokens\n * const token = '<your-access-token-here>';\n * syncClient.updateToken(token);\n * });\n * ```\n * @event\n */\n\n /**\n * Fired when the access token is expired.\n * In case the token is not refreshed, all subsequent Sync operations will fail and the client will disconnect.\n * For long living applications, you should refresh the token when either\n * {@link SyncClient.tokenAboutToExpire | tokenAboutToExpire} or\n * {@link SyncClient.tokenExpired | tokenExpire} events occur; handling just\n * one of them is sufficient.\n * @event\n */\n\n\n _createClass__default[\"default\"](Client, [{\n key: \"_routeMessage\",\n value:\n /**\n * Entry point for all the incoming messages (Router).\n *\n * @param type Type of the incoming message\n * @param message Message to route\n * @internal\n */\n function _routeMessage(type, message) {\n log$1.trace('Notification type:', type, 'content:', message);\n\n switch (type) {\n case SYNC_DOCUMENT_NOTIFICATION_TYPE:\n case SYNC_LIST_NOTIFICATION_TYPE:\n case SYNC_MAP_NOTIFICATION_TYPE:\n this.services.subscriptions.acceptMessage(message, false);\n break;\n\n case SYNC_NOTIFICATION_TYPE:\n this.services.subscriptions.acceptMessage(message, true);\n break;\n }\n }\n /**\n * Subscribe for events (Router)\n *\n * @internal\n */\n\n }, {\n key: \"_subscribe\",\n value: function _subscribe(sid, entity) {\n this.services.subscriptions.add(sid, entity);\n }\n /**\n * Unsubscribe from events (Router)\n *\n * @internal\n */\n\n }, {\n key: \"_unsubscribe\",\n value: function _unsubscribe(sid) {\n this.services.subscriptions.remove(sid);\n }\n /**\n * Current version of the Sync client.\n */\n\n }, {\n key: \"connectionState\",\n get:\n /**\n * Current service connection state.\n */\n function get() {\n return this.services.twilsock.state;\n }\n /**\n * Returns a promise which resolves when library is correctly initialized\n * Or throws if initialization is impossible\n *\n * @internal\n */\n\n }, {\n key: \"ensureReady\",\n value: function () {\n var _ensureReady = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee() {\n var storageSettings;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (this.services.config.sessionStorageEnabled) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n _context.prev = 2;\n _context.next = 5;\n return this.services.twilsock.storageId();\n\n case 5:\n storageSettings = _context.sent;\n this.services.storage.updateStorageId(storageSettings.id);\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](2);\n log$1.warn('Failed to initialize storage', _context.t0);\n\n case 12:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 9]]);\n }));\n\n function ensureReady() {\n return _ensureReady.apply(this, arguments);\n }\n\n return ensureReady;\n }()\n }, {\n key: \"storeRootInSessionCache\",\n value: function storeRootInSessionCache(type, id, value) {\n // can't store without id\n if (!this.services.config.sessionStorageEnabled || !id) {\n return;\n }\n\n var valueToStore = deepClone(value);\n\n if (type === SyncList.type || type === SyncMap.type) {\n valueToStore['last_event_id'] = null;\n delete valueToStore['items'];\n }\n\n this.services.storage.store(type, id, valueToStore);\n }\n }, {\n key: \"readRootFromSessionCache\",\n value: function readRootFromSessionCache(type, id) {\n if (!this.services.config.sessionStorageEnabled || !id) {\n return null;\n }\n\n return this.services.storage.read(type, id);\n }\n }, {\n key: \"_get\",\n value: function () {\n var _get2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee2(baseUri, id) {\n var optimistic,\n uri,\n response,\n _args2 = arguments;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n optimistic = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false;\n\n if (id) {\n _context2.next = 3;\n break;\n }\n\n throw new SyncError(\"Cannot get entity without id\", 404);\n\n case 3:\n uri = new UriBuilder(baseUri).pathSegment(id).queryParam('Include', optimistic ? 'items' : undefined).build();\n _context2.next = 6;\n return this.services.network.get(uri);\n\n case 6:\n response = _context2.sent;\n return _context2.abrupt(\"return\", response.body);\n\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _get(_x, _x2) {\n return _get2.apply(this, arguments);\n }\n\n return _get;\n }()\n }, {\n key: \"_createDocument\",\n value: function _createDocument(id, data, ttl) {\n var requestBody = {\n unique_name: id,\n data: data || {}\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n return this.services.network.post(this.services.config.documentsUri, requestBody).then(function (response) {\n response.body.data = requestBody.data;\n return response.body;\n });\n }\n }, {\n key: \"_getDocument\",\n value: function () {\n var _getDocument2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee3(id) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", this.readRootFromSessionCache(SyncDocument.type, id) || this._get(this.services.config.documentsUri, id));\n\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _getDocument(_x3) {\n return _getDocument2.apply(this, arguments);\n }\n\n return _getDocument;\n }()\n }, {\n key: \"_createList\",\n value: function _createList(id, purpose, context, ttl) {\n var requestBody = {\n unique_name: id,\n purpose: purpose,\n context: context\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n return this.services.network.post(this.services.config.listsUri, requestBody).then(function (response) {\n return response.body;\n });\n }\n }, {\n key: \"_getList\",\n value: function () {\n var _getList2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee4(id) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\", this.readRootFromSessionCache(SyncList.type, id) || this._get(this.services.config.listsUri, id));\n\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _getList(_x4) {\n return _getList2.apply(this, arguments);\n }\n\n return _getList;\n }()\n }, {\n key: \"_createMap\",\n value: function _createMap(id, ttl) {\n var requestBody = {\n unique_name: id\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n return this.services.network.post(this.services.config.mapsUri, requestBody).then(function (response) {\n return response.body;\n });\n }\n }, {\n key: \"_getMap\",\n value: function () {\n var _getMap2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee5(id) {\n var optimistic,\n _args5 = arguments;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n optimistic = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : false;\n return _context5.abrupt(\"return\", this.readRootFromSessionCache(SyncMap.type, id) || this._get(this.services.config.mapsUri, id, optimistic));\n\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function _getMap(_x5) {\n return _getMap2.apply(this, arguments);\n }\n\n return _getMap;\n }()\n }, {\n key: \"_getStream\",\n value: function () {\n var _getStream2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee6(id) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt(\"return\", this.readRootFromSessionCache(SyncStream.type, id) || this._get(this.services.config.streamsUri, id, false));\n\n case 1:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function _getStream(_x6) {\n return _getStream2.apply(this, arguments);\n }\n\n return _getStream;\n }()\n }, {\n key: \"_createStream\",\n value: function () {\n var _createStream2 = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee7(id, ttl) {\n var requestBody, response;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n requestBody = {\n unique_name: id\n };\n\n if (ttl !== undefined) {\n requestBody.ttl = ttl;\n }\n\n _context7.next = 4;\n return this.services.network.post(this.services.config.streamsUri, requestBody);\n\n case 4:\n response = _context7.sent;\n return _context7.abrupt(\"return\", response.body);\n\n case 6:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function _createStream(_x7, _x8) {\n return _createStream2.apply(this, arguments);\n }\n\n return _createStream;\n }()\n }, {\n key: \"_getLiveQuery\",\n value: function _getLiveQuery(sid) {\n return this.readRootFromSessionCache(LiveQuery.type, sid);\n }\n }, {\n key: \"getCached\",\n value: function getCached(id, type) {\n if (id) {\n return this.entities.get(id, type) || null;\n }\n\n return null;\n }\n }, {\n key: \"removeFromCacheAndSession\",\n value: function removeFromCacheAndSession(type, sid, uniqueName) {\n this.entities.remove(sid);\n\n if (this.services.config.sessionStorageEnabled) {\n this.services.storage.remove(type, sid, uniqueName);\n }\n }\n /**\n * Read or create a Sync document.\n * @param arg Could be any of the following:\n * * Unique name or SID identifying the Sync document - opens the document with the given identifier or creates one if it does not exist.\n * * none - creates a new document with a randomly assigned SID and no unique name.\n * * {@link OpenDocumentOptions} object for more granular control.\n * @return A promise which resolves after the document is successfully read (or created).\n * This promise may reject if the document could not be created or if this endpoint lacks the necessary permissions to access it.\n * @example\n * ```typescript\n * syncClient.document('MyDocument')\n * .then((document) => {\n * console.log('Successfully opened a document. SID:', document.sid);\n * document.on('updated', (event) => {\n * console.log('Received an \"updated\" event: ', event);\n * });\n * })\n * .catch((error) => {\n * console.error('Unexpected error', error);\n * });\n * ```\n */\n\n }, {\n key: \"document\",\n value: function () {\n var _document = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee8(arg) {\n var _this2 = this;\n\n var opts, docDescriptor, docFromInMemoryCache, syncDocumentImpl;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.ensureReady();\n\n case 2:\n opts = decompose(arg);\n\n if (!(opts.mode === 'create_new')) {\n _context8.next = 9;\n break;\n }\n\n _context8.next = 6;\n return this._createDocument(opts.id, opts.data, opts.ttl);\n\n case 6:\n docDescriptor = _context8.sent;\n _context8.next = 39;\n break;\n\n case 9:\n docFromInMemoryCache = this.getCached(opts.id, SyncDocument.type);\n\n if (!docFromInMemoryCache) {\n _context8.next = 14;\n break;\n }\n\n return _context8.abrupt(\"return\", new SyncDocument(docFromInMemoryCache));\n\n case 14:\n _context8.prev = 14;\n _context8.next = 17;\n return this._getDocument(opts.id);\n\n case 17:\n docDescriptor = _context8.sent;\n _context8.next = 39;\n break;\n\n case 20:\n _context8.prev = 20;\n _context8.t0 = _context8[\"catch\"](14);\n\n if (!(_context8.t0.status !== 404 || opts.mode === 'open_existing')) {\n _context8.next = 26;\n break;\n }\n\n throw _context8.t0;\n\n case 26:\n _context8.prev = 26;\n _context8.next = 29;\n return this._createDocument(opts.id, opts.data, opts.ttl);\n\n case 29:\n docDescriptor = _context8.sent;\n _context8.next = 39;\n break;\n\n case 32:\n _context8.prev = 32;\n _context8.t1 = _context8[\"catch\"](26);\n\n if (!(_context8.t1.status === 409)) {\n _context8.next = 38;\n break;\n }\n\n return _context8.abrupt(\"return\", this.document(arg));\n\n case 38:\n throw _context8.t1;\n\n case 39:\n this.storeRootInSessionCache(SyncDocument.type, opts.id, docDescriptor);\n syncDocumentImpl = new SyncDocumentImpl(this.services, docDescriptor, function (type, sid, uniqueName) {\n return _this2.removeFromCacheAndSession(type, sid, uniqueName);\n });\n syncDocumentImpl = this.entities.store(syncDocumentImpl);\n return _context8.abrupt(\"return\", new SyncDocument(syncDocumentImpl));\n\n case 43:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this, [[14, 20], [26, 32]]);\n }));\n\n function document(_x9) {\n return _document.apply(this, arguments);\n }\n\n return document;\n }()\n /**\n * Read or create a Sync map.\n * @param arg Could be any of the following:\n * * Unique name or SID identifying the Sync map - opens the map with the given identifier or creates one if it does not exist.\n * * none - creates a new map with a randomly assigned SID and no unique name.\n * * {@link OpenMapOptions} object for more granular control.\n * @return A promise which resolves after the map is successfully read (or created).\n * This promise may reject if the map could not be created or if this endpoint lacks the necessary permissions to access it.\n * @example\n * ```typescript\n * syncClient.map('MyMap')\n * .then((map) => {\n * console.log('Successfully opened a map. SID:', map.sid);\n * map.on('itemUpdated', (event) => {\n * console.log('Received an \"itemUpdated\" event:', event);\n * });\n * })\n * .catch((error) => {\n * console.error('Unexpected error', error);\n * });\n * ```\n */\n\n }, {\n key: \"map\",\n value: function () {\n var _map = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee9(arg) {\n var _this3 = this;\n\n var opts, mapDescriptor, mapFromInMemoryCache, syncMapImpl;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.ensureReady();\n\n case 2:\n opts = decompose(arg);\n\n if (!(opts.mode === 'create_new')) {\n _context9.next = 9;\n break;\n }\n\n _context9.next = 6;\n return this._createMap(opts.id, opts.ttl);\n\n case 6:\n mapDescriptor = _context9.sent;\n _context9.next = 39;\n break;\n\n case 9:\n mapFromInMemoryCache = this.getCached(opts.id, SyncMap.type);\n\n if (!mapFromInMemoryCache) {\n _context9.next = 14;\n break;\n }\n\n return _context9.abrupt(\"return\", new SyncMap(mapFromInMemoryCache));\n\n case 14:\n _context9.prev = 14;\n _context9.next = 17;\n return this._getMap(opts.id, opts.includeItems);\n\n case 17:\n mapDescriptor = _context9.sent;\n _context9.next = 39;\n break;\n\n case 20:\n _context9.prev = 20;\n _context9.t0 = _context9[\"catch\"](14);\n\n if (!(_context9.t0.status !== 404 || opts.mode === 'open_existing')) {\n _context9.next = 26;\n break;\n }\n\n throw _context9.t0;\n\n case 26:\n _context9.prev = 26;\n _context9.next = 29;\n return this._createMap(opts.id, opts.ttl);\n\n case 29:\n mapDescriptor = _context9.sent;\n _context9.next = 39;\n break;\n\n case 32:\n _context9.prev = 32;\n _context9.t1 = _context9[\"catch\"](26);\n\n if (!(_context9.t1.status === 409)) {\n _context9.next = 38;\n break;\n }\n\n return _context9.abrupt(\"return\", this.map(arg));\n\n case 38:\n throw _context9.t1;\n\n case 39:\n this.storeRootInSessionCache(SyncMap.type, opts.id, mapDescriptor);\n syncMapImpl = new SyncMapImpl(this.services, mapDescriptor, function (type, sid, uniqueName) {\n return _this3.removeFromCacheAndSession(type, sid, uniqueName);\n });\n syncMapImpl = this.entities.store(syncMapImpl);\n return _context9.abrupt(\"return\", new SyncMap(syncMapImpl));\n\n case 43:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[14, 20], [26, 32]]);\n }));\n\n function map(_x10) {\n return _map.apply(this, arguments);\n }\n\n return map;\n }()\n /**\n * Read or create a Sync list.\n * @param arg Could be any of the following:\n * * Unique name or SID identifying a Sync list - opens the list with the given identifier or creates one if it does not exist.\n * * none - creates a new list with a randomly assigned SID and no unique name.\n * * {@link OpenListOptions} object for more granular control.\n * @return A promise which resolves after the list is successfully read (or created).\n * This promise may reject if the list could not be created or if this endpoint lacks the necessary permissions to access it.\n * @example\n * ```typescript\n * syncClient.list('MyList')\n * .then((list) => {\n * console.log('Successfully opened a List. SID:', list.sid);\n * list.on('itemAdded', (event) => {\n * console.log('Received an \"itemAdded\" event:', event);\n * });\n * })\n * .catch((error) => {\n * console.error('Unexpected error', error);\n * });\n * ```\n */\n\n }, {\n key: \"list\",\n value: function () {\n var _list = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee10(arg) {\n var _this4 = this;\n\n var opts, listDescriptor, listFromInMemoryCache, syncListImpl;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.ensureReady();\n\n case 2:\n opts = decompose(arg);\n\n if (!(opts.mode === 'create_new')) {\n _context10.next = 9;\n break;\n }\n\n _context10.next = 6;\n return this._createList(opts.id, opts.purpose, opts.context, opts.ttl);\n\n case 6:\n listDescriptor = _context10.sent;\n _context10.next = 39;\n break;\n\n case 9:\n listFromInMemoryCache = this.getCached(opts.id, SyncList.type);\n\n if (!listFromInMemoryCache) {\n _context10.next = 14;\n break;\n }\n\n return _context10.abrupt(\"return\", new SyncList(listFromInMemoryCache));\n\n case 14:\n _context10.prev = 14;\n _context10.next = 17;\n return this._getList(opts.id);\n\n case 17:\n listDescriptor = _context10.sent;\n _context10.next = 39;\n break;\n\n case 20:\n _context10.prev = 20;\n _context10.t0 = _context10[\"catch\"](14);\n\n if (!(_context10.t0.status !== 404 || opts.mode === 'open_existing')) {\n _context10.next = 26;\n break;\n }\n\n throw _context10.t0;\n\n case 26:\n _context10.prev = 26;\n _context10.next = 29;\n return this._createList(opts.id, opts.purpose, opts.context, opts.ttl);\n\n case 29:\n listDescriptor = _context10.sent;\n _context10.next = 39;\n break;\n\n case 32:\n _context10.prev = 32;\n _context10.t1 = _context10[\"catch\"](26);\n\n if (!(_context10.t1.status === 409)) {\n _context10.next = 38;\n break;\n }\n\n return _context10.abrupt(\"return\", this.list(arg));\n\n case 38:\n throw _context10.t1;\n\n case 39:\n this.storeRootInSessionCache(SyncList.type, opts.id, listDescriptor);\n syncListImpl = new SyncListImpl(this.services, listDescriptor, function (type, sid, uniqueName) {\n return _this4.removeFromCacheAndSession(type, sid, uniqueName);\n });\n syncListImpl = this.entities.store(syncListImpl);\n return _context10.abrupt(\"return\", new SyncList(syncListImpl));\n\n case 43:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this, [[14, 20], [26, 32]]);\n }));\n\n function list(_x11) {\n return _list.apply(this, arguments);\n }\n\n return list;\n }()\n /**\n * Read or create a Sync message stream.\n * @param arg Could be any of the following:\n * * Unique name or SID identifying a stream - opens the stream with the given identifier or creates one if it does not exist.\n * * none - creates a new stream with a randomly assigned SID and no unique name.\n * * {@link OpenStreamOptions} object for more granular control.\n * @return A promise which resolves after the stream is successfully read (or created).\n * The flow of messages will begin imminently (but not necessarily immediately) upon resolution.\n * This promise may reject if the stream could not be created or if this endpoint lacks the necessary permissions to access it.\n * @example\n * ```typescript\n * syncClient.stream('MyStream')\n * .then((stream) => {\n * console.log('Successfully opened a message stream. SID:', stream.sid);\n * stream.on('messagePublished', (event) => {\n * console.log('Received a \"messagePublished\" event:', event);\n * });\n * })\n * .catch((error) => {\n * console.error('Unexpected error', error);\n * });\n * ```\n */\n\n }, {\n key: \"stream\",\n value: function () {\n var _stream = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee11(arg) {\n var _this5 = this;\n\n var opts, streamDescriptor, streamFromInMemoryCache, streamRemovalHandler, syncStreamImpl;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.ensureReady();\n\n case 2:\n opts = decompose(arg);\n\n if (!(opts.mode === 'create_new')) {\n _context11.next = 9;\n break;\n }\n\n _context11.next = 6;\n return this._createStream(opts.id, opts.ttl);\n\n case 6:\n streamDescriptor = _context11.sent;\n _context11.next = 39;\n break;\n\n case 9:\n streamFromInMemoryCache = this.getCached(opts.id, SyncStream.type);\n\n if (!streamFromInMemoryCache) {\n _context11.next = 14;\n break;\n }\n\n return _context11.abrupt(\"return\", new SyncStream(streamFromInMemoryCache));\n\n case 14:\n _context11.prev = 14;\n _context11.next = 17;\n return this._getStream(opts.id);\n\n case 17:\n streamDescriptor = _context11.sent;\n _context11.next = 39;\n break;\n\n case 20:\n _context11.prev = 20;\n _context11.t0 = _context11[\"catch\"](14);\n\n if (!(_context11.t0.status !== 404 || opts.mode === 'open_existing')) {\n _context11.next = 26;\n break;\n }\n\n throw _context11.t0;\n\n case 26:\n _context11.prev = 26;\n _context11.next = 29;\n return this._createStream(opts.id, opts.ttl);\n\n case 29:\n streamDescriptor = _context11.sent;\n _context11.next = 39;\n break;\n\n case 32:\n _context11.prev = 32;\n _context11.t1 = _context11[\"catch\"](26);\n\n if (!(_context11.t1.status === 409)) {\n _context11.next = 38;\n break;\n }\n\n return _context11.abrupt(\"return\", this.stream(arg));\n\n case 38:\n throw _context11.t1;\n\n case 39:\n this.storeRootInSessionCache(SyncStream.type, opts.id, streamDescriptor);\n\n streamRemovalHandler = function streamRemovalHandler(type, sid, uniqueName) {\n return _this5.removeFromCacheAndSession(type, sid, uniqueName);\n };\n\n syncStreamImpl = new SyncStreamImpl(this.services, streamDescriptor, streamRemovalHandler);\n syncStreamImpl = this.entities.store(syncStreamImpl);\n return _context11.abrupt(\"return\", new SyncStream(syncStreamImpl));\n\n case 44:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[14, 20], [26, 32]]);\n }));\n\n function stream(_x12) {\n return _stream.apply(this, arguments);\n }\n\n return stream;\n }()\n /**\n * Gracefully shuts the Sync client down.\n */\n\n }, {\n key: \"shutdown\",\n value: function () {\n var _shutdown = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee12() {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return this.services.subscriptions.shutdown();\n\n case 2:\n _context12.next = 4;\n return this.services.twilsock.disconnect();\n\n case 4:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function shutdown() {\n return _shutdown.apply(this, arguments);\n }\n\n return shutdown;\n }()\n /**\n * Set the authentication token.\n * @param token New token to set.\n */\n\n }, {\n key: \"updateToken\",\n value: function () {\n var _updateToken = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee13(token) {\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt(\"return\", this.services.twilsock.updateToken(token).catch(function (error) {\n var _error$reply;\n\n var status = error === null || error === void 0 ? void 0 : (_error$reply = error.reply) === null || _error$reply === void 0 ? void 0 : _error$reply.status;\n\n if ((status === null || status === void 0 ? void 0 : status.code) === 401 && (status === null || status === void 0 ? void 0 : status.status) === 'UNAUTHORIZED') {\n throw new SyncError('Updated token was rejected by server', 400, 51130);\n }\n\n throw error;\n }));\n\n case 1:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function updateToken(_x13) {\n return _updateToken.apply(this, arguments);\n }\n\n return updateToken;\n }()\n /**\n * For Flex customers only. Establishes a long-running query against Flex data wherein the returned\n * result set is updated whenever new (or updated) records match the given expression. Updated results\n * are presented row-by-row according to the lifetime of the returned LiveQuery object.\n *\n * @param indexName Must specify one of the Flex data classes for which Live Queries are available.\n * @param queryExpression A query expression to be executed against the given data index.\n * Please review the [Live Query Language](https://www.twilio.com/docs/sync/live-query)\n * page for Sync client limits and a full list of operators currently supported in query expressions.\n *\n * @return A promise that resolves when the query has been successfully executed.\n * @example\n * ```typescript\n * syncClient.liveQuery('tr-worker', 'data.attributes.worker_name == \"Bob\"')\n * .then((args) => {\n * console.log('Subscribed to live data updates for worker Bob');\n * const items = args.getItems();\n * Object.entries(items).forEach(([key, value]) => {\n * console.log('Search result item key:', key);\n * console.log('Search result item value:', value);\n * });\n * })\n * .catch((err) => {\n * console.error('Error when subscribing to live updates for worker Bob', err);\n * });\n * ```\n */\n\n }, {\n key: \"liveQuery\",\n value: function () {\n var _liveQuery = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee14(indexName, queryExpression) {\n var _this6 = this;\n\n var queryUri, response, liveQueryImpl, descriptor, liveQueryRemovalHandler;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.ensureReady();\n\n case 2:\n queryUri = new UriBuilder(this.services.config.insightsUri).pathSegment(indexName).pathSegment('Items').build(); // send query to CDS to get server-generated sid and item list\n\n _context14.next = 5;\n return queryItems({\n network: this.services.network,\n uri: queryUri,\n queryString: queryExpression,\n type: LiveQuery.type\n });\n\n case 5:\n response = _context14.sent;\n liveQueryImpl = this.getCached(response.query_id, LiveQuery.type);\n\n if (!liveQueryImpl) {\n descriptor = this._getLiveQuery(response.query_id);\n\n if (!descriptor) {\n descriptor = {\n indexName: indexName,\n queryExpression: queryExpression,\n sid: response.query_id,\n queryUri: queryUri,\n last_event_id: response.last_event_id\n };\n }\n\n liveQueryRemovalHandler = function liveQueryRemovalHandler(type, sid, uniqueName) {\n return _this6.removeFromCacheAndSession(type, sid, uniqueName);\n };\n\n liveQueryImpl = new LiveQueryImpl(descriptor, this.services, liveQueryRemovalHandler, response.items);\n }\n\n this.storeRootInSessionCache(LiveQuery.type, response.query_id, liveQueryImpl.liveQueryDescriptor);\n liveQueryImpl = this.entities.store(liveQueryImpl);\n return _context14.abrupt(\"return\", new LiveQuery(liveQueryImpl));\n\n case 11:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function liveQuery(_x14, _x15) {\n return _liveQuery.apply(this, arguments);\n }\n\n return liveQuery;\n }()\n /**\n * For Flex customers only. Creates a query object that can be used to issue one-time queries repeatedly\n * against the target index.\n *\n * @param indexName Must specify one of the Flex data classes for which live queries are available.\n * @return A promise which resolves after the instance of InstantQuery is successfully created.\n * @example\n * ```typescript\n * syncClient.instantQuery('tr-worker')\n * .then((q) => {\n * q.on('searchResult', (items) => {\n * Object.entries(items).forEach(([key, value]) => {\n * console.log('Search result item key:', key);\n * console.log('Search result item value:', value);\n * });\n * });\n * });\n * ```\n */\n\n }, {\n key: \"instantQuery\",\n value: function () {\n var _instantQuery = _asyncToGenerator__default[\"default\"]( /*#__PURE__*/_regeneratorRuntime__default[\"default\"].mark(function _callee15(indexName) {\n var _this7 = this;\n\n var liveQueryCreator;\n return _regeneratorRuntime__default[\"default\"].wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return this.ensureReady();\n\n case 2:\n liveQueryCreator = function liveQueryCreator(indexName, queryExpression) {\n return _this7.liveQuery(indexName, queryExpression);\n };\n\n return _context15.abrupt(\"return\", new InstantQuery({\n indexName: indexName,\n network: this.services.network,\n insightsUri: this.services.config.insightsUri,\n liveQueryCreator: liveQueryCreator\n }));\n\n case 4:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function instantQuery(_x16) {\n return _instantQuery.apply(this, arguments);\n }\n\n return instantQuery;\n }()\n }], [{\n key: \"populateInitRegistrations\",\n value: function populateInitRegistrations(reg) {\n reg.populateInitRegistrations([SYNC_NOTIFICATION_TYPE, SYNC_DOCUMENT_NOTIFICATION_TYPE, SYNC_LIST_NOTIFICATION_TYPE, SYNC_MAP_NOTIFICATION_TYPE]);\n }\n }, {\n key: \"version\",\n get: function get() {\n return SDK_VERSION;\n }\n }]);\n\n return Client;\n}(replayEventEmitter.ReplayEventEmitter);\n\n_defineProperty__default[\"default\"](Client, \"connectionStateChanged\", 'connectionStateChanged');\n\n_defineProperty__default[\"default\"](Client, \"connectionError\", 'connectionError');\n\n_defineProperty__default[\"default\"](Client, \"tokenAboutToExpire\", 'tokenAboutToExpire');\n\n_defineProperty__default[\"default\"](Client, \"tokenExpired\", 'tokenExpired');\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', 'string', declarativeTypeValidator.objectSchema('open document options', {\n id: ['string', 'undefined'],\n mode: [declarativeTypeValidator.literal('open_or_create', 'open_existing', 'create_new'), 'undefined'],\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined'],\n data: [declarativeTypeValidator.pureObject, 'undefined', declarativeTypeValidator.literal(null)]\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"document\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', 'string', declarativeTypeValidator.objectSchema('open map options', {\n id: ['string', 'undefined'],\n mode: [declarativeTypeValidator.literal('open_or_create', 'open_existing', 'create_new'), 'undefined'],\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined'],\n data: [declarativeTypeValidator.pureObject, 'undefined', declarativeTypeValidator.literal(null)],\n includeItems: ['boolean', 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"map\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', 'string', declarativeTypeValidator.objectSchema('open list options', {\n id: ['string', 'undefined'],\n mode: [declarativeTypeValidator.literal('open_or_create', 'open_existing', 'create_new'), 'undefined'],\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined'],\n data: [declarativeTypeValidator.pureObject, 'undefined', declarativeTypeValidator.literal(null)],\n purpose: ['string', 'undefined'],\n context: [declarativeTypeValidator.pureObject, 'undefined'],\n includeItems: ['boolean', 'undefined']\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"list\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(['undefined', 'string', declarativeTypeValidator.objectSchema('open stream options', {\n id: ['string', 'undefined'],\n mode: [declarativeTypeValidator.literal('open_or_create', 'open_existing', 'create_new'), 'undefined'],\n ttl: [declarativeTypeValidator.nonNegativeInteger, 'undefined'],\n data: [declarativeTypeValidator.pureObject, 'undefined', declarativeTypeValidator.literal(null)]\n})]), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [Object]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"stream\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonEmptyString), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"updateToken\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonEmptyString, 'string'), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String, String]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"liveQuery\", null);\n\n__decorate([declarativeTypeValidator.validateTypesAsync(declarativeTypeValidator.nonEmptyString), __metadata(\"design:type\", Function), __metadata(\"design:paramtypes\", [String]), __metadata(\"design:returntype\", Promise)], Client.prototype, \"instantQuery\", null);\n\nexports.Client = Client;\nexports.InsightsItem = InsightsItem;\nexports.InstantQuery = InstantQuery;\nexports.LiveQuery = LiveQuery;\nexports.Paginator = Paginator;\nexports.SyncClient = Client;\nexports.SyncDocument = SyncDocument;\nexports.SyncList = SyncList;\nexports.SyncListItem = SyncListItem;\nexports.SyncMap = SyncMap;\nexports.SyncMapItem = SyncMapItem;\nexports.SyncStream = SyncStream;\n//# sourceMappingURL=browser.js.map\n","'use strict';\nvar $ = require('../internals/export');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar $startsWith = ''.startsWith;\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar nativeFetch = getBuiltIn('fetch');\nvar NativeRequest = getBuiltIn('Request');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = getIterator(init, iteratorMethod);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: $toString(init[key]) });\n } else {\n parseSearchParams(\n entries,\n typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : $toString(init)\n );\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && typeof Headers == 'function') {\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (typeof nativeFetch == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (typeof NativeRequest == 'function') {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestConstructor, 'Request');\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar defineProperties = require('../internals/object-define-properties');\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar has = require('../internals/has');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return input.charAt(pointer);\n };\n\n if (chr() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(chr())) return;\n while (DIGIT.test(chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !has(set, chr) ? chr : encodeURIComponent(chr);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && ALPHA.test(chr)) {\n buffer += chr.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (ALPHANUMERIC.test(chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += chr.toLowerCase();\n } else if (chr == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (DIGIT.test(chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (chr != '/' && !(chr == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && isSpecial(url)) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = $toString(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, $toString(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = $toString(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, $toString(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom($toString(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom($toString(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, $toString(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, $toString(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = $toString(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, $toString(pathname), PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = $toString(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = $toString(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar arrayBufferModule = require('../internals/array-buffer');\nvar setSpecies = require('../internals/set-species');\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n","import { Users } from \"./data/users\";\nimport { User } from \"./user\";\nimport { parseTime, parseAttributes } from \"./util\";\nimport { Logger } from \"./logger\";\nimport { Conversation } from \"./conversation\";\nimport { json } from \"./interfaces/rules\";\nimport { validateTypesAsync } from \"@twilio/declarative-type-validator\";\nimport { CommandExecutor } from \"./command-executor\";\nimport { EditParticipantRequest } from \"./interfaces/commands/edit-participant\";\nimport { ParticipantResponse } from \"./interfaces/commands/participant-response\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { isEqual } from \"./util\";\nimport { JSONValue } from \"./types\";\n\ntype ParticipantEvents = {\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n updated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n};\n\nconst log = Logger.scope(\"Participant\");\n\ninterface ParticipantDescriptor {\n attributes?: JSONValue;\n dateCreated: Date | null;\n dateUpdated: Date | null;\n identity: string;\n roleSid?: string;\n lastConsumedMessageIndex: number | null;\n lastConsumptionTimestamp: number | null;\n type: ParticipantType;\n userInfo?: string;\n bindings?: ParticipantBindings;\n}\n\ninterface ParticipantState {\n attributes: JSONValue;\n dateCreated: Date | null;\n dateUpdated: Date | null;\n identity: string;\n isTyping: boolean;\n lastReadMessageIndex: number | null;\n lastReadTimestamp: Date | null;\n roleSid: string;\n sid: string;\n type: ParticipantType;\n typingTimeout: number | null;\n userInfo?: string;\n bindings?: ParticipantBindings;\n}\n\ninterface ParticipantServices {\n users: Users;\n commandExecutor: CommandExecutor;\n}\n\ninterface ParticipantLinks {\n self: string;\n}\n\n/**\n * The reason for the `updated` event being emitted by a participant.\n */\ntype ParticipantUpdateReason =\n | \"attributes\"\n | \"dateCreated\"\n | \"dateUpdated\"\n | \"roleSid\"\n | \"lastReadMessageIndex\"\n | \"lastReadTimestamp\"\n | \"bindings\";\n\n/**\n * Participant type. The string variant can be used to denote new types of\n * participant that aren't supported by this version of the SDK.\n */\ntype ParticipantType = \"chat\" | \"sms\" | \"whatsapp\" | \"email\" | string;\n\ninterface ParticipantUpdatedEventArgs {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n}\n\n/**\n * Bindings for conversation participant.\n */\ninterface ParticipantBindings {\n email?: ParticipantEmailBinding;\n}\n\n/**\n * Email participation level.\n * to = to/from\n * cc = cc\n */\ntype ParticipantEmailLevel = \"to\" | \"cc\";\n\n/**\n * Bindings for email participant.\n */\ninterface ParticipantEmailBinding {\n name: string;\n address: string;\n level: ParticipantEmailLevel;\n}\n\n/**\n * A participant represents a remote client in a conversation.\n */\nclass Participant extends ReplayEventEmitter<ParticipantEvents> {\n private state: ParticipantState;\n private readonly links: ParticipantLinks;\n private readonly services: ParticipantServices;\n\n /**\n * Conversation that the remote client is a participant of.\n */\n public readonly conversation: Conversation;\n\n /**\n * The server-assigned unique identifier for the participant.\n */\n public get sid(): string {\n return this.state.sid;\n }\n\n /**\n * Custom attributes of the participant.\n */\n public get attributes(): JSONValue {\n return this.state.attributes;\n }\n\n /**\n * Date this participant was created on.\n */\n public get dateCreated(): Date | null {\n return this.state.dateCreated;\n }\n\n /**\n * Date this participant was last updated on.\n */\n public get dateUpdated(): Date | null {\n return this.state.dateUpdated;\n }\n\n /**\n * Identity of the participant.\n */\n public get identity(): string | null {\n return this.state.identity;\n }\n\n /**\n * Indicates whether the participant is currently typing.\n */\n public get isTyping(): boolean {\n return this.state.isTyping;\n }\n\n /**\n * The index of the last read message by the participant.\n * Note that retrieving messages on a client endpoint does not mean that messages are read,\n * please consider reading about the [Read Horizon feature](https://www.twilio.com/docs/api/chat/guides/consumption-horizon)\n * to find out about the proper way to mark messages as read.\n */\n public get lastReadMessageIndex(): number | null {\n return this.state.lastReadMessageIndex;\n }\n\n /**\n * Date of the most recent read horizon update.\n */\n public get lastReadTimestamp(): Date | null {\n return this.state.lastReadTimestamp;\n }\n\n public get roleSid(): string {\n return this.state.roleSid;\n }\n\n /**\n * Type of the participant.\n */\n public get type(): ParticipantType {\n return this.state.type;\n }\n\n /**\n * Get the bindings mapping for the current participant.\n * Available binding depends on the participant type.\n * You could access it as `participant.bindings.sms?.address` or\n * using the type dynamically `participant.bindings[participant.type]`\n * just be aware that the binding information has different structure for\n * each participant type.\n * See also {ParticipantEmailBinding}, the only available currently binding descriptor.\n */\n public get bindings(): ParticipantBindings {\n return this.state.bindings ?? {};\n }\n\n /**\n * @internal\n */\n constructor(\n data: ParticipantDescriptor,\n sid: string,\n conversation: Conversation,\n links: ParticipantLinks,\n services: ParticipantServices\n ) {\n super();\n\n this.conversation = conversation;\n this.links = links;\n this.services = services;\n this.state = {\n attributes: parseAttributes(\n data.attributes,\n \"Retrieved malformed attributes from the server for participant: \" +\n sid,\n log\n ),\n dateCreated: data.dateCreated ? parseTime(data.dateCreated) : null,\n dateUpdated: data.dateCreated ? parseTime(data.dateUpdated) : null,\n sid: sid,\n typingTimeout: null,\n isTyping: false,\n identity: data.identity,\n roleSid: data.roleSid ?? \"\",\n lastReadMessageIndex: Number.isInteger(data.lastConsumedMessageIndex)\n ? data.lastConsumedMessageIndex\n : null,\n lastReadTimestamp: data.lastConsumptionTimestamp\n ? parseTime(data.lastConsumptionTimestamp)\n : null,\n type: data.type || \"chat\",\n userInfo: data.userInfo,\n bindings: data.bindings ?? {},\n };\n\n if (!data.identity && !data.type) {\n throw new Error(\n \"Received invalid Participant object from server: Missing identity or type of Participant.\"\n );\n }\n }\n\n /**\n * Fired when the participant has started typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n static readonly typingStarted = \"typingStarted\";\n\n /**\n * Fired when the participant has stopped typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n static readonly typingEnded = \"typingEnded\";\n\n /**\n * Fired when the fields of the participant have been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the following properties:\n * * {@link Participant} participant - the participant in question\n * * {@link ParticipantUpdateReason}[] updateReasons - array of reasons for the update\n * @event\n */\n static readonly updated = \"updated\";\n\n /**\n * Internal method used to start or reset the typing indicator timeout (with event emitting).\n * @internal\n */\n _startTyping(timeout) {\n if (this.state.typingTimeout) {\n clearTimeout(this.state.typingTimeout);\n }\n\n this.state.isTyping = true;\n this.emit(Participant.typingStarted, this);\n\n this.conversation.emit(Conversation.typingStarted, this); // @fixme layering violation\n\n this.state.typingTimeout = Number(\n setTimeout(() => this._endTyping(), timeout)\n );\n return this;\n }\n\n /**\n * Internal method function used to stop the typing indicator timeout (with event emitting).\n * @internal\n */\n _endTyping() {\n if (!this.state.typingTimeout) {\n return;\n }\n\n this.state.isTyping = false;\n this.emit(Participant.typingEnded, this);\n\n this.conversation.emit(Conversation.typingEnded, this);\n\n clearInterval(this.state.typingTimeout);\n this.state.typingTimeout = null;\n }\n\n /**\n * Internal method function used update local object's property roleSid with a new value.\n * @internal\n */\n _update(data) {\n const updateReasons: ParticipantUpdateReason[] = [];\n\n const updateAttributes = parseAttributes(\n data.attributes,\n \"Retrieved malformed attributes from the server for participant: \" +\n this.state.sid,\n log\n );\n\n if (data.attributes && !isEqual(this.state.attributes, updateAttributes)) {\n this.state.attributes = updateAttributes;\n updateReasons.push(\"attributes\");\n }\n\n const updatedDateUpdated = parseTime(data.dateUpdated);\n if (\n data.dateUpdated &&\n updatedDateUpdated?.getTime() !==\n (this.state.dateUpdated && this.state.dateUpdated.getTime())\n ) {\n this.state.dateUpdated = updatedDateUpdated;\n updateReasons.push(\"dateUpdated\");\n }\n\n const updatedDateCreated = parseTime(data.dateCreated);\n if (\n data.dateCreated &&\n updatedDateCreated?.getTime() !==\n (this.state.dateCreated && this.state.dateCreated.getTime())\n ) {\n this.state.dateCreated = updatedDateCreated;\n updateReasons.push(\"dateCreated\");\n }\n\n if (data.roleSid && this.state.roleSid !== data.roleSid) {\n this.state.roleSid = data.roleSid;\n updateReasons.push(\"roleSid\");\n }\n\n if (\n (Number.isInteger(data.lastConsumedMessageIndex) ||\n data.lastConsumedMessageIndex === null) &&\n this.state.lastReadMessageIndex !== data.lastConsumedMessageIndex\n ) {\n this.state.lastReadMessageIndex = data.lastConsumedMessageIndex;\n updateReasons.push(\"lastReadMessageIndex\");\n }\n\n if (data.lastConsumptionTimestamp) {\n const lastReadTimestamp = new Date(data.lastConsumptionTimestamp);\n if (\n !this.state.lastReadTimestamp ||\n this.state.lastReadTimestamp.getTime() !== lastReadTimestamp.getTime()\n ) {\n this.state.lastReadTimestamp = lastReadTimestamp;\n updateReasons.push(\"lastReadTimestamp\");\n }\n }\n\n if (data.bindings && !isEqual(this.state.bindings, data.bindings)) {\n this.state.bindings = data.bindings;\n updateReasons.push(\"bindings\");\n }\n\n if (updateReasons.length > 0) {\n this.emit(Participant.updated, {\n participant: this,\n updateReasons: updateReasons,\n });\n }\n\n return this;\n }\n\n /**\n * Get the user for this participant and subscribes to it. Supported only for participants of type `chat`.\n */\n async getUser(): Promise<User> {\n if (this.type != \"chat\") {\n throw new Error(\n \"Getting User is not supported for this Participant type: \" + this.type\n );\n }\n\n return this.services.users.getUser(\n this.state.identity,\n this.state.userInfo\n );\n }\n\n /**\n * Remove the participant from the conversation.\n */\n async remove() {\n return this.conversation.removeParticipant(this);\n }\n\n /**\n * Update the attributes of the participant.\n * @param attributes New attributes.\n */\n @validateTypesAsync(json)\n async updateAttributes(attributes: JSONValue): Promise<Participant> {\n await this.services.commandExecutor.mutateResource<\n EditParticipantRequest,\n ParticipantResponse\n >(\"post\", this.links.self, {\n attributes: JSON.stringify(attributes),\n });\n\n return this;\n }\n}\n\nexport {\n ParticipantDescriptor,\n ParticipantServices,\n Participant,\n ParticipantUpdateReason,\n ParticipantType,\n ParticipantUpdatedEventArgs,\n ParticipantBindings,\n ParticipantEmailBinding,\n ParticipantEmailLevel,\n};\n","import {\n ParticipantDescriptor,\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason,\n ParticipantEmailBinding,\n} from \"../participant\";\nimport { Logger } from \"../logger\";\n\nimport { Conversation } from \"../conversation\";\n\nimport { SyncMap, SyncClient } from \"twilio-sync\";\nimport { Users } from \"./users\";\nimport { CommandExecutor } from \"../command-executor\";\nimport { AddParticipantRequest } from \"../interfaces/commands/add-participant\";\nimport { ParticipantResponse } from \"../interfaces/commands/participant-response\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { JSONValue } from \"../types\";\n\ntype ParticipantsEvents = {\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n};\n\nconst log = Logger.scope(\"Participants\");\n\nexport interface ParticipantsServices {\n syncClient: SyncClient;\n users: Users;\n commandExecutor: CommandExecutor;\n}\n\ninterface ParticipantsLinks {\n participants: string;\n}\n\nexport interface ParticipantBindingOptions {\n email?: ParticipantEmailBinding;\n}\n\n/**\n * @classdesc Represents the collection of participants for the conversation\n * @fires Participants#participantJoined\n * @fires Participants#participantLeft\n * @fires Participants#participantUpdated\n */\nclass Participants extends ReplayEventEmitter<ParticipantsEvents> {\n private readonly services: ParticipantsServices;\n private readonly links: ParticipantsLinks;\n\n rosterEntityPromise: Promise<SyncMap> | null = null;\n\n public readonly conversation: Conversation;\n public readonly participants: Map<string, Participant>; // passed in from Conversation\n\n constructor(\n conversation: Conversation,\n participants: Map<string, Participant>,\n links: ParticipantsLinks,\n services: ParticipantsServices\n ) {\n super();\n this.conversation = conversation;\n this.participants = participants;\n this.links = links;\n this.services = services;\n }\n\n async unsubscribe(): Promise<void> {\n if (this.rosterEntityPromise) {\n const entity = await this.rosterEntityPromise;\n entity.close();\n this.rosterEntityPromise = null;\n }\n }\n\n subscribe(arg: string | SyncMap) {\n const participantsMapPromise =\n typeof arg === \"string\"\n ? this.services.syncClient.map({ id: arg, mode: \"open_existing\" })\n : Promise.resolve(arg);\n\n return (this.rosterEntityPromise =\n this.rosterEntityPromise ||\n participantsMapPromise\n .then((rosterMap) => {\n rosterMap.on(SyncMap.itemAdded, (args) => {\n log.debug(this.conversation.sid + \" itemAdded: \" + args.item.key);\n this.upsertParticipant(args.item.key, args.item.data).then(\n (participant) => {\n this.emit(Conversation.participantJoined, participant);\n }\n );\n });\n\n rosterMap.on(SyncMap.itemRemoved, (args) => {\n log.debug(this.conversation.sid + \" itemRemoved: \" + args.key);\n const participantSid = args.key;\n if (!this.participants.has(participantSid)) {\n return;\n }\n const leftParticipant = this.participants.get(participantSid);\n this.participants.delete(participantSid);\n if (!leftParticipant) {\n return;\n }\n this.emit(Conversation.participantLeft, leftParticipant);\n });\n\n rosterMap.on(SyncMap.itemUpdated, (args) => {\n log.debug(this.conversation.sid + \" itemUpdated: \" + args.item.key);\n this.upsertParticipant(args.item.key, args.item.data).catch((e) =>\n log.error(e)\n );\n });\n\n const participantsPromises: Promise<Participant>[] = [];\n const rosterMapHandler = (paginator) => {\n paginator.items.forEach((item) => {\n participantsPromises.push(\n this.upsertParticipant(item.key, item.data)\n );\n });\n return paginator.hasNextPage\n ? paginator.nextPage().then(rosterMapHandler)\n : null;\n };\n\n return rosterMap\n .getItems()\n .then(rosterMapHandler)\n .then(() => Promise.all(participantsPromises))\n .then(() => rosterMap);\n })\n .catch((err) => {\n this.rosterEntityPromise = null;\n if (this.services.syncClient.connectionState != \"disconnected\") {\n log.error(\n \"Failed to get roster object for conversation\",\n this.conversation.sid,\n err\n );\n }\n log.debug(\n \"ERROR: Failed to get roster object for conversation\",\n this.conversation.sid,\n err\n );\n throw err;\n }));\n }\n\n async upsertParticipantFromResponse(\n data: ParticipantResponse\n ): Promise<Participant> {\n const {\n sid,\n attributes: responseAttributes,\n date_created: dateCreated,\n date_updated: dateUpdated,\n identity: responseIdentity,\n role_sid: roleSid,\n messaging_binding: messagingBinding,\n } = data;\n\n return await this.upsertParticipant(sid, {\n attributes: responseAttributes,\n dateCreated: new Date(dateCreated),\n dateUpdated: new Date(dateUpdated),\n identity: responseIdentity,\n roleSid,\n lastConsumedMessageIndex: null,\n lastConsumptionTimestamp: null,\n type: messagingBinding?.type ?? \"chat\",\n });\n }\n\n async upsertParticipant(\n participantSid: string,\n data: ParticipantDescriptor\n ): Promise<Participant> {\n let participant = this.participants.get(participantSid);\n if (participant) {\n return participant._update(data);\n }\n\n const links = {\n self: `${this.links.participants}/${participantSid}`,\n };\n\n participant = new Participant(\n data,\n participantSid,\n this.conversation,\n links,\n this.services\n );\n this.participants.set(participantSid, participant);\n participant.on(Participant.updated, (args: ParticipantUpdatedEventArgs) =>\n this.emit(Conversation.participantUpdated, args)\n );\n return participant;\n }\n\n /**\n * @returns {Promise<Array<Participant>>} returns list of participants {@see Participant}\n */\n async getParticipants(): Promise<Participant[]> {\n return this.rosterEntityPromise\n ? this.rosterEntityPromise.then(() => {\n const participants: Participant[] = [];\n this.participants.forEach((participant) =>\n participants.push(participant)\n );\n return participants;\n })\n : [];\n }\n\n /**\n * Get participant by SID from conversation\n * @returns {Promise<Participant>}\n */\n async getParticipantBySid(\n participantSid: string\n ): Promise<Participant | null> {\n return this.rosterEntityPromise\n ? this.rosterEntityPromise.then(() => {\n const participant = this.participants.get(participantSid);\n if (!participant) {\n throw new Error(\n \"Participant with SID \" + participantSid + \" was not found\"\n );\n }\n return participant;\n })\n : null;\n }\n\n /**\n * Get participant by identity from conversation\n * @returns {Promise<Participant>}\n */\n async getParticipantByIdentity(\n identity: string\n ): Promise<Participant | null> {\n let foundParticipant: Participant | null = null;\n return this.rosterEntityPromise\n ? this.rosterEntityPromise.then(() => {\n this.participants.forEach((participant) => {\n if (participant.identity === identity) {\n foundParticipant = participant;\n }\n });\n if (!foundParticipant) {\n throw new Error(\n \"Participant with identity \" + identity + \" was not found\"\n );\n }\n return foundParticipant;\n })\n : null;\n }\n\n /**\n * Add a chat participant to the conversation\n */\n async add(\n identity: string,\n attributes: JSONValue\n ): Promise<ParticipantResponse> {\n return await this.services.commandExecutor.mutateResource<\n AddParticipantRequest,\n ParticipantResponse\n >(\"post\", this.links.participants, {\n identity,\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n });\n }\n\n /**\n * Add a non-chat participant to the conversation.\n */\n async addNonChatParticipant(\n proxyAddress: string,\n address: string,\n attributes: JSONValue = {},\n bindingOptions: ParticipantBindingOptions = {}\n ): Promise<ParticipantResponse> {\n return await this.services.commandExecutor.mutateResource<\n AddParticipantRequest,\n ParticipantResponse\n >(\"post\", this.links.participants, {\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n messaging_binding: {\n address,\n proxy_address: proxyAddress,\n name: bindingOptions?.email?.name,\n level: bindingOptions?.email?.level,\n },\n });\n }\n\n /**\n * Remove the participant with a given identity from a conversation.\n */\n remove(identity: string): Promise<void> {\n return this.services.commandExecutor.mutateResource(\n \"delete\",\n `${this.links.participants}/${encodeURIComponent(identity)}`\n );\n }\n}\n\nexport { Participants };\n\n/**\n * Fired when participant joined conversation\n * @event Participants#participantJoined\n * @type {Participant}\n */\n\n/**\n * Fired when participant left conversation\n * @event Participants#participantLeft\n * @type {Participant}\n */\n\n/**\n * Fired when participant updated\n * @event Participants#participantUpdated\n * @type {Object}\n * @property {Participant} participant - Updated Participant\n * @property {Participant#UpdateReason[]} updateReasons - Array of Participant's updated event reasons\n */\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar redefineAll = require('../internals/redefine-all');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar $has = require('../internals/has');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) this.entries.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n redefineAll(C.prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && $has(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && $has(data, state.id);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return C;\n }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\n\n// `WeakSet` constructor\n// https://tc39.es/ecma262/#sec-weakset-constructor\ncollection('WeakSet', function (init) {\n return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionWeak);\n","import {\n McsClient,\n McsMedia,\n McsMediaCategory,\n McsMediaState,\n CancellablePromise,\n} from \"@twilio/mcs-client\";\n\n/**\n * Category of media. Possible values are as follows:\n * * `'media'`\n * * `'body'`\n * * `'history'`\n */\ntype MediaCategory = McsMediaCategory;\n\ninterface MediaServices {\n mcsClient: McsClient;\n}\n\n/**\n * Represents a media information for a message in a conversation.\n */\nclass Media {\n private state: McsMediaState;\n private services: MediaServices;\n private mcsMedia: McsMedia | null = null;\n\n /**\n * @internal\n */\n constructor(data: McsMediaState | McsMedia, services: MediaServices) {\n this.services = services;\n\n if (data instanceof McsMedia) {\n this.mcsMedia = data as McsMedia;\n }\n\n this.state = {\n sid: data.sid,\n category: data.category,\n filename: data.filename ?? null,\n contentType: data.contentType,\n size: data.size,\n };\n }\n\n /**\n * Server-assigned unique identifier for the media.\n */\n public get sid(): string {\n return this.state.sid;\n }\n\n /**\n * File name. Null if absent.\n */\n public get filename(): string | null {\n return this.state.filename;\n }\n\n /**\n * Content type of the media.\n */\n public get contentType(): string {\n return this.state.contentType;\n }\n\n /**\n * Size of the media in bytes.\n */\n public get size(): number {\n return this.state.size;\n }\n\n /**\n * Media category, can be one of the {@link MediaCategory} values.\n */\n public get category(): MediaCategory {\n return this.state.category;\n }\n\n /**\n * Returns the direct content URL for the media.\n *\n * This URL is impermanent, it will expire in several minutes and cannot be cached.\n * If the URL becomes expired, you need to request a new one.\n * Each call to this function produces a new temporary URL.\n */\n public getContentTemporaryUrl(): CancellablePromise<string | null> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n const fetchMediaRequest = this.mcsMedia\n ? undefined\n : this._fetchMcsMedia();\n let contentUrlRequest = this.mcsMedia?.getContentUrl();\n\n onCancel(() => {\n if (fetchMediaRequest) {\n fetchMediaRequest.cancel();\n }\n if (contentUrlRequest) {\n contentUrlRequest.cancel();\n }\n });\n\n try {\n if (!contentUrlRequest) {\n const mcsMedia = await fetchMediaRequest;\n contentUrlRequest = mcsMedia?.getContentUrl();\n }\n resolve(contentUrlRequest ? await contentUrlRequest : null);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n private _fetchMcsMedia(): CancellablePromise<McsMedia> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n if (this.services.mcsClient === null) {\n reject(new Error(\"Media Content Service is unavailable\"));\n }\n\n const request = this.services.mcsClient.get(this.state.sid);\n onCancel(() => request.cancel());\n\n try {\n this.mcsMedia = await request;\n this.state = this.mcsMedia._state();\n resolve(this.mcsMedia);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _state(): McsMediaState {\n return this.state;\n }\n}\n\nexport { Media, MediaServices, MediaCategory };\n","/**\n * Signifies the amount of participants which have the status for the message.\n */\ntype DeliveryAmount = \"none\" | \"some\" | \"all\";\n\ninterface AggregatedDeliveryDescriptor {\n total: number;\n delivered: DeliveryAmount;\n failed: DeliveryAmount;\n read: DeliveryAmount;\n sent: DeliveryAmount;\n undelivered: DeliveryAmount;\n}\n\n/**\n * Contains aggregated information about delivery statuses of a message across all participants\n * of a conversation.\n *\n * At any moment during the message delivery to a participant, the message can have zero or more of the following\n * delivery statuses:\n * * Message is considered as **sent** to a participant if the nearest upstream carrier accepted the message.\n * * Message is considered as **delivered** to a participant if Twilio has received confirmation of message\n * delivery from the upstream carrier, and, where available, the destination handset.\n * * Message considered as **undelivered** to a participant if Twilio has received a delivery receipt\n * indicating that the message was not delivered. This can happen for many reasons including carrier content\n * filtering and the availability of the destination handset.\n * * Message considered as **read** by a participant if the message has been delivered and opened by the\n * recipient in a conversation. The recipient must have enabled the read receipts.\n * * Message considered as **failed** to be delivered to a participant if the message could not be sent.\n * This can happen for various reasons including queue overflows, account suspensions and media\n * errors (in the case of MMS for instance).\n *\n * {@link AggregatedDeliveryReceipt} class contains an aggregated value {@link DeliveryAmount} for each delivery status.\n */\nclass AggregatedDeliveryReceipt {\n private state: AggregatedDeliveryDescriptor;\n\n /**\n * @internal\n */\n constructor(data: AggregatedDeliveryDescriptor) {\n this.state = data;\n }\n\n /**\n * Maximum number of delivery events expected for the message.\n */\n public get total(): number {\n return this.state.total;\n }\n\n /**\n * Message is considered as **sent** to a participant if the nearest upstream carrier accepted the message.\n *\n * @return Amount of participants that have the **sent** delivery status for the message.\n */\n public get sent(): DeliveryAmount {\n return this.state.sent;\n }\n\n /**\n * Message is considered as **delivered** to a participant if Twilio has received confirmation of message\n * delivery from the upstream carrier, and, where available, the destination handset.\n *\n * @return Amount of participants that have the **delivered** delivery status for the message.\n */\n public get delivered(): DeliveryAmount {\n return this.state.delivered;\n }\n\n /**\n * Message is considered as **read** by a participant, if the message has been delivered and opened by the\n * recipient in a conversation. The recipient must have enabled the read receipts.\n *\n * @return Amount of participants that have the **read** delivery status for the message.\n */\n public get read(): DeliveryAmount {\n return this.state.read;\n }\n\n /**\n * Message is considered as **undelivered** to a participant if Twilio has received a delivery receipt\n * indicating that the message was not delivered. This can happen for many reasons including carrier content\n * filtering and the availability of the destination handset.\n *\n * @return Ammount of participants that have the **undelivered** delivery status for the message.\n */\n public get undelivered(): DeliveryAmount {\n return this.state.undelivered;\n }\n\n /**\n * Message is considered as **failed** to be delivered to a participant if the message could not be sent.\n * This can happen for various reasons including queue overflows, account suspensions and media\n * errors (in the case of MMS for instance). Twilio does not charge you for failed messages.\n *\n * @return Amount of participants that have the **failed** delivery status for the message.\n */\n public get failed(): DeliveryAmount {\n return this.state.failed;\n }\n\n _update(data: AggregatedDeliveryDescriptor): void {\n this.state = data;\n }\n\n _isEquals(data: AggregatedDeliveryDescriptor): boolean {\n const isTotalSame = this.total === data.total;\n const isSentSame = this.sent === data.sent;\n const isDeliveredSame = this.delivered === data.delivered;\n const isReadSame = this.read === data.read;\n const isUndeliveredSame = this.undelivered === data.undelivered;\n const isFailedSame = this.failed === data.failed;\n\n return (\n isTotalSame &&\n isSentSame &&\n isDeliveredSame &&\n isReadSame &&\n isUndeliveredSame &&\n isFailedSame\n );\n }\n}\n\nexport {\n AggregatedDeliveryReceipt,\n AggregatedDeliveryDescriptor,\n DeliveryAmount,\n};\n","import { Paginator } from \"./interfaces/paginator\";\n\ninterface PaginatorState<T> {\n source: (token: string) => Promise<RestPaginator<T>>;\n nextToken: string;\n prevToken: string;\n items: T[];\n}\n\n/**\n * Pagination helper class.\n */\nclass RestPaginator<T> implements Paginator<T> {\n private state: PaginatorState<T>;\n\n /**\n * Indicates the existence of the next page.\n */\n public get hasNextPage(): boolean {\n return !!this.state.nextToken;\n }\n\n /**\n * Indicates the existence of the previous page\n */\n public get hasPrevPage(): boolean {\n return !!this.state.prevToken;\n }\n\n /**\n * Array of elements on the current page.\n */\n public get items(): T[] {\n return this.state.items;\n }\n\n /**\n * @internal\n */\n constructor(items, source, prevToken, nextToken) {\n this.state = {\n prevToken,\n nextToken,\n source,\n items,\n };\n }\n\n /**\n * Request the next page. Does not modify the existing object.\n */\n nextPage(): Promise<RestPaginator<T>> {\n return this.hasNextPage\n ? this.state.source(this.state.nextToken)\n : Promise.reject(new Error(\"No next page\"));\n }\n\n /**\n * Request the previous page. Does not modify the existing object.\n */\n prevPage(): Promise<RestPaginator<T>> {\n return this.hasPrevPage\n ? this.state.source(this.state.prevToken)\n : Promise.reject(new Error(\"No previous page\"));\n }\n}\n\nexport { RestPaginator };\n","/**\n * Message delivery status.\n */\ntype DeliveryStatus =\n | \"sent\"\n | \"delivered\"\n | \"failed\"\n | \"read\"\n | \"undelivered\"\n | \"queued\";\n\ninterface DetailedDeliveryReceiptDescriptor {\n sid: string;\n message_sid: string;\n conversation_sid: string;\n channel_message_sid: string;\n participant_sid: string;\n status: DeliveryStatus;\n error_code: string | null;\n date_created: string;\n date_updated: string;\n}\n\n/**\n * Represents a delivery receipt of a message.\n */\nclass DetailedDeliveryReceipt {\n /**\n * Unique identifier for the delivery receipt.\n */\n sid: string;\n\n /**\n * Unique identifier for the message in the conversation.\n */\n messageSid: string;\n\n /**\n * Unique identifier for the conversation.\n */\n conversationSid: string;\n\n /**\n * Unique identifier for the `‘channel’` message (e.g., `WAxx` for WhatsApp, `SMxx` for SMS).\n */\n channelMessageSid: string;\n\n /**\n * Unique identifier for the participant.\n */\n participantSid: string;\n\n /**\n * Status of the message delivery.\n */\n status: DeliveryStatus;\n\n /**\n * Numeric error code mapped from Status callback code. Information about the error codes can be found\n * [here](https://www.twilio.com/docs/sms/api/message-resource#delivery-related-errors).\n */\n errorCode: string | 0;\n\n /**\n * Date this delivery receipt was created on.\n */\n dateCreated: string;\n\n /**\n * Date this delivery receipt was last updated on.\n */\n dateUpdated: string;\n\n /**\n * @internal\n */\n constructor(descriptor: DetailedDeliveryReceiptDescriptor) {\n this.sid = descriptor.sid;\n this.messageSid = descriptor.message_sid;\n this.conversationSid = descriptor.conversation_sid;\n this.channelMessageSid = descriptor.channel_message_sid;\n this.participantSid = descriptor.participant_sid;\n this.status = descriptor.status || \"queued\";\n this.errorCode = descriptor.error_code || 0;\n this.dateCreated = descriptor.date_created;\n this.dateUpdated = descriptor.date_updated;\n }\n}\n\nexport {\n DetailedDeliveryReceipt,\n DetailedDeliveryReceiptDescriptor,\n DeliveryStatus,\n};\n","/*\n@license\nCopyright (c) 2022 Twilio Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n*/\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nrequire('core-js/modules/es.array.concat.js');\nvar log = require('loglevel');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar log__default = /*#__PURE__*/_interopDefaultLegacy(log);\n\nvar deprecated = function deprecated(oldName, newName, link) {\n return function (target, propertyKey, descriptor) {\n if (typeof descriptor.value !== \"function\" && (descriptor === null || descriptor === void 0 ? void 0 : descriptor.get) === undefined) {\n throw new Error(\"The deprecated decorator can only be applied to methods or getters\");\n }\n\n if (typeof descriptor.value === \"function\") {\n var originalMethod = descriptor.value;\n\n descriptor.value = function () {\n deprecationWarning(\"The method \".concat(oldName, \" is deprecated\").concat(newName ? \", use \" + newName + \" instead\" : \"\").concat(link ? \", \" + link : \".\"));\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return originalMethod.apply(this, args);\n };\n\n return;\n }\n\n var originalGet = descriptor.get;\n\n descriptor.get = function () {\n deprecationWarning(\"The getter \".concat(oldName, \" is deprecated\").concat(newName ? \", use \" + newName + \" instead\" : \"\").concat(link ? \", \" + link : \".\"));\n return originalGet === null || originalGet === void 0 ? void 0 : originalGet.apply(this);\n };\n };\n};\nvar deprecationWarning = function deprecationWarning(warning) {\n var currentLevel = log__default[\"default\"].getLevel();\n log__default[\"default\"].setLevel(\"warn\");\n log__default[\"default\"].warn(warning);\n log__default[\"default\"].setLevel(currentLevel);\n};\n\nexports.deprecated = deprecated;\nexports.deprecationWarning = deprecationWarning;\n//# sourceMappingURL=browser.js.map\n","import {\n ContentDataCallToActionResponse,\n ContentDataCardResponse,\n ContentDataListPickerResponse,\n ContentDataLocationResponse,\n ContentDataMediaResponse,\n ContentDataQuickReplyResponse,\n ContentDataTextResponse,\n ContentTemplateResponse,\n} from \"./interfaces/commands/content-templates-response\";\n\n/**\n * Shows a button that sends back a predefined text. Used in\n * {@link ContentDataQuickReply}.\n */\ntype ContentDataReply = {\n /**\n * Display value of the action. This is the message that will be sent back\n * when the user taps on the button.\n */\n readonly title: string;\n\n /**\n * Postback payload. This field is not visible to the end user.\n */\n readonly id?: string;\n};\n\n/**\n * Shows a button that redirects recipient to a predefined URL.\n */\ntype ContentDataActionUrl = {\n /**\n * The type discriminant.\n */\n readonly type: \"url\";\n\n /**\n * Display value for the action.\n */\n readonly title: string;\n\n /**\n * URL to direct to when the recipient taps the button.\n */\n readonly url: string;\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Shows a button that calls a phone number.\n */\ntype ContentDataActionPhone = {\n /**\n * The type discriminant.\n */\n readonly type: \"phone\";\n\n /**\n * Display value for the action.\n */\n readonly title: string;\n\n /**\n * Phone number to call when the recipient taps the button.\n */\n readonly phone: string;\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Shows a button that sends back a predefined text.\n */\ntype ContentDataActionReply = {\n /**\n * The type discriminant.\n */\n readonly type: \"reply\";\n\n /**\n * Display value for the action. This is the message that will be sent back\n * when the user taps on the button.\n */\n readonly title: string;\n\n /**\n * Postback payload. This field is not visible to the end user.\n */\n readonly id?: string;\n\n /**\n * Index for the action.\n */\n readonly index: number;\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Used for unknown action types which aren't present in the current version of\n * the Conversations SDK.\n */\ntype ContentDataActionOther = {\n /**\n * The type discriminant.\n */\n readonly type: \"other\";\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * A union of possible actions used in {@link ContentDataCallToAction} and\n * {@link ContentDataCard}.\n */\ntype ContentDataAction =\n | ContentDataActionUrl\n | ContentDataActionPhone\n | ContentDataActionReply\n | ContentDataActionOther;\n\n/**\n * Represents an item in the {@link ContentDataListPicker}.\n */\ntype ContentDataListItem = {\n /**\n * Unique item identifier. Not visible to the recipient.\n */\n readonly id: string;\n\n /**\n * Display value of the item.\n */\n readonly item: string;\n\n /**\n * Description of the item.\n */\n readonly description?: string;\n};\n\n/**\n * Contains only the plain text-based content. Represents the twilio/text\n * content type.\n */\ntype ContentDataText = {\n /**\n * The type discriminant.\n */\n readonly type: \"text\";\n\n /**\n * The text of the message you want to send.\n */\n readonly body: string;\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Used to send file attachments, or to send long texts via MMS in the US and\n * Canada. Represents the twilio/media content type.\n */\ntype ContentDataMedia = {\n /**\n * The type discriminant.\n */\n readonly type: \"media\";\n\n /**\n * The text of the message you want to send.\n */\n readonly body?: string;\n\n /**\n * URLs of the media you want to send.\n */\n readonly media: string[];\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Contains a location pin and an optional label, which can be used to enhance\n * delivery notifications or connect recipients to physical experiences you\n * offer. Represents the twilio/location content type.\n */\ntype ContentDataLocation = {\n /**\n * The type discriminant.\n */\n readonly type: \"location\";\n\n /**\n * The longitude value of the location pin you want to send.\n */\n readonly longitude: number;\n\n /**\n * The latitude value of the location pin you want to send.\n */\n readonly latitude: number;\n\n /**\n * The label to be displayed to the end user alongside the location pin.\n */\n readonly label?: string;\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Let recipients tap, rather than type, to respond to the message. Represents\n * the twilio/quick-reply content type.\n */\ntype ContentDataQuickReply = {\n /**\n * The type discriminant.\n */\n readonly type: \"quickReply\";\n\n /**\n * The text of the message you want to send. This is included as a regular\n * text message.\n */\n readonly body: string;\n\n /**\n * Up to 3 buttons can be created for quick reply. See\n * {@link ContentDataReply}.\n */\n readonly replies: ContentDataReply[];\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Buttons that let recipients tap to trigger actions such as launching a\n * website or making a phone call. Represents the twilio/call-to-action content\n * type.\n */\ntype ContentDataCallToAction = {\n /**\n * The type discriminant.\n */\n readonly type: \"callToAction\";\n\n /**\n * The text of the message you want to send. This is included as a regular\n * text message.\n */\n readonly body: string;\n\n /**\n * Buttons that recipients can tap on to act on the message.\n */\n readonly actions: ContentDataAction[];\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Shows a menu of up to 10 options, which offers a simple way for users to make\n * a selection. Represents the twilio/list-picker content type.\n */\ntype ContentDataListPicker = {\n /**\n * The type discriminant.\n */\n readonly type: \"listPicker\";\n\n /**\n * The text of the message you want to send. This is rendered as the body of\n * the message.\n */\n readonly body: string;\n\n /**\n * Display value of the primary button.\n */\n readonly button: string;\n\n /**\n * List item objects displayed in the list. See {@link ContentDataListItem}.\n */\n readonly items: ContentDataListItem[];\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Shows a menu of up to 10 options, which offers a simple way for users to make\n * a selection. Represents the twilio/card content type.\n */\ntype ContentDataCard = {\n /**\n * The type discriminant.\n */\n readonly type: \"card\";\n\n /**\n * Title of the card.\n */\n readonly title: string;\n\n /**\n * Subtitle of the card.\n */\n readonly subtitle?: string;\n\n /**\n * URLs of the media to send with the message.\n */\n readonly media: string[];\n\n /**\n * Buttons that the recipients can tap on to act on the message.\n */\n readonly actions: ContentDataAction[];\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * Used for unknown content types which aren't present in the current version of\n * the Conversations SDK.\n */\ntype ContentDataOther = {\n /**\n * The type discriminant.\n */\n readonly type: \"other\";\n\n /**\n * Full data as a stringified JSON. This could be used for future content\n * types and fields which are not yet supported by the newest version of\n * the Conversations SDK, or for using newer types in the older versions of\n * the SDK.\n */\n readonly rawData: string;\n};\n\n/**\n * A union of possible data types in rich content templates.\n */\ntype ContentData =\n | ContentDataText\n | ContentDataMedia\n | ContentDataLocation\n | ContentDataQuickReply\n | ContentDataCallToAction\n | ContentDataListPicker\n | ContentDataCard\n | ContentDataOther;\n\nconst collectActions = (\n actions: ContentDataCallToActionResponse[\"actions\"]\n): ContentDataAction[] => {\n return actions.map((action) => {\n const rawData = JSON.stringify(action);\n\n switch (action.type) {\n case \"QUICK_REPLY\":\n return {\n type: \"reply\",\n title: action.title,\n id: action.id ?? \"\",\n index: action.index ?? 0,\n rawData,\n };\n case \"PHONE_NUMBER\":\n return {\n type: \"phone\",\n title: action.title,\n phone: action.phone ?? \"\",\n rawData,\n };\n case \"URL\":\n return {\n type: \"url\",\n title: action.title,\n url: action.url ?? \"\",\n rawData,\n };\n default:\n return {\n type: \"other\",\n rawData,\n };\n }\n });\n};\n\nconst parseVariant = (type: string, data: unknown): ContentData => {\n const rawData = JSON.stringify(data);\n\n switch (type) {\n case \"twilio/text\": {\n const variant = data as ContentDataTextResponse;\n return {\n type: \"text\",\n body: variant.body,\n rawData,\n };\n }\n case \"twilio/media\": {\n const variant = data as ContentDataMediaResponse;\n return {\n type: \"media\",\n body: variant.body,\n media: variant.media,\n rawData,\n };\n }\n case \"twilio/location\": {\n const variant = data as ContentDataLocationResponse;\n return {\n type: \"location\",\n longitude: variant.longitude,\n latitude: variant.latitude,\n label: variant.label,\n rawData,\n };\n }\n case \"twilio/quick-reply\": {\n const variant = data as ContentDataQuickReplyResponse;\n return {\n type: \"quickReply\",\n body: variant.body,\n replies: variant.actions,\n rawData,\n };\n }\n case \"twilio/call-to-action\": {\n const variant = data as ContentDataCallToActionResponse;\n return {\n type: \"callToAction\",\n body: variant.body,\n actions: collectActions(variant.actions),\n rawData,\n };\n }\n case \"twilio/list-picker\": {\n const variant = data as ContentDataListPickerResponse;\n return {\n type: \"listPicker\",\n body: variant.body,\n button: variant.button,\n items: variant.items,\n rawData,\n };\n }\n case \"twilio/card\": {\n const variant = data as ContentDataCardResponse;\n return {\n type: \"card\",\n title: variant.title,\n subtitle: variant.subtitle,\n media: variant.media ?? [],\n actions: collectActions(variant.actions ?? []),\n rawData,\n };\n }\n default:\n return {\n type: \"other\",\n rawData,\n };\n }\n};\n\nconst collectVariants = (\n variants: ContentTemplateResponse[\"variants\"]\n): Map<string, ContentData> => {\n const variantsMap = new Map<string, ContentData>();\n\n for (const [key, value] of Object.entries(variants)) {\n variantsMap.set(key, parseVariant(key, value));\n }\n\n return variantsMap;\n};\n\n/**\n * Represents a variable for a content template. See\n * {@link ContentTemplate.variables}.\n */\nclass ContentTemplateVariable {\n public constructor(\n /**\n * Name of the variable.\n */\n public readonly name: string,\n\n /**\n * Key of the variable\n */\n public readonly value: string\n ) {}\n\n /**\n * Copies the variable with a new value.\n *\n * @param value The new value for the variable.\n */\n public copyWithValue(value: string) {\n return new ContentTemplateVariable(this.name, value);\n }\n}\n\n/**\n * A rich content template.\n *\n * Use {@Link Client.getContentTemplates} to request all the templates available\n * for the current account.\n */\nclass ContentTemplate {\n /**\n * The server-assigned unique identifier for the template.\n */\n public readonly sid: string;\n\n /**\n * Friendly name used to describe the content. Not visible to the recipient.\n */\n public readonly friendlyName: string;\n\n /**\n * Variables used by this template.\n */\n public readonly variables: ContentTemplateVariable[];\n\n /**\n * Variants of the content. See {@link ContentData}.\n */\n public readonly variants: Map<string, ContentData>;\n\n /**\n * Date of creation.\n */\n public readonly dateCreated: Date;\n\n /**\n * Date of the last update.\n */\n public readonly dateUpdated: Date;\n\n /**\n * @internal\n */\n public constructor(contentTemplateResponse: ContentTemplateResponse) {\n this.sid = contentTemplateResponse.sid;\n this.friendlyName = contentTemplateResponse.friendly_name;\n this.variables = Object.entries(\n JSON.parse(contentTemplateResponse.variables) as Record<string, string>\n ).map(([key, value]) => new ContentTemplateVariable(key, value));\n this.variants = collectVariants(contentTemplateResponse.variants);\n this.dateCreated = new Date(contentTemplateResponse.date_created);\n this.dateUpdated = new Date(contentTemplateResponse.date_updated);\n }\n}\n\nexport {\n ContentDataActionUrl,\n ContentDataActionPhone,\n ContentDataActionReply,\n ContentDataActionOther,\n ContentDataAction,\n ContentDataText,\n ContentDataMedia,\n ContentDataLocation,\n ContentDataReply,\n ContentDataQuickReply,\n ContentDataCallToAction,\n ContentDataListPicker,\n ContentDataListItem,\n ContentDataCard,\n ContentDataOther,\n ContentData,\n ContentTemplate,\n ContentTemplateVariable,\n parseVariant,\n};\n","import { parseAttributes, UriBuilder } from \"./util\";\nimport { Logger } from \"./logger\";\nimport { Conversation } from \"./conversation\";\nimport {\n CancellablePromise,\n McsClient,\n MediaCategory,\n} from \"@twilio/mcs-client\";\nimport { Media } from \"./media\";\nimport { Participant } from \"./participant\";\nimport {\n AggregatedDeliveryDescriptor,\n AggregatedDeliveryReceipt,\n} from \"./aggregated-delivery-receipt\";\nimport {\n validateTypes,\n validateTypesAsync,\n nonEmptyString,\n nonEmptyArray,\n} from \"@twilio/declarative-type-validator\";\nimport { json } from \"./interfaces/rules\";\nimport { Network } from \"./services/network\";\nimport { RestPaginator } from \"./rest-paginator\";\nimport { DetailedDeliveryReceipt } from \"./detailed-delivery-receipt\";\nimport { Paginator } from \"./interfaces/paginator\";\nimport { Configuration } from \"./configuration\";\nimport { CommandExecutor } from \"./command-executor\";\nimport { EditMessageRequest } from \"./interfaces/commands/edit-message\";\nimport { MessageResponse } from \"./interfaces/commands/message-response\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { isEqual } from \"./util\";\nimport { JSONValue } from \"./types\";\nimport { ResponseMeta } from \"./interfaces/commands/response-meta\";\nimport { DeliveryReceiptResponse } from \"./interfaces/commands/delivery-receipt-response\";\nimport { deprecated } from \"@twilio/deprecation-decorator\";\nimport { ContentData, parseVariant } from \"./content-template\";\nimport {\n ChannelMetadata,\n ChannelMetadataClient,\n} from \"./channel-metadata-client\";\nimport {\n MessageRecipientsClient,\n RecipientDescriptor,\n} from \"./message-recipients-client\";\n\ntype MessageEvents = {\n updated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n};\n\nconst log = Logger.scope(\"Message\");\nconst XHR =\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n global[\"XMLHttpRequest\"] || require(\"xmlhttprequest\").XMLHttpRequest;\n\ninterface MessageState {\n sid: string;\n index: number;\n author: string | null;\n subject: string | null;\n contentSid: string | null;\n body: string | null;\n dateUpdated: Date | null;\n lastUpdatedBy: string | null;\n attributes: JSONValue;\n timestamp: Date | null;\n type: MessageType;\n media: Media | null;\n medias: Media[] | null;\n participantSid: string | null;\n aggregatedDeliveryReceipt: AggregatedDeliveryReceipt | null;\n hasChannelMetadata: boolean;\n}\n\ninterface MessageServices {\n mcsClient: McsClient;\n network: Network;\n commandExecutor: CommandExecutor;\n channelMetadataClient: ChannelMetadataClient;\n messageRecipientsClient: MessageRecipientsClient;\n}\n\ninterface MessageLinks {\n self: string;\n conversation: string;\n messages_receipts: string;\n}\n\n/**\n * The reason for the `updated` event being emitted by a message.\n */\ntype MessageUpdateReason =\n | \"body\"\n | \"lastUpdatedBy\"\n | \"dateCreated\"\n | \"dateUpdated\"\n | \"attributes\"\n | \"author\"\n | \"deliveryReceipt\"\n | \"subject\"\n | \"media\";\n\n/**\n * Type of message.\n */\ntype MessageType = \"text\" | \"media\";\n\ninterface MessageUpdatedEventArgs {\n message: Message;\n updateReasons: MessageUpdateReason[];\n}\n\nexport interface MessageData {\n sid: string;\n text?: string;\n type?: MessageType;\n author: string | null;\n subject: string | null;\n contentSid: string | null;\n lastUpdatedBy?: string | null;\n attributes?: JSONValue;\n dateUpdated: string;\n timestamp?: string;\n medias?: Media[];\n media?: Media;\n memberSid?: string;\n delivery?: AggregatedDeliveryDescriptor;\n channelMetadata?: boolean;\n}\n\n/**\n * A message in a conversation.\n */\nclass Message extends ReplayEventEmitter<MessageEvents> {\n /**\n * Conversation that the message is in.\n */\n public readonly conversation: Conversation;\n\n private readonly links: MessageLinks;\n private readonly configuration: Configuration;\n private readonly services: MessageServices;\n\n private state: MessageState;\n\n /**\n * @internal\n */\n constructor(\n index: number,\n data: MessageData,\n conversation: Conversation,\n links: MessageLinks,\n configuration: Configuration,\n services: MessageServices\n ) {\n super();\n\n this.conversation = conversation;\n\n this.links = links;\n this.configuration = configuration;\n this.services = services;\n\n this.state = {\n sid: data.sid,\n index: index,\n author: data.author,\n subject: data.subject,\n contentSid: data.contentSid,\n body: data.text ?? null,\n timestamp: data.timestamp ? new Date(data.timestamp) : null,\n dateUpdated: data.dateUpdated ? new Date(data.dateUpdated) : null,\n lastUpdatedBy: data.lastUpdatedBy ?? null,\n attributes: parseAttributes(\n data.attributes,\n `Got malformed attributes for the message ${data.sid}`,\n log\n ),\n type: data.type ?? \"text\",\n media: null,\n medias: null,\n participantSid: data.memberSid ?? null,\n aggregatedDeliveryReceipt: data.delivery\n ? new AggregatedDeliveryReceipt(data.delivery)\n : null,\n hasChannelMetadata: data.channelMetadata ?? false,\n };\n this.#assignMedias(data.medias ?? null, data.media ?? null);\n }\n\n #wrapMedia(\n media: Media | null,\n category: string | null = null\n ): Media | null {\n return media\n ? category\n ? new Media({ ...media, category } as Media, this.services)\n : new Media(media, this.services)\n : null;\n }\n\n #assignMedias(medias: Media[] | null, media: Media | null) {\n this.state.media = this.#wrapMedia(media);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.state.medias = medias\n ? medias.map((m) => this.#wrapMedia(m)).filter((el) => el !== null)\n : media && !medias\n ? [this.#wrapMedia(media, \"media\")].filter((el) => el !== null)\n : null;\n }\n\n /**\n * Fired when the properties or the body of the message has been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the following properties:\n * * {@link Message} message - the message in question\n * * {@link MessageUpdateReason}[] updateReasons - array of reasons for the update\n */\n static readonly updated = \"updated\";\n\n /**\n * The server-assigned unique identifier for the message.\n */\n public get sid(): string {\n return this.state.sid;\n }\n\n /**\n * Name of the user that sent the message.\n */\n public get author(): string | null {\n return this.state.author;\n }\n\n /**\n * Message subject. Used only in email conversations.\n */\n public get subject(): string | null {\n return this.state.subject;\n }\n\n /**\n * Unique identifier of {@link ContentTemplate} for this message.\n */\n public get contentSid(): string | null {\n return this.state.contentSid;\n }\n\n /**\n * Body of the message.\n */\n public get body(): string | null {\n return this.state.body;\n }\n\n /**\n * Date this message was last updated on.\n */\n public get dateUpdated(): Date | null {\n return this.state.dateUpdated;\n }\n\n /**\n * Index of this message in the conversation's list of messages.\n *\n * By design, the message indices may have arbitrary gaps between them,\n * that does not necessarily mean they were deleted or otherwise modified - just that\n * messages may have some non-contiguous indices even if they are being sent immediately one after another.\n *\n * Trying to use indices for some calculations is going to be unreliable.\n *\n * To calculate the number of unread messages, it is better to use the Read Horizon API.\n * See {@link Conversation.getUnreadMessagesCount} for details.\n */\n public get index(): number {\n return this.state.index;\n }\n\n /**\n * Identity of the last user that updated the message.\n */\n public get lastUpdatedBy(): string | null {\n return this.state.lastUpdatedBy;\n }\n\n /**\n * Date this message was created on.\n */\n public get dateCreated(): Date | null {\n return this.state.timestamp;\n }\n\n /**\n * Custom attributes of the message.\n */\n public get attributes(): JSONValue {\n return this.state.attributes;\n }\n\n /**\n * Type of the message.\n */\n public get type(): MessageType {\n return this.state.type;\n }\n\n /**\n * One of the attached media (if present).\n * @deprecated Use attachedMedia instead. Note that the latter is now an array.\n */\n public get media(): Media | null {\n return this.state.media;\n }\n\n /**\n * Return all media attachments, except email body/history attachments, without temporary urls.\n */\n public get attachedMedia(): Array<Media> | null {\n return this.getMediaByCategories([\"media\"]);\n }\n\n /**\n * The server-assigned unique identifier of the authoring participant.\n */\n public get participantSid(): string | null {\n return this.state.participantSid;\n }\n\n /**\n * Aggregated information about the message delivery statuses across all participants of a conversation..\n */\n public get aggregatedDeliveryReceipt(): AggregatedDeliveryReceipt | null {\n return this.state.aggregatedDeliveryReceipt;\n }\n\n /**\n * @deprecated\n * Return a (possibly empty) array of media matching a specific set of categories.\n * Allowed category is so far only 'media'.\n * @param categories Array of categories to match.\n * @returns Array of media descriptors matching given categories.\n */\n @deprecated(\"getMediaByCategory\", \"getMediaByCategories\")\n public getMediaByCategory(\n categories: Array<MediaCategory>\n ): Array<Media> | null {\n return this.getMediaByCategories(categories);\n }\n\n /**\n * Return a (possibly empty) array of media matching a specific set of categories.\n * Allowed category is so far only 'media'.\n * @param categories Array of categories to match.\n * @returns Array of media descriptors matching given categories.\n */\n public getMediaByCategories(categories: MediaCategory[]): Media[] | null {\n return (this.state.medias ?? []).filter((m) =>\n categories.includes(m.category)\n );\n }\n\n /**\n * Get a media descriptor for an email body attachment of a provided type.\n * Allowed body types are returned in the Conversation.limits().emailBodiesAllowedContentTypes array.\n * @param type Type of email body to request, defaults to `text/plain`.\n */\n @validateTypes([nonEmptyString, \"undefined\"])\n public getEmailBody(type = \"text/plain\"): Media | null {\n return (\n this.getMediaByCategories([\"body\"])\n ?.filter((m) => m.contentType == type)\n .shift() ?? null\n );\n }\n\n /**\n * Get a media descriptor for an email history attachment of a provided type.\n * Allowed body types are returned in the Conversation.limits().emailHistoriesAllowedContentTypes array.\n * @param type Type of email history to request, defaults to `text/plain`.\n */\n @validateTypes([nonEmptyString, \"undefined\"])\n public getEmailHistory(type = \"text/plain\"): Media | null {\n return (\n this.getMediaByCategories([\"history\"])\n ?.filter((m) => m.contentType == type)\n .shift() ?? null\n );\n }\n\n _update(data) {\n const updateReasons: MessageUpdateReason[] = [];\n\n if (\n (data.text || typeof data.text === \"string\") &&\n data.text !== this.state.body\n ) {\n this.state.body = data.text;\n updateReasons.push(\"body\");\n }\n\n if (data.subject && data.subject !== this.state.subject) {\n this.state.subject = data.subject;\n updateReasons.push(\"subject\");\n }\n\n if (data.lastUpdatedBy && data.lastUpdatedBy !== this.state.lastUpdatedBy) {\n this.state.lastUpdatedBy = data.lastUpdatedBy;\n updateReasons.push(\"lastUpdatedBy\");\n }\n\n if (data.author && data.author !== this.state.author) {\n this.state.author = data.author;\n updateReasons.push(\"author\");\n }\n\n if (\n data.dateUpdated &&\n new Date(data.dateUpdated).getTime() !==\n (this.state.dateUpdated && this.state.dateUpdated.getTime())\n ) {\n this.state.dateUpdated = new Date(data.dateUpdated);\n updateReasons.push(\"dateUpdated\");\n }\n\n if (\n data.timestamp &&\n new Date(data.timestamp).getTime() !==\n (this.state.timestamp && this.state.timestamp.getTime())\n ) {\n this.state.timestamp = new Date(data.timestamp);\n updateReasons.push(\"dateCreated\");\n }\n\n const updatedAttributes = parseAttributes(\n data.attributes,\n `Got malformed attributes for the message ${this.sid}`,\n log\n );\n if (!isEqual(this.state.attributes, updatedAttributes)) {\n this.state.attributes = updatedAttributes;\n updateReasons.push(\"attributes\");\n }\n\n const updatedAggregatedDelivery = data.delivery;\n const currentAggregatedDelivery = this.state.aggregatedDeliveryReceipt;\n const isUpdatedAggregateDeliveryValid =\n !!updatedAggregatedDelivery &&\n !!updatedAggregatedDelivery.total &&\n !!updatedAggregatedDelivery.delivered &&\n !!updatedAggregatedDelivery.failed &&\n !!updatedAggregatedDelivery.read &&\n !!updatedAggregatedDelivery.sent &&\n !!updatedAggregatedDelivery.undelivered;\n if (isUpdatedAggregateDeliveryValid) {\n if (!currentAggregatedDelivery) {\n this.state.aggregatedDeliveryReceipt = new AggregatedDeliveryReceipt(\n updatedAggregatedDelivery\n );\n updateReasons.push(\"deliveryReceipt\");\n } else if (\n !currentAggregatedDelivery._isEquals(updatedAggregatedDelivery)\n ) {\n currentAggregatedDelivery._update(updatedAggregatedDelivery);\n updateReasons.push(\"deliveryReceipt\");\n }\n }\n\n // @fixme: This is a fairly heavy check.\n // Map data back and forth to perform a necessary field massage.\n const input = (data.medias ?? [])\n .map((value) => this.#wrapMedia(value)?._state())\n .filter((el) => !(el === null));\n const current = (this.state.medias ?? [])\n .map((value) => value._state())\n .filter((el) => !(el === null));\n\n if (\n !isEqual(input, current) ||\n !isEqual(\n this.#wrapMedia(data.media)?._state(),\n this.state.media?._state()\n )\n ) {\n this.#assignMedias(data.medias ?? null, data.media ?? null);\n updateReasons.push(\"media\");\n }\n\n if (updateReasons.length > 0) {\n this.emit(\"updated\", { message: this, updateReasons: updateReasons });\n }\n }\n\n /**\n * Get the participant who is the author of the message.\n */\n public async getParticipant(): Promise<Participant> {\n let participant: Participant | null = null;\n if (this.state.participantSid) {\n participant = await this.conversation\n .getParticipantBySid(this.state.participantSid)\n .catch(() => {\n log.debug(\n `Participant with sid \"${this.participantSid}\" not found for message ${this.sid}`\n );\n return null;\n });\n }\n if (!participant && this.state.author) {\n participant = await this.conversation\n .getParticipantByIdentity(this.state.author)\n .catch(() => {\n log.debug(\n `Participant with identity \"${this.author}\" not found for message ${this.sid}`\n );\n return null;\n });\n }\n if (participant) {\n return participant;\n }\n let errorMessage = \"Participant with \";\n if (this.state.participantSid) {\n errorMessage += \"SID '\" + this.state.participantSid + \"' \";\n }\n if (this.state.author) {\n if (this.state.participantSid) {\n errorMessage += \"or \";\n }\n errorMessage += \"identity '\" + this.state.author + \"' \";\n }\n if (errorMessage === \"Participant with \") {\n errorMessage = \"Participant \";\n }\n errorMessage += \"was not found\";\n throw new Error(errorMessage);\n }\n\n /**\n * Get the delivery receipts of the message.\n */\n public async getDetailedDeliveryReceipts(): Promise<\n DetailedDeliveryReceipt[]\n > {\n let paginator: Paginator<DetailedDeliveryReceipt> =\n await this._getDetailedDeliveryReceiptsPaginator();\n let detailedDeliveryReceipts: DetailedDeliveryReceipt[] = paginator.items;\n\n while (paginator.hasNextPage) {\n paginator = await paginator.nextPage();\n detailedDeliveryReceipts = [\n ...detailedDeliveryReceipts,\n ...paginator.items,\n ];\n }\n\n return detailedDeliveryReceipts;\n }\n\n /**\n * Remove the message.\n */\n public async remove(): Promise<Message> {\n await this.services.commandExecutor.mutateResource(\n \"delete\",\n this.links.self\n );\n\n return this;\n }\n\n /**\n * Edit the message body.\n * @param body New body of the message.\n */\n @validateTypesAsync(\"string\")\n public async updateBody(body: string): Promise<Message> {\n await this.services.commandExecutor.mutateResource<\n EditMessageRequest,\n MessageResponse\n >(\"post\", this.links.self, {\n body,\n });\n\n return this;\n }\n\n /**\n * Edit the message attributes.\n * @param attributes New attributes.\n */\n @validateTypesAsync(json)\n public async updateAttributes(attributes: JSONValue): Promise<Message> {\n await this.services.commandExecutor.mutateResource<\n EditMessageRequest,\n MessageResponse\n >(\"post\", this.links.self, {\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n });\n\n return this;\n }\n\n /**\n * @deprecated\n * Get content URLs for all media attachments in the given set using a single operation.\n * @param contentSet Set of media attachments to query content URLs.\n */\n @deprecated(\"attachTemporaryUrlsFor\", \"getTemporaryContentUrlsForMedia\")\n public async attachTemporaryUrlsFor(\n contentSet: Media[] | null\n ): Promise<Media[]> {\n // We ignore existing mcsMedia members of each of the media entries.\n // Instead we just collect their sids and pull new descriptors from a mediaSet GET endpoint.\n const sids = contentSet?.map((m) => m.sid);\n if (this.services.mcsClient && sids) {\n return (await this.services.mcsClient.mediaSetGet(sids)).map((item) => {\n return new Media(item, this.services);\n });\n } else {\n throw new Error(\"Media Content Service is unavailable\");\n }\n }\n\n /**\n * Get content URLs for all media attachments in the given set using a single operation.\n * @param contentSet Set of media attachments to query content URLs.\n */\n @validateTypesAsync(nonEmptyArray(\"media\", Media))\n public getTemporaryContentUrlsForMedia(\n contentSet: Media[]\n ): CancellablePromise<Map<string, string>> {\n // We ignore existing mcsMedia members of each of the media entries.\n // Instead we just collect their sids and pull new descriptors from a mediaSet GET endpoint.\n const sids = contentSet.map((m) => m.sid);\n return this.getTemporaryContentUrlsForMediaSids(sids);\n }\n\n /**\n * Get content URLs for all media attachments in the given set of media sids using a single operation.\n * @param mediaSids Set of media sids to query for the content URL.\n */\n @validateTypesAsync(nonEmptyArray(\"strings\", \"string\"))\n public getTemporaryContentUrlsForMediaSids(\n mediaSids: string[]\n ): CancellablePromise<Map<string, string>> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n const mediaGetRequest = this.services.mcsClient.mediaSetGetContentUrls(\n mediaSids ?? []\n );\n\n if (!this.services.mcsClient || !mediaSids) {\n reject(new Error(\"Media Content Service is unavailable\"));\n return;\n }\n\n onCancel(() => {\n mediaGetRequest.cancel();\n });\n\n try {\n const urls = await mediaGetRequest;\n resolve(urls);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Get content URLs for all media attached to the message.\n */\n public getTemporaryContentUrlsForAttachedMedia(): CancellablePromise<\n Map<string, string>\n > {\n const media = this.attachedMedia;\n const sids = media?.map((m) => m.sid) ?? [];\n return this.getTemporaryContentUrlsForMediaSids(sids);\n }\n\n private async _getDetailedDeliveryReceiptsPaginator(options?: {\n pageToken?: string;\n pageSize?: number;\n }): Promise<Paginator<DetailedDeliveryReceipt>> {\n const messagesReceiptsUrl = this.configuration.links.messagesReceipts\n .replace(\"%s\", this.conversation.sid)\n .replace(\"%s\", this.sid);\n const url = new UriBuilder(messagesReceiptsUrl)\n .arg(\"PageToken\", options?.pageToken as string)\n .arg(\"PageSize\", options?.pageSize as number)\n .build();\n const response = await this.services.network.get<\n { delivery_receipts: DeliveryReceiptResponse[] } & ResponseMeta\n >(url);\n\n return new RestPaginator<DetailedDeliveryReceipt>(\n response.body.delivery_receipts.map(\n (x) => new DetailedDeliveryReceipt(x)\n ),\n (pageToken, pageSize) =>\n this._getDetailedDeliveryReceiptsPaginator({ pageToken, pageSize }),\n response.body.meta.previous_token,\n response.body.meta.next_token\n );\n }\n\n /**\n * Get the {@link ContentData} for this message. Resolves to `null` when\n * {@link Message.contentSid} is null.\n */\n public getContentData(): CancellablePromise<ContentData | null> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n if (this.state.contentSid === null) {\n resolve(null);\n return;\n }\n\n const bodies = this.getMediaByCategories([\"body\"]);\n\n if (bodies === null) {\n resolve(null);\n return;\n }\n\n const twilioPrefix = \"application/x-vnd.com.twilio.rich.\";\n const filteredMedias = bodies.filter((media) =>\n media.contentType.startsWith(twilioPrefix)\n );\n\n if (filteredMedias.length === 0) {\n resolve(null);\n return;\n }\n\n const contentMedia = filteredMedias[0];\n const urlPromise = contentMedia.getContentTemporaryUrl();\n\n onCancel(() => {\n urlPromise.cancel();\n });\n\n let url: string | null;\n\n try {\n url = await urlPromise;\n } catch (e) {\n reject(e);\n return;\n }\n\n if (url === null) {\n resolve(null);\n return;\n }\n\n const jsonStringPromise = new Promise<string>((resolve, reject) => {\n let isCancelled = false;\n const xhr = new XHR();\n xhr.open(\"GET\", url ?? \"\", true);\n xhr.responseType = \"text\";\n xhr.onreadystatechange = () => {\n if (xhr.readyState !== 4 || isCancelled) {\n return;\n }\n resolve(xhr.responseText);\n };\n xhr.onerror = () => {\n reject(xhr.statusText);\n };\n onCancel(() => {\n isCancelled = true;\n xhr.abort();\n reject(new Error(\"XHR has been aborted\"));\n });\n xhr.send();\n });\n\n let json;\n\n try {\n const jsonString = await jsonStringPromise;\n json = JSON.parse(jsonString);\n } catch (e) {\n reject(e);\n return;\n }\n\n const dataType = contentMedia.contentType\n .replace(twilioPrefix, \"\")\n .replace(\".\", \"/\");\n\n resolve(parseVariant(dataType, json.data));\n });\n }\n\n /**\n * Get the {@link ChannelMetadata} for this message. Resolves to `null` if\n * the message doesn't have any channel metadata.\n */\n public async getChannelMetadata(): Promise<ChannelMetadata | null> {\n if (!this.state.hasChannelMetadata) {\n return null;\n }\n\n return await this.services.channelMetadataClient.getChannelMetadata(\n this.conversation.sid,\n this.sid\n );\n }\n\n /**\n * Get recipients of the message.\n */\n public async getMessageRecipients(): Promise<RecipientDescriptor[]> {\n return await this.services.messageRecipientsClient.getRecipientsFromMessage(\n this.conversation.sid,\n this.sid\n );\n }\n}\n\nexport {\n Message,\n MessageServices,\n MessageType,\n MessageUpdateReason,\n MessageUpdatedEventArgs,\n};\n","import { Logger } from \"../logger\";\n\nimport {\n Message,\n MessageData,\n MessageUpdatedEventArgs,\n MessageUpdateReason,\n} from \"../message\";\nimport {\n Conversation,\n SendEmailOptions,\n SendMediaOptions,\n} from \"../conversation\";\nimport { UnsentMessage } from \"../unsent-message\";\n\nimport { SyncList, SyncClient } from \"twilio-sync\";\nimport { SyncPaginator } from \"../sync-paginator\";\n\nimport { McsClient, McsMedia, CancellablePromise } from \"@twilio/mcs-client\";\nimport { Network } from \"../services/network\";\nimport { Configuration } from \"../configuration\";\nimport { CommandExecutor } from \"../command-executor\";\nimport { SendMessageRequest } from \"../interfaces/commands/send-message\";\nimport { MessageResponse } from \"../interfaces/commands/message-response\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { JSONValue } from \"../types\";\nimport { ChannelMetadataClient } from \"../channel-metadata-client\";\nimport { MessageRecipientsClient } from \"../message-recipients-client\";\n\ntype MessagesEvents = {\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n};\n\nconst log = Logger.scope(\"Messages\");\n\nexport interface MessagesServices {\n mcsClient: McsClient;\n network: Network;\n syncClient: SyncClient;\n commandExecutor: CommandExecutor;\n channelMetadataClient: ChannelMetadataClient;\n messageRecipientsClient: MessageRecipientsClient;\n}\n\n/**\n * Represents the collection of messages in a conversation\n */\nclass Messages extends ReplayEventEmitter<MessagesEvents> {\n public readonly conversation: Conversation;\n private readonly configuration: Configuration;\n private readonly services: MessagesServices;\n private readonly messagesByIndex: Map<number, Message>;\n private messagesListPromise: Promise<SyncList> | null;\n\n public constructor(\n conversation: Conversation,\n configuration: Configuration,\n services: MessagesServices\n ) {\n super();\n\n this.conversation = conversation;\n this.configuration = configuration;\n this.services = services;\n\n this.messagesByIndex = new Map();\n this.messagesListPromise = null;\n }\n\n /**\n * Subscribe to the Messages Event Stream\n * @param arg - Name of the Sync object, or the SyncList itself, that\n * represents the Messages resource.\n */\n public async subscribe(arg: string | SyncList) {\n if (this.messagesListPromise) {\n return this.messagesListPromise;\n }\n\n this.messagesListPromise =\n typeof arg === \"string\"\n ? this.services.syncClient.list({\n id: arg,\n mode: \"open_existing\",\n })\n : Promise.resolve(arg);\n\n try {\n const list = await this.messagesListPromise;\n\n list.on(\"itemAdded\", (args) => {\n log.debug(`${this.conversation.sid} itemAdded: ${args.item.index}`);\n\n const links = {\n self: `${this.conversation._links.messages}/${args.item.data.sid}`,\n conversation: this.conversation._links.self,\n messages_receipts: `${this.conversation._links.messages}/${args.item.data.sid}/Receipts`,\n };\n const message = new Message(\n args.item.index,\n args.item.data,\n this.conversation,\n links,\n this.configuration,\n this.services\n );\n\n if (this.messagesByIndex.has(message.index)) {\n log.debug(\n \"Message arrived, but is already known and ignored\",\n this.conversation.sid,\n message.index\n );\n return;\n }\n\n this.messagesByIndex.set(message.index, message);\n\n message.on(\"updated\", (args: MessageUpdatedEventArgs) =>\n this.emit(\"messageUpdated\", args)\n );\n\n this.emit(\"messageAdded\", message);\n });\n\n list.on(\"itemRemoved\", (args) => {\n log.debug(`#{this.conversation.sid} itemRemoved: ${args.index}`);\n\n const index = args.index;\n\n if (this.messagesByIndex.has(index)) {\n const message = this.messagesByIndex.get(index);\n if (!message) {\n return;\n }\n\n this.messagesByIndex.delete(message.index);\n message.removeAllListeners(\"updated\");\n this.emit(\"messageRemoved\", message);\n }\n });\n\n list.on(\"itemUpdated\", (args) => {\n log.debug(`${this.conversation.sid} itemUpdated: ${args.item.index}`);\n\n const message = this.messagesByIndex.get(args.item.index);\n\n if (message) {\n message._update(args.item.data);\n }\n });\n\n return list;\n } catch (err) {\n this.messagesListPromise = null;\n\n if (this.services.syncClient.connectionState !== \"disconnected\") {\n log.error(\n \"Failed to get messages object for conversation\",\n this.conversation.sid,\n err\n );\n }\n\n log.debug(\n \"ERROR: Failed to get messages object for conversation\",\n this.conversation.sid,\n err\n );\n\n throw err;\n }\n }\n\n public async unsubscribe() {\n if (!this.messagesListPromise) {\n return;\n }\n\n const entity = await this.messagesListPromise;\n entity.close();\n this.messagesListPromise = null;\n }\n\n /**\n * Send a message to the conversation. The message could include text and multiple media attachments.\n * @param message Message to post\n */\n public sendV2(message: UnsentMessage): CancellablePromise<MessageResponse> {\n log.debug(\n \"Sending message V2\",\n message.mediaContent,\n message.attributes,\n message.emailOptions\n );\n\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n const media: McsMedia[] = [];\n const requests: CancellablePromise<McsMedia>[] = [];\n\n onCancel(() => {\n requests.forEach((request) => request.cancel());\n });\n\n for (const [category, mediaContent] of message.mediaContent) {\n try {\n log.debug(\n `Adding media to a message as ${\n mediaContent instanceof FormData ? \"FormData\" : \"SendMediaOptions\"\n }`,\n mediaContent\n );\n\n const request =\n mediaContent instanceof FormData\n ? this.services.mcsClient.postFormData(mediaContent, category)\n : this.services.mcsClient.post(\n mediaContent.contentType ?? \"\",\n mediaContent.media ?? \"\",\n category,\n mediaContent.filename\n );\n\n requests.push(request);\n\n media.push(await request);\n } catch (e) {\n reject(e);\n return;\n }\n }\n\n const messagesPostRequest = this.services.commandExecutor.mutateResource<\n SendMessageRequest,\n MessageResponse\n >(\"post\", this.conversation._links.messages, {\n body: message.text,\n subject: message.emailOptions?.subject,\n media_sids: media.map((m) => m.sid),\n attributes:\n typeof message.attributes !== \"undefined\"\n ? JSON.stringify(message.attributes)\n : undefined,\n content_sid: message.contentSid,\n content_variables:\n typeof message.contentVariables !== \"undefined\"\n ? JSON.stringify(\n message.contentVariables.reduce<Record<string, string>>(\n (accum, current) => ({\n ...accum,\n [current.name]: current.value,\n }),\n {}\n )\n )\n : undefined,\n });\n\n try {\n resolve(await messagesPostRequest);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Send Message to the conversation\n * @param message Message to post\n * @param attributes Message attributes\n * @param emailOptions Options that modify E-mail integration behaviors.\n * @returns Returns promise which can fail\n */\n public async send(\n message: null | string | FormData | SendMediaOptions,\n attributes: JSONValue = {},\n emailOptions?: SendEmailOptions\n ): Promise<MessageResponse> {\n log.debug(\"Sending text message\", message, attributes, emailOptions);\n\n return this.services.commandExecutor.mutateResource<\n SendMessageRequest,\n MessageResponse\n >(\"post\", this.conversation._links.messages, {\n body: message ?? \"\",\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n subject: emailOptions?.subject,\n });\n }\n\n /**\n * Send Media Message to the conversation\n * @param mediaContent Media content to post\n * @param attributes Message attributes\n * @param emailOptions Email options\n * @returns Returns promise which can fail\n */\n public async sendMedia(\n mediaContent: FormData | SendMediaOptions,\n attributes: JSONValue = {},\n emailOptions?: SendEmailOptions\n ) {\n log.debug(\"Sending media message\", mediaContent, attributes, emailOptions);\n log.debug(\n `Sending media message as ${\n mediaContent instanceof FormData ? \"FormData\" : \"SendMediaOptions\"\n }`,\n mediaContent,\n attributes\n );\n\n const media: McsMedia =\n mediaContent instanceof FormData\n ? await this.services.mcsClient.postFormData(mediaContent)\n : await this.services.mcsClient.post(\n mediaContent.contentType ?? \"\",\n mediaContent.media ?? \"\",\n \"media\",\n mediaContent.filename\n );\n\n // emailOptions are currently ignored for media messages.\n return await this.services.commandExecutor.mutateResource<\n SendMessageRequest,\n MessageResponse\n >(\"post\", this.conversation._links.messages, {\n media_sids: [media.sid],\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n });\n }\n\n /**\n * Returns messages from conversation using paginator interface\n * @param pageSize Number of messages to return in single chunk. By default it's 30.\n * @param anchor Most early message id which is already known, or 'end' by default\n * @param direction Pagination order 'backwards' or 'forward', 'forward' by default\n * @returns Last page of messages by default\n */\n public async getMessages(\n pageSize: number | undefined,\n anchor: number | \"end\" | undefined,\n direction: \"forward\" | \"backwards\" = \"backwards\"\n ): Promise<SyncPaginator<Message>> {\n return this._getMessages(pageSize, anchor, direction);\n }\n\n private _wrapPaginator(order, page, op) {\n // Due to an inconsistency between Sync and Chat conventions, next and\n // previous pages should be swapped.\n const shouldReverse = order === \"desc\";\n\n const nextPage = () =>\n page.nextPage().then((page) => this._wrapPaginator(order, page, op));\n const previousPage = () =>\n page.prevPage().then((page) => this._wrapPaginator(order, page, op));\n\n return op(page.items).then((items) => ({\n items: items.sort((x, y) => {\n return x.index - y.index;\n }),\n hasPrevPage: shouldReverse ? page.hasNextPage : page.hasPrevPage,\n hasNextPage: shouldReverse ? page.hasPrevPage : page.hasNextPage,\n prevPage: shouldReverse ? nextPage : previousPage,\n nextPage: shouldReverse ? previousPage : nextPage,\n }));\n }\n\n private _upsertMessage(index: number, value: MessageData) {\n const cachedMessage = this.messagesByIndex.get(index);\n\n if (cachedMessage) {\n return cachedMessage;\n }\n\n const links = {\n self: `${this.conversation._links.messages}/${value.sid}`,\n conversation: this.conversation._links.self,\n messages_receipts: `${this.conversation._links.messages}/${value.sid}/Receipts`,\n };\n const message = new Message(\n index,\n value,\n this.conversation,\n links,\n this.configuration,\n this.services\n );\n\n this.messagesByIndex.set(message.index, message);\n\n message.on(\"updated\", (args: MessageUpdatedEventArgs) =>\n this.emit(\"messageUpdated\", args)\n );\n\n return message;\n }\n\n /**\n * Returns last messages from conversation\n * @param {Number} [pageSize] Number of messages to return in single chunk. By default it's 30.\n * @param {String} [anchor] Most early message id which is already known, or 'end' by default\n * @param {String} [direction] Pagination order 'backwards' or 'forward', or 'forward' by default\n * @returns {Promise<SyncPaginator<Message>>} last page of messages by default\n * @private\n */\n private async _getMessages(\n pageSize = 30,\n anchor: number | \"end\" = \"end\",\n direction: \"forward\" | \"backwards\" = \"forward\"\n ): Promise<SyncPaginator<Message>> {\n const order = direction === \"backwards\" ? \"desc\" : \"asc\";\n const list = await this.messagesListPromise;\n const page = await list?.getItems({\n from: anchor !== \"end\" ? anchor : void 0,\n pageSize,\n order,\n limit: pageSize, // @todo Limit equals pageSize by default in Sync. This is probably not ideal.\n });\n\n return await this._wrapPaginator(order, page, (items) =>\n Promise.all(\n items.map((item) => this._upsertMessage(item.index, item.data))\n )\n );\n }\n}\n\nexport { Messages };\n","import { MediaCategory, CancellablePromise } from \"@twilio/mcs-client\";\nimport { parseToNumber } from \"./util\";\nimport { SendEmailOptions, SendMediaOptions } from \"./conversation\";\nimport { JSONValue } from \"./types\";\nimport { Messages } from \"./data/messages\";\nimport { ContentTemplateVariable } from \"./content-template\";\n\n/**\n * An unsent message. Returned from {@link MessageBuilder.build}.\n */\nclass UnsentMessage {\n public text?: string;\n public attributes: JSONValue = {};\n public mediaContent: [MediaCategory, FormData | SendMediaOptions][] = [];\n public emailOptions: SendEmailOptions = {};\n public contentSid?: string;\n public contentVariables?: ContentTemplateVariable[];\n\n /**\n * @internal\n */\n constructor(private messagesEntity: Messages) {}\n\n /**\n * Send the prepared message to the conversation.\n * @returns Index of the new message in the conversation.\n */\n send(): CancellablePromise<number | null> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n const request = this.messagesEntity.sendV2(this);\n onCancel(() => request.cancel());\n try {\n const response = await request;\n resolve(parseToNumber(response.index));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n\nexport { UnsentMessage };\n","import { CancellablePromise } from \"@twilio/mcs-client\";\nimport { ConversationLimits } from \"./interfaces/conversation-limits\";\nimport { SendMediaOptions } from \"./conversation\";\nimport { UnsentMessage } from \"./unsent-message\";\nimport { JSONValue } from \"./types\";\nimport { Messages } from \"./data/messages\";\nimport { ContentTemplateVariable } from \"./content-template\";\nimport { array, validateTypes } from \"@twilio/declarative-type-validator\";\nimport { json, sendMediaOptions } from \"./interfaces/rules\";\n\n/**\n * Message builder. Allows the message to be built and sent via method chaining.\n *\n * Example:\n *\n * ```ts\n * await testConversation.prepareMessage()\n * .setBody('Hello!')\n * .setAttributes({foo: 'bar'})\n * .addMedia(media1)\n * .addMedia(media2)\n * .build()\n * .send();\n * ```\n */\nclass MessageBuilder {\n private readonly message: UnsentMessage;\n private emailBodies: Map<string, FormData | SendMediaOptions>;\n private emailHistories: Map<string, FormData | SendMediaOptions>;\n\n /**\n * @internal\n */\n constructor(\n private readonly limits: ConversationLimits,\n messagesEntity: Messages\n ) {\n this.message = new UnsentMessage(messagesEntity);\n this.emailBodies = new Map<string, FormData | SendMediaOptions>();\n this.emailHistories = new Map<string, FormData | SendMediaOptions>();\n }\n\n /**\n * Sets the message body.\n * @param text Contents of the body.\n */\n @validateTypes(\"string\")\n setBody(text: string): MessageBuilder {\n this.message.text = text;\n return this;\n }\n\n /**\n * Sets the message subject.\n * @param subject Contents of the subject.\n */\n @validateTypes(\"string\")\n setSubject(subject: string): MessageBuilder {\n this.message.emailOptions.subject = subject;\n return this;\n }\n\n /**\n * Sets the message attributes.\n * @param attributes Message attributes.\n */\n @validateTypes(json)\n setAttributes(attributes: JSONValue): MessageBuilder {\n this.message.attributes = attributes;\n return this;\n }\n\n /**\n * Set the email body with a given content type.\n * @param contentType Format of the body to set (text/plain or text/html).\n * @param body Body payload in the selected format.\n */\n @validateTypes(\"string\", [FormData, sendMediaOptions])\n setEmailBody(\n contentType: string,\n body: FormData | SendMediaOptions\n ): MessageBuilder {\n this.emailBodies.set(contentType, body);\n return this;\n }\n\n /**\n * Set the email history with a given content type.\n * @param contentType Format of the history to set (text/plain or text/html).\n * @param history History payload in the selected format.\n */\n @validateTypes(\"string\", [FormData, sendMediaOptions])\n setEmailHistory(\n contentType: string,\n history: FormData | SendMediaOptions\n ): MessageBuilder {\n this.emailHistories.set(contentType, history);\n return this;\n }\n\n /**\n * Adds {@link ContentTemplate} SID for the message alongside optional\n * variables. When no variables provided, the default values will be used.\n *\n * Adding the content SID converts the message to a rich message. In this\n * case, other fields are ignored and the message is sent using the content\n * from the the {@link ContentTemplate}.\n *\n * Use {@link Client.getContentTemplates} to request all available\n * {@link ContentTemplate}s.\n *\n * @param contentSid SID of the {@link ContentTemplate}\n * @param variables Custom variables to resolve the template.\n */\n @validateTypes(\"string\", [\n array(\"content variables\", ContentTemplateVariable),\n \"undefined\",\n ])\n setContentTemplate(\n contentSid: string,\n contentVariables: ContentTemplateVariable[] = []\n ): MessageBuilder {\n this.message.contentSid = contentSid;\n this.message.contentVariables = contentVariables;\n return this;\n }\n\n /**\n * Adds media to the message.\n * @param payload Media to add.\n */\n @validateTypes([FormData, sendMediaOptions])\n addMedia(payload: FormData | SendMediaOptions): MessageBuilder {\n if (typeof FormData === \"undefined\" && payload instanceof FormData) {\n throw new Error(\"Could not add FormData content whilst not in a browser\");\n }\n if (!(payload instanceof FormData)) {\n const mediaOptions = payload as SendMediaOptions;\n if (!mediaOptions.contentType || !mediaOptions.media) {\n throw new Error(\n \"Media content in SendMediaOptions must contain non-empty contentType and media\"\n );\n }\n }\n this.message.mediaContent.push([\"media\", payload]);\n return this;\n }\n\n /**\n * Builds the message, making it ready to be sent.\n */\n build(): UnsentMessage {\n this.emailBodies.forEach((_, key) => {\n if (!this.limits.emailBodiesAllowedContentTypes.includes(key)) {\n throw new Error(`Unsupported email body content type ${key}`);\n }\n });\n this.emailHistories.forEach((_, key) => {\n if (!this.limits.emailHistoriesAllowedContentTypes.includes(key)) {\n throw new Error(`Unsupported email history content type ${key}`);\n }\n });\n if (\n this.emailBodies.size > this.limits.emailBodiesAllowedContentTypes.length\n ) {\n throw new Error(\n `Too many email bodies attached to the message (${this.emailBodies.size} > ${this.limits.emailBodiesAllowedContentTypes.length})`\n );\n }\n if (\n this.emailHistories.size >\n this.limits.emailHistoriesAllowedContentTypes.length\n ) {\n throw new Error(\n `Too many email histories attached to the message (${this.emailHistories.size} > ${this.limits.emailHistoriesAllowedContentTypes.length})`\n );\n }\n\n if (\n this.message.mediaContent.length > this.limits.mediaAttachmentsCountLimit\n ) {\n throw new Error(\n `Too many media attachments in the message (${this.message.mediaContent.length} > ${this.limits.mediaAttachmentsCountLimit})`\n );\n }\n\n // @todo we don't know the sizes of the attachments in FormData\n // @todo insertion below makes build() method non-repeatable - probably move to UnsentMessage.send() or even sendV2()?\n\n this.emailBodies.forEach((body) => {\n this.message.mediaContent.push([\"body\", body]);\n });\n\n this.emailHistories.forEach((history) => {\n this.message.mediaContent.push([\"history\", history]);\n });\n\n return this.message;\n }\n\n /**\n * Prepares a message and sends it to the conversation.\n */\n buildAndSend(): CancellablePromise<number | null> {\n return this.build().send();\n }\n}\n\nexport { MessageBuilder };\n","import { Logger } from \"./logger\";\nimport { ParticipantBindingOptions, Participants } from \"./data/participants\";\nimport {\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason,\n} from \"./participant\";\nimport { Messages } from \"./data/messages\";\nimport {\n Message,\n MessageUpdatedEventArgs,\n MessageUpdateReason,\n} from \"./message\";\nimport { UriBuilder, parseToNumber, parseTime } from \"./util\";\nimport { Users } from \"./data/users\";\nimport { Paginator, PaginatorOptions } from \"./interfaces/paginator\";\nimport { ConversationsDataSource } from \"./data/conversations\";\nimport { McsClient } from \"@twilio/mcs-client\";\nimport { SyncClient, SyncDocument, SyncList, SyncMap } from \"twilio-sync\";\nimport { TypingIndicator } from \"./services/typing-indicator\";\nimport { Network } from \"./services/network\";\nimport {\n validateTypesAsync,\n custom,\n literal,\n nonEmptyString,\n nonNegativeInteger,\n objectSchema,\n} from \"@twilio/declarative-type-validator\";\nimport { json, optionalJson } from \"./interfaces/rules\";\nimport { Configuration } from \"./configuration\";\nimport { CommandExecutor } from \"./command-executor\";\nimport { AddParticipantRequest } from \"./interfaces/commands/add-participant\";\nimport { EditConversationRequest } from \"./interfaces/commands/edit-conversation\";\nimport { ConversationResponse } from \"./interfaces/commands/conversation-response\";\nimport { ParticipantResponse } from \"./interfaces/commands/participant-response\";\nimport { EditNotificationLevelRequest } from \"./interfaces/commands/edit-notification-level\";\nimport {\n EditLastReadMessageIndexRequest,\n EditLastReadMessageIndexResponse,\n} from \"./interfaces/commands/edit-last-read-message-index\";\nimport { ConversationLimits } from \"./interfaces/conversation-limits\";\nimport { MessageBuilder } from \"./message-builder\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { isEqual } from \"./util\";\nimport { JSONValue } from \"./types\";\nimport { ChannelMetadataClient } from \"./channel-metadata-client\";\nimport {\n MessageRecipientsClient,\n RecipientDescriptor,\n} from \"./message-recipients-client\";\n\n/**\n * Conversation events.\n */\ntype ConversationEvents = {\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n updated: (data: {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n }) => void;\n removed: (conversation: Conversation) => void;\n};\n\n/**\n * Reason for the `updated` event emission by a conversation.\n */\ntype ConversationUpdateReason =\n | \"attributes\"\n | \"createdBy\"\n | \"dateCreated\"\n | \"dateUpdated\"\n | \"friendlyName\"\n | \"lastReadMessageIndex\"\n | \"state\"\n | \"status\"\n | \"uniqueName\"\n | \"lastMessage\"\n | \"notificationLevel\"\n | \"bindings\";\n\n/**\n * Status of the conversation, relative to the client: whether the conversation\n * has been `joined` or the client is `notParticipating` in the conversation.\n */\ntype ConversationStatus = \"notParticipating\" | \"joined\";\n\n/**\n * User's notification level for the conversation. Determines\n * whether the currently logged-in user will receive pushes for events\n * in this conversation. Can be either `muted` or `default`, where\n * `default` defers to the global service push configuration.\n */\ntype NotificationLevel = \"default\" | \"muted\";\n\n/**\n * State of the conversation.\n */\ninterface ConversationState {\n /**\n * Current state.\n */\n current: \"active\" | \"inactive\" | \"closed\";\n\n /**\n * Date at which the latest conversation state update happened.\n */\n dateUpdated: Date;\n}\n\n/**\n * Event arguments for the `updated` event.\n */\ninterface ConversationUpdatedEventArgs {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n}\n\n/**\n * Binding for email conversation.\n */\ninterface ConversationBindings {\n email?: ConversationEmailBinding;\n sms?: ConversationSmsBinding;\n}\n\n/**\n * Binding for email conversation.\n */\ninterface ConversationEmailBinding {\n name?: string;\n projected_address: string;\n}\n\n/**\n * Binding for SMS conversation.\n */\ninterface ConversationSmsBinding {\n address?: string;\n}\n\n/**\n * Configuration for attaching a media file to a message.\n * These options can be passed to {@link Conversation.sendMessage} and\n * {@link MessageBuilder.addMedia}.\n */\ninterface SendMediaOptions {\n /**\n * Content type of media.\n */\n contentType: null | string;\n\n /**\n * Optional filename.\n */\n filename?: string;\n\n /**\n * Content to post.\n */\n media: null | string | Buffer | Blob;\n}\n\n/**\n * These options can be passed to {@link Conversation.sendMessage}.\n */\ninterface SendEmailOptions {\n /**\n * Message subject. Ignored for media messages.\n */\n subject?: string;\n}\n\n/**\n * Information about the last message of a conversation.\n */\ninterface LastMessage {\n /**\n * Message's index.\n */\n index?: number;\n\n /**\n * Message's creation date.\n */\n dateCreated?: Date;\n}\n\n/**\n * Conversation services.\n */\ninterface ConversationServices {\n users: Users;\n typingIndicator: TypingIndicator;\n network: Network;\n mcsClient: McsClient;\n syncClient: SyncClient;\n commandExecutor: CommandExecutor;\n channelMetadataClient: ChannelMetadataClient;\n messageRecipientsClient: MessageRecipientsClient;\n}\n\n/**\n * Internal (private) state of the conversation.\n */\ninterface ConversationInternalState {\n uniqueName: string | null;\n status: ConversationStatus;\n attributes: JSONValue;\n createdBy?: string;\n dateCreated: Date | null;\n dateUpdated: Date | null;\n friendlyName: string | null;\n lastReadMessageIndex: number | null;\n lastMessage?: LastMessage;\n notificationLevel?: NotificationLevel;\n state?: ConversationState;\n bindings: ConversationBindings;\n}\n\n/**\n * Conversation descriptor.\n */\ninterface ConversationDescriptor {\n channel: string;\n entityName: string;\n uniqueName: string;\n attributes: JSONValue;\n createdBy?: string;\n friendlyName?: string;\n lastConsumedMessageIndex: number;\n dateCreated: Date | null;\n dateUpdated: Date | null;\n notificationLevel?: NotificationLevel;\n bindings?: ConversationBindings;\n}\n\n/**\n * Conversation links.\n */\ninterface ConversationLinks {\n self: string;\n messages: string;\n participants: string;\n}\n\n/**\n * Map of the fields that will be processed with update messages.\n */\nconst fieldMappings = {\n lastMessage: \"lastMessage\",\n attributes: \"attributes\",\n createdBy: \"createdBy\",\n dateCreated: \"dateCreated\",\n dateUpdated: \"dateUpdated\",\n friendlyName: \"friendlyName\",\n lastConsumedMessageIndex: \"lastConsumedMessageIndex\",\n notificationLevel: \"notificationLevel\",\n sid: \"sid\",\n status: \"status\",\n uniqueName: \"uniqueName\",\n state: \"state\",\n bindings: \"bindings\",\n};\n\n/**\n * A conversation represents communication between multiple Conversations\n * clients.\n */\nclass Conversation extends ReplayEventEmitter<ConversationEvents> {\n /**\n * Fired when a participant has joined the conversation.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - participant that joined the\n * conversation\n * @event\n */\n public static readonly participantJoined = \"participantJoined\";\n\n /**\n * Fired when a participant has left the conversation.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - participant that left the\n * conversation\n * @event\n */\n public static readonly participantLeft = \"participantLeft\";\n\n /**\n * Fired when data of a participant has been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Participant} `participant` - participant that has received the\n * update\n * * {@link ParticipantUpdateReason}[] `updateReasons` - array of reasons\n * for the update\n * @event\n */\n public static readonly participantUpdated = \"participantUpdated\";\n\n /**\n * Fired when a new message has been added to the conversation.\n *\n * Parameters:\n * 1. {@link Message} `message` - message that has been added\n * @event\n */\n public static readonly messageAdded = \"messageAdded\";\n\n /**\n * Fired when message is removed from the conversation's message list.\n *\n * Parameters:\n * 1. {@link Message} `message` - message that has been removed\n * @event\n */\n public static readonly messageRemoved = \"messageRemoved\";\n\n /**\n * Fired when data of a message has been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Message} `message` - message that has received the update\n * * {@link MessageUpdateReason}[] `updateReasons` - array of reasons for\n * the update\n * @event\n */\n public static readonly messageUpdated = \"messageUpdated\";\n\n /**\n * Fired when a participant has stopped typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant that has stopped\n * typing\n * @event\n */\n public static readonly typingEnded = \"typingEnded\";\n\n /**\n * Fired when a participant has started typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant that has started\n * typing\n * @event\n */\n public static readonly typingStarted = \"typingStarted\";\n\n /**\n * Fired when the data of the conversation has been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Conversation} `conversation` - conversation that has received\n * the update\n * * {@link ConversationUpdateReason}[] `updateReasons` - array of reasons\n * for the update\n * @event\n */\n public static readonly updated = \"updated\";\n\n /**\n * Fired when the conversation was destroyed or the currently-logged-in user\n * has left private conversation.\n *\n * Parameters:\n * 1. {@link Conversation} `conversation` - conversation that has been removed\n * @event\n */\n public static readonly removed = \"removed\";\n\n /**\n * Logger instance.\n */\n private static readonly _logger = Logger.scope(\"Conversation\");\n\n /**\n * Unique system identifier of the conversation.\n */\n public readonly sid: string;\n\n /**\n * Conversation links for REST requests.\n * @internal\n */\n public readonly _links: ConversationLinks;\n\n /**\n * Configuration of the client that the conversation belongs to.\n */\n private readonly _configuration: Configuration;\n\n /**\n * Conversation service objects.\n */\n private readonly _services: ConversationServices;\n\n /**\n * Internal state of the conversation.\n */\n private readonly _internalState: ConversationInternalState;\n\n /**\n * Name of the conversation entity document.\n */\n private readonly _entityName: string;\n\n /**\n * Messages entity.\n */\n private readonly _messagesEntity: Messages;\n\n /**\n * Sync list containing messages.\n */\n private _messagesList?: SyncList;\n\n /**\n * Map of participants.\n * @internal\n */\n public readonly _participants: Map<string, Participant>;\n\n /**\n * Participants entity.\n */\n private readonly _participantsEntity: Participants;\n\n /**\n * Sync map containing participants.\n */\n private _participantsMap?: SyncMap;\n\n /**\n * Source of the most recent update.\n */\n private _dataSource!: ConversationsDataSource;\n\n /**\n * Promise for the conversation entity document.\n */\n private _entityPromise!: Promise<SyncDocument> | null;\n\n /**\n * Promise for the messages list.\n */\n private _streamsPromise!: Promise<boolean> | null;\n\n /**\n * Conversation entity document.\n */\n private _entity!: SyncDocument | null;\n\n /**\n * @param descriptor Conversation descriptor.\n * @param sid Conversation SID.\n * @param links Conversation links for REST requests.\n * @param configuration Client configuration.\n * @param services Conversation services.\n * @internal\n */\n public constructor(\n descriptor: ConversationDescriptor,\n sid: string,\n links: ConversationLinks,\n configuration: Configuration,\n services: ConversationServices\n ) {\n super();\n\n this.sid = sid;\n this._links = links;\n this._configuration = configuration;\n this._services = services;\n this._entityName = descriptor.channel;\n this._internalState = {\n uniqueName: descriptor.uniqueName || null,\n status: \"notParticipating\",\n attributes: descriptor.attributes ?? {},\n createdBy: descriptor.createdBy,\n dateCreated: parseTime(descriptor.dateCreated),\n dateUpdated: parseTime(descriptor.dateUpdated),\n friendlyName: descriptor.friendlyName || null,\n lastReadMessageIndex: Number.isInteger(\n descriptor.lastConsumedMessageIndex\n )\n ? descriptor.lastConsumedMessageIndex\n : null,\n bindings: descriptor.bindings ?? {},\n };\n\n if (descriptor.notificationLevel) {\n this._internalState.notificationLevel = descriptor.notificationLevel;\n }\n\n const participantsLinks = {\n participants: this._links.participants,\n };\n\n this._participants = new Map();\n this._participantsEntity = new Participants(\n this,\n this._participants, // state leak\n participantsLinks,\n this._services\n );\n this._participantsEntity.on(Conversation.participantJoined, (participant) =>\n // @todo update participants map here??\n this.emit(Conversation.participantJoined, participant)\n );\n this._participantsEntity.on(Conversation.participantLeft, (participant) =>\n // @todo update participants map here??\n this.emit(Conversation.participantLeft, participant)\n );\n this._participantsEntity.on(\n Conversation.participantUpdated,\n (args: ParticipantUpdatedEventArgs) =>\n // @todo update participants map here??\n this.emit(Conversation.participantUpdated, args)\n );\n\n this._messagesEntity = new Messages(this, configuration, services);\n this._messagesEntity.on(Conversation.messageAdded, (message) =>\n this._onMessageAdded(message)\n );\n this._messagesEntity.on(\n Conversation.messageUpdated,\n (args: MessageUpdatedEventArgs) =>\n this.emit(Conversation.messageUpdated, args)\n );\n this._messagesEntity.on(Conversation.messageRemoved, (message) =>\n this.emit(Conversation.messageRemoved, message)\n );\n }\n\n /**\n * Unique name of the conversation.\n */\n public get uniqueName(): string | null {\n return this._internalState.uniqueName;\n }\n\n /**\n * Status of the conversation.\n */\n public get status(): ConversationStatus {\n return this._internalState.status;\n }\n\n /**\n * Name of the conversation.\n */\n public get friendlyName(): string | null {\n return this._internalState.friendlyName;\n }\n\n /**\n * Date this conversation was last updated on.\n */\n public get dateUpdated(): Date | null {\n return this._internalState.dateUpdated;\n }\n\n /**\n * Date this conversation was created on.\n */\n public get dateCreated(): Date | null {\n return this._internalState.dateCreated;\n }\n\n /**\n * Identity of the user that created this conversation.\n */\n public get createdBy(): string {\n return this._internalState.createdBy ?? \"\";\n }\n\n /**\n * Custom attributes of the conversation.\n */\n public get attributes(): JSONValue {\n return this._internalState.attributes;\n }\n\n /**\n * Index of the last message the user has read in this conversation.\n */\n public get lastReadMessageIndex(): number | null {\n return this._internalState.lastReadMessageIndex;\n }\n\n /**\n * Last message sent to this conversation.\n */\n public get lastMessage(): LastMessage | undefined {\n return this._internalState.lastMessage ?? undefined;\n }\n\n /**\n * User notification level for this conversation.\n */\n public get notificationLevel(): NotificationLevel {\n return this._internalState.notificationLevel ?? \"default\";\n }\n\n /**\n * Conversation bindings. An undocumented feature (for now).\n * @internal\n */\n public get bindings(): ConversationBindings {\n return this._internalState.bindings;\n }\n\n /**\n * Current conversation limits.\n */\n public get limits(): ConversationLimits {\n return this._configuration.limits;\n }\n\n /**\n * State of the conversation.\n */\n public get state(): ConversationState | undefined {\n return this._internalState.state;\n }\n\n /**\n * Source of the conversation update.\n * @internal\n */\n public get _statusSource(): ConversationsDataSource {\n return this._dataSource;\n }\n\n /**\n * Preprocess the update object.\n * @param update The update object received from Sync.\n * @param conversationSid The SID of the conversation in question.\n */\n private static preprocessUpdate(update, conversationSid: string) {\n try {\n if (typeof update.attributes === \"string\") {\n update.attributes = JSON.parse(update.attributes);\n } else if (update.attributes) {\n JSON.stringify(update.attributes);\n }\n } catch (e) {\n Conversation._logger.warn(\n \"Retrieved malformed attributes from the server for conversation: \" +\n conversationSid\n );\n update.attributes = {};\n }\n\n try {\n if (update.dateCreated) {\n update.dateCreated = new Date(update.dateCreated);\n }\n } catch (e) {\n Conversation._logger.warn(\n \"Retrieved malformed dateCreated from the server for conversation: \" +\n conversationSid\n );\n delete update.dateCreated;\n }\n\n try {\n if (update.dateUpdated) {\n update.dateUpdated = new Date(update.dateUpdated);\n }\n } catch (e) {\n Conversation._logger.warn(\n \"Retrieved malformed dateUpdated from the server for conversation: \" +\n conversationSid\n );\n delete update.dateUpdated;\n }\n\n try {\n if (update.lastMessage && update.lastMessage.timestamp) {\n update.lastMessage.timestamp = new Date(update.lastMessage.timestamp);\n }\n } catch (e) {\n Conversation._logger.warn(\n \"Retrieved malformed lastMessage.timestamp from the server for conversation: \" +\n conversationSid\n );\n delete update.lastMessage.timestamp;\n }\n }\n\n /**\n * Add a participant to the conversation by its identity.\n * @param identity Identity of the Client to add.\n * @param attributes Attributes to be attached to the participant.\n * @returns The added participant.\n */\n @validateTypesAsync(nonEmptyString, optionalJson)\n public async add(\n identity: string,\n attributes?: JSONValue\n ): Promise<ParticipantResponse> {\n return this._participantsEntity.add(identity, attributes ?? {});\n }\n\n /**\n * Add a non-chat participant to the conversation.\n * @param proxyAddress Proxy (Twilio) address of the participant.\n * @param address User address of the participant.\n * @param attributes Attributes to be attached to the participant.\n * @param bindingOptions Options for adding email participants - name and\n * CC/To level.\n * @returns The added participant.\n */\n @validateTypesAsync(\n nonEmptyString,\n nonEmptyString,\n optionalJson,\n optionalJson\n )\n public async addNonChatParticipant(\n proxyAddress: string,\n address: string,\n attributes: JSONValue = {},\n bindingOptions: ParticipantBindingOptions = {}\n ): Promise<ParticipantResponse> {\n return this._participantsEntity.addNonChatParticipant(\n proxyAddress,\n address,\n attributes ?? {},\n bindingOptions ?? {}\n );\n }\n\n /**\n * Advance the conversation's last read message index to the current read\n * horizon. Rejects if the user is not a participant of the conversation. Last\n * read message index is updated only if the new index value is higher than\n * the previous.\n * @param index Message index to advance to.\n * @return Resulting unread messages count in the conversation.\n */\n @validateTypesAsync(nonNegativeInteger)\n public async advanceLastReadMessageIndex(index: number): Promise<number> {\n await this._subscribeStreams();\n\n if (index < (this.lastReadMessageIndex ?? 0)) {\n return await this._setLastReadMessageIndex(this.lastReadMessageIndex);\n }\n\n return await this._setLastReadMessageIndex(index);\n }\n\n /**\n * Delete the conversation and unsubscribe from its events.\n */\n public async delete(): Promise<Conversation> {\n await this._services.commandExecutor.mutateResource(\n \"delete\",\n this._links.self\n );\n\n return this;\n }\n\n /**\n * Get the custom attributes of this Conversation.\n */\n public async getAttributes(): Promise<JSONValue> {\n await this._subscribe();\n return this.attributes;\n }\n\n /**\n * Returns messages from the conversation using the paginator interface.\n * @param pageSize Number of messages to return in a single chunk. Default is\n * 30.\n * @param anchor Index of the newest message to fetch. Default is from the\n * end.\n * @param direction Query direction. By default, it queries backwards\n * from newer to older. The `\"forward\"` value will query in the opposite\n * direction.\n * @return A page of messages.\n */\n @validateTypesAsync(\n [\"undefined\", nonNegativeInteger],\n [\"undefined\", nonNegativeInteger],\n [\"undefined\", literal(\"backwards\", \"forward\")]\n )\n public async getMessages(\n pageSize?: number,\n anchor?: number,\n direction?: \"backwards\" | \"forward\"\n ): Promise<Paginator<Message>> {\n await this._subscribeStreams();\n return this._messagesEntity.getMessages(pageSize, anchor, direction);\n }\n\n /**\n * Get a list of all the participants who are joined to this conversation.\n */\n public async getParticipants(): Promise<Participant[]> {\n await this._subscribeStreams();\n return this._participantsEntity.getParticipants();\n }\n\n /**\n * Get conversation participants count.\n *\n * This method is semi-realtime. This means that this data will be eventually\n * correct, but will also be possibly incorrect for a few seconds. The\n * Conversations system does not provide real time events for counter values\n * changes.\n *\n * This is useful for any UI badges, but it is not recommended to build any\n * core application logic based on these counters being accurate in real time.\n */\n public async getParticipantsCount(): Promise<number> {\n const url = new UriBuilder(this._configuration.links.conversations)\n .path(this.sid)\n .build();\n const response = await this._services.network.get<ConversationResponse>(\n url\n );\n\n return response.body.participants_count ?? 0;\n }\n\n /**\n * Get a participant by its SID.\n * @param participantSid Participant SID.\n */\n @validateTypesAsync(nonEmptyString)\n public async getParticipantBySid(\n participantSid: string\n ): Promise<Participant | null> {\n return this._participantsEntity.getParticipantBySid(participantSid);\n }\n\n /**\n * Get a participant by its identity.\n * @param identity Participant identity.\n */\n @validateTypesAsync(nonEmptyString)\n public async getParticipantByIdentity(\n identity: string | null = \"\"\n ): Promise<Participant | null> {\n return this._participantsEntity.getParticipantByIdentity(identity ?? \"\");\n }\n\n /**\n * Get the total message count in the conversation.\n *\n * This method is semi-realtime. This means that this data will be eventually\n * correct, but will also be possibly incorrect for a few seconds. The\n * Conversations system does not provide real time events for counter values\n * changes.\n *\n * This is useful for any UI badges, but it is not recommended to build any\n * core application logic based on these counters being accurate in real time.\n */\n public async getMessagesCount(): Promise<number> {\n const url = new UriBuilder(this._configuration.links.conversations)\n .path(this.sid)\n .build();\n const response = await this._services.network.get<ConversationResponse>(\n url\n );\n\n return response.body.messages_count ?? 0;\n }\n\n /**\n * Get count of unread messages for the user if they are a participant of this\n * conversation. Rejects if the user is not a participant of the conversation.\n *\n * Use this method to obtain the number of unread messages together with\n * {@link Conversation.updateLastReadMessageIndex} instead of relying on the\n * message indices which may have gaps. See {@link Message.index} for details.\n *\n * This method is semi-realtime. This means that this data will be eventually\n * correct, but it will also be possibly incorrect for a few seconds. The\n * Conversations system does not provide real time events for counter values\n * changes.\n *\n * This is useful for any UI badges, but it is not recommended to build any\n * core application logic based on these counters being accurate in real time.\n *\n * If the read horizon is not set, this function will return null. This could mean\n * that all messages in the conversation are unread, or that the read horizon system\n * is not being used. How to interpret this `null` value is up to the customer application.\n *\n * @return Number of unread messages based on the current read horizon set for\n * the user or `null` if the read horizon is not set.\n */\n public async getUnreadMessagesCount(): Promise<number | null> {\n const url = new UriBuilder(this._configuration.links.myConversations)\n .path(this.sid)\n .build();\n const response = await this._services.network.get<ConversationResponse>(\n url\n );\n\n if (response.body.conversation_sid !== this.sid) {\n throw new Error(\n \"Conversation was not found in the user conversations list\"\n );\n }\n\n const unreadMessageCount = response.body.unread_messages_count;\n\n if (typeof unreadMessageCount === \"number\") {\n return unreadMessageCount;\n }\n\n return null;\n }\n\n /**\n * Join the conversation and subscribe to its events.\n */\n public async join(): Promise<Conversation> {\n await this._services.commandExecutor.mutateResource<\n AddParticipantRequest,\n ParticipantResponse\n >(\"post\", this._links.participants, {\n identity: this._configuration.userIdentity,\n });\n\n return this;\n }\n\n /**\n * Leave the conversation.\n */\n public async leave(): Promise<Conversation> {\n if (this._internalState.status === \"joined\") {\n await this._services.commandExecutor.mutateResource(\n \"delete\",\n `${this._links.participants}/${encodeURIComponent(\n this._configuration.userIdentity\n )}`\n );\n }\n\n return this;\n }\n\n /**\n * Remove a participant from the conversation. When a string is passed as the\n * argument, it will assume that the string is an identity or SID.\n * @param participant Identity, SID or the participant object to remove.\n */\n @validateTypesAsync([nonEmptyString, Participant])\n public async removeParticipant(\n participant: string | Participant\n ): Promise<void> {\n await this._participantsEntity.remove(\n typeof participant === \"string\" ? participant : participant.sid\n );\n }\n\n /**\n * Send a message to the conversation.\n * @param message Message body for the text message,\n * `FormData` or {@link SendMediaOptions} for media content. Sending FormData\n * is supported only with the browser engine.\n * @param messageAttributes Attributes for the message.\n * @param emailOptions Email options for the message.\n * @return Index of the new message.\n */\n @validateTypesAsync(\n [\n \"string\",\n FormData,\n literal(null),\n objectSchema(\"media options\", {\n contentType: nonEmptyString,\n media: custom((value) => {\n let isValid =\n (typeof value === \"string\" && value.length > 0) ||\n value instanceof Uint8Array ||\n value instanceof ArrayBuffer;\n\n if (typeof Blob === \"function\") {\n isValid = isValid || value instanceof Blob;\n }\n\n return [\n isValid,\n \"a non-empty string, an instance of Buffer or an instance of Blob\",\n ];\n }),\n }),\n ],\n optionalJson,\n [\n \"undefined\",\n literal(null),\n objectSchema(\"email attributes\", {\n subject: [nonEmptyString, \"undefined\"],\n }),\n ]\n )\n public async sendMessage(\n message: null | string | FormData | SendMediaOptions,\n messageAttributes?: JSONValue,\n emailOptions?: SendEmailOptions\n ): Promise<number> {\n if (typeof message === \"string\" || message === null) {\n const response = await this._messagesEntity.send(\n message,\n messageAttributes,\n emailOptions\n );\n return parseToNumber(response.index) ?? 0;\n }\n\n const response = await this._messagesEntity.sendMedia(\n message,\n messageAttributes,\n emailOptions\n );\n return parseToNumber(response.index) ?? 0;\n }\n\n /**\n * New interface to prepare for sending a message.\n * Use this instead of {@link Conversation.sendMessage}.\n * @return A MessageBuilder to help set all message sending options.\n */\n public prepareMessage(): MessageBuilder {\n return new MessageBuilder(this.limits, this._messagesEntity);\n }\n\n /**\n * Set last read message index of the conversation to the index of the last\n * known message.\n * @return Resulting unread messages count in the conversation.\n */\n public async setAllMessagesRead(): Promise<number> {\n await this._subscribeStreams();\n\n const messagesPage = await this.getMessages(1);\n\n if (messagesPage.items.length > 0) {\n return this.advanceLastReadMessageIndex(messagesPage.items[0].index);\n }\n\n return 0;\n }\n\n /**\n * Set all messages in the conversation unread.\n * @returns New count of unread messages after this update.\n */\n public async setAllMessagesUnread(): Promise<number> {\n await this._subscribeStreams();\n return await this._setLastReadMessageIndex(null);\n }\n\n /**\n * Set user notification level for this conversation.\n * @param notificationLevel New user notification level.\n */\n @validateTypesAsync(literal(\"default\", \"muted\"))\n public async setUserNotificationLevel(\n notificationLevel: NotificationLevel\n ): Promise<void> {\n await this._services.commandExecutor.mutateResource<EditNotificationLevelRequest>(\n \"post\",\n `${this._configuration.links.myConversations}/${this.sid}`,\n {\n notification_level: notificationLevel,\n }\n );\n }\n\n /**\n * Send a notification to the server indicating that this client is currently\n * typing in this conversation. Typing ended notification is sent after a\n * while automatically, but by calling this method again you ensure that\n * typing ended is not received.\n */\n public typing(): Promise<void> {\n return this._services.typingIndicator.send(this.sid);\n }\n\n /**\n * Update the attributes of the conversation.\n * @param attributes New attributes.\n */\n @validateTypesAsync(json)\n public async updateAttributes(attributes: JSONValue): Promise<Conversation> {\n await this._services.commandExecutor.mutateResource<\n EditConversationRequest,\n ConversationResponse\n >(\"post\", this._links.self, {\n attributes:\n attributes !== undefined ? JSON.stringify(attributes) : undefined,\n });\n\n return this;\n }\n\n /**\n * Update the friendly name of the conversation.\n * @param friendlyName New friendly name.\n */\n @validateTypesAsync(\"string\")\n public async updateFriendlyName(friendlyName: string): Promise<Conversation> {\n if (this._internalState.friendlyName !== friendlyName) {\n await this._services.commandExecutor.mutateResource<\n EditConversationRequest,\n ConversationResponse\n >(\"post\", this._links.self, { friendly_name: friendlyName });\n }\n\n return this;\n }\n\n /**\n * Set the last read message index to the current read horizon.\n * @param index Message index to set as last read. If null is provided, then\n * the behavior is identical to {@link Conversation.setAllMessagesUnread}.\n * @returns New count of unread messages after this update.\n */\n @validateTypesAsync([literal(null), nonNegativeInteger])\n public async updateLastReadMessageIndex(\n index: number | null\n ): Promise<number> {\n await this._subscribeStreams();\n return this._setLastReadMessageIndex(index);\n }\n\n /**\n * Update the unique name of the conversation.\n * @param uniqueName New unique name for the conversation. Setting unique name\n * to null removes it.\n */\n @validateTypesAsync([\"string\", literal(null)])\n public async updateUniqueName(\n uniqueName: string | null\n ): Promise<Conversation> {\n if (this._internalState.uniqueName !== uniqueName) {\n uniqueName ||= \"\";\n\n await this._services.commandExecutor.mutateResource<\n EditConversationRequest,\n ConversationResponse\n >(\"post\", this._links.self, {\n unique_name: uniqueName,\n });\n }\n\n return this;\n }\n\n /**\n * Get recipients of all messages in the conversation.\n * @param options Optional configuration, set pageSize to request a specific pagination page size. Page size specifies a number of messages to include in a single batch. Each message may include multiple recipients.\n */\n public async getMessageRecipients(\n options?: PaginatorOptions\n ): Promise<Paginator<RecipientDescriptor>> {\n return await this._services.messageRecipientsClient.getRecipientsFromConversation(\n this.sid,\n options\n );\n }\n\n /**\n * Load and subscribe to this conversation and do not subscribe to its\n * participants and messages. This or _subscribeStreams will need to be called\n * before any events in the conversation will fire.\n * @internal\n */\n public async _subscribe(): Promise<SyncDocument> {\n if (this._entityPromise) {\n return this._entityPromise;\n }\n\n this._entityPromise = this._services.syncClient.document({\n id: this._entityName,\n mode: \"open_existing\",\n });\n\n try {\n this._entity = await this._entityPromise;\n this._entity.on(SyncDocument.updated, (args) => this._update(args.data));\n this._entity.on(SyncDocument.removed, () =>\n this.emit(Conversation.removed, this)\n );\n this._update(this._entity.data);\n\n return this._entity;\n } catch (err) {\n this._entity = null;\n this._entityPromise = null;\n\n if (this._services.syncClient.connectionState != \"disconnected\") {\n Conversation._logger.error(\"Failed to get conversation object\", err);\n }\n Conversation._logger.debug(\n \"ERROR: Failed to get conversation object\",\n err\n );\n\n throw err;\n }\n }\n\n /**\n * Fetch participants and messages of the conversation. This method needs to\n * be called during conversation initialization to catch broken conversations\n * (broken conversations are conversations that have essential Sync entities\n * missing, i.e. the conversation document, the messages list or the\n * participant map). In case of this conversation being broken, the method\n * will throw an exception that will be caught and handled gracefully.\n * @internal\n */\n public async _fetchStreams() {\n if (this._streamsPromise) {\n return this._streamsPromise;\n }\n\n this._streamsPromise = new Promise<boolean>(async (resolve, reject) => {\n try {\n await this._subscribe();\n } catch (err) {\n Conversation._logger.trace(\"Failed to subscribe to conversation\", err);\n return reject(err);\n }\n Conversation._logger.trace(\n \"_streamsAvailable, this.entity.data=\",\n this._entity?.data\n );\n\n const data = this._entity?.data as Record<string, string>;\n\n const messagesPromise = this._services.syncClient\n .list({\n id: data.messages,\n mode: \"open_existing\",\n })\n .then((list) => {\n this._messagesList = list;\n return list;\n });\n\n const participantsPromise = this._services.syncClient\n .map({\n id: data.roster,\n mode: \"open_existing\",\n })\n .then((map) => {\n this._participantsMap = map;\n return map;\n });\n\n Promise.all([messagesPromise, participantsPromise])\n .then(() => resolve(true))\n .catch((err) => {\n Conversation._logger.trace(\n \"Failed to fetch conversation streams for conversation\",\n this.sid,\n err\n );\n reject(err);\n });\n });\n\n return this._streamsPromise.catch((err) => {\n this._streamsPromise = null;\n throw err;\n });\n }\n\n /**\n * Load the attributes of this conversation and instantiate its participants\n * and messages. This or _subscribe will need to be called before any events\n * on the conversation will fire. This will need to be called before any\n * events on participants or messages will fire\n * @internal\n */\n public async _subscribeStreams() {\n try {\n await this._fetchStreams();\n Conversation._logger.trace(\n \"_subscribeStreams, this.entity.data=\",\n this._entity?.data\n );\n\n const data = this._entity?.data as Record<string, string>;\n const messagesObjectName = data.messages;\n const rosterObjectName = data.roster;\n\n await Promise.all([\n this._messagesEntity.subscribe(\n this._messagesList ?? messagesObjectName\n ),\n this._participantsEntity.subscribe(\n this._participantsMap ?? rosterObjectName\n ),\n ]);\n } catch (err) {\n if (this._services.syncClient.connectionState !== \"disconnected\") {\n Conversation._logger.error(\n \"Failed to subscribe on conversation objects\",\n this.sid,\n err\n );\n }\n Conversation._logger.debug(\n \"ERROR: Failed to subscribe on conversation objects\",\n this.sid,\n err\n );\n\n throw err;\n }\n }\n\n /**\n * Stop listening for and firing events on this conversation.\n * @internal\n */\n public async _unsubscribe() {\n if (this._entity) {\n this._entity.close();\n this._entity = null;\n this._entityPromise = null;\n }\n\n return Promise.all([\n this._participantsEntity.unsubscribe(),\n this._messagesEntity.unsubscribe(),\n ]);\n }\n\n /**\n * Set conversation status.\n * @internal\n */\n public _setStatus(\n status: ConversationStatus,\n source: ConversationsDataSource\n ) {\n this._dataSource = source;\n\n if (this._internalState.status === status) {\n return;\n }\n\n this._internalState.status = status;\n\n if (status === \"joined\") {\n this._subscribeStreams().catch((err) => {\n Conversation._logger.debug(\n \"ERROR while setting conversation status \" + status,\n err\n );\n if (this._services.syncClient.connectionState !== \"disconnected\") {\n throw err;\n }\n });\n return;\n }\n\n if (this._entityPromise) {\n this._unsubscribe().catch((err) => {\n Conversation._logger.debug(\n \"ERROR while setting conversation status \" + status,\n err\n );\n if (this._services.syncClient.connectionState !== \"disconnected\") {\n throw err;\n }\n });\n }\n }\n\n /**\n * Update the local conversation object with new values.\n * @internal\n */\n public _update(update) {\n Conversation._logger.trace(\"_update\", update);\n\n Conversation.preprocessUpdate(update, this.sid);\n const updateReasons = new Set<ConversationUpdateReason>();\n\n for (const key of Object.keys(update)) {\n const localKey = fieldMappings[key];\n\n if (!localKey) {\n continue;\n }\n\n switch (localKey) {\n case fieldMappings.status:\n if (\n !update.status ||\n update.status === \"unknown\" ||\n this._internalState.status === update.status\n ) {\n break;\n }\n\n this._internalState.status = update.status;\n updateReasons.add(localKey);\n\n break;\n case fieldMappings.attributes:\n if (isEqual(this._internalState.attributes, update.attributes)) {\n break;\n }\n\n this._internalState.attributes = update.attributes;\n updateReasons.add(localKey);\n\n break;\n case fieldMappings.lastConsumedMessageIndex:\n if (\n update.lastConsumedMessageIndex === undefined ||\n update.lastConsumedMessageIndex ===\n this._internalState.lastReadMessageIndex\n ) {\n break;\n }\n\n this._internalState.lastReadMessageIndex =\n update.lastConsumedMessageIndex;\n updateReasons.add(\"lastReadMessageIndex\");\n\n break;\n case fieldMappings.lastMessage:\n if (this._internalState.lastMessage && !update.lastMessage) {\n delete this._internalState.lastMessage;\n updateReasons.add(localKey);\n\n break;\n }\n\n this._internalState.lastMessage =\n this._internalState.lastMessage || {};\n\n if (\n update.lastMessage?.index !== undefined &&\n update.lastMessage.index !== this._internalState.lastMessage.index\n ) {\n this._internalState.lastMessage.index = update.lastMessage.index;\n updateReasons.add(localKey);\n }\n\n if (\n update.lastMessage?.timestamp !== undefined &&\n this._internalState.lastMessage?.dateCreated?.getTime() !==\n update.lastMessage.timestamp.getTime()\n ) {\n this._internalState.lastMessage.dateCreated =\n update.lastMessage.timestamp;\n updateReasons.add(localKey);\n }\n\n if (isEqual(this._internalState.lastMessage, {})) {\n delete this._internalState.lastMessage;\n }\n\n break;\n case fieldMappings.state:\n const state = update.state || undefined;\n\n if (state !== undefined) {\n state.dateUpdated = new Date(state.dateUpdated);\n }\n\n if (isEqual(this._internalState.state, state)) {\n break;\n }\n\n this._internalState.state = state;\n updateReasons.add(localKey);\n\n break;\n case fieldMappings.bindings:\n if (isEqual(this._internalState.bindings, update.bindings)) {\n break;\n }\n\n this._internalState.bindings = update.bindings;\n updateReasons.add(localKey);\n\n break;\n default:\n const isDate = update[key] instanceof Date;\n const keysMatchAsDates =\n isDate &&\n this._internalState[localKey]?.getTime() === update[key].getTime();\n const keysMatchAsNonDates = !isDate && this[localKey] === update[key];\n\n if (keysMatchAsDates || keysMatchAsNonDates) {\n break;\n }\n\n this._internalState[localKey] = update[key];\n updateReasons.add(localKey);\n }\n }\n\n if (updateReasons.size > 0) {\n this.emit(Conversation.updated, {\n conversation: this,\n updateReasons: [...updateReasons],\n });\n }\n }\n\n /**\n * Handle onMessageAdded event.\n */\n private _onMessageAdded(message) {\n for (const participant of this._participants.values()) {\n if (participant.identity === message.author) {\n participant._endTyping();\n break;\n }\n }\n this.emit(Conversation.messageAdded, message);\n }\n\n /**\n * Set last read message index.\n * @param index New index to set.\n */\n private async _setLastReadMessageIndex(\n index: number | null\n ): Promise<number> {\n const result = await this._services.commandExecutor.mutateResource<\n EditLastReadMessageIndexRequest,\n EditLastReadMessageIndexResponse\n >(\"post\", `${this._configuration.links.myConversations}/${this.sid}`, {\n last_read_message_index: index,\n });\n\n return result.unread_messages_count;\n }\n}\n\nexport {\n ConversationDescriptor,\n Conversation,\n ConversationServices,\n ConversationUpdateReason,\n ConversationStatus,\n NotificationLevel,\n ConversationState,\n ConversationUpdatedEventArgs,\n SendMediaOptions,\n SendEmailOptions,\n LastMessage,\n ConversationBindings,\n ConversationEmailBinding,\n};\n","class Deferred<T> {\n private _promise: Promise<T>;\n private _resolve;\n private _reject;\n\n public current!: T;\n\n constructor() {\n this._promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n public get promise(): Promise<T> {\n return this._promise;\n }\n\n update(value: T) {\n this._resolve(value);\n }\n\n set(value: T) {\n this.current = value;\n this._resolve(value);\n }\n\n fail(e) {\n this._reject(e);\n }\n}\n\nexport { Deferred };\n","import { Logger } from \"../logger\";\nimport {\n Conversation,\n ConversationDescriptor,\n ConversationUpdatedEventArgs,\n ConversationUpdateReason,\n} from \"../conversation\";\nimport { SyncMap, SyncClient, SyncMapItem } from \"twilio-sync\";\nimport { Users } from \"./users\";\nimport { Network } from \"../services/network\";\nimport { TypingIndicator } from \"../services/typing-indicator\";\nimport { McsClient } from \"@twilio/mcs-client\";\nimport { Deferred } from \"../util/deferred\";\nimport {\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason,\n} from \"../participant\";\nimport {\n Message,\n MessageUpdatedEventArgs,\n MessageUpdateReason,\n} from \"../message\";\nimport { UriBuilder } from \"../util\";\nimport { Configuration } from \"../configuration\";\nimport { CommandExecutor } from \"../command-executor\";\nimport { CreateConversationRequest } from \"../interfaces/commands/create-conversation\";\nimport { ConversationResponse } from \"../interfaces/commands/conversation-response\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { isEqual } from \"../util\";\nimport { ResponseMeta } from \"../interfaces/commands/response-meta\";\nimport { ChannelMetadataClient } from \"../channel-metadata-client\";\nimport { MessageRecipientsClient } from \"../message-recipients-client\";\n\ntype ConversationsEvents = {\n conversationAdded: (conversation: Conversation) => void;\n conversationJoined: (conversation: Conversation) => void;\n conversationLeft: (conversation: Conversation) => void;\n conversationRemoved: (conversation: Conversation) => void;\n conversationUpdated: (data: {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n }) => void;\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n};\n\ntype ConversationsDataSource = \"sync\" | \"rest\";\n\ninterface ConversationsServices {\n syncClient: SyncClient;\n users: Users;\n typingIndicator: TypingIndicator;\n network: Network;\n mcsClient: McsClient;\n commandExecutor: CommandExecutor;\n channelMetadataClient: ChannelMetadataClient;\n messageRecipientsClient: MessageRecipientsClient;\n}\n\ntype ConversationRestData = {\n roster: string;\n notificationLevel: \"default\" | \"muted\";\n lastConsumedMessageIndex: number;\n channel: string;\n messages: string;\n descriptor: ConversationResponse;\n channel_sid: string;\n status: string;\n};\n\nconst log = Logger.scope(\"Conversations\");\n\n/**\n * Represents conversations collection\n * {@see Conversation}\n */\nclass Conversations extends ReplayEventEmitter<ConversationsEvents> {\n public readonly conversations: Map<string, Conversation> = new Map();\n public readonly myConversationsRead: Deferred<boolean> = new Deferred();\n private readonly configuration: Configuration;\n private readonly services: ConversationsServices;\n private readonly tombstones: Set<string> = new Set();\n private myConversationsFetched = false;\n\n public constructor(\n configuration: Configuration,\n services: ConversationsServices\n ) {\n super();\n\n this.configuration = configuration;\n this.services = services;\n }\n\n public async addConversation(options): Promise<Conversation> {\n const attributes =\n typeof options?.attributes !== \"undefined\" ? options.attributes : {};\n\n const response = await this.services.commandExecutor.mutateResource<\n CreateConversationRequest,\n ConversationResponse\n >(\"post\", this.configuration.links.conversations, {\n friendly_name: options.friendlyName,\n unique_name: options.uniqueName,\n access: options.access,\n attributes:\n typeof attributes !== \"undefined\"\n ? JSON.stringify(attributes)\n : undefined,\n });\n\n const conversationSid = response.sid ?? null;\n const conversationDocument = response.sync_objects?.conversation ?? null;\n const links = {\n self: response.url,\n ...response.links,\n };\n const existingConversation = this.conversations.get(conversationSid);\n\n if (existingConversation) {\n await existingConversation._subscribe();\n return existingConversation;\n }\n\n const conversation = new Conversation(\n {\n channel: conversationDocument,\n entityName: \"\",\n uniqueName: \"\",\n attributes: null,\n createdBy: \"\",\n friendlyName: \"\",\n lastConsumedMessageIndex: 0,\n dateCreated: null,\n dateUpdated: null,\n },\n conversationSid,\n links,\n this.configuration,\n this.services\n );\n\n this.conversations.set(conversation.sid, conversation);\n this._registerForEvents(conversation);\n\n await conversation._subscribe();\n this.emit(\"conversationAdded\", conversation);\n\n return conversation;\n }\n\n /**\n * Fetch conversations' list and instantiate all necessary objects\n */\n public async fetchConversations(): Promise<Conversations> {\n try {\n const map = await this._getMap();\n\n map.on(SyncMap.itemAdded, (args) => {\n log.debug(`itemAdded: ${args.item.key}`);\n\n this._upsertConversation(\"sync\", args.item.key, args.item.data);\n });\n\n map.on(SyncMap.itemRemoved, (args) => {\n log.debug(`itemRemoved: ${args.key}`);\n\n const sid = args.key;\n\n if (!this.myConversationsFetched) {\n this.tombstones.add(sid);\n }\n\n const conversation = this.conversations.get(sid);\n\n if (!conversation) {\n return;\n }\n\n if (conversation.status === \"joined\") {\n conversation._setStatus(\"notParticipating\", \"sync\");\n this.emit(\"conversationLeft\", conversation);\n }\n\n this.conversations.delete(sid);\n this.emit(\"conversationRemoved\", conversation);\n conversation.emit(\"removed\", conversation);\n });\n\n map.on(SyncMap.itemUpdated, (args) => {\n log.debug(`itemUpdated: ${args.item.key}`);\n\n this._upsertConversation(\"sync\", args.item.key, args.item.data);\n });\n\n const myConversations: ConversationRestData[] =\n await this._fetchMyConversations();\n const upserts: Promise<Conversation | null>[] = [];\n\n for (const conversation of myConversations) {\n upserts.push(\n this._upsertConversation(\n \"rest\",\n conversation[\"channel_sid\"],\n conversation\n )\n );\n }\n\n this.myConversationsRead.set(true);\n\n await Promise.all(upserts);\n\n this.myConversationsFetched = true;\n this.tombstones.clear();\n\n log.debug(\"The conversations list has been successfully fetched\");\n\n return this;\n } catch (error) {\n const errorMessage = \"Failed to fetch the conversations list\";\n\n if (this.services.syncClient.connectionState !== \"disconnected\") {\n log.error(errorMessage, error);\n }\n\n log.debug(`ERROR: ${errorMessage}`, error);\n\n throw error;\n }\n }\n\n public async getConversations() {\n const conversationsMap = await this._getMap();\n const page = await conversationsMap.getItems();\n\n return this._wrapPaginator(page, (items) =>\n Promise.all(\n items.map((item: SyncMapItem) =>\n this._upsertConversation(\"sync\", item.key, item.data)\n )\n )\n );\n }\n\n public async getConversation(\n sid: string\n ): Promise<Conversation | undefined | null> {\n const conversationsMap = await this._getMap();\n\n const page = await conversationsMap.getItems({ key: sid });\n const items = page.items.map((item: SyncMapItem) =>\n this._upsertConversation(\"sync\", item.key, item.data)\n );\n\n return items.length > 0 ? items[0] : null;\n }\n\n public async getConversationByUniqueName(\n uniqueName: string\n ): Promise<Conversation | null> {\n const url = new UriBuilder(this.configuration.links.myConversations)\n .path(uniqueName)\n .build();\n const response = await this.services.network.get<ConversationResponse>(url);\n const body = response.body;\n\n const sid = body.conversation_sid;\n const data = {\n entityName: null,\n lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || \"unknown\",\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: body.sync_objects.conversation,\n roster: body.sync_objects.participants,\n messages: body.sync_objects.messages,\n notificationLevel: body?.notification_level,\n sid,\n };\n\n return sid ? this._upsertConversation(\"sync\", sid, data) : null;\n }\n\n public async peekConversation(sid: string): Promise<Conversation | null> {\n const url = new UriBuilder(this.configuration.links.conversations)\n .path(sid)\n .build();\n const response = await this.services.network.get<ConversationResponse>(url);\n const body = response.body;\n\n const data = {\n entityName: null,\n // lastConsumedMessageIndex: body.last_read_message_index,\n status: body?.status || \"unknown\",\n friendlyName: body.friendly_name,\n dateUpdated: body.date_updated,\n dateCreated: body.date_created,\n uniqueName: body.unique_name,\n createdBy: body.created_by,\n attributes: body.attributes,\n channel: body.sync_objects.conversation || `${sid}.channel`,\n roster: body.sync_objects.participants,\n messages: body.sync_objects.messages,\n notificationLevel: body?.notification_level,\n sid,\n };\n return this._upsertConversation(\"sync\", sid, data);\n }\n\n private async _getMap(): Promise<SyncMap> {\n return await this.services.syncClient.map({\n id: this.configuration.myConversations,\n mode: \"open_existing\",\n });\n }\n\n private async _wrapPaginator(page, op) {\n const items = await op(page.items);\n\n return {\n items: items.filter((item) => item !== null),\n hasNextPage: page.hasNextPage,\n hasPrevPage: page.hasPrevPage,\n nextPage: () => page.nextPage().then((x) => this._wrapPaginator(x, op)),\n prevPage: () => page.prevPage().then((x) => this._wrapPaginator(x, op)),\n };\n }\n\n private async _updateConversation(\n source: ConversationsDataSource,\n conversation: Conversation,\n data\n ): Promise<void> {\n const areSourcesDifferent =\n conversation._statusSource !== undefined &&\n source !== conversation._statusSource;\n const isChannelSourceSync =\n source !== \"rest\" || conversation._statusSource === \"sync\";\n\n if (areSourcesDifferent && isChannelSourceSync && source !== \"sync\") {\n log.trace(\n \"upsertConversation: conversation is known from sync and came from REST, ignoring\",\n {\n sid: conversation.sid,\n data: data.status,\n conversation: conversation.status,\n }\n );\n\n return;\n }\n\n if (data.status === \"joined\" && conversation.status !== \"joined\") {\n conversation._setStatus(\"joined\", source);\n\n const updateData: Partial<ConversationDescriptor> = {};\n\n if (typeof data.notificationLevel !== \"undefined\") {\n updateData.notificationLevel = data.notificationLevel;\n }\n\n if (typeof data.lastConsumedMessageIndex !== \"undefined\") {\n updateData.lastConsumedMessageIndex = data.lastConsumedMessageIndex;\n }\n\n if (!isEqual(updateData, {})) {\n conversation._update(updateData);\n }\n\n await conversation._subscribe();\n this.emit(\"conversationJoined\", conversation);\n\n return;\n }\n\n if (\n data.status === \"notParticipating\" &&\n conversation.status === \"joined\"\n ) {\n conversation._setStatus(\"notParticipating\", source);\n conversation._update(data);\n\n await conversation._subscribe();\n this.emit(\"conversationLeft\", conversation);\n\n return;\n }\n\n if (data.status === \"notParticipating\") {\n await conversation._subscribe(); // why do we subscribe if we just left it??\n\n return;\n }\n\n conversation._update(data);\n }\n\n private async _upsertConversation(\n source: ConversationsDataSource,\n sid: string,\n data\n ): Promise<Conversation | null> {\n log.trace(`upsertConversation called for ${sid}`, data);\n\n const conversation = this.conversations.get(sid);\n\n // If the channel is known, update it\n if (conversation) {\n log.trace(\n `upsertConversation: the conversation ${conversation.sid} is known;` +\n `its status is known from the source ${conversation._statusSource} ` +\n `and the update came from the source ${source}`,\n conversation\n );\n\n await this._updateConversation(source, conversation, data);\n await conversation._subscribe();\n\n return conversation;\n }\n\n // If the conversations is deleted, ignore it\n if (source === \"rest\" && this.tombstones.has(sid)) {\n log.trace(\n \"upsertChannel: the conversation is deleted but reappeared again from REST, ignoring\",\n sid\n );\n return null;\n }\n\n // If the conversation is unknown, fetch it\n log.trace(\n \"upsertConversation: creating a local conversation object with sid \" +\n sid,\n data\n );\n\n const baseLink = `${this.configuration.links.conversations}/${sid}`;\n const links = {\n self: baseLink,\n messages: `${baseLink}/Messages`,\n participants: `${baseLink}/Participants`,\n };\n const newConversation = new Conversation(\n data,\n sid,\n links,\n this.configuration,\n this.services\n );\n\n this.conversations.set(sid, newConversation);\n\n try {\n await newConversation._subscribe();\n\n if (data.status === \"joined\") {\n await newConversation._fetchStreams();\n }\n } catch (error) {\n if (error.name !== \"SyncError\") {\n throw error;\n }\n\n log.trace(\n \"upsertChannel: the conversation is missing some Sync entity(ies), ignoring\",\n sid,\n error\n );\n\n this.conversations.delete(sid);\n return null;\n }\n\n this._registerForEvents(newConversation);\n this.emit(\"conversationAdded\", newConversation);\n\n if (data.status === \"joined\") {\n newConversation._setStatus(\"joined\", source);\n this.emit(\"conversationJoined\", newConversation);\n }\n\n return newConversation;\n }\n\n private async _fetchMyConversations(): Promise<ConversationRestData[]> {\n let conversations: ConversationRestData[] = [];\n let pageToken: null | string = null;\n\n do {\n const url = new UriBuilder(this.configuration.links.myConversations);\n\n if (pageToken) {\n url.arg(\"PageToken\", pageToken);\n }\n\n const response = await this.services.network.get<\n { conversations: ConversationResponse[] } & ResponseMeta\n >(url.build());\n const receivedConversations = response.body?.conversations.map(\n (conversationDescriptor) => ({\n descriptor: conversationDescriptor,\n channel_sid: conversationDescriptor.conversation_sid,\n status: conversationDescriptor.status,\n channel: conversationDescriptor.sync_objects.conversation,\n messages: conversationDescriptor.sync_objects.messages,\n roster:\n conversationDescriptor.sync_objects.participants ||\n `${conversationDescriptor.conversation_sid}.roster`,\n lastConsumedMessageIndex:\n conversationDescriptor.last_read_message_index,\n notificationLevel: conversationDescriptor.notification_level,\n })\n );\n\n pageToken = response.body.meta.next_token;\n conversations = [...conversations, ...receivedConversations];\n } while (pageToken);\n\n return conversations;\n }\n\n private _onConversationRemoved(sid: string) {\n const conversation = this.conversations.get(sid);\n\n if (conversation) {\n this.conversations.delete(sid);\n this.emit(\"conversationRemoved\", conversation);\n }\n }\n\n private _registerForEvents(conversation) {\n conversation.on(\"removed\", () =>\n this._onConversationRemoved(conversation.sid)\n );\n conversation.on(\"updated\", (args: ConversationUpdatedEventArgs) =>\n this.emit(\"conversationUpdated\", args)\n );\n conversation.on(\"participantJoined\", (participant) =>\n this.emit(\"participantJoined\", participant)\n );\n conversation.on(\"participantLeft\", (participant) =>\n this.emit(\"participantLeft\", participant)\n );\n conversation.on(\"participantUpdated\", (args: ParticipantUpdatedEventArgs) =>\n this.emit(\"participantUpdated\", args)\n );\n conversation.on(\"messageAdded\", (message) =>\n this.emit(\"messageAdded\", message)\n );\n conversation.on(\"messageUpdated\", (args: MessageUpdatedEventArgs) =>\n this.emit(\"messageUpdated\", args)\n );\n conversation.on(\"messageRemoved\", (message) =>\n this.emit(\"messageRemoved\", message)\n );\n conversation.on(\"typingStarted\", (participant) =>\n this.emit(\"typingStarted\", participant)\n );\n conversation.on(\"typingEnded\", (participant) =>\n this.emit(\"typingEnded\", participant)\n );\n }\n}\n\nexport {\n ConversationsServices,\n ConversationsDataSource,\n Conversation,\n Conversations,\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\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);\nexport default function 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.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","import { User, UserUpdatedEventArgs, UserUpdateReason } from \"../user\";\nimport { Network } from \"../services/network\";\nimport { SyncClient } from \"twilio-sync\";\nimport { UriBuilder } from \"../util\";\nimport { Configuration } from \"../configuration\";\nimport { CommandExecutor } from \"../command-executor\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { UserResponse } from \"../interfaces/commands/user\";\n\ntype UsersEvents = {\n userUpdated: (data: {\n user: User;\n updateReasons: UserUpdateReason[];\n }) => void;\n userSubscribed: (user: User) => void;\n userUnsubscribed: (user: User) => void;\n};\n\nexport interface UsersServices {\n network: Network;\n syncClient: SyncClient;\n commandExecutor: CommandExecutor;\n}\n\n/**\n * Container for known users\n */\nclass Users extends ReplayEventEmitter<UsersEvents> {\n private readonly configuration: Configuration;\n private readonly services: UsersServices;\n\n private subscribedUsers: Map<string, User>;\n private fifoStack: string[];\n public readonly myself: User;\n\n constructor(\n myself: User,\n configuration: Configuration,\n services: UsersServices\n ) {\n super();\n\n this.configuration = configuration;\n this.services = services;\n\n this.fifoStack = [];\n this.myself = myself;\n this.myself.on(\"updated\", (args: UserUpdatedEventArgs) =>\n this.emit(\"userUpdated\", args)\n );\n this.myself.on(\"userSubscribed\", () =>\n this.emit(\"userSubscribed\", this.myself)\n );\n this.myself.on(\"userUnsubscribed\", () => {\n this.emit(\"userUnsubscribed\", this.myself);\n this.myself._ensureFetched();\n });\n\n this.subscribedUsers = new Map<string, User>();\n }\n\n private handleUnsubscribeUser(user: User): void {\n if (this.subscribedUsers.has(user.identity)) {\n this.subscribedUsers.delete(user.identity);\n }\n let foundItemIndex = 0;\n const foundItem = this.fifoStack.find((item, index) => {\n if (item == user.identity) {\n foundItemIndex = index;\n return true;\n }\n return false;\n });\n if (foundItem) {\n this.fifoStack.splice(foundItemIndex, 1);\n }\n this.emit(\"userUnsubscribed\", user);\n }\n\n private handleSubscribeUser(user: User): void {\n if (this.subscribedUsers.has(user.identity)) {\n return;\n }\n if (this.fifoStack.length >= this.configuration.userInfosToSubscribe) {\n const item = this.fifoStack.shift() as string;\n this.subscribedUsers?.get(item)?.unsubscribe();\n }\n this.fifoStack.push(user.identity);\n this.subscribedUsers.set(user.identity, user);\n this.emit(\"userSubscribed\", user);\n }\n\n /**\n * Gets user, if it's in subscribed list - then return the user object from it,\n * if not - then subscribes and adds user to the FIFO stack\n * @returns {Promise<User>} Fully initialized user\n */\n async getUser(identity: string, entityName?: string): Promise<User> {\n await this.myself._ensureFetched();\n\n if (identity == this.myself.identity) {\n return this.myself;\n }\n\n const user = this.subscribedUsers.get(identity);\n\n if (user) {\n return user;\n }\n\n entityName ??= await this.getSyncUniqueName(identity);\n\n const newUser = new User(\n identity,\n entityName,\n this.configuration,\n this.services\n );\n\n newUser.on(\"updated\", (args: UserUpdatedEventArgs) =>\n this.emit(\"userUpdated\", args)\n );\n newUser.on(\"userSubscribed\", () => this.handleSubscribeUser(newUser));\n newUser.on(\"userUnsubscribed\", () => this.handleUnsubscribeUser(newUser));\n await newUser._ensureFetched();\n\n return newUser;\n }\n\n /**\n * @returns {Promise<Array<User>>} returns list of subscribed User objects {@see User}\n */\n async getSubscribedUsers(): Promise<Array<User>> {\n await this.myself._ensureFetched();\n\n const users = [this.myself];\n this.subscribedUsers.forEach((user) => users.push(user));\n\n return users;\n }\n\n /**\n * @returns {Promise<string>} User's sync unique name\n */\n private async getSyncUniqueName(identity: string): Promise<string> {\n const url = new UriBuilder(this.configuration.links.users)\n .path(identity)\n .build();\n const response = await this.services.network.get<UserResponse>(url);\n return response.body?.sync_objects.user_info_map ?? \"\";\n }\n}\n\nexport { Users };\n","import { Logger } from \"../logger\";\n\nimport { Notifications } from \"@twilio/notifications\";\n\nimport { NotificationTypes } from \"../interfaces/notification-types\";\nimport { TwilsockClient } from \"twilsock\";\nimport { Configuration } from \"../configuration\";\nimport { Conversation } from \"../conversation\";\n\nconst log = Logger.scope(\"TypingIndicator\");\n\nexport interface TypingIndicatorServices {\n twilsockClient: TwilsockClient;\n notificationClient: Notifications;\n}\n\n/**\n * An important note in regards to typing timeout timers. There are two places that the SDK can get the \"typing_timeout\" attribute from. The first\n * place that the attribute appears in is the response received from POST -> /v1/typing REST call. In the body of that response, the value of the\n * \"typing_timeout\" attribute will be exactly the same as defined in the console. The second place that the attribute appears in is from a\n * notification of type \"twilio.ipmsg.typing_indicator\". In this case, the \"typing_timeout\" value will be +1 of that in the console. This\n * intentional. The timeout returned from the POST -> /v1/typing call should be used to disable further calls for that period of time. On contrary,\n * the timeout returned from the notification should be used as the timeout for the \"typingEnded\" event, +1 is to account for latency.\n *\n * @private\n */\n\n/**\n * @class TypingIndicator\n *\n * @constructor\n * @private\n */\nclass TypingIndicator {\n private readonly services: TypingIndicatorServices;\n private readonly configuration: Configuration;\n\n private sentUpdates: Map<string, number>;\n private getConversation: (conversationSid: string) => Promise<Conversation>;\n private serviceTypingTimeout;\n\n constructor(\n getConversation: (conversationSid: string) => Promise<Conversation>,\n config: Configuration,\n services: TypingIndicatorServices\n ) {\n this.configuration = config;\n this.services = services;\n this.getConversation = getConversation;\n\n this.serviceTypingTimeout = null;\n this.sentUpdates = new Map();\n }\n\n public get typingTimeout(): number {\n return (\n this.configuration.typingIndicatorTimeoutOverride ||\n this.serviceTypingTimeout ||\n this.configuration.typingIndicatorTimeoutDefault\n );\n }\n\n /**\n * Initialize TypingIndicator controller\n * Registers for needed message types and sets listeners\n * @private\n */\n initialize(): void {\n // this.services.notificationClient.subscribe(NotificationTypes.TYPING_INDICATOR, 'twilsock');\n this.services.notificationClient.on(\"message\", async (type, message) => {\n if (type === NotificationTypes.TYPING_INDICATOR) {\n await this._handleRemoteTyping(message);\n }\n });\n }\n\n /**\n * Remote participants typing events handler\n */\n private async _handleRemoteTyping(message) {\n log.trace(\"Got new typing indicator \", message);\n\n this.getConversation(message.channel_sid)\n .then((conversation) => {\n if (!conversation) {\n return;\n }\n\n conversation._participants.forEach((participant) => {\n if (\n participant.identity !== message.identity &&\n participant.type !== \"apple\"\n ) {\n return;\n }\n\n const timeout = this.configuration.typingIndicatorTimeoutOverride\n ? this.configuration.typingIndicatorTimeoutOverride + 1000\n : message.typing_timeout * 1000;\n participant._startTyping(timeout);\n });\n })\n .catch((err) => {\n log.error(err);\n throw err;\n });\n }\n\n /**\n * Send typing event for the given conversation sid\n * @param {String} conversationSid\n */\n send(conversationSid: string) {\n const lastUpdate = this.sentUpdates.get(conversationSid);\n if (lastUpdate && lastUpdate > Date.now() - this.typingTimeout) {\n return Promise.resolve();\n }\n\n this.sentUpdates.set(conversationSid, Date.now());\n return this._send(conversationSid);\n }\n\n private _send(conversationSid: string) {\n log.trace(\"Sending typing indicator\");\n\n const url = this.configuration.links.typing;\n const headers = {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n };\n const body = `ChannelSid=${conversationSid}`;\n\n return this.services.twilsockClient\n .post<{ typing_timeout: number }>(\n url,\n headers,\n body,\n this.configuration.productId\n )\n .then((response) => {\n if (response.body.hasOwnProperty(\"typing_timeout\")) {\n this.serviceTypingTimeout = response.body.typing_timeout * 1000;\n }\n })\n .catch((err) => {\n log.error(\"Failed to send typing indicator:\", err);\n throw err;\n });\n }\n}\n\nexport { TypingIndicator };\n","/**\n * Push notification type.\n */\nimport { Media } from \"./media\";\n\ntype PushNotificationType =\n | \"twilio.conversations.new_message\"\n | \"twilio.conversations.added_to_conversation\"\n | \"twilio.conversations.removed_from_conversation\";\n\ninterface PushNotificationDescriptor {\n title: string | null;\n body: string | null;\n sound: string | null;\n badge: number | null;\n action: string | null;\n type: PushNotificationType;\n data: Record<string, unknown>;\n}\n\n/**\n * Additional data for a given push notification.\n */\ninterface PushNotificationData {\n /**\n * SID of the conversation.\n */\n conversationSid?: string;\n\n /**\n * Title of the conversation.\n */\n conversationTitle?: string;\n\n /**\n * Index of the message in the conversation.\n */\n messageIndex?: number;\n\n /**\n * SID of the message in the conversation.\n */\n messageSid?: string;\n\n /**\n * Media of the notification\n */\n media?: Media;\n\n /**\n * Count of the attached media of the message.\n */\n mediaCount?: number;\n}\n\n/**\n * Push notification for a Conversations client.\n */\nclass PushNotification {\n /**\n * Title of the notification.\n */\n public readonly title: string | null;\n\n /**\n * Text of the notification.\n */\n public readonly body: string | null;\n\n /**\n * Sound of the notification.\n */\n public readonly sound: string | null;\n\n /**\n * Number of the badge.\n */\n public readonly badge: number | null;\n\n /**\n * Notification action (`click_action` in FCM terms and `category` in APN terms).\n */\n public readonly action: string | null;\n\n /**\n * Type of the notification.\n */\n public readonly type: PushNotificationType;\n\n /**\n * Additional data of the conversation.\n */\n public readonly data: PushNotificationData;\n\n /**\n * @internal\n */\n constructor(data: PushNotificationDescriptor) {\n this.title = data.title || null;\n this.body = data.body || null;\n this.sound = data.sound || null;\n this.badge = data.badge || null;\n this.action = data.action || null;\n this.type = data.type || null;\n this.data = data.data || {};\n }\n}\n\nexport {\n PushNotification,\n PushNotificationType,\n PushNotificationDescriptor,\n PushNotificationData,\n};\n","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(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 return 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]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // 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 (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\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 unsafeStringify(rnds);\n}\n\nexport default v4;","import { TransportResult as Result, Transport } from \"twilsock\";\nimport { MutationConflictResponse } from \"./interfaces/commands/mutation-conflict\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { AsyncRetrier } from \"@twilio/operation-retrier\";\n\nexport interface CommandExecutorServices {\n transport: Transport;\n}\n\nconst trimSlashes = (url: string): string => url.replace(/(^\\/+|\\/+$)/g, \"\");\n\nconst isMutationConflictResponse = (\n response: Result<unknown>\n): response is Result<MutationConflictResponse> => response.status.code === 202;\n\n/**\n * Reason for why retrier in `CommandExecutor.fetchResource` resolved. If the\n * retrier resolved with type of `\"noMetadata\"`, that means the retrier got\n * preemptively stopped, as there is no point in retrying to receive metadata\n * for a message after it was confirmed to not exist. If the retrier resolved\n * with type `\"success\"`, it means that the retrier resolved with a normal\n * response.\n */\ntype RetrierResolution<T> =\n | {\n type: \"success\";\n data: T;\n }\n | {\n type: \"noMetadata\";\n };\n\nclass ChannelMetadataNotFoundError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n\nclass CommandExecutor {\n constructor(\n private _serviceUrl: string,\n private _services: CommandExecutorServices,\n private _productId?: string\n ) {}\n\n private _preProcessUrl(url: string): string {\n const trimmedUrl = trimSlashes(url);\n\n if (/^https?:\\/\\//.test(url)) {\n return trimmedUrl;\n }\n\n return `${trimSlashes(this._serviceUrl)}/${trimmedUrl}`;\n }\n\n private async _makeRequest<Request = void, Response = void>(\n method: \"get\" | \"post\" | \"delete\",\n url: string,\n requestBody?: Request,\n headers?: Record<string, string>\n ): Promise<Result<Response>> {\n const preProcessedUrl = this._preProcessUrl(url);\n const finalHeaders = {\n \"Content-Type\": \"application/json; charset=utf-8\",\n ...(headers || {}),\n };\n let response: Result<Response>;\n\n switch (method) {\n case \"get\":\n let getUrl = preProcessedUrl;\n\n if (requestBody) {\n getUrl +=\n \"?\" +\n Object.entries(requestBody)\n .map((entry) => entry.map(encodeURIComponent).join(\"=\"))\n .join(\"&\");\n }\n\n response = await this._services.transport.get(\n getUrl,\n finalHeaders,\n this._productId\n );\n break;\n case \"post\":\n response = await this._services.transport.post(\n preProcessedUrl,\n finalHeaders,\n JSON.stringify(requestBody),\n this._productId\n );\n break;\n case \"delete\":\n response = await this._services.transport.delete(\n preProcessedUrl,\n finalHeaders,\n {},\n this._productId\n );\n break;\n }\n\n if (response.status.code < 200 || response.status.code >= 300) {\n throw new Error(\n `Request responded with a non-success code ${response.status.code}`\n );\n }\n\n return response;\n }\n\n public async fetchResource<Request = void, Response = void>(\n url: string,\n requestBody?: Request\n ): Promise<Response> {\n const maxAttemptsCount = 6;\n const retrier = new AsyncRetrier({\n min: 50,\n max: 1600,\n maxAttemptsCount,\n });\n\n let resolution: RetrierResolution<Response>;\n\n try {\n resolution = await retrier.run<RetrierResolution<Response>>(async () => {\n try {\n const response = await this._makeRequest<Request, Response>(\n \"get\",\n url,\n requestBody\n );\n return {\n type: \"success\",\n data: response.body,\n };\n } catch (e) {\n // If we get the 50530 error, which signifies that the message has no\n // metadata, we can stop the retrier by resolving it with the type\n // `\"noMetadata\"`.\n if (e?.body?.status === 404 && e?.body?.code === 50530) {\n return {\n type: \"noMetadata\",\n };\n }\n\n // Any other error will be rethrown, thus continuing work of the\n // retrier.\n throw e;\n }\n });\n } catch {\n throw new Error(`Fetch resource from \"${url}\" failed.`);\n }\n\n if (resolution.type === \"noMetadata\") {\n throw new ChannelMetadataNotFoundError(\"No metadata found.\");\n }\n\n return resolution.data;\n }\n\n public async mutateResource<Request = void, Response = void>(\n method: \"post\" | \"delete\",\n url: string,\n requestBody?: Request\n ): Promise<Response> {\n const result = await this._makeRequest<Request, Response>(\n method,\n url,\n requestBody,\n {\n \"X-Twilio-Mutation-Id\": uuidv4(),\n }\n );\n\n if (isMutationConflictResponse(result)) {\n return await this.fetchResource<undefined, Response>(\n result.body.resource_url\n );\n }\n\n return result.body;\n }\n}\n\nexport { CommandExecutor, ChannelMetadataNotFoundError };\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","import { CommandExecutor } from \"./command-executor\";\nimport { ContentTemplate } from \"./content-template\";\nimport { ContentTemplatesResponse } from \"./interfaces/commands/content-templates-response\";\nimport { UriBuilder } from \"./util\";\n\ntype ContentClientServices = {\n commandExecutor: CommandExecutor;\n};\n\nclass ContentClient {\n private _cachedTemplates: Readonly<ContentTemplate[]> | null = null;\n\n public constructor(\n private readonly _services: ContentClientServices,\n private readonly _pageSize: number = 100,\n private readonly _cacheTtlMs: number = 5_000\n ) {}\n\n public async getContentTemplates(): Promise<Readonly<ContentTemplate[]>> {\n if (this._cachedTemplates !== null) {\n return this._cachedTemplates;\n }\n\n let [templatesPage, nextToken] = await this._fetchContentTemplates();\n let templates = templatesPage;\n\n while (nextToken !== null) {\n [templatesPage, nextToken] = await this._fetchContentTemplates(nextToken);\n templates = [...templates, ...templatesPage];\n }\n\n this._cachedTemplates = Object.freeze(templates);\n\n setTimeout(() => {\n this._cachedTemplates = null;\n }, this._cacheTtlMs);\n\n return templates;\n }\n\n private async _fetchContentTemplates(\n pageToken?: string\n ): Promise<[ContentTemplate[], string?]> {\n const contentTemplatesUrl = \"Client/v2/ContentTemplates\";\n const url = new UriBuilder(contentTemplatesUrl);\n\n url.arg(\"PageSize\", this._pageSize);\n\n if (pageToken !== undefined) {\n url.arg(\"PageToken\", pageToken);\n }\n\n const response = await this._services.commandExecutor.fetchResource<\n void,\n ContentTemplatesResponse\n >(url.build());\n\n return [\n response.templates.map((template) => new ContentTemplate(template)),\n response.meta.next_token,\n ];\n }\n}\n\nexport { ContentClient };\n","'use strict';\n\nclass QuickLRU {\n\tconstructor(options = {}) {\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tthis.maxSize = options.maxSize;\n\t\tthis.onEviction = options.onEviction;\n\t\tthis.cache = new Map();\n\t\tthis.oldCache = new Map();\n\t\tthis._size = 0;\n\t}\n\n\t_set(key, value) {\n\t\tthis.cache.set(key, value);\n\t\tthis._size++;\n\n\t\tif (this._size >= this.maxSize) {\n\t\t\tthis._size = 0;\n\n\t\t\tif (typeof this.onEviction === 'function') {\n\t\t\t\tfor (const [key, value] of this.oldCache.entries()) {\n\t\t\t\t\tthis.onEviction(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.oldCache = this.cache;\n\t\t\tthis.cache = new Map();\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\tconst value = this.oldCache.get(key);\n\t\t\tthis.oldCache.delete(key);\n\t\t\tthis._set(key, value);\n\t\t\treturn value;\n\t\t}\n\t}\n\n\tset(key, value) {\n\t\tif (this.cache.has(key)) {\n\t\t\tthis.cache.set(key, value);\n\t\t} else {\n\t\t\tthis._set(key, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\treturn this.cache.has(key) || this.oldCache.has(key);\n\t}\n\n\tpeek(key) {\n\t\tif (this.cache.has(key)) {\n\t\t\treturn this.cache.get(key);\n\t\t}\n\n\t\tif (this.oldCache.has(key)) {\n\t\t\treturn this.oldCache.get(key);\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis._size--;\n\t\t}\n\n\t\treturn this.oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.oldCache.clear();\n\t\tthis._size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.cache) {\n\t\t\tyield item;\n\t\t}\n\n\t\tfor (const item of this.oldCache) {\n\t\t\tconst [key] = item;\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget size() {\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.oldCache.keys()) {\n\t\t\tif (!this.cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this._size + oldCacheSize, this.maxSize);\n\t}\n}\n\nmodule.exports = QuickLRU;\n","import {\n ChannelMetadataNotFoundError,\n CommandExecutor,\n} from \"./command-executor\";\nimport { ChannelMetadataResponse } from \"./interfaces/commands/channel-metadata-response\";\nimport QuickLRU from \"quick-lru\";\nimport { Configuration } from \"./configuration\";\n\ntype ChannelMetadataClientServices = {\n commandExecutor: CommandExecutor;\n};\n\ntype CacheEntry = {\n item: ChannelMetadata | null;\n};\n\n/**\n * Represents channel metadata.\n */\nclass ChannelMetadata {\n /**\n * Communication channel type.\n */\n public readonly type: string;\n\n /**\n * The actual metadata.\n */\n public readonly data: unknown;\n\n /**\n * @internal\n */\n public constructor(type: string, data: unknown) {\n this.type = type;\n this.data = data;\n\n Object.freeze(data);\n }\n}\n\nclass ChannelMetadataClient {\n private readonly _services: ChannelMetadataClientServices;\n private readonly _configuration: Configuration;\n private readonly _cache: QuickLRU<string, CacheEntry>;\n\n public constructor(\n services: ChannelMetadataClientServices,\n configuration: Configuration\n ) {\n this._services = services;\n this._configuration = configuration;\n this._cache = new QuickLRU({\n maxSize: configuration.channelMetadataCacheCapacity,\n });\n }\n\n public async getChannelMetadata(\n conversationSid: string,\n messageSid: string\n ): Promise<ChannelMetadata | null> {\n const key = `${conversationSid},${messageSid}`;\n const cachedItem = this._cache.get(key);\n\n if (cachedItem) {\n return cachedItem.item;\n }\n\n const url = `${this._configuration.links.conversations}/${conversationSid}/Messages/${messageSid}/ChannelMetadata`;\n let metadataResponse: ChannelMetadataResponse;\n\n try {\n metadataResponse = await this._services.commandExecutor.fetchResource<\n void,\n ChannelMetadataResponse\n >(url);\n } catch (e) {\n if (e instanceof ChannelMetadataNotFoundError) {\n this._cache.set(key, { item: null });\n return null;\n }\n\n throw new Error(e);\n }\n\n const metadata = new ChannelMetadata(\n metadataResponse.type,\n metadataResponse.data\n );\n this._cache.set(key, { item: metadata });\n return metadata;\n }\n}\n\nexport { ChannelMetadataClient, ChannelMetadata };\n","import { CommandExecutor } from \"./command-executor\";\nimport { Configuration } from \"./configuration\";\nimport QuickLRU from \"quick-lru\";\nimport {\n MessageRecipient,\n MessageRecipientsResponse,\n} from \"./interfaces/commands/message-recipients-response\";\nimport { Paginator } from \"./interfaces/paginator\";\nimport { UriBuilder } from \"./util\";\nimport { ResponseMeta } from \"./interfaces/commands/response-meta\";\nimport { RestPaginator } from \"./rest-paginator\";\n\ntype MessageRecipientsClientServices = {\n commandExecutor: CommandExecutor;\n};\n\ntype MessageRecipientsCacheEntry = {\n item: RecipientDescriptor[];\n};\n\n/**\n * Message recipient descriptor.\n */\ntype RecipientDescriptor =\n | EmailRecipientDescriptor\n | UnknownRecipientDescriptor;\n\n/**\n * Email recipient level.\n */\ntype EmailRecipientLevel = \"to\" | \"from\" | \"cc\";\n\n/**\n * Email recipient descriptor.\n */\nclass EmailRecipientDescriptor {\n /**\n * Type of recipient.\n */\n public readonly type = \"email\";\n\n /**\n * Sid of the message that this recipient belongs to.\n */\n public readonly messageSid: string;\n\n /**\n * Email recipient level.\n */\n public readonly level: EmailRecipientLevel;\n\n /**\n * Name of the recipient.\n */\n public readonly name: string;\n\n /**\n * Address of the recipient.\n */\n public readonly address: string;\n\n /**\n * @internal\n */\n public constructor(recipient: MessageRecipient) {\n this.messageSid = recipient.message_sid;\n this.level = recipient.level;\n this.name = recipient.name;\n this.address = recipient.address;\n }\n}\n\n/**\n * Unknown recipient descriptor. Used to be able to handle recipient types that\n * are not supported by the current version of the SDK.\n */\nclass UnknownRecipientDescriptor {\n /**\n * Type of recipient.\n */\n public readonly type: string;\n\n /**\n * Sid of the message that this recipient belongs to.\n */\n public readonly messageSid: string;\n\n /**\n * Recipient data as a JSON string.\n */\n public readonly rawData: string;\n\n /**\n * @internal\n */\n public constructor(recipient: MessageRecipient) {\n this.type = recipient.type;\n this.messageSid = recipient.message_sid;\n this.rawData = JSON.stringify(recipient);\n }\n}\n\nclass MessageRecipientsClient {\n private readonly _services: MessageRecipientsClientServices;\n private readonly _configuration: Configuration;\n private readonly _cache: QuickLRU<string, MessageRecipientsCacheEntry>;\n\n public constructor(\n services: MessageRecipientsClientServices,\n configuration: Configuration\n ) {\n this._services = services;\n this._configuration = configuration;\n this._cache = new QuickLRU({\n maxSize: configuration.messageRecipientsCacheCapacity,\n });\n }\n\n public async getRecipientsFromMessage(\n conversationSid: string,\n messageSid: string\n ): Promise<RecipientDescriptor[]> {\n const key = `${conversationSid},${messageSid}`;\n const cachedItem = this._cache.get(key);\n\n if (cachedItem) {\n return cachedItem.item;\n }\n\n const url = new UriBuilder(this._configuration.links.conversations)\n .path(conversationSid)\n .path(\"MessageRecipients\")\n .arg(\"MessageSid\", messageSid)\n .build();\n const recipientsResponse =\n await this._services.commandExecutor.fetchResource<\n void,\n MessageRecipientsResponse\n >(url);\n const recipients: RecipientDescriptor[] =\n recipientsResponse.message_recipients.map((recipient) =>\n this._wrapResponse(recipient)\n );\n\n if (recipients.length > 0) {\n this._cache.set(key, { item: recipients });\n }\n\n return recipients;\n }\n\n public async getRecipientsFromConversation(\n conversationSid: string,\n paginatorOptions?: {\n pageToken?: string;\n pageSize?: number;\n }\n ): Promise<Paginator<RecipientDescriptor>> {\n const url = new UriBuilder(this._configuration.links.conversations)\n .path(conversationSid)\n .path(\"MessageRecipients\")\n .arg(\"PageToken\", paginatorOptions?.pageToken ?? undefined)\n .arg(\"PageSize\", paginatorOptions?.pageSize ?? undefined)\n .build();\n const recipientsResponse =\n await this._services.commandExecutor.fetchResource<\n void,\n { message_recipients: MessageRecipient[] } & ResponseMeta\n >(url);\n const allRecipients = recipientsResponse.message_recipients.map(\n (recipient) => this._wrapResponse(recipient)\n );\n\n for (const recipient of allRecipients) {\n const key = `${conversationSid},${recipient.messageSid}`;\n const existingMessageRecipients = this._cache.get(key)?.item ?? [];\n this._cache.set(key, { item: [...existingMessageRecipients, recipient] });\n }\n\n return new RestPaginator<RecipientDescriptor>(\n allRecipients,\n (pageToken, pageSize) =>\n this.getRecipientsFromConversation(conversationSid, {\n pageToken,\n pageSize,\n }),\n recipientsResponse.meta.previous_token,\n recipientsResponse.meta.next_token\n );\n }\n\n private _wrapResponse(recipient: MessageRecipient): RecipientDescriptor {\n switch (recipient.type) {\n case \"email\":\n return new EmailRecipientDescriptor(recipient);\n default:\n return new UnknownRecipientDescriptor(recipient);\n }\n }\n}\n\nexport {\n MessageRecipientsClient,\n EmailRecipientDescriptor,\n UnknownRecipientDescriptor,\n RecipientDescriptor,\n EmailRecipientLevel,\n};\n","import { Logger } from \"./logger\";\nimport { Configuration } from \"./configuration\";\n\nimport { User, UserUpdatedEventArgs, UserUpdateReason } from \"./user\";\nimport { Network } from \"./services/network\";\n\nimport { NotificationTypes } from \"./interfaces/notification-types\";\n\nimport {\n TwilsockClient,\n InitRegistration,\n ConnectionState as TwilsockConnectionState,\n Transport,\n} from \"twilsock\";\nimport {\n ChannelType,\n Notifications as NotificationClient,\n} from \"@twilio/notifications\";\nimport { SyncClient } from \"twilio-sync\";\nimport { McsClient } from \"@twilio/mcs-client\";\n\nimport {\n Conversation,\n Conversations as ConversationsEntity,\n} from \"./data/conversations\";\n\nimport { Users } from \"./data/users\";\nimport { TypingIndicator } from \"./services/typing-indicator\";\nimport { Paginator } from \"./interfaces/paginator\";\nimport { PushNotification } from \"./push-notification\";\nimport { deepClone, parseToNumber } from \"./util\";\nimport {\n Participant,\n ParticipantUpdatedEventArgs,\n ParticipantUpdateReason,\n} from \"./participant\";\nimport {\n Message,\n MessageUpdatedEventArgs,\n MessageUpdateReason,\n} from \"./message\";\nimport { TelemetryEventDescription, TelemetryPoint } from \"twilsock\";\nimport {\n validateTypesAsync,\n validateTypes,\n literal,\n nonEmptyString,\n pureObject,\n objectSchema,\n validateConstructorTypes,\n nonEmptyArray,\n} from \"@twilio/declarative-type-validator\";\nimport { version as sdkVersion } from \"../package.json\";\nimport {\n ConversationUpdatedEventArgs,\n ConversationUpdateReason,\n} from \"./conversation\";\nimport { CommandExecutor } from \"./command-executor\";\nimport { ConfigurationResponse } from \"./interfaces/commands/configuration\";\nimport { ReplayEventEmitter } from \"@twilio/replay-event-emitter\";\nimport { JSONValue } from \"./types\";\nimport { Media } from \"./media\";\nimport { CancellablePromise } from \"@twilio/mcs-client\";\nimport { deprecated, deprecationWarning } from \"@twilio/deprecation-decorator\";\nimport { ContentTemplate } from \"./content-template\";\nimport { ContentClient } from \"./content-client\";\nimport { ChannelMetadataClient } from \"./channel-metadata-client\";\nimport { MessageRecipientsClient } from \"./message-recipients-client\";\n\n/**\n * Client events.\n */\ntype ClientEvents = {\n conversationAdded: (conversation: Conversation) => void;\n conversationJoined: (conversation: Conversation) => void;\n conversationLeft: (conversation: Conversation) => void;\n conversationRemoved: (conversation: Conversation) => void;\n conversationUpdated: (data: {\n conversation: Conversation;\n updateReasons: ConversationUpdateReason[];\n }) => void;\n participantJoined: (participant: Participant) => void;\n participantLeft: (participant: Participant) => void;\n participantUpdated: (data: {\n participant: Participant;\n updateReasons: ParticipantUpdateReason[];\n }) => void;\n messageAdded: (message: Message) => void;\n messageRemoved: (message: Message) => void;\n messageUpdated: (data: {\n message: Message;\n updateReasons: MessageUpdateReason[];\n }) => void;\n tokenAboutToExpire: () => void;\n tokenExpired: () => void;\n typingEnded: (participant: Participant) => void;\n typingStarted: (participant: Participant) => void;\n pushNotification: (pushNotification: PushNotification) => void;\n userSubscribed: (user: User) => void;\n userUnsubscribed: (user: User) => void;\n userUpdated: (data: {\n user: User;\n updateReasons: UserUpdateReason[];\n }) => void;\n stateChanged: (state: State) => void;\n initialized: () => void;\n initFailed: ({ error }: { error?: ConnectionError }) => void;\n connectionStateChanged: (state: TwilsockConnectionState) => void;\n connectionError: (data: ConnectionError) => void;\n};\n\n/**\n * Connection state of the client. Possible values are as follows:\n * * `'connecting'` - client is offline and connection attempt is in process\n * * `'connected'` - client is online and ready\n * * `'disconnecting'` - client is going offline as disconnection is in process\n * * `'disconnected'` - client is offline and no connection attempt is in\n * process\n * * `'denied'` - client connection is denied because of invalid JWT access\n * token. User must refresh token in order to proceed\n */\ntype ConnectionState = TwilsockConnectionState;\n\n/**\n * State of the client. Possible values are as follows:\n * * `'failed'` - the client failed to initialize\n * * `'initialized'` - the client successfully initialized\n */\ntype State = \"failed\" | \"initialized\";\n\n/**\n * Notifications channel type. Possible values are as follows:\n * * `'fcm'`\n * * `'apn'`\n */\ntype NotificationsChannelType = ChannelType;\n\n/**\n * Level of logging.\n */\ntype LogLevel = \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"silent\";\n\n/**\n * Conversations client options.\n */\ninterface ClientOptions {\n /**\n * The level of logging to enable.\n */\n logLevel?: LogLevel;\n\n /**\n * The cache capacity for channel metadata.\n */\n channelMetadataCacheCapacity?: number;\n\n /**\n * The cache capacity for message recipients.\n */\n messageRecipientsCacheCapacity?: number;\n\n region?: string;\n productId?: string;\n twilsockClient?: TwilsockClient;\n transport?: Transport;\n notificationsClient?: NotificationClient;\n syncClient?: SyncClient;\n typingIndicatorTimeoutOverride?: number;\n consumptionReportIntervalOverride?: string;\n httpCacheIntervalOverride?: string;\n userInfosToSubscribeOverride?: number;\n retryWhenThrottledOverride?: boolean;\n backoffConfigOverride?: Record<string, unknown>;\n Chat?: ClientOptions;\n IPMessaging?: ClientOptions;\n Sync?: Record<string, unknown>;\n Notification?: Record<string, unknown>;\n Twilsock?: Record<string, unknown>;\n clientMetadata?: Record<string, unknown>;\n initRegistrations?: InitRegistration[];\n disableDeepClone?: boolean;\n typingUri?: string;\n apiUri?: string;\n throwErrorsAlways?: boolean;\n}\n\ntype ConnectionError = {\n terminal: boolean;\n message: string;\n};\n\n/**\n * Options for {@link Client.createConversation}.\n */\ninterface CreateConversationOptions {\n /**\n * Any custom attributes to attach to the conversation.\n */\n attributes?: JSONValue;\n\n /**\n * A non-unique display name of the conversation.\n */\n friendlyName?: string;\n\n /**\n * A unique identifier of the conversation.\n */\n uniqueName?: string;\n\n /**\n * The access control for the conversation.\n * null for existing conversations, 'restricted' for conversations that need to support users with restricted access\n */\n access?: string;\n}\n\n/**\n * Client services.\n */\nclass ClientServices {\n commandExecutor!: CommandExecutor;\n twilsockClient!: TwilsockClient;\n users!: Users;\n notificationClient!: NotificationClient;\n network!: Network;\n typingIndicator!: TypingIndicator;\n syncClient!: SyncClient;\n mcsClient!: McsClient;\n transport!: Transport;\n contentClient!: ContentClient;\n channelMetadataClient!: ChannelMetadataClient;\n messageRecipientsClient!: MessageRecipientsClient;\n}\n\n/**\n * A client is the starting point to the Twilio Conversations functionality.\n */\n@validateConstructorTypes(nonEmptyString, [pureObject, \"undefined\"])\nclass Client extends ReplayEventEmitter<ClientEvents> {\n /**\n * Fired when a conversation becomes visible to the client. The event is also\n * triggered when the client creates a new conversation.\n * Fired for all conversations that the client has joined.\n *\n * Parameters:\n * 1. {@link Conversation} `conversation` - the conversation in question\n * @event\n */\n public static readonly conversationAdded = \"conversationAdded\";\n\n /**\n * Fired when the client joins a conversation.\n *\n * Parameters:\n * 1. {@link Conversation} `conversation` - the conversation in question\n * @event\n */\n public static readonly conversationJoined = \"conversationJoined\";\n\n /**\n * Fired when the client leaves a conversation.\n *\n * Parameters:\n * 1. {@link Conversation} `conversation` - the conversation in question\n * @event\n */\n public static readonly conversationLeft = \"conversationLeft\";\n\n /**\n * Fired when a conversation is no longer visible to the client.\n *\n * Parameters:\n * 1. {@link Conversation} `conversation` - the conversation in question\n * @event\n */\n public static readonly conversationRemoved = \"conversationRemoved\";\n\n /**\n * Fired when the attributes or the metadata of a conversation have been\n * updated. During conversation's creation and initialization, this event\n * might be fired multiple times for same joined or created conversation as\n * new data is arriving from different sources.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Conversation} `conversation` - the conversation in question\n * * {@link ConversationUpdateReason}[] `updateReasons` - array of reasons\n * for the update\n * @event\n */\n public static readonly conversationUpdated = \"conversationUpdated\";\n\n /**\n * Fired when a participant has joined a conversation.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n public static readonly participantJoined = \"participantJoined\";\n\n /**\n * Fired when a participant has left a conversation.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n public static readonly participantLeft = \"participantLeft\";\n\n /**\n * Fired when a participant's fields have been updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Participant} `participant` - the participant in question\n * * {@link ParticipantUpdateReason}[] `updateReasons` - array of reasons\n * for the update\n * @event\n */\n public static readonly participantUpdated = \"participantUpdated\";\n\n /**\n * Fired when a new message has been added to the conversation on the server.\n *\n * Parameters:\n * 1. {@link Message} `message` - the message in question\n * @event\n */\n public static readonly messageAdded = \"messageAdded\";\n\n /**\n * Fired when a message is removed from the message list of a conversation.\n *\n * Parameters:\n * 1. {@link Message} `message` - the message in question\n * @event\n */\n public static readonly messageRemoved = \"messageRemoved\";\n\n /**\n * Fired when the fields of an existing message are updated with new values.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link Message} `message` - the message in question\n * * {@link MessageUpdateReason}[] `updateReasons` - array of reasons for\n * the update\n * @event\n */\n public static readonly messageUpdated = \"messageUpdated\";\n\n /**\n * Fired when the token is about to expire and needs to be updated.\n * @event\n */\n public static readonly tokenAboutToExpire = \"tokenAboutToExpire\";\n\n /**\n * Fired when the token has expired.\n * @event\n */\n public static readonly tokenExpired = \"tokenExpired\";\n\n /**\n * Fired when a participant has stopped typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n public static readonly typingEnded = \"typingEnded\";\n\n /**\n * Fired when a participant has started typing.\n *\n * Parameters:\n * 1. {@link Participant} `participant` - the participant in question\n * @event\n */\n public static readonly typingStarted = \"typingStarted\";\n\n /**\n * Fired when the client has received (and parsed) a push notification via one\n * of the push channels (apn or fcm).\n *\n * Parameters:\n * 1. {@link PushNotification} `pushNotification` - the push notification in\n * question\n * @event\n */\n public static readonly pushNotification = \"pushNotification\";\n\n /**\n * Fired when the client has subscribed to a user.\n *\n * Parameters:\n * 1. {@link User} `user` - the user in question\n * @event\n */\n public static readonly userSubscribed = \"userSubscribed\";\n\n /**\n * Fired when the client has unsubscribed from a user.\n *\n * Parameters:\n * 1. {@link User} `user` - the user in question\n * @event\n */\n public static readonly userUnsubscribed = \"userUnsubscribed\";\n\n /**\n * Fired when the properties or the reachability status of a user have been\n * updated.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * {@link User} `user` - the user in question\n * * {@link UserUpdateReason}[] `updateReasons` - array of reasons for the\n * update\n * @event\n */\n public static readonly userUpdated = \"userUpdated\";\n\n /**\n * @deprecated Use initialized or initFailed events instead\n * Fired when the state of the client has been changed.\n *\n * Parameters:\n * 1. {@link State} `state` - the new client state\n * @event\n */\n public static readonly stateChanged = \"stateChanged\";\n\n /**\n * Fired when the client has completed initialization successfully.\n * @event\n */\n public static readonly initialized = \"initialized\";\n\n /**\n * Fired when the client initialization failed.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following property:\n * * Error? `error` - the initialization error if present\n * @event\n */\n public static readonly initFailed = \"initFailed\";\n\n /**\n * Fired when the connection state of the client has been changed.\n *\n * Parameters:\n * 1. {@link ConnectionState} `state` - the new connection state\n * @event\n */\n public static readonly connectionStateChanged = \"connectionStateChanged\";\n\n /**\n * Fired when the connection is interrupted for an unexpected reason.\n *\n * Parameters:\n * 1. object `data` - info object provided with the event. It has the\n * following properties:\n * * boolean `terminal` - Twilsock will stop connection attempts if true\n * * string `message` - the error message of the root cause\n * * number? `httpStatusCode` - http status code if available\n * * number? `errorCode` - Twilio public error code if available\n * @event\n */\n public static readonly connectionError = \"connectionError\";\n\n /**\n * Current version of the Conversations client.\n */\n public static readonly version: string = sdkVersion;\n\n /**\n * Logger instance.\n */\n private static readonly _logger = Logger.scope(\"Client\");\n\n /**\n * Supported push notification channels.\n */\n private static readonly _supportedPushChannels: NotificationsChannelType[] = [\n \"fcm\",\n \"apn\",\n ];\n\n /**\n * Supported push data fields.\n */\n private static readonly _supportedPushDataFields = {\n conversation_sid: \"conversationSid\", // string\n conversation_title: \"conversationTitle\", // string\n message_sid: \"messageSid\", // string\n message_index: \"messageIndex\", // integer\n media_count: \"mediaCount\", // integer\n media: \"media\", // object\n };\n\n /**\n * Current version of the Conversations client.\n */\n public readonly version: string = sdkVersion;\n\n /**\n * Client connection state.\n */\n public connectionState: ConnectionState = \"unknown\";\n\n /**\n * Promise that resolves on successful initialization.\n */\n private _ensureReady!: Promise<void>;\n\n /**\n * Options passed to the client.\n */\n private readonly _options: Partial<ClientOptions>;\n\n /**\n * Client service objects.\n */\n private readonly _services: ClientServices;\n\n /**\n * The user of the client.\n */\n private readonly _myself: User;\n\n /**\n * Resolves the {@link Client._ensureReady} promise.\n */\n private _resolveEnsureReady!: () => void;\n\n /**\n * Rejects the {@link Client._ensureReady} promise.\n */\n private _rejectEnsureReady!: (err?: ConnectionError) => void;\n\n /**\n * The current token of the client.\n */\n private _fpaToken: string;\n\n /**\n * The constructed configuration object.\n */\n private _configuration!: Configuration;\n\n /**\n * The Conversations entity.\n */\n private _conversationsEntity!: ConversationsEntity;\n\n /**\n * Promise that resolves when initial conversations are fetched.\n */\n private _conversationsPromise!: Promise<ConversationsEntity>;\n\n /**\n * Returned Conversations Client instance is not yet fully initialized. Calling any\n * operations will block until it is. Use connection events to monitor when\n * client becomes fully available (connectionStateChanged with state\n * 'connected') or not available (connectionStateChange with state 'denied',\n * event tokenExpired, event connectionError).\n *\n * @param fpaToken Access token\n * @param options Options to customize the Client\n * @returns A not yet fully-initialized client.\n */\n public constructor(fpaToken: string, options: ClientOptions | null = {}) {\n super();\n\n this._fpaToken = fpaToken ?? \"\";\n this._options = options ?? {};\n\n if (!this._options.disableDeepClone) {\n let options: Partial<ClientOptions> = {\n ...this._options,\n transport: undefined,\n twilsockClient: undefined,\n };\n\n options = deepClone(options);\n options.transport = this._options.transport;\n options.twilsockClient = this._options.twilsockClient;\n\n this._options = options;\n }\n\n this._options.logLevel = this._options.logLevel ?? \"silent\";\n Client._logger.setLevel(this._options.logLevel);\n\n const productId = (this._options.productId = \"ip_messaging\");\n\n // Filling ClientMetadata\n this._options.clientMetadata = this._options.clientMetadata || {};\n\n if (!this._options.clientMetadata.hasOwnProperty(\"type\")) {\n this._options.clientMetadata.type = \"conversations\";\n }\n\n if (!this._options.clientMetadata.hasOwnProperty(\"sdk\")) {\n this._options.clientMetadata.sdk = \"JS\";\n this._options.clientMetadata.sdkv = sdkVersion;\n }\n\n // Enable session local storage for Sync\n this._options.Sync = this._options.Sync || {};\n\n if (typeof this._options.Sync.enableSessionStorage === \"undefined\") {\n this._options.Sync.enableSessionStorage = true;\n }\n\n if (this._options.region) {\n this._options.Sync.region = this._options.region;\n }\n\n if (!fpaToken) {\n throw new Error(\"A valid Twilio token should be provided\");\n }\n\n this._services = new ClientServices();\n\n this._myself = new User(\"\", \"\", null, this._services);\n\n const startTwilsock = !this._options.twilsockClient;\n\n // Create default init registrations if none were provided.\n // Otherwise, the outside party have to list all the init registrations they\n // need.\n // Init registrations passed to the Conversations client will be passed down\n // to the Sync client as well.\n if (!this._options.initRegistrations) {\n const initRegistration = new InitRegistration(productId);\n Client.populateInitRegistrations(initRegistration);\n this._options.initRegistrations = [initRegistration];\n }\n\n this._services.twilsockClient = this._options.twilsockClient =\n this._options.twilsockClient ??\n new TwilsockClient(fpaToken, productId, this._options);\n\n this._services.twilsockClient.on(Client.tokenAboutToExpire, () =>\n this.emit(Client.tokenAboutToExpire)\n );\n this._services.twilsockClient.on(Client.tokenExpired, () =>\n this.emit(Client.tokenExpired)\n );\n this._services.twilsockClient.on(Client.connectionError, (error) =>\n this.emit(Client.connectionError, error)\n );\n this._services.twilsockClient.on(\n \"stateChanged\",\n (state: ConnectionState) => {\n Client._logger.debug(\n `Handling stateChanged for ConversationsClient: new state ${state}`\n );\n if (state !== this.connectionState) {\n this.connectionState = state;\n this.emit(Client.connectionStateChanged, this.connectionState);\n }\n }\n );\n\n this._services.transport = this._options.transport = (this._options\n .transport ?? this._options.twilsockClient) as Transport;\n this._services.notificationClient = this._options.notificationsClient =\n this._options.notificationsClient ??\n new NotificationClient(fpaToken, this._options);\n this._services.syncClient = this._options.syncClient =\n this._options.syncClient ?? new SyncClient(fpaToken, this._options);\n\n const configurationOptions =\n options?.Chat || options?.IPMessaging || options || {};\n const region = configurationOptions.region || options?.region;\n const baseUrl: string =\n configurationOptions.apiUri ||\n configurationOptions.typingUri ||\n `https://aim.${region || \"us1\"}.twilio.com`;\n\n this._services.commandExecutor = new CommandExecutor(\n baseUrl,\n { transport: this._options.transport },\n productId\n );\n this._services.contentClient = new ContentClient(this._services);\n\n const emitFailed = (error?: ConnectionError): void => {\n this._rejectEnsureReady(error);\n this.emit(Client.stateChanged, \"failed\");\n this.emit(Client.initFailed, { error });\n };\n\n const emitDisconnected = () => {\n emitFailed({\n terminal: true,\n message: \"Twilsock has disconnected.\",\n });\n this._initializeEnsureReady(options?.throwErrorsAlways || false);\n };\n\n this._services.twilsockClient.once(\"connectionError\", emitFailed);\n this._services.twilsockClient.once(\"disconnected\", emitDisconnected);\n this._services.twilsockClient.once(\"connected\", async () => {\n Client._logger.debug(`ConversationsClient started INITIALIZING`);\n this._services.twilsockClient.off(\"connectionError\", emitFailed);\n this._services.twilsockClient.off(\"disconnected\", emitDisconnected);\n try {\n const startupEvent = \"conversations.client.startup\";\n\n this._services.twilsockClient.addPartialTelemetryEvent(\n new TelemetryEventDescription(\n startupEvent,\n \"Conversations client startup\",\n new Date()\n ),\n startupEvent,\n TelemetryPoint.Start\n );\n\n await this._initialize();\n\n this._services.twilsockClient.addPartialTelemetryEvent(\n new TelemetryEventDescription(\"\", \"\", new Date()),\n startupEvent,\n TelemetryPoint.End\n );\n } catch (err) {\n // Fail ChatClient if initialization is incomplete\n const connectionError = {\n terminal: true,\n message: err.message,\n };\n this._rejectEnsureReady(connectionError);\n this.emit(Client.stateChanged, \"failed\");\n this.emit(Client.initFailed, {\n error: connectionError,\n });\n }\n });\n\n this._initializeEnsureReady(options?.throwErrorsAlways || false);\n\n if (startTwilsock) {\n this._services.twilsockClient.connect();\n }\n }\n\n /**\n * Information of the logged-in user. Before client initialization, returns an\n * uninitialized user. Will trigger a {@link Client.userUpdated} event after\n * initialization.\n */\n public get user(): User {\n return this._myself;\n }\n\n /**\n * Client reachability state. Throws an error if accessed before the client\n * initialization was completed.\n */\n public get reachabilityEnabled(): boolean {\n if (!this._configuration) {\n throw new Error(\n \"Reachability information could not yet be accessed as the client \" +\n \"has not yet been initialized. Subscribe to the 'stateChanged' event \" +\n \"to properly react to the client initialization.\"\n );\n }\n\n return this._configuration.reachabilityEnabled;\n }\n\n /**\n * @deprecated\n * Current token.\n * @internal\n */\n @deprecated(\"token\")\n public get token(): string {\n return this._fpaToken;\n }\n\n /**\n * @deprecated Call constructor directly.\n *\n * Factory method to create a Conversations client instance.\n *\n * The factory method will automatically trigger connection.\n * Do not use it if you need finer-grained control.\n *\n * Since this method returns an already-initialized client, some of the events\n * will be lost because they happen *before* the initialization. It is\n * recommended that `client.onWithReplay` is used as opposed to `client.on`\n * for subscribing to client events. The `client.onWithReplay` will re-emit\n * the most recent value for a given event if it emitted before the\n * subscription.\n *\n * @param token Access token.\n * @param options Options to customize the client.\n * @returns Returns a fully initialized client.\n */\n @deprecated(\"Client.create()\", \"new Client()\")\n @validateTypesAsync(\"string\", [\"undefined\", pureObject])\n public static async create(\n token: string,\n options?: ClientOptions | null\n ): Promise<Client> {\n // The logic is as follows:\n // - If twilsock is not passed in, then the ConversationsClient constructor will call twilsock.connect() by itself\n // and we do not need to do it here.\n // - If twilsock was passed in from the outside, but customer called ConversationsClient.create() then they are\n // using an obsolete workflow and the startup sequence will never complete.\n if (options?.twilsockClient) {\n throw new Error(\n \"Obsolete usage of ConversationsClient.create() \" +\n \"factory method: if you pass twilsock from the outside then you must \" +\n \"use ConversationsClient constructor and be prepared to work with \" +\n \"uninitialized client.\"\n );\n }\n\n const client = new Client(token, options);\n await client._ensureReady;\n\n return client;\n }\n\n /**\n * Static method for push notification payload parsing. Returns parsed push as\n * a {@link PushNotification} object.\n * @param notificationPayload Push notification payload.\n */\n @validateTypes(pureObject)\n public static parsePushNotification(notificationPayload): PushNotification {\n Client._logger.debug(\n \"parsePushNotification, notificationPayload=\",\n notificationPayload\n );\n\n // APNS specifics\n if (typeof notificationPayload.aps !== \"undefined\") {\n if (!notificationPayload.twi_message_type) {\n throw new Error(\n \"Provided push notification payload does not contain Programmable Chat push notification type\"\n );\n }\n\n const data = Client._parsePushNotificationChatData(notificationPayload);\n\n const apsPayload = notificationPayload.aps;\n let body: string | null;\n let title: string | null = null;\n if (typeof apsPayload.alert === \"string\") {\n body = apsPayload.alert || null;\n } else {\n body = apsPayload.alert?.body || null;\n title = apsPayload.alert?.title || null;\n }\n\n return new PushNotification({\n title,\n body,\n sound: apsPayload.sound || null,\n badge: apsPayload.badge || null,\n action: apsPayload.category || null,\n type: notificationPayload.twi_message_type,\n data: data,\n });\n }\n\n // FCM specifics\n if (typeof notificationPayload.data !== \"undefined\") {\n const dataPayload = notificationPayload.data;\n if (!dataPayload.twi_message_type) {\n throw new Error(\n \"Provided push notification payload does not contain Programmable Chat push notification type\"\n );\n }\n\n const data = Client._parsePushNotificationChatData(\n notificationPayload.data\n );\n return new PushNotification({\n title: dataPayload.twi_title || null,\n body: dataPayload.twi_body || null,\n sound: dataPayload.twi_sound || null,\n badge: null,\n action: dataPayload.twi_action || null,\n type: dataPayload.twi_message_type,\n data: data,\n });\n }\n\n throw new Error(\n \"Provided push notification payload is not Programmable Chat notification\"\n );\n }\n\n /**\n * Static method for parsing push notification chat data.\n * @param data Data to parse\n */\n private static _parsePushNotificationChatData(\n data: Record<string, unknown>\n ): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const key in Client._supportedPushDataFields) {\n const value = data[key];\n if (typeof value === \"undefined\" || value === null) {\n continue;\n }\n\n if (key === \"message_index\" || key === \"media_count\") {\n const number = parseToNumber(value);\n if (number !== null) {\n result[Client._supportedPushDataFields[key]] = number;\n }\n continue;\n }\n\n if (key === \"media\") {\n if (typeof value === \"string\") {\n try {\n result[Client._supportedPushDataFields[key]] = JSON.parse(value);\n } catch {\n Client._logger.debug(\"Media message notification parsing error\");\n }\n }\n continue;\n }\n\n result[Client._supportedPushDataFields[key]] = value;\n }\n\n return result;\n }\n\n /**\n * Populate the client with init registrations.\n * @param reg The init registration to populate.\n */\n public static populateInitRegistrations(reg: InitRegistration) {\n reg.populateInitRegistrations([NotificationTypes.TYPING_INDICATOR]);\n SyncClient.populateInitRegistrations(reg);\n }\n\n /**\n * Gracefully shut down the client.\n */\n public async shutdown(): Promise<void> {\n await this._ensureReady;\n await this._services.twilsockClient.disconnect();\n }\n\n /**\n * Update the token used by the client and re-register with the Conversations services.\n * @param token New access token.\n */\n @validateTypesAsync(nonEmptyString)\n public async updateToken(token: string): Promise<Client> {\n await this._ensureReady;\n Client._logger.info(\"updateToken\");\n\n if (this._fpaToken === token) {\n return this;\n }\n\n await this._services.twilsockClient.updateToken(token);\n await this._services.notificationClient.updateToken(token);\n await this._services.mcsClient.updateToken(token);\n this._fpaToken = token;\n\n return this;\n }\n\n /**\n * Get a known conversation by its SID.\n * @param conversationSid Conversation sid\n */\n @validateTypesAsync(nonEmptyString)\n public async getConversationBySid(\n conversationSid: string\n ): Promise<Conversation> {\n await this._ensureReady;\n await this._conversationsEntity.myConversationsRead.promise;\n\n let conversation = await this._conversationsEntity.getConversation(\n conversationSid\n );\n\n if (!conversation) {\n conversation = await this.peekConversationBySid(conversationSid);\n if (conversation) {\n deprecationWarning(\n \"The method getConversationBySid is deprecated to retrieve conversations you're not part of. Use peekConversationBySid instead.\"\n );\n }\n }\n\n if (!conversation) {\n throw new Error(\n `Conversation with SID ${conversationSid} was not found.`\n );\n }\n\n return conversation;\n }\n\n /**\n * Peek a conversation by its SID.\n * @param conversationSid Conversation sid\n */\n @validateTypesAsync(nonEmptyString)\n public async peekConversationBySid(\n conversationSid: string\n ): Promise<Conversation> {\n await this._ensureReady;\n\n const conversation = await this._conversationsEntity.peekConversation(\n conversationSid\n );\n\n if (!conversation) {\n throw new Error(\n `Conversation with SID ${conversationSid} was not found.`\n );\n }\n\n return conversation;\n }\n\n /**\n * Get a known conversation by its unique identifier name.\n * @param uniqueName The unique identifier name of the conversation.\n */\n @validateTypesAsync(nonEmptyString)\n public async getConversationByUniqueName(\n uniqueName: string\n ): Promise<Conversation> {\n await this._ensureReady;\n await this._conversationsEntity.myConversationsRead.promise;\n const conversation =\n await this._conversationsEntity.getConversationByUniqueName(uniqueName);\n\n if (!conversation) {\n throw new Error(\n `Conversation with unique name ${uniqueName} was not found.`\n );\n }\n\n return conversation;\n }\n\n /**\n * Get the current list of all the subscribed conversations.\n */\n public async getSubscribedConversations(): Promise<Paginator<Conversation>> {\n await this._ensureReady;\n return this._conversationsPromise.then((conversations) =>\n conversations.getConversations()\n );\n }\n\n /**\n * Create a conversation on the server and subscribe to its events.\n * The default is a conversation with an empty friendly name.\n * @param options Options for the conversation.\n */\n @validateTypesAsync([\n \"undefined\",\n objectSchema(\"conversation options\", {\n friendlyName: [\"string\", \"undefined\"],\n isPrivate: [\"boolean\", \"undefined\"],\n uniqueName: [\"string\", \"undefined\"],\n }),\n ])\n public async createConversation(\n options?: CreateConversationOptions\n ): Promise<Conversation> {\n await this._ensureReady;\n options = options || {};\n return this._conversationsPromise.then((conversationsEntity) =>\n conversationsEntity.addConversation(options)\n );\n }\n\n /**\n * Register for push notifications.\n * @param channelType Channel type.\n * @param registrationId Push notification ID provided by the FCM/APNS service\n * on the platform.\n */\n @validateTypesAsync(literal(\"fcm\", \"apn\"), \"string\")\n public async setPushRegistrationId(\n channelType: NotificationsChannelType,\n registrationId: string\n ): Promise<void> {\n await this._ensureReady;\n this._subscribeToPushNotifications(channelType);\n this._services.notificationClient.setPushRegistrationId(\n channelType,\n registrationId\n );\n await this._services.notificationClient.commitChanges(); // Committing before this point is useless because we have no push id\n }\n\n /**\n * Unregister from push notifications.\n * @param channelType Channel type.\n * @deprecated Use removePushRegistrations() instead.\n */\n @validateTypesAsync(literal(\"fcm\", \"apn\"))\n public async unsetPushRegistrationId(\n channelType: NotificationsChannelType\n ): Promise<void> {\n await this._ensureReady;\n this._unsubscribeFromPushNotifications(channelType);\n await this._services.notificationClient.commitChanges();\n }\n\n /**\n * Clear existing registrations directly using provided device token.\n * This is useful to ensure stopped subscriptions without resubscribing.\n *\n * This function goes completely beside the state machine and removes all\n * registrations.\n * Use with caution: if it races with current state machine operations,\n * madness will ensue.\n *\n * @param channelType Channel type.\n * @param registrationId Push notification ID provided by the FCM/APNS service\n * on the platform.\n */\n @validateTypesAsync(literal(\"fcm\", \"apn\"), nonEmptyString)\n public async removePushRegistrations(\n channelType: ChannelType,\n registrationId: string\n ): Promise<void> {\n // do not await this._ensureReady() here - it could be called at any moment\n await this._services.notificationClient.removeRegistrations(\n channelType,\n registrationId\n );\n }\n\n /**\n * Parse a push notification payload.\n */\n public parsePushNotification = Client.parsePushNotification;\n\n /**\n * Handle push notification payload parsing and emit the\n * {@link Client.pushNotification} event on this {@link Client} instance.\n * @param notificationPayload Push notification payload\n */\n @validateTypesAsync(pureObject)\n public async handlePushNotification(notificationPayload): Promise<void> {\n await this._ensureReady;\n Client._logger.debug(\n \"handlePushNotification, notificationPayload=\",\n notificationPayload\n );\n this.emit(\n \"pushNotification\",\n Client.parsePushNotification(notificationPayload)\n );\n }\n\n /**\n * Gets a user with the given identity. If it's in the subscribed list, then\n * return the user object from it;\n * if not, then subscribe and add user to the subscribed list.\n * @param identity Identity of the user.\n * @returns A fully initialized user.\n */\n @validateTypesAsync(nonEmptyString)\n public async getUser(identity: string): Promise<User> {\n await this._ensureReady;\n return this._services.users.getUser(identity);\n }\n\n /**\n * Get a list of subscribed user objects.\n */\n public async getSubscribedUsers(): Promise<Array<User>> {\n await this._ensureReady;\n return this._services.users.getSubscribedUsers();\n }\n\n /**\n * Get content URLs for all media attachments in the given set of media sids\n * using a single operation.\n * @param mediaSids Set of media sids to query for the content URL.\n */\n @validateTypesAsync(nonEmptyArray(\"strings\", \"string\"))\n public getTemporaryContentUrlsForMediaSids(\n mediaSids: string[]\n ): CancellablePromise<Map<string, string>> {\n return new CancellablePromise(async (resolve, reject, onCancel) => {\n if (!this._services.mcsClient || !mediaSids) {\n reject(new Error(\"Media Content Service is unavailable\"));\n return;\n }\n\n const request =\n this._services.mcsClient.mediaSetGetContentUrls(mediaSids);\n\n onCancel(() => {\n request.cancel();\n });\n\n try {\n const urls = await request;\n resolve(urls);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n /**\n * Get content URLs for all media attachments in the given set using a single\n * operation.\n * @param contentSet Set of media attachments to query content URLs.\n */\n @validateTypesAsync(nonEmptyArray(\"media\", Media))\n public getTemporaryContentUrlsForMedia(\n contentSet: Media[]\n ): CancellablePromise<Map<string, string>> {\n // We ignore existing mcsMedia members of each of the media entries.\n // Instead, we just collect their sids and pull new descriptors from a\n // mediaSet GET endpoint.\n const sids = contentSet.map((m) => m.sid);\n return this.getTemporaryContentUrlsForMediaSids(sids);\n }\n\n /**\n * Returns rich content templates belonging to the account. Rich content\n * templates can be created via the Twilio console or the REST API.\n */\n public async getContentTemplates(): Promise<Readonly<ContentTemplate[]>> {\n await this._ensureReady;\n return await this._services.contentClient.getContentTemplates();\n }\n\n /**\n * Initialize the client.\n */\n private async _initialize() {\n const configurationResponse =\n await this._services.commandExecutor.fetchResource<\n void,\n ConfigurationResponse\n >(\"Client/v2/Configuration\");\n\n this._configuration = new Configuration(\n this._options as ClientOptions,\n configurationResponse,\n Client._logger\n );\n\n this._services.channelMetadataClient = new ChannelMetadataClient(\n this._services,\n this._configuration\n );\n this._services.messageRecipientsClient = new MessageRecipientsClient(\n this._services,\n this._configuration\n );\n\n this._myself._resolveInitialization(\n this._configuration,\n this._configuration.userIdentity,\n this._configuration.userInfo,\n true\n );\n\n this._services.typingIndicator = new TypingIndicator(\n this.getConversationBySid.bind(this),\n this._configuration,\n this._services\n );\n this._services.network = new Network(this._configuration, this._services);\n\n this._services.users = new Users(\n this._myself,\n this._configuration,\n this._services\n );\n this._services.users.on(\"userSubscribed\", (user) => {\n this.emit(\"userSubscribed\", user);\n });\n this._services.users.on(\"userUpdated\", (args: UserUpdatedEventArgs) =>\n this.emit(\"userUpdated\", args)\n );\n this._services.users.on(\"userUnsubscribed\", (user) => {\n this.emit(\"userUnsubscribed\", user);\n });\n\n this._conversationsEntity = new ConversationsEntity(\n this._configuration,\n this._services\n );\n\n this._conversationsEntity.on(\"conversationAdded\", (conversation) => {\n this.emit(\"conversationAdded\", conversation);\n });\n this._conversationsEntity.on(\"conversationRemoved\", (conversation) => {\n this.emit(\"conversationRemoved\", conversation);\n });\n this._conversationsEntity.on(\"conversationJoined\", (conversation) => {\n this.emit(\"conversationJoined\", conversation);\n });\n this._conversationsEntity.on(\"conversationLeft\", (conversation) => {\n this.emit(\"conversationLeft\", conversation);\n });\n this._conversationsEntity.on(\n \"conversationUpdated\",\n (args: ConversationUpdatedEventArgs) =>\n this.emit(\"conversationUpdated\", args)\n );\n\n this._conversationsEntity.on(\"participantJoined\", (participant) => {\n this.emit(\"participantJoined\", participant);\n });\n this._conversationsEntity.on(\"participantLeft\", (participant) => {\n this.emit(\"participantLeft\", participant);\n });\n this._conversationsEntity.on(\n \"participantUpdated\",\n (args: ParticipantUpdatedEventArgs) =>\n this.emit(\"participantUpdated\", args)\n );\n\n this._conversationsEntity.on(\"messageAdded\", (message) =>\n this.emit(\"messageAdded\", message)\n );\n this._conversationsEntity.on(\n \"messageUpdated\",\n (args: MessageUpdatedEventArgs) => this.emit(\"messageUpdated\", args)\n );\n this._conversationsEntity.on(\"messageRemoved\", (message) =>\n this.emit(\"messageRemoved\", message)\n );\n\n this._conversationsEntity.on(\"typingStarted\", (participant) =>\n this.emit(\"typingStarted\", participant)\n );\n this._conversationsEntity.on(\"typingEnded\", (participant) =>\n this.emit(\"typingEnded\", participant)\n );\n\n this._conversationsPromise = this._conversationsEntity\n .fetchConversations()\n .then(() => this._conversationsEntity)\n .catch((error) => {\n console.error(\n \"Failed to fetch conversations _conversationsPromise -> client.ts\",\n error\n );\n throw error;\n });\n\n await this._services.users.myself._ensureFetched();\n\n Client._supportedPushChannels.forEach((channelType) =>\n this._subscribeToPushNotifications(channelType)\n );\n this._services.typingIndicator.initialize();\n\n this._services.mcsClient = new McsClient(\n this._fpaToken,\n this._configuration.links.mediaService,\n this._configuration.links.mediaSetService,\n {\n ...this._options,\n transport: undefined,\n }\n );\n\n this._resolveEnsureReady();\n this.emit(Client.stateChanged, \"initialized\");\n this.emit(Client.initialized);\n }\n\n /**\n * Subscribe to push notifications.\n * @param channelType The channel type to subscribe to.\n */\n private _subscribeToPushNotifications(channelType: NotificationsChannelType) {\n [\n NotificationTypes.NEW_MESSAGE,\n NotificationTypes.ADDED_TO_CONVERSATION,\n NotificationTypes.REMOVED_FROM_CONVERSATION,\n NotificationTypes.TYPING_INDICATOR,\n NotificationTypes.CONSUMPTION_UPDATE,\n ].forEach((messageType) => {\n this._services.notificationClient.subscribe(channelType, messageType);\n });\n }\n\n /**\n * Unsubscribe from push notifications.\n * @param channelType The channel type to unsubscribe from.\n */\n private _unsubscribeFromPushNotifications(\n channelType: NotificationsChannelType\n ) {\n [\n NotificationTypes.NEW_MESSAGE,\n NotificationTypes.ADDED_TO_CONVERSATION,\n NotificationTypes.REMOVED_FROM_CONVERSATION,\n NotificationTypes.TYPING_INDICATOR,\n NotificationTypes.CONSUMPTION_UPDATE,\n ].forEach((messageType) => {\n this._services.notificationClient.unsubscribe(channelType, messageType);\n });\n }\n\n /**\n * Initialize the ensureReady promise.\n */\n private _initializeEnsureReady(throwErrorsAlways: boolean): void {\n this._ensureReady = new Promise<void>((resolve, reject) => {\n this._resolveEnsureReady = resolve;\n this._rejectEnsureReady = reject;\n }).catch((error) => {\n if (throwErrorsAlways) {\n throw error;\n } else {\n return void 0;\n }\n });\n }\n}\n\nexport {\n Client,\n State,\n ConnectionState,\n NotificationsChannelType,\n LogLevel,\n ClientOptions,\n CreateConversationOptions,\n};\n"],"names":["check","it","Math","global","globalThis","window","self","this","Function","fails","exec","error","descriptors","require$$0","Object","defineProperty","get","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","call","objectPropertyIsEnumerable","f","V","descriptor","enumerable","match","version","createPropertyDescriptor","bitmap","value","configurable","writable","toString","classofRaw","slice","classof","require$$1","split","indexedObject","requireObjectCoercible","undefined","TypeError","IndexedObject","toIndexedObject","isObject","aFunction","variable","getBuiltIn","namespace","method","arguments","length","engineUserAgent","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","nativeSymbol","getOwnPropertySymbols","symbol","Symbol","String","sham","useSymbolAsUid","iterator","isSymbol","$Symbol","setGlobal","key","SHARED","sharedStore","store","sharedModule","push","mode","copyright","toObject","argument","hasOwnProperty","has","hasOwn","id","postfix","random","uid","shared","require$$2","require$$3","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","ordinaryToPrimitive","input","pref","fn","val","valueOf","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","toPropertyKey","document","EXISTS","createElement","documentCreateElement","ie8DomDefine","a","DESCRIPTORS","propertyIsEnumerableModule","IE8_DOM_DEFINE","require$$6","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","P","anObject","$defineProperty","objectDefineProperty","Attributes","definePropertyModule","createNonEnumerableProperty","object","functionToString","inspectSource","set","WeakMap","nativeWeakMap","test","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","objectHas","require$$7","OBJECT_ALREADY_INITIALIZED","state","wmget","wmhas","wmset","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","getInternalState","enforceInternalState","TEMPLATE","redefineModule","exports","options","unsafe","simple","noTargetGet","source","join","prototype","ceil","floor","toInteger","isNaN","min","toLength","max","toAbsoluteIndex","index","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","indexOf","objectKeysInternal","names","i","enumBugKeys","internalObjectKeys","concat","objectGetOwnPropertyNames","getOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","copyConstructorProperties","target","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","isForced_1","redefine","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","TO_STRING_TAG","setToStringTag","TAG","Reflect","setToStringTag$8","activeXDocument","objectKeys","objectDefineProperties","defineProperties","Properties","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","domain","style","display","appendChild","src","contentWindow","open","F","objectCreate","create","factories","construct","C","argsLength","args","list","functionBind","bind","that","partArgs","boundFunction","apply","$","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","FORCED","Target","newTarget","$args","proto","instance","nativeKeys","isArray","Array","arg","$getOwnPropertyNames","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","wellKnownSymbolWrapped","path","wrappedWellKnownSymbolModule","defineWellKnownSymbol","NAME","functionBindContext","b","c","SPECIES","arraySpeciesConstructor","originalArray","constructor","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","arrayIteration","forEach","map","filter","some","every","find","findIndex","filterReject","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","$toString","require$$15","require$$16","nativeObjectCreate","require$$17","require$$18","require$$19","getOwnPropertyNamesExternal","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","InternalStateModule","require$$35","$forEach","require$$36","HIDDEN","require$$28","SYMBOL","setInternalState","ObjectPrototype","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","wrap","tag","description","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","setter","$$u","$forEach$2","for","keyFor","sym","useSetter","useSimple","stringify","replacer","space","$replacer","arrayMethodHasSpeciesSupport","METHOD_NAME","array","foo","Boolean","$filter","FAILS_ON_PRIMITIVES","createProperty","propertyKey","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","done","Promise","then","_asyncToGenerator","err","_assertThisInitialized","ReferenceError","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","_typeof","obj","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","getPrototypeOf","_defineProperty","_defineProperties","props","_createClass","Constructor","protoProps","staticProps","_classCallCheck","getOwnPropertyDescriptors","$map","toStringTagSupport","TO_STRING_TAG_SUPPORT","CORRECT_ARGUMENTS","tryGet","callee","objectToString","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","DOMTokenListPrototype","domTokenListPrototype","arrayMethodIsStrict","arrayForEach","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","handlePrototype$1","nativePromiseConstructor","redefineAll","aPossiblePrototype","objectSetPrototypeOf","CORRECT_SETTER","setSpecies","CONSTRUCTOR_NAME","anInstance","iterators","Iterators","ITERATOR","ArrayPrototype","isArrayIteratorMethod","getIteratorMethod","getIterator","usingIterator","iteratorMethod","iteratorClose","kind","innerResult","innerError","Result","stopped","iterate","iterable","unboundFunction","iterFn","next","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","SAFE_CLOSING","called","iteratorWithReturn","return","from","location","defer","channel","port","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","speciesConstructor","defaultConstructor","S","engineIsIos","engineIsNode","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","runner","listener","event","post","postMessage","protocol","host","argumentsLength","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","flush","head","last","notify","toggle","node","promise","task","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","createTextNode","observe","characterData","microtask","PromiseCapability","$$resolve","$$reject","newPromiseCapability","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","engineIsBrowser","NativePromise","promiseResolve","x","promiseCapability","hostReportErrors","console","newPromiseCapabilityModule","perform","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","catch","setSpecies$3","r","capability","$promiseResolve","values","remaining","alreadyCalled","race","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","isGeneratorFunction","genFun","ctor","displayName","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_regeneratorRuntime$1","mark","awrap","async","iter","reverse","pop","__decorate","decorators","desc","d","decorate","__metadata","metadataKey","metadataValue","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","k","len","E","A","n","callWithSafeIterationClosing","ENTRIES","arrayFrom","arrayLike","mapfn","mapping","PrototypeOfArrayIteratorPrototype","arrayIterator","CONVERT_TO_STRING","pos","first","second","position","size","charCodeAt","stringMultibyte","codeAt","correctPrototypeGetter","CORRECT_PROTOTYPE_GETTER","objectGetPrototypeOf","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","returnThis","createIteratorConstructor","IteratorConstructor","KEYS","VALUES","defineIterator","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","STRING_ITERATOR","iterated","point","root","definition","prepareLine","prefix","Date","toISOString","noop","undefinedType","isIE","navigator","logMethods","bindMethod","methodName","e","traceForIE","log","trace","realMethod","replaceLoggingMethods","level","loggerName","methodFactory","debug","enableLoggingWhenConsoleArrives","defaultMethodFactory","Logger","defaultLevel","factory","currentLevel","storageKey","getPersistedLevel","storedLevel","localStorage","ignore","cookie","encodeURIComponent","levels","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","persist","toUpperCase","persistLevelIfPossible","levelNum","levelName","setDefaultLevel","resetLevel","removeItem","clearPersistedLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","logger","_log","noConflict","getLoggers","module","loglevelLog","_len","_key","_len2","_key2","_len3","_key3","_len4","_key4","warn","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","lib","objMap","pattern","RegExp","parse","parse_1","durationString","reduce","idx","parseFloat","end","duration","startDate","timestamp","getTime","setFullYear","getFullYear","years","setMonth","getMonth","months","setDate","getDate","days","setHours","getHours","hours","setMinutes","getMinutes","minutes","setMilliseconds","getMilliseconds","seconds","weeks","toSeconds","toSeconds_1","default","HTTP_CACHE_LIFETIME","CONSUMPTION_HORIZON_SENDING_INTERVAL","Configuration","_ref","_constructorOptions$u","_ref2","_constructorOptions$h","_ref3","_constructorOptions$c","_options$channelMetad","_options$messageRecip","configurationResponse","TYPING_TIMEOUT","constructorOptions","Chat","IPMessaging","productId","links","myConversations","my_conversations","conversations","users","currentUser","current_user","typing","mediaService","media_service","mediaSetService","media_set_service","messagesReceipts","messages_receipts","limits","mediaAttachmentsCountLimit","media_attachments_count_limit","mediaAttachmentSizeLimitInMb","media_attachment_size_limit_in_mb","mediaAttachmentsTotalSizeLimitInMb","media_attachments_total_size_limit_in_mb","emailHistoriesAllowedContentTypes","email_histories_allowed_mime_types","emailBodiesAllowedContentTypes","email_bodies_allowed_mime_types","typingIndicatorTimeoutOverride","backoffConfiguration","_objectSpread","maxAttemptsCount","backoffConfigOverride","retryWhenThrottled","retryWhenThrottledOverride","userInfosToSubscribe","userInfosToSubscribeOverride","user_infos_to_subscribe","reachabilityEnabled","reachability_enabled","userIdentity","identity","userInfo","sync_objects","my_user_info","httpCacheInterval","httpCacheIntervalOverride","http_cache_interval","parseDuration","_unused","consumptionReportInterval","consumptionReportIntervalOverride","consumption_report_interval","_unused2","channelMetadataCacheCapacity","messageRecipientsCacheCapacity","UNSCOPABLES","addToUnscopables","ARRAY_ITERATOR","es_array_iterator","Arguments","addToUnscopables$2","ArrayIteratorMethods","ArrayValues","re","low","hi","fix","offset","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","whitespace","ltrim","rtrim","stringTrim","start","trim","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","j","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","$RegExp","regexpStickyHelpers","UNSUPPORTED_Y","lastIndex","BROKEN_CARET","re1","re2","regexpUnsupportedDotAll","flags","regexpUnsupportedNcg","groups","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","group","str","raw","charsAdded","strCopy","regexpExec","RegExpPrototype","fixRegexpWellKnownSymbolLogic","SHAM","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","regexp","arg2","forceStringMethod","$exec","advanceStringIndex","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","regexpExecAbstract","R","fixRegExpWellKnownSymbolLogic","getSubstitution","matched","captures","namedCaptures","tailPos","m","symbols","ch","capture","regExpExec","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","fixRegExpWellKnownSymbolLogic$3","_","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","rx","res","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","nativeJoin","ES3_STRINGS","STRICT_METHOD","deepClone","JSON","parseToNumber","Number","parseTime","timeString","parseAttributes","rawAttributes","warningMessage","attributes","separator","UriBuilder","base","paths","isEqual","item","aKeys","bKeys","__esModule","FunctionPrototype","FunctionPrototypeToString","nameRE","_arrayWithHoles","arr","_i","_arr","_s","_e","_n","_d","arr2","arrayLikeToArray","minLen","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","HAS_SPECIES_SUPPORT","nativeSlice","fin","nativeTest","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","_arrayWithoutHoles","_iterableToArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","$includes","addToUnscopables$1","isInteger","isFinite","TO_ENTRIES","$entries","_arrayLikeToArray","_unsupportedIterableToArray","json","custom","optionalJson","sendMediaOptions","objectSchema","contentType","literal","filename","media","Buffer","Blob","property","superPropBase","_get","receiver","_this","_createClass__default","eventHistory","_getPrototypeOf__default","ReplayEventEmitter","historyEntry","_get__default","addListener","_get2","addListenerWithReplay","scope","User","_unsubscribe","_updateFriendlyName","_updateAttributes","_ensureFetched2","_fetch2","entityName","configuration","services","_super","subscribed","setMaxListeners","friendlyName","online","notifiable","_initializationPromise","_resolveInitializationPromise","_resolveInitialization","updateReasons","updateAttributes","_regeneratorRuntime","_context","t0","user","_callee","update","_this2","_context2","_callee2","_callee3","_this3","_context3","promiseToFetch","syncClient","includeItems","entity","on","_update","_updateReachabilityInfo","_callee4","_context4","_fetch","_callee5","_context5","commandExecutor","mutateResource","_callee6","_context6","friendly_name","_callee7","_context7","emitUpdated","_slicedToArray","validateTypesAsync","freezing","isExtensible","preventExtensions","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","internalMetadataModule","enable","splice","fastKey","getWeakData","onFreeze","InternalMetadataModule","collection","common","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","setStrong","internalStateGetterFor","collectionStrong","define","previous","getEntry","removed","delete","add","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","init","attemptNum","clearTimeout","_defineProperty__default","currDelay","initialDelay","minDelay","timeout","delay","maxDelay","delayOverride","prevDelay","area","randomness","corr","round","nextDelay","maxAttemptsTime","cleanup","startTimestamp","scheduleAttempt","inProgress","AsyncRetrier","EventEmitter","retrier","_super2","_assertThisInitialized__default","Retrier","cancel","v","_this4","succeeded","Network","cache","Map","cacheLifetime","cleanupCache","_step","_iterator","_createForOfIteratorHelper","s","_step$value","isExpired","clearInterval","timer","setInterval","request","codesToRetryOn","status","message","failed","removeAllListeners","url","cacheEntry","headers","response","executeWithRetry","transport","pokeTimer","NotificationTypes","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","modules","installedModules","__webpack_require__","moduleId","l","getter","sources","mixin","build","config","plugin","plugins","hook","fsm","additional","camelize","label","words","substring","prepended","prepend","Config","StateMachine","defaults","states","transitions","lifecycle","configureLifecycle","configureInitTransition","configureData","configureMethods","wildcard","configureTransitions","configurePlugins","addState","addStateLifecycleNames","onEnter","onLeave","addTransition","addTransitionLifecycleNames","onBefore","onAfter","mapTransition","transition","to","active","builtin","configure","transitionFor","transitionsFor","allStates","allTransitions","Exception","UNOBSERVED","JSM","observers","fire","is","isPending","pending","can","seek","cannot","transit","changed","observeUnchangedState","onPendingTransition","beginTransit","unshift","observeEvents","observersForEvent","onInvalidTransition","endTransit","failTransit","doTransit","observer","events","previousEvent","previousResult","pluggable","shift","PublicMethods","_fsm","t","PublicProperties","cstor","current","getRandomValues","rng_1","rng$2","crypto","rnds8","Uint8Array","regex","validate_1","_regex","_default","uuid","validate$1","stringify_1","stringify$1","unsafeStringify","_validate","_interopRequireDefault","byteToHex","v1_1","_nodeId","_clockseq","_rng","_stringify","_lastMSecs","_lastNSecs","buf","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","v1$1","parse$1","v35_1","v35$1","URL","DNS","hashfunc","generateUUID","_namespace","unescape","bytes","stringToBytes","_parse","getOutputLength","inputLength8","safeAdd","y","lsw","md5cmn","q","num","cnt","md5ff","md5gg","md5hh","md5ii","md5_1","msg","output","length32","hexTab","hex","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","Uint32Array","bytesToWords","md5$1","v3_1","_v","_md","v3$1","native","randomUUID","native$1","v4_1","_native","rnds","v4$2","z","ROTL","sha1_1","K","H","N","M","pow","W","T","sha1$1","v5_1","_sha","v5$1","nil","version_1","version$3","_nil","_v2","_v3","_v4","_version","Prototype","arrayBufferNative","ArrayBuffer","DataView","NATIVE_ARRAY_BUFFER","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","arrayBufferViewCore","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","isView","typedArrayConstructorsRequireWrappers","toIndex","number","RangeError","abs","LN2","arrayFill","endPos","IEEE754","pack","mantissaLength","exponent","mantissa","buffer","exponentLength","eMax","eBias","rt","sign","Infinity","unpack","nBits","ARRAY_BUFFER","DATA_VIEW","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","packIEEE754","unpackIEEE754","packInt8","packInt16","packInt32","unpackInt32","packFloat32","packFloat64","addGetter","view","count","isLittleEndian","intIndex","byteLength","byteOffset","conversion","ArrayBufferPrototype","testView","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","arrayBuffer","toPositiveInteger","toOffset","BYTES","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","typedArrayFrom","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","typedArrayConstructorModule","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","addElement","typedArrayOffset","$length","$len","createTypedArrayConstructor","relativeIndex","arrayCopyWithin","copyWithin","inc","$copyWithin","exportTypedArrayMethod$m","$every","$fill","typedArraySpeciesConstructor","arrayFromConstructorAndList","fromSpeciesAndList","$find","predicate","$findIndex","searchElement","$indexOf","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","exportTypedArrayMethod$d","$join","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","arrayLastIndexOf","IS_RIGHT","memo","arrayReduce","left","right","$reduce","$reduceRight","middle","$slice","exportTypedArrayMethod$5","$some","mergeSort","comparefn","insertionSort","merge","element","llength","rlength","lindex","rindex","arraySort","firefox","engineFfVersion","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","arrayLength","items","getSortCompare","exportTypedArrayMethod$2","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","MATCH","isRegexp","isRegExp","callRegExpExec","arrayPush","MAX_UINT32","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","fixRegExpWellKnownSymbolLogic$2","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","_isNativeFunction","Proxy","isNativeReflectConstruct","_construct","Parent","Class","isNativeFunction","_wrapNativeSuper","_cache","function","freeExports","freeModule","nodeType","freeGlobal","maxSafeInteger","reOpera","objectProto","capitalize","format","forOwn","callback","getClassOf","qualify","accumulator","each","platform","ua","isCustomContext","nav","likeChrome","isSpecialCasedOS","objectClass","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","operamini","operaClass","arch","prerelease","useFeatures","layout","guess","getName","guesses","product","getProduct","manufacturer","getManufacturer","Apple","iPad","iPhone","iPod","Alcatel","Archos","Amazon","Kindle","Asus","Transformer","Nook","BlackBerry","PlayBook","Google","Nexus","HP","TouchPad","HTC","Huawei","Lenovo","LG","Microsoft","Xbox","Motorola","Xoom","Nintendo","Wii","Nokia","Lumia","Oppo","Samsung","Sony","PlayStation","Xiaomi","Mi","Redmi","os","getOS","cleanupOS","getVersion","patterns","isHostType","lang","System","getProperty","require","system","browser","electron","nw","runtime","flash","Capabilities","phantom","major","minor","patch","documentMode","toFixed","appMinorVersion","external","architecture","family","cpuClass","nativeMatch","matcher","matchStr","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","actualStart","$assign","assign","objectAssign","B","alphabet","chr","FAILS_ON_UNDEFINED","FAILS_ON_NULL","fromCharCode","itemsLength","declarativeTypeValidator","twilsock","operationRetrier","replayEventEmitter","_interopDefaultLegacy","_typeof2","_interopNamespace","freeze","_asyncToGenerator__default","_classCallCheck__default","_inherits__default","_possibleConstructorReturn__default","_regeneratorRuntime__default","_typeof__default","_wrapNativeSuper__default","loglevelLog__namespace","_slicedToArray__default","uuid__namespace","_toConsumableArray__default","platform__namespace","_createSuper$7","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct$7","Super","SyncError","_Error","SyncNetworkError","_SyncError","body","validatePageSize","pageSize","isPositiveInteger","log$1","SUBSCRIPTIONS_PATH","MAPS_PATH","LISTS_PATH","DOCUMENTS_PATH","STREAMS_PATH","INSIGHTS_PATH","getWithDefault","container","defaultValue","region","defaultCdsUrl","baseUri","cdsUri","settings","subscriptionsUri","documentsUri","listsUri","mapsUri","streamsUri","insightsUri","sessionStorageEnabled","Sync","backoffConfig","_createForOfIteratorHelper$5","allowArrayLike","_arrayLikeToArray$5","_unsupportedIterableToArray$5","normalCompletion","didErr","_e2","SubscribedEntity","localObject","pendingCorrelationId","pendingAction","established","retryCount","sid","lastEventId","indexName","queryString","isStrictlyOrdered","action","correlationId","updatePending","setSubscriptionState","rejectedWithError","reportFailure","eventId","_advanceLastEventId","newState","_setSubscriptionState","Subscriptions","subscriptions","persisted","latestPokeResponseArrivalTimestampByCorrelationId","backoff","Backoff","exponential","randomisationFactor","_this$getSubscription","getSubscriptionUpdateBatch","subscriptionRequests","applyNewSubscriptionUpdateBatch","_applyNewSubscriptionUpdateBatch","subtract","these","those","thisKey","thisValue","listToAdd","maxBatchSize","listToRemove","requests","_iterator2","_step2","newMaxBatchSize","subscriptionTtlInS","estimatedDeliveryInMs","_iterator3","_step3","attemptedSubscription","isConnected","processLocalActions","recordActionAttemptOn","pendingPokeReason","max_batch_size","subscriptionTtlTimer","ttl_in_s","onSubscriptionTtlElapsed","estimated_delivery_in_ms","verifyPokeDelivery","recordActionFailureOn","TransportUnavailableError","_x","_x2","lastReceived","silencePeriod","persistedSubscription","objects","object_sid","object_type","last_event_id","index_name","query_string","retriedRequests","requestBody","event_protocol_version","correlation_id","retried_requests","network","existingSubscription","eventType","event_type","_step4","_iterator4","matchedEventType","applySubscriptionEstablishedMessage","applySubscriptionCancelledMessage","applySubscriptionFailedMessage","typedSid","map_sid","list_sid","document_sid","stream_sid","query_id","strictly_ordered","applyEventToSubscribedEntity","subscriptionIntent","replay_status","subscription","markAsFailed","isEstablished","poke","failedSubscriptions","_step5","_iterator5","_it","_failedSubscriptions","messageFromErrorBody","transportError","codeFromErrorBody","trasportError","mapTransportError","NetworkService","clientInfo","v4","uri","createHeaders","revision","put","_this5","SessionStorage","storage","storageId","sessionStorage","isReady","_store","_read","uniqueName","_apply","setItem","storedData","getItem","_createForOfIteratorHelper$4","_arrayLikeToArray$4","_unsupportedIterableToArray$4","SyncEntity","removalHandler","subscriptionState","_attachedListeners","onRemoved","broadcastEventToListeners","router","_subscribe","closeable","listenerUuid","eventName","MergingQueue","inputMergingFunction","requestFunction","queuedRequests","wakeupQueue","queueToSquash","reducedInput","isRequestInFlight","requestToExecute","__","NamespacedMergingQueue","inputReducer","_invokeQueueMethod","_squashAndAdd","_add","namespaceKey","invokeQueueMethod","_x3","squashAndAdd","_x4","_x5","_x6","queueMethodInvoker","queueByNamespaceKey","isEmpty","_x7","_x8","_createSuper$6","_isNativeReflectConstruct$6","Closeable","_ReplayEventEmitter","closed","_createSuper$5","_isNativeReflectConstruct$5","SyncDocumentImpl","_SyncEntity","_removeDocument","_softSync2","_postUpdateToServer2","_setWithIfMatch2","_setUnconditionally2","_setTtl","_update2","_mutate","_set","updateMergingQueue","acc","ttl","date_updated","date_expires","unique_name","date_created","previousData","document_revision","document_data","isLocal","metadataUpdates","_setUnconditionally","mutator","_setWithIfMatch","mutate","remote","_postUpdateToServer","setTtl","_handleSuccessfulUpdateResult","_x9","mutatorFunction","_softSync","_x10","_x11","ifMatch","isDeleted","_x12","_callee8","_context8","locally","_callee9","_context9","SyncDocument","_Closeable","_removeDocument2","_setTtl2","_update3","_mutate2","_set2","syncDocumentImpl","attach","dateExpires","dateUpdated","_callee10","_context10","ensureNotClosed","_x13","_x14","_callee11","_context11","_x15","_x16","_callee12","_context12","_x17","_x18","_callee13","_context13","_x19","_callee14","_context14","removeDocument","detach","pureObject","nonNegativeInteger","SyncListItem","Paginator","prevItemId","nextItemId","prevPageItemId","nextPageItemId","_prevPage","_nextPage","hasNextPage","hasPrevPage","_createForOfIteratorHelper$3","_arrayLikeToArray$3","_unsupportedIterableToArray$3","Node","balanceFactor","TreeMap","_Symbol$iterator","less","equal","isLessThan","getNode","insert","currNode","prevBalanceFactor","isLeftChild","rebalance","currentNode","child","maxLeft","isRoot","mlParent","mlLeft","_parent","rotateRight","rotateLeft","pivot","fromleft","_args2","getReverseIterator","fromright","_args3","_createForOfIteratorHelper$2","_arrayLikeToArray$2","_unsupportedIterableToArray$2","Entry","isLeft","isRight","_data","isLeftBound","isRightBound","Tombstone","ItemsCache","beginKey","endKey","_cacheEntry$isValid","isValid","_cacheEntry$value","order","inclusive","getFirstItem","getValue","getAdjacentItem","exists","oldBegin","oldEnd","isBegin","isEnd","newEntries","x1","x2","cacheKey","firstKey","lastKey","_step2$value","_step3$value","_step4$value","_createForOfIteratorHelper$1","_arrayLikeToArray$1","_unsupportedIterableToArray$1","ownKeys$2","enumerableOnly","_objectSpread$2","_createSuper$4","_isNativeReflectConstruct$4","SyncListImpl","_removeList","_setItemTtl","_getContext","_getItems","_queryItemsFromServer2","_querySingleItemFromServer2","_getItemFromServer2","_remove","_updateItemWithIfMatch2","_updateItemUnconditionally2","_push","_addOrUpdateItemOnServer2","_addOrUpdateItemOnServer","itemMetadata","_handleItemMutated","itemMetadataUpdates","_updateItemUnconditionally","existingItem","itemDescriptor","_getItemFromServer","_updateItemWithIfMatch","_x20","_x21","previousItemData","_handleItemRemoved","remove","_x22","cachedItem","_x23","_queryItemsFromServer","_x24","_queryItems","_args$prevPageItemId","_args$nextPageItemId2","_ref4","_args$prevPageItemId2","_ref5","_args$nextPageItemId3","cached","fillingSubsequentPage","oldArgs","_args$nextPageItemId","goingBackwards","cacheIterator","cachedItems","itemsCountToGet","_item","getLimit","fetchedItems","makePaginator","_querySingleItemFromServer","_prevPageAllowed","_nextPageAllowed","collectionEnd","collectionBegin","populate","t1","queryItems","_x25","prevPage","nextPage","adds","_x26","_response$body$items","_response$body","queryParam","pageToken","newItem","previous_token","next_token","_x27","getItems","_x28","_callee15","_context15","_updateContextIfRequired","_callee16","_context16","_x29","_callee17","_context17","updateDateExpires","_x30","_x31","_callee18","_context18","isKnown","itemIndex","item_index","item_url","item_revision","item_data","_handleContextUpdate","context_data","list_revision","added","shouldIgnoreEvent","_updateRootDateUpdated","emitItemMutationEvent","oldData","contextEventId","SyncList","_removeList2","_setItemTtl2","_getItems2","_getContext2","_get3","_remove2","_push2","syncListImpl","_this6","_callee19","_context19","_x32","_x33","_callee20","_context20","_x34","_x35","_x36","_callee21","_context21","_x37","_x38","_x39","_callee22","_context22","_x40","_x41","_x42","_callee23","_context23","_x43","_callee24","_context24","_x44","_callee25","_context25","getContext","_callee26","queryOptions","_context26","_x45","_callee27","_context27","_x46","_callee28","_context28","setItemTtl","_x47","_x48","_callee29","_context29","removeList","SyncMapItem","ownKeys$1","_objectSpread$1","_createSuper$3","_isNativeReflectConstruct$3","SyncMapImpl","_removeMap","_putItemToServer2","_putItemWithIfMatch2","_putItemUnconditionally2","_putItemUnconditionally","_putItemWithIfMatch","_putItemToServer","currentItem","mapItemDescriptor","pathSegment","item_key","map_revision","SyncMap","_removeMap2","syncMapImpl","removeMap","_createSuper$2","_isNativeReflectConstruct$2","SyncStreamImpl","_removeStream","_publishMessage","responseBody","messages","_handleMessagePublished","publishMessage","message_sid","message_data","SyncStream","_removeStream2","_publishMessage2","syncStreamImpl","removeStream","ClientInfo","sdk","sdkVer","osVer","pl","plVer","EntitiesCache","entities","stored","resolvedSid","getResolved","_createSuper$1","_isNativeReflectConstruct$1","InsightsItem","LiveQueryImpl","queryExpression","queryUri","dataByKey","handleItemMutated","handleItemRemoved","handleBatchUpdate","newItems","params","liveQueryRequestBody","LiveQuery","liveQueryImpl","InstantQuery","_search","_super3","updateIndexName","search","liveQueryCreator","generateQueryUri","validateTypes","nonEmptyString","_createSuper","_isNativeReflectConstruct","SYNC_PRODUCT_ID","SDK_VERSION","decompose","SYNC_DOCUMENT_NOTIFICATION_TYPE","SYNC_LIST_NOTIFICATION_TYPE","SYNC_MAP_NOTIFICATION_TYPE","SYNC_NOTIFICATION_TYPE","Client","_instantQuery","_liveQuery","_updateToken","_shutdown","_stream","_list","_map","_document","_createStream2","_getStream2","_getMap2","_getList2","_getDocument2","_ensureReady","fpaToken","_options$twilsockClie","logLevel","clientMetadata","sdkv","startTwilsock","twilsockClient","initRegistrations","initRegistration","InitRegistration","populateInitRegistrations","twilsock$1","Twilsock","onConnectionStateChanged","messageType","payload","_routeMessage","connect","acceptMessage","storageSettings","updateStorageId","valueToStore","read","optimistic","readRootFromSessionCache","_getDocument","purpose","_getList","_args5","_getMap","_getStream","opts","docDescriptor","docFromInMemoryCache","ensureReady","_createDocument","getCached","storeRootInSessionCache","removeFromCacheAndSession","mapDescriptor","mapFromInMemoryCache","_createMap","listDescriptor","listFromInMemoryCache","_createList","streamDescriptor","streamFromInMemoryCache","streamRemovalHandler","_createStream","stream","shutdown","disconnect","token","updateToken","_error$reply","reply","liveQueryRemovalHandler","_getLiveQuery","liveQueryDescriptor","_this7","liveQuery","instantQuery","reg","browser$2","SyncClient","SyncDocument_1","SyncMap_1","notARegexp","correctIsRegexpLogic","error1","error2","notARegExp","correctIsRegExpLogic","$startsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","searchString","nativeUrl","searchParams","pathname","href","URLSearchParams","username","hash","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","encode","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","USE_NATIVE_URL","nativeFetch","NativeRequest","RequestPrototype","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","plus","sequences","percentSequence","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","query","attribute","updateSearchParams","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","redefineAll$1","append","getAll","found","entriesIndex","sliceIndex","redefine$1","$$5","wrapRequestOptions","fetch","RequestConstructor","Request","EOF","web_urlSearchParams","getState","toASCII","encoded","labels","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","serializeHost","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","fragment","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","Participant","_getUser","conversation","_data$roleSid","_data$bindings","dateCreated","typingTimeout","isTyping","roleSid","lastReadMessageIndex","lastConsumedMessageIndex","lastReadTimestamp","lastConsumptionTimestamp","bindings","_this$state$bindings","typingStarted","Conversation","_endTyping","typingEnded","updatedDateUpdated","updatedDateCreated","updated","participant","getUser","removeParticipant","Participants","_getParticipantByIdentity","_getParticipantBySid","_getParticipants","_upsertParticipantFromResponse","participants","rosterEntityPromise","participantsMapPromise","rosterMap","itemAdded","upsertParticipant","participantJoined","itemRemoved","participantSid","leftParticipant","participantLeft","itemUpdated","participantsPromises","rosterMapHandler","paginator","connectionState","_messagingBinding$typ","responseAttributes","responseIdentity","messagingBinding","role_sid","messaging_binding","participantUpdated","foundParticipant","proxyAddress","_bindingOptions$email","_bindingOptions$email2","bindingOptions","_args8","proxy_address","email","$has","uncaughtFrozenStore","frozen","UncaughtFrozenStore","findUncaughtFrozen","collectionWeak","Media","_data$filename","McsMedia","mcsMedia","category","CancellablePromise","onCancel","_this$mcsMedia","fetchMediaRequest","contentUrlRequest","_fetchMcsMedia","getContentUrl","t2","t3","mcsClient","_state","AggregatedDeliveryReceipt","total","delivered","undelivered","isTotalSame","isSentSame","isDeliveredSame","isReadSame","isUndeliveredSame","isFailedSame","RestPaginator","prevToken","nextToken","DetailedDeliveryReceipt","messageSid","conversationSid","conversation_sid","channelMessageSid","channel_message_sid","participant_sid","errorCode","error_code","originalMethod","oldName","newName","link","deprecationWarning","originalGet","collectActions","actions","_action$id","_action$index","_action$phone","_action$url","rawData","title","phone","parseVariant","variant","longitude","latitude","replies","button","_variant6$media","_variant6$actions","subtitle","ContentTemplateVariable","ContentTemplate","contentTemplateResponse","variables","variants","variantsMap","_Object$entries","_Object$entries$_i","collectVariants","XHR","Message","_getMessageRecipients","_getChannelMetadata","_getDetailedDeliveryReceiptsPaginator2","_attachTemporaryUrlsFor","_updateBody","_getDetailedDeliveryReceipts","_getParticipant","_data$text","_data$lastUpdatedBy","_data$type","_data$memberSid","_data$channelMetadata","_data$medias","_data$media","_classPrivateMethodInitSpec","_assignMedias","_wrapMedia","author","subject","contentSid","text","lastUpdatedBy","medias","memberSid","aggregatedDeliveryReceipt","delivery","hasChannelMetadata","channelMetadata","getMediaByCategories","categories","_this$state$medias","_this$getMediaByCateg","_this$getMediaByCateg2","_this$getMediaByCateg3","_this$getMediaByCateg4","_data$medias2","_this$state$medias2","_classPrivateMethodGe2","_this$state$media","updatedAttributes","_data$medias3","_data$media2","updatedAggregatedDelivery","currentAggregatedDelivery","_isEquals","_classPrivateMethodGe","_classPrivateMethodGet","_wrapMedia2","errorMessage","getParticipantBySid","getParticipantByIdentity","detailedDeliveryReceipts","_getDetailedDeliveryReceiptsPaginator","contentSet","sids","mediaSetGet","getTemporaryContentUrlsForMediaSids","mediaSids","mediaGetRequest","urls","mediaSetGetContentUrls","_media$map","attachedMedia","messagesReceiptsUrl","delivery_receipts","bodies","twilioPrefix","filteredMedias","contentMedia","urlPromise","jsonStringPromise","jsonString","dataType","getContentTemporaryUrl","_url","isCancelled","xhr","responseType","onreadystatechange","readyState","responseText","onerror","statusText","abort","send","channelMetadataClient","getChannelMetadata","messageRecipientsClient","getRecipientsFromMessage","_this8","deprecated","nonEmptyArray","Messages","_getMessages3","_sendMedia","_send","messagesByIndex","messagesListPromise","_links","mediaContent","emailOptions","_message$emailOptions","_mediaContent$content","_mediaContent$media","messagesPostRequest","FormData","postFormData","media_sids","content_sid","content_variables","contentVariables","accum","t4","t5","t6","_args4","_mediaContent$content2","_mediaContent$media2","anchor","direction","_args6","_getMessages","page","op","shouldReverse","_wrapPaginator","previousPage","cachedMessage","_args7","_upsertMessage","UnsentMessage","messagesEntity","sendV2","MessageBuilder","emailBodies","emailHistories","history","mediaOptions","fieldMappings","lastMessage","createdBy","notificationLevel","_setLastReadMessageIndex2","_unsubscribe2","_subscribeStreams2","_fetchStreams2","_subscribe2","_updateUniqueName","_updateLastReadMessageIndex","_setUserNotificationLevel","_setAllMessagesUnread","_setAllMessagesRead","_sendMessage","_removeParticipant","_leave","_join","_getUnreadMessagesCount","_getMessagesCount","_getParticipantsCount","_getAttributes","_delete2","_advanceLastReadMessageIndex","_descriptor$attribute","_descriptor$bindings","_configuration","_services","_entityName","_internalState","participantsLinks","_participants","_participantsEntity","_messagesEntity","messageAdded","_onMessageAdded","messageUpdated","messageRemoved","_this$_internalState$","_this$_internalState$2","_this$_internalState$3","_dataSource","addNonChatParticipant","_this$lastReadMessage","_subscribeStreams","_setLastReadMessageIndex","getMessages","getParticipants","_response$body$partic","participants_count","_args10","_response$body$messag","messages_count","unreadMessageCount","unread_messages_count","messageAttributes","_parseToNumber2","_parseToNumber","_response","sendMedia","messagesPage","advanceLastReadMessageIndex","notification_level","typingIndicator","getRecipientsFromConversation","_entityPromise","_entity","_logger","_streamsPromise","_this3$_entity","_this3$_entity2","messagesPromise","participantsPromise","_messagesList","roster","_participantsMap","_this$_entity","_this$_entity2","_this$_messagesList","_this$_participantsMa","messagesObjectName","rosterObjectName","_fetchStreams","subscribe","unsubscribe","_update$lastMessage","_update$lastMessage2","_this$_internalState$4","_this$_internalState$5","_this$_internalState$6","preprocessUpdate","Set","_Object$keys","localKey","isDate","keysMatchAsDates","keysMatchAsNonDates","_callee30","_context30","last_read_message_index","Deferred","_promise","_resolve","_reject","Conversations","_fetchMyConversations2","_upsertConversation2","_updateConversation2","_peekConversation","_getConversationByUniqueName","_getConversation","_getConversations","_fetchConversations","_addConversation","_response$sid","_response$sync_object","_response$sync_object2","conversationDocument","existingConversation","access","_registerForEvents","upserts","_upsertConversation","myConversationsFetched","tombstones","_setStatus","_fetchMyConversations","myConversationsRead","conversationsMap","created_by","areSourcesDifferent","isChannelSourceSync","updateData","_statusSource","baseLink","newConversation","_updateConversation","receivedConversations","conversationDescriptor","channel_sid","_onConversationRemoved","FIND","SKIPS_HOLES","Users","_getSyncUniqueName","_getSubscribedUsers","myself","fifoStack","_ensureFetched","subscribedUsers","foundItemIndex","_this$subscribedUsers","_this$subscribedUsers2","newUser","getSyncUniqueName","handleSubscribeUser","handleUnsubscribeUser","_response$body$sync_o","user_info_map","TypingIndicator","getConversation","serviceTypingTimeout","sentUpdates","_handleRemoteTyping2","typingIndicatorTimeoutDefault","notificationClient","TYPING_INDICATOR","_handleRemoteTyping","typing_timeout","_startTyping","lastUpdate","PushNotification","sound","badge","trimSlashes","ChannelMetadataNotFoundError","CommandExecutor","_serviceUrl","_productId","_mutateResource","_makeRequest2","trimmedUrl","preProcessedUrl","finalHeaders","getUrl","_preProcessUrl","resolution","_e$body","_e$body2","_makeRequest","uuidv4","isMutationConflictResponse","fetchResource","resource_url","$freeze","ContentClient","_pageSize","_cacheTtlMs","_fetchContentTemplates2","_getContentTemplates","_yield$this$_fetchCon","_yield$this$_fetchCon2","templatesPage","templates","_yield$this$_fetchCon3","_yield$this$_fetchCon4","_cachedTemplates","_fetchContentTemplates","template","QuickLRU","maxSize","onEviction","oldCache","_size","deleted","_item2","oldCacheSize","_step6","_iterator6","quickLru","ChannelMetadata","ChannelMetadataClient","metadataResponse","EmailRecipientDescriptor","recipient","UnknownRecipientDescriptor","MessageRecipientsClient","recipientsResponse","recipients","message_recipients","_wrapResponse","paginatorOptions","_paginatorOptions$pag","_paginatorOptions$pag2","allRecipients","_this$_cache$get$item","_this$_cache$get","existingMessageRecipients","ClientServices","_class","_create","_initialize2","_handlePushNotification","_removePushRegistrations","_unsetPushRegistrationId","_setPushRegistrationId","_createConversation","_getSubscribedConversations","_peekConversationBySid","_getConversationBySid","_this$_options$logLev","_this$_options$twilso","_this$_options$transp","_this$_options$notifi","_this$_options$syncCl","sdkVersion","Client_1","parsePushNotification","_fpaToken","_options","disableDeepClone","enableSessionStorage","_myself","TwilsockClient","tokenAboutToExpire","tokenExpired","connectionError","connectionStateChanged","notificationsClient","NotificationClient","configurationOptions","baseUrl","apiUri","typingUri","contentClient","emitFailed","_rejectEnsureReady","stateChanged","initFailed","emitDisconnected","terminal","_initializeEnsureReady","throwErrorsAlways","once","startupEvent","off","addPartialTelemetryEvent","TelemetryEventDescription","TelemetryPoint","Start","_initialize","End","_conversationsEntity","peekConversationBySid","peekConversation","getConversationByUniqueName","_conversationsPromise","getConversations","conversationsEntity","addConversation","channelType","registrationId","_subscribeToPushNotifications","setPushRegistrationId","commitChanges","_unsubscribeFromPushNotifications","removeRegistrations","notificationPayload","getSubscribedUsers","getContentTemplates","getConversationBySid","ConversationsEntity","fetchConversations","_supportedPushChannels","initialize","McsClient","_resolveEnsureReady","initialized","NEW_MESSAGE","ADDED_TO_CONVERSATION","REMOVED_FROM_CONVERSATION","CONSUMPTION_UPDATE","client","aps","twi_message_type","_apsPayload$alert","_apsPayload$alert2","_parsePushNotificationChatData","apsPayload","alert","dataPayload","twi_title","twi_body","twi_sound","twi_action","_supportedPushDataFields","conversation_title","message_index","media_count","isPrivate","validateConstructorTypes"],"mappings":"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LKgtD,SAAQC,GACR36B,OAAAA,EAAO26B,GAAS,SAASxsD,EAAQssD,GACtC,OAAOtsD,GAAUyxB,OAAO,OACtB66B,EAAM96B,SAAWo5B,EAAQ0B,IACvB,MAAO,KAAK1yD,KAAKoxD,KAAQsB,EAAMrc,OAASqc,EAC7C,GACF,CApMUC,CAAQ,CACjB,YACA,QACA,gBACA,SACA,SACA,WACA,WACA,SACA,QACA,SACA,eACA,OACA,YACA,WACA,YACA,YACA,UACA,CAAEtc,MAAS,iBAA6Bze,QAAA,4BACxC,SACA,eACA,WACA,YACA,QACA,SACA,WACA,CAAEye,MAAS,mBAA+Bze,QAAA,kBAC1C,YACA,CAAEye,MAAS,OAAmBze,QAAA,+BAC9B,WACA,cACA,CAAEye,MAAS,cAA0Bze,QAAA,QACrC,UACA,WACA,UACA,WACA,cACA,CAAEye,MAAS,iBAA6Bze,QAAA,aACxC,CAAEye,MAAS,aAAyBze,QAAA,aACpC,aACA,CAAEye,MAAS,aAAyBze,QAAA,SACpC,QACA,CAAEye,MAAS,QAAoBze,QAAA,OAC/B,WACA,SACA,CAAEye,MAAS,SAAqBze,QAAA,sBAChC,CAAEye,MAAS,gBAA4Bze,QAAA,kBACvC,CAAEye,MAAS,UAAsBze,QAAA,yBACjC,CAAEye,MAAS,kBAA8Bze,QAAA,SACzC,CAAEye,MAAS,KAAiBze,QAAA,YAC5B,CAAEye,MAAS,KAAiBze,QAAA,QAC5B,WAIEi7B,EAAUC,EAAW,CACvB,CAAEzc,MAAS,aAAyBze,QAAA,QACpC,aACA,CAAEye,MAAS,WAAuBze,QAAA,YAClC,CAAEye,MAAS,YAAwBze,QAAA,YACnC,CAAEye,MAAS,YAAwBze,QAAA,YACnC,CAAEye,MAAS,YAAwBze,QAAA,YACnC,CAAEye,MAAS,YAAwBze,QAAA,WACnC,CAAEye,MAAS,YAAwBze,QAAA,WACnC,CAAEye,MAAS,iBAA6Bze,QAAA,WACxC,CAAEye,MAAS,YAAwBze,QAAA,WACnC,CAAEye,MAAS,iBAA6Bze,QAAA,WACxC,YACA,QACA,OACA,OACA,SACA,SACA,CAAEye,MAAS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"}
|